X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fbuffersyncer.h;h=9faadfc60c0e230fbc9e451dd9a0908674323e28;hp=a7e78866c08033ef9d391396b0126d2bb39cecb8;hb=fd16e241d2fd1f33f4625b3255956f025a67273b;hpb=04754cf669dd295205226b744bc769b94693866a diff --git a/src/common/buffersyncer.h b/src/common/buffersyncer.h index a7e78866..9faadfc6 100644 --- a/src/common/buffersyncer.h +++ b/src/common/buffersyncer.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel IRC Team * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,44 +15,85 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef BUFFERSYNCER_H_ #define BUFFERSYNCER_H_ -#include - #include "syncableobject.h" #include "types.h" +#include "message.h" -class BufferSyncer : public SyncableObject { - Q_OBJECT +class BufferSyncer : public SyncableObject +{ + SYNCABLE_OBJECT + Q_OBJECT - public: +public: explicit BufferSyncer(QObject *parent); + explicit BufferSyncer(const QHash &lastSeenMsg, const QHash &markerLines, const QHash &activities, QObject *parent); + + inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; } + + MsgId lastSeenMsg(BufferId buffer) const; + MsgId markerLine(BufferId buffer) const; + Message::Types activity(BufferId buffer) const; + +public slots: + QVariantList initLastSeenMsg() const; + void initSetLastSeenMsg(const QVariantList &); + + QVariantList initMarkerLines() const; + void initSetMarkerLines(const QVariantList &); + + QVariantList initActivities() const; + void initSetActivities(const QVariantList &); - QDateTime lastSeen(BufferId buffer) const; + virtual inline void requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) { REQUEST(ARG(buffer), ARG(msgId)) } + virtual inline void requestSetMarkerLine(BufferId buffer, const MsgId &msgId) { REQUEST(ARG(buffer), ARG(msgId)) setMarkerLine(buffer, msgId); } - public slots: - QVariantList initLastSeen() const; - void initSetLastSeen(const QVariantList &); + virtual inline void setBufferActivity(BufferId buffer, const int &activity) { + SYNC(ARG(buffer), ARG(activity)); + _bufferActivities[buffer] = Message::Types(activity); + } - void requestSetLastSeen(BufferId buffer, const QDateTime &time); - void requestRemoveBuffer(BufferId buffer); - void removeBuffer(BufferId buffer); + virtual inline void requestRemoveBuffer(BufferId buffer) { REQUEST(ARG(buffer)) } + virtual void removeBuffer(BufferId buffer); - signals: - void lastSeenSet(BufferId buffer, const QDateTime &time); - void setLastSeenRequested(BufferId buffer, const QDateTime &time); - void removeBufferRequested(BufferId buffer); + virtual inline void requestRenameBuffer(BufferId buffer, QString newName) { REQUEST(ARG(buffer), ARG(newName)) } + virtual inline void renameBuffer(BufferId buffer, QString newName) { SYNC(ARG(buffer), ARG(newName)) emit bufferRenamed(buffer, newName); } + + virtual inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) { emit REQUEST(ARG(buffer1), ARG(buffer2)) } + virtual void mergeBuffersPermanently(BufferId buffer1, BufferId buffer2); + + virtual inline void requestPurgeBufferIds() { REQUEST(NO_ARG); } + + virtual inline void requestMarkBufferAsRead(BufferId buffer) { REQUEST(ARG(buffer)) emit bufferMarkedAsRead(buffer); } + virtual inline void markBufferAsRead(BufferId buffer) { SYNC(ARG(buffer)) emit bufferMarkedAsRead(buffer); } + +signals: + void lastSeenMsgSet(BufferId buffer, const MsgId &msgId); + void markerLineSet(BufferId buffer, const MsgId &msgId); void bufferRemoved(BufferId buffer); + void bufferRenamed(BufferId buffer, QString newName); + void buffersPermanentlyMerged(BufferId buffer1, BufferId buffer2); + void bufferMarkedAsRead(BufferId buffer); + +protected slots: + bool setLastSeenMsg(BufferId buffer, const MsgId &msgId); + bool setMarkerLine(BufferId buffer, const MsgId &msgId); - private slots: - bool setLastSeen(BufferId buffer, const QDateTime &time); +protected: + inline QList lastSeenBufferIds() const { return _lastSeenMsg.keys(); } + inline QList markerLineBufferIds() const { return _markerLines.keys(); } + inline QHash markerLines() const { return _markerLines; } - private: - QMap _lastSeen; +private: + QHash _lastSeenMsg; + QHash _markerLines; + QHash _bufferActivities; }; + #endif