X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Ftreemodel.h;h=cc602de77e3b26380e3ca178c3885292bb52ee6e;hb=bd37d2c94e49e791d2ba44baab4270e030442832;hp=8a5e3ac9be272ac9f5c57743a2284beaae942636;hpb=fe9ec46e2b6394b7735a73da5c438b10ba7e5e82;p=quassel.git diff --git a/src/client/treemodel.h b/src/client/treemodel.h index 8a5e3ac9..cc602de7 100644 --- a/src/client/treemodel.h +++ b/src/client/treemodel.h @@ -35,8 +35,13 @@ class AbstractTreeItem : public QObject { Q_OBJECT public: + enum TreeItemFlag { + NoTreeItemFlag = 0x00, + DeleteOnLastChildRemoved = 0x01 + }; + Q_DECLARE_FLAGS(TreeItemFlags, TreeItemFlag); + AbstractTreeItem(AbstractTreeItem *parent = 0); - virtual ~AbstractTreeItem(); bool newChild(AbstractTreeItem *child); bool newChilds(const QList &items); @@ -59,6 +64,8 @@ public: virtual inline Qt::ItemFlags flags() const { return _flags; } virtual inline void setFlags(Qt::ItemFlags flags) { _flags = flags; } + inline AbstractTreeItem::TreeItemFlags treeItemFlags() const { return _treeItemFlags; } + inline void setTreeItemFlags(AbstractTreeItem::TreeItemFlags flags) { _treeItemFlags = flags; } int row() const; inline AbstractTreeItem *parent() const { return qobject_cast(QObject::parent()); } @@ -76,6 +83,9 @@ signals: private: QList _childItems; Qt::ItemFlags _flags; + TreeItemFlags _treeItemFlags; + + inline void checkForDeletion() { if(treeItemFlags() & DeleteOnLastChildRemoved && childCount() == 0) parent()->removeChild(this); } };