dcc: Properly sync TransferManager
[quassel.git] / src / common / transfermanager.h
index d2a888b..2d09a1e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2016 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#ifndef TRANSFERMANAGER_H
-#define TRANSFERMANAGER_H
+#pragma once
 
 #include "syncableobject.h"
 
+#include <QHash>
+#include <QList>
 #include <QUuid>
 
 class Transfer;
@@ -32,25 +33,34 @@ class TransferManager : public SyncableObject
     Q_OBJECT
     SYNCABLE_OBJECT
 
+    Q_PROPERTY(TransferManager::TransferIdList transferIds READ transferIds WRITE setTransferIds)
+
 public:
-    TransferManager(QObject *parent = 0);
+    using TransferIdList = QList<QUuid>;
+
+    TransferManager(QObject *parent = nullptr);
     inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
 
-    QList<QUuid> transferIds() const;
+    Transfer *transfer(const QUuid &uuid) const;
+    TransferIdList transferIds() const;
 
 signals:
-    void transferAdded(const Transfer *transfer);
+    void transferAdded(const QUuid &uuid);
+    void transferRemoved(const QUuid &uuid);
 
 protected:
-    Transfer *transfer_(const QUuid &uuid) const;
     void addTransfer(Transfer *transfer);
+    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;
-
 };
 
-#endif
+Q_DECLARE_METATYPE(TransferManager::TransferIdList)
+
+QDataStream &operator<<(QDataStream &out, const TransferManager::TransferIdList &transferIds);
+QDataStream &operator>>(QDataStream &in, TransferManager::TransferIdList &state);