INIT_SYNCABLE_OBJECT(ClientTransferManager)
+void ClientTransferManager::setTransferIds(const QList<QUuid> &transferIds)
+{
+ for(auto &&id : transferIds) {
+ onCoreTransferAdded(id);
+ }
+}
+
+
void ClientTransferManager::onCoreTransferAdded(const QUuid &uuid)
{
if (uuid.isNull()) {
using TransferManager::TransferManager;
private slots:
+ void setTransferIds(const QList<QUuid> &transferIds) override;
void onCoreTransferAdded(const QUuid &uuid) override;
void onTransferInitDone();
};
INIT_SYNCABLE_OBJECT(TransferManager)
+TransferManager::TransferManager(QObject *parent)
+ : SyncableObject(parent)
+{
+ static auto regTypes = []() -> bool {
+ qRegisterMetaType<TransferIdList>("TransferManager::TransferIdList");
+ qRegisterMetaTypeStreamOperators<TransferIdList>("TransferManager::TransferIdList");
+ return true;
+ }();
+ Q_UNUSED(regTypes);
+}
+
Transfer *TransferManager::transfer(const QUuid &uuid) const
{
return _transfers.value(uuid, nullptr);
}
-QList<QUuid> TransferManager::transferIds() const
+TransferManager::TransferIdList TransferManager::transferIds() const
{
return _transfers.keys();
}
auto transfer = _transfers.take(uuid);
transfer->deleteLater();
}
+
+
+QDataStream &operator<<(QDataStream &out, const TransferManager::TransferIdList &transferIds)
+{
+ out << static_cast<quint32>(transferIds.size());
+ for (auto &&id : transferIds) {
+ out << id;
+ }
+ return out;
+}
+
+
+QDataStream &operator>>(QDataStream &in, TransferManager::TransferIdList &transferIds)
+{
+ quint32 count;
+ in >> count;
+ transferIds.clear();
+ transferIds.reserve(count);
+ for (quint32 i = 0; i < count; ++i) {
+ QUuid id;
+ in >> id;
+ transferIds << id;
+ }
+ return in;
+}
#include "syncableobject.h"
+#include <QHash>
+#include <QList>
#include <QUuid>
class Transfer;
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);
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);