common: Disable enum type stream operators for Qt >= 5.14
[quassel.git] / src / common / transfer.cpp
index f565a0d..fd170ee 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2015 by the Quassel Project                        *
+ *   Copyright (C) 2005-2019 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "transfer.h"
 
-INIT_SYNCABLE_OBJECT(Transfer)
-Transfer::Transfer(const QUuid &uuid, QObject *parent)
-    : SyncableObject(parent),
-    _state(State::New),
-    _direction(Direction::Receive),
-    _port(0),
-    _fileSize(0),
-    _uuid(uuid)
+#include <utility>
+
+Transfer::Transfer(const QUuid& uuid, QObject* parent)
+    : SyncableObject(parent)
+    , _status(Status::New)
+    , _direction(Direction::Receive)
+    , _port(0)
+    , _fileSize(0)
+    , _uuid(uuid)
 {
     init();
 }
 
-Transfer::Transfer(Direction direction, const QString &nick, const QString &fileName, const QHostAddress &address, quint16 port, quint64 fileSize, QObject *parent)
-    : SyncableObject(parent),
-    _state(State::New),
-    _direction(direction),
-    _fileName(fileName),
-    _address(address),
-    _port(port),
-    _fileSize(fileSize),
-    _nick(nick),
-    _uuid(QUuid::createUuid())
+Transfer::Transfer(
+    Direction direction, QString nick, QString fileName, const QHostAddress& address, quint16 port, quint64 fileSize, QObject* parent)
+    : SyncableObject(parent)
+    , _status(Status::New)
+    , _direction(direction)
+    , _fileName(std::move(fileName))
+    , _address(address)
+    , _port(port)
+    , _fileSize(fileSize)
+    , _nick(std::move(nick))
+    , _uuid(QUuid::createUuid())
 {
     init();
 }
 
-
 void Transfer::init()
 {
     static auto regTypes = []() -> bool {
-        qRegisterMetaType<State>("Transfer::State");
+        qRegisterMetaType<Status>("Transfer::Status");
         qRegisterMetaType<Direction>("Transfer::Direction");
-        qRegisterMetaTypeStreamOperators<State>("Transfer::State");
+        qRegisterMetaTypeStreamOperators<Status>("Transfer::Status");
         qRegisterMetaTypeStreamOperators<Direction>("Transfer::Direction");
         return true;
     }();
     Q_UNUSED(regTypes);
 
-    renameObject(QString("Transfer/%1").arg(_uuid.toString()));
+    setObjectName(QString("Transfer/%1").arg(_uuid.toString()));
     setAllowClientUpdates(true);
 }
 
-
 QUuid Transfer::uuid() const
 {
     return _uuid;
 }
 
-
-Transfer::State Transfer::state() const
+Transfer::Status Transfer::status() const
 {
-    return _state;
+    return _status;
 }
 
-
-void Transfer::setState(Transfer::State state)
+void Transfer::setStatus(Transfer::Status status)
 {
-    if (_state != state) {
-        _state = state;
-        SYNC(ARG(state));
-        emit stateChanged(state);
+    if (_status != status) {
+        _status = status;
+        SYNC(ARG(status));
+        emit statusChanged(status);
+        if (status == Status::Completed || status == Status::Failed) {
+            cleanUp();
+        }
     }
 }
 
+QString Transfer::prettyStatus() const
+{
+    switch (status()) {
+    case Status::New:
+        return tr("New");
+    case Status::Pending:
+        return tr("Pending");
+    case Status::Connecting:
+        return tr("Connecting");
+    case Status::Transferring:
+        return tr("Transferring");
+    case Status::Paused:
+        return tr("Paused");
+    case Status::Completed:
+        return tr("Completed");
+    case Status::Failed:
+        return tr("Failed");
+    case Status::Rejected:
+        return tr("Rejected");
+    }
 
+    return QString();
+}
 
 Transfer::Direction Transfer::direction() const
 {
     return _direction;
 }
 
-
 void Transfer::setDirection(Transfer::Direction direction)
 {
     if (_direction != direction) {
@@ -101,14 +123,12 @@ void Transfer::setDirection(Transfer::Direction direction)
     }
 }
 
-
 QHostAddress Transfer::address() const
 {
     return _address;
 }
 
-
-void Transfer::setAddress(const QHostAddress &address)
+void Transfer::setAddress(const QHostAddress& address)
 {
     if (_address != address) {
         _address = address;
@@ -117,13 +137,11 @@ void Transfer::setAddress(const QHostAddress &address)
     }
 }
 
-
 quint16 Transfer::port() const
 {
     return _port;
 }
 
-
 void Transfer::setPort(quint16 port)
 {
     if (_port != port) {
@@ -133,14 +151,12 @@ void Transfer::setPort(quint16 port)
     }
 }
 
-
 QString Transfer::fileName() const
 {
     return _fileName;
 }
 
-
-void Transfer::setFileName(const QString &fileName)
+void Transfer::setFileName(const QString& fileName)
 {
     if (_fileName != fileName) {
         _fileName = fileName;
@@ -149,13 +165,11 @@ void Transfer::setFileName(const QString &fileName)
     }
 }
 
-
 quint64 Transfer::fileSize() const
 {
     return _fileSize;
 }
 
-
 void Transfer::setFileSize(quint64 fileSize)
 {
     if (_fileSize != fileSize) {
@@ -165,14 +179,12 @@ void Transfer::setFileSize(quint64 fileSize)
     }
 }
 
-
 QString Transfer::nick() const
 {
     return _nick;
 }
 
-
-void Transfer::setNick(const QString &nick)
+void Transfer::setNick(const QString& nick)
 {
     if (_nick != nick) {
         _nick = nick;
@@ -181,34 +193,35 @@ void Transfer::setNick(const QString &nick)
     }
 }
 
-
-void Transfer::setError(const QString &errorString)
+void Transfer::setError(const QString& errorString)
 {
     qWarning() << Q_FUNC_INFO << errorString;
     emit error(errorString);
-    setState(State::Failed);
-    cleanUp();
+    setStatus(Status::Failed);
 }
 
-
-QDataStream &operator<<(QDataStream &out, Transfer::State state) {
+QDataStream& operator<<(QDataStream& out, Transfer::Status state)
+{
     out << static_cast<qint8>(state);
     return out;
 }
 
-QDataStream &operator>>(QDataStream &in, Transfer::State &state) {
+QDataStream& operator>>(QDataStream& in, Transfer::Status& state)
+{
     qint8 s;
     in >> s;
-    state = static_cast<Transfer::State>(s);
+    state = static_cast<Transfer::Status>(s);
     return in;
 }
 
-QDataStream &operator<<(QDataStream &out, Transfer::Direction direction) {
+QDataStream& operator<<(QDataStream& out, Transfer::Direction direction)
+{
     out << static_cast<qint8>(direction);
     return out;
 }
 
-QDataStream &operator>>(QDataStream &in, Transfer::Direction &direction) {
+QDataStream& operator>>(QDataStream& in, Transfer::Direction& direction)
+{
     qint8 d;
     in >> d;
     direction = static_cast<Transfer::Direction>(d);