annotate data/model/QueryModel.h @ 48:a8dcc1ca82c4

include writing with ToXml function
author lbajardsilogic
date Wed, 16 May 2007 11:29:48 +0000
parents 5cee0ce212a7
children 59d84a8bb76c
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@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