mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-12-21 08:09:35 +08:00
commit
7a652c0a8c
@ -131,64 +131,6 @@ AddTorrentData::AddTorrentData(const AddTorrentParams ¶ms)
|
|||||||
savePath = Session::instance()->defaultSavePath();
|
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
|
// TorrentHandle
|
||||||
|
|
||||||
const qreal TorrentHandle::USE_GLOBAL_RATIO = -2.;
|
const qreal TorrentHandle::USE_GLOBAL_RATIO = -2.;
|
||||||
|
@ -120,48 +120,35 @@ namespace BitTorrent
|
|||||||
quint32 numPeers = 0;
|
quint32 numPeers = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TorrentState
|
enum class TorrentState
|
||||||
{
|
{
|
||||||
public:
|
Unknown = -1,
|
||||||
enum
|
|
||||||
{
|
|
||||||
Unknown = -1,
|
|
||||||
|
|
||||||
ForcedDownloading,
|
ForcedDownloading,
|
||||||
Downloading,
|
Downloading,
|
||||||
DownloadingMetadata,
|
DownloadingMetadata,
|
||||||
Allocating,
|
Allocating,
|
||||||
StalledDownloading,
|
StalledDownloading,
|
||||||
|
|
||||||
ForcedUploading,
|
ForcedUploading,
|
||||||
Uploading,
|
Uploading,
|
||||||
StalledUploading,
|
StalledUploading,
|
||||||
|
|
||||||
QueuedDownloading,
|
|
||||||
QueuedUploading,
|
|
||||||
|
|
||||||
CheckingUploading,
|
|
||||||
CheckingDownloading,
|
|
||||||
|
|
||||||
#if LIBTORRENT_VERSION_NUM < 10100
|
#if LIBTORRENT_VERSION_NUM < 10100
|
||||||
QueuedForChecking,
|
QueuedForChecking,
|
||||||
#endif
|
#endif
|
||||||
CheckingResumeData,
|
CheckingResumeData,
|
||||||
|
QueuedDownloading,
|
||||||
|
QueuedUploading,
|
||||||
|
|
||||||
PausedDownloading,
|
CheckingUploading,
|
||||||
PausedUploading,
|
CheckingDownloading,
|
||||||
|
|
||||||
MissingFiles,
|
PausedDownloading,
|
||||||
Error
|
PausedUploading,
|
||||||
};
|
|
||||||
|
|
||||||
TorrentState(int value);
|
MissingFiles,
|
||||||
|
Error
|
||||||
operator int() const;
|
|
||||||
QString toString() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
int m_value;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class TorrentHandle : public QObject
|
class TorrentHandle : public QObject
|
||||||
@ -474,4 +461,6 @@ namespace BitTorrent
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(BitTorrent::TorrentState)
|
||||||
|
|
||||||
#endif // BITTORRENT_TORRENTHANDLE_H
|
#endif // BITTORRENT_TORRENTHANDLE_H
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
Preferences *Preferences::m_instance = 0;
|
Preferences *Preferences::m_instance = 0;
|
||||||
|
|
||||||
Preferences::Preferences() {}
|
Preferences::Preferences() = default;
|
||||||
|
|
||||||
Preferences *Preferences::instance()
|
Preferences *Preferences::instance()
|
||||||
{
|
{
|
||||||
|
@ -36,10 +36,7 @@ typedef QSet<QString> QStringSet;
|
|||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
|
class TorrentHandle;
|
||||||
class TorrentHandle;
|
|
||||||
class TorrentState;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class TorrentFilter
|
class TorrentFilter
|
||||||
|
@ -43,7 +43,7 @@ GuiIconProvider::GuiIconProvider(QObject *parent)
|
|||||||
connect(Preferences::instance(), SIGNAL(changed()), SLOT(configure()));
|
connect(Preferences::instance(), SIGNAL(changed()), SLOT(configure()));
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiIconProvider::~GuiIconProvider() {}
|
GuiIconProvider::~GuiIconProvider() = default;
|
||||||
|
|
||||||
void GuiIconProvider::initInstance()
|
void GuiIconProvider::initInstance()
|
||||||
{
|
{
|
||||||
@ -138,7 +138,6 @@ QString GuiIconProvider::getIconPath(const QString &iconId)
|
|||||||
return IconProvider::getIconPath(iconId);
|
return IconProvider::getIconPath(iconId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GuiIconProvider::configure()
|
void GuiIconProvider::configure()
|
||||||
{
|
{
|
||||||
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))
|
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))
|
||||||
|
@ -860,7 +860,7 @@ void MainWindow::createKeyboardShortcuts()
|
|||||||
m_ui->actionDocumentation->setShortcut(QKeySequence::HelpContents);
|
m_ui->actionDocumentation->setShortcut(QKeySequence::HelpContents);
|
||||||
m_ui->actionOptions->setShortcut(Qt::ALT + Qt::Key_O);
|
m_ui->actionOptions->setShortcut(Qt::ALT + Qt::Key_O);
|
||||||
m_ui->actionStart->setShortcut(Qt::CTRL + Qt::Key_S);
|
m_ui->actionStart->setShortcut(Qt::CTRL + Qt::Key_S);
|
||||||
m_ui->actionStartAll->setShortcut(Qt::CTRL + Qt::SHIFT +Qt::Key_S);
|
m_ui->actionStartAll->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_S);
|
||||||
m_ui->actionPause->setShortcut(Qt::CTRL + Qt::Key_P);
|
m_ui->actionPause->setShortcut(Qt::CTRL + Qt::Key_P);
|
||||||
m_ui->actionPauseAll->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_P);
|
m_ui->actionPauseAll->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_P);
|
||||||
m_ui->actionBottomPriority->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_Minus);
|
m_ui->actionBottomPriority->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_Minus);
|
||||||
|
@ -312,8 +312,7 @@ OptionsDialog::OptionsDialog(QWidget *parent)
|
|||||||
connect(m_ui->comboRatioLimitAct, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton);
|
connect(m_ui->comboRatioLimitAct, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton);
|
||||||
connect(m_ui->checkMaxSeedingMinutes, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
|
connect(m_ui->checkMaxSeedingMinutes, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
|
||||||
connect(m_ui->checkMaxSeedingMinutes, &QAbstractButton::toggled, this, &ThisType::toggleComboRatioLimitAct);
|
connect(m_ui->checkMaxSeedingMinutes, &QAbstractButton::toggled, this, &ThisType::toggleComboRatioLimitAct);
|
||||||
connect(m_ui->spinMaxSeedingMinutes, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
connect(m_ui->spinMaxSeedingMinutes, qSpinBoxValueChanged, this, &ThisType::enableApplyButton);
|
||||||
this, &ThisType::enableApplyButton);
|
|
||||||
// Proxy tab
|
// Proxy tab
|
||||||
connect(m_ui->comboProxyType, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton);
|
connect(m_ui->comboProxyType, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton);
|
||||||
connect(m_ui->textProxyIP, &QLineEdit::textChanged, this, &ThisType::enableApplyButton);
|
connect(m_ui->textProxyIP, &QLineEdit::textChanged, this, &ThisType::enableApplyButton);
|
||||||
|
@ -88,10 +88,10 @@ private slots:
|
|||||||
void on_buttonBox_accepted();
|
void on_buttonBox_accepted();
|
||||||
void closeEvent(QCloseEvent *e);
|
void closeEvent(QCloseEvent *e);
|
||||||
void on_buttonBox_rejected();
|
void on_buttonBox_rejected();
|
||||||
void applySettings(QAbstractButton* button);
|
void applySettings(QAbstractButton *button);
|
||||||
void enableApplyButton();
|
void enableApplyButton();
|
||||||
void toggleComboRatioLimitAct();
|
void toggleComboRatioLimitAct();
|
||||||
void changePage(QListWidgetItem*, QListWidgetItem*);
|
void changePage(QListWidgetItem *, QListWidgetItem *);
|
||||||
void loadWindowState();
|
void loadWindowState();
|
||||||
void loadSplitterState();
|
void loadSplitterState();
|
||||||
void saveWindowState() const;
|
void saveWindowState() const;
|
||||||
@ -132,7 +132,7 @@ private:
|
|||||||
bool addTorrentsInPause() const;
|
bool addTorrentsInPause() const;
|
||||||
QString getTorrentExportDir() const;
|
QString getTorrentExportDir() const;
|
||||||
QString getFinishedTorrentExportDir() const;
|
QString getFinishedTorrentExportDir() const;
|
||||||
QString askForExportDir(const QString& currentExportPath);
|
QString askForExportDir(const QString ¤tExportPath);
|
||||||
int getActionOnDblClOnTorrentDl() const;
|
int getActionOnDblClOnTorrentDl() const;
|
||||||
int getActionOnDblClOnTorrentFn() const;
|
int getActionOnDblClOnTorrentFn() const;
|
||||||
// Connection options
|
// Connection options
|
||||||
|
@ -58,7 +58,7 @@ void TransferListDelegate::paint(QPainter * painter, const QStyleOptionViewItem
|
|||||||
bool isHideState = true;
|
bool isHideState = true;
|
||||||
if (Preferences::instance()->getHideZeroComboValues() == 1) { // paused torrents only
|
if (Preferences::instance()->getHideZeroComboValues() == 1) { // paused torrents only
|
||||||
QModelIndex stateIndex = index.sibling(index.row(), TorrentModel::TR_STATUS);
|
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;
|
isHideState = false;
|
||||||
}
|
}
|
||||||
const bool hideValues = Preferences::instance()->getHideZeroValues() & isHideState;
|
const bool hideValues = Preferences::instance()->getHideZeroValues() & isHideState;
|
||||||
@ -98,7 +98,7 @@ void TransferListDelegate::paint(QPainter * painter, const QStyleOptionViewItem
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TorrentModel::TR_STATUS: {
|
case TorrentModel::TR_STATUS: {
|
||||||
const int state = index.data().toInt();
|
const auto state = index.data().value<BitTorrent::TorrentState>();
|
||||||
QString display = getStatusString(state);
|
QString display = getStatusString(state);
|
||||||
QItemDelegate::drawDisplay(painter, opt, opt.rect, display);
|
QItemDelegate::drawDisplay(painter, opt, opt.rect, display);
|
||||||
break;
|
break;
|
||||||
@ -223,7 +223,7 @@ QSize TransferListDelegate::sizeHint(const QStyleOptionViewItem & option, const
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString TransferListDelegate::getStatusString(const int state) const
|
QString TransferListDelegate::getStatusString(const BitTorrent::TorrentState state) const
|
||||||
{
|
{
|
||||||
QString str;
|
QString str;
|
||||||
|
|
||||||
|
@ -39,6 +39,10 @@ class QStyleOptionViewItem;
|
|||||||
class QModelIndex;
|
class QModelIndex;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
namespace BitTorrent
|
||||||
|
{
|
||||||
|
enum class TorrentState;
|
||||||
|
}
|
||||||
// Defines for download list list columns
|
// Defines for download list list columns
|
||||||
|
|
||||||
class TransferListDelegate: public QItemDelegate
|
class TransferListDelegate: public QItemDelegate
|
||||||
@ -52,7 +56,7 @@ public:
|
|||||||
QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const;
|
QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString getStatusString(const int state) const;
|
QString getStatusString(const BitTorrent::TorrentState state) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TRANSFERLISTDELEGATE_H
|
#endif // TRANSFERLISTDELEGATE_H
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
#include <QElapsedTimer>
|
#include <QElapsedTimer>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
|
#include <libtorrent/version.hpp>
|
||||||
|
|
||||||
#include "base/bittorrent/cachestatus.h"
|
#include "base/bittorrent/cachestatus.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/sessionstatus.h"
|
#include "base/bittorrent/sessionstatus.h"
|
||||||
@ -227,6 +229,52 @@ static const char KEY_LOG_PEER_REASON[] = "reason";
|
|||||||
|
|
||||||
namespace
|
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
|
class QTorrentCompare
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -315,7 +363,7 @@ namespace
|
|||||||
ret[KEY_TORRENT_NUM_INCOMPLETE] = torrent->totalLeechersCount();
|
ret[KEY_TORRENT_NUM_INCOMPLETE] = torrent->totalLeechersCount();
|
||||||
const qreal ratio = torrent->realRatio();
|
const qreal ratio = torrent->realRatio();
|
||||||
ret[KEY_TORRENT_RATIO] = (ratio > BitTorrent::TorrentHandle::MAX_RATIO) ? -1 : ratio;
|
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_ETA] = torrent->eta();
|
||||||
ret[KEY_TORRENT_SEQUENTIAL_DOWNLOAD] = torrent->isSequentialDownload();
|
ret[KEY_TORRENT_SEQUENTIAL_DOWNLOAD] = torrent->isSequentialDownload();
|
||||||
if (torrent->hasMetadata())
|
if (torrent->hasMetadata())
|
||||||
|
Loading…
Reference in New Issue
Block a user