X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Fnetworkmodel.h;h=8c36233f8ceb9b5aabd62a0b6340dc82946450c2;hb=5b560ec1a01349562ac58051ca7e7fa899d4b994;hp=a9a108d215604c008edb7ff306f647641dc9cb65;hpb=f37791b92e3bf6e78b93036c0669926eeba3347b;p=quassel.git diff --git a/src/client/networkmodel.h b/src/client/networkmodel.h index a9a108d2..8c36233f 100644 --- a/src/client/networkmodel.h +++ b/src/client/networkmodel.h @@ -32,6 +32,8 @@ class BufferInfo; #include "selectionmodelsynchronizer.h" #include "modelpropertymapper.h" +#include "clientsettings.h" + class MappedSelectionModel; class QAbstractItemView; class Network; @@ -53,21 +55,16 @@ public: const BufferInfo &bufferInfo() const; virtual quint64 id() const; virtual QVariant data(int column, int role) const; + virtual bool setData(int column, const QVariant &value, int role); void attachIrcChannel(IrcChannel *ircChannel); QString bufferName() const; QString topic() const; int nickCount() const; - - enum Type { - StatusType, - ChannelType, - QueryType - }; bool isStatusBuffer() const; - Type bufferType() const; + BufferInfo::Type bufferType() const; bool isActive() const; @@ -80,8 +77,12 @@ public: Q_DECLARE_FLAGS(ActivityLevel, Activity) ActivityLevel activity() const; - void setActivity(const ActivityLevel &level); - void addActivity(const ActivityLevel &level); + bool setActivity(const ActivityLevel &level); + void updateActivity(const ActivityLevel &level); + + void setLastMsgInsert(QDateTime msgDate); + bool setLastSeen(); + QDateTime lastSeen(); public slots: void setTopic(const QString &topic); @@ -94,11 +95,13 @@ public slots: private slots: void ircChannelDestroyed(); + void ircUserDestroyed(); private: BufferInfo _bufferInfo; ActivityLevel _activity; - Type _type; + QDateTime _lastMsgInsert; + QDateTime _lastSeen; QPointer _ircChannel; }; @@ -114,10 +117,10 @@ class NetworkItem : public PropertyMapItem { Q_PROPERTY(int nickCount READ nickCount) public: - NetworkItem(const uint &netid, const QString &, AbstractTreeItem *parent = 0); + NetworkItem(const NetworkId &netid, AbstractTreeItem *parent = 0); - virtual QVariant data(int column, int row) const; virtual quint64 id() const; + virtual QVariant data(int column, int row) const; bool isActive() const; @@ -131,10 +134,11 @@ public slots: void attachNetwork(Network *network); void attachIrcChannel(const QString &channelName); + + void setActive(bool connected); private: - uint _networkId; - QString _networkName; + NetworkId _networkId; QPointer _network; }; @@ -151,14 +155,13 @@ public: QString categoryId(); virtual quint64 id() const; - + virtual QVariant data(int column, int role) const; + void addUser(IrcUser *ircUser); + bool removeUser(IrcUser *ircUser); static int categoryFromModes(const QString &modes); -private slots: - void checkNoChilds(); - private: int _category; @@ -181,16 +184,20 @@ class IrcUserItem : public PropertyMapItem { public: IrcUserItem(IrcUser *ircUser, AbstractTreeItem *parent); - QString nickName(); + QString nickName() const; + bool isActive() const; + IrcUser *ircUser(); virtual quint64 id() const; - + virtual QVariant data(int column, int role) const; + virtual QString toolTip(int column) const; + private slots: void setNick(QString newNick); - void ircUserDestroyed(); private: - IrcUser *_ircUser; + QPointer _ircUser; + quint64 _id; }; @@ -204,24 +211,26 @@ public: enum myRoles { BufferTypeRole = Qt::UserRole, ItemActiveRole, + BufferActivityRole, BufferIdRole, NetworkIdRole, - ItemTypeRole + BufferInfoRole, + ItemTypeRole, + LastSeenRole }; enum itemTypes { - AbstractItemType, - SimpleItemType, NetworkItemType, BufferItemType, - NickItemType + UserCategoryItemType, + IrcUserItemType }; NetworkModel(QObject *parent = 0); static QList defaultHeader(); static bool mimeContainsBufferList(const QMimeData *mimeData); - static QList< QPair > mimeDataToBufferList(const QMimeData *mimeData); + static QList< QPair > mimeDataToBufferList(const QMimeData *mimeData); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &) const; @@ -230,20 +239,22 @@ public: void attachNetwork(Network *network); bool isBufferIndex(const QModelIndex &) const; - Buffer *getBufferByIndex(const QModelIndex &) const; + //Buffer *getBufferByIndex(const QModelIndex &) const; QModelIndex bufferIndex(BufferId bufferId); + const Network *networkByIndex(const QModelIndex &index) const; + public slots: void bufferUpdated(BufferInfo bufferInfo); - void bufferActivity(BufferItem::ActivityLevel, BufferInfo bufferInfo); - -private: - QModelIndex networkIndex(uint networkId); - NetworkItem *network(uint networkId); - NetworkItem *newNetwork(uint networkId, const QString &networkName); + void updateBufferActivity(const Message &msg); + void networkRemoved(const NetworkId &networkId); - BufferItem *buffer(BufferInfo bufferInfo); - BufferItem *newBuffer(BufferInfo bufferInfo); +private: + QModelIndex networkIndex(NetworkId networkId); + NetworkItem *networkItem(NetworkId networkId); + NetworkItem *existsNetworkItem(NetworkId networkId); + BufferItem *bufferItem(const BufferInfo &bufferInfo); + BufferItem *existsBufferItem(const BufferInfo &bufferInfo); };