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@5
|
35 inline std::map<QString , QueryThemeModel* >& getThemes(){return m_themeModels;}
|
lbajardsilogic@5
|
36
|
lbajardsilogic@5
|
37 protected:
|
lbajardsilogic@5
|
38
|
lbajardsilogic@5
|
39 std::map<QString , QueryThemeModel* > m_themeModels;
|
lbajardsilogic@5
|
40
|
lbajardsilogic@5
|
41 QueryThemeModel *m_curThemeModel;
|
lbajardsilogic@5
|
42
|
lbajardsilogic@5
|
43 };
|
lbajardsilogic@5
|
44
|
lbajardsilogic@5
|
45 class QueryThemeModel : public PropertyContainer {
|
lbajardsilogic@5
|
46
|
lbajardsilogic@5
|
47 Q_OBJECT
|
lbajardsilogic@5
|
48 public:
|
lbajardsilogic@5
|
49 QueryThemeModel(const QString &name, const QString &label);
|
lbajardsilogic@5
|
50 virtual ~QueryThemeModel();
|
lbajardsilogic@5
|
51
|
lbajardsilogic@5
|
52 void newGroup(const QString &name, const QString &label);
|
lbajardsilogic@5
|
53
|
lbajardsilogic@5
|
54 void addProperty(const QString &name, const QString &label, const QString &type, const QString &range, const QString &unit, const QString &comment);
|
lbajardsilogic@5
|
55
|
lbajardsilogic@5
|
56 inline QString getName() const {return m_name;}
|
lbajardsilogic@5
|
57 inline QString getLabel() const {return m_label;}
|
lbajardsilogic@5
|
58
|
lbajardsilogic@5
|
59 virtual PropertyList getProperties() const;
|
lbajardsilogic@5
|
60 virtual QString getPropertyLabel(const PropertyName &name) const;
|
lbajardsilogic@5
|
61 virtual PropertyType getPropertyType(const PropertyName &name) const;
|
lbajardsilogic@5
|
62 virtual int getPropertyRangeAndValue(const PropertyName &name, int *min, int *max) const;
|
lbajardsilogic@5
|
63 virtual QString getPropertyValueLabel(const PropertyName &name, int value) const;
|
lbajardsilogic@5
|
64
|
lbajardsilogic@5
|
65 QString getPropertyValue(const PropertyName &name) const;
|
lbajardsilogic@5
|
66 QStringList getPropertyRange(const PropertyName &name) const;
|
lbajardsilogic@5
|
67
|
lbajardsilogic@5
|
68 virtual QString getPropertyContainerName() const {return objectName();}
|
lbajardsilogic@5
|
69 virtual QString getPropertyContainerIconName() const {return "";}
|
lbajardsilogic@5
|
70
|
lbajardsilogic@5
|
71 QString getPropertyGroup(const PropertyName &name) const;
|
lbajardsilogic@5
|
72 QString getPropertyGroupLabel(const PropertyName &name) const;
|
lbajardsilogic@5
|
73
|
lbajardsilogic@5
|
74 QString getPropertyUnit(const PropertyName &name) const;
|
lbajardsilogic@5
|
75 QString getPropertyComment(const PropertyName &name) const;
|
lbajardsilogic@5
|
76
|
lbajardsilogic@5
|
77 virtual void setProperty(const PropertyName &name, int value);
|
lbajardsilogic@5
|
78
|
lbajardsilogic@5
|
79 public slots:
|
lbajardsilogic@5
|
80 void setProperty(const PropertyName &name, QString value);
|
lbajardsilogic@5
|
81 void setProperty(int value);
|
lbajardsilogic@5
|
82 void setProperty(QString value);
|
lbajardsilogic@5
|
83
|
lbajardsilogic@5
|
84 protected:
|
lbajardsilogic@5
|
85
|
lbajardsilogic@5
|
86 class PropertyModel
|
lbajardsilogic@5
|
87 {
|
lbajardsilogic@5
|
88 public:
|
lbajardsilogic@5
|
89 PropertyModel(const QString &name, const QString &label, const QString &type,
|
lbajardsilogic@5
|
90 const QString &range, const QString &unit, const QString &comment,
|
lbajardsilogic@5
|
91 const QString &groupName, const QString &groupLabel);
|
lbajardsilogic@5
|
92 virtual ~PropertyModel(){};
|
lbajardsilogic@5
|
93
|
lbajardsilogic@5
|
94 inline QString getLabel() const {return m_label;}
|
lbajardsilogic@5
|
95 inline PropertyType getType() const {return m_type;}
|
lbajardsilogic@5
|
96 inline QStringList getRange() const {return m_range;}
|
lbajardsilogic@5
|
97 inline QString getUnit() const {return m_unit;}
|
lbajardsilogic@5
|
98 inline QString getComment() const {return m_comment;}
|
lbajardsilogic@5
|
99 inline QString getValueLabel(int value) const {return m_range.at(value);}
|
lbajardsilogic@5
|
100 inline int getMinRange() const {return m_min;}
|
lbajardsilogic@5
|
101 inline int getMaxRange() const {return m_max;}
|
lbajardsilogic@5
|
102
|
lbajardsilogic@5
|
103 inline QString getGroupName() const {return m_groupName;}
|
lbajardsilogic@5
|
104 inline QString getGroupLabel() const {return m_groupLabel;}
|
lbajardsilogic@5
|
105
|
lbajardsilogic@5
|
106 inline QString getValue() const {return m_value;}
|
lbajardsilogic@5
|
107
|
lbajardsilogic@5
|
108 void setValue(int value){m_value = QString::number(value);}
|
lbajardsilogic@5
|
109 void setValue(QString value){m_value = value;}
|
lbajardsilogic@5
|
110
|
lbajardsilogic@5
|
111 protected:
|
lbajardsilogic@5
|
112 QString m_name;
|
lbajardsilogic@5
|
113 QString m_label;
|
lbajardsilogic@5
|
114 PropertyType m_type;
|
lbajardsilogic@5
|
115 QString m_unit;
|
lbajardsilogic@5
|
116 QString m_comment;
|
lbajardsilogic@5
|
117
|
lbajardsilogic@5
|
118 QStringList m_range;
|
lbajardsilogic@5
|
119 int m_min;
|
lbajardsilogic@5
|
120 int m_max;
|
lbajardsilogic@5
|
121
|
lbajardsilogic@5
|
122 QString m_groupName;
|
lbajardsilogic@5
|
123 QString m_groupLabel;
|
lbajardsilogic@5
|
124
|
lbajardsilogic@5
|
125 QString m_value;
|
lbajardsilogic@5
|
126 };
|
lbajardsilogic@5
|
127
|
lbajardsilogic@5
|
128 PropertyList m_propertiesName;
|
lbajardsilogic@5
|
129 std::map<QString, PropertyModel*> m_properties;
|
lbajardsilogic@5
|
130
|
lbajardsilogic@5
|
131 QString m_name;
|
lbajardsilogic@5
|
132 QString m_label;
|
lbajardsilogic@5
|
133
|
lbajardsilogic@5
|
134 QString m_curGroupName;
|
lbajardsilogic@5
|
135 QString m_curGroupLabel;
|
lbajardsilogic@5
|
136 };
|
lbajardsilogic@5
|
137
|
lbajardsilogic@5
|
138 #endif |