• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

tagcontainer.h

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; // fwd dec
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         //ColumnTagTreeItemInternalPointer = Qt::UserRole + 100,
00056         ColumnTagType = Qt::UserRole + 101, // = 133
00057         ColumnTagTimestampFormat, // = 134
00058         ColumnTagName, // = 135
00059         ColumnTagDataUnitId, // = 136
00060         ColumnTagTreeId, // = 137
00061         ColumnTagToolTip // = 138
00062     };
00063 
00064     enum ColumnType 
00065     {
00066         ColumnTypeNone = 0,
00067         ColumnTypeData = Qt::UserRole + 300, // = 332
00068         ColumnTypeTimestamp // = 333
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; //zou ook const moeten zijn
00116     static const QString tagTemplate;
00117     static const QString tagColumnTemplate;
00118     ProjectTreeModel treeModel;
00119 };
00120 
00121 //Q_DECLARE_METATYPE(TagContainer::ColumnTag);
00122 
00123 #endif // TAGCONTAINER_H

Generated on Tue Aug 24 2010 15:58:55 for Smartlet by  doxygen 1.7.1