mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-07-15 09:43:07 -07:00
Remove redundant suffix from TorrentHandle class
Originally, it was just a wrapper for libtorrent::torrent_handle class, so it mimicked its name. It was then transformed into a more complex aggregate, but the name was retained (just by inertia). Unlike libtorrent::torrent_handle class in whose name "handle" means the pattern used, it does not matter for qBittorrent classes and just eats up space in the source code.
This commit is contained in:
parent
0cbd15890a
commit
1880082017
52 changed files with 647 additions and 647 deletions
|
@ -63,7 +63,7 @@
|
||||||
|
|
||||||
#include "base/bittorrent/infohash.h"
|
#include "base/bittorrent/infohash.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/exceptions.h"
|
#include "base/exceptions.h"
|
||||||
#include "base/iconprovider.h"
|
#include "base/iconprovider.h"
|
||||||
#include "base/logger.h"
|
#include "base/logger.h"
|
||||||
|
@ -311,7 +311,7 @@ void Application::processMessage(const QString &message)
|
||||||
m_paramsQueue.append(params);
|
m_paramsQueue.append(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::runExternalProgram(const BitTorrent::TorrentHandle *torrent) const
|
void Application::runExternalProgram(const BitTorrent::Torrent *torrent) const
|
||||||
{
|
{
|
||||||
QString program = Preferences::instance()->getAutoRunProgram().trimmed();
|
QString program = Preferences::instance()->getAutoRunProgram().trimmed();
|
||||||
program.replace("%N", torrent->name());
|
program.replace("%N", torrent->name());
|
||||||
|
@ -405,7 +405,7 @@ void Application::runExternalProgram(const BitTorrent::TorrentHandle *torrent) c
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::sendNotificationEmail(const BitTorrent::TorrentHandle *torrent)
|
void Application::sendNotificationEmail(const BitTorrent::Torrent *torrent)
|
||||||
{
|
{
|
||||||
// Prepare mail content
|
// Prepare mail content
|
||||||
const QString content = tr("Torrent name: %1").arg(torrent->name()) + '\n'
|
const QString content = tr("Torrent name: %1").arg(torrent->name()) + '\n'
|
||||||
|
@ -424,7 +424,7 @@ void Application::sendNotificationEmail(const BitTorrent::TorrentHandle *torrent
|
||||||
content);
|
content);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::torrentFinished(BitTorrent::TorrentHandle *const torrent)
|
void Application::torrentFinished(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
Preferences *const pref = Preferences::instance();
|
Preferences *const pref = Preferences::instance();
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ class FileLogger;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace RSS
|
namespace RSS
|
||||||
|
@ -112,7 +112,7 @@ protected:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void processMessage(const QString &message);
|
void processMessage(const QString &message);
|
||||||
void torrentFinished(BitTorrent::TorrentHandle *const torrent);
|
void torrentFinished(BitTorrent::Torrent *const torrent);
|
||||||
void allTorrentsFinished();
|
void allTorrentsFinished();
|
||||||
void cleanup();
|
void cleanup();
|
||||||
#if (!defined(DISABLE_GUI) && defined(Q_OS_WIN))
|
#if (!defined(DISABLE_GUI) && defined(Q_OS_WIN))
|
||||||
|
@ -142,6 +142,6 @@ private:
|
||||||
|
|
||||||
void initializeTranslation();
|
void initializeTranslation();
|
||||||
void processParams(const QStringList ¶ms);
|
void processParams(const QStringList ¶ms);
|
||||||
void runExternalProgram(const BitTorrent::TorrentHandle *torrent) const;
|
void runExternalProgram(const BitTorrent::Torrent *torrent) const;
|
||||||
void sendNotificationEmail(const BitTorrent::TorrentHandle *torrent);
|
void sendNotificationEmail(const BitTorrent::Torrent *torrent);
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,10 +25,10 @@ add_library(qbt_base STATIC
|
||||||
bittorrent/sessionstatus.h
|
bittorrent/sessionstatus.h
|
||||||
bittorrent/speedmonitor.h
|
bittorrent/speedmonitor.h
|
||||||
bittorrent/statistics.h
|
bittorrent/statistics.h
|
||||||
|
bittorrent/torrent.h
|
||||||
bittorrent/torrentcontentlayout.h
|
bittorrent/torrentcontentlayout.h
|
||||||
bittorrent/torrentcreatorthread.h
|
bittorrent/torrentcreatorthread.h
|
||||||
bittorrent/torrenthandle.h
|
bittorrent/torrentimpl.h
|
||||||
bittorrent/torrenthandleimpl.h
|
|
||||||
bittorrent/torrentinfo.h
|
bittorrent/torrentinfo.h
|
||||||
bittorrent/tracker.h
|
bittorrent/tracker.h
|
||||||
bittorrent/trackerentry.h
|
bittorrent/trackerentry.h
|
||||||
|
@ -107,9 +107,9 @@ add_library(qbt_base STATIC
|
||||||
bittorrent/session.cpp
|
bittorrent/session.cpp
|
||||||
bittorrent/speedmonitor.cpp
|
bittorrent/speedmonitor.cpp
|
||||||
bittorrent/statistics.cpp
|
bittorrent/statistics.cpp
|
||||||
|
bittorrent/torrent.cpp
|
||||||
bittorrent/torrentcreatorthread.cpp
|
bittorrent/torrentcreatorthread.cpp
|
||||||
bittorrent/torrenthandle.cpp
|
bittorrent/torrentimpl.cpp
|
||||||
bittorrent/torrenthandleimpl.cpp
|
|
||||||
bittorrent/torrentinfo.cpp
|
bittorrent/torrentinfo.cpp
|
||||||
bittorrent/tracker.cpp
|
bittorrent/tracker.cpp
|
||||||
bittorrent/trackerentry.cpp
|
bittorrent/trackerentry.cpp
|
||||||
|
|
|
@ -24,10 +24,10 @@ HEADERS += \
|
||||||
$$PWD/bittorrent/sessionstatus.h \
|
$$PWD/bittorrent/sessionstatus.h \
|
||||||
$$PWD/bittorrent/speedmonitor.h \
|
$$PWD/bittorrent/speedmonitor.h \
|
||||||
$$PWD/bittorrent/statistics.h \
|
$$PWD/bittorrent/statistics.h \
|
||||||
|
$$PWD/bittorrent/torrent.h \
|
||||||
$$PWD/bittorrent/torrentcontentlayout.h \
|
$$PWD/bittorrent/torrentcontentlayout.h \
|
||||||
$$PWD/bittorrent/torrentcreatorthread.h \
|
$$PWD/bittorrent/torrentcreatorthread.h \
|
||||||
$$PWD/bittorrent/torrenthandle.h \
|
$$PWD/bittorrent/torrentimpl.h \
|
||||||
$$PWD/bittorrent/torrenthandleimpl.h \
|
|
||||||
$$PWD/bittorrent/torrentinfo.h \
|
$$PWD/bittorrent/torrentinfo.h \
|
||||||
$$PWD/bittorrent/tracker.h \
|
$$PWD/bittorrent/tracker.h \
|
||||||
$$PWD/bittorrent/trackerentry.h \
|
$$PWD/bittorrent/trackerentry.h \
|
||||||
|
@ -107,9 +107,9 @@ SOURCES += \
|
||||||
$$PWD/bittorrent/session.cpp \
|
$$PWD/bittorrent/session.cpp \
|
||||||
$$PWD/bittorrent/speedmonitor.cpp \
|
$$PWD/bittorrent/speedmonitor.cpp \
|
||||||
$$PWD/bittorrent/statistics.cpp \
|
$$PWD/bittorrent/statistics.cpp \
|
||||||
|
$$PWD/bittorrent/torrent.cpp \
|
||||||
$$PWD/bittorrent/torrentcreatorthread.cpp \
|
$$PWD/bittorrent/torrentcreatorthread.cpp \
|
||||||
$$PWD/bittorrent/torrenthandle.cpp \
|
$$PWD/bittorrent/torrentimpl.cpp \
|
||||||
$$PWD/bittorrent/torrenthandleimpl.cpp \
|
|
||||||
$$PWD/bittorrent/torrentinfo.cpp \
|
$$PWD/bittorrent/torrentinfo.cpp \
|
||||||
$$PWD/bittorrent/tracker.cpp \
|
$$PWD/bittorrent/tracker.cpp \
|
||||||
$$PWD/bittorrent/trackerentry.cpp \
|
$$PWD/bittorrent/trackerentry.cpp \
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
#include "torrenthandle.h"
|
#include "torrent.h"
|
||||||
#include "torrentcontentlayout.h"
|
#include "torrentcontentlayout.h"
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
|
@ -58,7 +58,7 @@ namespace BitTorrent
|
||||||
std::optional<bool> useAutoTMM;
|
std::optional<bool> useAutoTMM;
|
||||||
int uploadLimit = -1;
|
int uploadLimit = -1;
|
||||||
int downloadLimit = -1;
|
int downloadLimit = -1;
|
||||||
int seedingTimeLimit = TorrentHandle::USE_GLOBAL_SEEDING_TIME;
|
int seedingTimeLimit = Torrent::USE_GLOBAL_SEEDING_TIME;
|
||||||
qreal ratioLimit = TorrentHandle::USE_GLOBAL_RATIO;
|
qreal ratioLimit = Torrent::USE_GLOBAL_RATIO;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,14 +30,14 @@
|
||||||
|
|
||||||
#include <QBitArray>
|
#include <QBitArray>
|
||||||
|
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/net/geoipmanager.h"
|
#include "base/net/geoipmanager.h"
|
||||||
#include "base/unicodestrings.h"
|
#include "base/unicodestrings.h"
|
||||||
#include "peeraddress.h"
|
#include "peeraddress.h"
|
||||||
|
|
||||||
using namespace BitTorrent;
|
using namespace BitTorrent;
|
||||||
|
|
||||||
PeerInfo::PeerInfo(const TorrentHandle *torrent, const lt::peer_info &nativeInfo)
|
PeerInfo::PeerInfo(const Torrent *torrent, const lt::peer_info &nativeInfo)
|
||||||
: m_nativeInfo(nativeInfo)
|
: m_nativeInfo(nativeInfo)
|
||||||
{
|
{
|
||||||
calcRelevance(torrent);
|
calcRelevance(torrent);
|
||||||
|
@ -226,7 +226,7 @@ QString PeerInfo::connectionType() const
|
||||||
: QLatin1String {"Web"};
|
: QLatin1String {"Web"};
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeerInfo::calcRelevance(const TorrentHandle *torrent)
|
void PeerInfo::calcRelevance(const Torrent *torrent)
|
||||||
{
|
{
|
||||||
const QBitArray allPieces = torrent->pieces();
|
const QBitArray allPieces = torrent->pieces();
|
||||||
const QBitArray peerPieces = pieces();
|
const QBitArray peerPieces = pieces();
|
||||||
|
|
|
@ -36,7 +36,7 @@ class QBitArray;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
struct PeerAddress;
|
struct PeerAddress;
|
||||||
|
|
||||||
class PeerInfo
|
class PeerInfo
|
||||||
|
@ -45,7 +45,7 @@ namespace BitTorrent
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PeerInfo() = default;
|
PeerInfo() = default;
|
||||||
PeerInfo(const TorrentHandle *torrent, const lt::peer_info &nativeInfo);
|
PeerInfo(const Torrent *torrent, const lt::peer_info &nativeInfo);
|
||||||
|
|
||||||
bool fromDHT() const;
|
bool fromDHT() const;
|
||||||
bool fromPeX() const;
|
bool fromPeX() const;
|
||||||
|
@ -92,7 +92,7 @@ namespace BitTorrent
|
||||||
int downloadingPieceIndex() const;
|
int downloadingPieceIndex() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void calcRelevance(const TorrentHandle *torrent);
|
void calcRelevance(const Torrent *torrent);
|
||||||
void determineFlags();
|
void determineFlags();
|
||||||
|
|
||||||
lt::peer_info m_nativeInfo = {};
|
lt::peer_info m_nativeInfo = {};
|
||||||
|
|
|
@ -96,7 +96,7 @@
|
||||||
#include "portforwarderimpl.h"
|
#include "portforwarderimpl.h"
|
||||||
#include "resumedatasavingmanager.h"
|
#include "resumedatasavingmanager.h"
|
||||||
#include "statistics.h"
|
#include "statistics.h"
|
||||||
#include "torrenthandleimpl.h"
|
#include "torrentimpl.h"
|
||||||
#include "tracker.h"
|
#include "tracker.h"
|
||||||
#include "trackerentry.h"
|
#include "trackerentry.h"
|
||||||
|
|
||||||
|
@ -578,7 +578,7 @@ void Session::setTempPathEnabled(const bool enabled)
|
||||||
if (enabled != isTempPathEnabled())
|
if (enabled != isTempPathEnabled())
|
||||||
{
|
{
|
||||||
m_isTempPathEnabled = enabled;
|
m_isTempPathEnabled = enabled;
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
torrent->handleTempPathChanged();
|
torrent->handleTempPathChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -595,7 +595,7 @@ void Session::setAppendExtensionEnabled(const bool enabled)
|
||||||
m_isAppendExtensionEnabled = enabled;
|
m_isAppendExtensionEnabled = enabled;
|
||||||
|
|
||||||
// append or remove .!qB extension for incomplete files
|
// append or remove .!qB extension for incomplete files
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
torrent->handleAppendExtensionToggled();
|
torrent->handleAppendExtensionToggled();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -748,13 +748,13 @@ bool Session::editCategory(const QString &name, const QString &savePath)
|
||||||
m_storedCategories = map_cast(m_categories);
|
m_storedCategories = map_cast(m_categories);
|
||||||
if (isDisableAutoTMMWhenCategorySavePathChanged())
|
if (isDisableAutoTMMWhenCategorySavePathChanged())
|
||||||
{
|
{
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
if (torrent->category() == name)
|
if (torrent->category() == name)
|
||||||
torrent->setAutoTMMEnabled(false);
|
torrent->setAutoTMMEnabled(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
if (torrent->category() == name)
|
if (torrent->category() == name)
|
||||||
torrent->handleCategorySavePathChanged();
|
torrent->handleCategorySavePathChanged();
|
||||||
}
|
}
|
||||||
|
@ -764,7 +764,7 @@ bool Session::editCategory(const QString &name, const QString &savePath)
|
||||||
|
|
||||||
bool Session::removeCategory(const QString &name)
|
bool Session::removeCategory(const QString &name)
|
||||||
{
|
{
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
if (torrent->belongsToCategory(name))
|
if (torrent->belongsToCategory(name))
|
||||||
torrent->setCategory("");
|
torrent->setCategory("");
|
||||||
|
|
||||||
|
@ -858,7 +858,7 @@ bool Session::removeTag(const QString &tag)
|
||||||
{
|
{
|
||||||
if (m_tags.remove(tag))
|
if (m_tags.remove(tag))
|
||||||
{
|
{
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
torrent->removeTag(tag);
|
torrent->removeTag(tag);
|
||||||
m_storedTags = m_tags.values();
|
m_storedTags = m_tags.values();
|
||||||
emit tagRemoved(tag);
|
emit tagRemoved(tag);
|
||||||
|
@ -1618,16 +1618,16 @@ void Session::processShareLimits()
|
||||||
|
|
||||||
// We shouldn't iterate over `m_torrents` in the loop below
|
// We shouldn't iterate over `m_torrents` in the loop below
|
||||||
// since `deleteTorrent()` modifies it indirectly
|
// since `deleteTorrent()` modifies it indirectly
|
||||||
const QHash<InfoHash, TorrentHandleImpl *> torrents {m_torrents};
|
const QHash<InfoHash, TorrentImpl *> torrents {m_torrents};
|
||||||
for (TorrentHandleImpl *const torrent : torrents)
|
for (TorrentImpl *const torrent : torrents)
|
||||||
{
|
{
|
||||||
if (torrent->isSeed() && !torrent->isForced())
|
if (torrent->isSeed() && !torrent->isForced())
|
||||||
{
|
{
|
||||||
if (torrent->ratioLimit() != TorrentHandle::NO_RATIO_LIMIT)
|
if (torrent->ratioLimit() != Torrent::NO_RATIO_LIMIT)
|
||||||
{
|
{
|
||||||
const qreal ratio = torrent->realRatio();
|
const qreal ratio = torrent->realRatio();
|
||||||
qreal ratioLimit = torrent->ratioLimit();
|
qreal ratioLimit = torrent->ratioLimit();
|
||||||
if (ratioLimit == TorrentHandle::USE_GLOBAL_RATIO)
|
if (ratioLimit == Torrent::USE_GLOBAL_RATIO)
|
||||||
// If Global Max Ratio is really set...
|
// If Global Max Ratio is really set...
|
||||||
ratioLimit = globalMaxRatio();
|
ratioLimit = globalMaxRatio();
|
||||||
|
|
||||||
|
@ -1635,7 +1635,7 @@ void Session::processShareLimits()
|
||||||
{
|
{
|
||||||
qDebug("Ratio: %f (limit: %f)", ratio, ratioLimit);
|
qDebug("Ratio: %f (limit: %f)", ratio, ratioLimit);
|
||||||
|
|
||||||
if ((ratio <= TorrentHandle::MAX_RATIO) && (ratio >= ratioLimit))
|
if ((ratio <= Torrent::MAX_RATIO) && (ratio >= ratioLimit))
|
||||||
{
|
{
|
||||||
if (m_maxRatioAction == Remove)
|
if (m_maxRatioAction == Remove)
|
||||||
{
|
{
|
||||||
|
@ -1645,7 +1645,7 @@ void Session::processShareLimits()
|
||||||
else if (m_maxRatioAction == DeleteFiles)
|
else if (m_maxRatioAction == DeleteFiles)
|
||||||
{
|
{
|
||||||
LogMsg(tr("'%1' reached the maximum ratio you set. Removed torrent and its files.").arg(torrent->name()));
|
LogMsg(tr("'%1' reached the maximum ratio you set. Removed torrent and its files.").arg(torrent->name()));
|
||||||
deleteTorrent(torrent->hash(), TorrentAndFiles);
|
deleteTorrent(torrent->hash(), DeleteTorrentAndFiles);
|
||||||
}
|
}
|
||||||
else if ((m_maxRatioAction == Pause) && !torrent->isPaused())
|
else if ((m_maxRatioAction == Pause) && !torrent->isPaused())
|
||||||
{
|
{
|
||||||
|
@ -1662,11 +1662,11 @@ void Session::processShareLimits()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (torrent->seedingTimeLimit() != TorrentHandle::NO_SEEDING_TIME_LIMIT)
|
if (torrent->seedingTimeLimit() != Torrent::NO_SEEDING_TIME_LIMIT)
|
||||||
{
|
{
|
||||||
const qlonglong seedingTimeInMinutes = torrent->seedingTime() / 60;
|
const qlonglong seedingTimeInMinutes = torrent->seedingTime() / 60;
|
||||||
int seedingTimeLimit = torrent->seedingTimeLimit();
|
int seedingTimeLimit = torrent->seedingTimeLimit();
|
||||||
if (seedingTimeLimit == TorrentHandle::USE_GLOBAL_SEEDING_TIME)
|
if (seedingTimeLimit == Torrent::USE_GLOBAL_SEEDING_TIME)
|
||||||
{
|
{
|
||||||
// If Global Seeding Time Limit is really set...
|
// If Global Seeding Time Limit is really set...
|
||||||
seedingTimeLimit = globalMaxSeedingMinutes();
|
seedingTimeLimit = globalMaxSeedingMinutes();
|
||||||
|
@ -1674,7 +1674,7 @@ void Session::processShareLimits()
|
||||||
|
|
||||||
if (seedingTimeLimit >= 0)
|
if (seedingTimeLimit >= 0)
|
||||||
{
|
{
|
||||||
if ((seedingTimeInMinutes <= TorrentHandle::MAX_SEEDING_TIME) && (seedingTimeInMinutes >= seedingTimeLimit))
|
if ((seedingTimeInMinutes <= Torrent::MAX_SEEDING_TIME) && (seedingTimeInMinutes >= seedingTimeLimit))
|
||||||
{
|
{
|
||||||
if (m_maxRatioAction == Remove)
|
if (m_maxRatioAction == Remove)
|
||||||
{
|
{
|
||||||
|
@ -1684,7 +1684,7 @@ void Session::processShareLimits()
|
||||||
else if (m_maxRatioAction == DeleteFiles)
|
else if (m_maxRatioAction == DeleteFiles)
|
||||||
{
|
{
|
||||||
LogMsg(tr("'%1' reached the maximum seeding time you set. Removed torrent and its files.").arg(torrent->name()));
|
LogMsg(tr("'%1' reached the maximum seeding time you set. Removed torrent and its files.").arg(torrent->name()));
|
||||||
deleteTorrent(torrent->hash(), TorrentAndFiles);
|
deleteTorrent(torrent->hash(), DeleteTorrentAndFiles);
|
||||||
}
|
}
|
||||||
else if ((m_maxRatioAction == Pause) && !torrent->isPaused())
|
else if ((m_maxRatioAction == Pause) && !torrent->isPaused())
|
||||||
{
|
{
|
||||||
|
@ -1723,7 +1723,7 @@ void Session::handleDownloadFinished(const Net::DownloadResult &result)
|
||||||
|
|
||||||
void Session::fileSearchFinished(const InfoHash &id, const QString &savePath, const QStringList &fileNames)
|
void Session::fileSearchFinished(const InfoHash &id, const QString &savePath, const QStringList &fileNames)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *torrent = m_torrents.value(id);
|
TorrentImpl *torrent = m_torrents.value(id);
|
||||||
if (torrent)
|
if (torrent)
|
||||||
{
|
{
|
||||||
torrent->fileSearchFinished(savePath, fileNames);
|
torrent->fileSearchFinished(savePath, fileNames);
|
||||||
|
@ -1747,14 +1747,14 @@ void Session::fileSearchFinished(const InfoHash &id, const QString &savePath, co
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the torrent handle, given its hash
|
// Return the torrent handle, given its hash
|
||||||
TorrentHandle *Session::findTorrent(const InfoHash &hash) const
|
Torrent *Session::findTorrent(const InfoHash &hash) const
|
||||||
{
|
{
|
||||||
return m_torrents.value(hash);
|
return m_torrents.value(hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Session::hasActiveTorrents() const
|
bool Session::hasActiveTorrents() const
|
||||||
{
|
{
|
||||||
return std::any_of(m_torrents.begin(), m_torrents.end(), [](TorrentHandleImpl *torrent)
|
return std::any_of(m_torrents.begin(), m_torrents.end(), [](TorrentImpl *torrent)
|
||||||
{
|
{
|
||||||
return TorrentFilter::ActiveTorrent.match(torrent);
|
return TorrentFilter::ActiveTorrent.match(torrent);
|
||||||
});
|
});
|
||||||
|
@ -1762,7 +1762,7 @@ bool Session::hasActiveTorrents() const
|
||||||
|
|
||||||
bool Session::hasUnfinishedTorrents() const
|
bool Session::hasUnfinishedTorrents() const
|
||||||
{
|
{
|
||||||
return std::any_of(m_torrents.begin(), m_torrents.end(), [](const TorrentHandleImpl *torrent)
|
return std::any_of(m_torrents.begin(), m_torrents.end(), [](const TorrentImpl *torrent)
|
||||||
{
|
{
|
||||||
return (!torrent->isSeed() && !torrent->isPaused());
|
return (!torrent->isSeed() && !torrent->isPaused());
|
||||||
});
|
});
|
||||||
|
@ -1770,7 +1770,7 @@ bool Session::hasUnfinishedTorrents() const
|
||||||
|
|
||||||
bool Session::hasRunningSeed() const
|
bool Session::hasRunningSeed() const
|
||||||
{
|
{
|
||||||
return std::any_of(m_torrents.begin(), m_torrents.end(), [](const TorrentHandleImpl *torrent)
|
return std::any_of(m_torrents.begin(), m_torrents.end(), [](const TorrentImpl *torrent)
|
||||||
{
|
{
|
||||||
return (torrent->isSeed() && !torrent->isPaused());
|
return (torrent->isSeed() && !torrent->isPaused());
|
||||||
});
|
});
|
||||||
|
@ -1799,14 +1799,14 @@ void Session::banIP(const QString &ip)
|
||||||
// and from the disk, if the corresponding deleteOption is chosen
|
// and from the disk, if the corresponding deleteOption is chosen
|
||||||
bool Session::deleteTorrent(const InfoHash &hash, const DeleteOption deleteOption)
|
bool Session::deleteTorrent(const InfoHash &hash, const DeleteOption deleteOption)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.take(hash);
|
TorrentImpl *const torrent = m_torrents.take(hash);
|
||||||
if (!torrent) return false;
|
if (!torrent) return false;
|
||||||
|
|
||||||
qDebug("Deleting torrent with hash: %s", qUtf8Printable(torrent->hash()));
|
qDebug("Deleting torrent with hash: %s", qUtf8Printable(torrent->hash()));
|
||||||
emit torrentAboutToBeRemoved(torrent);
|
emit torrentAboutToBeRemoved(torrent);
|
||||||
|
|
||||||
// Remove it from session
|
// Remove it from session
|
||||||
if (deleteOption == Torrent)
|
if (deleteOption == DeleteTorrent)
|
||||||
{
|
{
|
||||||
m_removingTorrents[torrent->hash()] = {torrent->name(), "", deleteOption};
|
m_removingTorrents[torrent->hash()] = {torrent->name(), "", deleteOption};
|
||||||
|
|
||||||
|
@ -1887,7 +1887,7 @@ bool Session::cancelDownloadMetadata(const InfoHash &hash)
|
||||||
|
|
||||||
void Session::increaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
void Session::increaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
{
|
{
|
||||||
using ElementType = std::pair<int, TorrentHandleImpl *>;
|
using ElementType = std::pair<int, TorrentImpl *>;
|
||||||
std::priority_queue<ElementType
|
std::priority_queue<ElementType
|
||||||
, std::vector<ElementType>
|
, std::vector<ElementType>
|
||||||
, std::greater<ElementType>> torrentQueue;
|
, std::greater<ElementType>> torrentQueue;
|
||||||
|
@ -1895,7 +1895,7 @@ void Session::increaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
// Sort torrents by queue position
|
// Sort torrents by queue position
|
||||||
for (const InfoHash &infoHash : hashes)
|
for (const InfoHash &infoHash : hashes)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(infoHash);
|
TorrentImpl *const torrent = m_torrents.value(infoHash);
|
||||||
if (torrent && !torrent->isSeed())
|
if (torrent && !torrent->isSeed())
|
||||||
torrentQueue.emplace(torrent->queuePosition(), torrent);
|
torrentQueue.emplace(torrent->queuePosition(), torrent);
|
||||||
}
|
}
|
||||||
|
@ -1903,7 +1903,7 @@ void Session::increaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
// Increase torrents queue position (starting with the one in the highest queue position)
|
// Increase torrents queue position (starting with the one in the highest queue position)
|
||||||
while (!torrentQueue.empty())
|
while (!torrentQueue.empty())
|
||||||
{
|
{
|
||||||
const TorrentHandleImpl *torrent = torrentQueue.top().second;
|
const TorrentImpl *torrent = torrentQueue.top().second;
|
||||||
torrentQueuePositionUp(torrent->nativeHandle());
|
torrentQueuePositionUp(torrent->nativeHandle());
|
||||||
torrentQueue.pop();
|
torrentQueue.pop();
|
||||||
}
|
}
|
||||||
|
@ -1913,13 +1913,13 @@ void Session::increaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
|
|
||||||
void Session::decreaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
void Session::decreaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
{
|
{
|
||||||
using ElementType = std::pair<int, TorrentHandleImpl *>;
|
using ElementType = std::pair<int, TorrentImpl *>;
|
||||||
std::priority_queue<ElementType> torrentQueue;
|
std::priority_queue<ElementType> torrentQueue;
|
||||||
|
|
||||||
// Sort torrents by queue position
|
// Sort torrents by queue position
|
||||||
for (const InfoHash &infoHash : hashes)
|
for (const InfoHash &infoHash : hashes)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(infoHash);
|
TorrentImpl *const torrent = m_torrents.value(infoHash);
|
||||||
if (torrent && !torrent->isSeed())
|
if (torrent && !torrent->isSeed())
|
||||||
torrentQueue.emplace(torrent->queuePosition(), torrent);
|
torrentQueue.emplace(torrent->queuePosition(), torrent);
|
||||||
}
|
}
|
||||||
|
@ -1927,7 +1927,7 @@ void Session::decreaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
// Decrease torrents queue position (starting with the one in the lowest queue position)
|
// Decrease torrents queue position (starting with the one in the lowest queue position)
|
||||||
while (!torrentQueue.empty())
|
while (!torrentQueue.empty())
|
||||||
{
|
{
|
||||||
const TorrentHandleImpl *torrent = torrentQueue.top().second;
|
const TorrentImpl *torrent = torrentQueue.top().second;
|
||||||
torrentQueuePositionDown(torrent->nativeHandle());
|
torrentQueuePositionDown(torrent->nativeHandle());
|
||||||
torrentQueue.pop();
|
torrentQueue.pop();
|
||||||
}
|
}
|
||||||
|
@ -1940,13 +1940,13 @@ void Session::decreaseTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
|
|
||||||
void Session::topTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
void Session::topTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
{
|
{
|
||||||
using ElementType = std::pair<int, TorrentHandleImpl *>;
|
using ElementType = std::pair<int, TorrentImpl *>;
|
||||||
std::priority_queue<ElementType> torrentQueue;
|
std::priority_queue<ElementType> torrentQueue;
|
||||||
|
|
||||||
// Sort torrents by queue position
|
// Sort torrents by queue position
|
||||||
for (const InfoHash &infoHash : hashes)
|
for (const InfoHash &infoHash : hashes)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(infoHash);
|
TorrentImpl *const torrent = m_torrents.value(infoHash);
|
||||||
if (torrent && !torrent->isSeed())
|
if (torrent && !torrent->isSeed())
|
||||||
torrentQueue.emplace(torrent->queuePosition(), torrent);
|
torrentQueue.emplace(torrent->queuePosition(), torrent);
|
||||||
}
|
}
|
||||||
|
@ -1954,7 +1954,7 @@ void Session::topTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
// Top torrents queue position (starting with the one in the lowest queue position)
|
// Top torrents queue position (starting with the one in the lowest queue position)
|
||||||
while (!torrentQueue.empty())
|
while (!torrentQueue.empty())
|
||||||
{
|
{
|
||||||
const TorrentHandleImpl *torrent = torrentQueue.top().second;
|
const TorrentImpl *torrent = torrentQueue.top().second;
|
||||||
torrentQueuePositionTop(torrent->nativeHandle());
|
torrentQueuePositionTop(torrent->nativeHandle());
|
||||||
torrentQueue.pop();
|
torrentQueue.pop();
|
||||||
}
|
}
|
||||||
|
@ -1964,7 +1964,7 @@ void Session::topTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
|
|
||||||
void Session::bottomTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
void Session::bottomTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
{
|
{
|
||||||
using ElementType = std::pair<int, TorrentHandleImpl *>;
|
using ElementType = std::pair<int, TorrentImpl *>;
|
||||||
std::priority_queue<ElementType
|
std::priority_queue<ElementType
|
||||||
, std::vector<ElementType>
|
, std::vector<ElementType>
|
||||||
, std::greater<ElementType>> torrentQueue;
|
, std::greater<ElementType>> torrentQueue;
|
||||||
|
@ -1972,7 +1972,7 @@ void Session::bottomTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
// Sort torrents by queue position
|
// Sort torrents by queue position
|
||||||
for (const InfoHash &infoHash : hashes)
|
for (const InfoHash &infoHash : hashes)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(infoHash);
|
TorrentImpl *const torrent = m_torrents.value(infoHash);
|
||||||
if (torrent && !torrent->isSeed())
|
if (torrent && !torrent->isSeed())
|
||||||
torrentQueue.emplace(torrent->queuePosition(), torrent);
|
torrentQueue.emplace(torrent->queuePosition(), torrent);
|
||||||
}
|
}
|
||||||
|
@ -1980,7 +1980,7 @@ void Session::bottomTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
// Bottom torrents queue position (starting with the one in the highest queue position)
|
// Bottom torrents queue position (starting with the one in the highest queue position)
|
||||||
while (!torrentQueue.empty())
|
while (!torrentQueue.empty())
|
||||||
{
|
{
|
||||||
const TorrentHandleImpl *torrent = torrentQueue.top().second;
|
const TorrentImpl *torrent = torrentQueue.top().second;
|
||||||
torrentQueuePositionBottom(torrent->nativeHandle());
|
torrentQueuePositionBottom(torrent->nativeHandle());
|
||||||
torrentQueue.pop();
|
torrentQueue.pop();
|
||||||
}
|
}
|
||||||
|
@ -1991,17 +1991,17 @@ void Session::bottomTorrentsQueuePos(const QVector<InfoHash> &hashes)
|
||||||
saveTorrentsQueue();
|
saveTorrentsQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentSaveResumeDataRequested(const TorrentHandleImpl *torrent)
|
void Session::handleTorrentSaveResumeDataRequested(const TorrentImpl *torrent)
|
||||||
{
|
{
|
||||||
qDebug("Saving resume data is requested for torrent '%s'...", qUtf8Printable(torrent->name()));
|
qDebug("Saving resume data is requested for torrent '%s'...", qUtf8Printable(torrent->name()));
|
||||||
++m_numResumeData;
|
++m_numResumeData;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<TorrentHandle *> Session::torrents() const
|
QVector<Torrent *> Session::torrents() const
|
||||||
{
|
{
|
||||||
QVector<TorrentHandle *> result;
|
QVector<Torrent *> result;
|
||||||
result.reserve(m_torrents.size());
|
result.reserve(m_torrents.size());
|
||||||
for (TorrentHandleImpl *torrent : asConst(m_torrents))
|
for (TorrentImpl *torrent : asConst(m_torrents))
|
||||||
result << torrent;
|
result << torrent;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -2099,7 +2099,7 @@ bool Session::addTorrent_impl(const std::variant<MagnetUri, TorrentInfo> &source
|
||||||
if (m_loadingTorrents.contains(hash))
|
if (m_loadingTorrents.contains(hash))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(hash);
|
TorrentImpl *const torrent = m_torrents.value(hash);
|
||||||
if (torrent)
|
if (torrent)
|
||||||
{ // a duplicate torrent is added
|
{ // a duplicate torrent is added
|
||||||
if (torrent->isPrivate() || (hasMetadata && metadata.isPrivate()))
|
if (torrent->isPrivate() || (hasMetadata && metadata.isPrivate()))
|
||||||
|
@ -2293,7 +2293,7 @@ bool Session::downloadMetadata(const MagnetUri &magnetUri)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::exportTorrentFile(const TorrentHandle *torrent, TorrentExportFolder folder)
|
void Session::exportTorrentFile(const Torrent *torrent, TorrentExportFolder folder)
|
||||||
{
|
{
|
||||||
Q_ASSERT(((folder == TorrentExportFolder::Regular) && !torrentExportDirectory().isEmpty()) ||
|
Q_ASSERT(((folder == TorrentExportFolder::Regular) && !torrentExportDirectory().isEmpty()) ||
|
||||||
((folder == TorrentExportFolder::Finished) && !finishedTorrentExportDirectory().isEmpty()));
|
((folder == TorrentExportFolder::Finished) && !finishedTorrentExportDirectory().isEmpty()));
|
||||||
|
@ -2321,7 +2321,7 @@ void Session::exportTorrentFile(const TorrentHandle *torrent, TorrentExportFolde
|
||||||
|
|
||||||
void Session::generateResumeData()
|
void Session::generateResumeData()
|
||||||
{
|
{
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
{
|
{
|
||||||
if (!torrent->isValid()) continue;
|
if (!torrent->isValid()) continue;
|
||||||
|
|
||||||
|
@ -2367,7 +2367,7 @@ void Session::saveTorrentsQueue()
|
||||||
{
|
{
|
||||||
// store hash in textual representation
|
// store hash in textual representation
|
||||||
QMap<int, QString> queue; // Use QMap since it should be ordered by key
|
QMap<int, QString> queue; // Use QMap since it should be ordered by key
|
||||||
for (const TorrentHandleImpl *torrent : asConst(m_torrents))
|
for (const TorrentImpl *torrent : asConst(m_torrents))
|
||||||
{
|
{
|
||||||
// We require actual (non-cached) queue position here!
|
// We require actual (non-cached) queue position here!
|
||||||
const int queuePos = static_cast<LTUnderlyingType<lt::queue_position_t>>(torrent->nativeHandle().queue_position());
|
const int queuePos = static_cast<LTUnderlyingType<lt::queue_position_t>>(torrent->nativeHandle().queue_position());
|
||||||
|
@ -2409,10 +2409,10 @@ void Session::setDefaultSavePath(QString path)
|
||||||
m_defaultSavePath = path;
|
m_defaultSavePath = path;
|
||||||
|
|
||||||
if (isDisableAutoTMMWhenDefaultSavePathChanged())
|
if (isDisableAutoTMMWhenDefaultSavePathChanged())
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
torrent->setAutoTMMEnabled(false);
|
torrent->setAutoTMMEnabled(false);
|
||||||
else
|
else
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
torrent->handleCategorySavePathChanged();
|
torrent->handleCategorySavePathChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2423,7 +2423,7 @@ void Session::setTempPath(QString path)
|
||||||
|
|
||||||
m_tempPath = path;
|
m_tempPath = path;
|
||||||
|
|
||||||
for (TorrentHandleImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
torrent->handleTempPathChanged();
|
torrent->handleTempPathChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3751,8 +3751,8 @@ bool Session::isKnownTorrent(const InfoHash &hash) const
|
||||||
|
|
||||||
void Session::updateSeedingLimitTimer()
|
void Session::updateSeedingLimitTimer()
|
||||||
{
|
{
|
||||||
if ((globalMaxRatio() == TorrentHandle::NO_RATIO_LIMIT) && !hasPerTorrentRatioLimit()
|
if ((globalMaxRatio() == Torrent::NO_RATIO_LIMIT) && !hasPerTorrentRatioLimit()
|
||||||
&& (globalMaxSeedingMinutes() == TorrentHandle::NO_SEEDING_TIME_LIMIT) && !hasPerTorrentSeedingTimeLimit())
|
&& (globalMaxSeedingMinutes() == Torrent::NO_SEEDING_TIME_LIMIT) && !hasPerTorrentSeedingTimeLimit())
|
||||||
{
|
{
|
||||||
if (m_seedingLimitTimer->isActive())
|
if (m_seedingLimitTimer->isActive())
|
||||||
m_seedingLimitTimer->stop();
|
m_seedingLimitTimer->stop();
|
||||||
|
@ -3763,48 +3763,48 @@ void Session::updateSeedingLimitTimer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentShareLimitChanged(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentShareLimitChanged(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
updateSeedingLimitTimer();
|
updateSeedingLimitTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentNameChanged(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentNameChanged(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentSavePathChanged(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentSavePathChanged(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
emit torrentSavePathChanged(torrent);
|
emit torrentSavePathChanged(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentCategoryChanged(TorrentHandleImpl *const torrent, const QString &oldCategory)
|
void Session::handleTorrentCategoryChanged(TorrentImpl *const torrent, const QString &oldCategory)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
emit torrentCategoryChanged(torrent, oldCategory);
|
emit torrentCategoryChanged(torrent, oldCategory);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentTagAdded(TorrentHandleImpl *const torrent, const QString &tag)
|
void Session::handleTorrentTagAdded(TorrentImpl *const torrent, const QString &tag)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
emit torrentTagAdded(torrent, tag);
|
emit torrentTagAdded(torrent, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentTagRemoved(TorrentHandleImpl *const torrent, const QString &tag)
|
void Session::handleTorrentTagRemoved(TorrentImpl *const torrent, const QString &tag)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
emit torrentTagRemoved(torrent, tag);
|
emit torrentTagRemoved(torrent, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentSavingModeChanged(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentSavingModeChanged(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
emit torrentSavingModeChanged(torrent);
|
emit torrentSavingModeChanged(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentTrackersAdded(TorrentHandleImpl *const torrent, const QVector<TrackerEntry> &newTrackers)
|
void Session::handleTorrentTrackersAdded(TorrentImpl *const torrent, const QVector<TrackerEntry> &newTrackers)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
|
|
||||||
|
@ -3816,7 +3816,7 @@ void Session::handleTorrentTrackersAdded(TorrentHandleImpl *const torrent, const
|
||||||
emit trackersChanged(torrent);
|
emit trackersChanged(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentTrackersRemoved(TorrentHandleImpl *const torrent, const QVector<TrackerEntry> &deletedTrackers)
|
void Session::handleTorrentTrackersRemoved(TorrentImpl *const torrent, const QVector<TrackerEntry> &deletedTrackers)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
|
|
||||||
|
@ -3828,27 +3828,27 @@ void Session::handleTorrentTrackersRemoved(TorrentHandleImpl *const torrent, con
|
||||||
emit trackersChanged(torrent);
|
emit trackersChanged(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentTrackersChanged(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentTrackersChanged(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
emit trackersChanged(torrent);
|
emit trackersChanged(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentUrlSeedsAdded(TorrentHandleImpl *const torrent, const QVector<QUrl> &newUrlSeeds)
|
void Session::handleTorrentUrlSeedsAdded(TorrentImpl *const torrent, const QVector<QUrl> &newUrlSeeds)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
for (const QUrl &newUrlSeed : newUrlSeeds)
|
for (const QUrl &newUrlSeed : newUrlSeeds)
|
||||||
LogMsg(tr("URL seed '%1' was added to torrent '%2'").arg(newUrlSeed.toString(), torrent->name()));
|
LogMsg(tr("URL seed '%1' was added to torrent '%2'").arg(newUrlSeed.toString(), torrent->name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentUrlSeedsRemoved(TorrentHandleImpl *const torrent, const QVector<QUrl> &urlSeeds)
|
void Session::handleTorrentUrlSeedsRemoved(TorrentImpl *const torrent, const QVector<QUrl> &urlSeeds)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
for (const QUrl &urlSeed : urlSeeds)
|
for (const QUrl &urlSeed : urlSeeds)
|
||||||
LogMsg(tr("URL seed '%1' was removed from torrent '%2'").arg(urlSeed.toString(), torrent->name()));
|
LogMsg(tr("URL seed '%1' was removed from torrent '%2'").arg(urlSeed.toString(), torrent->name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentMetadataReceived(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentMetadataReceived(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
// Save metadata
|
// Save metadata
|
||||||
const QDir resumeDataDir {m_resumeFolderPath};
|
const QDir resumeDataDir {m_resumeFolderPath};
|
||||||
|
@ -3869,24 +3869,24 @@ void Session::handleTorrentMetadataReceived(TorrentHandleImpl *const torrent)
|
||||||
emit torrentMetadataReceived(torrent);
|
emit torrentMetadataReceived(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentPaused(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentPaused(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
emit torrentPaused(torrent);
|
emit torrentPaused(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentResumed(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentResumed(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
emit torrentResumed(torrent);
|
emit torrentResumed(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentChecked(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentChecked(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
emit torrentFinishedChecking(torrent);
|
emit torrentFinishedChecking(torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentFinished(TorrentHandleImpl *const torrent)
|
void Session::handleTorrentFinished(TorrentImpl *const torrent)
|
||||||
{
|
{
|
||||||
if (!torrent->hasError() && !torrent->hasMissingFiles())
|
if (!torrent->hasError() && !torrent->hasMissingFiles())
|
||||||
torrent->saveResumeData();
|
torrent->saveResumeData();
|
||||||
|
@ -3925,7 +3925,7 @@ void Session::handleTorrentFinished(TorrentHandleImpl *const torrent)
|
||||||
emit allTorrentsFinished();
|
emit allTorrentsFinished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentResumeDataReady(TorrentHandleImpl *const torrent, const std::shared_ptr<lt::entry> &data)
|
void Session::handleTorrentResumeDataReady(TorrentImpl *const torrent, const std::shared_ptr<lt::entry> &data)
|
||||||
{
|
{
|
||||||
--m_numResumeData;
|
--m_numResumeData;
|
||||||
|
|
||||||
|
@ -3942,17 +3942,17 @@ void Session::handleTorrentResumeDataReady(TorrentHandleImpl *const torrent, con
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentTrackerReply(TorrentHandleImpl *const torrent, const QString &trackerUrl)
|
void Session::handleTorrentTrackerReply(TorrentImpl *const torrent, const QString &trackerUrl)
|
||||||
{
|
{
|
||||||
emit trackerSuccess(torrent, trackerUrl);
|
emit trackerSuccess(torrent, trackerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentTrackerError(TorrentHandleImpl *const torrent, const QString &trackerUrl)
|
void Session::handleTorrentTrackerError(TorrentImpl *const torrent, const QString &trackerUrl)
|
||||||
{
|
{
|
||||||
emit trackerError(torrent, trackerUrl);
|
emit trackerError(torrent, trackerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Session::addMoveTorrentStorageJob(TorrentHandleImpl *torrent, const QString &newPath, const MoveStorageMode mode)
|
bool Session::addMoveTorrentStorageJob(TorrentImpl *torrent, const QString &newPath, const MoveStorageMode mode)
|
||||||
{
|
{
|
||||||
Q_ASSERT(torrent);
|
Q_ASSERT(torrent);
|
||||||
|
|
||||||
|
@ -4009,7 +4009,7 @@ bool Session::addMoveTorrentStorageJob(TorrentHandleImpl *torrent, const QString
|
||||||
void Session::moveTorrentStorage(const MoveStorageJob &job) const
|
void Session::moveTorrentStorage(const MoveStorageJob &job) const
|
||||||
{
|
{
|
||||||
const InfoHash infoHash = job.torrentHandle.info_hash();
|
const InfoHash infoHash = job.torrentHandle.info_hash();
|
||||||
const TorrentHandleImpl *torrent = m_torrents.value(infoHash);
|
const TorrentImpl *torrent = m_torrents.value(infoHash);
|
||||||
const QString torrentName = (torrent ? torrent->name() : QString {infoHash});
|
const QString torrentName = (torrent ? torrent->name() : QString {infoHash});
|
||||||
LogMsg(tr("Moving \"%1\" to \"%2\"...").arg(torrentName, job.path));
|
LogMsg(tr("Moving \"%1\" to \"%2\"...").arg(torrentName, job.path));
|
||||||
|
|
||||||
|
@ -4032,7 +4032,7 @@ void Session::handleMoveTorrentStorageJobFinished()
|
||||||
|
|
||||||
const bool torrentHasOutstandingJob = (iter != m_moveStorageQueue.cend());
|
const bool torrentHasOutstandingJob = (iter != m_moveStorageQueue.cend());
|
||||||
|
|
||||||
TorrentHandleImpl *torrent = m_torrents.value(finishedJob.torrentHandle.info_hash());
|
TorrentImpl *torrent = m_torrents.value(finishedJob.torrentHandle.info_hash());
|
||||||
if (torrent)
|
if (torrent)
|
||||||
{
|
{
|
||||||
torrent->handleMoveStorageJobFinished(torrentHasOutstandingJob);
|
torrent->handleMoveStorageJobFinished(torrentHasOutstandingJob);
|
||||||
|
@ -4042,19 +4042,19 @@ void Session::handleMoveTorrentStorageJobFinished()
|
||||||
// Last job is completed for torrent that being removing, so actually remove it
|
// Last job is completed for torrent that being removing, so actually remove it
|
||||||
const lt::torrent_handle nativeHandle {finishedJob.torrentHandle};
|
const lt::torrent_handle nativeHandle {finishedJob.torrentHandle};
|
||||||
const RemovingTorrentData &removingTorrentData = m_removingTorrents[nativeHandle.info_hash()];
|
const RemovingTorrentData &removingTorrentData = m_removingTorrents[nativeHandle.info_hash()];
|
||||||
if (removingTorrentData.deleteOption == Torrent)
|
if (removingTorrentData.deleteOption == DeleteTorrent)
|
||||||
m_nativeSession->remove_torrent(nativeHandle, lt::session::delete_partfile);
|
m_nativeSession->remove_torrent(nativeHandle, lt::session::delete_partfile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::handleTorrentTrackerWarning(TorrentHandleImpl *const torrent, const QString &trackerUrl)
|
void Session::handleTorrentTrackerWarning(TorrentImpl *const torrent, const QString &trackerUrl)
|
||||||
{
|
{
|
||||||
emit trackerWarning(torrent, trackerUrl);
|
emit trackerWarning(torrent, trackerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Session::hasPerTorrentRatioLimit() const
|
bool Session::hasPerTorrentRatioLimit() const
|
||||||
{
|
{
|
||||||
return std::any_of(m_torrents.cbegin(), m_torrents.cend(), [](const TorrentHandleImpl *torrent)
|
return std::any_of(m_torrents.cbegin(), m_torrents.cend(), [](const TorrentImpl *torrent)
|
||||||
{
|
{
|
||||||
return (torrent->ratioLimit() >= 0);
|
return (torrent->ratioLimit() >= 0);
|
||||||
});
|
});
|
||||||
|
@ -4062,7 +4062,7 @@ bool Session::hasPerTorrentRatioLimit() const
|
||||||
|
|
||||||
bool Session::hasPerTorrentSeedingTimeLimit() const
|
bool Session::hasPerTorrentSeedingTimeLimit() const
|
||||||
{
|
{
|
||||||
return std::any_of(m_torrents.cbegin(), m_torrents.cend(), [](const TorrentHandleImpl *torrent)
|
return std::any_of(m_torrents.cbegin(), m_torrents.cend(), [](const TorrentImpl *torrent)
|
||||||
{
|
{
|
||||||
return (torrent->seedingTimeLimit() >= 0);
|
return (torrent->seedingTimeLimit() >= 0);
|
||||||
});
|
});
|
||||||
|
@ -4143,7 +4143,7 @@ void Session::disableIPFilter()
|
||||||
|
|
||||||
void Session::recursiveTorrentDownload(const InfoHash &hash)
|
void Session::recursiveTorrentDownload(const InfoHash &hash)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(hash);
|
TorrentImpl *const torrent = m_torrents.value(hash);
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
for (int i = 0; i < torrent->filesCount(); ++i)
|
for (int i = 0; i < torrent->filesCount(); ++i)
|
||||||
|
@ -4189,7 +4189,7 @@ bool Session::loadTorrentResumeData(const QByteArray &data, const TorrentInfo &m
|
||||||
Utils::Fs::toUniformPath(fromLTString(root.dict_find_string_value("qBt-savePath"))));
|
Utils::Fs::toUniformPath(fromLTString(root.dict_find_string_value("qBt-savePath"))));
|
||||||
torrentParams.hasSeedStatus = root.dict_find_int_value("qBt-seedStatus");
|
torrentParams.hasSeedStatus = root.dict_find_int_value("qBt-seedStatus");
|
||||||
torrentParams.firstLastPiecePriority = root.dict_find_int_value("qBt-firstLastPiecePriority");
|
torrentParams.firstLastPiecePriority = root.dict_find_int_value("qBt-firstLastPiecePriority");
|
||||||
torrentParams.seedingTimeLimit = root.dict_find_int_value("qBt-seedingTimeLimit", TorrentHandle::USE_GLOBAL_SEEDING_TIME);
|
torrentParams.seedingTimeLimit = root.dict_find_int_value("qBt-seedingTimeLimit", Torrent::USE_GLOBAL_SEEDING_TIME);
|
||||||
|
|
||||||
// TODO: The following code is deprecated. Replace with the commented one after several releases in 4.4.x.
|
// TODO: The following code is deprecated. Replace with the commented one after several releases in 4.4.x.
|
||||||
// === BEGIN DEPRECATED CODE === //
|
// === BEGIN DEPRECATED CODE === //
|
||||||
|
@ -4212,7 +4212,7 @@ bool Session::loadTorrentResumeData(const QByteArray &data, const TorrentInfo &m
|
||||||
|
|
||||||
const lt::string_view ratioLimitString = root.dict_find_string_value("qBt-ratioLimit");
|
const lt::string_view ratioLimitString = root.dict_find_string_value("qBt-ratioLimit");
|
||||||
if (ratioLimitString.empty())
|
if (ratioLimitString.empty())
|
||||||
torrentParams.ratioLimit = root.dict_find_int_value("qBt-ratioLimit", TorrentHandle::USE_GLOBAL_RATIO * 1000) / 1000.0;
|
torrentParams.ratioLimit = root.dict_find_int_value("qBt-ratioLimit", Torrent::USE_GLOBAL_RATIO * 1000) / 1000.0;
|
||||||
else
|
else
|
||||||
torrentParams.ratioLimit = fromLTString(ratioLimitString).toDouble();
|
torrentParams.ratioLimit = fromLTString(ratioLimitString).toDouble();
|
||||||
|
|
||||||
|
@ -4546,7 +4546,7 @@ void Session::handleAlert(const lt::alert *a)
|
||||||
|
|
||||||
void Session::dispatchTorrentAlert(const lt::alert *a)
|
void Session::dispatchTorrentAlert(const lt::alert *a)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(static_cast<const lt::torrent_alert*>(a)->handle.info_hash());
|
TorrentImpl *const torrent = m_torrents.value(static_cast<const lt::torrent_alert*>(a)->handle.info_hash());
|
||||||
if (torrent)
|
if (torrent)
|
||||||
{
|
{
|
||||||
torrent->handleAlert(a);
|
torrent->handleAlert(a);
|
||||||
|
@ -4561,13 +4561,13 @@ void Session::dispatchTorrentAlert(const lt::alert *a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::createTorrentHandle(const lt::torrent_handle &nativeHandle)
|
void Session::createTorrent(const lt::torrent_handle &nativeHandle)
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_loadingTorrents.contains(nativeHandle.info_hash()));
|
Q_ASSERT(m_loadingTorrents.contains(nativeHandle.info_hash()));
|
||||||
|
|
||||||
const LoadTorrentParams params = m_loadingTorrents.take(nativeHandle.info_hash());
|
const LoadTorrentParams params = m_loadingTorrents.take(nativeHandle.info_hash());
|
||||||
|
|
||||||
auto *const torrent = new TorrentHandleImpl {this, m_nativeSession, nativeHandle, params};
|
auto *const torrent = new TorrentImpl {this, m_nativeSession, nativeHandle, params};
|
||||||
m_torrents.insert(torrent->hash(), torrent);
|
m_torrents.insert(torrent->hash(), torrent);
|
||||||
|
|
||||||
const bool hasMetadata = torrent->hasMetadata();
|
const bool hasMetadata = torrent->hasMetadata();
|
||||||
|
@ -4635,7 +4635,7 @@ void Session::handleAddTorrentAlert(const lt::add_torrent_alert *p)
|
||||||
}
|
}
|
||||||
else if (m_loadingTorrents.contains(p->handle.info_hash()))
|
else if (m_loadingTorrents.contains(p->handle.info_hash()))
|
||||||
{
|
{
|
||||||
createTorrentHandle(p->handle);
|
createTorrent(p->handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4646,7 +4646,7 @@ void Session::handleTorrentRemovedAlert(const lt::torrent_removed_alert *p)
|
||||||
const auto removingTorrentDataIter = m_removingTorrents.find(infoHash);
|
const auto removingTorrentDataIter = m_removingTorrents.find(infoHash);
|
||||||
if (removingTorrentDataIter != m_removingTorrents.end())
|
if (removingTorrentDataIter != m_removingTorrents.end())
|
||||||
{
|
{
|
||||||
if (removingTorrentDataIter->deleteOption == Torrent)
|
if (removingTorrentDataIter->deleteOption == DeleteTorrent)
|
||||||
{
|
{
|
||||||
LogMsg(tr("'%1' was removed from the transfer list.", "'xxx.avi' was removed...").arg(removingTorrentDataIter->name));
|
LogMsg(tr("'%1' was removed from the transfer list.", "'xxx.avi' was removed...").arg(removingTorrentDataIter->name));
|
||||||
m_removingTorrents.erase(removingTorrentDataIter);
|
m_removingTorrents.erase(removingTorrentDataIter);
|
||||||
|
@ -4712,7 +4712,7 @@ void Session::handleMetadataReceivedAlert(const lt::metadata_received_alert *p)
|
||||||
|
|
||||||
void Session::handleFileErrorAlert(const lt::file_error_alert *p)
|
void Session::handleFileErrorAlert(const lt::file_error_alert *p)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(p->handle.info_hash());
|
TorrentImpl *const torrent = m_torrents.value(p->handle.info_hash());
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -4782,7 +4782,7 @@ void Session::handlePeerBanAlert(const lt::peer_ban_alert *p)
|
||||||
|
|
||||||
void Session::handleUrlSeedAlert(const lt::url_seed_alert *p)
|
void Session::handleUrlSeedAlert(const lt::url_seed_alert *p)
|
||||||
{
|
{
|
||||||
const TorrentHandleImpl *torrent = m_torrents.value(p->handle.info_hash());
|
const TorrentImpl *torrent = m_torrents.value(p->handle.info_hash());
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -4920,7 +4920,7 @@ void Session::handleStorageMovedAlert(const lt::storage_moved_alert *p)
|
||||||
Q_ASSERT(newPath == currentJob.path);
|
Q_ASSERT(newPath == currentJob.path);
|
||||||
|
|
||||||
const InfoHash infoHash = currentJob.torrentHandle.info_hash();
|
const InfoHash infoHash = currentJob.torrentHandle.info_hash();
|
||||||
TorrentHandleImpl *torrent = m_torrents.value(infoHash);
|
TorrentImpl *torrent = m_torrents.value(infoHash);
|
||||||
const QString torrentName = (torrent ? torrent->name() : QString {infoHash});
|
const QString torrentName = (torrent ? torrent->name() : QString {infoHash});
|
||||||
LogMsg(tr("\"%1\" is successfully moved to \"%2\".").arg(torrentName, newPath));
|
LogMsg(tr("\"%1\" is successfully moved to \"%2\".").arg(torrentName, newPath));
|
||||||
|
|
||||||
|
@ -4935,7 +4935,7 @@ void Session::handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert
|
||||||
Q_ASSERT(currentJob.torrentHandle == p->handle);
|
Q_ASSERT(currentJob.torrentHandle == p->handle);
|
||||||
|
|
||||||
const InfoHash infoHash = currentJob.torrentHandle.info_hash();
|
const InfoHash infoHash = currentJob.torrentHandle.info_hash();
|
||||||
TorrentHandleImpl *torrent = m_torrents.value(infoHash);
|
TorrentImpl *torrent = m_torrents.value(infoHash);
|
||||||
const QString torrentName = (torrent ? torrent->name() : QString {infoHash});
|
const QString torrentName = (torrent ? torrent->name() : QString {infoHash});
|
||||||
const QString currentLocation = QString::fromStdString(p->handle.status(lt::torrent_handle::query_save_path).save_path);
|
const QString currentLocation = QString::fromStdString(p->handle.status(lt::torrent_handle::query_save_path).save_path);
|
||||||
const QString errorMessage = QString::fromStdString(p->message());
|
const QString errorMessage = QString::fromStdString(p->message());
|
||||||
|
@ -4947,12 +4947,12 @@ void Session::handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert
|
||||||
|
|
||||||
void Session::handleStateUpdateAlert(const lt::state_update_alert *p)
|
void Session::handleStateUpdateAlert(const lt::state_update_alert *p)
|
||||||
{
|
{
|
||||||
QVector<TorrentHandle *> updatedTorrents;
|
QVector<Torrent *> updatedTorrents;
|
||||||
updatedTorrents.reserve(p->status.size());
|
updatedTorrents.reserve(p->status.size());
|
||||||
|
|
||||||
for (const lt::torrent_status &status : p->status)
|
for (const lt::torrent_status &status : p->status)
|
||||||
{
|
{
|
||||||
TorrentHandleImpl *const torrent = m_torrents.value(status.info_hash);
|
TorrentImpl *const torrent = m_torrents.value(status.info_hash);
|
||||||
|
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -85,8 +85,8 @@ enum MaxRatioAction
|
||||||
|
|
||||||
enum DeleteOption
|
enum DeleteOption
|
||||||
{
|
{
|
||||||
Torrent,
|
DeleteTorrent,
|
||||||
TorrentAndFiles
|
DeleteTorrentAndFiles
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TorrentExportFolder
|
enum TorrentExportFolder
|
||||||
|
@ -104,8 +104,8 @@ namespace BitTorrent
|
||||||
{
|
{
|
||||||
class InfoHash;
|
class InfoHash;
|
||||||
class MagnetUri;
|
class MagnetUri;
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
class TorrentHandleImpl;
|
class TorrentImpl;
|
||||||
class Tracker;
|
class Tracker;
|
||||||
class TrackerEntry;
|
class TrackerEntry;
|
||||||
struct LoadTorrentParams;
|
struct LoadTorrentParams;
|
||||||
|
@ -440,8 +440,8 @@ namespace BitTorrent
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void startUpTorrents();
|
void startUpTorrents();
|
||||||
TorrentHandle *findTorrent(const InfoHash &hash) const;
|
Torrent *findTorrent(const InfoHash &hash) const;
|
||||||
QVector<TorrentHandle *> torrents() const;
|
QVector<Torrent *> torrents() const;
|
||||||
bool hasActiveTorrents() const;
|
bool hasActiveTorrents() const;
|
||||||
bool hasUnfinishedTorrents() const;
|
bool hasUnfinishedTorrents() const;
|
||||||
bool hasRunningSeed() const;
|
bool hasRunningSeed() const;
|
||||||
|
@ -460,7 +460,7 @@ namespace BitTorrent
|
||||||
bool addTorrent(const QString &source, const AddTorrentParams ¶ms = AddTorrentParams());
|
bool addTorrent(const QString &source, const AddTorrentParams ¶ms = AddTorrentParams());
|
||||||
bool addTorrent(const MagnetUri &magnetUri, const AddTorrentParams ¶ms = AddTorrentParams());
|
bool addTorrent(const MagnetUri &magnetUri, const AddTorrentParams ¶ms = AddTorrentParams());
|
||||||
bool addTorrent(const TorrentInfo &torrentInfo, const AddTorrentParams ¶ms = AddTorrentParams());
|
bool addTorrent(const TorrentInfo &torrentInfo, const AddTorrentParams ¶ms = AddTorrentParams());
|
||||||
bool deleteTorrent(const InfoHash &hash, DeleteOption deleteOption = Torrent);
|
bool deleteTorrent(const InfoHash &hash, DeleteOption deleteOption = DeleteTorrent);
|
||||||
bool downloadMetadata(const MagnetUri &magnetUri);
|
bool downloadMetadata(const MagnetUri &magnetUri);
|
||||||
bool cancelDownloadMetadata(const InfoHash &hash);
|
bool cancelDownloadMetadata(const InfoHash &hash);
|
||||||
|
|
||||||
|
@ -470,31 +470,31 @@ namespace BitTorrent
|
||||||
void topTorrentsQueuePos(const QVector<InfoHash> &hashes);
|
void topTorrentsQueuePos(const QVector<InfoHash> &hashes);
|
||||||
void bottomTorrentsQueuePos(const QVector<InfoHash> &hashes);
|
void bottomTorrentsQueuePos(const QVector<InfoHash> &hashes);
|
||||||
|
|
||||||
// TorrentHandle interface
|
// Torrent interface
|
||||||
void handleTorrentSaveResumeDataRequested(const TorrentHandleImpl *torrent);
|
void handleTorrentSaveResumeDataRequested(const TorrentImpl *torrent);
|
||||||
void handleTorrentShareLimitChanged(TorrentHandleImpl *const torrent);
|
void handleTorrentShareLimitChanged(TorrentImpl *const torrent);
|
||||||
void handleTorrentNameChanged(TorrentHandleImpl *const torrent);
|
void handleTorrentNameChanged(TorrentImpl *const torrent);
|
||||||
void handleTorrentSavePathChanged(TorrentHandleImpl *const torrent);
|
void handleTorrentSavePathChanged(TorrentImpl *const torrent);
|
||||||
void handleTorrentCategoryChanged(TorrentHandleImpl *const torrent, const QString &oldCategory);
|
void handleTorrentCategoryChanged(TorrentImpl *const torrent, const QString &oldCategory);
|
||||||
void handleTorrentTagAdded(TorrentHandleImpl *const torrent, const QString &tag);
|
void handleTorrentTagAdded(TorrentImpl *const torrent, const QString &tag);
|
||||||
void handleTorrentTagRemoved(TorrentHandleImpl *const torrent, const QString &tag);
|
void handleTorrentTagRemoved(TorrentImpl *const torrent, const QString &tag);
|
||||||
void handleTorrentSavingModeChanged(TorrentHandleImpl *const torrent);
|
void handleTorrentSavingModeChanged(TorrentImpl *const torrent);
|
||||||
void handleTorrentMetadataReceived(TorrentHandleImpl *const torrent);
|
void handleTorrentMetadataReceived(TorrentImpl *const torrent);
|
||||||
void handleTorrentPaused(TorrentHandleImpl *const torrent);
|
void handleTorrentPaused(TorrentImpl *const torrent);
|
||||||
void handleTorrentResumed(TorrentHandleImpl *const torrent);
|
void handleTorrentResumed(TorrentImpl *const torrent);
|
||||||
void handleTorrentChecked(TorrentHandleImpl *const torrent);
|
void handleTorrentChecked(TorrentImpl *const torrent);
|
||||||
void handleTorrentFinished(TorrentHandleImpl *const torrent);
|
void handleTorrentFinished(TorrentImpl *const torrent);
|
||||||
void handleTorrentTrackersAdded(TorrentHandleImpl *const torrent, const QVector<TrackerEntry> &newTrackers);
|
void handleTorrentTrackersAdded(TorrentImpl *const torrent, const QVector<TrackerEntry> &newTrackers);
|
||||||
void handleTorrentTrackersRemoved(TorrentHandleImpl *const torrent, const QVector<TrackerEntry> &deletedTrackers);
|
void handleTorrentTrackersRemoved(TorrentImpl *const torrent, const QVector<TrackerEntry> &deletedTrackers);
|
||||||
void handleTorrentTrackersChanged(TorrentHandleImpl *const torrent);
|
void handleTorrentTrackersChanged(TorrentImpl *const torrent);
|
||||||
void handleTorrentUrlSeedsAdded(TorrentHandleImpl *const torrent, const QVector<QUrl> &newUrlSeeds);
|
void handleTorrentUrlSeedsAdded(TorrentImpl *const torrent, const QVector<QUrl> &newUrlSeeds);
|
||||||
void handleTorrentUrlSeedsRemoved(TorrentHandleImpl *const torrent, const QVector<QUrl> &urlSeeds);
|
void handleTorrentUrlSeedsRemoved(TorrentImpl *const torrent, const QVector<QUrl> &urlSeeds);
|
||||||
void handleTorrentResumeDataReady(TorrentHandleImpl *const torrent, const std::shared_ptr<lt::entry> &data);
|
void handleTorrentResumeDataReady(TorrentImpl *const torrent, const std::shared_ptr<lt::entry> &data);
|
||||||
void handleTorrentTrackerReply(TorrentHandleImpl *const torrent, const QString &trackerUrl);
|
void handleTorrentTrackerReply(TorrentImpl *const torrent, const QString &trackerUrl);
|
||||||
void handleTorrentTrackerWarning(TorrentHandleImpl *const torrent, const QString &trackerUrl);
|
void handleTorrentTrackerWarning(TorrentImpl *const torrent, const QString &trackerUrl);
|
||||||
void handleTorrentTrackerError(TorrentHandleImpl *const torrent, const QString &trackerUrl);
|
void handleTorrentTrackerError(TorrentImpl *const torrent, const QString &trackerUrl);
|
||||||
|
|
||||||
bool addMoveTorrentStorageJob(TorrentHandleImpl *torrent, const QString &newPath, MoveStorageMode mode);
|
bool addMoveTorrentStorageJob(TorrentImpl *torrent, const QString &newPath, MoveStorageMode mode);
|
||||||
|
|
||||||
void findIncompleteFiles(const TorrentInfo &torrentInfo, const QString &savePath) const;
|
void findIncompleteFiles(const TorrentInfo &torrentInfo, const QString &savePath) const;
|
||||||
|
|
||||||
|
@ -504,37 +504,37 @@ namespace BitTorrent
|
||||||
void categoryRemoved(const QString &categoryName);
|
void categoryRemoved(const QString &categoryName);
|
||||||
void downloadFromUrlFailed(const QString &url, const QString &reason);
|
void downloadFromUrlFailed(const QString &url, const QString &reason);
|
||||||
void downloadFromUrlFinished(const QString &url);
|
void downloadFromUrlFinished(const QString &url);
|
||||||
void fullDiskError(TorrentHandle *torrent, const QString &msg);
|
void fullDiskError(Torrent *torrent, const QString &msg);
|
||||||
void IPFilterParsed(bool error, int ruleCount);
|
void IPFilterParsed(bool error, int ruleCount);
|
||||||
void loadTorrentFailed(const QString &error);
|
void loadTorrentFailed(const QString &error);
|
||||||
void metadataDownloaded(const TorrentInfo &info);
|
void metadataDownloaded(const TorrentInfo &info);
|
||||||
void recursiveTorrentDownloadPossible(TorrentHandle *torrent);
|
void recursiveTorrentDownloadPossible(Torrent *torrent);
|
||||||
void speedLimitModeChanged(bool alternative);
|
void speedLimitModeChanged(bool alternative);
|
||||||
void statsUpdated();
|
void statsUpdated();
|
||||||
void subcategoriesSupportChanged();
|
void subcategoriesSupportChanged();
|
||||||
void tagAdded(const QString &tag);
|
void tagAdded(const QString &tag);
|
||||||
void tagRemoved(const QString &tag);
|
void tagRemoved(const QString &tag);
|
||||||
void torrentAboutToBeRemoved(TorrentHandle *torrent);
|
void torrentAboutToBeRemoved(Torrent *torrent);
|
||||||
void torrentAdded(TorrentHandle *torrent);
|
void torrentAdded(Torrent *torrent);
|
||||||
void torrentCategoryChanged(TorrentHandle *torrent, const QString &oldCategory);
|
void torrentCategoryChanged(Torrent *torrent, const QString &oldCategory);
|
||||||
void torrentFinished(TorrentHandle *torrent);
|
void torrentFinished(Torrent *torrent);
|
||||||
void torrentFinishedChecking(TorrentHandle *torrent);
|
void torrentFinishedChecking(Torrent *torrent);
|
||||||
void torrentLoaded(TorrentHandle *torrent);
|
void torrentLoaded(Torrent *torrent);
|
||||||
void torrentMetadataReceived(TorrentHandle *torrent);
|
void torrentMetadataReceived(Torrent *torrent);
|
||||||
void torrentPaused(TorrentHandle *torrent);
|
void torrentPaused(Torrent *torrent);
|
||||||
void torrentResumed(TorrentHandle *torrent);
|
void torrentResumed(Torrent *torrent);
|
||||||
void torrentSavePathChanged(TorrentHandle *torrent);
|
void torrentSavePathChanged(Torrent *torrent);
|
||||||
void torrentSavingModeChanged(TorrentHandle *torrent);
|
void torrentSavingModeChanged(Torrent *torrent);
|
||||||
void torrentsUpdated(const QVector<TorrentHandle *> &torrents);
|
void torrentsUpdated(const QVector<Torrent *> &torrents);
|
||||||
void torrentTagAdded(TorrentHandle *torrent, const QString &tag);
|
void torrentTagAdded(Torrent *torrent, const QString &tag);
|
||||||
void torrentTagRemoved(TorrentHandle *torrent, const QString &tag);
|
void torrentTagRemoved(Torrent *torrent, const QString &tag);
|
||||||
void trackerError(TorrentHandle *torrent, const QString &tracker);
|
void trackerError(Torrent *torrent, const QString &tracker);
|
||||||
void trackerlessStateChanged(TorrentHandle *torrent, bool trackerless);
|
void trackerlessStateChanged(Torrent *torrent, bool trackerless);
|
||||||
void trackersAdded(TorrentHandle *torrent, const QVector<TrackerEntry> &trackers);
|
void trackersAdded(Torrent *torrent, const QVector<TrackerEntry> &trackers);
|
||||||
void trackersChanged(TorrentHandle *torrent);
|
void trackersChanged(Torrent *torrent);
|
||||||
void trackersRemoved(TorrentHandle *torrent, const QVector<TrackerEntry> &trackers);
|
void trackersRemoved(Torrent *torrent, const QVector<TrackerEntry> &trackers);
|
||||||
void trackerSuccess(TorrentHandle *torrent, const QString &tracker);
|
void trackerSuccess(Torrent *torrent, const QString &tracker);
|
||||||
void trackerWarning(TorrentHandle *torrent, const QString &tracker);
|
void trackerWarning(Torrent *torrent, const QString &tracker);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void configureDeferred();
|
void configureDeferred();
|
||||||
|
@ -604,7 +604,7 @@ namespace BitTorrent
|
||||||
bool addTorrent_impl(const std::variant<MagnetUri, TorrentInfo> &source, const AddTorrentParams &addTorrentParams);
|
bool addTorrent_impl(const std::variant<MagnetUri, TorrentInfo> &source, const AddTorrentParams &addTorrentParams);
|
||||||
|
|
||||||
void updateSeedingLimitTimer();
|
void updateSeedingLimitTimer();
|
||||||
void exportTorrentFile(const TorrentHandle *torrent, TorrentExportFolder folder = TorrentExportFolder::Regular);
|
void exportTorrentFile(const Torrent *torrent, TorrentExportFolder folder = TorrentExportFolder::Regular);
|
||||||
|
|
||||||
void handleAlert(const lt::alert *a);
|
void handleAlert(const lt::alert *a);
|
||||||
void dispatchTorrentAlert(const lt::alert *a);
|
void dispatchTorrentAlert(const lt::alert *a);
|
||||||
|
@ -629,7 +629,7 @@ namespace BitTorrent
|
||||||
void handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert *p);
|
void handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert *p);
|
||||||
void handleSocks5Alert(const lt::socks5_alert *p) const;
|
void handleSocks5Alert(const lt::socks5_alert *p) const;
|
||||||
|
|
||||||
void createTorrentHandle(const lt::torrent_handle &nativeHandle);
|
void createTorrent(const lt::torrent_handle &nativeHandle);
|
||||||
|
|
||||||
void saveResumeData();
|
void saveResumeData();
|
||||||
void saveTorrentsQueue();
|
void saveTorrentsQueue();
|
||||||
|
@ -771,7 +771,7 @@ namespace BitTorrent
|
||||||
|
|
||||||
QSet<InfoHash> m_downloadedMetadata;
|
QSet<InfoHash> m_downloadedMetadata;
|
||||||
|
|
||||||
QHash<InfoHash, TorrentHandleImpl *> m_torrents;
|
QHash<InfoHash, TorrentImpl *> m_torrents;
|
||||||
QHash<InfoHash, LoadTorrentParams> m_loadingTorrents;
|
QHash<InfoHash, LoadTorrentParams> m_loadingTorrents;
|
||||||
QHash<QString, AddTorrentParams> m_downloadedTorrents;
|
QHash<QString, AddTorrentParams> m_downloadedTorrents;
|
||||||
QHash<InfoHash, RemovingTorrentData> m_removingTorrents;
|
QHash<InfoHash, RemovingTorrentData> m_removingTorrents;
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
* exception statement from your version.
|
* exception statement from your version.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "torrenthandle.h"
|
#include "torrent.h"
|
||||||
|
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
@ -40,33 +40,33 @@ namespace BitTorrent
|
||||||
return ::qHash(static_cast<std::underlying_type_t<TorrentState>>(key), seed);
|
return ::qHash(static_cast<std::underlying_type_t<TorrentState>>(key), seed);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TorrentHandle
|
// Torrent
|
||||||
|
|
||||||
const qreal TorrentHandle::USE_GLOBAL_RATIO = -2.;
|
const qreal Torrent::USE_GLOBAL_RATIO = -2.;
|
||||||
const qreal TorrentHandle::NO_RATIO_LIMIT = -1.;
|
const qreal Torrent::NO_RATIO_LIMIT = -1.;
|
||||||
|
|
||||||
const int TorrentHandle::USE_GLOBAL_SEEDING_TIME = -2;
|
const int Torrent::USE_GLOBAL_SEEDING_TIME = -2;
|
||||||
const int TorrentHandle::NO_SEEDING_TIME_LIMIT = -1;
|
const int Torrent::NO_SEEDING_TIME_LIMIT = -1;
|
||||||
|
|
||||||
const qreal TorrentHandle::MAX_RATIO = 9999.;
|
const qreal Torrent::MAX_RATIO = 9999.;
|
||||||
const int TorrentHandle::MAX_SEEDING_TIME = 525600;
|
const int Torrent::MAX_SEEDING_TIME = 525600;
|
||||||
|
|
||||||
bool TorrentHandle::isResumed() const
|
bool Torrent::isResumed() const
|
||||||
{
|
{
|
||||||
return !isPaused();
|
return !isPaused();
|
||||||
}
|
}
|
||||||
|
|
||||||
qlonglong TorrentHandle::remainingSize() const
|
qlonglong Torrent::remainingSize() const
|
||||||
{
|
{
|
||||||
return wantedSize() - completedSize();
|
return wantedSize() - completedSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentHandle::toggleSequentialDownload()
|
void Torrent::toggleSequentialDownload()
|
||||||
{
|
{
|
||||||
setSequentialDownload(!isSequentialDownload());
|
setSequentialDownload(!isSequentialDownload());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentHandle::toggleFirstLastPiecePriority()
|
void Torrent::toggleFirstLastPiecePriority()
|
||||||
{
|
{
|
||||||
setFirstLastPiecePriority(!hasFirstLastPiecePriority());
|
setFirstLastPiecePriority(!hasFirstLastPiecePriority());
|
||||||
}
|
}
|
|
@ -91,7 +91,7 @@ namespace BitTorrent
|
||||||
|
|
||||||
uint qHash(TorrentState key, uint seed);
|
uint qHash(TorrentState key, uint seed);
|
||||||
|
|
||||||
class TorrentHandle : public AbstractFileStorage
|
class Torrent : public AbstractFileStorage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static const qreal USE_GLOBAL_RATIO;
|
static const qreal USE_GLOBAL_RATIO;
|
||||||
|
@ -103,7 +103,7 @@ namespace BitTorrent
|
||||||
static const qreal MAX_RATIO;
|
static const qreal MAX_RATIO;
|
||||||
static const int MAX_SEEDING_TIME;
|
static const int MAX_SEEDING_TIME;
|
||||||
|
|
||||||
virtual ~TorrentHandle() = default;
|
virtual ~Torrent() = default;
|
||||||
|
|
||||||
virtual InfoHash hash() const = 0;
|
virtual InfoHash hash() const = 0;
|
||||||
virtual QString name() const = 0;
|
virtual QString name() const = 0;
|
File diff suppressed because it is too large
Load diff
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
#include "infohash.h"
|
#include "infohash.h"
|
||||||
#include "speedmonitor.h"
|
#include "speedmonitor.h"
|
||||||
#include "torrenthandle.h"
|
#include "torrent.h"
|
||||||
#include "torrentinfo.h"
|
#include "torrentinfo.h"
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
|
@ -69,8 +69,8 @@ namespace BitTorrent
|
||||||
bool paused = false;
|
bool paused = false;
|
||||||
|
|
||||||
|
|
||||||
qreal ratioLimit = TorrentHandle::USE_GLOBAL_RATIO;
|
qreal ratioLimit = Torrent::USE_GLOBAL_RATIO;
|
||||||
int seedingTimeLimit = TorrentHandle::USE_GLOBAL_SEEDING_TIME;
|
int seedingTimeLimit = Torrent::USE_GLOBAL_SEEDING_TIME;
|
||||||
|
|
||||||
bool restored = false; // is existing torrent job?
|
bool restored = false; // is existing torrent job?
|
||||||
};
|
};
|
||||||
|
@ -87,15 +87,15 @@ namespace BitTorrent
|
||||||
HandleMetadata
|
HandleMetadata
|
||||||
};
|
};
|
||||||
|
|
||||||
class TorrentHandleImpl final : public QObject, public TorrentHandle
|
class TorrentImpl final : public QObject, public Torrent
|
||||||
{
|
{
|
||||||
Q_DISABLE_COPY(TorrentHandleImpl)
|
Q_DISABLE_COPY(TorrentImpl)
|
||||||
Q_DECLARE_TR_FUNCTIONS(BitTorrent::TorrentHandleImpl)
|
Q_DECLARE_TR_FUNCTIONS(BitTorrent::TorrentImpl)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TorrentHandleImpl(Session *session, lt::session *nativeSession
|
TorrentImpl(Session *session, lt::session *nativeSession
|
||||||
, const lt::torrent_handle &nativeHandle, const LoadTorrentParams ¶ms);
|
, const lt::torrent_handle &nativeHandle, const LoadTorrentParams ¶ms);
|
||||||
~TorrentHandleImpl() override;
|
~TorrentImpl() override;
|
||||||
|
|
||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#include "torrentfilter.h"
|
#include "torrentfilter.h"
|
||||||
|
|
||||||
#include "bittorrent/infohash.h"
|
#include "bittorrent/infohash.h"
|
||||||
#include "bittorrent/torrenthandle.h"
|
#include "bittorrent/torrent.h"
|
||||||
|
|
||||||
const QString TorrentFilter::AnyCategory;
|
const QString TorrentFilter::AnyCategory;
|
||||||
const InfoHashSet TorrentFilter::AnyHash {{}};
|
const InfoHashSet TorrentFilter::AnyHash {{}};
|
||||||
|
@ -47,7 +47,7 @@ const TorrentFilter TorrentFilter::StalledUploadingTorrent(TorrentFilter::Stalle
|
||||||
const TorrentFilter TorrentFilter::StalledDownloadingTorrent(TorrentFilter::StalledDownloading);
|
const TorrentFilter TorrentFilter::StalledDownloadingTorrent(TorrentFilter::StalledDownloading);
|
||||||
const TorrentFilter TorrentFilter::ErroredTorrent(TorrentFilter::Errored);
|
const TorrentFilter TorrentFilter::ErroredTorrent(TorrentFilter::Errored);
|
||||||
|
|
||||||
using BitTorrent::TorrentHandle;
|
using BitTorrent::Torrent;
|
||||||
|
|
||||||
TorrentFilter::TorrentFilter(const Type type, const InfoHashSet &hashSet, const QString &category, const QString &tag)
|
TorrentFilter::TorrentFilter(const Type type, const InfoHashSet &hashSet, const QString &category, const QString &tag)
|
||||||
: m_type(type)
|
: m_type(type)
|
||||||
|
@ -146,14 +146,14 @@ bool TorrentFilter::setTag(const QString &tag)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentFilter::match(const TorrentHandle *const torrent) const
|
bool TorrentFilter::match(const Torrent *const torrent) const
|
||||||
{
|
{
|
||||||
if (!torrent) return false;
|
if (!torrent) return false;
|
||||||
|
|
||||||
return (matchState(torrent) && matchHash(torrent) && matchCategory(torrent) && matchTag(torrent));
|
return (matchState(torrent) && matchHash(torrent) && matchCategory(torrent) && matchTag(torrent));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentFilter::matchState(const BitTorrent::TorrentHandle *const torrent) const
|
bool TorrentFilter::matchState(const BitTorrent::Torrent *const torrent) const
|
||||||
{
|
{
|
||||||
switch (m_type)
|
switch (m_type)
|
||||||
{
|
{
|
||||||
|
@ -187,21 +187,21 @@ bool TorrentFilter::matchState(const BitTorrent::TorrentHandle *const torrent) c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentFilter::matchHash(const BitTorrent::TorrentHandle *const torrent) const
|
bool TorrentFilter::matchHash(const BitTorrent::Torrent *const torrent) const
|
||||||
{
|
{
|
||||||
if (m_hashSet == AnyHash) return true;
|
if (m_hashSet == AnyHash) return true;
|
||||||
|
|
||||||
return m_hashSet.contains(torrent->hash());
|
return m_hashSet.contains(torrent->hash());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentFilter::matchCategory(const BitTorrent::TorrentHandle *const torrent) const
|
bool TorrentFilter::matchCategory(const BitTorrent::Torrent *const torrent) const
|
||||||
{
|
{
|
||||||
if (m_category.isNull()) return true;
|
if (m_category.isNull()) return true;
|
||||||
|
|
||||||
return (torrent->belongsToCategory(m_category));
|
return (torrent->belongsToCategory(m_category));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentFilter::matchTag(const BitTorrent::TorrentHandle *const torrent) const
|
bool TorrentFilter::matchTag(const BitTorrent::Torrent *const torrent) const
|
||||||
{
|
{
|
||||||
// Empty tag is a special value to indicate we're filtering for untagged torrents.
|
// Empty tag is a special value to indicate we're filtering for untagged torrents.
|
||||||
if (m_tag.isNull()) return true;
|
if (m_tag.isNull()) return true;
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
using InfoHashSet = QSet<BitTorrent::InfoHash>;
|
using InfoHashSet = QSet<BitTorrent::InfoHash>;
|
||||||
|
@ -88,13 +88,13 @@ public:
|
||||||
bool setCategory(const QString &category);
|
bool setCategory(const QString &category);
|
||||||
bool setTag(const QString &tag);
|
bool setTag(const QString &tag);
|
||||||
|
|
||||||
bool match(const BitTorrent::TorrentHandle *torrent) const;
|
bool match(const BitTorrent::Torrent *torrent) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool matchState(const BitTorrent::TorrentHandle *torrent) const;
|
bool matchState(const BitTorrent::Torrent *torrent) const;
|
||||||
bool matchHash(const BitTorrent::TorrentHandle *torrent) const;
|
bool matchHash(const BitTorrent::Torrent *torrent) const;
|
||||||
bool matchCategory(const BitTorrent::TorrentHandle *torrent) const;
|
bool matchCategory(const BitTorrent::Torrent *torrent) const;
|
||||||
bool matchTag(const BitTorrent::TorrentHandle *torrent) const;
|
bool matchTag(const BitTorrent::Torrent *torrent) const;
|
||||||
|
|
||||||
Type m_type {All};
|
Type m_type {All};
|
||||||
QString m_category;
|
QString m_category;
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
#include "base/bittorrent/infohash.h"
|
#include "base/bittorrent/infohash.h"
|
||||||
#include "base/bittorrent/magneturi.h"
|
#include "base/bittorrent/magneturi.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/exceptions.h"
|
#include "base/exceptions.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/net/downloadmanager.h"
|
#include "base/net/downloadmanager.h"
|
||||||
|
@ -275,7 +275,7 @@ bool AddNewTorrentDialog::loadTorrentImpl()
|
||||||
// Prevent showing the dialog if download is already present
|
// Prevent showing the dialog if download is already present
|
||||||
if (BitTorrent::Session::instance()->isKnownTorrent(infoHash))
|
if (BitTorrent::Session::instance()->isKnownTorrent(infoHash))
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(infoHash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(infoHash);
|
||||||
if (torrent)
|
if (torrent)
|
||||||
{
|
{
|
||||||
if (torrent->isPrivate() || m_torrentInfo.isPrivate())
|
if (torrent->isPrivate() || m_torrentInfo.isPrivate())
|
||||||
|
@ -316,7 +316,7 @@ bool AddNewTorrentDialog::loadMagnet(const BitTorrent::MagnetUri &magnetUri)
|
||||||
// Prevent showing the dialog if download is already present
|
// Prevent showing the dialog if download is already present
|
||||||
if (BitTorrent::Session::instance()->isKnownTorrent(infoHash))
|
if (BitTorrent::Session::instance()->isKnownTorrent(infoHash))
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(infoHash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(infoHash);
|
||||||
if (torrent)
|
if (torrent)
|
||||||
{
|
{
|
||||||
if (torrent->isPrivate())
|
if (torrent->isPrivate())
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
|
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "uithememanager.h"
|
#include "uithememanager.h"
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ void CategoryFilterModel::categoryRemoved(const QString &categoryName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CategoryFilterModel::torrentAdded(BitTorrent::TorrentHandle *const torrent)
|
void CategoryFilterModel::torrentAdded(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
CategoryModelItem *item = findItem(torrent->category());
|
CategoryModelItem *item = findItem(torrent->category());
|
||||||
Q_ASSERT(item);
|
Q_ASSERT(item);
|
||||||
|
@ -345,7 +345,7 @@ void CategoryFilterModel::torrentAdded(BitTorrent::TorrentHandle *const torrent)
|
||||||
m_rootItem->childAt(0)->increaseTorrentsCount();
|
m_rootItem->childAt(0)->increaseTorrentsCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CategoryFilterModel::torrentAboutToBeRemoved(BitTorrent::TorrentHandle *const torrent)
|
void CategoryFilterModel::torrentAboutToBeRemoved(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
CategoryModelItem *item = findItem(torrent->category());
|
CategoryModelItem *item = findItem(torrent->category());
|
||||||
Q_ASSERT(item);
|
Q_ASSERT(item);
|
||||||
|
@ -354,7 +354,7 @@ void CategoryFilterModel::torrentAboutToBeRemoved(BitTorrent::TorrentHandle *con
|
||||||
m_rootItem->childAt(0)->decreaseTorrentsCount();
|
m_rootItem->childAt(0)->decreaseTorrentsCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CategoryFilterModel::torrentCategoryChanged(BitTorrent::TorrentHandle *const torrent, const QString &oldCategory)
|
void CategoryFilterModel::torrentCategoryChanged(BitTorrent::Torrent *const torrent, const QString &oldCategory)
|
||||||
{
|
{
|
||||||
QModelIndex i;
|
QModelIndex i;
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ void CategoryFilterModel::populate()
|
||||||
m_rootItem->addChild(UID_ALL, new CategoryModelItem(nullptr, tr("All"), torrents.count()));
|
m_rootItem->addChild(UID_ALL, new CategoryModelItem(nullptr, tr("All"), torrents.count()));
|
||||||
|
|
||||||
// Uncategorized torrents
|
// Uncategorized torrents
|
||||||
using Torrent = BitTorrent::TorrentHandle;
|
using Torrent = BitTorrent::Torrent;
|
||||||
m_rootItem->addChild(
|
m_rootItem->addChild(
|
||||||
UID_UNCATEGORIZED
|
UID_UNCATEGORIZED
|
||||||
, new CategoryModelItem(
|
, new CategoryModelItem(
|
||||||
|
@ -411,7 +411,7 @@ void CategoryFilterModel::populate()
|
||||||
, std::count_if(torrents.begin(), torrents.end()
|
, std::count_if(torrents.begin(), torrents.end()
|
||||||
, [](Torrent *torrent) { return torrent->category().isEmpty(); })));
|
, [](Torrent *torrent) { return torrent->category().isEmpty(); })));
|
||||||
|
|
||||||
using Torrent = BitTorrent::TorrentHandle;
|
using Torrent = BitTorrent::Torrent;
|
||||||
for (auto i = session->categories().cbegin(); i != session->categories().cend(); ++i)
|
for (auto i = session->categories().cbegin(); i != session->categories().cend(); ++i)
|
||||||
{
|
{
|
||||||
const QString &category = i.key();
|
const QString &category = i.key();
|
||||||
|
|
|
@ -36,7 +36,7 @@ class CategoryModelItem;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
class CategoryFilterModel final : public QAbstractItemModel
|
class CategoryFilterModel final : public QAbstractItemModel
|
||||||
|
@ -63,9 +63,9 @@ public:
|
||||||
private slots:
|
private slots:
|
||||||
void categoryAdded(const QString &categoryName);
|
void categoryAdded(const QString &categoryName);
|
||||||
void categoryRemoved(const QString &categoryName);
|
void categoryRemoved(const QString &categoryName);
|
||||||
void torrentAdded(BitTorrent::TorrentHandle *const torrent);
|
void torrentAdded(BitTorrent::Torrent *const torrent);
|
||||||
void torrentAboutToBeRemoved(BitTorrent::TorrentHandle *const torrent);
|
void torrentAboutToBeRemoved(BitTorrent::Torrent *const torrent);
|
||||||
void torrentCategoryChanged(BitTorrent::TorrentHandle *const torrent, const QString &oldCategory);
|
void torrentCategoryChanged(BitTorrent::Torrent *const torrent, const QString &oldCategory);
|
||||||
void subcategoriesSupportChanged();
|
void subcategoriesSupportChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
|
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/sessionstatus.h"
|
#include "base/bittorrent/sessionstatus.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/logger.h"
|
#include "base/logger.h"
|
||||||
#include "base/net/downloadmanager.h"
|
#include "base/net/downloadmanager.h"
|
||||||
|
@ -260,11 +260,11 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerlessStateChanged, m_transferListFiltersWidget, &TransferListFiltersWidget::changeTrackerless);
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerlessStateChanged, m_transferListFiltersWidget, &TransferListFiltersWidget::changeTrackerless);
|
||||||
|
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerSuccess
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerSuccess
|
||||||
, m_transferListFiltersWidget, qOverload<const BitTorrent::TorrentHandle *, const QString &>(&TransferListFiltersWidget::trackerSuccess));
|
, m_transferListFiltersWidget, qOverload<const BitTorrent::Torrent *, const QString &>(&TransferListFiltersWidget::trackerSuccess));
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerError
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerError
|
||||||
, m_transferListFiltersWidget, qOverload<const BitTorrent::TorrentHandle *, const QString &>(&TransferListFiltersWidget::trackerError));
|
, m_transferListFiltersWidget, qOverload<const BitTorrent::Torrent *, const QString &>(&TransferListFiltersWidget::trackerError));
|
||||||
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerWarning
|
connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerWarning
|
||||||
, m_transferListFiltersWidget, qOverload<const BitTorrent::TorrentHandle *, const QString &>(&TransferListFiltersWidget::trackerWarning));
|
, m_transferListFiltersWidget, qOverload<const BitTorrent::Torrent *, const QString &>(&TransferListFiltersWidget::trackerWarning));
|
||||||
|
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
// Increase top spacing to avoid tab overlapping
|
// Increase top spacing to avoid tab overlapping
|
||||||
|
@ -858,20 +858,20 @@ void MainWindow::addTorrentFailed(const QString &error) const
|
||||||
}
|
}
|
||||||
|
|
||||||
// called when a torrent was added
|
// called when a torrent was added
|
||||||
void MainWindow::torrentNew(BitTorrent::TorrentHandle *const torrent) const
|
void MainWindow::torrentNew(BitTorrent::Torrent *const torrent) const
|
||||||
{
|
{
|
||||||
if (isTorrentAddedNotificationsEnabled())
|
if (isTorrentAddedNotificationsEnabled())
|
||||||
showNotificationBaloon(tr("Torrent added"), tr("'%1' was added.", "e.g: xxx.avi was added.").arg(torrent->name()));
|
showNotificationBaloon(tr("Torrent added"), tr("'%1' was added.", "e.g: xxx.avi was added.").arg(torrent->name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// called when a torrent has finished
|
// called when a torrent has finished
|
||||||
void MainWindow::finishedTorrent(BitTorrent::TorrentHandle *const torrent) const
|
void MainWindow::finishedTorrent(BitTorrent::Torrent *const torrent) const
|
||||||
{
|
{
|
||||||
showNotificationBaloon(tr("Download completion"), tr("'%1' has finished downloading.", "e.g: xxx.avi has finished downloading.").arg(torrent->name()));
|
showNotificationBaloon(tr("Download completion"), tr("'%1' has finished downloading.", "e.g: xxx.avi has finished downloading.").arg(torrent->name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notification when disk is full
|
// Notification when disk is full
|
||||||
void MainWindow::fullDiskError(BitTorrent::TorrentHandle *const torrent, const QString &msg) const
|
void MainWindow::fullDiskError(BitTorrent::Torrent *const torrent, const QString &msg) const
|
||||||
{
|
{
|
||||||
showNotificationBaloon(tr("I/O Error", "i.e: Input/Output Error")
|
showNotificationBaloon(tr("I/O Error", "i.e: Input/Output Error")
|
||||||
, tr("An I/O error occurred for torrent '%1'.\n Reason: %2"
|
, tr("An I/O error occurred for torrent '%1'.\n Reason: %2"
|
||||||
|
@ -961,7 +961,7 @@ void MainWindow::displayExecutionLogTab()
|
||||||
|
|
||||||
// End of keyboard shortcuts slots
|
// End of keyboard shortcuts slots
|
||||||
|
|
||||||
void MainWindow::askRecursiveTorrentDownloadConfirmation(BitTorrent::TorrentHandle *const torrent)
|
void MainWindow::askRecursiveTorrentDownloadConfirmation(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
Preferences *const pref = Preferences::instance();
|
Preferences *const pref = Preferences::instance();
|
||||||
if (pref->recursiveDownloadDisabled()) return;
|
if (pref->recursiveDownloadDisabled()) return;
|
||||||
|
@ -1639,7 +1639,7 @@ void MainWindow::reloadSessionStats()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::reloadTorrentStats(const QVector<BitTorrent::TorrentHandle *> &torrents)
|
void MainWindow::reloadTorrentStats(const QVector<BitTorrent::Torrent *> &torrents)
|
||||||
{
|
{
|
||||||
if (currentTabWidget() == m_transferListWidget)
|
if (currentTabWidget() == m_transferListWidget)
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,7 +58,7 @@ class TransferListWidget;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Net
|
namespace Net
|
||||||
|
@ -110,7 +110,7 @@ private slots:
|
||||||
void balloonClicked();
|
void balloonClicked();
|
||||||
void writeSettings();
|
void writeSettings();
|
||||||
void readSettings();
|
void readSettings();
|
||||||
void fullDiskError(BitTorrent::TorrentHandle *const torrent, const QString &msg) const;
|
void fullDiskError(BitTorrent::Torrent *const torrent, const QString &msg) const;
|
||||||
void handleDownloadFromUrlFailure(const QString &, const QString &) const;
|
void handleDownloadFromUrlFailure(const QString &, const QString &) const;
|
||||||
void tabChanged(int newTab);
|
void tabChanged(int newTab);
|
||||||
bool defineUILockPassword();
|
bool defineUILockPassword();
|
||||||
|
@ -127,12 +127,12 @@ private slots:
|
||||||
void displayExecutionLogTab();
|
void displayExecutionLogTab();
|
||||||
void focusSearchFilter();
|
void focusSearchFilter();
|
||||||
void reloadSessionStats();
|
void reloadSessionStats();
|
||||||
void reloadTorrentStats(const QVector<BitTorrent::TorrentHandle *> &torrents);
|
void reloadTorrentStats(const QVector<BitTorrent::Torrent *> &torrents);
|
||||||
void loadPreferences(bool configureSession = true);
|
void loadPreferences(bool configureSession = true);
|
||||||
void addTorrentFailed(const QString &error) const;
|
void addTorrentFailed(const QString &error) const;
|
||||||
void torrentNew(BitTorrent::TorrentHandle *const torrent) const;
|
void torrentNew(BitTorrent::Torrent *const torrent) const;
|
||||||
void finishedTorrent(BitTorrent::TorrentHandle *const torrent) const;
|
void finishedTorrent(BitTorrent::Torrent *const torrent) const;
|
||||||
void askRecursiveTorrentDownloadConfirmation(BitTorrent::TorrentHandle *const torrent);
|
void askRecursiveTorrentDownloadConfirmation(BitTorrent::Torrent *const torrent);
|
||||||
void optionsSaved();
|
void optionsSaved();
|
||||||
#if defined(Q_OS_WIN) || defined(Q_OS_MACOS)
|
#if defined(Q_OS_WIN) || defined(Q_OS_MACOS)
|
||||||
void handleUpdateCheckFinished(bool updateAvailable, QString newVersion, bool invokedByUser);
|
void handleUpdateCheckFinished(bool updateAvailable, QString newVersion, bool invokedByUser);
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
#include <QTableView>
|
#include <QTableView>
|
||||||
|
|
||||||
#include "base/bittorrent/common.h"
|
#include "base/bittorrent/common.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/preferences.h"
|
#include "base/preferences.h"
|
||||||
#include "base/utils/fs.h"
|
#include "base/utils/fs.h"
|
||||||
#include "base/utils/misc.h"
|
#include "base/utils/misc.h"
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
|
|
||||||
#define SETTINGS_KEY(name) "PreviewSelectDialog/" name
|
#define SETTINGS_KEY(name) "PreviewSelectDialog/" name
|
||||||
|
|
||||||
PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, const BitTorrent::TorrentHandle *torrent)
|
PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, const BitTorrent::Torrent *torrent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, m_ui(new Ui::PreviewSelectDialog)
|
, m_ui(new Ui::PreviewSelectDialog)
|
||||||
, m_torrent(torrent)
|
, m_torrent(torrent)
|
||||||
|
|
|
@ -36,7 +36,7 @@ class QStandardItemModel;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
|
@ -60,7 +60,7 @@ public:
|
||||||
NB_COLUMNS
|
NB_COLUMNS
|
||||||
};
|
};
|
||||||
|
|
||||||
PreviewSelectDialog(QWidget *parent, const BitTorrent::TorrentHandle *torrent);
|
PreviewSelectDialog(QWidget *parent, const BitTorrent::Torrent *torrent);
|
||||||
~PreviewSelectDialog();
|
~PreviewSelectDialog();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@ -78,7 +78,7 @@ private:
|
||||||
Ui::PreviewSelectDialog *m_ui;
|
Ui::PreviewSelectDialog *m_ui;
|
||||||
QStandardItemModel *m_previewListModel;
|
QStandardItemModel *m_previewListModel;
|
||||||
PreviewListDelegate *m_listDelegate;
|
PreviewListDelegate *m_listDelegate;
|
||||||
const BitTorrent::TorrentHandle *m_torrent;
|
const BitTorrent::Torrent *m_torrent;
|
||||||
bool m_headerStateInitialized = false;
|
bool m_headerStateInitialized = false;
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
#include "base/bittorrent/peeraddress.h"
|
#include "base/bittorrent/peeraddress.h"
|
||||||
#include "base/bittorrent/peerinfo.h"
|
#include "base/bittorrent/peerinfo.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/logger.h"
|
#include "base/logger.h"
|
||||||
#include "base/net/geoipmanager.h"
|
#include "base/net/geoipmanager.h"
|
||||||
|
@ -260,7 +260,7 @@ void PeerListWidget::updatePeerCountryResolutionState()
|
||||||
|
|
||||||
void PeerListWidget::showPeerListMenu(const QPoint &)
|
void PeerListWidget::showPeerListMenu(const QPoint &)
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *const torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
QMenu *menu = new QMenu(this);
|
QMenu *menu = new QMenu(this);
|
||||||
|
@ -370,7 +370,7 @@ void PeerListWidget::saveSettings() const
|
||||||
Preferences::instance()->setPeerListState(header()->saveState());
|
Preferences::instance()->setPeerListState(header()->saveState());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeerListWidget::loadPeers(const BitTorrent::TorrentHandle *torrent)
|
void PeerListWidget::loadPeers(const BitTorrent::Torrent *torrent)
|
||||||
{
|
{
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
|
@ -406,7 +406,7 @@ void PeerListWidget::loadPeers(const BitTorrent::TorrentHandle *torrent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeerListWidget::updatePeer(const BitTorrent::TorrentHandle *torrent, const BitTorrent::PeerInfo &peer, bool &isNewPeer)
|
void PeerListWidget::updatePeer(const BitTorrent::Torrent *torrent, const BitTorrent::PeerInfo &peer, bool &isNewPeer)
|
||||||
{
|
{
|
||||||
const PeerEndpoint peerEndpoint {peer.address(), peer.connectionType()};
|
const PeerEndpoint peerEndpoint {peer.address(), peer.connectionType()};
|
||||||
const QString peerIp = peerEndpoint.address.ip.toString();
|
const QString peerIp = peerEndpoint.address.ip.toString();
|
||||||
|
|
|
@ -43,7 +43,7 @@ struct PeerEndpoint;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
class PeerInfo;
|
class PeerInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ public:
|
||||||
explicit PeerListWidget(PropertiesWidget *parent);
|
explicit PeerListWidget(PropertiesWidget *parent);
|
||||||
~PeerListWidget() override;
|
~PeerListWidget() override;
|
||||||
|
|
||||||
void loadPeers(const BitTorrent::TorrentHandle *torrent);
|
void loadPeers(const BitTorrent::Torrent *torrent);
|
||||||
void updatePeerHostNameResolutionState();
|
void updatePeerHostNameResolutionState();
|
||||||
void updatePeerCountryResolutionState();
|
void updatePeerCountryResolutionState();
|
||||||
void clear();
|
void clear();
|
||||||
|
@ -96,7 +96,7 @@ private slots:
|
||||||
void handleResolved(const QHostAddress &ip, const QString &hostname) const;
|
void handleResolved(const QHostAddress &ip, const QString &hostname) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updatePeer(const BitTorrent::TorrentHandle *torrent, const BitTorrent::PeerInfo &peer, bool &isNewPeer);
|
void updatePeer(const BitTorrent::Torrent *torrent, const BitTorrent::PeerInfo &peer, bool &isNewPeer);
|
||||||
|
|
||||||
void wheelEvent(QWheelEvent *event) override;
|
void wheelEvent(QWheelEvent *event) override;
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include <QToolTip>
|
#include <QToolTip>
|
||||||
|
|
||||||
#include "base/indexrange.h"
|
#include "base/indexrange.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/torrentinfo.h"
|
#include "base/bittorrent/torrentinfo.h"
|
||||||
#include "base/utils/misc.h"
|
#include "base/utils/misc.h"
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ PiecesBar::PiecesBar(QWidget *parent)
|
||||||
setMouseTracking(true);
|
setMouseTracking(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PiecesBar::setTorrent(const BitTorrent::TorrentHandle *torrent)
|
void PiecesBar::setTorrent(const BitTorrent::Torrent *torrent)
|
||||||
{
|
{
|
||||||
m_torrent = torrent;
|
m_torrent = torrent;
|
||||||
if (!m_torrent)
|
if (!m_torrent)
|
||||||
|
|
|
@ -37,7 +37,7 @@ class QHelpEvent;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
class PiecesBar : public QWidget
|
class PiecesBar : public QWidget
|
||||||
|
@ -49,7 +49,7 @@ class PiecesBar : public QWidget
|
||||||
public:
|
public:
|
||||||
explicit PiecesBar(QWidget *parent = nullptr);
|
explicit PiecesBar(QWidget *parent = nullptr);
|
||||||
|
|
||||||
void setTorrent(const BitTorrent::TorrentHandle *torrent);
|
void setTorrent(const BitTorrent::Torrent *torrent);
|
||||||
|
|
||||||
virtual void clear();
|
virtual void clear();
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ private:
|
||||||
virtual bool updateImage(QImage &image) = 0;
|
virtual bool updateImage(QImage &image) = 0;
|
||||||
void updatePieceColors();
|
void updatePieceColors();
|
||||||
|
|
||||||
const BitTorrent::TorrentHandle *m_torrent;
|
const BitTorrent::Torrent *m_torrent;
|
||||||
QImage m_image;
|
QImage m_image;
|
||||||
// buffered 256 levels gradient from bg_color to piece_color
|
// buffered 256 levels gradient from bg_color to piece_color
|
||||||
QVector<QRgb> m_pieceColors;
|
QVector<QRgb> m_pieceColors;
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
#include "base/bittorrent/downloadpriority.h"
|
#include "base/bittorrent/downloadpriority.h"
|
||||||
#include "base/bittorrent/infohash.h"
|
#include "base/bittorrent/infohash.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/preferences.h"
|
#include "base/preferences.h"
|
||||||
#include "base/unicodestrings.h"
|
#include "base/unicodestrings.h"
|
||||||
#include "base/utils/fs.h"
|
#include "base/utils/fs.h"
|
||||||
|
@ -265,7 +265,7 @@ void PropertiesWidget::clear()
|
||||||
m_propListModel->model()->clear();
|
m_propListModel->model()->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *PropertiesWidget::getCurrentTorrent() const
|
BitTorrent::Torrent *PropertiesWidget::getCurrentTorrent() const
|
||||||
{
|
{
|
||||||
return m_torrent;
|
return m_torrent;
|
||||||
}
|
}
|
||||||
|
@ -285,25 +285,25 @@ QTreeView *PropertiesWidget::getFilesList() const
|
||||||
return m_ui->filesList;
|
return m_ui->filesList;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertiesWidget::updateSavePath(BitTorrent::TorrentHandle *const torrent)
|
void PropertiesWidget::updateSavePath(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
if (torrent == m_torrent)
|
if (torrent == m_torrent)
|
||||||
m_ui->labelSavePathVal->setText(Utils::Fs::toNativePath(m_torrent->savePath()));
|
m_ui->labelSavePathVal->setText(Utils::Fs::toNativePath(m_torrent->savePath()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertiesWidget::loadTrackers(BitTorrent::TorrentHandle *const torrent)
|
void PropertiesWidget::loadTrackers(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
if (torrent == m_torrent)
|
if (torrent == m_torrent)
|
||||||
m_trackerList->loadTrackers();
|
m_trackerList->loadTrackers();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertiesWidget::updateTorrentInfos(BitTorrent::TorrentHandle *const torrent)
|
void PropertiesWidget::updateTorrentInfos(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
if (torrent == m_torrent)
|
if (torrent == m_torrent)
|
||||||
loadTorrentInfos(m_torrent);
|
loadTorrentInfos(m_torrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertiesWidget::loadTorrentInfos(BitTorrent::TorrentHandle *const torrent)
|
void PropertiesWidget::loadTorrentInfos(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
m_torrent = torrent;
|
m_torrent = torrent;
|
||||||
|
@ -437,7 +437,7 @@ void PropertiesWidget::loadDynamicData()
|
||||||
|
|
||||||
// Update ratio info
|
// Update ratio info
|
||||||
const qreal ratio = m_torrent->realRatio();
|
const qreal ratio = m_torrent->realRatio();
|
||||||
m_ui->labelShareRatioVal->setText(ratio > BitTorrent::TorrentHandle::MAX_RATIO ? QString::fromUtf8(C_INFINITY) : Utils::String::fromDouble(ratio, 2));
|
m_ui->labelShareRatioVal->setText(ratio > BitTorrent::Torrent::MAX_RATIO ? QString::fromUtf8(C_INFINITY) : Utils::String::fromDouble(ratio, 2));
|
||||||
|
|
||||||
m_ui->labelSeedsVal->setText(tr("%1 (%2 total)", "%1 and %2 are numbers, e.g. 3 (10 total)")
|
m_ui->labelSeedsVal->setText(tr("%1 (%2 total)", "%1 and %2 are numbers, e.g. 3 (10 total)")
|
||||||
.arg(QString::number(m_torrent->seedsCount())
|
.arg(QString::number(m_torrent->seedsCount())
|
||||||
|
|
|
@ -45,7 +45,7 @@ class TrackerListWidget;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
|
@ -68,24 +68,24 @@ public:
|
||||||
explicit PropertiesWidget(QWidget *parent);
|
explicit PropertiesWidget(QWidget *parent);
|
||||||
~PropertiesWidget() override;
|
~PropertiesWidget() override;
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *getCurrentTorrent() const;
|
BitTorrent::Torrent *getCurrentTorrent() const;
|
||||||
TrackerListWidget *getTrackerList() const;
|
TrackerListWidget *getTrackerList() const;
|
||||||
PeerListWidget *getPeerList() const;
|
PeerListWidget *getPeerList() const;
|
||||||
QTreeView *getFilesList() const;
|
QTreeView *getFilesList() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setVisibility(bool visible);
|
void setVisibility(bool visible);
|
||||||
void loadTorrentInfos(BitTorrent::TorrentHandle *const torrent);
|
void loadTorrentInfos(BitTorrent::Torrent *const torrent);
|
||||||
void loadDynamicData();
|
void loadDynamicData();
|
||||||
void clear();
|
void clear();
|
||||||
void readSettings();
|
void readSettings();
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
void reloadPreferences();
|
void reloadPreferences();
|
||||||
void openItem(const QModelIndex &index) const;
|
void openItem(const QModelIndex &index) const;
|
||||||
void loadTrackers(BitTorrent::TorrentHandle *const torrent);
|
void loadTrackers(BitTorrent::Torrent *const torrent);
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void updateTorrentInfos(BitTorrent::TorrentHandle *const torrent);
|
void updateTorrentInfos(BitTorrent::Torrent *const torrent);
|
||||||
void loadUrlSeeds();
|
void loadUrlSeeds();
|
||||||
void askWebSeed();
|
void askWebSeed();
|
||||||
void deleteSelectedUrlSeeds();
|
void deleteSelectedUrlSeeds();
|
||||||
|
@ -101,7 +101,7 @@ protected slots:
|
||||||
private slots:
|
private slots:
|
||||||
void configure();
|
void configure();
|
||||||
void filterText(const QString &filter);
|
void filterText(const QString &filter);
|
||||||
void updateSavePath(BitTorrent::TorrentHandle *const torrent);
|
void updateSavePath(BitTorrent::Torrent *const torrent);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPushButton *getButtonFromIndex(int index);
|
QPushButton *getButtonFromIndex(int index);
|
||||||
|
@ -110,7 +110,7 @@ private:
|
||||||
QString getFullPath(const QModelIndex &index) const;
|
QString getFullPath(const QModelIndex &index) const;
|
||||||
|
|
||||||
Ui::PropertiesWidget *m_ui;
|
Ui::PropertiesWidget *m_ui;
|
||||||
BitTorrent::TorrentHandle *m_torrent;
|
BitTorrent::Torrent *m_torrent;
|
||||||
SlideState m_state;
|
SlideState m_state;
|
||||||
TorrentContentFilterModel *m_propListModel;
|
TorrentContentFilterModel *m_propListModel;
|
||||||
PropListDelegate *m_propListDelegate;
|
PropListDelegate *m_propListDelegate;
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "base/bittorrent/downloadpriority.h"
|
#include "base/bittorrent/downloadpriority.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "gui/torrentcontentmodel.h"
|
#include "gui/torrentcontentmodel.h"
|
||||||
#include "propertieswidget.h"
|
#include "propertieswidget.h"
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ QWidget *PropListDelegate::createEditor(QWidget *parent, const QStyleOptionViewI
|
||||||
|
|
||||||
if (m_properties)
|
if (m_properties)
|
||||||
{
|
{
|
||||||
const BitTorrent::TorrentHandle *torrent = m_properties->getCurrentTorrent();
|
const BitTorrent::Torrent *torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent || !torrent->hasMetadata() || torrent->isSeed())
|
if (!torrent || !torrent->hasMetadata() || torrent->isSeed())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
#include "base/bittorrent/peerinfo.h"
|
#include "base/bittorrent/peerinfo.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/trackerentry.h"
|
#include "base/bittorrent/trackerentry.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/preferences.h"
|
#include "base/preferences.h"
|
||||||
|
@ -172,7 +172,7 @@ void TrackerListWidget::setRowColor(const int row, const QColor &color)
|
||||||
|
|
||||||
void TrackerListWidget::moveSelectionUp()
|
void TrackerListWidget::moveSelectionUp()
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *const torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
|
@ -218,7 +218,7 @@ void TrackerListWidget::moveSelectionUp()
|
||||||
|
|
||||||
void TrackerListWidget::moveSelectionDown()
|
void TrackerListWidget::moveSelectionDown()
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *const torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
|
@ -281,7 +281,7 @@ void TrackerListWidget::clear()
|
||||||
m_LSDItem->setText(COL_MSG, "");
|
m_LSDItem->setText(COL_MSG, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackerListWidget::loadStickyItems(const BitTorrent::TorrentHandle *torrent)
|
void TrackerListWidget::loadStickyItems(const BitTorrent::Torrent *torrent)
|
||||||
{
|
{
|
||||||
const QString working {tr("Working")};
|
const QString working {tr("Working")};
|
||||||
const QString disabled {tr("Disabled")};
|
const QString disabled {tr("Disabled")};
|
||||||
|
@ -361,7 +361,7 @@ void TrackerListWidget::loadStickyItems(const BitTorrent::TorrentHandle *torrent
|
||||||
void TrackerListWidget::loadTrackers()
|
void TrackerListWidget::loadTrackers()
|
||||||
{
|
{
|
||||||
// Load trackers from torrent handle
|
// Load trackers from torrent handle
|
||||||
const BitTorrent::TorrentHandle *torrent = m_properties->getCurrentTorrent();
|
const BitTorrent::Torrent *torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
loadStickyItems(torrent);
|
loadStickyItems(torrent);
|
||||||
|
@ -438,7 +438,7 @@ void TrackerListWidget::loadTrackers()
|
||||||
// Ask the user for new trackers and add them to the torrent
|
// Ask the user for new trackers and add them to the torrent
|
||||||
void TrackerListWidget::askForTrackers()
|
void TrackerListWidget::askForTrackers()
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *const torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
QVector<BitTorrent::TrackerEntry> trackers;
|
QVector<BitTorrent::TrackerEntry> trackers;
|
||||||
|
@ -466,7 +466,7 @@ void TrackerListWidget::copyTrackerUrl()
|
||||||
|
|
||||||
void TrackerListWidget::deleteSelectedTrackers()
|
void TrackerListWidget::deleteSelectedTrackers()
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *const torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
|
@ -504,7 +504,7 @@ void TrackerListWidget::deleteSelectedTrackers()
|
||||||
|
|
||||||
void TrackerListWidget::editSelectedTracker()
|
void TrackerListWidget::editSelectedTracker()
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *const torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
const QVector<QTreeWidgetItem *> selectedTrackerItems = getSelectedTrackerItems();
|
const QVector<QTreeWidgetItem *> selectedTrackerItems = getSelectedTrackerItems();
|
||||||
|
@ -555,7 +555,7 @@ void TrackerListWidget::reannounceSelected()
|
||||||
const QList<QTreeWidgetItem *> selItems = selectedItems();
|
const QList<QTreeWidgetItem *> selItems = selectedItems();
|
||||||
if (selItems.isEmpty()) return;
|
if (selItems.isEmpty()) return;
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *const torrent = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *const torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
const QVector<BitTorrent::TrackerEntry> trackers = torrent->trackers();
|
const QVector<BitTorrent::TrackerEntry> trackers = torrent->trackers();
|
||||||
|
@ -585,7 +585,7 @@ void TrackerListWidget::reannounceSelected()
|
||||||
|
|
||||||
void TrackerListWidget::showTrackerListMenu(const QPoint &)
|
void TrackerListWidget::showTrackerListMenu(const QPoint &)
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *const torrent = m_properties->getCurrentTorrent();
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
QMenu *menu = new QMenu(this);
|
QMenu *menu = new QMenu(this);
|
||||||
|
@ -617,7 +617,7 @@ void TrackerListWidget::showTrackerListMenu(const QPoint &)
|
||||||
const QAction *reannounceAllAct = menu->addAction(UIThemeManager::instance()->getIcon("view-refresh"), tr("Force reannounce to all trackers"));
|
const QAction *reannounceAllAct = menu->addAction(UIThemeManager::instance()->getIcon("view-refresh"), tr("Force reannounce to all trackers"));
|
||||||
connect(reannounceAllAct, &QAction::triggered, this, [this]()
|
connect(reannounceAllAct, &QAction::triggered, this, [this]()
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *h = m_properties->getCurrentTorrent();
|
BitTorrent::Torrent *h = m_properties->getCurrentTorrent();
|
||||||
h->forceReannounce();
|
h->forceReannounce();
|
||||||
h->forceDHTAnnounce();
|
h->forceDHTAnnounce();
|
||||||
});
|
});
|
||||||
|
|
|
@ -35,7 +35,7 @@ class PropertiesWidget;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
class TrackerListWidget : public QTreeWidget
|
class TrackerListWidget : public QTreeWidget
|
||||||
|
@ -70,7 +70,7 @@ public slots:
|
||||||
void moveSelectionDown();
|
void moveSelectionDown();
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
void loadStickyItems(const BitTorrent::TorrentHandle *torrent);
|
void loadStickyItems(const BitTorrent::Torrent *torrent);
|
||||||
void loadTrackers();
|
void loadTrackers();
|
||||||
void askForTrackers();
|
void askForTrackers();
|
||||||
void copyTrackerUrl();
|
void copyTrackerUrl();
|
||||||
|
|
|
@ -32,14 +32,14 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/trackerentry.h"
|
#include "base/bittorrent/trackerentry.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/net/downloadmanager.h"
|
#include "base/net/downloadmanager.h"
|
||||||
#include "gui/uithememanager.h"
|
#include "gui/uithememanager.h"
|
||||||
#include "ui_trackersadditiondialog.h"
|
#include "ui_trackersadditiondialog.h"
|
||||||
|
|
||||||
TrackersAdditionDialog::TrackersAdditionDialog(QWidget *parent, BitTorrent::TorrentHandle *const torrent)
|
TrackersAdditionDialog::TrackersAdditionDialog(QWidget *parent, BitTorrent::Torrent *const torrent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, m_ui(new Ui::TrackersAdditionDialog())
|
, m_ui(new Ui::TrackersAdditionDialog())
|
||||||
, m_torrent(torrent)
|
, m_torrent(torrent)
|
||||||
|
@ -129,7 +129,7 @@ void TrackersAdditionDialog::torrentListDownloadFinished(const Net::DownloadResu
|
||||||
QMessageBox::information(this, tr("No change"), tr("No additional trackers were found."), QMessageBox::Ok);
|
QMessageBox::information(this, tr("No change"), tr("No additional trackers were found."), QMessageBox::Ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList TrackersAdditionDialog::askForTrackers(QWidget *parent, BitTorrent::TorrentHandle *const torrent)
|
QStringList TrackersAdditionDialog::askForTrackers(QWidget *parent, BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
QStringList trackers;
|
QStringList trackers;
|
||||||
TrackersAdditionDialog dlg(parent, torrent);
|
TrackersAdditionDialog dlg(parent, torrent);
|
||||||
|
|
|
@ -35,7 +35,7 @@ class QString;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Net
|
namespace Net
|
||||||
|
@ -53,11 +53,11 @@ class TrackersAdditionDialog : public QDialog
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TrackersAdditionDialog(QWidget *parent, BitTorrent::TorrentHandle *const torrent);
|
TrackersAdditionDialog(QWidget *parent, BitTorrent::Torrent *const torrent);
|
||||||
~TrackersAdditionDialog();
|
~TrackersAdditionDialog();
|
||||||
|
|
||||||
QStringList newTrackers() const;
|
QStringList newTrackers() const;
|
||||||
static QStringList askForTrackers(QWidget *parent, BitTorrent::TorrentHandle *const torrent);
|
static QStringList askForTrackers(QWidget *parent, BitTorrent::Torrent *const torrent);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void on_uTorrentListButton_clicked();
|
void on_uTorrentListButton_clicked();
|
||||||
|
@ -65,5 +65,5 @@ public slots:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::TrackersAdditionDialog *m_ui;
|
Ui::TrackersAdditionDialog *m_ui;
|
||||||
BitTorrent::TorrentHandle *const m_torrent;
|
BitTorrent::Torrent *const m_torrent;
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#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"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/utils/misc.h"
|
#include "base/utils/misc.h"
|
||||||
#include "base/utils/string.h"
|
#include "base/utils/string.h"
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "uithememanager.h"
|
#include "uithememanager.h"
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ void TagFilterModel::tagRemoved(const QString &tag)
|
||||||
endRemoveRows();
|
endRemoveRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagFilterModel::torrentTagAdded(BitTorrent::TorrentHandle *const torrent, const QString &tag)
|
void TagFilterModel::torrentTagAdded(BitTorrent::Torrent *const torrent, const QString &tag)
|
||||||
{
|
{
|
||||||
if (torrent->tags().count() == 1)
|
if (torrent->tags().count() == 1)
|
||||||
untaggedItem()->decreaseTorrentsCount();
|
untaggedItem()->decreaseTorrentsCount();
|
||||||
|
@ -217,7 +217,7 @@ void TagFilterModel::torrentTagAdded(BitTorrent::TorrentHandle *const torrent, c
|
||||||
emit dataChanged(i, i);
|
emit dataChanged(i, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagFilterModel::torrentTagRemoved(BitTorrent::TorrentHandle *const torrent, const QString &tag)
|
void TagFilterModel::torrentTagRemoved(BitTorrent::Torrent *const torrent, const QString &tag)
|
||||||
{
|
{
|
||||||
if (torrent->tags().empty())
|
if (torrent->tags().empty())
|
||||||
untaggedItem()->increaseTorrentsCount();
|
untaggedItem()->increaseTorrentsCount();
|
||||||
|
@ -232,7 +232,7 @@ void TagFilterModel::torrentTagRemoved(BitTorrent::TorrentHandle *const torrent,
|
||||||
emit dataChanged(i, i);
|
emit dataChanged(i, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagFilterModel::torrentAdded(BitTorrent::TorrentHandle *const torrent)
|
void TagFilterModel::torrentAdded(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
allTagsItem()->increaseTorrentsCount();
|
allTagsItem()->increaseTorrentsCount();
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ void TagFilterModel::torrentAdded(BitTorrent::TorrentHandle *const torrent)
|
||||||
item->increaseTorrentsCount();
|
item->increaseTorrentsCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagFilterModel::torrentAboutToBeRemoved(BitTorrent::TorrentHandle *const torrent)
|
void TagFilterModel::torrentAboutToBeRemoved(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
allTagsItem()->decreaseTorrentsCount();
|
allTagsItem()->decreaseTorrentsCount();
|
||||||
|
|
||||||
|
@ -266,7 +266,7 @@ QString TagFilterModel::tagDisplayName(const QString &tag)
|
||||||
|
|
||||||
void TagFilterModel::populate()
|
void TagFilterModel::populate()
|
||||||
{
|
{
|
||||||
using Torrent = BitTorrent::TorrentHandle;
|
using Torrent = BitTorrent::Torrent;
|
||||||
|
|
||||||
const auto *session = BitTorrent::Session::instance();
|
const auto *session = BitTorrent::Session::instance();
|
||||||
const auto torrents = session->torrents();
|
const auto torrents = session->torrents();
|
||||||
|
|
|
@ -37,7 +37,7 @@ class TagModelItem;
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
class TagFilterModel final : public QAbstractListModel
|
class TagFilterModel final : public QAbstractListModel
|
||||||
|
@ -62,10 +62,10 @@ public:
|
||||||
private slots:
|
private slots:
|
||||||
void tagAdded(const QString &tag);
|
void tagAdded(const QString &tag);
|
||||||
void tagRemoved(const QString &tag);
|
void tagRemoved(const QString &tag);
|
||||||
void torrentTagAdded(BitTorrent::TorrentHandle *const torrent, const QString &tag);
|
void torrentTagAdded(BitTorrent::Torrent *const torrent, const QString &tag);
|
||||||
void torrentTagRemoved(BitTorrent::TorrentHandle *const, const QString &tag);
|
void torrentTagRemoved(BitTorrent::Torrent *const, const QString &tag);
|
||||||
void torrentAdded(BitTorrent::TorrentHandle *const torrent);
|
void torrentAdded(BitTorrent::Torrent *const torrent);
|
||||||
void torrentAboutToBeRemoved(BitTorrent::TorrentHandle *const torrent);
|
void torrentAboutToBeRemoved(BitTorrent::Torrent *const torrent);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static QString tagDisplayName(const QString &tag);
|
static QString tagDisplayName(const QString &tag);
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#include "base/bittorrent/abstractfilestorage.h"
|
#include "base/bittorrent/abstractfilestorage.h"
|
||||||
#include "base/bittorrent/common.h"
|
#include "base/bittorrent/common.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/torrentinfo.h"
|
#include "base/bittorrent/torrentinfo.h"
|
||||||
#include "base/exceptions.h"
|
#include "base/exceptions.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class AbstractFileStorage;
|
class AbstractFileStorage;
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
class TorrentInfo;
|
class TorrentInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -246,8 +246,8 @@ void TorrentCreatorDialog::handleCreationSuccess(const QString &path, const QStr
|
||||||
params.skipChecking = true;
|
params.skipChecking = true;
|
||||||
if (m_ui->checkIgnoreShareLimits->isChecked())
|
if (m_ui->checkIgnoreShareLimits->isChecked())
|
||||||
{
|
{
|
||||||
params.ratioLimit = BitTorrent::TorrentHandle::NO_RATIO_LIMIT;
|
params.ratioLimit = BitTorrent::Torrent::NO_RATIO_LIMIT;
|
||||||
params.seedingTimeLimit = BitTorrent::TorrentHandle::NO_SEEDING_TIME_LIMIT;
|
params.seedingTimeLimit = BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT;
|
||||||
}
|
}
|
||||||
params.useAutoTMM = false; // otherwise if it is on by default, it will overwrite `savePath` to the default save path
|
params.useAutoTMM = false; // otherwise if it is on by default, it will overwrite `savePath` to the default save path
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
#include "base/bittorrent/infohash.h"
|
#include "base/bittorrent/infohash.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/unicodestrings.h"
|
#include "base/unicodestrings.h"
|
||||||
#include "ui_torrentoptionsdialog.h"
|
#include "ui_torrentoptionsdialog.h"
|
||||||
|
@ -53,7 +53,7 @@ namespace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector<BitTorrent::TorrentHandle *> &torrents)
|
TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector<BitTorrent::Torrent *> &torrents)
|
||||||
: QDialog {parent}
|
: QDialog {parent}
|
||||||
, m_ui {new Ui::TorrentOptionsDialog}
|
, m_ui {new Ui::TorrentOptionsDialog}
|
||||||
, m_storeDialogSize {SETTINGS_KEY("Size")}
|
, m_storeDialogSize {SETTINGS_KEY("Size")}
|
||||||
|
@ -76,7 +76,7 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector<BitTor
|
||||||
const bool isFirstTorrentLSDDisabled = torrents[0]->isLSDDisabled();
|
const bool isFirstTorrentLSDDisabled = torrents[0]->isLSDDisabled();
|
||||||
|
|
||||||
m_torrentHashes.reserve(torrents.size());
|
m_torrentHashes.reserve(torrents.size());
|
||||||
for (const BitTorrent::TorrentHandle *torrent : torrents)
|
for (const BitTorrent::Torrent *torrent : torrents)
|
||||||
{
|
{
|
||||||
m_torrentHashes << torrent->hash();
|
m_torrentHashes << torrent->hash();
|
||||||
if (allSameUpLimit)
|
if (allSameUpLimit)
|
||||||
|
@ -180,8 +180,8 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector<BitTor
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool useGlobalValue = allSameRatio && allSameSeedingTime
|
const bool useGlobalValue = allSameRatio && allSameSeedingTime
|
||||||
&& (firstTorrentRatio == BitTorrent::TorrentHandle::USE_GLOBAL_RATIO)
|
&& (firstTorrentRatio == BitTorrent::Torrent::USE_GLOBAL_RATIO)
|
||||||
&& (firstTorrentSeedingTime == BitTorrent::TorrentHandle::USE_GLOBAL_SEEDING_TIME);
|
&& (firstTorrentSeedingTime == BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME);
|
||||||
|
|
||||||
if (!allSameRatio || !allSameSeedingTime)
|
if (!allSameRatio || !allSameSeedingTime)
|
||||||
{
|
{
|
||||||
|
@ -193,8 +193,8 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector<BitTor
|
||||||
{
|
{
|
||||||
m_ui->radioUseGlobalShareLimits->setChecked(true);
|
m_ui->radioUseGlobalShareLimits->setChecked(true);
|
||||||
}
|
}
|
||||||
else if ((firstTorrentRatio == BitTorrent::TorrentHandle::NO_RATIO_LIMIT)
|
else if ((firstTorrentRatio == BitTorrent::Torrent::NO_RATIO_LIMIT)
|
||||||
&& (firstTorrentSeedingTime == BitTorrent::TorrentHandle::NO_SEEDING_TIME_LIMIT))
|
&& (firstTorrentSeedingTime == BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT))
|
||||||
{
|
{
|
||||||
m_ui->radioNoLimit->setChecked(true);
|
m_ui->radioNoLimit->setChecked(true);
|
||||||
}
|
}
|
||||||
|
@ -288,7 +288,7 @@ void TorrentOptionsDialog::accept()
|
||||||
const auto *session = BitTorrent::Session::instance();
|
const auto *session = BitTorrent::Session::instance();
|
||||||
for (const BitTorrent::InfoHash &hash : asConst(m_torrentHashes))
|
for (const BitTorrent::InfoHash &hash : asConst(m_torrentHashes))
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *torrent = session->findTorrent(hash);
|
BitTorrent::Torrent *torrent = session->findTorrent(hash);
|
||||||
if (!torrent) continue;
|
if (!torrent) continue;
|
||||||
|
|
||||||
if (m_initialValues.upSpeedLimit != m_ui->spinUploadLimit->value())
|
if (m_initialValues.upSpeedLimit != m_ui->spinUploadLimit->value())
|
||||||
|
@ -324,10 +324,10 @@ qreal TorrentOptionsDialog::getRatio() const
|
||||||
return MIXED_SHARE_LIMITS;
|
return MIXED_SHARE_LIMITS;
|
||||||
|
|
||||||
if (m_ui->radioUseGlobalShareLimits->isChecked())
|
if (m_ui->radioUseGlobalShareLimits->isChecked())
|
||||||
return BitTorrent::TorrentHandle::USE_GLOBAL_RATIO;
|
return BitTorrent::Torrent::USE_GLOBAL_RATIO;
|
||||||
|
|
||||||
if (m_ui->radioNoLimit->isChecked() || !m_ui->checkMaxRatio->isChecked())
|
if (m_ui->radioNoLimit->isChecked() || !m_ui->checkMaxRatio->isChecked())
|
||||||
return BitTorrent::TorrentHandle::NO_RATIO_LIMIT;
|
return BitTorrent::Torrent::NO_RATIO_LIMIT;
|
||||||
|
|
||||||
return m_ui->spinRatioLimit->value();
|
return m_ui->spinRatioLimit->value();
|
||||||
}
|
}
|
||||||
|
@ -338,10 +338,10 @@ int TorrentOptionsDialog::getSeedingTime() const
|
||||||
return MIXED_SHARE_LIMITS;
|
return MIXED_SHARE_LIMITS;
|
||||||
|
|
||||||
if (m_ui->radioUseGlobalShareLimits->isChecked())
|
if (m_ui->radioUseGlobalShareLimits->isChecked())
|
||||||
return BitTorrent::TorrentHandle::USE_GLOBAL_SEEDING_TIME;
|
return BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME;
|
||||||
|
|
||||||
if (m_ui->radioNoLimit->isChecked() || !m_ui->checkMaxTime->isChecked())
|
if (m_ui->radioNoLimit->isChecked() || !m_ui->checkMaxTime->isChecked())
|
||||||
return BitTorrent::TorrentHandle::NO_SEEDING_TIME_LIMIT;
|
return BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT;
|
||||||
|
|
||||||
return m_ui->spinTimeLimit->value();
|
return m_ui->spinTimeLimit->value();
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class InfoHash;
|
class InfoHash;
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
|
@ -49,7 +49,7 @@ class TorrentOptionsDialog final : public QDialog
|
||||||
Q_DISABLE_COPY(TorrentOptionsDialog)
|
Q_DISABLE_COPY(TorrentOptionsDialog)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit TorrentOptionsDialog(QWidget *parent, const QVector<BitTorrent::TorrentHandle *> &torrents);
|
explicit TorrentOptionsDialog(QWidget *parent, const QVector<BitTorrent::Torrent *> &torrents);
|
||||||
~TorrentOptionsDialog() override;
|
~TorrentOptionsDialog() override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
|
|
||||||
#include "base/bittorrent/infohash.h"
|
#include "base/bittorrent/infohash.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/trackerentry.h"
|
#include "base/bittorrent/trackerentry.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/logger.h"
|
#include "base/logger.h"
|
||||||
|
@ -240,8 +240,8 @@ void StatusFilterWidget::updateTorrentNumbers()
|
||||||
int nbStalledDownloading = 0;
|
int nbStalledDownloading = 0;
|
||||||
int nbErrored = 0;
|
int nbErrored = 0;
|
||||||
|
|
||||||
const QVector<BitTorrent::TorrentHandle *> torrents = BitTorrent::Session::instance()->torrents();
|
const QVector<BitTorrent::Torrent *> torrents = BitTorrent::Session::instance()->torrents();
|
||||||
for (const BitTorrent::TorrentHandle *torrent : torrents)
|
for (const BitTorrent::Torrent *torrent : torrents)
|
||||||
{
|
{
|
||||||
if (torrent->isDownloading())
|
if (torrent->isDownloading())
|
||||||
++nbDownloading;
|
++nbDownloading;
|
||||||
|
@ -288,9 +288,9 @@ void StatusFilterWidget::applyFilter(int row)
|
||||||
transferList->applyStatusFilter(row);
|
transferList->applyStatusFilter(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatusFilterWidget::handleNewTorrent(BitTorrent::TorrentHandle *const) {}
|
void StatusFilterWidget::handleNewTorrent(BitTorrent::Torrent *const) {}
|
||||||
|
|
||||||
void StatusFilterWidget::torrentAboutToBeDeleted(BitTorrent::TorrentHandle *const) {}
|
void StatusFilterWidget::torrentAboutToBeDeleted(BitTorrent::Torrent *const) {}
|
||||||
|
|
||||||
TrackerFiltersList::TrackerFiltersList(QWidget *parent, TransferListWidget *transferList, const bool downloadFavicon)
|
TrackerFiltersList::TrackerFiltersList(QWidget *parent, TransferListWidget *transferList, const bool downloadFavicon)
|
||||||
: BaseFilterWidget(parent, transferList)
|
: BaseFilterWidget(parent, transferList)
|
||||||
|
@ -577,7 +577,7 @@ void TrackerFiltersList::applyFilter(const int row)
|
||||||
transferList->applyTrackerFilter(getInfoHashes(row));
|
transferList->applyTrackerFilter(getInfoHashes(row));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackerFiltersList::handleNewTorrent(BitTorrent::TorrentHandle *const torrent)
|
void TrackerFiltersList::handleNewTorrent(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
const BitTorrent::InfoHash hash {torrent->hash()};
|
const BitTorrent::InfoHash hash {torrent->hash()};
|
||||||
const QVector<BitTorrent::TrackerEntry> trackers {torrent->trackers()};
|
const QVector<BitTorrent::TrackerEntry> trackers {torrent->trackers()};
|
||||||
|
@ -591,7 +591,7 @@ void TrackerFiltersList::handleNewTorrent(BitTorrent::TorrentHandle *const torre
|
||||||
item(ALL_ROW)->setText(tr("All (%1)", "this is for the tracker filter").arg(++m_totalTorrents));
|
item(ALL_ROW)->setText(tr("All (%1)", "this is for the tracker filter").arg(++m_totalTorrents));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackerFiltersList::torrentAboutToBeDeleted(BitTorrent::TorrentHandle *const torrent)
|
void TrackerFiltersList::torrentAboutToBeDeleted(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
const BitTorrent::InfoHash hash {torrent->hash()};
|
const BitTorrent::InfoHash hash {torrent->hash()};
|
||||||
const QVector<BitTorrent::TrackerEntry> trackers {torrent->trackers()};
|
const QVector<BitTorrent::TrackerEntry> trackers {torrent->trackers()};
|
||||||
|
@ -742,34 +742,34 @@ void TransferListFiltersWidget::setDownloadTrackerFavicon(bool value)
|
||||||
m_trackerFilters->setDownloadTrackerFavicon(value);
|
m_trackerFilters->setDownloadTrackerFavicon(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListFiltersWidget::addTrackers(const BitTorrent::TorrentHandle *torrent, const QVector<BitTorrent::TrackerEntry> &trackers)
|
void TransferListFiltersWidget::addTrackers(const BitTorrent::Torrent *torrent, const QVector<BitTorrent::TrackerEntry> &trackers)
|
||||||
{
|
{
|
||||||
for (const BitTorrent::TrackerEntry &tracker : trackers)
|
for (const BitTorrent::TrackerEntry &tracker : trackers)
|
||||||
m_trackerFilters->addItem(tracker.url(), torrent->hash());
|
m_trackerFilters->addItem(tracker.url(), torrent->hash());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListFiltersWidget::removeTrackers(const BitTorrent::TorrentHandle *torrent, const QVector<BitTorrent::TrackerEntry> &trackers)
|
void TransferListFiltersWidget::removeTrackers(const BitTorrent::Torrent *torrent, const QVector<BitTorrent::TrackerEntry> &trackers)
|
||||||
{
|
{
|
||||||
for (const BitTorrent::TrackerEntry &tracker : trackers)
|
for (const BitTorrent::TrackerEntry &tracker : trackers)
|
||||||
m_trackerFilters->removeItem(tracker.url(), torrent->hash());
|
m_trackerFilters->removeItem(tracker.url(), torrent->hash());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListFiltersWidget::changeTrackerless(const BitTorrent::TorrentHandle *torrent, const bool trackerless)
|
void TransferListFiltersWidget::changeTrackerless(const BitTorrent::Torrent *torrent, const bool trackerless)
|
||||||
{
|
{
|
||||||
m_trackerFilters->changeTrackerless(trackerless, torrent->hash());
|
m_trackerFilters->changeTrackerless(trackerless, torrent->hash());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListFiltersWidget::trackerSuccess(const BitTorrent::TorrentHandle *torrent, const QString &tracker)
|
void TransferListFiltersWidget::trackerSuccess(const BitTorrent::Torrent *torrent, const QString &tracker)
|
||||||
{
|
{
|
||||||
emit trackerSuccess(torrent->hash(), tracker);
|
emit trackerSuccess(torrent->hash(), tracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListFiltersWidget::trackerWarning(const BitTorrent::TorrentHandle *torrent, const QString &tracker)
|
void TransferListFiltersWidget::trackerWarning(const BitTorrent::Torrent *torrent, const QString &tracker)
|
||||||
{
|
{
|
||||||
emit trackerWarning(torrent->hash(), tracker);
|
emit trackerWarning(torrent->hash(), tracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListFiltersWidget::trackerError(const BitTorrent::TorrentHandle *torrent, const QString &tracker)
|
void TransferListFiltersWidget::trackerError(const BitTorrent::Torrent *torrent, const QString &tracker)
|
||||||
{
|
{
|
||||||
emit trackerError(torrent->hash(), tracker);
|
emit trackerError(torrent->hash(), tracker);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ class TransferListWidget;
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class InfoHash;
|
class InfoHash;
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
class TrackerEntry;
|
class TrackerEntry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,8 +69,8 @@ protected:
|
||||||
private slots:
|
private slots:
|
||||||
virtual void showMenu(const QPoint &) = 0;
|
virtual void showMenu(const QPoint &) = 0;
|
||||||
virtual void applyFilter(int row) = 0;
|
virtual void applyFilter(int row) = 0;
|
||||||
virtual void handleNewTorrent(BitTorrent::TorrentHandle *const) = 0;
|
virtual void handleNewTorrent(BitTorrent::Torrent *const) = 0;
|
||||||
virtual void torrentAboutToBeDeleted(BitTorrent::TorrentHandle *const) = 0;
|
virtual void torrentAboutToBeDeleted(BitTorrent::Torrent *const) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class StatusFilterWidget final : public BaseFilterWidget
|
class StatusFilterWidget final : public BaseFilterWidget
|
||||||
|
@ -90,8 +90,8 @@ private:
|
||||||
// No need to redeclare them here as slots.
|
// No need to redeclare them here as slots.
|
||||||
void showMenu(const QPoint &) override;
|
void showMenu(const QPoint &) override;
|
||||||
void applyFilter(int row) override;
|
void applyFilter(int row) override;
|
||||||
void handleNewTorrent(BitTorrent::TorrentHandle *const) override;
|
void handleNewTorrent(BitTorrent::Torrent *const) override;
|
||||||
void torrentAboutToBeDeleted(BitTorrent::TorrentHandle *const) override;
|
void torrentAboutToBeDeleted(BitTorrent::Torrent *const) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TrackerFiltersList final : public BaseFilterWidget
|
class TrackerFiltersList final : public BaseFilterWidget
|
||||||
|
@ -122,8 +122,8 @@ private:
|
||||||
// No need to redeclare them here as slots.
|
// No need to redeclare them here as slots.
|
||||||
void showMenu(const QPoint &) override;
|
void showMenu(const QPoint &) override;
|
||||||
void applyFilter(int row) override;
|
void applyFilter(int row) override;
|
||||||
void handleNewTorrent(BitTorrent::TorrentHandle *const torrent) override;
|
void handleNewTorrent(BitTorrent::Torrent *const torrent) override;
|
||||||
void torrentAboutToBeDeleted(BitTorrent::TorrentHandle *const torrent) override;
|
void torrentAboutToBeDeleted(BitTorrent::Torrent *const torrent) override;
|
||||||
QString trackerFromRow(int row) const;
|
QString trackerFromRow(int row) const;
|
||||||
int rowFromTracker(const QString &tracker) const;
|
int rowFromTracker(const QString &tracker) const;
|
||||||
QSet<BitTorrent::InfoHash> getInfoHashes(int row) const;
|
QSet<BitTorrent::InfoHash> getInfoHashes(int row) const;
|
||||||
|
@ -150,12 +150,12 @@ public:
|
||||||
void setDownloadTrackerFavicon(bool value);
|
void setDownloadTrackerFavicon(bool value);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void addTrackers(const BitTorrent::TorrentHandle *torrent, const QVector<BitTorrent::TrackerEntry> &trackers);
|
void addTrackers(const BitTorrent::Torrent *torrent, const QVector<BitTorrent::TrackerEntry> &trackers);
|
||||||
void removeTrackers(const BitTorrent::TorrentHandle *torrent, const QVector<BitTorrent::TrackerEntry> &trackers);
|
void removeTrackers(const BitTorrent::Torrent *torrent, const QVector<BitTorrent::TrackerEntry> &trackers);
|
||||||
void changeTrackerless(const BitTorrent::TorrentHandle *torrent, bool trackerless);
|
void changeTrackerless(const BitTorrent::Torrent *torrent, bool trackerless);
|
||||||
void trackerSuccess(const BitTorrent::TorrentHandle *torrent, const QString &tracker);
|
void trackerSuccess(const BitTorrent::Torrent *torrent, const QString &tracker);
|
||||||
void trackerWarning(const BitTorrent::TorrentHandle *torrent, const QString &tracker);
|
void trackerWarning(const BitTorrent::Torrent *torrent, const QString &tracker);
|
||||||
void trackerError(const BitTorrent::TorrentHandle *torrent, const QString &tracker);
|
void trackerError(const BitTorrent::Torrent *torrent, const QString &tracker);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void trackerSuccess(const BitTorrent::InfoHash &hash, const QString &tracker);
|
void trackerSuccess(const BitTorrent::InfoHash &hash, const QString &tracker);
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#include <QPalette>
|
#include <QPalette>
|
||||||
|
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/preferences.h"
|
#include "base/preferences.h"
|
||||||
#include "base/unicodestrings.h"
|
#include "base/unicodestrings.h"
|
||||||
|
@ -133,7 +133,7 @@ TransferListModel::TransferListModel(QObject *parent)
|
||||||
|
|
||||||
// Load the torrents
|
// Load the torrents
|
||||||
using namespace BitTorrent;
|
using namespace BitTorrent;
|
||||||
for (TorrentHandle *const torrent : asConst(Session::instance()->torrents()))
|
for (Torrent *const torrent : asConst(Session::instance()->torrents()))
|
||||||
addTorrent(torrent);
|
addTorrent(torrent);
|
||||||
|
|
||||||
// Listen for torrent changes
|
// Listen for torrent changes
|
||||||
|
@ -234,7 +234,7 @@ QVariant TransferListModel::headerData(int section, Qt::Orientation orientation,
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
QString TransferListModel::displayValue(const BitTorrent::TorrentHandle *torrent, const int column) const
|
QString TransferListModel::displayValue(const BitTorrent::Torrent *torrent, const int column) const
|
||||||
{
|
{
|
||||||
bool hideValues = false;
|
bool hideValues = false;
|
||||||
if (m_hideZeroValuesMode == HideZeroValuesMode::Always)
|
if (m_hideZeroValuesMode == HideZeroValuesMode::Always)
|
||||||
|
@ -276,7 +276,7 @@ QString TransferListModel::displayValue(const BitTorrent::TorrentHandle *torrent
|
||||||
if (hideValues && (value <= 0))
|
if (hideValues && (value <= 0))
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
return ((static_cast<int>(value) == -1) || (value > BitTorrent::TorrentHandle::MAX_RATIO))
|
return ((static_cast<int>(value) == -1) || (value > BitTorrent::Torrent::MAX_RATIO))
|
||||||
? QString::fromUtf8(C_INFINITY) : Utils::String::fromDouble(value, 2);
|
? QString::fromUtf8(C_INFINITY) : Utils::String::fromDouble(value, 2);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -399,7 +399,7 @@ QString TransferListModel::displayValue(const BitTorrent::TorrentHandle *torrent
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant TransferListModel::internalValue(const BitTorrent::TorrentHandle *torrent, const int column, const bool alt) const
|
QVariant TransferListModel::internalValue(const BitTorrent::Torrent *torrent, const int column, const bool alt) const
|
||||||
{
|
{
|
||||||
switch (column)
|
switch (column)
|
||||||
{
|
{
|
||||||
|
@ -474,7 +474,7 @@ QVariant TransferListModel::data(const QModelIndex &index, const int role) const
|
||||||
{
|
{
|
||||||
if (!index.isValid()) return {};
|
if (!index.isValid()) return {};
|
||||||
|
|
||||||
const BitTorrent::TorrentHandle *torrent = m_torrentList.value(index.row());
|
const BitTorrent::Torrent *torrent = m_torrentList.value(index.row());
|
||||||
if (!torrent) return {};
|
if (!torrent) return {};
|
||||||
|
|
||||||
switch (role)
|
switch (role)
|
||||||
|
@ -537,7 +537,7 @@ bool TransferListModel::setData(const QModelIndex &index, const QVariant &value,
|
||||||
{
|
{
|
||||||
if (!index.isValid() || (role != Qt::DisplayRole)) return false;
|
if (!index.isValid() || (role != Qt::DisplayRole)) return false;
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *const torrent = m_torrentList.value(index.row());
|
BitTorrent::Torrent *const torrent = m_torrentList.value(index.row());
|
||||||
if (!torrent) return false;
|
if (!torrent) return false;
|
||||||
|
|
||||||
// Category and Name columns can be edited
|
// Category and Name columns can be edited
|
||||||
|
@ -556,7 +556,7 @@ bool TransferListModel::setData(const QModelIndex &index, const QVariant &value,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListModel::addTorrent(BitTorrent::TorrentHandle *const torrent)
|
void TransferListModel::addTorrent(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
Q_ASSERT(!m_torrentMap.contains(torrent));
|
Q_ASSERT(!m_torrentMap.contains(torrent));
|
||||||
|
|
||||||
|
@ -576,14 +576,14 @@ Qt::ItemFlags TransferListModel::flags(const QModelIndex &index) const
|
||||||
return QAbstractListModel::flags(index) | Qt::ItemIsEditable;
|
return QAbstractListModel::flags(index) | Qt::ItemIsEditable;
|
||||||
}
|
}
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *TransferListModel::torrentHandle(const QModelIndex &index) const
|
BitTorrent::Torrent *TransferListModel::torrentHandle(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
if (!index.isValid()) return nullptr;
|
if (!index.isValid()) return nullptr;
|
||||||
|
|
||||||
return m_torrentList.value(index.row());
|
return m_torrentList.value(index.row());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListModel::handleTorrentAboutToBeRemoved(BitTorrent::TorrentHandle *const torrent)
|
void TransferListModel::handleTorrentAboutToBeRemoved(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
const int row = m_torrentMap.value(torrent, -1);
|
const int row = m_torrentMap.value(torrent, -1);
|
||||||
Q_ASSERT(row >= 0);
|
Q_ASSERT(row >= 0);
|
||||||
|
@ -599,7 +599,7 @@ void TransferListModel::handleTorrentAboutToBeRemoved(BitTorrent::TorrentHandle
|
||||||
endRemoveRows();
|
endRemoveRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListModel::handleTorrentStatusUpdated(BitTorrent::TorrentHandle *const torrent)
|
void TransferListModel::handleTorrentStatusUpdated(BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
const int row = m_torrentMap.value(torrent, -1);
|
const int row = m_torrentMap.value(torrent, -1);
|
||||||
Q_ASSERT(row >= 0);
|
Q_ASSERT(row >= 0);
|
||||||
|
@ -607,13 +607,13 @@ void TransferListModel::handleTorrentStatusUpdated(BitTorrent::TorrentHandle *co
|
||||||
emit dataChanged(index(row, 0), index(row, columnCount() - 1));
|
emit dataChanged(index(row, 0), index(row, columnCount() - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListModel::handleTorrentsUpdated(const QVector<BitTorrent::TorrentHandle *> &torrents)
|
void TransferListModel::handleTorrentsUpdated(const QVector<BitTorrent::Torrent *> &torrents)
|
||||||
{
|
{
|
||||||
const int columns = (columnCount() - 1);
|
const int columns = (columnCount() - 1);
|
||||||
|
|
||||||
if (torrents.size() <= (m_torrentList.size() * 0.5))
|
if (torrents.size() <= (m_torrentList.size() * 0.5))
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : torrents)
|
for (BitTorrent::Torrent *const torrent : torrents)
|
||||||
{
|
{
|
||||||
const int row = m_torrentMap.value(torrent, -1);
|
const int row = m_torrentMap.value(torrent, -1);
|
||||||
Q_ASSERT(row >= 0);
|
Q_ASSERT(row >= 0);
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
|
@ -99,21 +99,21 @@ public:
|
||||||
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
|
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
|
||||||
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *torrentHandle(const QModelIndex &index) const;
|
BitTorrent::Torrent *torrentHandle(const QModelIndex &index) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void addTorrent(BitTorrent::TorrentHandle *const torrent);
|
void addTorrent(BitTorrent::Torrent *const torrent);
|
||||||
void handleTorrentAboutToBeRemoved(BitTorrent::TorrentHandle *const torrent);
|
void handleTorrentAboutToBeRemoved(BitTorrent::Torrent *const torrent);
|
||||||
void handleTorrentStatusUpdated(BitTorrent::TorrentHandle *const torrent);
|
void handleTorrentStatusUpdated(BitTorrent::Torrent *const torrent);
|
||||||
void handleTorrentsUpdated(const QVector<BitTorrent::TorrentHandle *> &torrents);
|
void handleTorrentsUpdated(const QVector<BitTorrent::Torrent *> &torrents);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void configure();
|
void configure();
|
||||||
QString displayValue(const BitTorrent::TorrentHandle *torrent, int column) const;
|
QString displayValue(const BitTorrent::Torrent *torrent, int column) const;
|
||||||
QVariant internalValue(const BitTorrent::TorrentHandle *torrent, int column, bool alt = false) const;
|
QVariant internalValue(const BitTorrent::Torrent *torrent, int column, bool alt = false) const;
|
||||||
|
|
||||||
QList<BitTorrent::TorrentHandle *> m_torrentList; // maps row number to torrent handle
|
QList<BitTorrent::Torrent *> m_torrentList; // maps row number to torrent handle
|
||||||
QHash<BitTorrent::TorrentHandle *, int> m_torrentMap; // maps torrent handle to row number
|
QHash<BitTorrent::Torrent *, int> m_torrentMap; // maps torrent handle to row number
|
||||||
const QHash<BitTorrent::TorrentState, QString> m_statusStrings;
|
const QHash<BitTorrent::TorrentState, QString> m_statusStrings;
|
||||||
// row text colors
|
// row text colors
|
||||||
const QHash<BitTorrent::TorrentState, QColor> m_stateThemeColors;
|
const QHash<BitTorrent::TorrentState, QColor> m_stateThemeColors;
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
|
||||||
#include "base/bittorrent/infohash.h"
|
#include "base/bittorrent/infohash.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/types.h"
|
#include "base/types.h"
|
||||||
#include "base/utils/string.h"
|
#include "base/utils/string.h"
|
||||||
|
@ -292,7 +292,7 @@ bool TransferListSortModel::matchFilter(const int sourceRow, const QModelIndex &
|
||||||
const auto *model = qobject_cast<TransferListModel *>(sourceModel());
|
const auto *model = qobject_cast<TransferListModel *>(sourceModel());
|
||||||
if (!model) return false;
|
if (!model) return false;
|
||||||
|
|
||||||
const BitTorrent::TorrentHandle *torrent = model->torrentHandle(model->index(sourceRow, 0, sourceParent));
|
const BitTorrent::Torrent *torrent = model->torrentHandle(model->index(sourceRow, 0, sourceParent));
|
||||||
if (!torrent) return false;
|
if (!torrent) return false;
|
||||||
|
|
||||||
return m_filter.match(torrent);
|
return m_filter.match(torrent);
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
#include "base/bittorrent/infohash.h"
|
#include "base/bittorrent/infohash.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/trackerentry.h"
|
#include "base/bittorrent/trackerentry.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/logger.h"
|
#include "base/logger.h"
|
||||||
|
@ -77,16 +77,16 @@
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
QVector<BitTorrent::InfoHash> extractHashes(const QVector<BitTorrent::TorrentHandle *> &torrents)
|
QVector<BitTorrent::InfoHash> extractHashes(const QVector<BitTorrent::Torrent *> &torrents)
|
||||||
{
|
{
|
||||||
QVector<BitTorrent::InfoHash> hashes;
|
QVector<BitTorrent::InfoHash> hashes;
|
||||||
hashes.reserve(torrents.size());
|
hashes.reserve(torrents.size());
|
||||||
for (const BitTorrent::TorrentHandle *torrent : torrents)
|
for (const BitTorrent::Torrent *torrent : torrents)
|
||||||
hashes << torrent->hash();
|
hashes << torrent->hash();
|
||||||
return hashes;
|
return hashes;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool torrentContainsPreviewableFiles(const BitTorrent::TorrentHandle *const torrent)
|
bool torrentContainsPreviewableFiles(const BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
if (!torrent->hasMetadata())
|
if (!torrent->hasMetadata())
|
||||||
return false;
|
return false;
|
||||||
|
@ -100,7 +100,7 @@ namespace
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void openDestinationFolder(const BitTorrent::TorrentHandle *const torrent)
|
void openDestinationFolder(const BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
MacUtils::openFiles({torrent->contentPath(true)});
|
MacUtils::openFiles({torrent->contentPath(true)});
|
||||||
|
@ -112,11 +112,11 @@ namespace
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeTorrents(const QVector<BitTorrent::TorrentHandle *> &torrents, const bool isDeleteFileSelected)
|
void removeTorrents(const QVector<BitTorrent::Torrent *> &torrents, const bool isDeleteFileSelected)
|
||||||
{
|
{
|
||||||
auto *session = BitTorrent::Session::instance();
|
auto *session = BitTorrent::Session::instance();
|
||||||
const DeleteOption deleteOption = isDeleteFileSelected ? TorrentAndFiles : Torrent;
|
const DeleteOption deleteOption = isDeleteFileSelected ? DeleteTorrentAndFiles : DeleteTorrent;
|
||||||
for (const BitTorrent::TorrentHandle *torrent : torrents)
|
for (const BitTorrent::Torrent *torrent : torrents)
|
||||||
session->deleteTorrent(torrent->hash(), deleteOption);
|
session->deleteTorrent(torrent->hash(), deleteOption);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ void TransferListWidget::torrentDoubleClicked()
|
||||||
if ((selectedIndexes.size() != 1) || !selectedIndexes.first().isValid()) return;
|
if ((selectedIndexes.size() != 1) || !selectedIndexes.first().isValid()) return;
|
||||||
|
|
||||||
const QModelIndex index = m_listModel->index(mapToSource(selectedIndexes.first()).row());
|
const QModelIndex index = m_listModel->index(mapToSource(selectedIndexes.first()).row());
|
||||||
BitTorrent::TorrentHandle *const torrent = m_listModel->torrentHandle(index);
|
BitTorrent::Torrent *const torrent = m_listModel->torrentHandle(index);
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
int action;
|
int action;
|
||||||
|
@ -307,22 +307,22 @@ void TransferListWidget::torrentDoubleClicked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<BitTorrent::TorrentHandle *> TransferListWidget::getSelectedTorrents() const
|
QVector<BitTorrent::Torrent *> TransferListWidget::getSelectedTorrents() const
|
||||||
{
|
{
|
||||||
const QModelIndexList selectedRows = selectionModel()->selectedRows();
|
const QModelIndexList selectedRows = selectionModel()->selectedRows();
|
||||||
|
|
||||||
QVector<BitTorrent::TorrentHandle *> torrents;
|
QVector<BitTorrent::Torrent *> torrents;
|
||||||
torrents.reserve(selectedRows.size());
|
torrents.reserve(selectedRows.size());
|
||||||
for (const QModelIndex &index : selectedRows)
|
for (const QModelIndex &index : selectedRows)
|
||||||
torrents << m_listModel->torrentHandle(mapToSource(index));
|
torrents << m_listModel->torrentHandle(mapToSource(index));
|
||||||
return torrents;
|
return torrents;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<BitTorrent::TorrentHandle *> TransferListWidget::getVisibleTorrents() const
|
QVector<BitTorrent::Torrent *> TransferListWidget::getVisibleTorrents() const
|
||||||
{
|
{
|
||||||
const int visibleTorrentsCount = m_sortFilterModel->rowCount();
|
const int visibleTorrentsCount = m_sortFilterModel->rowCount();
|
||||||
|
|
||||||
QVector<BitTorrent::TorrentHandle *> torrents;
|
QVector<BitTorrent::Torrent *> torrents;
|
||||||
torrents.reserve(visibleTorrentsCount);
|
torrents.reserve(visibleTorrentsCount);
|
||||||
for (int i = 0; i < visibleTorrentsCount; ++i)
|
for (int i = 0; i < visibleTorrentsCount; ++i)
|
||||||
torrents << m_listModel->torrentHandle(mapToSource(m_sortFilterModel->index(i, 0)));
|
torrents << m_listModel->torrentHandle(mapToSource(m_sortFilterModel->index(i, 0)));
|
||||||
|
@ -331,7 +331,7 @@ QVector<BitTorrent::TorrentHandle *> TransferListWidget::getVisibleTorrents() co
|
||||||
|
|
||||||
void TransferListWidget::setSelectedTorrentsLocation()
|
void TransferListWidget::setSelectedTorrentsLocation()
|
||||||
{
|
{
|
||||||
const QVector<BitTorrent::TorrentHandle *> torrents = getSelectedTorrents();
|
const QVector<BitTorrent::Torrent *> torrents = getSelectedTorrents();
|
||||||
if (torrents.isEmpty()) return;
|
if (torrents.isEmpty()) return;
|
||||||
|
|
||||||
const QString oldLocation = torrents[0]->savePath();
|
const QString oldLocation = torrents[0]->savePath();
|
||||||
|
@ -340,49 +340,49 @@ void TransferListWidget::setSelectedTorrentsLocation()
|
||||||
if (newLocation.isEmpty() || !QDir(newLocation).exists()) return;
|
if (newLocation.isEmpty() || !QDir(newLocation).exists()) return;
|
||||||
|
|
||||||
// Actually move storage
|
// Actually move storage
|
||||||
for (BitTorrent::TorrentHandle *const torrent : torrents)
|
for (BitTorrent::Torrent *const torrent : torrents)
|
||||||
torrent->move(Utils::Fs::expandPathAbs(newLocation));
|
torrent->move(Utils::Fs::expandPathAbs(newLocation));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::pauseAllTorrents()
|
void TransferListWidget::pauseAllTorrents()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
||||||
torrent->pause();
|
torrent->pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::resumeAllTorrents()
|
void TransferListWidget::resumeAllTorrents()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
||||||
torrent->resume();
|
torrent->resume();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::startSelectedTorrents()
|
void TransferListWidget::startSelectedTorrents()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrent->resume();
|
torrent->resume();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::forceStartSelectedTorrents()
|
void TransferListWidget::forceStartSelectedTorrents()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrent->resume(BitTorrent::TorrentOperatingMode::Forced);
|
torrent->resume(BitTorrent::TorrentOperatingMode::Forced);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::startVisibleTorrents()
|
void TransferListWidget::startVisibleTorrents()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getVisibleTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getVisibleTorrents()))
|
||||||
torrent->resume();
|
torrent->resume();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::pauseSelectedTorrents()
|
void TransferListWidget::pauseSelectedTorrents()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrent->pause();
|
torrent->pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::pauseVisibleTorrents()
|
void TransferListWidget::pauseVisibleTorrents()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getVisibleTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getVisibleTorrents()))
|
||||||
torrent->pause();
|
torrent->pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ void TransferListWidget::deleteSelectedTorrents(const bool deleteLocalFiles)
|
||||||
{
|
{
|
||||||
if (m_mainWindow->currentTabWidget() != this) return;
|
if (m_mainWindow->currentTabWidget() != this) return;
|
||||||
|
|
||||||
const QVector<BitTorrent::TorrentHandle *> torrents = getSelectedTorrents();
|
const QVector<BitTorrent::Torrent *> torrents = getSelectedTorrents();
|
||||||
if (torrents.empty()) return;
|
if (torrents.empty()) return;
|
||||||
|
|
||||||
if (Preferences::instance()->confirmTorrentDeletion())
|
if (Preferences::instance()->confirmTorrentDeletion())
|
||||||
|
@ -423,7 +423,7 @@ void TransferListWidget::deleteSelectedTorrents(const bool deleteLocalFiles)
|
||||||
|
|
||||||
void TransferListWidget::deleteVisibleTorrents()
|
void TransferListWidget::deleteVisibleTorrents()
|
||||||
{
|
{
|
||||||
const QVector<BitTorrent::TorrentHandle *> torrents = getVisibleTorrents();
|
const QVector<BitTorrent::Torrent *> torrents = getVisibleTorrents();
|
||||||
if (torrents.empty()) return;
|
if (torrents.empty()) return;
|
||||||
|
|
||||||
if (Preferences::instance()->confirmTorrentDeletion())
|
if (Preferences::instance()->confirmTorrentDeletion())
|
||||||
|
@ -473,7 +473,7 @@ void TransferListWidget::bottomQueuePosSelectedTorrents()
|
||||||
void TransferListWidget::copySelectedMagnetURIs() const
|
void TransferListWidget::copySelectedMagnetURIs() const
|
||||||
{
|
{
|
||||||
QStringList magnetUris;
|
QStringList magnetUris;
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
magnetUris << torrent->createMagnetURI();
|
magnetUris << torrent->createMagnetURI();
|
||||||
|
|
||||||
qApp->clipboard()->setText(magnetUris.join('\n'));
|
qApp->clipboard()->setText(magnetUris.join('\n'));
|
||||||
|
@ -482,7 +482,7 @@ void TransferListWidget::copySelectedMagnetURIs() const
|
||||||
void TransferListWidget::copySelectedNames() const
|
void TransferListWidget::copySelectedNames() const
|
||||||
{
|
{
|
||||||
QStringList torrentNames;
|
QStringList torrentNames;
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrentNames << torrent->name();
|
torrentNames << torrent->name();
|
||||||
|
|
||||||
qApp->clipboard()->setText(torrentNames.join('\n'));
|
qApp->clipboard()->setText(torrentNames.join('\n'));
|
||||||
|
@ -491,7 +491,7 @@ void TransferListWidget::copySelectedNames() const
|
||||||
void TransferListWidget::copySelectedHashes() const
|
void TransferListWidget::copySelectedHashes() const
|
||||||
{
|
{
|
||||||
QStringList torrentHashes;
|
QStringList torrentHashes;
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrentHashes << torrent->hash();
|
torrentHashes << torrent->hash();
|
||||||
|
|
||||||
qApp->clipboard()->setText(torrentHashes.join('\n'));
|
qApp->clipboard()->setText(torrentHashes.join('\n'));
|
||||||
|
@ -510,14 +510,14 @@ void TransferListWidget::openSelectedTorrentsFolder() const
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
// On macOS you expect both the files and folders to be opened in their parent
|
// On macOS you expect both the files and folders to be opened in their parent
|
||||||
// folders prehilighted for opening, so we use a custom method.
|
// folders prehilighted for opening, so we use a custom method.
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
{
|
{
|
||||||
QString path = torrent->contentPath(true);
|
QString path = torrent->contentPath(true);
|
||||||
pathsList.insert(path);
|
pathsList.insert(path);
|
||||||
}
|
}
|
||||||
MacUtils::openFiles(pathsList);
|
MacUtils::openFiles(pathsList);
|
||||||
#else
|
#else
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
{
|
{
|
||||||
QString path = torrent->contentPath(true);
|
QString path = torrent->contentPath(true);
|
||||||
if (!pathsList.contains(path))
|
if (!pathsList.contains(path))
|
||||||
|
@ -534,7 +534,7 @@ void TransferListWidget::openSelectedTorrentsFolder() const
|
||||||
|
|
||||||
void TransferListWidget::previewSelectedTorrents()
|
void TransferListWidget::previewSelectedTorrents()
|
||||||
{
|
{
|
||||||
for (const BitTorrent::TorrentHandle *torrent : asConst(getSelectedTorrents()))
|
for (const BitTorrent::Torrent *torrent : asConst(getSelectedTorrents()))
|
||||||
{
|
{
|
||||||
if (torrentContainsPreviewableFiles(torrent))
|
if (torrentContainsPreviewableFiles(torrent))
|
||||||
{
|
{
|
||||||
|
@ -553,7 +553,7 @@ void TransferListWidget::previewSelectedTorrents()
|
||||||
|
|
||||||
void TransferListWidget::setTorrentOptions()
|
void TransferListWidget::setTorrentOptions()
|
||||||
{
|
{
|
||||||
const QVector<BitTorrent::TorrentHandle *> selectedTorrents = getSelectedTorrents();
|
const QVector<BitTorrent::Torrent *> selectedTorrents = getSelectedTorrents();
|
||||||
if (selectedTorrents.empty()) return;
|
if (selectedTorrents.empty()) return;
|
||||||
|
|
||||||
auto dialog = new TorrentOptionsDialog {this, selectedTorrents};
|
auto dialog = new TorrentOptionsDialog {this, selectedTorrents};
|
||||||
|
@ -569,13 +569,13 @@ void TransferListWidget::recheckSelectedTorrents()
|
||||||
if (ret != QMessageBox::Yes) return;
|
if (ret != QMessageBox::Yes) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrent->forceRecheck();
|
torrent->forceRecheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::reannounceSelectedTorrents()
|
void TransferListWidget::reannounceSelectedTorrents()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrent->forceReannounce();
|
torrent->forceReannounce();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,7 +627,7 @@ void TransferListWidget::displayDLHoSMenu(const QPoint&)
|
||||||
|
|
||||||
void TransferListWidget::setSelectedTorrentsSuperSeeding(const bool enabled) const
|
void TransferListWidget::setSelectedTorrentsSuperSeeding(const bool enabled) const
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
{
|
{
|
||||||
if (torrent->hasMetadata())
|
if (torrent->hasMetadata())
|
||||||
torrent->setSuperSeeding(enabled);
|
torrent->setSuperSeeding(enabled);
|
||||||
|
@ -636,19 +636,19 @@ void TransferListWidget::setSelectedTorrentsSuperSeeding(const bool enabled) con
|
||||||
|
|
||||||
void TransferListWidget::setSelectedTorrentsSequentialDownload(const bool enabled) const
|
void TransferListWidget::setSelectedTorrentsSequentialDownload(const bool enabled) const
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrent->setSequentialDownload(enabled);
|
torrent->setSequentialDownload(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::setSelectedFirstLastPiecePrio(const bool enabled) const
|
void TransferListWidget::setSelectedFirstLastPiecePrio(const bool enabled) const
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrent->setFirstLastPiecePriority(enabled);
|
torrent->setFirstLastPiecePriority(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::setSelectedAutoTMMEnabled(const bool enabled) const
|
void TransferListWidget::setSelectedAutoTMMEnabled(const bool enabled) const
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents()))
|
||||||
torrent->setAutoTMMEnabled(enabled);
|
torrent->setAutoTMMEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -668,14 +668,14 @@ void TransferListWidget::askAddTagsForSelection()
|
||||||
|
|
||||||
void TransferListWidget::editTorrentTrackers()
|
void TransferListWidget::editTorrentTrackers()
|
||||||
{
|
{
|
||||||
const QVector<BitTorrent::TorrentHandle *> torrents = getSelectedTorrents();
|
const QVector<BitTorrent::Torrent *> torrents = getSelectedTorrents();
|
||||||
QVector<BitTorrent::TrackerEntry> commonTrackers;
|
QVector<BitTorrent::TrackerEntry> commonTrackers;
|
||||||
|
|
||||||
if (!torrents.empty())
|
if (!torrents.empty())
|
||||||
{
|
{
|
||||||
commonTrackers = torrents[0]->trackers();
|
commonTrackers = torrents[0]->trackers();
|
||||||
|
|
||||||
for (const BitTorrent::TorrentHandle *torrent : torrents)
|
for (const BitTorrent::Torrent *torrent : torrents)
|
||||||
{
|
{
|
||||||
QSet<BitTorrent::TrackerEntry> trackerSet;
|
QSet<BitTorrent::TrackerEntry> trackerSet;
|
||||||
|
|
||||||
|
@ -694,7 +694,7 @@ void TransferListWidget::editTorrentTrackers()
|
||||||
|
|
||||||
connect(trackerDialog, &QDialog::accepted, this, [torrents, trackerDialog]()
|
connect(trackerDialog, &QDialog::accepted, this, [torrents, trackerDialog]()
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *torrent : torrents)
|
for (BitTorrent::Torrent *torrent : torrents)
|
||||||
torrent->replaceTrackers(trackerDialog->trackers());
|
torrent->replaceTrackers(trackerDialog->trackers());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -737,11 +737,11 @@ QStringList TransferListWidget::askTagsForSelection(const QString &dialogTitle)
|
||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::applyToSelectedTorrents(const std::function<void (BitTorrent::TorrentHandle *const)> &fn)
|
void TransferListWidget::applyToSelectedTorrents(const std::function<void (BitTorrent::Torrent *const)> &fn)
|
||||||
{
|
{
|
||||||
for (const QModelIndex &index : asConst(selectionModel()->selectedRows()))
|
for (const QModelIndex &index : asConst(selectionModel()->selectedRows()))
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = m_listModel->torrentHandle(mapToSource(index));
|
BitTorrent::Torrent *const torrent = m_listModel->torrentHandle(mapToSource(index));
|
||||||
Q_ASSERT(torrent);
|
Q_ASSERT(torrent);
|
||||||
fn(torrent);
|
fn(torrent);
|
||||||
}
|
}
|
||||||
|
@ -753,7 +753,7 @@ void TransferListWidget::renameSelectedTorrent()
|
||||||
if ((selectedIndexes.size() != 1) || !selectedIndexes.first().isValid()) return;
|
if ((selectedIndexes.size() != 1) || !selectedIndexes.first().isValid()) return;
|
||||||
|
|
||||||
const QModelIndex mi = m_listModel->index(mapToSource(selectedIndexes.first()).row(), TransferListModel::TR_NAME);
|
const QModelIndex mi = m_listModel->index(mapToSource(selectedIndexes.first()).row(), TransferListModel::TR_NAME);
|
||||||
BitTorrent::TorrentHandle *const torrent = m_listModel->torrentHandle(mi);
|
BitTorrent::Torrent *const torrent = m_listModel->torrentHandle(mi);
|
||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
// Ask for a new Name
|
// Ask for a new Name
|
||||||
|
@ -775,17 +775,17 @@ void TransferListWidget::setSelectionCategory(const QString &category)
|
||||||
|
|
||||||
void TransferListWidget::addSelectionTag(const QString &tag)
|
void TransferListWidget::addSelectionTag(const QString &tag)
|
||||||
{
|
{
|
||||||
applyToSelectedTorrents([&tag](BitTorrent::TorrentHandle *const torrent) { torrent->addTag(tag); });
|
applyToSelectedTorrents([&tag](BitTorrent::Torrent *const torrent) { torrent->addTag(tag); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::removeSelectionTag(const QString &tag)
|
void TransferListWidget::removeSelectionTag(const QString &tag)
|
||||||
{
|
{
|
||||||
applyToSelectedTorrents([&tag](BitTorrent::TorrentHandle *const torrent) { torrent->removeTag(tag); });
|
applyToSelectedTorrents([&tag](BitTorrent::Torrent *const torrent) { torrent->removeTag(tag); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::clearSelectionTags()
|
void TransferListWidget::clearSelectionTags()
|
||||||
{
|
{
|
||||||
applyToSelectedTorrents([](BitTorrent::TorrentHandle *const torrent) { torrent->removeAllTags(); });
|
applyToSelectedTorrents([](BitTorrent::Torrent *const torrent) { torrent->removeAllTags(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::displayListMenu(const QPoint &)
|
void TransferListWidget::displayListMenu(const QPoint &)
|
||||||
|
@ -866,7 +866,7 @@ void TransferListWidget::displayListMenu(const QPoint &)
|
||||||
{
|
{
|
||||||
// Get the file name
|
// Get the file name
|
||||||
// Get handle and pause the torrent
|
// Get handle and pause the torrent
|
||||||
const BitTorrent::TorrentHandle *torrent = m_listModel->torrentHandle(mapToSource(index));
|
const BitTorrent::Torrent *torrent = m_listModel->torrentHandle(mapToSource(index));
|
||||||
if (!torrent) continue;
|
if (!torrent) continue;
|
||||||
|
|
||||||
if (firstCategory.isEmpty() && first)
|
if (firstCategory.isEmpty() && first)
|
||||||
|
@ -1100,7 +1100,7 @@ void TransferListWidget::displayListMenu(const QPoint &)
|
||||||
void TransferListWidget::currentChanged(const QModelIndex ¤t, const QModelIndex&)
|
void TransferListWidget::currentChanged(const QModelIndex ¤t, const QModelIndex&)
|
||||||
{
|
{
|
||||||
qDebug("CURRENT CHANGED");
|
qDebug("CURRENT CHANGED");
|
||||||
BitTorrent::TorrentHandle *torrent = nullptr;
|
BitTorrent::Torrent *torrent = nullptr;
|
||||||
if (current.isValid())
|
if (current.isValid())
|
||||||
{
|
{
|
||||||
torrent = m_listModel->torrentHandle(mapToSource(current));
|
torrent = m_listModel->torrentHandle(mapToSource(current));
|
||||||
|
|
|
@ -40,7 +40,7 @@ class TransferListSortModel;
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class InfoHash;
|
class InfoHash;
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
class TransferListWidget final : public QTreeView
|
class TransferListWidget final : public QTreeView
|
||||||
|
@ -96,7 +96,7 @@ protected:
|
||||||
QModelIndex mapToSource(const QModelIndex &index) const;
|
QModelIndex mapToSource(const QModelIndex &index) const;
|
||||||
QModelIndex mapFromSource(const QModelIndex &index) const;
|
QModelIndex mapFromSource(const QModelIndex &index) const;
|
||||||
bool loadSettings();
|
bool loadSettings();
|
||||||
QVector<BitTorrent::TorrentHandle *> getSelectedTorrents() const;
|
QVector<BitTorrent::Torrent *> getSelectedTorrents() const;
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void torrentDoubleClicked();
|
void torrentDoubleClicked();
|
||||||
|
@ -110,7 +110,7 @@ protected slots:
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void currentTorrentChanged(BitTorrent::TorrentHandle *const torrent);
|
void currentTorrentChanged(BitTorrent::Torrent *const torrent);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void wheelEvent(QWheelEvent *event) override;
|
void wheelEvent(QWheelEvent *event) override;
|
||||||
|
@ -118,8 +118,8 @@ private:
|
||||||
void editTorrentTrackers();
|
void editTorrentTrackers();
|
||||||
void confirmRemoveAllTagsForSelection();
|
void confirmRemoveAllTagsForSelection();
|
||||||
QStringList askTagsForSelection(const QString &dialogTitle);
|
QStringList askTagsForSelection(const QString &dialogTitle);
|
||||||
void applyToSelectedTorrents(const std::function<void (BitTorrent::TorrentHandle *const)> &fn);
|
void applyToSelectedTorrents(const std::function<void (BitTorrent::Torrent *const)> &fn);
|
||||||
QVector<BitTorrent::TorrentHandle *> getVisibleTorrents() const;
|
QVector<BitTorrent::Torrent *> getVisibleTorrents() const;
|
||||||
|
|
||||||
TransferListDelegate *m_listDelegate;
|
TransferListDelegate *m_listDelegate;
|
||||||
TransferListModel *m_listModel;
|
TransferListModel *m_listModel;
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
#include "base/bittorrent/infohash.h"
|
#include "base/bittorrent/infohash.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/trackerentry.h"
|
#include "base/bittorrent/trackerentry.h"
|
||||||
#include "base/utils/fs.h"
|
#include "base/utils/fs.h"
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ namespace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap serialize(const BitTorrent::TorrentHandle &torrent)
|
QVariantMap serialize(const BitTorrent::Torrent &torrent)
|
||||||
{
|
{
|
||||||
QVariantMap ret =
|
QVariantMap ret =
|
||||||
{
|
{
|
||||||
|
@ -136,7 +136,7 @@ QVariantMap serialize(const BitTorrent::TorrentHandle &torrent)
|
||||||
};
|
};
|
||||||
|
|
||||||
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::Torrent::MAX_RATIO) ? -1 : ratio;
|
||||||
|
|
||||||
if (torrent.isPaused() || torrent.isChecking())
|
if (torrent.isPaused() || torrent.isChecking())
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
namespace BitTorrent
|
namespace BitTorrent
|
||||||
{
|
{
|
||||||
class TorrentHandle;
|
class Torrent;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Torrent keys
|
// Torrent keys
|
||||||
|
@ -82,4 +82,4 @@ const char KEY_TORRENT_AUTO_TORRENT_MANAGEMENT[] = "auto_tmm";
|
||||||
const char KEY_TORRENT_TIME_ACTIVE[] = "time_active";
|
const char KEY_TORRENT_TIME_ACTIVE[] = "time_active";
|
||||||
const char KEY_TORRENT_AVAILABILITY[] = "availability";
|
const char KEY_TORRENT_AVAILABILITY[] = "availability";
|
||||||
|
|
||||||
QVariantMap serialize(const BitTorrent::TorrentHandle &torrent);
|
QVariantMap serialize(const BitTorrent::Torrent &torrent);
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include "base/bittorrent/peeraddress.h"
|
#include "base/bittorrent/peeraddress.h"
|
||||||
#include "base/bittorrent/peerinfo.h"
|
#include "base/bittorrent/peerinfo.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/trackerentry.h"
|
#include "base/bittorrent/trackerentry.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
#include "base/net/geoipmanager.h"
|
#include "base/net/geoipmanager.h"
|
||||||
|
@ -458,7 +458,7 @@ void SyncController::maindataAction()
|
||||||
|
|
||||||
QVariantHash torrents;
|
QVariantHash torrents;
|
||||||
QHash<QString, QStringList> trackers;
|
QHash<QString, QStringList> trackers;
|
||||||
for (const BitTorrent::TorrentHandle *torrent : asConst(session->torrents()))
|
for (const BitTorrent::Torrent *torrent : asConst(session->torrents()))
|
||||||
{
|
{
|
||||||
const BitTorrent::InfoHash torrentHash = torrent->hash();
|
const BitTorrent::InfoHash torrentHash = torrent->hash();
|
||||||
|
|
||||||
|
@ -542,7 +542,7 @@ void SyncController::torrentPeersAction()
|
||||||
auto lastAcceptedResponse = sessionManager()->session()->getData(QLatin1String("syncTorrentPeersLastAcceptedResponse")).toMap();
|
auto lastAcceptedResponse = sessionManager()->session()->getData(QLatin1String("syncTorrentPeersLastAcceptedResponse")).toMap();
|
||||||
|
|
||||||
const QString hash {params()["hash"]};
|
const QString hash {params()["hash"]};
|
||||||
const BitTorrent::TorrentHandle *torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
const BitTorrent::Torrent *torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
#include "base/bittorrent/peeraddress.h"
|
#include "base/bittorrent/peeraddress.h"
|
||||||
#include "base/bittorrent/peerinfo.h"
|
#include "base/bittorrent/peerinfo.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
#include "base/bittorrent/torrenthandle.h"
|
#include "base/bittorrent/torrent.h"
|
||||||
#include "base/bittorrent/torrentinfo.h"
|
#include "base/bittorrent/torrentinfo.h"
|
||||||
#include "base/bittorrent/trackerentry.h"
|
#include "base/bittorrent/trackerentry.h"
|
||||||
#include "base/global.h"
|
#include "base/global.h"
|
||||||
|
@ -118,25 +118,25 @@ namespace
|
||||||
{
|
{
|
||||||
using Utils::String::parseBool;
|
using Utils::String::parseBool;
|
||||||
|
|
||||||
void applyToTorrents(const QStringList &hashes, const std::function<void (BitTorrent::TorrentHandle *torrent)> &func)
|
void applyToTorrents(const QStringList &hashes, const std::function<void (BitTorrent::Torrent *torrent)> &func)
|
||||||
{
|
{
|
||||||
if ((hashes.size() == 1) && (hashes[0] == QLatin1String("all")))
|
if ((hashes.size() == 1) && (hashes[0] == QLatin1String("all")))
|
||||||
{
|
{
|
||||||
for (BitTorrent::TorrentHandle *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
||||||
func(torrent);
|
func(torrent);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (const QString &hash : hashes)
|
for (const QString &hash : hashes)
|
||||||
{
|
{
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (torrent)
|
if (torrent)
|
||||||
func(torrent);
|
func(torrent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonArray getStickyTrackers(const BitTorrent::TorrentHandle *const torrent)
|
QJsonArray getStickyTrackers(const BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
int seedsDHT = 0, seedsPeX = 0, seedsLSD = 0, leechesDHT = 0, leechesPeX = 0, leechesLSD = 0;
|
int seedsDHT = 0, seedsPeX = 0, seedsLSD = 0, leechesDHT = 0, leechesPeX = 0, leechesLSD = 0;
|
||||||
for (const BitTorrent::PeerInfo &peer : asConst(torrent->peers()))
|
for (const BitTorrent::PeerInfo &peer : asConst(torrent->peers()))
|
||||||
|
@ -263,7 +263,7 @@ void TorrentsController::infoAction()
|
||||||
|
|
||||||
const TorrentFilter torrentFilter(filter, (hashes.isEmpty() ? TorrentFilter::AnyHash : hashSet), category);
|
const TorrentFilter torrentFilter(filter, (hashes.isEmpty() ? TorrentFilter::AnyHash : hashSet), category);
|
||||||
QVariantList torrentList;
|
QVariantList torrentList;
|
||||||
for (const BitTorrent::TorrentHandle *torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
for (const BitTorrent::Torrent *torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
||||||
{
|
{
|
||||||
if (torrentFilter.match(torrent))
|
if (torrentFilter.match(torrent))
|
||||||
torrentList.append(serialize(*torrent));
|
torrentList.append(serialize(*torrent));
|
||||||
|
@ -372,7 +372,7 @@ void TorrentsController::propertiesAction()
|
||||||
requireParams({"hash"});
|
requireParams({"hash"});
|
||||||
|
|
||||||
const QString hash {params()["hash"]};
|
const QString hash {params()["hash"]};
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -401,7 +401,7 @@ void TorrentsController::propertiesAction()
|
||||||
dataDict[KEY_PROP_PEERS] = torrent->leechsCount();
|
dataDict[KEY_PROP_PEERS] = torrent->leechsCount();
|
||||||
dataDict[KEY_PROP_PEERS_TOTAL] = torrent->totalLeechersCount();
|
dataDict[KEY_PROP_PEERS_TOTAL] = torrent->totalLeechersCount();
|
||||||
const qreal ratio = torrent->realRatio();
|
const qreal ratio = torrent->realRatio();
|
||||||
dataDict[KEY_PROP_RATIO] = ratio > BitTorrent::TorrentHandle::MAX_RATIO ? -1 : ratio;
|
dataDict[KEY_PROP_RATIO] = ratio > BitTorrent::Torrent::MAX_RATIO ? -1 : ratio;
|
||||||
dataDict[KEY_PROP_REANNOUNCE] = torrent->nextAnnounce();
|
dataDict[KEY_PROP_REANNOUNCE] = torrent->nextAnnounce();
|
||||||
dataDict[KEY_PROP_TOTAL_SIZE] = torrent->totalSize();
|
dataDict[KEY_PROP_TOTAL_SIZE] = torrent->totalSize();
|
||||||
dataDict[KEY_PROP_PIECES_NUM] = torrent->piecesCount();
|
dataDict[KEY_PROP_PIECES_NUM] = torrent->piecesCount();
|
||||||
|
@ -443,7 +443,7 @@ void TorrentsController::trackersAction()
|
||||||
requireParams({"hash"});
|
requireParams({"hash"});
|
||||||
|
|
||||||
const QString hash {params()["hash"]};
|
const QString hash {params()["hash"]};
|
||||||
const BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
const BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -479,7 +479,7 @@ void TorrentsController::webseedsAction()
|
||||||
requireParams({"hash"});
|
requireParams({"hash"});
|
||||||
|
|
||||||
const QString hash {params()["hash"]};
|
const QString hash {params()["hash"]};
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -510,7 +510,7 @@ void TorrentsController::filesAction()
|
||||||
requireParams({"hash"});
|
requireParams({"hash"});
|
||||||
|
|
||||||
const QString hash {params()["hash"]};
|
const QString hash {params()["hash"]};
|
||||||
const BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
const BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -556,7 +556,7 @@ void TorrentsController::pieceHashesAction()
|
||||||
requireParams({"hash"});
|
requireParams({"hash"});
|
||||||
|
|
||||||
const QString hash {params()["hash"]};
|
const QString hash {params()["hash"]};
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -578,7 +578,7 @@ void TorrentsController::pieceStatesAction()
|
||||||
requireParams({"hash"});
|
requireParams({"hash"});
|
||||||
|
|
||||||
const QString hash {params()["hash"]};
|
const QString hash {params()["hash"]};
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -684,7 +684,7 @@ void TorrentsController::addTrackersAction()
|
||||||
requireParams({"hash", "urls"});
|
requireParams({"hash", "urls"});
|
||||||
|
|
||||||
const QString hash = params()["hash"];
|
const QString hash = params()["hash"];
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -706,7 +706,7 @@ void TorrentsController::editTrackerAction()
|
||||||
const QString origUrl = params()["origUrl"];
|
const QString origUrl = params()["origUrl"];
|
||||||
const QString newUrl = params()["newUrl"];
|
const QString newUrl = params()["newUrl"];
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -746,7 +746,7 @@ void TorrentsController::removeTrackersAction()
|
||||||
requireParams({"hash", "urls"});
|
requireParams({"hash", "urls"});
|
||||||
|
|
||||||
const QString hash = params()["hash"];
|
const QString hash = params()["hash"];
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -791,7 +791,7 @@ void TorrentsController::addPeersAction()
|
||||||
|
|
||||||
QJsonObject results;
|
QJsonObject results;
|
||||||
|
|
||||||
applyToTorrents(hashes, [peers, peerList, &results](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [peers, peerList, &results](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
const int peersAdded = std::count_if(peerList.cbegin(), peerList.cend(), [torrent](const BitTorrent::PeerAddress &peer)
|
const int peersAdded = std::count_if(peerList.cbegin(), peerList.cend(), [torrent](const BitTorrent::PeerAddress &peer)
|
||||||
{
|
{
|
||||||
|
@ -813,7 +813,7 @@ void TorrentsController::pauseAction()
|
||||||
requireParams({"hashes"});
|
requireParams({"hashes"});
|
||||||
|
|
||||||
const QStringList hashes = params()["hashes"].split('|');
|
const QStringList hashes = params()["hashes"].split('|');
|
||||||
applyToTorrents(hashes, [](BitTorrent::TorrentHandle *const torrent) { torrent->pause(); });
|
applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent) { torrent->pause(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::resumeAction()
|
void TorrentsController::resumeAction()
|
||||||
|
@ -821,7 +821,7 @@ void TorrentsController::resumeAction()
|
||||||
requireParams({"hashes"});
|
requireParams({"hashes"});
|
||||||
|
|
||||||
const QStringList hashes = params()["hashes"].split('|');
|
const QStringList hashes = params()["hashes"].split('|');
|
||||||
applyToTorrents(hashes, [](BitTorrent::TorrentHandle *const torrent) { torrent->resume(); });
|
applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent) { torrent->resume(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::filePrioAction()
|
void TorrentsController::filePrioAction()
|
||||||
|
@ -837,7 +837,7 @@ void TorrentsController::filePrioAction()
|
||||||
if (!BitTorrent::isValidDownloadPriority(priority))
|
if (!BitTorrent::isValidDownloadPriority(priority))
|
||||||
throw APIError(APIErrorType::BadParams, tr("Priority is not valid"));
|
throw APIError(APIErrorType::BadParams, tr("Priority is not valid"));
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
if (!torrent->hasMetadata())
|
if (!torrent->hasMetadata())
|
||||||
|
@ -874,7 +874,7 @@ void TorrentsController::uploadLimitAction()
|
||||||
for (const QString &hash : hashes)
|
for (const QString &hash : hashes)
|
||||||
{
|
{
|
||||||
int limit = -1;
|
int limit = -1;
|
||||||
const BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
const BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (torrent)
|
if (torrent)
|
||||||
limit = torrent->uploadLimit();
|
limit = torrent->uploadLimit();
|
||||||
map[hash] = limit;
|
map[hash] = limit;
|
||||||
|
@ -892,7 +892,7 @@ void TorrentsController::downloadLimitAction()
|
||||||
for (const QString &hash : hashes)
|
for (const QString &hash : hashes)
|
||||||
{
|
{
|
||||||
int limit = -1;
|
int limit = -1;
|
||||||
const BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
const BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (torrent)
|
if (torrent)
|
||||||
limit = torrent->downloadLimit();
|
limit = torrent->downloadLimit();
|
||||||
map[hash] = limit;
|
map[hash] = limit;
|
||||||
|
@ -910,7 +910,7 @@ void TorrentsController::setUploadLimitAction()
|
||||||
limit = -1;
|
limit = -1;
|
||||||
|
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
applyToTorrents(hashes, [limit](BitTorrent::TorrentHandle *const torrent) { torrent->setUploadLimit(limit); });
|
applyToTorrents(hashes, [limit](BitTorrent::Torrent *const torrent) { torrent->setUploadLimit(limit); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::setDownloadLimitAction()
|
void TorrentsController::setDownloadLimitAction()
|
||||||
|
@ -922,7 +922,7 @@ void TorrentsController::setDownloadLimitAction()
|
||||||
limit = -1;
|
limit = -1;
|
||||||
|
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
applyToTorrents(hashes, [limit](BitTorrent::TorrentHandle *const torrent) { torrent->setDownloadLimit(limit); });
|
applyToTorrents(hashes, [limit](BitTorrent::Torrent *const torrent) { torrent->setDownloadLimit(limit); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::setShareLimitsAction()
|
void TorrentsController::setShareLimitsAction()
|
||||||
|
@ -933,7 +933,7 @@ void TorrentsController::setShareLimitsAction()
|
||||||
const qlonglong seedingTimeLimit = params()["seedingTimeLimit"].toLongLong();
|
const qlonglong seedingTimeLimit = params()["seedingTimeLimit"].toLongLong();
|
||||||
const QStringList hashes = params()["hashes"].split('|');
|
const QStringList hashes = params()["hashes"].split('|');
|
||||||
|
|
||||||
applyToTorrents(hashes, [ratioLimit, seedingTimeLimit](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [ratioLimit, seedingTimeLimit](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
torrent->setRatioLimit(ratioLimit);
|
torrent->setRatioLimit(ratioLimit);
|
||||||
torrent->setSeedingTimeLimit(seedingTimeLimit);
|
torrent->setSeedingTimeLimit(seedingTimeLimit);
|
||||||
|
@ -945,7 +945,7 @@ void TorrentsController::toggleSequentialDownloadAction()
|
||||||
requireParams({"hashes"});
|
requireParams({"hashes"});
|
||||||
|
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
applyToTorrents(hashes, [](BitTorrent::TorrentHandle *const torrent) { torrent->toggleSequentialDownload(); });
|
applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent) { torrent->toggleSequentialDownload(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::toggleFirstLastPiecePrioAction()
|
void TorrentsController::toggleFirstLastPiecePrioAction()
|
||||||
|
@ -953,7 +953,7 @@ void TorrentsController::toggleFirstLastPiecePrioAction()
|
||||||
requireParams({"hashes"});
|
requireParams({"hashes"});
|
||||||
|
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
applyToTorrents(hashes, [](BitTorrent::TorrentHandle *const torrent) { torrent->toggleFirstLastPiecePriority(); });
|
applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent) { torrent->toggleFirstLastPiecePriority(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::setSuperSeedingAction()
|
void TorrentsController::setSuperSeedingAction()
|
||||||
|
@ -962,7 +962,7 @@ void TorrentsController::setSuperSeedingAction()
|
||||||
|
|
||||||
const bool value {parseBool(params()["value"]).value_or(false)};
|
const bool value {parseBool(params()["value"]).value_or(false)};
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
applyToTorrents(hashes, [value](BitTorrent::TorrentHandle *const torrent) { torrent->setSuperSeeding(value); });
|
applyToTorrents(hashes, [value](BitTorrent::Torrent *const torrent) { torrent->setSuperSeeding(value); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::setForceStartAction()
|
void TorrentsController::setForceStartAction()
|
||||||
|
@ -971,7 +971,7 @@ void TorrentsController::setForceStartAction()
|
||||||
|
|
||||||
const bool value {parseBool(params()["value"]).value_or(false)};
|
const bool value {parseBool(params()["value"]).value_or(false)};
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
applyToTorrents(hashes, [value](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [value](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
torrent->resume(value ? BitTorrent::TorrentOperatingMode::Forced : BitTorrent::TorrentOperatingMode::AutoManaged);
|
torrent->resume(value ? BitTorrent::TorrentOperatingMode::Forced : BitTorrent::TorrentOperatingMode::AutoManaged);
|
||||||
});
|
});
|
||||||
|
@ -983,8 +983,8 @@ void TorrentsController::deleteAction()
|
||||||
|
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
const DeleteOption deleteOption = parseBool(params()["deleteFiles"]).value_or(false)
|
const DeleteOption deleteOption = parseBool(params()["deleteFiles"]).value_or(false)
|
||||||
? TorrentAndFiles : Torrent;
|
? DeleteTorrentAndFiles : DeleteTorrent;
|
||||||
applyToTorrents(hashes, [deleteOption](const BitTorrent::TorrentHandle *torrent)
|
applyToTorrents(hashes, [deleteOption](const BitTorrent::Torrent *torrent)
|
||||||
{
|
{
|
||||||
BitTorrent::Session::instance()->deleteTorrent(torrent->hash(), deleteOption);
|
BitTorrent::Session::instance()->deleteTorrent(torrent->hash(), deleteOption);
|
||||||
});
|
});
|
||||||
|
@ -1052,7 +1052,7 @@ void TorrentsController::setLocationAction()
|
||||||
if (!QFileInfo(newLocation).isWritable())
|
if (!QFileInfo(newLocation).isWritable())
|
||||||
throw APIError(APIErrorType::AccessDenied, tr("Cannot write to directory"));
|
throw APIError(APIErrorType::AccessDenied, tr("Cannot write to directory"));
|
||||||
|
|
||||||
applyToTorrents(hashes, [newLocation](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [newLocation](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
LogMsg(tr("WebUI Set location: moving \"%1\", from \"%2\" to \"%3\"")
|
LogMsg(tr("WebUI Set location: moving \"%1\", from \"%2\" to \"%3\"")
|
||||||
.arg(torrent->name(), Utils::Fs::toNativePath(torrent->savePath()), Utils::Fs::toNativePath(newLocation)));
|
.arg(torrent->name(), Utils::Fs::toNativePath(torrent->savePath()), Utils::Fs::toNativePath(newLocation)));
|
||||||
|
@ -1070,7 +1070,7 @@ void TorrentsController::renameAction()
|
||||||
if (name.isEmpty())
|
if (name.isEmpty())
|
||||||
throw APIError(APIErrorType::Conflict, tr("Incorrect torrent name"));
|
throw APIError(APIErrorType::Conflict, tr("Incorrect torrent name"));
|
||||||
|
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -1085,7 +1085,7 @@ void TorrentsController::setAutoManagementAction()
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
const bool isEnabled {parseBool(params()["enable"]).value_or(false)};
|
const bool isEnabled {parseBool(params()["enable"]).value_or(false)};
|
||||||
|
|
||||||
applyToTorrents(hashes, [isEnabled](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [isEnabled](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
torrent->setAutoTMMEnabled(isEnabled);
|
torrent->setAutoTMMEnabled(isEnabled);
|
||||||
});
|
});
|
||||||
|
@ -1096,7 +1096,7 @@ void TorrentsController::recheckAction()
|
||||||
requireParams({"hashes"});
|
requireParams({"hashes"});
|
||||||
|
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
applyToTorrents(hashes, [](BitTorrent::TorrentHandle *const torrent) { torrent->forceRecheck(); });
|
applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent) { torrent->forceRecheck(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::reannounceAction()
|
void TorrentsController::reannounceAction()
|
||||||
|
@ -1104,7 +1104,7 @@ void TorrentsController::reannounceAction()
|
||||||
requireParams({"hashes"});
|
requireParams({"hashes"});
|
||||||
|
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
applyToTorrents(hashes, [](BitTorrent::TorrentHandle *const torrent) { torrent->forceReannounce(); });
|
applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent) { torrent->forceReannounce(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::setCategoryAction()
|
void TorrentsController::setCategoryAction()
|
||||||
|
@ -1114,7 +1114,7 @@ void TorrentsController::setCategoryAction()
|
||||||
const QStringList hashes {params()["hashes"].split('|')};
|
const QStringList hashes {params()["hashes"].split('|')};
|
||||||
const QString category {params()["category"]};
|
const QString category {params()["category"]};
|
||||||
|
|
||||||
applyToTorrents(hashes, [category](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [category](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
if (!torrent->setCategory(category))
|
if (!torrent->setCategory(category))
|
||||||
throw APIError(APIErrorType::Conflict, tr("Incorrect category name"));
|
throw APIError(APIErrorType::Conflict, tr("Incorrect category name"));
|
||||||
|
@ -1188,7 +1188,7 @@ void TorrentsController::addTagsAction()
|
||||||
for (const QString &tag : tags)
|
for (const QString &tag : tags)
|
||||||
{
|
{
|
||||||
const QString tagTrimmed {tag.trimmed()};
|
const QString tagTrimmed {tag.trimmed()};
|
||||||
applyToTorrents(hashes, [&tagTrimmed](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [&tagTrimmed](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
torrent->addTag(tagTrimmed);
|
torrent->addTag(tagTrimmed);
|
||||||
});
|
});
|
||||||
|
@ -1205,7 +1205,7 @@ void TorrentsController::removeTagsAction()
|
||||||
for (const QString &tag : tags)
|
for (const QString &tag : tags)
|
||||||
{
|
{
|
||||||
const QString tagTrimmed {tag.trimmed()};
|
const QString tagTrimmed {tag.trimmed()};
|
||||||
applyToTorrents(hashes, [&tagTrimmed](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [&tagTrimmed](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
torrent->removeTag(tagTrimmed);
|
torrent->removeTag(tagTrimmed);
|
||||||
});
|
});
|
||||||
|
@ -1213,7 +1213,7 @@ void TorrentsController::removeTagsAction()
|
||||||
|
|
||||||
if (tags.isEmpty())
|
if (tags.isEmpty())
|
||||||
{
|
{
|
||||||
applyToTorrents(hashes, [](BitTorrent::TorrentHandle *const torrent)
|
applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent)
|
||||||
{
|
{
|
||||||
torrent->removeAllTags();
|
torrent->removeAllTags();
|
||||||
});
|
});
|
||||||
|
@ -1252,7 +1252,7 @@ void TorrentsController::renameFileAction()
|
||||||
requireParams({"hash", "oldPath", "newPath"});
|
requireParams({"hash", "oldPath", "newPath"});
|
||||||
|
|
||||||
const QString hash = params()["hash"];
|
const QString hash = params()["hash"];
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
@ -1274,7 +1274,7 @@ void TorrentsController::renameFolderAction()
|
||||||
requireParams({"hash", "oldPath", "newPath"});
|
requireParams({"hash", "oldPath", "newPath"});
|
||||||
|
|
||||||
const QString hash = params()["hash"];
|
const QString hash = params()["hash"];
|
||||||
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
|
||||||
if (!torrent)
|
if (!torrent)
|
||||||
throw APIError(APIErrorType::NotFound);
|
throw APIError(APIErrorType::NotFound);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue