dcc: Properly sync TransferManager
[quassel.git] / src / common / transfermanager.h
index b8dd185..2d09a1e 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "syncableobject.h"
 
+#include <QHash>
+#include <QList>
 #include <QUuid>
 
 class Transfer;
@@ -31,12 +33,16 @@ class TransferManager : public SyncableObject
     Q_OBJECT
     SYNCABLE_OBJECT
 
+    Q_PROPERTY(TransferManager::TransferIdList transferIds READ transferIds WRITE setTransferIds)
+
 public:
-    using SyncableObject::SyncableObject;
+    using TransferIdList = QList<QUuid>;
+
+    TransferManager(QObject *parent = nullptr);
     inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
 
     Transfer *transfer(const QUuid &uuid) const;
-    QList<QUuid> transferIds() const;
+    TransferIdList transferIds() const;
 
 signals:
     void transferAdded(const QUuid &uuid);
@@ -47,9 +53,14 @@ protected:
     void removeTransfer(const QUuid &uuid);
 
 protected slots:
+    virtual void setTransferIds(const TransferIdList &transferIds) { Q_UNUSED(transferIds) };
     virtual void onCoreTransferAdded(const QUuid &uuid) { Q_UNUSED(uuid) };
 
 private:
     QHash<QUuid, Transfer *> _transfers;
-
 };
+
+Q_DECLARE_METATYPE(TransferManager::TransferIdList)
+
+QDataStream &operator<<(QDataStream &out, const TransferManager::TransferIdList &transferIds);
+QDataStream &operator>>(QDataStream &in, TransferManager::TransferIdList &state);