diff --git a/src/fs_utils.h b/src/fs_utils.h index be7f6ba21..eeceec516 100644 --- a/src/fs_utils.h +++ b/src/fs_utils.h @@ -32,7 +32,6 @@ #define FS_UTILS_H #include -#include /** * Utility functions related to file system. diff --git a/src/geoip/geoipmanager.cpp b/src/geoip/geoipmanager.cpp index 9401ed091..6b970d52c 100644 --- a/src/geoip/geoipmanager.cpp +++ b/src/geoip/geoipmanager.cpp @@ -65,6 +65,7 @@ #include #include "fs_utils.h" +#include using namespace libtorrent; diff --git a/src/geoip/geoipmanager.h b/src/geoip/geoipmanager.h index 00bb730fa..7ea828e57 100644 --- a/src/geoip/geoipmanager.h +++ b/src/geoip/geoipmanager.h @@ -31,10 +31,13 @@ #ifndef GEOIPMANAGER_H #define GEOIPMANAGER_H -#include #include #include +namespace libtorrent { + class session; +} + class GeoIPManager : public QObject { Q_OBJECT diff --git a/src/misc.cpp b/src/misc.cpp index fb0e1ebe3..c9b1987d3 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #ifdef DISABLE_GUI #include @@ -70,6 +71,13 @@ const int UNLEN = 256; #endif #endif // DISABLE_GUI +#if LIBTORRENT_VERSION_NUM < 10000 +#include +#else +#include +#endif +#include + using namespace libtorrent; static struct { const char *source; const char *comment; } units[] = { @@ -80,6 +88,28 @@ static struct { const char *source; const char *comment; } units[] = { QT_TRANSLATE_NOOP3("misc", "TiB", "tebibytes (1024 gibibytes)") }; +QString misc::toQString(const std::string &str) { + return QString::fromLocal8Bit(str.c_str()); +} + +QString misc::toQString(const char* str) { + return QString::fromLocal8Bit(str); +} + +QString misc::toQStringU(const std::string &str) { + return QString::fromUtf8(str.c_str()); +} + +QString misc::toQStringU(const char* str) { + return QString::fromUtf8(str); +} + +QString misc::toQString(const libtorrent::sha1_hash &hash) { + char out[41]; + libtorrent::to_hex((char const*)&hash[0], libtorrent::sha1_hash::size, out); + return QString(out); +} + #ifndef DISABLE_GUI void misc::shutdownComputer(shutDownAction action) { #if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC)) && defined(QT_DBUS_LIB) @@ -602,3 +632,18 @@ QString misc::accurateDoubleToString(const double &n, const int &precision, bool else return QString::number(std::floor(n*prec)/prec, 'f', precision); } + +namespace { + // Trick to get a portable sleep() function + class SleeperThread : public QThread { + public: + static void msleep(unsigned long msecs) + { + QThread::msleep(msecs); + } + }; +} + +void misc::msleep(unsigned long msecs) { + SleeperThread::msleep(msecs); +} diff --git a/src/misc.h b/src/misc.h index 45593c074..9e7cba903 100644 --- a/src/misc.h +++ b/src/misc.h @@ -31,12 +31,9 @@ #ifndef MISC_H #define MISC_H -#include -#include #include #include #include -#include #include #include #include @@ -46,33 +43,28 @@ #include #endif +#include + +namespace libtorrent { +#if LIBTORRENT_VERSION_NUM < 10000 + class big_number; + typedef big_number sha1_hash; +#else + class sha1_hash; +#endif +} + const qlonglong MAX_ETA = 8640000; enum shutDownAction { NO_SHUTDOWN, SHUTDOWN_COMPUTER, SUSPEND_COMPUTER, HIBERNATE_COMPUTER }; /* Miscellaneaous functions that can be useful */ namespace misc { - inline QString toQString(const std::string &str) { - return QString::fromLocal8Bit(str.c_str()); - } - - inline QString toQString(const char* str) { - return QString::fromLocal8Bit(str); - } - - inline QString toQStringU(const std::string &str) { - return QString::fromUtf8(str.c_str()); - } - - inline QString toQStringU(const char* str) { - return QString::fromUtf8(str); - } - - inline QString toQString(const libtorrent::sha1_hash &hash) { - char out[41]; - libtorrent::to_hex((char const*)&hash[0], libtorrent::sha1_hash::size, out); - return QString(out); - } + QString toQString(const std::string &str); + QString toQString(const char* str); + QString toQStringU(const std::string &str); + QString toQStringU(const char* str); + QString toQString(const libtorrent::sha1_hash &hash); #ifndef DISABLE_GUI void shutdownComputer(shutDownAction action=SHUTDOWN_COMPUTER); @@ -113,15 +105,8 @@ namespace misc #ifndef DISABLE_GUI bool naturalSort(QString left, QString right, bool& result); #endif -} -// Trick to get a portable sleep() function -class SleeperThread : public QThread { -public: - static void msleep(unsigned long msecs) - { - QThread::msleep(msecs); - } -}; + void msleep(unsigned long msecs); +} #endif diff --git a/src/preferences/options_imp.h b/src/preferences/options_imp.h index f219239d8..4dbf277a5 100755 --- a/src/preferences/options_imp.h +++ b/src/preferences/options_imp.h @@ -32,7 +32,6 @@ #define OPTIONS_IMP_H #include "ui_options.h" -#include // actions on double-click on torrents enum DoubleClickAction {TOGGLE_PAUSE, OPEN_DEST, NO_ACTION}; diff --git a/src/properties/peeraddition.h b/src/properties/peeraddition.h index 07cde7994..b4f778f40 100644 --- a/src/properties/peeraddition.h +++ b/src/properties/peeraddition.h @@ -37,7 +37,8 @@ #include #include "ui_peer.h" -#include +#include +#include #include #if BOOST_VERSION < 103500 diff --git a/src/properties/propertieswidget.cpp b/src/properties/propertieswidget.cpp index 36fb9b284..62486ac1f 100644 --- a/src/properties/propertieswidget.cpp +++ b/src/properties/propertieswidget.cpp @@ -666,7 +666,7 @@ void PropertiesWidget::renameSelectedFile() { int timeout = 10; while(!QDir().rmpath(old_folder.absolutePath()) && timeout > 0) { // XXX: We should not sleep here (freezes the UI for 1 second) - SleeperThread::msleep(100); + misc::msleep(100); --timeout; } } diff --git a/src/qtlibtorrent/alertdispatcher.cpp b/src/qtlibtorrent/alertdispatcher.cpp index ccfd3308c..1ef90885c 100644 --- a/src/qtlibtorrent/alertdispatcher.cpp +++ b/src/qtlibtorrent/alertdispatcher.cpp @@ -30,6 +30,7 @@ #include "alertdispatcher.h" +#include #include #include diff --git a/src/qtlibtorrent/alertdispatcher.h b/src/qtlibtorrent/alertdispatcher.h index aa2a9ec1f..5ebaf9bc1 100644 --- a/src/qtlibtorrent/alertdispatcher.h +++ b/src/qtlibtorrent/alertdispatcher.h @@ -36,7 +36,14 @@ #include #include #include -#include + +#include +#include + +namespace libtorrent { + class session; + class alert; +} class QAlertDispatcher : public QObject { Q_OBJECT diff --git a/src/qtlibtorrent/qbtsession.cpp b/src/qtlibtorrent/qbtsession.cpp index 1417f4a37..3795c67d4 100755 --- a/src/qtlibtorrent/qbtsession.cpp +++ b/src/qtlibtorrent/qbtsession.cpp @@ -41,12 +41,14 @@ #include "torrentspeedmonitor.h" #include "torrentstatistics.h" #include "qbtsession.h" +#include "alertdispatcher.h" #include "misc.h" #include "fs_utils.h" #include "downloadthread.h" #include "filterparserthread.h" #include "preferences.h" #include "scannedfoldersmodel.h" +#include "qtracker.h" #ifndef DISABLE_GUI #include "shutdownconfirm.h" #include "geoipmanager.h" @@ -68,6 +70,9 @@ #include #include #include +#include +#include +#include #include #include #include "dnsupdater.h" @@ -2054,48 +2059,6 @@ void QBtSession::disableIPFilter() { filterPath = ""; } -// Set BT session settings (user_agent) -void QBtSession::setSessionSettings(const session_settings &sessionSettings) { - qDebug("Set session settings"); - s->set_settings(sessionSettings); -} - -// Set Proxy -void QBtSession::setProxySettings(proxy_settings proxySettings) { - qDebug() << Q_FUNC_INFO; - - proxySettings.proxy_peer_connections = Preferences::instance()->proxyPeerConnections(); - s->set_proxy(proxySettings); - - // Define environment variable - QString proxy_str; - switch(proxySettings.type) { - case proxy_settings::http_pw: - proxy_str = "http://"+misc::toQString(proxySettings.username)+":"+misc::toQString(proxySettings.password)+"@"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port); - break; - case proxy_settings::http: - proxy_str = "http://"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port); - break; - case proxy_settings::socks5: - proxy_str = misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port); - break; - case proxy_settings::socks5_pw: - proxy_str = misc::toQString(proxySettings.username)+":"+misc::toQString(proxySettings.password)+"@"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port); - break; - default: - qDebug("Disabling HTTP communications proxy"); - qputenv("http_proxy", QByteArray()); - qputenv("sock_proxy", QByteArray()); - return; - } - // We need this for urllib in search engine plugins - qDebug("HTTP communications proxy string: %s", qPrintable(proxy_str)); - if (proxySettings.type == proxy_settings::socks5 || proxySettings.type == proxy_settings::socks5_pw) - qputenv("sock_proxy", proxy_str.toLocal8Bit()); - else - qputenv("http_proxy", proxy_str.toLocal8Bit()); -} - void QBtSession::recursiveTorrentDownload(const QTorrentHandle &h) { try { for (int i=0; istatus(); } +void QBtSession::applyEncryptionSettings(pe_settings se) { + qDebug("Applying encryption settings"); + s->set_pe_settings(se); +} + +// Set Proxy +void QBtSession::setProxySettings(proxy_settings proxySettings) { + qDebug() << Q_FUNC_INFO; + + proxySettings.proxy_peer_connections = Preferences::instance()->proxyPeerConnections(); + s->set_proxy(proxySettings); + + // Define environment variable + QString proxy_str; + switch(proxySettings.type) { + case proxy_settings::http_pw: + proxy_str = "http://"+misc::toQString(proxySettings.username)+":"+misc::toQString(proxySettings.password)+"@"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port); + break; + case proxy_settings::http: + proxy_str = "http://"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port); + break; + case proxy_settings::socks5: + proxy_str = misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port); + break; + case proxy_settings::socks5_pw: + proxy_str = misc::toQString(proxySettings.username)+":"+misc::toQString(proxySettings.password)+"@"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port); + break; + default: + qDebug("Disabling HTTP communications proxy"); + qputenv("http_proxy", QByteArray()); + qputenv("sock_proxy", QByteArray()); + return; + } + // We need this for urllib in search engine plugins + qDebug("HTTP communications proxy string: %s", qPrintable(proxy_str)); + if (proxySettings.type == proxy_settings::socks5 || proxySettings.type == proxy_settings::socks5_pw) + qputenv("sock_proxy", proxy_str.toLocal8Bit()); + else + qputenv("http_proxy", proxy_str.toLocal8Bit()); +} + +// Set BT session settings (user_agent) +void QBtSession::setSessionSettings(const session_settings &sessionSettings) { + qDebug("Set session settings"); + s->set_settings(sessionSettings); +} + QString QBtSession::getSavePath(const QString &hash, bool fromScanDir, QString filePath, bool imported) { QString savePath; if (TorrentTempData::hasTempData(hash)) { @@ -2921,11 +2931,6 @@ qreal QBtSession::getPayloadUploadRate() const { return s->status().payload_upload_rate; } -void QBtSession::applyEncryptionSettings(pe_settings se) { - qDebug("Applying encryption settings"); - s->set_pe_settings(se); -} - // Will fast resume torrents in // backup directory void QBtSession::startUpTorrents() { diff --git a/src/qtlibtorrent/qbtsession.h b/src/qtlibtorrent/qbtsession.h index 2b252c6ae..a68ff26ab 100755 --- a/src/qtlibtorrent/qbtsession.h +++ b/src/qtlibtorrent/qbtsession.h @@ -45,17 +45,50 @@ #include #include -#include -#include -#include -#include "qtracker.h" #include "qtorrenthandle.h" #include "trackerinfos.h" -#include "alertdispatcher.h" #include "misc.h" -#define MAX_SAMPLES 20 +namespace libtorrent { + class add_torrent_params; + class pe_settings; + class proxy_settings; + class session; + class session_status; + + class alert; + class torrent_finished_alert; + class save_resume_data_alert; + class file_renamed_alert; + class torrent_deleted_alert; + class storage_moved_alert; + class storage_moved_failed_alert; + class metadata_received_alert; + class file_error_alert; + class file_completed_alert; + class torrent_paused_alert; + class tracker_error_alert; + class tracker_reply_alert; + class tracker_warning_alert; + class portmap_error_alert; + class portmap_alert; + class peer_blocked_alert; + class peer_ban_alert; + class fastresume_rejected_alert; + class url_seed_alert; + class listen_succeeded_alert; + class listen_failed_alert; + class torrent_checked_alert; + class external_ip_alert; + class state_update_alert; + class stats_alert; + +#if LIBTORRENT_VERSION_NUM < 10000 + class upnp; + class natpmp; +#endif +} class DownloadThread; class FilterParserThread; @@ -65,6 +98,7 @@ class ScanFoldersModel; class TorrentSpeedMonitor; class TorrentStatistics; class DNSUpdater; +class QAlertDispatcher; const int MAX_LOG_MESSAGES = 1000; @@ -73,6 +107,8 @@ enum TorrentExportFolder { FinishedTorrentExportFolder }; +class QTracker; + class QBtSession : public QObject { Q_OBJECT Q_DISABLE_COPY(QBtSession) @@ -151,8 +187,6 @@ public slots: void setMaxRatioPerTorrent(const QString &hash, qreal ratio); qreal getMaxRatioPerTorrent(const QString &hash, bool *usesGlobalRatio) const; void removeRatioPerTorrent(const QString &hash); - void setProxySettings(libtorrent::proxy_settings proxySettings); - void setSessionSettings(const libtorrent::session_settings &sessionSettings); void setDefaultSavePath(const QString &savepath); void setDefaultTempPath(const QString &temppath); void setAppendLabelToSavePath(bool append); @@ -160,7 +194,6 @@ public slots: void changeLabelInTorrentSavePath(const QTorrentHandle &h, QString old_label, QString new_label); void appendqBextensionToTorrent(const QTorrentHandle &h, bool append); void setAppendqBExtension(bool append); - void applyEncryptionSettings(libtorrent::pe_settings se); void setDownloadLimit(QString hash, long val); void setUploadLimit(QString hash, long val); void enableUPnP(bool b); @@ -184,6 +217,9 @@ public slots: void unhideMagnet(const QString &hash); private: + void applyEncryptionSettings(libtorrent::pe_settings se); + void setProxySettings(libtorrent::proxy_settings proxySettings); + void setSessionSettings(const libtorrent::session_settings &sessionSettings); QString getSavePath(const QString &hash, bool fromScanDir = false, QString filePath = QString::null, bool imported = false); bool loadFastResumeData(const QString &hash, std::vector &buf); void loadTorrentSettings(QTorrentHandle &h); diff --git a/src/qtlibtorrent/qtorrenthandle.h b/src/qtlibtorrent/qtorrenthandle.h index ac6439cc0..a41be30c2 100644 --- a/src/qtlibtorrent/qtorrenthandle.h +++ b/src/qtlibtorrent/qtorrenthandle.h @@ -31,9 +31,7 @@ #ifndef QTORRENTHANDLE_H #define QTORRENTHANDLE_H -#include #include -#include #include diff --git a/src/qtlibtorrent/torrentmodel.cpp b/src/qtlibtorrent/torrentmodel.cpp index 419361ec1..fcaee6bd3 100644 --- a/src/qtlibtorrent/torrentmodel.cpp +++ b/src/qtlibtorrent/torrentmodel.cpp @@ -35,6 +35,8 @@ #include "qbtsession.h" #include "fs_utils.h" +#include + using namespace libtorrent; namespace { diff --git a/src/statsdialog.cpp b/src/statsdialog.cpp index bbaa43b30..f90e38716 100644 --- a/src/statsdialog.cpp +++ b/src/statsdialog.cpp @@ -32,6 +32,8 @@ #include "ui_statsdialog.h" #include "misc.h" +#include +#include StatsDialog::StatsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::StatsDialog) { ui->setupUi(this); diff --git a/src/statusbar.h b/src/statusbar.h index 8c0316638..1870e87f3 100644 --- a/src/statusbar.h +++ b/src/statusbar.h @@ -46,6 +46,9 @@ #include "preferences.h" #include "misc.h" +#include +#include + class StatusBar: public QObject { Q_OBJECT diff --git a/src/webui/btjson.cpp b/src/webui/btjson.cpp index ad2be1dca..b276c1de3 100644 --- a/src/webui/btjson.cpp +++ b/src/webui/btjson.cpp @@ -39,6 +39,8 @@ #include #endif +#include + using namespace libtorrent; #if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) diff --git a/src/webui/httpconnection.cpp b/src/webui/httpconnection.cpp index af1f619f5..00ac1c636 100644 --- a/src/webui/httpconnection.cpp +++ b/src/webui/httpconnection.cpp @@ -52,6 +52,8 @@ #include #include +#include + using namespace libtorrent; HttpConnection::HttpConnection(QTcpSocket *socket, HttpServer *parent)