Browse Source

- Move Web UI code to Bittorrent class

adaptive-webui-19844
Christophe Dumez 15 years ago
parent
commit
d3c59f0814
  1. 32
      src/GUI.cpp
  2. 5
      src/GUI.h
  3. 29
      src/bittorrent.cpp
  4. 4
      src/bittorrent.h

32
src/GUI.cpp

@ -62,7 +62,6 @@ @@ -62,7 +62,6 @@
#include "preferences.h"
#include <stdlib.h>
#include "console_imp.h"
#include "httpserver.h"
#include "torrentPersistentData.h"
#include "TransferListFiltersWidget.h"
#include "propertieswidget.h"
@ -171,10 +170,6 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis @@ -171,10 +170,6 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
BTSession->startUpTorrents();
// Add torrent given on command line
processParams(torrentCmdLine);
// Initialize Web UI
if(Preferences::isWebUiEnabled()) {
initWebUi(Preferences::getWebUiUsername(), Preferences::getWebUiPassword(), Preferences::getWebUiPort());
}
// Use a tcp server to allow only one instance of qBittorrent
localServer = new QLocalServer();
QString uid = QString::number(getuid());
@ -238,9 +233,6 @@ GUI::~GUI() { @@ -238,9 +233,6 @@ GUI::~GUI() {
localServer->close();
delete localServer;
delete tabs;
// HTTP Server
if(httpServer)
delete httpServer;
qDebug("3");
// Keyboard shortcuts
delete switchSearchShortcut;
@ -702,16 +694,6 @@ void GUI::loadPreferences(bool configure_session) { @@ -702,16 +694,6 @@ void GUI::loadPreferences(bool configure_session) {
}
systrayIntegration = newSystrayIntegration;
}
// XXX: Should probably be done in bittorrent, not here
// Update Web UI
if (Preferences::isWebUiEnabled()) {
quint16 port = Preferences::getWebUiPort();
QString username = Preferences::getWebUiUsername();
QString password = Preferences::getWebUiPassword();
initWebUi(username, password, port);
} else if(httpServer) {
delete httpServer;
}
// General
bool new_displaySpeedInTitle = Preferences::speedInTitleBar();
if(!new_displaySpeedInTitle && new_displaySpeedInTitle != displaySpeedInTitle) {
@ -893,20 +875,6 @@ void GUI::on_actionOptions_triggered() { @@ -893,20 +875,6 @@ void GUI::on_actionOptions_triggered() {
connect(options, SIGNAL(status_changed()), this, SLOT(optionsSaved()));
}
bool GUI::initWebUi(QString username, QString password, int port) {
if(httpServer)
httpServer->close();
else
httpServer = new HttpServer(BTSession, 3000, this);
httpServer->setAuthorization(username, password);
bool success = httpServer->listen(QHostAddress::Any, port);
if (success)
qDebug("Web UI listening on port %d", port);
else
QMessageBox::critical(this, "Web User Interface Error", "Unable to initialize HTTP Server on port " + misc::toQString(port));
return success;
}
/*****************************************************
* *
* HTTP Downloader *

5
src/GUI.h

@ -53,7 +53,6 @@ class options_imp; @@ -53,7 +53,6 @@ class options_imp;
class QTabWidget;
class QLabel;
class QModelIndex;
class HttpServer;
class QFrame;
class TransferListWidget;
class TransferListFiltersWidget;
@ -97,8 +96,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{ @@ -97,8 +96,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{
SearchEngine *searchEngine;
// RSS
QPointer<RSSImp> rssWidget;
// Web UI
QPointer<HttpServer> httpServer;
// Misc
QLocalServer *localServer;
QLocalSocket *clientConnection;
@ -142,8 +139,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{ @@ -142,8 +139,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void processDownloadedFiles(QString path, QString url);
void downloadFromURLList(const QStringList& urls);
void finishedTorrent(QTorrentHandle& h) const;
//void updateLists(bool force=false);
bool initWebUi(QString username, QString password, int port);
// Options slots
void on_actionOptions_triggered();
void optionsSaved();

29
src/bittorrent.cpp

@ -42,9 +42,10 @@ @@ -42,9 +42,10 @@
#include "preferences.h"
#include "geoip.h"
#include "torrentPersistentData.h"
#include "httpserver.h"
#include <libtorrent/extensions/ut_metadata.hpp>
#ifdef LIBTORRENT_0_15
#include <libtorrent/extensions/lt_trackers.hpp>
#include <libtorrent/extensions/lt_trackers.hpp>
#endif
#include <libtorrent/extensions/ut_pex.hpp>
#include <libtorrent/extensions/smart_ban.hpp>
@ -119,6 +120,9 @@ bittorrent::~bittorrent() { @@ -119,6 +120,9 @@ bittorrent::~bittorrent() {
if(FSWatcher) {
delete FSWatcher;
}
// HTTP Server
if(httpServer)
delete httpServer;
if(timerETA)
delete timerETA;
// Delete BT session
@ -370,6 +374,15 @@ void bittorrent::configureSession() { @@ -370,6 +374,15 @@ void bittorrent::configureSession() {
}else{
disableIPFilter();
}
// Update Web UI
if (Preferences::isWebUiEnabled()) {
quint16 port = Preferences::getWebUiPort();
QString username = Preferences::getWebUiUsername();
QString password = Preferences::getWebUiPassword();
initWebUi(username, password, port);
} else if(httpServer) {
delete httpServer;
}
// * Proxy settings
proxy_settings proxySettings;
if(Preferences::isProxyEnabled()) {
@ -438,6 +451,20 @@ void bittorrent::configureSession() { @@ -438,6 +451,20 @@ void bittorrent::configureSession() {
qDebug("Session configured");
}
bool bittorrent::initWebUi(QString username, QString password, int port) {
if(httpServer)
httpServer->close();
else
httpServer = new HttpServer(this, 3000, this);
httpServer->setAuthorization(username, password);
bool success = httpServer->listen(QHostAddress::Any, port);
if (success)
qDebug("Web UI listening on port %d", port);
else
addConsoleMessage(tr("Web User Interface Error - Unable to bind Web UI to port %1").arg(port), QColor("red"));
return success;
}
void bittorrent::takeETASamples() {
bool change = false;;
foreach(const QString &hash, ETA_samples.keys()) {

4
src/bittorrent.h

@ -48,6 +48,7 @@ class downloadThread; @@ -48,6 +48,7 @@ class downloadThread;
class QTimer;
class FileSystemWatcher;
class FilterParserThread;
class HttpServer;
class bittorrent : public QObject {
Q_OBJECT
@ -79,9 +80,12 @@ class bittorrent : public QObject { @@ -79,9 +80,12 @@ class bittorrent : public QObject {
bool geoipDBLoaded;
QPointer<QTimer> timerETA;
QHash<QString, QList<int> > ETA_samples;
// Web UI
QPointer<HttpServer> httpServer;
protected:
QString getSavePath(QString hash);
bool initWebUi(QString username, QString password, int port);
public:
// Constructor / Destructor

Loading…
Cancel
Save