X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fbuffertreemodel.h;h=56fcc9189169b2d3db418dee8e0ee41e0c49dfdf;hp=05b390b4ac96b0783f52dec7668b0febb01aff56;hb=788fd0058595c815dc42597e9956c02aea45261f;hpb=4d8086fa41a49c3b2ba31484ce3c59416f5de294 diff --git a/src/client/buffertreemodel.h b/src/client/buffertreemodel.h index 05b390b4..56fcc918 100644 --- a/src/client/buffertreemodel.h +++ b/src/client/buffertreemodel.h @@ -18,8 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _BUFFERTREEMODEL_H_ -#define _BUFFERTREEMODEL_H_ +#ifndef NETWORKMODEL_H +#define NETWORKMODEL_H #include @@ -36,51 +36,107 @@ class BufferInfo; #include "modelpropertymapper.h" class MappedSelectionModel; class QAbstractItemView; +class NetworkInfo; +class IrcChannel; +class IrcUser; /***************************************** * Fancy Buffer Items *****************************************/ -class BufferTreeItem : public TreeItem { +class BufferItem : public PropertyMapItem { Q_OBJECT + Q_PROPERTY(QString bufferName READ bufferName) + Q_PROPERTY(QString topic READ topic) + Q_PROPERTY(int nickCount READ nickCount) public: - BufferTreeItem(Buffer *, TreeItem *parent = 0); + BufferItem(Buffer *, AbstractTreeItem *parent = 0); virtual quint64 id() const; - QVariant data(int column, int role) const; + virtual QVariant data(int column, int role) const; + void attachIrcChannel(IrcChannel *ircChannel); + + QString bufferName() const; + QString topic() const; + int nickCount() const; + + Buffer *buffer() const { return buf; } void setActivity(const Buffer::ActivityLevel &); +public slots: + void setTopic(const QString &topic); + void join(IrcUser *ircUser); + void part(IrcUser *ircUser); + private: - QString text(int column) const; QColor foreground(int column) const; Buffer *buf; Buffer::ActivityLevel activity; + + QPointer _ircChannel; }; /***************************************** * Network Items *****************************************/ -class NetworkTreeItem : public TreeItem { +class NetworkItem : public PropertyMapItem { Q_OBJECT - + Q_PROPERTY(QString networkName READ networkName) + Q_PROPERTY(QString currentServer READ currentServer) + Q_PROPERTY(int nickCount READ nickCount) + public: - NetworkTreeItem(const uint &netid, const QString &, TreeItem *parent = 0); + NetworkItem(const uint &netid, const QString &, AbstractTreeItem *parent = 0); virtual QVariant data(int column, int row) const; virtual quint64 id() const; + QString networkName() const; + QString currentServer() const; + int nickCount() const; + +public slots: + void setNetworkName(const QString &networkName); + void setCurrentServer(const QString &serverName); + + void attachNetworkInfo(NetworkInfo *networkInfo); + void attachIrcChannel(const QString &channelName); + private: uint _networkId; - QString net; + QString _networkName; + + QPointer _networkInfo; }; /***************************************** - * BufferTreeModel +* Irc User Items +*****************************************/ +class IrcUserItem : public PropertyMapItem { + Q_OBJECT + Q_PROPERTY(QString nickName READ nickName) + +public: + IrcUserItem(IrcUser *ircUser, AbstractTreeItem *parent); + + QString nickName(); + +private slots: + void setNick(QString newNick); + void ircUserDestroyed(); + +private: + IrcUser *_ircUser; +}; + + +/***************************************** + * NetworkModel *****************************************/ -class BufferTreeModel : public TreeModel { +class NetworkModel : public TreeModel { Q_OBJECT public: @@ -88,10 +144,19 @@ public: BufferTypeRole = Qt::UserRole, BufferActiveRole, BufferUidRole, - NetworkIdRole + NetworkIdRole, + ItemTypeRole }; - BufferTreeModel(QObject *parent = 0); + enum itemTypes { + AbstractItemType, + SimpleItemType, + NetworkItemType, + BufferItemType, + NickItemType + }; + + NetworkModel(QObject *parent = 0); static QList defaultHeader(); inline SelectionModelSynchronizer *selectionModelSynchronizer() { return _selectionModelSynchronizer; } @@ -108,7 +173,8 @@ public: virtual QMimeData *mimeData(const QModelIndexList &) const; virtual bool dropMimeData(const QMimeData *, Qt::DropAction, int, int, const QModelIndex &); - + void attachNetworkInfo(NetworkInfo *networkInfo); + public slots: void bufferUpdated(Buffer *); void setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); @@ -122,12 +188,18 @@ signals: private: bool isBufferIndex(const QModelIndex &) const; Buffer *getBufferByIndex(const QModelIndex &) const; - QModelIndex getOrCreateNetworkItemIndex(Buffer *buffer); - QModelIndex getOrCreateBufferItemIndex(Buffer *buffer); + + QModelIndex networkIndex(uint networkId); + NetworkItem *network(uint networkId); + NetworkItem *newNetwork(uint networkId, const QString &networkName); + + QModelIndex bufferIndex(BufferInfo bufferInfo); + BufferItem *buffer(BufferInfo bufferInfo); + BufferItem *newBuffer(BufferInfo bufferInfo); QPointer _selectionModelSynchronizer; QPointer _propertyMapper; Buffer *currentBuffer; }; -#endif +#endif // NETWORKMODEL_H