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

treeitem.h

Go to the documentation of this file.
00001 #ifndef TREEITEM_H
00002 #define TREEITEM_H
00003 
00004 #include <QList>
00005 
00012 class TreePath : public QList<qint64>
00013 {
00014 public:
00015     TreePath();
00016     TreePath(const TreePath &treePath);
00017     bool operator<(const TreePath &other) const;
00018 };
00019 
00020 #include <QMetaType>
00021 Q_DECLARE_METATYPE(TreePath);
00022 
00023 #include <QHash>
00024 #include <QVariant>
00025 
00032 class TreeItem
00033 {
00034 public:
00035     enum TreeItemRole {
00036         TreeItemNULL = -1,
00037         TreeItemId = Qt::UserRole + 500,
00038         TreeItemPath, //TreePath
00039         TreeItemPathString, //QString
00040         TreeItemName,
00041         TreeItemFullName, //QString: "project, location, installation, sensor_category, sensor, sensor_channel"
00042         TreeItemColumnName,
00043         TreeItemColumnId,
00044         TreeItemTimestampMax, //QDateTime
00045         TreeItemTimestampMin, //QDateTime
00046         TreeItemTimestampScope, //QString
00047         TreeItemDescription, //QString
00048         TreeItemSetupId //int
00049     };
00050 
00051     TreeItem(const QList<QVariant> &data, const QString &primaryKeyColumnName,
00052              const qint64 primaryKeyValue, TreeItem *parent = 0);
00053     ~TreeItem();
00054 
00055     void appendChild(TreeItem *child);
00056     TreeItem *child(int row) const;
00057     TreeItem *find(int treeId) const;
00058     int childCount() const;
00059     int columnCount() const;
00060     QVariant data(const int &column) const;
00061     QVariant data(const TreeItem::TreeItemRole &role) const;
00062     bool setData(const TreeItem::TreeItemRole &role, const QVariant &data);
00063     bool insertChild(int row, TreeItem *item);
00064     TreeItem *parent() const;
00065     bool removeChild(int row);
00066     int row() const;
00067     QVector<QVariant> getDataRecursively(const TreeItem::TreeItemRole &role,
00068                                          const TreeItem::TreeItemRole &matchRole = TreeItem::TreeItemNULL,
00069                                          const QVariant &matchValue = QVariant()) const;
00070     QString getPreviewSql();
00071     QString getQueryConstraints(const QString &suffix = QString()) const;
00072     const QString *getColumnName() const;
00073     bool operator==(const TreeItem &t) const;
00074     bool isRoot() const;
00075 
00076 private:
00077     QString descriptionCalculated() const;
00078     QString getFullName(const QString &suffix = QString()) const;
00079     QString trimName(const QString name, const int maxSize);
00080     TreePath getTreePath() const;
00081     QString getTreePathString() const;
00082     void recursivePrependId(TreePath *path) const;
00083     void recursivePrependId(QList<QString> *path) const;
00084     QString getTimestampScope() const;
00085     QDateTime calculateTimestamp(const TreeItem::TreeItemRole &role) const;
00086 
00087 private:
00088     TreeItem *parentItem;
00089     QList<TreeItem*> childItems;
00090     QList<QVariant> itemColumnData;
00091     mutable QHash<TreeItem::TreeItemRole, QVariant> itemRoleData;
00092     const QString columnName;
00093     const qint64 columnPKValue;
00094 };
00095 
00096 Q_DECLARE_METATYPE(TreeItem*);
00097 
00098 #endif // TREEITEM_H

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