lbajardsilogic@5
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@5
|
2
|
lbajardsilogic@5
|
3 /* Sound Access
|
lbajardsilogic@5
|
4 EASAIER client application.
|
lbajardsilogic@5
|
5 Silogic 2007. Laure Bajard.
|
lbajardsilogic@5
|
6
|
lbajardsilogic@5
|
7 This program is free software; you can redistribute it and/or
|
lbajardsilogic@5
|
8 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@5
|
9 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@5
|
10 License, or (at your option) any later version. See the file
|
lbajardsilogic@5
|
11 COPYING included with this distribution for more information.
|
lbajardsilogic@5
|
12 */
|
lbajardsilogic@5
|
13
|
lbajardsilogic@5
|
14 #ifndef _QUERY_MODEL_H_
|
lbajardsilogic@5
|
15 #define _QUERY_MODEL_H_
|
lbajardsilogic@5
|
16
|
lbajardsilogic@5
|
17 #include <QStringList>
|
lbajardsilogic@5
|
18
|
lbajardsilogic@5
|
19 #include <map>
|
lbajardsilogic@5
|
20
|
lbajardsilogic@5
|
21 #include "base/PropertyContainer.h"
|
lbajardsilogic@5
|
22
|
lbajardsilogic@5
|
23 class QueryThemeModel;
|
lbajardsilogic@5
|
24
|
lbajardsilogic@5
|
25 class QueryModel {
|
lbajardsilogic@5
|
26
|
lbajardsilogic@5
|
27 public:
|
lbajardsilogic@5
|
28 QueryModel();
|
lbajardsilogic@5
|
29 virtual ~QueryModel();
|
lbajardsilogic@5
|
30
|
lbajardsilogic@5
|
31 void addTheme(const QString &name, const QString &label);
|
lbajardsilogic@5
|
32 void newGroup(const QString &name, const QString &label);
|
lbajardsilogic@5
|
33 void addProperty(const QString &name, const QString &label, const QString &type, const QString &range="", const QString &unit="", const QString &comment="");
|
lbajardsilogic@5
|
34
|
lbajardsilogic@227
|
35 void addRange(const QString &propertyName, const QString &range);
|
lbajardsilogic@227
|
36
|
lbajardsilogic@5
|
37 inline std::map<QString , QueryThemeModel* >& getThemes(){return m_themeModels;}
|
lbajardsilogic@5
|
38
|
lbajardsilogic@5
|
39 protected:
|
lbajardsilogic@5
|
40
|
lbajardsilogic@5
|
41 std::map<QString , QueryThemeModel* > m_themeModels;
|
lbajardsilogic@5
|
42
|
lbajardsilogic@5
|
43 QueryThemeModel *m_curThemeModel;
|
lbajardsilogic@5
|
44
|
lbajardsilogic@5
|
45 };
|
lbajardsilogic@5
|
46
|
lbajardsilogic@5
|
47 class QueryThemeModel : public PropertyContainer {
|
lbajardsilogic@5
|
48
|
lbajardsilogic@5
|
49 Q_OBJECT
|
lbajardsilogic@5
|
50 public:
|
lbajardsilogic@5
|
51 QueryThemeModel(const QString &name, const QString &label);
|
lbajardsilogic@5
|
52 virtual ~QueryThemeModel();
|
lbajardsilogic@5
|
53
|
lbajardsilogic@5
|
54 void newGroup(const QString &name, const QString &label);
|
lbajardsilogic@5
|
55
|
lbajardsilogic@5
|
56 void addProperty(const QString &name, const QString &label, const QString &type, const QString &range, const QString &unit, const QString &comment);
|
lbajardsilogic@5
|
57
|
lbajardsilogic@5
|
58 inline QString getName() const {return m_name;}
|
lbajardsilogic@5
|
59 inline QString getLabel() const {return m_label;}
|
lbajardsilogic@5
|
60
|
lbajardsilogic@5
|
61 virtual PropertyList getProperties() const;
|
lbajardsilogic@5
|
62 virtual QString getPropertyLabel(const PropertyName &name) const;
|
lbajardsilogic@5
|
63 virtual PropertyType getPropertyType(const PropertyName &name) const;
|
lbajardsilogic@5
|
64 virtual int getPropertyRangeAndValue(const PropertyName &name, int *min, int *max) const;
|
lbajardsilogic@5
|
65 virtual QString getPropertyValueLabel(const PropertyName &name, int value) const;
|
lbajardsilogic@5
|
66
|
lbajardsilogic@5
|
67 QString getPropertyValue(const PropertyName &name) const;
|
lbajardsilogic@5
|
68 QStringList getPropertyRange(const PropertyName &name) const;
|
lbajardsilogic@5
|
69
|
lbajardsilogic@5
|
70 virtual QString getPropertyContainerName() const {return objectName();}
|
lbajardsilogic@5
|
71 virtual QString getPropertyContainerIconName() const {return "";}
|
lbajardsilogic@5
|
72
|
lbajardsilogic@5
|
73 QString getPropertyGroup(const PropertyName &name) const;
|
lbajardsilogic@5
|
74 QString getPropertyGroupLabel(const PropertyName &name) const;
|
lbajardsilogic@5
|
75
|
lbajardsilogic@5
|
76 QString getPropertyUnit(const PropertyName &name) const;
|
lbajardsilogic@5
|
77 QString getPropertyComment(const PropertyName &name) const;
|
lbajardsilogic@5
|
78
|
lbajardsilogic@5
|
79 virtual void setProperty(const PropertyName &name, int value);
|
lbajardsilogic@5
|
80
|
lbajardsilogic@227
|
81 void addRange(const QString &propertyName, const QString &range);
|
lbajardsilogic@227
|
82
|
lbajardsilogic@5
|
83 public slots:
|
lbajardsilogic@5
|
84 void setProperty(const PropertyName &name, QString value);
|
lbajardsilogic@5
|
85 void setProperty(int value);
|
lbajardsilogic@5
|
86 void setProperty(QString value);
|
lbajardsilogic@5
|
87
|
lbajardsilogic@5
|
88 protected:
|
lbajardsilogic@5
|
89
|
lbajardsilogic@5
|
90 class PropertyModel
|
lbajardsilogic@5
|
91 {
|
lbajardsilogic@5
|
92 public:
|
lbajardsilogic@5
|
93 PropertyModel(const QString &name, const QString &label, const QString &type,
|
lbajardsilogic@5
|
94 const QString &range, const QString &unit, const QString &comment,
|
lbajardsilogic@5
|
95 const QString &groupName, const QString &groupLabel);
|
lbajardsilogic@5
|
96 virtual ~PropertyModel(){};
|
lbajardsilogic@5
|
97
|
lbajardsilogic@5
|
98 inline QString getLabel() const {return m_label;}
|
lbajardsilogic@5
|
99 inline PropertyType getType() const {return m_type;}
|
lbajardsilogic@5
|
100 inline QStringList getRange() const {return m_range;}
|
lbajardsilogic@5
|
101 inline QString getUnit() const {return m_unit;}
|
lbajardsilogic@5
|
102 inline QString getComment() const {return m_comment;}
|
lbajardsilogic@5
|
103 inline QString getValueLabel(int value) const {return m_range.at(value);}
|
lbajardsilogic@5
|
104 inline int getMinRange() const {return m_min;}
|
lbajardsilogic@5
|
105 inline int getMaxRange() const {return m_max;}
|
lbajardsilogic@5
|
106
|
lbajardsilogic@5
|
107 inline QString getGroupName() const {return m_groupName;}
|
lbajardsilogic@5
|
108 inline QString getGroupLabel() const {return m_groupLabel;}
|
lbajardsilogic@5
|
109
|
lbajardsilogic@5
|
110 inline QString getValue() const {return m_value;}
|
lbajardsilogic@5
|
111
|
lbajardsilogic@242
|
112 void setValue(int value){if (m_type == ValueProperty) {m_value = m_range.at(value);} else {m_value = QString::number(value);}}
|
lbajardsilogic@5
|
113 void setValue(QString value){m_value = value;}
|
lbajardsilogic@5
|
114
|
lbajardsilogic@227
|
115 void addRange(const QString &range);
|
lbajardsilogic@227
|
116
|
lbajardsilogic@5
|
117 protected:
|
lbajardsilogic@5
|
118 QString m_name;
|
lbajardsilogic@5
|
119 QString m_label;
|
lbajardsilogic@5
|
120 PropertyType m_type;
|
lbajardsilogic@5
|
121 QString m_unit;
|
lbajardsilogic@5
|
122 QString m_comment;
|
lbajardsilogic@5
|
123
|
lbajardsilogic@5
|
124 QStringList m_range;
|
lbajardsilogic@5
|
125 int m_min;
|
lbajardsilogic@5
|
126 int m_max;
|
lbajardsilogic@5
|
127
|
lbajardsilogic@5
|
128 QString m_groupName;
|
lbajardsilogic@5
|
129 QString m_groupLabel;
|
lbajardsilogic@5
|
130
|
lbajardsilogic@5
|
131 QString m_value;
|
lbajardsilogic@5
|
132 };
|
lbajardsilogic@5
|
133
|
lbajardsilogic@5
|
134 PropertyList m_propertiesName;
|
lbajardsilogic@5
|
135 std::map<QString, PropertyModel*> m_properties;
|
lbajardsilogic@5
|
136
|
lbajardsilogic@5
|
137 QString m_name;
|
lbajardsilogic@5
|
138 QString m_label;
|
lbajardsilogic@5
|
139
|
lbajardsilogic@5
|
140 QString m_curGroupName;
|
lbajardsilogic@5
|
141 QString m_curGroupLabel;
|
lbajardsilogic@5
|
142 };
|
lbajardsilogic@5
|
143
|
lbajardsilogic@5
|
144 #endif |