annotate data/model/QueryModel.h @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 60e84bb658bc
children
rev   line source
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