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,
00039 TreeItemPathString,
00040 TreeItemName,
00041 TreeItemFullName,
00042 TreeItemColumnName,
00043 TreeItemColumnId,
00044 TreeItemTimestampMax,
00045 TreeItemTimestampMin,
00046 TreeItemTimestampScope,
00047 TreeItemDescription,
00048 TreeItemSetupId
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