#include "client.h"
#include "clienttransfer.h"
-
INIT_SYNCABLE_OBJECT(ClientTransferManager)
-ClientTransferManager::ClientTransferManager(QObject *parent)
- : TransferManager(parent)
-{
- connect(this, SIGNAL(transferAdded(const Transfer*)), SLOT(onTransferAdded(const Transfer*)));
-}
-
void ClientTransferManager::onCoreTransferAdded(const QUuid &uuid)
{
return;
}
- ClientTransfer *transfer = new ClientTransfer(uuid, this);
+ auto transfer = new ClientTransfer(uuid, this);
connect(transfer, SIGNAL(initDone()), SLOT(onTransferInitDone())); // we only want to add initialized transfers
Client::signalProxy()->synchronize(transfer);
}
Q_ASSERT(transfer);
addTransfer(transfer);
}
-
-
-void ClientTransferManager::onTransferAdded(const Transfer *transfer)
-{
- const ClientTransfer *t = qobject_cast<const ClientTransfer *>(transfer);
- if (!t) {
- qWarning() << "Invalid Transfer added to ClientTransferManager!";
- return;
- }
-
- emit transferAdded(t);
-}
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef CLIENTTRANSFERMANAGER_H
-#define CLIENTTRANSFERMANAGER_H
-
-#include "transfermanager.h"
+#pragma once
#include <QUuid>
-class ClientTransfer;
+#include "transfermanager.h"
class ClientTransferManager : public TransferManager
{
SYNCABLE_OBJECT
public:
- ClientTransferManager(QObject *parent = 0);
-
-public slots:
- void onCoreTransferAdded(const QUuid &uuid);
- void onTransferInitDone();
-
-signals:
- void transferAdded(const ClientTransfer *transfer);
+ using TransferManager::TransferManager;
private slots:
- void onTransferAdded(const Transfer *transfer);
-
+ void onCoreTransferAdded(const QUuid &uuid) override;
+ void onTransferInitDone();
};
-
-#endif
INIT_SYNCABLE_OBJECT(TransferManager)
-TransferManager::TransferManager(QObject *parent)
- : SyncableObject(parent)
-{
-
-}
-
Transfer *TransferManager::transfer(const QUuid &uuid) const
{
_transfers[uuid] = transfer;
SYNC_OTHER(onCoreTransferAdded, ARG(uuid));
- emit transferAdded(transfer);
+ emit transferAdded(uuid);
+}
+
+
+void TransferManager::removeTransfer(const QUuid& uuid)
+{
+ if (!_transfers.contains(uuid)) {
+ qWarning() << "Can not find transfer" << uuid << "to remove!";
+ return;
+ }
+ emit transferRemoved(uuid);
+ auto transfer = _transfers.take(uuid);
+ transfer->deleteLater();
}
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef TRANSFERMANAGER_H
-#define TRANSFERMANAGER_H
+#pragma once
#include "syncableobject.h"
SYNCABLE_OBJECT
public:
- TransferManager(QObject *parent = 0);
+ using SyncableObject::SyncableObject;
inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
Transfer *transfer(const QUuid &uuid) const;
QList<QUuid> transferIds() const;
signals:
- void transferAdded(const Transfer *transfer);
+ void transferAdded(const QUuid &uuid);
+ void transferRemoved(const QUuid &uuid);
protected:
void addTransfer(Transfer *transfer);
+ void removeTransfer(const QUuid &uuid);
protected slots:
virtual void onCoreTransferAdded(const QUuid &uuid) { Q_UNUSED(uuid) };
QHash<QUuid, Transfer *> _transfers;
};
-
-#endif
#include "coretransfermanager.h"
-#include "coretransfer.h"
-
INIT_SYNCABLE_OBJECT(CoreTransferManager)
-CoreTransferManager::CoreTransferManager(QObject *parent)
- : TransferManager(parent)
-{
- connect(this, SIGNAL(transferAdded(const Transfer*)), SLOT(onTransferAdded(const Transfer*)));
-}
-
-
-void CoreTransferManager::addTransfer(CoreTransfer *transfer)
-{
- TransferManager::addTransfer(transfer);
-}
-
-
-void CoreTransferManager::onTransferAdded(const Transfer *transfer)
-{
- // for core-side use, publishing a non-const pointer is ok
- CoreTransfer *t = const_cast<CoreTransfer *>(qobject_cast<const CoreTransfer *>(transfer));
- if (!t) {
- qWarning() << "Invalid Transfer added to CoreTransferManager!";
- return;
- }
-
- emit transferAdded(t);
-}
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef CORETRANSFERMANAGER_H
-#define CORETRANSFERMANAGER_H
+#pragma once
#include "transfermanager.h"
-#include "types.h"
class CoreTransfer;
SYNCABLE_OBJECT
public:
- CoreTransferManager(QObject *parent = 0);
-
-public slots:
- void addTransfer(CoreTransfer *transfer);
-
-signals:
- void transferAdded(CoreTransfer *transfer);
-
-private slots:
- void onTransferAdded(const Transfer *transfer);
+ using TransferManager::TransferManager;
+ // make available unprotected
+ using TransferManager::addTransfer;
};
-
-#endif
connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(removeBufferView(int)));
connect(Client::bufferViewManager(), SIGNAL(initDone()), this, SLOT(loadLayout()));
- connect(Client::transferManager(), SIGNAL(transferAdded(const ClientTransfer*)), SLOT(showNewTransferDlg(const ClientTransfer*)));
+ connect(Client::transferManager(), SIGNAL(transferAdded(QUuid)), SLOT(showNewTransferDlg(QUuid)));
setConnectedState();
}
}
-void MainWin::showNewTransferDlg(const ClientTransfer *transfer)
+void MainWin::showNewTransferDlg(const QUuid &transferId)
{
- ReceiveFileDlg *dlg = new ReceiveFileDlg(transfer, this);
- dlg->show();
+ auto transfer = Client::transferManager()->transfer(transferId);
+ if (transfer) {
+ ReceiveFileDlg *dlg = new ReceiveFileDlg(transfer, this);
+ dlg->show();
+ }
+ else {
+ qWarning() << "Unknown transfer ID" << transferId;
+ }
}
#pragma once
+#include <QUuid>
+
#ifdef HAVE_KDE4
# include <KMainWindow>
#elif defined HAVE_KF5
class BufferHotListFilter;
class BufferView;
class BufferViewConfig;
+class ChatMonitorView;
class ClientBufferViewConfig;
-class ClientTransfer;
class CoreAccount;
class CoreConnectionStatusWidget;
class BufferViewDock;
class MsgProcessorStatusWidget;
class NickListWidget;
class SystemTray;
-class ChatMonitorView;
class TopicWidget;
class QMenu;
void showIgnoreList(QString newRule = QString());
void showShortcutsDlg();
void showPasswordChangeDlg();
- void showNewTransferDlg(const ClientTransfer *transfer);
+ void showNewTransferDlg(const QUuid &transferId);
void onFullScreenToggled();
void handleCoreConnectionError(const QString &errorMsg);