_fileSize(0),
_uuid(uuid)
{
- renameObject(QString("Transfer/%1").arg(_uuid.toString()));
+ init();
}
Transfer::Transfer(Direction direction, const QString &nick, const QString &fileName, const QHostAddress &address, quint16 port, quint64 fileSize, QObject *parent)
_fileSize(fileSize),
_nick(nick),
_uuid(QUuid::createUuid())
+{
+ init();
+}
+
+
+void Transfer::init()
{
renameObject(QString("Transfer/%1").arg(_uuid.toString()));
+ setAllowClientUpdates(true);
}
emit nickChanged(nick);
}
}
+
+
+QString Transfer::savePath() const
+{
+ return _savePath;
+}
+
+
+void Transfer::accept(const QString &savePath) const
+{
+ _savePath = savePath;
+ PeerPtr ptr = 0;
+ REQUEST_OTHER(requestAccepted, ARG(ptr));
+ emit accepted();
+}
+
+
+void Transfer::reject() const
+{
+ REQUEST_OTHER(requestRejected, NO_ARG);
+ emit rejected();
+}
+
+
+void Transfer::requestAccepted(PeerPtr peer)
+{
+ emit accepted(peer);
+}
+
+
+void Transfer::requestRejected()
+{
+ emit rejected();
+}
#include <QUuid>
#include "syncableobject.h"
+#include "types.h"
class Transfer : public SyncableObject
{
quint64 fileSize() const;
QString nick() const;
+ QString savePath() const;
+
+public slots:
+ // called on the client side
+ void accept(const QString &savePath) const;
+ void reject() const;
+
+ // called on the core side through sync calls
+ void requestAccepted(PeerPtr peer = 0);
+ void requestRejected();
+
signals:
void stateChanged(State state);
void directionChanged(Direction direction);
void fileSizeChanged(quint64 fileSize);
void nickChanged(const QString &nick);
+ void accepted(PeerPtr peer = 0) const;
+ void rejected() const;
+
protected:
void setState(State state);
private:
+ void init();
+
void setDirection(Direction direction);
void setAddress(const QHostAddress &address);
void setPort(quint16 port);
quint64 _fileSize;
QString _nick;
QUuid _uuid;
+
+ // non-synced attributes
+ mutable QString _savePath;
};
#endif
void addTransfer(Transfer *transfer);
signals:
- void transferAdded(Transfer *transfer);
+ void transferAdded(const Transfer *transfer);
protected slots:
virtual void onCoreTransferAdded(const QUuid &uuid) { Q_UNUSED(uuid) };
INIT_SYNCABLE_OBJECT(CoreTransferManager)
CoreTransferManager::CoreTransferManager(QObject *parent)
: TransferManager(parent)
+{
+ connect(this, SIGNAL(transferAdded(const Transfer*)), SLOT(onTransferAdded(const Transfer*)));
+}
+
+
+void CoreTransferManager::onTransferAdded(const Transfer *transfer)
+{
+ connect(transfer, SIGNAL(accepted(PeerPtr)), SLOT(onTransferAccepted(PeerPtr)));
+ connect(transfer, SIGNAL(rejected(PeerPtr)), SLOT(onTransferRejected(PeerPtr)));
+}
+
+
+void CoreTransferManager::onTransferAccepted(PeerPtr peer)
+{
+
+}
+
+
+void CoreTransferManager::onTransferRejected(PeerPtr peer)
{
}
#define CORETRANSFERMANAGER_H
#include "transfermanager.h"
+#include "types.h"
class CoreTransferManager : public TransferManager
{
public:
CoreTransferManager(QObject *parent = 0);
+private slots:
+ void onTransferAdded(const Transfer *transfer);
+ void onTransferAccepted(PeerPtr peer);
+ void onTransferRejected(PeerPtr peer);
+
};
#endif