X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Ftreemodel.h;h=f7159fd420189239122d55959dc944f21e5e8987;hp=0d23405a01083b44921bbc1f54fcb27f9c67263e;hb=c5cbe5eb77fce2ab954a98399a1450803108217b;hpb=4bd0fcd5b0599f3658253353bf2bdc01b32951f7 diff --git a/src/client/treemodel.h b/src/client/treemodel.h index 0d23405a..f7159fd4 100644 --- a/src/client/treemodel.h +++ b/src/client/treemodel.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-08 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -32,7 +32,7 @@ *****************************************/ class AbstractTreeItem : public QObject { Q_OBJECT - Q_PROPERTY(uint id READ id) + Q_PROPERTY(quint64 id READ id) public: AbstractTreeItem(AbstractTreeItem *parent = 0); @@ -44,13 +44,18 @@ public: void removeChild(int column, int row); void removeChild(int row); + void removeChildById(int column, const quint64 &id); + void removeChildById(const quint64 &id); + + void removeAllChilds(); + virtual quint64 id() const; AbstractTreeItem *child(int column, int row) const; AbstractTreeItem *child(int row) const; - AbstractTreeItem *childById(int column, const uint &id) const; - AbstractTreeItem *childById(const uint &id) const; + AbstractTreeItem *childById(int column, const quint64 &id) const; + AbstractTreeItem *childById(const quint64 &id) const; int childCount(int column) const; int childCount() const; @@ -58,24 +63,28 @@ public: virtual int columnCount() const = 0; virtual QVariant data(int column, int role) const = 0; + virtual bool setData(int column, const QVariant &value, int role) = 0; virtual Qt::ItemFlags flags() const; virtual void setFlags(Qt::ItemFlags); int column() const; int row() const; - AbstractTreeItem *parent(); + AbstractTreeItem *parent() const; signals: - void dataChanged(int column); + void dataChanged(int column = -1); + void newChild(AbstractTreeItem *); + + void beginRemoveChilds(int firstRow, int lastRow); + void endRemoveChilds(); private slots: void childDestroyed(); private: QHash > _childItems; - QHash > _childHash; // uint to be compatible to qHash functions - AbstractTreeItem *_parentItem; + QHash > _childHash; // uint to be compatible to qHash functions FIXME test this Qt::ItemFlags _flags; int defaultColumn() const; @@ -91,7 +100,10 @@ class SimpleTreeItem : public AbstractTreeItem { public: SimpleTreeItem(const QList &data, AbstractTreeItem *parent = 0); virtual ~SimpleTreeItem(); + virtual QVariant data(int column, int role) const; + virtual bool setData(int column, const QVariant &value, int role); + virtual int columnCount() const; private: @@ -111,6 +123,8 @@ public: virtual ~PropertyMapItem(); virtual QVariant data(int column, int role) const; + virtual bool setData(int column, const QVariant &value, int role); + virtual int columnCount() const; void appendProperty(const QString &property); @@ -130,12 +144,14 @@ public: TreeModel(const QList &, QObject *parent = 0); virtual ~TreeModel(); - QVariant data(const QModelIndex &index, int role) const; + virtual QVariant data(const QModelIndex &index, int role) const; + virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + virtual Qt::ItemFlags flags(const QModelIndex &index) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; - QModelIndex indexById(uint id, const QModelIndex &parent = QModelIndex()) const; + QModelIndex indexById(quint64 id, const QModelIndex &parent = QModelIndex()) const; QModelIndex indexByItem(AbstractTreeItem *item) const; QModelIndex parent(const QModelIndex &index) const; @@ -146,8 +162,12 @@ public: virtual void clear(); private slots: - void itemDataChanged(int column); + void itemDataChanged(int column = -1); + void newChild(AbstractTreeItem *child); + void beginRemoveChilds(int firstRow, int lastRow); + void endRemoveChilds(); + protected: void appendChild(AbstractTreeItem *parent, AbstractTreeItem *child);