mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-01-06 15:04:34 +08:00
Make BitTorrent::TorrentState strongly-typed enum
This is needed to forward declare this type and pass it by value. Conversion from/to QVariant are hanled via Q_DECLARE_METATYPE, while TorrentState::toString() function was used in webui only and as such is moved there.
This commit is contained in:
parent
19bb6f5fe0
commit
db35bb54e1
@ -131,64 +131,6 @@ AddTorrentData::AddTorrentData(const AddTorrentParams ¶ms)
|
||||
savePath = Session::instance()->defaultSavePath();
|
||||
}
|
||||
|
||||
// TorrentState
|
||||
|
||||
TorrentState::TorrentState(int value)
|
||||
: m_value(value)
|
||||
{
|
||||
}
|
||||
|
||||
QString TorrentState::toString() const
|
||||
{
|
||||
switch (m_value) {
|
||||
case Error:
|
||||
return QLatin1String("error");
|
||||
case MissingFiles:
|
||||
return QLatin1String("missingFiles");
|
||||
case Uploading:
|
||||
return QLatin1String("uploading");
|
||||
case PausedUploading:
|
||||
return QLatin1String("pausedUP");
|
||||
case QueuedUploading:
|
||||
return QLatin1String("queuedUP");
|
||||
case StalledUploading:
|
||||
return QLatin1String("stalledUP");
|
||||
case CheckingUploading:
|
||||
return QLatin1String("checkingUP");
|
||||
case ForcedUploading:
|
||||
return QLatin1String("forcedUP");
|
||||
case Allocating:
|
||||
return QLatin1String("allocating");
|
||||
case Downloading:
|
||||
return QLatin1String("downloading");
|
||||
case DownloadingMetadata:
|
||||
return QLatin1String("metaDL");
|
||||
case PausedDownloading:
|
||||
return QLatin1String("pausedDL");
|
||||
case QueuedDownloading:
|
||||
return QLatin1String("queuedDL");
|
||||
case StalledDownloading:
|
||||
return QLatin1String("stalledDL");
|
||||
case CheckingDownloading:
|
||||
return QLatin1String("checkingDL");
|
||||
case ForcedDownloading:
|
||||
return QLatin1String("forcedDL");
|
||||
#if LIBTORRENT_VERSION_NUM < 10100
|
||||
case QueuedForChecking:
|
||||
return QLatin1String("queuedForChecking");
|
||||
#endif
|
||||
case CheckingResumeData:
|
||||
return QLatin1String("checkingResumeData");
|
||||
default:
|
||||
return QLatin1String("unknown");
|
||||
}
|
||||
}
|
||||
|
||||
TorrentState::operator int() const
|
||||
{
|
||||
return m_value;
|
||||
}
|
||||
|
||||
// TorrentHandle
|
||||
|
||||
const qreal TorrentHandle::USE_GLOBAL_RATIO = -2.;
|
||||
|
@ -120,48 +120,35 @@ namespace BitTorrent
|
||||
quint32 numPeers = 0;
|
||||
};
|
||||
|
||||
class TorrentState
|
||||
enum class TorrentState
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
Unknown = -1,
|
||||
Unknown = -1,
|
||||
|
||||
ForcedDownloading,
|
||||
Downloading,
|
||||
DownloadingMetadata,
|
||||
Allocating,
|
||||
StalledDownloading,
|
||||
ForcedDownloading,
|
||||
Downloading,
|
||||
DownloadingMetadata,
|
||||
Allocating,
|
||||
StalledDownloading,
|
||||
|
||||
ForcedUploading,
|
||||
Uploading,
|
||||
StalledUploading,
|
||||
|
||||
QueuedDownloading,
|
||||
QueuedUploading,
|
||||
|
||||
CheckingUploading,
|
||||
CheckingDownloading,
|
||||
ForcedUploading,
|
||||
Uploading,
|
||||
StalledUploading,
|
||||
|
||||
#if LIBTORRENT_VERSION_NUM < 10100
|
||||
QueuedForChecking,
|
||||
QueuedForChecking,
|
||||
#endif
|
||||
CheckingResumeData,
|
||||
CheckingResumeData,
|
||||
QueuedDownloading,
|
||||
QueuedUploading,
|
||||
|
||||
PausedDownloading,
|
||||
PausedUploading,
|
||||
CheckingUploading,
|
||||
CheckingDownloading,
|
||||
|
||||
MissingFiles,
|
||||
Error
|
||||
};
|
||||
PausedDownloading,
|
||||
PausedUploading,
|
||||
|
||||
TorrentState(int value);
|
||||
|
||||
operator int() const;
|
||||
QString toString() const;
|
||||
|
||||
private:
|
||||
int m_value;
|
||||
MissingFiles,
|
||||
Error
|
||||
};
|
||||
|
||||
class TorrentHandle : public QObject
|
||||
@ -474,4 +461,6 @@ namespace BitTorrent
|
||||
};
|
||||
}
|
||||
|
||||
Q_DECLARE_METATYPE(BitTorrent::TorrentState)
|
||||
|
||||
#endif // BITTORRENT_TORRENTHANDLE_H
|
||||
|
@ -37,7 +37,6 @@ typedef QSet<QString> QStringSet;
|
||||
namespace BitTorrent
|
||||
{
|
||||
class TorrentHandle;
|
||||
class TorrentState;
|
||||
}
|
||||
|
||||
class TorrentFilter
|
||||
|
@ -58,7 +58,7 @@ void TransferListDelegate::paint(QPainter * painter, const QStyleOptionViewItem
|
||||
bool isHideState = true;
|
||||
if (Preferences::instance()->getHideZeroComboValues() == 1) { // paused torrents only
|
||||
QModelIndex stateIndex = index.sibling(index.row(), TorrentModel::TR_STATUS);
|
||||
if (stateIndex.data().toInt() != BitTorrent::TorrentState::PausedDownloading)
|
||||
if (stateIndex.data().value<BitTorrent::TorrentState>() != BitTorrent::TorrentState::PausedDownloading)
|
||||
isHideState = false;
|
||||
}
|
||||
const bool hideValues = Preferences::instance()->getHideZeroValues() & isHideState;
|
||||
@ -98,7 +98,7 @@ void TransferListDelegate::paint(QPainter * painter, const QStyleOptionViewItem
|
||||
break;
|
||||
}
|
||||
case TorrentModel::TR_STATUS: {
|
||||
const int state = index.data().toInt();
|
||||
const auto state = index.data().value<BitTorrent::TorrentState>();
|
||||
QString display = getStatusString(state);
|
||||
QItemDelegate::drawDisplay(painter, opt, opt.rect, display);
|
||||
break;
|
||||
@ -223,7 +223,7 @@ QSize TransferListDelegate::sizeHint(const QStyleOptionViewItem & option, const
|
||||
return size;
|
||||
}
|
||||
|
||||
QString TransferListDelegate::getStatusString(const int state) const
|
||||
QString TransferListDelegate::getStatusString(const BitTorrent::TorrentState state) const
|
||||
{
|
||||
QString str;
|
||||
|
||||
|
@ -39,6 +39,10 @@ class QStyleOptionViewItem;
|
||||
class QModelIndex;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace BitTorrent
|
||||
{
|
||||
enum class TorrentState;
|
||||
}
|
||||
// Defines for download list list columns
|
||||
|
||||
class TransferListDelegate: public QItemDelegate
|
||||
@ -52,7 +56,7 @@ public:
|
||||
QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const;
|
||||
|
||||
private:
|
||||
QString getStatusString(const int state) const;
|
||||
QString getStatusString(const BitTorrent::TorrentState state) const;
|
||||
};
|
||||
|
||||
#endif // TRANSFERLISTDELEGATE_H
|
||||
|
@ -34,6 +34,8 @@
|
||||
#include <QElapsedTimer>
|
||||
#include <QVariant>
|
||||
|
||||
#include <libtorrent/version.hpp>
|
||||
|
||||
#include "base/bittorrent/cachestatus.h"
|
||||
#include "base/bittorrent/session.h"
|
||||
#include "base/bittorrent/sessionstatus.h"
|
||||
@ -227,6 +229,52 @@ static const char KEY_LOG_PEER_REASON[] = "reason";
|
||||
|
||||
namespace
|
||||
{
|
||||
QString torrentStateToString(const BitTorrent::TorrentState state)
|
||||
{
|
||||
switch (state) {
|
||||
case BitTorrent::TorrentState::Error:
|
||||
return QLatin1String("error");
|
||||
case BitTorrent::TorrentState::MissingFiles:
|
||||
return QLatin1String("missingFiles");
|
||||
case BitTorrent::TorrentState::Uploading:
|
||||
return QLatin1String("uploading");
|
||||
case BitTorrent::TorrentState::PausedUploading:
|
||||
return QLatin1String("pausedUP");
|
||||
case BitTorrent::TorrentState::QueuedUploading:
|
||||
return QLatin1String("queuedUP");
|
||||
case BitTorrent::TorrentState::StalledUploading:
|
||||
return QLatin1String("stalledUP");
|
||||
case BitTorrent::TorrentState::CheckingUploading:
|
||||
return QLatin1String("checkingUP");
|
||||
case BitTorrent::TorrentState::ForcedUploading:
|
||||
return QLatin1String("forcedUP");
|
||||
case BitTorrent::TorrentState::Allocating:
|
||||
return QLatin1String("allocating");
|
||||
case BitTorrent::TorrentState::Downloading:
|
||||
return QLatin1String("downloading");
|
||||
case BitTorrent::TorrentState::DownloadingMetadata:
|
||||
return QLatin1String("metaDL");
|
||||
case BitTorrent::TorrentState::PausedDownloading:
|
||||
return QLatin1String("pausedDL");
|
||||
case BitTorrent::TorrentState::QueuedDownloading:
|
||||
return QLatin1String("queuedDL");
|
||||
case BitTorrent::TorrentState::StalledDownloading:
|
||||
return QLatin1String("stalledDL");
|
||||
case BitTorrent::TorrentState::CheckingDownloading:
|
||||
return QLatin1String("checkingDL");
|
||||
case BitTorrent::TorrentState::ForcedDownloading:
|
||||
return QLatin1String("forcedDL");
|
||||
#if LIBTORRENT_VERSION_NUM < 10100
|
||||
case BitTorrent::TorrentState::QueuedForChecking:
|
||||
return QLatin1String("queuedForChecking");
|
||||
#endif
|
||||
case BitTorrent::TorrentState::CheckingResumeData:
|
||||
return QLatin1String("checkingResumeData");
|
||||
default:
|
||||
return QLatin1String("unknown");
|
||||
}
|
||||
}
|
||||
|
||||
class QTorrentCompare
|
||||
{
|
||||
public:
|
||||
@ -315,7 +363,7 @@ namespace
|
||||
ret[KEY_TORRENT_NUM_INCOMPLETE] = torrent->totalLeechersCount();
|
||||
const qreal ratio = torrent->realRatio();
|
||||
ret[KEY_TORRENT_RATIO] = (ratio > BitTorrent::TorrentHandle::MAX_RATIO) ? -1 : ratio;
|
||||
ret[KEY_TORRENT_STATE] = torrent->state().toString();
|
||||
ret[KEY_TORRENT_STATE] = torrentStateToString(torrent->state());
|
||||
ret[KEY_TORRENT_ETA] = torrent->eta();
|
||||
ret[KEY_TORRENT_SEQUENTIAL_DOWNLOAD] = torrent->isSequentialDownload();
|
||||
if (torrent->hasMetadata())
|
||||
|
Loading…
Reference in New Issue
Block a user