projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Catch recursion in message logger.
[quassel.git]
/
src
/
client
/
treemodel.h
diff --git
a/src/client/treemodel.h
b/src/client/treemodel.h
index
8a5e3ac
..
e585c0b
100644
(file)
--- a/
src/client/treemodel.h
+++ b/
src/client/treemodel.h
@@
-1,5
+1,5
@@
/***************************************************************************
/***************************************************************************
- * Copyright (C) 2005-0
8
by the Quassel Project *
+ * Copyright (C) 2005-0
9
by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@
-35,8
+35,13
@@
class AbstractTreeItem : public QObject {
Q_OBJECT
public:
Q_OBJECT
public:
+ enum TreeItemFlag {
+ NoTreeItemFlag = 0x00,
+ DeleteOnLastChildRemoved = 0x01
+ };
+ Q_DECLARE_FLAGS(TreeItemFlags, TreeItemFlag)
+
AbstractTreeItem(AbstractTreeItem *parent = 0);
AbstractTreeItem(AbstractTreeItem *parent = 0);
- virtual ~AbstractTreeItem();
bool newChild(AbstractTreeItem *child);
bool newChilds(const QList<AbstractTreeItem *> &items);
bool newChild(AbstractTreeItem *child);
bool newChilds(const QList<AbstractTreeItem *> &items);
@@
-59,6
+64,8
@@
public:
virtual inline Qt::ItemFlags flags() const { return _flags; }
virtual inline void setFlags(Qt::ItemFlags flags) { _flags = flags; }
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<AbstractTreeItem *>(QObject::parent()); }
int row() const;
inline AbstractTreeItem *parent() const { return qobject_cast<AbstractTreeItem *>(QObject::parent()); }
@@
-72,10
+79,17
@@
signals:
void beginRemoveChilds(int firstRow, int lastRow);
void endRemoveChilds();
void beginRemoveChilds(int firstRow, int lastRow);
void endRemoveChilds();
-
+
+protected:
+ void customEvent(QEvent *event);
+
private:
QList<AbstractTreeItem *> _childItems;
Qt::ItemFlags _flags;
private:
QList<AbstractTreeItem *> _childItems;
Qt::ItemFlags _flags;
+ TreeItemFlags _treeItemFlags;
+
+ void removeChildLater(AbstractTreeItem *child);
+ inline void checkForDeletion() { if(treeItemFlags() & DeleteOnLastChildRemoved && childCount() == 0) parent()->removeChildLater(this); }
};
};