lbajardsilogic@0
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@0
|
2
|
lbajardsilogic@0
|
3 /*
|
lbajardsilogic@0
|
4 Sonic Visualiser
|
lbajardsilogic@0
|
5 An audio file viewer and annotation editor.
|
lbajardsilogic@0
|
6 Centre for Digital Music, Queen Mary, University of London.
|
lbajardsilogic@0
|
7 This file copyright 2006 Chris Cannam and QMUL.
|
lbajardsilogic@0
|
8
|
lbajardsilogic@0
|
9 This program is free software; you can redistribute it and/or
|
lbajardsilogic@0
|
10 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@0
|
11 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@0
|
12 License, or (at your option) any later version. See the file
|
lbajardsilogic@0
|
13 COPYING included with this distribution for more information.
|
lbajardsilogic@0
|
14 */
|
lbajardsilogic@0
|
15
|
lbajardsilogic@0
|
16 #include "Layer.h"
|
lbajardsilogic@0
|
17 #include "view/View.h"
|
lbajardsilogic@0
|
18 #include "data/model/Model.h"
|
lbajardsilogic@0
|
19
|
lbajardsilogic@0
|
20 #include <iostream>
|
lbajardsilogic@0
|
21
|
lbajardsilogic@0
|
22 #include <QMutexLocker>
|
lbajardsilogic@0
|
23
|
lbajardsilogic@0
|
24 #include "LayerFactory.h"
|
lbajardsilogic@0
|
25 #include "base/PlayParameterRepository.h"
|
lbajardsilogic@0
|
26
|
lbajardsilogic@46
|
27 Layer::Layer() :
|
lbajardsilogic@46
|
28 m_modelName(""),
|
lbajardsilogic@46
|
29 m_modelId(0)
|
lbajardsilogic@0
|
30 {
|
lbajardsilogic@0
|
31 }
|
lbajardsilogic@0
|
32
|
lbajardsilogic@0
|
33 Layer::~Layer()
|
lbajardsilogic@0
|
34 {
|
lbajardsilogic@0
|
35 // std::cerr << "Layer::~Layer(" << this << ")" << std::endl;
|
lbajardsilogic@0
|
36 }
|
lbajardsilogic@0
|
37
|
lbajardsilogic@0
|
38 QString
|
lbajardsilogic@0
|
39 Layer::getPropertyContainerIconName() const
|
lbajardsilogic@0
|
40 {
|
lbajardsilogic@0
|
41 return LayerFactory::getInstance()->getLayerIconName
|
lbajardsilogic@0
|
42 (LayerFactory::getInstance()->getLayerType(this));
|
lbajardsilogic@0
|
43 }
|
lbajardsilogic@0
|
44
|
lbajardsilogic@0
|
45 QString
|
lbajardsilogic@0
|
46 Layer::getLayerPresentationName() const
|
lbajardsilogic@0
|
47 {
|
lbajardsilogic@0
|
48 // QString layerName = objectName();
|
lbajardsilogic@0
|
49
|
lbajardsilogic@0
|
50 LayerFactory *factory = LayerFactory::getInstance();
|
lbajardsilogic@0
|
51 QString layerName = factory->getLayerPresentationName
|
lbajardsilogic@0
|
52 (factory->getLayerType(this));
|
lbajardsilogic@0
|
53
|
lbajardsilogic@0
|
54 QString modelName;
|
lbajardsilogic@0
|
55 if (getModel()) modelName = getModel()->objectName();
|
lbajardsilogic@0
|
56
|
lbajardsilogic@0
|
57 QString text;
|
lbajardsilogic@0
|
58 if (modelName != "") {
|
lbajardsilogic@0
|
59 text = QString("%1: %2").arg(modelName).arg(layerName);
|
lbajardsilogic@0
|
60 } else {
|
lbajardsilogic@0
|
61 text = layerName;
|
lbajardsilogic@0
|
62 }
|
lbajardsilogic@0
|
63
|
lbajardsilogic@0
|
64 return text;
|
lbajardsilogic@0
|
65 }
|
lbajardsilogic@0
|
66
|
lbajardsilogic@0
|
67 void
|
lbajardsilogic@0
|
68 Layer::setObjectName(const QString &name)
|
lbajardsilogic@0
|
69 {
|
lbajardsilogic@0
|
70 QObject::setObjectName(name);
|
lbajardsilogic@0
|
71 emit layerNameChanged();
|
lbajardsilogic@0
|
72 }
|
lbajardsilogic@0
|
73
|
lbajardsilogic@0
|
74 QString
|
lbajardsilogic@0
|
75 Layer::toXmlString(QString indent, QString extraAttributes) const
|
lbajardsilogic@0
|
76 {
|
lbajardsilogic@0
|
77 QString s;
|
lbajardsilogic@0
|
78
|
lbajardsilogic@0
|
79 s += indent;
|
lbajardsilogic@0
|
80
|
lbajardsilogic@0
|
81 s += QString("<layer id=\"%2\" type=\"%1\" name=\"%3\" model=\"%4\" %5/>\n")
|
lbajardsilogic@0
|
82 .arg(encodeEntities(LayerFactory::getInstance()->getLayerTypeName
|
lbajardsilogic@0
|
83 (LayerFactory::getInstance()->getLayerType(this))))
|
lbajardsilogic@0
|
84 .arg(getObjectExportId(this))
|
lbajardsilogic@0
|
85 .arg(encodeEntities(objectName()))
|
lbajardsilogic@0
|
86 .arg(getObjectExportId(getModel()))
|
lbajardsilogic@0
|
87 .arg(extraAttributes);
|
lbajardsilogic@0
|
88
|
lbajardsilogic@0
|
89 return s;
|
lbajardsilogic@0
|
90 }
|
lbajardsilogic@0
|
91
|
lbajardsilogic@18
|
92 QString
|
lbajardsilogic@18
|
93 Layer::toEasaierXmlString(QString indent, QString extraAttributes) const
|
lbajardsilogic@18
|
94 {
|
lbajardsilogic@18
|
95 QString s;
|
lbajardsilogic@18
|
96
|
lbajardsilogic@18
|
97 s += indent;
|
lbajardsilogic@18
|
98
|
lbajardsilogic@18
|
99 s += QString("<layer id=\"%2\" type=\"%1\" name=\"%3\" model=\"%4\" modelId=\"%5\" %6/>\n")
|
lbajardsilogic@18
|
100 .arg(encodeEntities(LayerFactory::getInstance()->getLayerTypeName
|
lbajardsilogic@18
|
101 (LayerFactory::getInstance()->getLayerType(this))))
|
lbajardsilogic@18
|
102 .arg(getObjectExportId(this))
|
lbajardsilogic@18
|
103 .arg(encodeEntities(objectName()))
|
lbajardsilogic@18
|
104 .arg(getModelName())
|
lbajardsilogic@18
|
105 .arg(getModelId())
|
lbajardsilogic@18
|
106 .arg(extraAttributes);
|
lbajardsilogic@18
|
107
|
lbajardsilogic@18
|
108 return s;
|
lbajardsilogic@18
|
109 }
|
lbajardsilogic@18
|
110
|
lbajardsilogic@0
|
111 PlayParameters *
|
lbajardsilogic@0
|
112 Layer::getPlayParameters()
|
lbajardsilogic@0
|
113 {
|
lbajardsilogic@0
|
114 // std::cerr << "Layer (" << this << ", " << objectName().toStdString() << ")::getPlayParameters: model is "<< getModel() << std::endl;
|
lbajardsilogic@0
|
115 const Model *model = getModel();
|
lbajardsilogic@0
|
116 if (model) {
|
lbajardsilogic@0
|
117 return PlayParameterRepository::getInstance()->getPlayParameters(model);
|
lbajardsilogic@0
|
118 }
|
lbajardsilogic@0
|
119 return 0;
|
lbajardsilogic@0
|
120 }
|
lbajardsilogic@0
|
121
|
lbajardsilogic@0
|
122 void
|
lbajardsilogic@0
|
123 Layer::setLayerDormant(const View *v, bool dormant)
|
lbajardsilogic@0
|
124 {
|
lbajardsilogic@0
|
125 const void *vv = (const void *)v;
|
lbajardsilogic@0
|
126 QMutexLocker locker(&m_dormancyMutex);
|
lbajardsilogic@0
|
127 m_dormancy[vv] = dormant;
|
lbajardsilogic@0
|
128 }
|
lbajardsilogic@0
|
129
|
lbajardsilogic@0
|
130 bool
|
lbajardsilogic@0
|
131 Layer::isLayerDormant(const View *v) const
|
lbajardsilogic@0
|
132 {
|
lbajardsilogic@0
|
133 const void *vv = (const void *)v;
|
lbajardsilogic@0
|
134 QMutexLocker locker(&m_dormancyMutex);
|
lbajardsilogic@0
|
135 if (m_dormancy.find(vv) == m_dormancy.end()) return false;
|
lbajardsilogic@0
|
136 return m_dormancy.find(vv)->second;
|
lbajardsilogic@0
|
137 }
|
lbajardsilogic@0
|
138
|
lbajardsilogic@0
|
139 void
|
lbajardsilogic@0
|
140 Layer::showLayer(View *view, bool show)
|
lbajardsilogic@0
|
141 {
|
lbajardsilogic@0
|
142 setLayerDormant(view, !show);
|
lbajardsilogic@0
|
143 emit layerParametersChanged();
|
lbajardsilogic@0
|
144 }
|
lbajardsilogic@0
|
145
|