Go to the documentation of this file.00001 #ifndef TAGCONTAINER_H
00002 #define TAGCONTAINER_H
00003
00004 #include "pimpl.h"
00005 #include "treemodel.h"
00006
00007 #include <QObject>
00008 #include <QHash>
00009 #include <QMap>
00010
00011 class TagContainerPrivate;
00012
00024 class TagContainer : public QObject
00025 {
00026 Q_OBJECT
00027 PIMPL_DECLARE_PRIVATE(TagContainer)
00028 public:
00029 enum GeneralTag
00030 {
00031 GeneralTagColumnDelimiter = Qt::UserRole + 200,
00032 GeneralTagSkipLines,
00033 GeneralTagMergeOnSplits,
00034 GeneralTagRowFilter
00035 };
00036
00037 enum ColumnTag
00038 {
00055
00056 ColumnTagType = Qt::UserRole + 101,
00057 ColumnTagTimestampFormat,
00058 ColumnTagName,
00059 ColumnTagDataUnitId,
00060 ColumnTagTreeId,
00061 ColumnTagToolTip
00062 };
00063
00064 enum ColumnType
00065 {
00066 ColumnTypeNone = 0,
00067 ColumnTypeData = Qt::UserRole + 300,
00068 ColumnTypeTimestamp
00069 };
00070
00071 typedef QMap < ColumnTag, QMap < int, QVariant > > ColumnTagCache;
00072 typedef QHash <GeneralTag, QString> GeneralTagCache;
00073
00074 TagContainer(const QString &SPCode = QString());
00075 ~TagContainer();
00076
00077 void initialize(const QString &spCode);
00078 QString writeTo() const ;
00079
00080 inline QVariant getColumnTagValue(const int column, const ColumnTag &tag) const;
00081 inline QString getGeneralTagValue(const GeneralTag &tag) const;
00082
00083 bool isColumnAssignedAColumnTag(const int column, const ColumnTag &tag) const;
00084
00085 void deleteColumnTagValue(const int &column, const ColumnTag &tag);
00086 void deleteGeneralTagValue(const GeneralTag &tag);
00087
00088 bool isCacheValid() const;
00089
00090 QString storedFunctionDefinition(const QString &spName);
00091
00092 void reset();
00093 void resetColumn(int column);
00094
00095 QVector<int> getArgToColumnMap(const QString &spArgNames) const ;
00096 int maxColumnAssigned() const ;
00097 int maxColumnAssigned(const QString &spArgNames)const ;
00098
00099 signals:
00100 void signal_columnTagCache_Changed(int column, TagContainer::ColumnTag, QVariant data);
00101 void signal_generalTagCache_Changed(TagContainer::GeneralTag, QString data);
00102
00103 public slots:
00104 void setColumnTagValue(const int column, const TagContainer::ColumnTag &tag, const QVariant &data);
00105 void setGeneralTagValue(const TagContainer::GeneralTag &tag, const QString &data);
00106
00107 private:
00108 QString translate(const GeneralTag &tag) const{return translator.value(tag);}
00109 GeneralTag translateStr(const QString &tag){return translator.key(tag);}
00110
00111 private:
00112 QString spCode;
00113 GeneralTagCache generalTagCache;
00114 ColumnTagCache columnTagCache;
00115 static QHash <GeneralTag, QString> translator;
00116 static const QString tagTemplate;
00117 static const QString tagColumnTemplate;
00118 ProjectTreeModel treeModel;
00119 };
00120
00121
00122
00123 #endif // TAGCONTAINER_H