diff --git a/src/deletionconfirmationdlg.h b/src/deletionconfirmationdlg.h index 4cf089b39..4490c8302 100644 --- a/src/deletionconfirmationdlg.h +++ b/src/deletionconfirmationdlg.h @@ -44,6 +44,7 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg { setupUi(this); move(misc::screenCenter(this)); checkPermDelete->setChecked(Preferences::deleteTorrentFilesAsDefault()); + connect(checkPermDelete, SIGNAL(clicked()), this, SLOT(updateRememberButtonState())); buttonBox->setFocus(); } @@ -60,6 +61,15 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg { return false; } +private slots: + void updateRememberButtonState() { + rememberBtn->setEnabled(checkPermDelete->isChecked() != Preferences::deleteTorrentFilesAsDefault()); + } + + void on_rememberBtn_clicked() { + Preferences::setDeleteTorrentFilesAsDefault(checkPermDelete->isChecked()); + rememberBtn->setEnabled(false); + } }; #endif // DELETIONCONFIRMATIONDLG_H diff --git a/src/options_imp.cpp b/src/options_imp.cpp index 9854e72fe..9b2cb4703 100644 --- a/src/options_imp.cpp +++ b/src/options_imp.cpp @@ -153,1368 +153,1365 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){ #ifdef Q_WS_MAC if(1){ #else - if(!QSystemTrayIcon::isSystemTrayAvailable()){ + if(!QSystemTrayIcon::isSystemTrayAvailable()){ #endif - checkNoSystray->setChecked(true); - checkNoSystray->setEnabled(false); - } - // Connect signals / slots - // General tab - connect(checkNoSystray, SIGNAL(toggled(bool)), this, SLOT(setSystrayOptionsState(bool))); - // Downloads tab - connect(checkTempFolder, SIGNAL(toggled(bool)), this, SLOT(enableTempPathInput(bool))); - connect(checkExportDir, SIGNAL(toggled(bool)), this, SLOT(enableTorrentExport(bool))); - // Connection tab - connect(checkUploadLimit, SIGNAL(toggled(bool)), this, SLOT(enableUploadLimit(bool))); - connect(checkDownloadLimit, SIGNAL(toggled(bool)), this, SLOT(enableDownloadLimit(bool))); - connect(check_schedule, SIGNAL(toggled(bool)), this, SLOT(enableSchedulerFields(bool))); - // Bittorrent tab - connect(checkMaxConnecs, SIGNAL(toggled(bool)), this, SLOT(enableMaxConnecsLimit(bool))); - connect(checkMaxConnecsPerTorrent, SIGNAL(toggled(bool)), this, SLOT(enableMaxConnecsLimitPerTorrent(bool))); - connect(checkMaxUploadsPerTorrent, SIGNAL(toggled(bool)), this, SLOT(enableMaxUploadsLimitPerTorrent(bool))); - connect(checkRatioLimit, SIGNAL(toggled(bool)), this, SLOT(enableShareRatio(bool))); - connect(checkRatioRemove, SIGNAL(toggled(bool)), this, SLOT(enableDeleteRatio(bool))); - connect(checkDHT, SIGNAL(toggled(bool)), this, SLOT(enableDHTSettings(bool))); - connect(checkDifferentDHTPort, SIGNAL(toggled(bool)), this, SLOT(enableDHTPortSettings(bool))); - connect(comboPeerID, SIGNAL(currentIndexChanged(int)), this, SLOT(enableSpoofingSettings(int))); - // Proxy tab - connect(comboProxyType_http, SIGNAL(currentIndexChanged(int)),this, SLOT(enableHTTPProxy(int))); - connect(checkProxyAuth_http, SIGNAL(toggled(bool)), this, SLOT(enableHTTPProxyAuth(bool))); - connect(comboProxyType, SIGNAL(currentIndexChanged(int)),this, SLOT(enablePeerProxy(int))); - connect(checkProxyAuth, SIGNAL(toggled(bool)), this, SLOT(enablePeerProxyAuth(bool))); - // Misc tab - connect(checkIPFilter, SIGNAL(toggled(bool)), this, SLOT(enableFilter(bool))); - connect(checkEnableRSS, SIGNAL(toggled(bool)), this, SLOT(enableRSS(bool))); - connect(checkEnableQueueing, SIGNAL(toggled(bool)), this, SLOT(enableQueueingSystem(bool))); - // Web UI tab - connect(checkWebUi, SIGNAL(toggled(bool)), this, SLOT(enableWebUi(bool))); + checkShowSystray->setChecked(false); + checkShowSystray->setEnabled(false); + } + // Connect signals / slots + // General tab + connect(checkShowSystray, SIGNAL(toggled(bool)), this, SLOT(setSystrayOptionsState(bool))); + // Downloads tab + connect(checkTempFolder, SIGNAL(toggled(bool)), this, SLOT(enableTempPathInput(bool))); + connect(checkExportDir, SIGNAL(toggled(bool)), this, SLOT(enableTorrentExport(bool))); + // Connection tab + connect(checkUploadLimit, SIGNAL(toggled(bool)), this, SLOT(enableUploadLimit(bool))); + connect(checkDownloadLimit, SIGNAL(toggled(bool)), this, SLOT(enableDownloadLimit(bool))); + connect(check_schedule, SIGNAL(toggled(bool)), this, SLOT(enableSchedulerFields(bool))); + // Bittorrent tab + connect(checkMaxConnecs, SIGNAL(toggled(bool)), this, SLOT(enableMaxConnecsLimit(bool))); + connect(checkMaxConnecsPerTorrent, SIGNAL(toggled(bool)), this, SLOT(enableMaxConnecsLimitPerTorrent(bool))); + connect(checkMaxUploadsPerTorrent, SIGNAL(toggled(bool)), this, SLOT(enableMaxUploadsLimitPerTorrent(bool))); + connect(checkRatioLimit, SIGNAL(toggled(bool)), this, SLOT(enableShareRatio(bool))); + connect(checkRatioRemove, SIGNAL(toggled(bool)), this, SLOT(enableDeleteRatio(bool))); + connect(checkDHT, SIGNAL(toggled(bool)), this, SLOT(enableDHTSettings(bool))); + connect(checkDifferentDHTPort, SIGNAL(toggled(bool)), this, SLOT(enableDHTPortSettings(bool))); + connect(comboPeerID, SIGNAL(currentIndexChanged(int)), this, SLOT(enableSpoofingSettings(int))); + // Proxy tab + connect(comboProxyType_http, SIGNAL(currentIndexChanged(int)),this, SLOT(enableHTTPProxy(int))); + connect(checkProxyAuth_http, SIGNAL(toggled(bool)), this, SLOT(enableHTTPProxyAuth(bool))); + connect(comboProxyType, SIGNAL(currentIndexChanged(int)),this, SLOT(enablePeerProxy(int))); + connect(checkProxyAuth, SIGNAL(toggled(bool)), this, SLOT(enablePeerProxyAuth(bool))); + // Misc tab + connect(checkIPFilter, SIGNAL(toggled(bool)), this, SLOT(enableFilter(bool))); + connect(checkEnableRSS, SIGNAL(toggled(bool)), this, SLOT(enableRSS(bool))); + connect(checkEnableQueueing, SIGNAL(toggled(bool)), this, SLOT(enableQueueingSystem(bool))); + // Web UI tab + connect(checkWebUi, SIGNAL(toggled(bool)), this, SLOT(enableWebUi(bool))); - // Apply button is activated when a value is changed - // General tab - connect(comboI18n, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - connect(comboStyle, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - connect(checkAltRowColors, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkNoSystray, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkCloseToSystray, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkMinimizeToSysTray, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkStartMinimized, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkNoSplash, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkDeleteTorrentFiles, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - // Downloads tab - connect(textSavePath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(checkAppendLabel, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkAppendqB, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkPreallocateAll, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkAdditionDialog, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkStartPaused, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkExportDir, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(textExportDir, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(actionTorrentDlOnDblClBox, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - connect(actionTorrentFnOnDblClBox, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - connect(checkTempFolder, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(addScanFolderButton, SIGNAL(clicked()), this, SLOT(enableApplyButton())); - connect(removeScanFolderButton, SIGNAL(clicked()), this, SLOT(enableApplyButton())); - // Connection tab - connect(spinPort, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(checkUPnP, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkNATPMP, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkUploadLimit, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkDownloadLimit, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(spinUploadLimit, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinDownloadLimit, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinUploadLimitAlt, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinDownloadLimitAlt, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(check_schedule, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(schedule_from, SIGNAL(timeChanged(QTime)), this, SLOT(enableApplyButton())); - connect(schedule_to, SIGNAL(timeChanged(QTime)), this, SLOT(enableApplyButton())); - connect(schedule_days, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - // Bittorrent tab - connect(checkMaxConnecs, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkMaxConnecsPerTorrent, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkMaxUploadsPerTorrent, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(spinMaxConnec, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinMaxConnecPerTorrent, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinMaxUploadsPerTorrent, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(checkDHT, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkPeX, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkDifferentDHTPort, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(spinDHTPort, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(checkLSD, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(comboPeerID, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - connect(client_version, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(client_build, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(comboEncryption, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - connect(checkRatioLimit, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkRatioRemove, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(spinRatio, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinMaxRatio, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - // Proxy tab - connect(comboProxyType_http, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - connect(textProxyIP_http, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinProxyPort_http, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(checkProxyAuth_http, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(textProxyUsername_http, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(textProxyPassword_http, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(comboProxyType, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); - connect(textProxyIP, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinProxyPort, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(checkProxyAuth, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(textProxyUsername, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(textProxyPassword, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - // Misc tab - connect(checkIPFilter, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(textFilterPath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinRSSRefresh, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinRSSMaxArticlesPerFeed, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(checkEnableRSS, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(checkEnableQueueing, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(spinMaxActiveDownloads, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinMaxActiveUploads, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - connect(spinMaxActiveTorrents, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); - // Web UI tab - connect(checkWebUi, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); - connect(spinWebUiPort, SIGNAL(valueChanged(int)), this, SLOT(enableApplyButton())); - connect(textWebUiUsername, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - connect(textWebUiPassword, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); - // Disable apply Button - applyButton->setEnabled(false); - // Tab selection mecanism - connect(tabSelection, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWidgetItem*))); + // Apply button is activated when a value is changed + // General tab + connect(comboI18n, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + connect(comboStyle, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + connect(checkAltRowColors, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkShowSystray, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkCloseToSystray, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkMinimizeToSysTray, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkStartMinimized, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkShowSplash, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + // Downloads tab + connect(textSavePath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(checkAppendLabel, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkAppendqB, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkPreallocateAll, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkAdditionDialog, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkStartPaused, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkExportDir, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(textExportDir, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(actionTorrentDlOnDblClBox, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + connect(actionTorrentFnOnDblClBox, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + connect(checkTempFolder, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(addScanFolderButton, SIGNAL(clicked()), this, SLOT(enableApplyButton())); + connect(removeScanFolderButton, SIGNAL(clicked()), this, SLOT(enableApplyButton())); + // Connection tab + connect(spinPort, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(checkUPnP, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkNATPMP, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkUploadLimit, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkDownloadLimit, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(spinUploadLimit, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinDownloadLimit, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinUploadLimitAlt, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinDownloadLimitAlt, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(check_schedule, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(schedule_from, SIGNAL(timeChanged(QTime)), this, SLOT(enableApplyButton())); + connect(schedule_to, SIGNAL(timeChanged(QTime)), this, SLOT(enableApplyButton())); + connect(schedule_days, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + // Bittorrent tab + connect(checkMaxConnecs, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkMaxConnecsPerTorrent, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkMaxUploadsPerTorrent, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(spinMaxConnec, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinMaxConnecPerTorrent, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinMaxUploadsPerTorrent, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(checkDHT, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkPeX, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkDifferentDHTPort, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(spinDHTPort, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(checkLSD, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(comboPeerID, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + connect(client_version, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(client_build, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(comboEncryption, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + connect(checkRatioLimit, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkRatioRemove, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(spinRatio, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinMaxRatio, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + // Proxy tab + connect(comboProxyType_http, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + connect(textProxyIP_http, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinProxyPort_http, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(checkProxyAuth_http, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(textProxyUsername_http, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(textProxyPassword_http, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(comboProxyType, SIGNAL(currentIndexChanged(int)), this, SLOT(enableApplyButton())); + connect(textProxyIP, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinProxyPort, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(checkProxyAuth, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(textProxyUsername, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(textProxyPassword, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + // Misc tab + connect(checkIPFilter, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(textFilterPath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinRSSRefresh, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinRSSMaxArticlesPerFeed, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(checkEnableRSS, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(checkEnableQueueing, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(spinMaxActiveDownloads, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinMaxActiveUploads, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + connect(spinMaxActiveTorrents, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); + // Web UI tab + connect(checkWebUi, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); + connect(spinWebUiPort, SIGNAL(valueChanged(int)), this, SLOT(enableApplyButton())); + connect(textWebUiUsername, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + connect(textWebUiPassword, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); + // Disable apply Button + applyButton->setEnabled(false); + // Tab selection mecanism + connect(tabSelection, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWidgetItem*))); #if LIBTORRENT_VERSION_MINOR < 15 - checkAppendqB->setVisible(false); + checkAppendqB->setVisible(false); #endif - // Load Advanced settings - QVBoxLayout *adv_layout = new QVBoxLayout(); - advancedSettings = new AdvancedSettings(); - adv_layout->addWidget(advancedSettings); - scrollArea_advanced->setLayout(adv_layout); - connect(advancedSettings, SIGNAL(settingsChanged()), this, SLOT(enableApplyButton())); - // Adapt size - show(); - loadWindowState(); -} - -// Main destructor -options_imp::~options_imp(){ - qDebug("-> destructing Options"); - foreach (const QString &path, addedScanDirs) - ScanFoldersModel::instance()->removePath(path); - delete scrollArea_advanced->layout(); - delete advancedSettings; -} - -void options_imp::changePage(QListWidgetItem *current, QListWidgetItem *previous) { - if (!current) - current = previous; - tabOption->setCurrentIndex(tabSelection->row(current)); -} - -void options_imp::useStyle() { - QApplication::setStyle(QStyleFactory::create(comboStyle->itemText(comboStyle->currentIndex()))); -} - -void options_imp::loadWindowState() { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - resize(settings.value(QString::fromUtf8("Preferences/State/size"), sizeFittingScreen()).toSize()); - QPoint p = settings.value(QString::fromUtf8("Preferences/State/pos"), QPoint()).toPoint(); - if(!p.isNull()) - move(p); - // Load slider size - const QStringList &sizes_str = settings.value("Preferences/State/hSplitterSizes", QStringList()).toStringList(); - // Splitter size - QList sizes; - if(sizes_str.size() == 2) { - sizes << sizes_str.first().toInt(); - sizes << sizes_str.last().toInt(); - } else { - sizes << 130; - sizes << hsplitter->width()-130; + // Load Advanced settings + QVBoxLayout *adv_layout = new QVBoxLayout(); + advancedSettings = new AdvancedSettings(); + adv_layout->addWidget(advancedSettings); + scrollArea_advanced->setLayout(adv_layout); + connect(advancedSettings, SIGNAL(settingsChanged()), this, SLOT(enableApplyButton())); + // Adapt size + show(); + loadWindowState(); } - hsplitter->setSizes(sizes); -} -void options_imp::saveWindowState() const { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - settings.setValue(QString::fromUtf8("Preferences/State/size"), size()); - settings.setValue(QString::fromUtf8("Preferences/State/pos"), pos()); - // Splitter size - QStringList sizes_str; - sizes_str << QString::number(hsplitter->sizes().first()); - sizes_str << QString::number(hsplitter->sizes().last()); - settings.setValue(QString::fromUtf8("Preferences/State/hSplitterSizes"), sizes_str); -} - -QSize options_imp::sizeFittingScreen() { - int scrn = 0; - QWidget *w = this->topLevelWidget(); - - if(w) - scrn = QApplication::desktop()->screenNumber(w); - else if(QApplication::desktop()->isVirtualDesktop()) - scrn = QApplication::desktop()->screenNumber(QCursor::pos()); - else - scrn = QApplication::desktop()->screenNumber(this); - - QRect desk(QApplication::desktop()->availableGeometry(scrn)); - if(width() > desk.width() || height() > desk.height()) { - if(desk.width() > 0 && desk.height() > 0) - return QSize(desk.width(), desk.height()); + // Main destructor + options_imp::~options_imp(){ + qDebug("-> destructing Options"); + foreach (const QString &path, addedScanDirs) + ScanFoldersModel::instance()->removePath(path); + delete scrollArea_advanced->layout(); + delete advancedSettings; } - return size(); -} -void options_imp::saveOptions(){ - applyButton->setEnabled(false); - QSettings settings("qBittorrent", "qBittorrent"); - // Apply style - useStyle(); - settings.beginGroup("Preferences"); - // General preferences - settings.beginGroup("General"); - settings.setValue(QString::fromUtf8("Locale"), getLocale()); - settings.setValue(QString::fromUtf8("Style"), getStyle()); - settings.setValue(QString::fromUtf8("AlternatingRowColors"), checkAltRowColors->isChecked()); - settings.setValue(QString::fromUtf8("SystrayEnabled"), systrayIntegration()); - settings.setValue(QString::fromUtf8("CloseToTray"), closeToTray()); - settings.setValue(QString::fromUtf8("MinimizeToTray"), minimizeToTray()); - settings.setValue(QString::fromUtf8("StartMinimized"), startMinimized()); - settings.setValue(QString::fromUtf8("NoSplashScreen"), isSlashScreenDisabled()); - Preferences::setDeleteTorrentFilesAsDefault(checkDeleteTorrentFiles->isChecked()); - // End General preferences - settings.endGroup(); - // Downloads preferences - settings.beginGroup("Downloads"); - QString save_path = getSavePath(); + void options_imp::changePage(QListWidgetItem *current, QListWidgetItem *previous) { + if (!current) + current = previous; + tabOption->setCurrentIndex(tabSelection->row(current)); + } + + void options_imp::useStyle() { + QApplication::setStyle(QStyleFactory::create(comboStyle->itemText(comboStyle->currentIndex()))); + } + + void options_imp::loadWindowState() { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + resize(settings.value(QString::fromUtf8("Preferences/State/size"), sizeFittingScreen()).toSize()); + QPoint p = settings.value(QString::fromUtf8("Preferences/State/pos"), QPoint()).toPoint(); + if(!p.isNull()) + move(p); + // Load slider size + const QStringList &sizes_str = settings.value("Preferences/State/hSplitterSizes", QStringList()).toStringList(); + // Splitter size + QList sizes; + if(sizes_str.size() == 2) { + sizes << sizes_str.first().toInt(); + sizes << sizes_str.last().toInt(); + } else { + sizes << 130; + sizes << hsplitter->width()-130; + } + hsplitter->setSizes(sizes); + } + + void options_imp::saveWindowState() const { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + settings.setValue(QString::fromUtf8("Preferences/State/size"), size()); + settings.setValue(QString::fromUtf8("Preferences/State/pos"), pos()); + // Splitter size + QStringList sizes_str; + sizes_str << QString::number(hsplitter->sizes().first()); + sizes_str << QString::number(hsplitter->sizes().last()); + settings.setValue(QString::fromUtf8("Preferences/State/hSplitterSizes"), sizes_str); + } + + QSize options_imp::sizeFittingScreen() { + int scrn = 0; + QWidget *w = this->topLevelWidget(); + + if(w) + scrn = QApplication::desktop()->screenNumber(w); + else if(QApplication::desktop()->isVirtualDesktop()) + scrn = QApplication::desktop()->screenNumber(QCursor::pos()); + else + scrn = QApplication::desktop()->screenNumber(this); + + QRect desk(QApplication::desktop()->availableGeometry(scrn)); + if(width() > desk.width() || height() > desk.height()) { + if(desk.width() > 0 && desk.height() > 0) + return QSize(desk.width(), desk.height()); + } + return size(); + } + + void options_imp::saveOptions(){ + applyButton->setEnabled(false); + QSettings settings("qBittorrent", "qBittorrent"); + // Apply style + useStyle(); + settings.beginGroup("Preferences"); + // General preferences + settings.beginGroup("General"); + settings.setValue(QString::fromUtf8("Locale"), getLocale()); + settings.setValue(QString::fromUtf8("Style"), getStyle()); + settings.setValue(QString::fromUtf8("AlternatingRowColors"), checkAltRowColors->isChecked()); + settings.setValue(QString::fromUtf8("SystrayEnabled"), systrayIntegration()); + settings.setValue(QString::fromUtf8("CloseToTray"), closeToTray()); + settings.setValue(QString::fromUtf8("MinimizeToTray"), minimizeToTray()); + settings.setValue(QString::fromUtf8("StartMinimized"), startMinimized()); + settings.setValue(QString::fromUtf8("NoSplashScreen"), isSlashScreenDisabled()); + // End General preferences + settings.endGroup(); + // Downloads preferences + settings.beginGroup("Downloads"); + QString save_path = getSavePath(); #ifdef Q_WS_WIN - save_path = save_path.replace("\\", "/"); + save_path = save_path.replace("\\", "/"); #endif - settings.setValue(QString::fromUtf8("SavePath"), save_path); - settings.setValue(QString::fromUtf8("TempPathEnabled"), isTempPathEnabled()); - QString temp_path = getTempPath(); + settings.setValue(QString::fromUtf8("SavePath"), save_path); + settings.setValue(QString::fromUtf8("TempPathEnabled"), isTempPathEnabled()); + QString temp_path = getTempPath(); #ifdef Q_WS_WIN - temp_path = temp_path.replace("\\", "/"); + temp_path = temp_path.replace("\\", "/"); #endif - settings.setValue(QString::fromUtf8("TempPath"), temp_path); - settings.setValue(QString::fromUtf8("AppendLabel"), checkAppendLabel->isChecked()); + settings.setValue(QString::fromUtf8("TempPath"), temp_path); + settings.setValue(QString::fromUtf8("AppendLabel"), checkAppendLabel->isChecked()); #if LIBTORRENT_VERSION_MINOR > 14 - settings.setValue(QString::fromUtf8("UseIncompleteExtension"), checkAppendqB->isChecked()); + settings.setValue(QString::fromUtf8("UseIncompleteExtension"), checkAppendqB->isChecked()); #endif - settings.setValue(QString::fromUtf8("PreAllocation"), preAllocateAllFiles()); - settings.setValue(QString::fromUtf8("AdditionDialog"), useAdditionDialog()); - settings.setValue(QString::fromUtf8("StartInPause"), addTorrentsInPause()); - ScanFoldersModel::instance()->makePersistent(settings); - addedScanDirs.clear(); - QString export_dir = getExportDir(); + settings.setValue(QString::fromUtf8("PreAllocation"), preAllocateAllFiles()); + settings.setValue(QString::fromUtf8("AdditionDialog"), useAdditionDialog()); + settings.setValue(QString::fromUtf8("StartInPause"), addTorrentsInPause()); + ScanFoldersModel::instance()->makePersistent(settings); + addedScanDirs.clear(); + QString export_dir = getExportDir(); #ifdef Q_WS_WIN - export_dir = export_dir.replace("\\", "/"); + export_dir = export_dir.replace("\\", "/"); #endif - Preferences::setExportDir(export_dir); - settings.setValue(QString::fromUtf8("DblClOnTorDl"), getActionOnDblClOnTorrentDl()); - settings.setValue(QString::fromUtf8("DblClOnTorFn"), getActionOnDblClOnTorrentFn()); - // End Downloads preferences - settings.endGroup(); - // Connection preferences - settings.beginGroup("Connection"); - settings.setValue(QString::fromUtf8("PortRangeMin"), getPort()); - settings.setValue(QString::fromUtf8("UPnP"), isUPnPEnabled()); - settings.setValue(QString::fromUtf8("NAT-PMP"), isNATPMPEnabled()); - settings.setValue(QString::fromUtf8("GlobalDLLimit"), getGlobalBandwidthLimits().first); - settings.setValue(QString::fromUtf8("GlobalUPLimit"), getGlobalBandwidthLimits().second); - Preferences::setAltGlobalDownloadLimit(spinDownloadLimitAlt->value()); - Preferences::setAltGlobalUploadLimit(spinUploadLimitAlt->value()); - Preferences::setSchedulerEnabled(check_schedule->isChecked()); - Preferences::setSchedulerStartTime(schedule_from->time()); - Preferences::setSchedulerEndTime(schedule_to->time()); - Preferences::setSchedulerDays((scheduler_days)schedule_days->currentIndex()); - settings.setValue(QString::fromUtf8("ProxyType"), getPeerProxyType()); - //if(isProxyEnabled()) { - settings.beginGroup("Proxy"); - // Proxy is enabled, save settings - settings.setValue(QString::fromUtf8("IP"), getPeerProxyIp()); - settings.setValue(QString::fromUtf8("Port"), getPeerProxyPort()); - settings.setValue(QString::fromUtf8("Authentication"), isPeerProxyAuthEnabled()); - //if(isProxyAuthEnabled()) { - // Credentials - settings.setValue(QString::fromUtf8("Username"), getPeerProxyUsername()); - settings.setValue(QString::fromUtf8("Password"), getPeerProxyPassword()); - //} - settings.endGroup(); // End Proxy - //} - settings.setValue(QString::fromUtf8("HTTPProxyType"), getHTTPProxyType()); - //if(isHTTPProxyEnabled()) { - settings.beginGroup("HTTPProxy"); - // Proxy is enabled, save settings - settings.setValue(QString::fromUtf8("IP"), getHTTPProxyIp()); - settings.setValue(QString::fromUtf8("Port"), getHTTPProxyPort()); - settings.setValue(QString::fromUtf8("Authentication"), isHTTPProxyAuthEnabled()); - //if(isHTTPProxyAuthEnabled()) { - // Credentials - settings.setValue(QString::fromUtf8("Username"), getHTTPProxyUsername()); - settings.setValue(QString::fromUtf8("Password"), getHTTPProxyPassword()); - //} - settings.endGroup(); // End HTTPProxy - //} - // End Connection preferences - settings.endGroup(); - // Bittorrent preferences - settings.beginGroup("Bittorrent"); - settings.setValue(QString::fromUtf8("MaxConnecs"), getMaxConnecs()); - settings.setValue(QString::fromUtf8("MaxConnecsPerTorrent"), getMaxConnecsPerTorrent()); - settings.setValue(QString::fromUtf8("MaxUploadsPerTorrent"), getMaxUploadsPerTorrent()); - settings.setValue(QString::fromUtf8("DHT"), isDHTEnabled()); - settings.setValue(QString::fromUtf8("PeX"), checkPeX->isChecked()); - settings.setValue(QString::fromUtf8("sameDHTPortAsBT"), isDHTPortSameAsBT()); - settings.setValue(QString::fromUtf8("DHTPort"), getDHTPort()); - settings.setValue(QString::fromUtf8("LSD"), isLSDEnabled()); - // Peer ID usurpation - switch(comboPeerID->currentIndex()) { - case 3: // KTorrent - Preferences::setPeerID("KT"); - Preferences::setClientVersion(client_version->text()); - break; - case 2: // uTorrent - Preferences::setPeerID("UT"); - Preferences::setClientVersion(client_version->text()); - Preferences::setClientBuild(client_build->text()); - break; - case 1: // Vuze - Preferences::setPeerID("AZ"); - Preferences::setClientVersion(client_version->text()); - break; - default: //qBittorrent - Preferences::setPeerID("qB"); - } - settings.setValue(QString::fromUtf8("Encryption"), getEncryptionSetting()); - settings.setValue(QString::fromUtf8("DesiredRatio"), getDesiredRatio()); - settings.setValue(QString::fromUtf8("MaxRatio"), getDeleteRatio()); - // End Bittorrent preferences - settings.endGroup(); - // Misc preferences - // * IPFilter - settings.beginGroup("IPFilter"); - settings.setValue(QString::fromUtf8("Enabled"), isFilteringEnabled()); - if(isFilteringEnabled()){ - QString filter_path = textFilterPath->text(); + Preferences::setExportDir(export_dir); + settings.setValue(QString::fromUtf8("DblClOnTorDl"), getActionOnDblClOnTorrentDl()); + settings.setValue(QString::fromUtf8("DblClOnTorFn"), getActionOnDblClOnTorrentFn()); + // End Downloads preferences + settings.endGroup(); + // Connection preferences + settings.beginGroup("Connection"); + settings.setValue(QString::fromUtf8("PortRangeMin"), getPort()); + settings.setValue(QString::fromUtf8("UPnP"), isUPnPEnabled()); + settings.setValue(QString::fromUtf8("NAT-PMP"), isNATPMPEnabled()); + settings.setValue(QString::fromUtf8("GlobalDLLimit"), getGlobalBandwidthLimits().first); + settings.setValue(QString::fromUtf8("GlobalUPLimit"), getGlobalBandwidthLimits().second); + Preferences::setAltGlobalDownloadLimit(spinDownloadLimitAlt->value()); + Preferences::setAltGlobalUploadLimit(spinUploadLimitAlt->value()); + Preferences::setSchedulerEnabled(check_schedule->isChecked()); + Preferences::setSchedulerStartTime(schedule_from->time()); + Preferences::setSchedulerEndTime(schedule_to->time()); + Preferences::setSchedulerDays((scheduler_days)schedule_days->currentIndex()); + settings.setValue(QString::fromUtf8("ProxyType"), getPeerProxyType()); + //if(isProxyEnabled()) { + settings.beginGroup("Proxy"); + // Proxy is enabled, save settings + settings.setValue(QString::fromUtf8("IP"), getPeerProxyIp()); + settings.setValue(QString::fromUtf8("Port"), getPeerProxyPort()); + settings.setValue(QString::fromUtf8("Authentication"), isPeerProxyAuthEnabled()); + //if(isProxyAuthEnabled()) { + // Credentials + settings.setValue(QString::fromUtf8("Username"), getPeerProxyUsername()); + settings.setValue(QString::fromUtf8("Password"), getPeerProxyPassword()); + //} + settings.endGroup(); // End Proxy + //} + settings.setValue(QString::fromUtf8("HTTPProxyType"), getHTTPProxyType()); + //if(isHTTPProxyEnabled()) { + settings.beginGroup("HTTPProxy"); + // Proxy is enabled, save settings + settings.setValue(QString::fromUtf8("IP"), getHTTPProxyIp()); + settings.setValue(QString::fromUtf8("Port"), getHTTPProxyPort()); + settings.setValue(QString::fromUtf8("Authentication"), isHTTPProxyAuthEnabled()); + //if(isHTTPProxyAuthEnabled()) { + // Credentials + settings.setValue(QString::fromUtf8("Username"), getHTTPProxyUsername()); + settings.setValue(QString::fromUtf8("Password"), getHTTPProxyPassword()); + //} + settings.endGroup(); // End HTTPProxy + //} + // End Connection preferences + settings.endGroup(); + // Bittorrent preferences + settings.beginGroup("Bittorrent"); + settings.setValue(QString::fromUtf8("MaxConnecs"), getMaxConnecs()); + settings.setValue(QString::fromUtf8("MaxConnecsPerTorrent"), getMaxConnecsPerTorrent()); + settings.setValue(QString::fromUtf8("MaxUploadsPerTorrent"), getMaxUploadsPerTorrent()); + settings.setValue(QString::fromUtf8("DHT"), isDHTEnabled()); + settings.setValue(QString::fromUtf8("PeX"), checkPeX->isChecked()); + settings.setValue(QString::fromUtf8("sameDHTPortAsBT"), isDHTPortSameAsBT()); + settings.setValue(QString::fromUtf8("DHTPort"), getDHTPort()); + settings.setValue(QString::fromUtf8("LSD"), isLSDEnabled()); + // Peer ID usurpation + switch(comboPeerID->currentIndex()) { + case 3: // KTorrent + Preferences::setPeerID("KT"); + Preferences::setClientVersion(client_version->text()); + break; + case 2: // uTorrent + Preferences::setPeerID("UT"); + Preferences::setClientVersion(client_version->text()); + Preferences::setClientBuild(client_build->text()); + break; + case 1: // Vuze + Preferences::setPeerID("AZ"); + Preferences::setClientVersion(client_version->text()); + break; + default: //qBittorrent + Preferences::setPeerID("qB"); + } + settings.setValue(QString::fromUtf8("Encryption"), getEncryptionSetting()); + settings.setValue(QString::fromUtf8("DesiredRatio"), getDesiredRatio()); + settings.setValue(QString::fromUtf8("MaxRatio"), getDeleteRatio()); + // End Bittorrent preferences + settings.endGroup(); + // Misc preferences + // * IPFilter + settings.beginGroup("IPFilter"); + settings.setValue(QString::fromUtf8("Enabled"), isFilteringEnabled()); + if(isFilteringEnabled()){ + QString filter_path = textFilterPath->text(); #ifdef Q_WS_WIN - filter_path = filter_path.replace("\\", "/"); + filter_path = filter_path.replace("\\", "/"); #endif - settings.setValue(QString::fromUtf8("File"), filter_path); - } - // End IPFilter preferences - settings.endGroup(); - // RSS - settings.beginGroup("RSS"); - settings.setValue(QString::fromUtf8("RSSEnabled"), isRSSEnabled()); - settings.setValue(QString::fromUtf8("RSSRefresh"), spinRSSRefresh->value()); - settings.setValue(QString::fromUtf8("RSSMaxArticlesPerFeed"), spinRSSMaxArticlesPerFeed->value()); - // End RSS preferences - settings.endGroup(); - // Queueing system - settings.beginGroup("Queueing"); - settings.setValue(QString::fromUtf8("QueueingEnabled"), isQueueingSystemEnabled()); - settings.setValue(QString::fromUtf8("MaxActiveDownloads"), spinMaxActiveDownloads->value()); - settings.setValue(QString::fromUtf8("MaxActiveUploads"), spinMaxActiveUploads->value()); - settings.setValue(QString::fromUtf8("MaxActiveTorrents"), spinMaxActiveTorrents->value()); - // End Queueing system preferences - settings.endGroup(); - // Web UI - settings.beginGroup("WebUI"); - settings.setValue("Enabled", isWebUiEnabled()); - if(isWebUiEnabled()) - { - settings.setValue("Port", webUiPort()); - settings.setValue("Username", webUiUsername()); - // FIXME: Check that the password is valid (not empty at least) - Preferences::setWebUiPassword(webUiPassword()); - } - // End Web UI - settings.endGroup(); - // End preferences - settings.endGroup(); - - // Save advanced settings - advancedSettings->saveAdvancedSettings(); -} - -bool options_imp::isFilteringEnabled() const{ - return checkIPFilter->isChecked(); -} - -int options_imp::getPeerProxyType() const{ - switch(comboProxyType->currentIndex()) { - case 1: - return SOCKS4; - break; - case 2: - if(isPeerProxyAuthEnabled()){ - return SOCKS5_PW; + settings.setValue(QString::fromUtf8("File"), filter_path); } - return SOCKS5; - case 3: - if(isPeerProxyAuthEnabled()){ - return HTTP_PW; + // End IPFilter preferences + settings.endGroup(); + // RSS + settings.beginGroup("RSS"); + settings.setValue(QString::fromUtf8("RSSEnabled"), isRSSEnabled()); + settings.setValue(QString::fromUtf8("RSSRefresh"), spinRSSRefresh->value()); + settings.setValue(QString::fromUtf8("RSSMaxArticlesPerFeed"), spinRSSMaxArticlesPerFeed->value()); + // End RSS preferences + settings.endGroup(); + // Queueing system + settings.beginGroup("Queueing"); + settings.setValue(QString::fromUtf8("QueueingEnabled"), isQueueingSystemEnabled()); + settings.setValue(QString::fromUtf8("MaxActiveDownloads"), spinMaxActiveDownloads->value()); + settings.setValue(QString::fromUtf8("MaxActiveUploads"), spinMaxActiveUploads->value()); + settings.setValue(QString::fromUtf8("MaxActiveTorrents"), spinMaxActiveTorrents->value()); + // End Queueing system preferences + settings.endGroup(); + // Web UI + settings.beginGroup("WebUI"); + settings.setValue("Enabled", isWebUiEnabled()); + if(isWebUiEnabled()) + { + settings.setValue("Port", webUiPort()); + settings.setValue("Username", webUiUsername()); + // FIXME: Check that the password is valid (not empty at least) + Preferences::setWebUiPassword(webUiPassword()); } - return HTTP; - default: - return -1; - } -} + // End Web UI + settings.endGroup(); + // End preferences + settings.endGroup(); -int options_imp::getHTTPProxyType() const { - switch(comboProxyType_http->currentIndex()) { - case 1: { - if(isHTTPProxyAuthEnabled()){ - return HTTP_PW; - } - return HTTP; - } - case 2: { - if(isHTTPProxyAuthEnabled()) { + // Save advanced settings + advancedSettings->saveAdvancedSettings(); + } + + bool options_imp::isFilteringEnabled() const{ + return checkIPFilter->isChecked(); + } + + int options_imp::getPeerProxyType() const{ + switch(comboProxyType->currentIndex()) { + case 1: + return SOCKS4; + break; + case 2: + if(isPeerProxyAuthEnabled()){ return SOCKS5_PW; } return SOCKS5; - } - default: - return -1; // Disabled - } -} - -QString options_imp::getStyle() const{ - return comboStyle->itemText(comboStyle->currentIndex()); -} - -void options_imp::setStyle(QString style) { - int index = comboStyle->findText(style, Qt::MatchFixedString); - if(index > 0) - comboStyle->setCurrentIndex(index); -} - -bool options_imp::isHTTPProxyAuthEnabled() const{ - return checkProxyAuth_http->isChecked(); -} - -void options_imp::loadOptions(){ - int intValue; - float floatValue; - QString strValue; - // General preferences - setLocale(Preferences::getLocale()); - setStyle(Preferences::getStyle()); - checkAltRowColors->setChecked(Preferences::useAlternatingRowColors()); - checkNoSystray->setChecked(!Preferences::systrayIntegration()); - checkNoSplash->setChecked(Preferences::isSlashScreenDisabled()); - checkDeleteTorrentFiles->setChecked(Preferences::deleteTorrentFilesAsDefault()); - if(checkNoSystray->isChecked()) { - disableSystrayOptions(); - } else { - enableSystrayOptions(); - checkCloseToSystray->setChecked(Preferences::closeToTray()); - checkMinimizeToSysTray->setChecked(Preferences::minimizeToTray()); - checkStartMinimized->setChecked(Preferences::startMinimized()); - } - // End General preferences - // Downloads preferences - QString save_path = Preferences::getSavePath(); -#ifdef Q_WS_WIN - save_path = save_path.replace("/", "\\"); -#endif - textSavePath->setText(save_path); - if(Preferences::isTempPathEnabled()) { - // enable - checkTempFolder->setChecked(true); - enableTempPathInput(checkTempFolder->isChecked()); - } else { - checkTempFolder->setChecked(false); - enableTempPathInput(checkTempFolder->isChecked()); - } - QString temp_path = Preferences::getTempPath(); -#ifdef Q_WS_WIN - temp_path = temp_path.replace("/", "\\"); -#endif - textTempPath->setText(temp_path); - checkAppendLabel->setChecked(Preferences::appendTorrentLabel()); -#if LIBTORRENT_VERSION_MINOR > 14 - checkAppendqB->setChecked(Preferences::useIncompleteFilesExtension()); -#endif - checkPreallocateAll->setChecked(Preferences::preAllocateAllFiles()); - checkAdditionDialog->setChecked(Preferences::useAdditionDialog()); - checkStartPaused->setChecked(Preferences::addTorrentsInPause()); - - strValue = Preferences::getExportDir(); - if(strValue.isEmpty()) { - // Disable - checkExportDir->setChecked(false); - enableTorrentExport(checkExportDir->isChecked()); - } else { - // enable - checkExportDir->setChecked(true); -#ifdef Q_WS_WIN - strValue = strValue.replace("/", "\\"); -#endif - textExportDir->setText(strValue); - enableTorrentExport(checkExportDir->isChecked()); - } - - intValue = Preferences::getActionOnDblClOnTorrentDl(); - if(intValue >= actionTorrentDlOnDblClBox->count()) - intValue = 0; - actionTorrentDlOnDblClBox->setCurrentIndex(intValue); - intValue = Preferences::getActionOnDblClOnTorrentFn(); - if(intValue >= actionTorrentFnOnDblClBox->count()) - intValue = 1; - actionTorrentFnOnDblClBox->setCurrentIndex(intValue); - // End Downloads preferences - // Connection preferences - spinPort->setValue(Preferences::getSessionPort()); - checkUPnP->setChecked(Preferences::isUPnPEnabled()); - checkNATPMP->setChecked(Preferences::isNATPMPEnabled()); - intValue = Preferences::getGlobalDownloadLimit(); - if(intValue > 0) { - // Enabled - checkDownloadLimit->setChecked(true); - spinDownloadLimit->setEnabled(true); - spinDownloadLimit->setValue(intValue); - } else { - // Disabled - checkDownloadLimit->setChecked(false); - spinDownloadLimit->setEnabled(false); - } - intValue = Preferences::getGlobalUploadLimit(); - if(intValue != -1) { - // Enabled - checkUploadLimit->setChecked(true); - spinUploadLimit->setEnabled(true); - spinUploadLimit->setValue(intValue); - } else { - // Disabled - checkUploadLimit->setChecked(false); - spinUploadLimit->setEnabled(false); - } - spinUploadLimitAlt->setValue(Preferences::getAltGlobalUploadLimit()); - spinDownloadLimitAlt->setValue(Preferences::getAltGlobalDownloadLimit()); - // Scheduler - check_schedule->setChecked(Preferences::isSchedulerEnabled()); - enableSchedulerFields(check_schedule->isChecked()); - schedule_from->setTime(Preferences::getSchedulerStartTime()); - schedule_to->setTime(Preferences::getSchedulerEndTime()); - schedule_days->setCurrentIndex((int)Preferences::getSchedulerDays()); - - intValue = Preferences::getPeerProxyType(); - switch(intValue) { - case SOCKS4: - comboProxyType->setCurrentIndex(1); - break; - case SOCKS5: - case SOCKS5_PW: - comboProxyType->setCurrentIndex(2); - break; - case HTTP: - case HTTP_PW: - comboProxyType->setCurrentIndex(3); - break; - default: - comboProxyType->setCurrentIndex(0); - } - enablePeerProxy(comboProxyType->currentIndex()); - //if(isProxyEnabled()) { - // Proxy is enabled, save settings - textProxyIP->setText(Preferences::getPeerProxyIp()); - spinProxyPort->setValue(Preferences::getPeerProxyPort()); - checkProxyAuth->setChecked(Preferences::isPeerProxyAuthEnabled()); - textProxyUsername->setText(Preferences::getPeerProxyUsername()); - textProxyPassword->setText(Preferences::getPeerProxyPassword()); - enablePeerProxyAuth(checkProxyAuth->isChecked()); - //} - intValue = Preferences::getHTTPProxyType(); - switch(intValue) { - case HTTP: - case HTTP_PW: - comboProxyType_http->setCurrentIndex(1); - break; - case SOCKS5: - case SOCKS5_PW: - comboProxyType_http->setCurrentIndex(2); - break; - default: - comboProxyType_http->setCurrentIndex(0); - } - enableHTTPProxy(comboProxyType_http->currentIndex()); - textProxyUsername_http->setText(Preferences::getHTTPProxyUsername()); - textProxyPassword_http->setText(Preferences::getHTTPProxyPassword()); - textProxyIP_http->setText(Preferences::getHTTPProxyIp()); - spinProxyPort_http->setValue(Preferences::getHTTPProxyPort()); - checkProxyAuth_http->setChecked(Preferences::isHTTPProxyAuthEnabled()); - enableHTTPProxyAuth(checkProxyAuth_http->isChecked()); - // End HTTPProxy - // End Connection preferences - // Bittorrent preferences - intValue = Preferences::getMaxConnecs(); - if(intValue > 0) { - // enable - checkMaxConnecs->setChecked(true); - spinMaxConnec->setEnabled(true); - spinMaxConnec->setValue(intValue); - } else { - // disable - checkMaxConnecs->setChecked(false); - spinMaxConnec->setEnabled(false); - } - intValue = Preferences::getMaxConnecsPerTorrent(); - if(intValue > 0) { - // enable - checkMaxConnecsPerTorrent->setChecked(true); - spinMaxConnecPerTorrent->setEnabled(true); - spinMaxConnecPerTorrent->setValue(intValue); - } else { - // disable - checkMaxConnecsPerTorrent->setChecked(false); - spinMaxConnecPerTorrent->setEnabled(false); - } - intValue = Preferences::getMaxUploadsPerTorrent(); - if(intValue > 0) { - // enable - checkMaxUploadsPerTorrent->setChecked(true); - spinMaxUploadsPerTorrent->setEnabled(true); - spinMaxUploadsPerTorrent->setValue(intValue); - } else { - // disable - checkMaxUploadsPerTorrent->setChecked(false); - spinMaxUploadsPerTorrent->setEnabled(false); - } - checkDHT->setChecked(Preferences::isDHTEnabled()); - enableDHTSettings(checkDHT->isChecked()); - checkDifferentDHTPort->setChecked(!Preferences::isDHTPortSameAsBT()); - enableDHTPortSettings(checkDifferentDHTPort->isChecked()); - spinDHTPort->setValue(Preferences::getDHTPort()); - checkPeX->setChecked(Preferences::isPeXEnabled()); - checkLSD->setChecked(Preferences::isLSDEnabled()); - // Peer ID usurpation - QString peer_id = Preferences::getPeerID(); - if(peer_id == "UT") { - // uTorrent - comboPeerID->setCurrentIndex(2); - enableSpoofingSettings(2); - client_version->setText(Preferences::getClientVersion()); - client_build->setText(Preferences::getClientBuild()); - } else { - if(peer_id == "AZ") { - // Vuze - comboPeerID->setCurrentIndex(1); - enableSpoofingSettings(1); - client_version->setText(Preferences::getClientVersion()); - } else { - if(peer_id == "KT") { - comboPeerID->setCurrentIndex(3); - enableSpoofingSettings(3); - client_version->setText(Preferences::getClientVersion()); - } else { - // qBittorrent - comboPeerID->setCurrentIndex(0); - enableSpoofingSettings(0); + case 3: + if(isPeerProxyAuthEnabled()){ + return HTTP_PW; } + return HTTP; + default: + return -1; } } - comboEncryption->setCurrentIndex(Preferences::getEncryptionSetting()); - floatValue = Preferences::getDesiredRatio(); - if(floatValue >= 1.) { - // Enable - checkRatioLimit->setChecked(true); - spinRatio->setEnabled(true); - spinRatio->setValue(floatValue); - } else { - // Disable - checkRatioLimit->setChecked(false); - spinRatio->setEnabled(false); + + int options_imp::getHTTPProxyType() const { + switch(comboProxyType_http->currentIndex()) { + case 1: { + if(isHTTPProxyAuthEnabled()){ + return HTTP_PW; + } + return HTTP; + } + case 2: { + if(isHTTPProxyAuthEnabled()) { + return SOCKS5_PW; + } + return SOCKS5; + } + default: + return -1; // Disabled + } } - floatValue = Preferences::getDeleteRatio(); - if(floatValue >= 1.) { - // Enable - checkRatioRemove->setChecked(true); - spinMaxRatio->setEnabled(true); - spinMaxRatio->setValue(floatValue); - } else { - // Disable - checkRatioRemove->setChecked(false); - spinMaxRatio->setEnabled(false); + + QString options_imp::getStyle() const{ + return comboStyle->itemText(comboStyle->currentIndex()); } - // End Bittorrent preferences - // Misc preferences - // * IP Filter - checkIPFilter->setChecked(Preferences::isFilteringEnabled()); - enableFilter(checkIPFilter->isChecked()); - textFilterPath->setText(Preferences::getFilter()); - // End IP Filter - // * RSS - checkEnableRSS->setChecked(Preferences::isRSSEnabled()); - enableRSS(checkEnableRSS->isChecked()); - spinRSSRefresh->setValue(Preferences::getRSSRefreshInterval()); - spinRSSMaxArticlesPerFeed->setValue(Preferences::getRSSMaxArticlesPerFeed()); - // End RSS preferences - // Queueing system preferences - checkEnableQueueing->setChecked(Preferences::isQueueingSystemEnabled()); - enableQueueingSystem(checkEnableQueueing->isChecked()); - spinMaxActiveDownloads->setValue(Preferences::getMaxActiveDownloads()); - spinMaxActiveUploads->setValue(Preferences::getMaxActiveUploads()); - spinMaxActiveTorrents->setValue(Preferences::getMaxActiveTorrents()); - // End Queueing system preferences - // Web UI - checkWebUi->setChecked(Preferences::isWebUiEnabled()); - enableWebUi(checkWebUi->isChecked()); - spinWebUiPort->setValue(Preferences::getWebUiPort()); - textWebUiUsername->setText(Preferences::getWebUiUsername()); - textWebUiPassword->setText(Preferences::getWebUiPassword()); - // End Web UI - // Random stuff - srand(time(0)); -} -// return min & max ports -// [min, max] -int options_imp::getPort() const{ - return spinPort->value(); -} - -void options_imp::enableSpoofingSettings(int index) { - switch(index) { - case 0: // qBittorrent - resetPeerVersion_button->setEnabled(false); - version_label->setEnabled(false); - client_version->setEnabled(false); - client_version->clear(); - build_label->setEnabled(false); - client_build->setEnabled(false); - client_build->clear(); - break; - case 1: // Vuze - resetPeerVersion_button->setEnabled(true); - version_label->setEnabled(true); - client_version->setEnabled(true); - client_version->setText(Preferences::getDefaultClientVersion("AZ")); - build_label->setEnabled(false); - client_build->setEnabled(false); - client_build->clear(); - break; - case 2: // uTorrent - resetPeerVersion_button->setEnabled(true); - version_label->setEnabled(true); - client_version->setEnabled(true); - client_version->setText(Preferences::getDefaultClientVersion("UT")); - build_label->setEnabled(true); - client_build->setEnabled(true); - client_build->setText(Preferences::getDefaultClientBuild("UT")); - break; - case 3: // KTorrent - resetPeerVersion_button->setEnabled(true); - version_label->setEnabled(true); - client_version->setEnabled(true); - client_version->setText(Preferences::getDefaultClientVersion("KT")); - build_label->setEnabled(false); - client_build->setEnabled(false); - client_build->clear(); - break; + void options_imp::setStyle(QString style) { + int index = comboStyle->findText(style, Qt::MatchFixedString); + if(index > 0) + comboStyle->setCurrentIndex(index); } -} -void options_imp::on_resetPeerVersion_button_clicked() { - switch(comboPeerID->currentIndex()) { - case 1: // Vuze - client_version->setText(Preferences::getDefaultClientVersion("AZ")); - break; - case 3: // KTorrent - client_version->setText(Preferences::getDefaultClientVersion("KT")); - break; - case 2: // uTorrent - client_version->setText(Preferences::getDefaultClientVersion("UT")); - client_build->setText(Preferences::getDefaultClientBuild("UT")); - break; + bool options_imp::isHTTPProxyAuthEnabled() const{ + return checkProxyAuth_http->isChecked(); } -} -void options_imp::on_randomButton_clicked() { - // Range [1024: 65535] - spinPort->setValue(rand() % 64512 + 1024); -} - -int options_imp::getEncryptionSetting() const{ - return comboEncryption->currentIndex(); -} - -int options_imp::getMaxActiveDownloads() const { - return spinMaxActiveDownloads->value(); -} - -int options_imp::getMaxActiveUploads() const { - return spinMaxActiveUploads->value(); -} - -int options_imp::getMaxActiveTorrents() const { - return spinMaxActiveTorrents->value(); -} - -bool options_imp::minimizeToTray() const{ - if(checkNoSystray->isChecked()) return false; - return checkMinimizeToSysTray->isChecked(); -} - -bool options_imp::closeToTray() const{ - if(checkNoSystray->isChecked()) return false; - return checkCloseToSystray->isChecked(); -} - -bool options_imp::isQueueingSystemEnabled() const { - return checkEnableQueueing->isChecked(); -} - -bool options_imp::isDHTEnabled() const{ - return checkDHT->isChecked(); -} - -bool options_imp::isRSSEnabled() const{ - return checkEnableRSS->isChecked(); -} - -bool options_imp::isLSDEnabled() const{ - return checkLSD->isChecked(); -} - -bool options_imp::isUPnPEnabled() const{ - return checkUPnP->isChecked(); -} - -bool options_imp::isNATPMPEnabled() const{ - return checkNATPMP->isChecked(); -} - -// Return Download & Upload limits in kbps -// [download,upload] -QPair options_imp::getGlobalBandwidthLimits() const{ - int DL = -1, UP = -1; - if(checkDownloadLimit->isChecked()){ - DL = spinDownloadLimit->value(); - } - if(checkUploadLimit->isChecked()){ - UP = spinUploadLimit->value(); - } - return qMakePair(DL, UP); -} - -bool options_imp::startMinimized() const { - if(checkStartMinimized->isChecked()) return true; - return checkStartMinimized->isChecked(); -} - -bool options_imp::systrayIntegration() const{ -#ifdef Q_WS_MAC - return false; -#endif - if (!QSystemTrayIcon::isSystemTrayAvailable()) return false; - return (!checkNoSystray->isChecked()); -} - -int options_imp::getDHTPort() const { - return spinDHTPort->value(); -} - -// Return Share ratio -float options_imp::getDesiredRatio() const{ - if(checkRatioLimit->isChecked()){ - return spinRatio->value(); - } - return -1; -} - -// Return Share ratio -float options_imp::getDeleteRatio() const{ - if(checkRatioRemove->isChecked()){ - return spinMaxRatio->value(); - } - return -1; -} - -// Return Save Path -QString options_imp::getSavePath() const{ - if(textSavePath->text().trimmed().isEmpty()){ + void options_imp::loadOptions(){ + int intValue; + float floatValue; + QString strValue; + // General preferences + setLocale(Preferences::getLocale()); + setStyle(Preferences::getStyle()); + checkAltRowColors->setChecked(Preferences::useAlternatingRowColors()); + checkShowSystray->setChecked(Preferences::systrayIntegration()); + checkShowSplash->setChecked(!Preferences::isSlashScreenDisabled()); + if(!checkShowSystray->isChecked()) { + disableSystrayOptions(); + } else { + enableSystrayOptions(); + checkCloseToSystray->setChecked(Preferences::closeToTray()); + checkMinimizeToSysTray->setChecked(Preferences::minimizeToTray()); + checkStartMinimized->setChecked(Preferences::startMinimized()); + } + // End General preferences + // Downloads preferences QString save_path = Preferences::getSavePath(); #ifdef Q_WS_WIN save_path = save_path.replace("/", "\\"); #endif textSavePath->setText(save_path); - } - return misc::expandPath(textSavePath->text()); -} - -QString options_imp::getTempPath() const { - return misc::expandPath(textTempPath->text()); -} - -bool options_imp::isTempPathEnabled() const { - return checkTempFolder->isChecked(); -} - -// Return max connections number -int options_imp::getMaxConnecs() const{ - if(!checkMaxConnecs->isChecked()){ - return -1; - }else{ - return spinMaxConnec->value(); - } -} - -int options_imp::getMaxConnecsPerTorrent() const{ - if(!checkMaxConnecsPerTorrent->isChecked()){ - return -1; - }else{ - return spinMaxConnecPerTorrent->value(); - } -} - -int options_imp::getMaxUploadsPerTorrent() const{ - if(!checkMaxUploadsPerTorrent->isChecked()){ - return -1; - }else{ - return spinMaxUploadsPerTorrent->value(); - } -} - -void options_imp::on_buttonBox_accepted(){ - if(applyButton->isEnabled()){ - saveOptions(); - applyButton->setEnabled(false); - this->hide(); - emit status_changed(); - } - saveWindowState(); - accept(); -} - -void options_imp::applySettings(QAbstractButton* button) { - if(button == applyButton){ - saveOptions(); - emit status_changed(); - } -} - -void options_imp::closeEvent(QCloseEvent *e){ - setAttribute(Qt::WA_DeleteOnClose); - e->accept(); -} - -void options_imp::on_buttonBox_rejected(){ - setAttribute(Qt::WA_DeleteOnClose); - reject(); -} - -void options_imp::enableDownloadLimit(bool checked){ - if(checked){ - spinDownloadLimit->setEnabled(true); - }else{ - spinDownloadLimit->setEnabled(false); - } -} - -void options_imp::enableTempPathInput(bool checked){ - if(checked){ - textTempPath->setEnabled(true); - browseTempDirButton->setEnabled(true); - }else{ - textTempPath->setEnabled(false); - browseTempDirButton->setEnabled(false); - } -} - -bool options_imp::useAdditionDialog() const{ - return checkAdditionDialog->isChecked(); -} - -void options_imp::enableSchedulerFields(bool checked) { - schedule_from->setEnabled(checked); - schedule_to->setEnabled(checked); - schedule_days->setEnabled(checked); -} - -void options_imp::enableMaxConnecsLimit(bool checked){ - spinMaxConnec->setEnabled(checked); -} - -void options_imp::enableQueueingSystem(bool checked) { - spinMaxActiveDownloads->setEnabled(checked); - spinMaxActiveUploads->setEnabled(checked); - label_max_active_dl->setEnabled(checked); - label_max_active_up->setEnabled(checked); - maxActiveTorrents_lbl->setEnabled(checked); - spinMaxActiveTorrents->setEnabled(checked); -} - -void options_imp::enableMaxConnecsLimitPerTorrent(bool checked){ - spinMaxConnecPerTorrent->setEnabled(checked); -} - -void options_imp::enableSystrayOptions() { - checkCloseToSystray->setEnabled(true); - checkMinimizeToSysTray->setEnabled(true); -} - -void options_imp::disableSystrayOptions() { - checkCloseToSystray->setEnabled(false); - checkMinimizeToSysTray->setEnabled(false); -} - -void options_imp::setSystrayOptionsState(bool checked) { - if(checked) { - disableSystrayOptions(); - } else { - enableSystrayOptions(); - } -} - -void options_imp::enableMaxUploadsLimitPerTorrent(bool checked){ - if(checked){ - spinMaxUploadsPerTorrent->setEnabled(true); - }else{ - spinMaxUploadsPerTorrent->setEnabled(false); - } -} - -void options_imp::enableFilter(bool checked){ - lblFilterPath->setEnabled(checked); - textFilterPath->setEnabled(checked); - browseFilterButton->setEnabled(checked); -} - -void options_imp::enableRSS(bool checked) { - groupRSSSettings->setEnabled(checked); -} - -void options_imp::enableUploadLimit(bool checked){ - spinUploadLimit->setEnabled(checked); -} - -void options_imp::enableApplyButton(){ - applyButton->setEnabled(true); -} - -void options_imp::enableShareRatio(bool checked){ - spinRatio->setEnabled(checked); -} - -void options_imp::enableDHTPortSettings(bool checked) { - spinDHTPort->setEnabled(checked); - dh_port_lbl->setEnabled(checked); -} - -void options_imp::enableDHTSettings(bool checked) { - if(checked){ - checkDifferentDHTPort->setEnabled(true); - enableDHTPortSettings(checkDifferentDHTPort->isChecked()); - }else{ - checkDifferentDHTPort->setEnabled(false); - enableDHTPortSettings(false); - } -} - - -void options_imp::enableDeleteRatio(bool checked){ - spinMaxRatio->setEnabled(checked); -} - -void options_imp::enablePeerProxy(int index){ - if(index){ - //enable - lblProxyIP->setEnabled(true); - textProxyIP->setEnabled(true); - lblProxyPort->setEnabled(true); - spinProxyPort->setEnabled(true); - if(index > 1) { - checkProxyAuth->setEnabled(true); + if(Preferences::isTempPathEnabled()) { + // enable + checkTempFolder->setChecked(true); + enableTempPathInput(checkTempFolder->isChecked()); } else { + checkTempFolder->setChecked(false); + enableTempPathInput(checkTempFolder->isChecked()); + } + QString temp_path = Preferences::getTempPath(); +#ifdef Q_WS_WIN + temp_path = temp_path.replace("/", "\\"); +#endif + textTempPath->setText(temp_path); + checkAppendLabel->setChecked(Preferences::appendTorrentLabel()); +#if LIBTORRENT_VERSION_MINOR > 14 + checkAppendqB->setChecked(Preferences::useIncompleteFilesExtension()); +#endif + checkPreallocateAll->setChecked(Preferences::preAllocateAllFiles()); + checkAdditionDialog->setChecked(Preferences::useAdditionDialog()); + checkStartPaused->setChecked(Preferences::addTorrentsInPause()); + + strValue = Preferences::getExportDir(); + if(strValue.isEmpty()) { + // Disable + checkExportDir->setChecked(false); + enableTorrentExport(checkExportDir->isChecked()); + } else { + // enable + checkExportDir->setChecked(true); +#ifdef Q_WS_WIN + strValue = strValue.replace("/", "\\"); +#endif + textExportDir->setText(strValue); + enableTorrentExport(checkExportDir->isChecked()); + } + + intValue = Preferences::getActionOnDblClOnTorrentDl(); + if(intValue >= actionTorrentDlOnDblClBox->count()) + intValue = 0; + actionTorrentDlOnDblClBox->setCurrentIndex(intValue); + intValue = Preferences::getActionOnDblClOnTorrentFn(); + if(intValue >= actionTorrentFnOnDblClBox->count()) + intValue = 1; + actionTorrentFnOnDblClBox->setCurrentIndex(intValue); + // End Downloads preferences + // Connection preferences + spinPort->setValue(Preferences::getSessionPort()); + checkUPnP->setChecked(Preferences::isUPnPEnabled()); + checkNATPMP->setChecked(Preferences::isNATPMPEnabled()); + intValue = Preferences::getGlobalDownloadLimit(); + if(intValue > 0) { + // Enabled + checkDownloadLimit->setChecked(true); + spinDownloadLimit->setEnabled(true); + spinDownloadLimit->setValue(intValue); + } else { + // Disabled + checkDownloadLimit->setChecked(false); + spinDownloadLimit->setEnabled(false); + } + intValue = Preferences::getGlobalUploadLimit(); + if(intValue != -1) { + // Enabled + checkUploadLimit->setChecked(true); + spinUploadLimit->setEnabled(true); + spinUploadLimit->setValue(intValue); + } else { + // Disabled + checkUploadLimit->setChecked(false); + spinUploadLimit->setEnabled(false); + } + spinUploadLimitAlt->setValue(Preferences::getAltGlobalUploadLimit()); + spinDownloadLimitAlt->setValue(Preferences::getAltGlobalDownloadLimit()); + // Scheduler + check_schedule->setChecked(Preferences::isSchedulerEnabled()); + enableSchedulerFields(check_schedule->isChecked()); + schedule_from->setTime(Preferences::getSchedulerStartTime()); + schedule_to->setTime(Preferences::getSchedulerEndTime()); + schedule_days->setCurrentIndex((int)Preferences::getSchedulerDays()); + + intValue = Preferences::getPeerProxyType(); + switch(intValue) { + case SOCKS4: + comboProxyType->setCurrentIndex(1); + break; + case SOCKS5: + case SOCKS5_PW: + comboProxyType->setCurrentIndex(2); + break; + case HTTP: + case HTTP_PW: + comboProxyType->setCurrentIndex(3); + break; + default: + comboProxyType->setCurrentIndex(0); + } + enablePeerProxy(comboProxyType->currentIndex()); + //if(isProxyEnabled()) { + // Proxy is enabled, save settings + textProxyIP->setText(Preferences::getPeerProxyIp()); + spinProxyPort->setValue(Preferences::getPeerProxyPort()); + checkProxyAuth->setChecked(Preferences::isPeerProxyAuthEnabled()); + textProxyUsername->setText(Preferences::getPeerProxyUsername()); + textProxyPassword->setText(Preferences::getPeerProxyPassword()); + enablePeerProxyAuth(checkProxyAuth->isChecked()); + //} + intValue = Preferences::getHTTPProxyType(); + switch(intValue) { + case HTTP: + case HTTP_PW: + comboProxyType_http->setCurrentIndex(1); + break; + case SOCKS5: + case SOCKS5_PW: + comboProxyType_http->setCurrentIndex(2); + break; + default: + comboProxyType_http->setCurrentIndex(0); + } + enableHTTPProxy(comboProxyType_http->currentIndex()); + textProxyUsername_http->setText(Preferences::getHTTPProxyUsername()); + textProxyPassword_http->setText(Preferences::getHTTPProxyPassword()); + textProxyIP_http->setText(Preferences::getHTTPProxyIp()); + spinProxyPort_http->setValue(Preferences::getHTTPProxyPort()); + checkProxyAuth_http->setChecked(Preferences::isHTTPProxyAuthEnabled()); + enableHTTPProxyAuth(checkProxyAuth_http->isChecked()); + // End HTTPProxy + // End Connection preferences + // Bittorrent preferences + intValue = Preferences::getMaxConnecs(); + if(intValue > 0) { + // enable + checkMaxConnecs->setChecked(true); + spinMaxConnec->setEnabled(true); + spinMaxConnec->setValue(intValue); + } else { + // disable + checkMaxConnecs->setChecked(false); + spinMaxConnec->setEnabled(false); + } + intValue = Preferences::getMaxConnecsPerTorrent(); + if(intValue > 0) { + // enable + checkMaxConnecsPerTorrent->setChecked(true); + spinMaxConnecPerTorrent->setEnabled(true); + spinMaxConnecPerTorrent->setValue(intValue); + } else { + // disable + checkMaxConnecsPerTorrent->setChecked(false); + spinMaxConnecPerTorrent->setEnabled(false); + } + intValue = Preferences::getMaxUploadsPerTorrent(); + if(intValue > 0) { + // enable + checkMaxUploadsPerTorrent->setChecked(true); + spinMaxUploadsPerTorrent->setEnabled(true); + spinMaxUploadsPerTorrent->setValue(intValue); + } else { + // disable + checkMaxUploadsPerTorrent->setChecked(false); + spinMaxUploadsPerTorrent->setEnabled(false); + } + checkDHT->setChecked(Preferences::isDHTEnabled()); + enableDHTSettings(checkDHT->isChecked()); + checkDifferentDHTPort->setChecked(!Preferences::isDHTPortSameAsBT()); + enableDHTPortSettings(checkDifferentDHTPort->isChecked()); + spinDHTPort->setValue(Preferences::getDHTPort()); + checkPeX->setChecked(Preferences::isPeXEnabled()); + checkLSD->setChecked(Preferences::isLSDEnabled()); + // Peer ID usurpation + QString peer_id = Preferences::getPeerID(); + if(peer_id == "UT") { + // uTorrent + comboPeerID->setCurrentIndex(2); + enableSpoofingSettings(2); + client_version->setText(Preferences::getClientVersion()); + client_build->setText(Preferences::getClientBuild()); + } else { + if(peer_id == "AZ") { + // Vuze + comboPeerID->setCurrentIndex(1); + enableSpoofingSettings(1); + client_version->setText(Preferences::getClientVersion()); + } else { + if(peer_id == "KT") { + comboPeerID->setCurrentIndex(3); + enableSpoofingSettings(3); + client_version->setText(Preferences::getClientVersion()); + } else { + // qBittorrent + comboPeerID->setCurrentIndex(0); + enableSpoofingSettings(0); + } + } + } + comboEncryption->setCurrentIndex(Preferences::getEncryptionSetting()); + floatValue = Preferences::getDesiredRatio(); + if(floatValue >= 1.) { + // Enable + checkRatioLimit->setChecked(true); + spinRatio->setEnabled(true); + spinRatio->setValue(floatValue); + } else { + // Disable + checkRatioLimit->setChecked(false); + spinRatio->setEnabled(false); + } + floatValue = Preferences::getDeleteRatio(); + if(floatValue >= 1.) { + // Enable + checkRatioRemove->setChecked(true); + spinMaxRatio->setEnabled(true); + spinMaxRatio->setValue(floatValue); + } else { + // Disable + checkRatioRemove->setChecked(false); + spinMaxRatio->setEnabled(false); + } + // End Bittorrent preferences + // Misc preferences + // * IP Filter + checkIPFilter->setChecked(Preferences::isFilteringEnabled()); + enableFilter(checkIPFilter->isChecked()); + textFilterPath->setText(Preferences::getFilter()); + // End IP Filter + // * RSS + checkEnableRSS->setChecked(Preferences::isRSSEnabled()); + enableRSS(checkEnableRSS->isChecked()); + spinRSSRefresh->setValue(Preferences::getRSSRefreshInterval()); + spinRSSMaxArticlesPerFeed->setValue(Preferences::getRSSMaxArticlesPerFeed()); + // End RSS preferences + // Queueing system preferences + checkEnableQueueing->setChecked(Preferences::isQueueingSystemEnabled()); + enableQueueingSystem(checkEnableQueueing->isChecked()); + spinMaxActiveDownloads->setValue(Preferences::getMaxActiveDownloads()); + spinMaxActiveUploads->setValue(Preferences::getMaxActiveUploads()); + spinMaxActiveTorrents->setValue(Preferences::getMaxActiveTorrents()); + // End Queueing system preferences + // Web UI + checkWebUi->setChecked(Preferences::isWebUiEnabled()); + enableWebUi(checkWebUi->isChecked()); + spinWebUiPort->setValue(Preferences::getWebUiPort()); + textWebUiUsername->setText(Preferences::getWebUiUsername()); + textWebUiPassword->setText(Preferences::getWebUiPassword()); + // End Web UI + // Random stuff + srand(time(0)); + } + + // return min & max ports + // [min, max] + int options_imp::getPort() const{ + return spinPort->value(); + } + + void options_imp::enableSpoofingSettings(int index) { + switch(index) { + case 0: // qBittorrent + resetPeerVersion_button->setEnabled(false); + version_label->setEnabled(false); + client_version->setEnabled(false); + client_version->clear(); + build_label->setEnabled(false); + client_build->setEnabled(false); + client_build->clear(); + break; + case 1: // Vuze + resetPeerVersion_button->setEnabled(true); + version_label->setEnabled(true); + client_version->setEnabled(true); + client_version->setText(Preferences::getDefaultClientVersion("AZ")); + build_label->setEnabled(false); + client_build->setEnabled(false); + client_build->clear(); + break; + case 2: // uTorrent + resetPeerVersion_button->setEnabled(true); + version_label->setEnabled(true); + client_version->setEnabled(true); + client_version->setText(Preferences::getDefaultClientVersion("UT")); + build_label->setEnabled(true); + client_build->setEnabled(true); + client_build->setText(Preferences::getDefaultClientBuild("UT")); + break; + case 3: // KTorrent + resetPeerVersion_button->setEnabled(true); + version_label->setEnabled(true); + client_version->setEnabled(true); + client_version->setText(Preferences::getDefaultClientVersion("KT")); + build_label->setEnabled(false); + client_build->setEnabled(false); + client_build->clear(); + break; + } + } + + void options_imp::on_resetPeerVersion_button_clicked() { + switch(comboPeerID->currentIndex()) { + case 1: // Vuze + client_version->setText(Preferences::getDefaultClientVersion("AZ")); + break; + case 3: // KTorrent + client_version->setText(Preferences::getDefaultClientVersion("KT")); + break; + case 2: // uTorrent + client_version->setText(Preferences::getDefaultClientVersion("UT")); + client_build->setText(Preferences::getDefaultClientBuild("UT")); + break; + } + } + + void options_imp::on_randomButton_clicked() { + // Range [1024: 65535] + spinPort->setValue(rand() % 64512 + 1024); + } + + int options_imp::getEncryptionSetting() const{ + return comboEncryption->currentIndex(); + } + + int options_imp::getMaxActiveDownloads() const { + return spinMaxActiveDownloads->value(); + } + + int options_imp::getMaxActiveUploads() const { + return spinMaxActiveUploads->value(); + } + + int options_imp::getMaxActiveTorrents() const { + return spinMaxActiveTorrents->value(); + } + + bool options_imp::minimizeToTray() const{ + if(!checkShowSystray->isChecked()) return false; + return checkMinimizeToSysTray->isChecked(); + } + + bool options_imp::closeToTray() const{ + if(!checkShowSystray->isChecked()) return false; + return checkCloseToSystray->isChecked(); + } + + bool options_imp::isQueueingSystemEnabled() const { + return checkEnableQueueing->isChecked(); + } + + bool options_imp::isDHTEnabled() const{ + return checkDHT->isChecked(); + } + + bool options_imp::isRSSEnabled() const{ + return checkEnableRSS->isChecked(); + } + + bool options_imp::isLSDEnabled() const{ + return checkLSD->isChecked(); + } + + bool options_imp::isUPnPEnabled() const{ + return checkUPnP->isChecked(); + } + + bool options_imp::isNATPMPEnabled() const{ + return checkNATPMP->isChecked(); + } + + // Return Download & Upload limits in kbps + // [download,upload] + QPair options_imp::getGlobalBandwidthLimits() const{ + int DL = -1, UP = -1; + if(checkDownloadLimit->isChecked()){ + DL = spinDownloadLimit->value(); + } + if(checkUploadLimit->isChecked()){ + UP = spinUploadLimit->value(); + } + return qMakePair(DL, UP); + } + + bool options_imp::startMinimized() const { + if(checkStartMinimized->isChecked()) return true; + return checkStartMinimized->isChecked(); + } + + bool options_imp::systrayIntegration() const{ +#ifdef Q_WS_MAC + return false; +#endif + if (!QSystemTrayIcon::isSystemTrayAvailable()) return false; + return checkShowSystray->isChecked(); + } + + int options_imp::getDHTPort() const { + return spinDHTPort->value(); + } + + // Return Share ratio + float options_imp::getDesiredRatio() const{ + if(checkRatioLimit->isChecked()){ + return spinRatio->value(); + } + return -1; + } + + // Return Share ratio + float options_imp::getDeleteRatio() const{ + if(checkRatioRemove->isChecked()){ + return spinMaxRatio->value(); + } + return -1; + } + + // Return Save Path + QString options_imp::getSavePath() const{ + if(textSavePath->text().trimmed().isEmpty()){ + QString save_path = Preferences::getSavePath(); +#ifdef Q_WS_WIN + save_path = save_path.replace("/", "\\"); +#endif + textSavePath->setText(save_path); + } + return misc::expandPath(textSavePath->text()); + } + + QString options_imp::getTempPath() const { + return misc::expandPath(textTempPath->text()); + } + + bool options_imp::isTempPathEnabled() const { + return checkTempFolder->isChecked(); + } + + // Return max connections number + int options_imp::getMaxConnecs() const{ + if(!checkMaxConnecs->isChecked()){ + return -1; + }else{ + return spinMaxConnec->value(); + } + } + + int options_imp::getMaxConnecsPerTorrent() const{ + if(!checkMaxConnecsPerTorrent->isChecked()){ + return -1; + }else{ + return spinMaxConnecPerTorrent->value(); + } + } + + int options_imp::getMaxUploadsPerTorrent() const{ + if(!checkMaxUploadsPerTorrent->isChecked()){ + return -1; + }else{ + return spinMaxUploadsPerTorrent->value(); + } + } + + void options_imp::on_buttonBox_accepted(){ + if(applyButton->isEnabled()){ + saveOptions(); + applyButton->setEnabled(false); + this->hide(); + emit status_changed(); + } + saveWindowState(); + accept(); + } + + void options_imp::applySettings(QAbstractButton* button) { + if(button == applyButton){ + saveOptions(); + emit status_changed(); + } + } + + void options_imp::closeEvent(QCloseEvent *e){ + setAttribute(Qt::WA_DeleteOnClose); + e->accept(); + } + + void options_imp::on_buttonBox_rejected(){ + setAttribute(Qt::WA_DeleteOnClose); + reject(); + } + + void options_imp::enableDownloadLimit(bool checked){ + if(checked){ + spinDownloadLimit->setEnabled(true); + }else{ + spinDownloadLimit->setEnabled(false); + } + } + + void options_imp::enableTempPathInput(bool checked){ + if(checked){ + textTempPath->setEnabled(true); + browseTempDirButton->setEnabled(true); + }else{ + textTempPath->setEnabled(false); + browseTempDirButton->setEnabled(false); + } + } + + bool options_imp::useAdditionDialog() const{ + return checkAdditionDialog->isChecked(); + } + + void options_imp::enableSchedulerFields(bool checked) { + schedule_from->setEnabled(checked); + schedule_to->setEnabled(checked); + schedule_days->setEnabled(checked); + } + + void options_imp::enableMaxConnecsLimit(bool checked){ + spinMaxConnec->setEnabled(checked); + } + + void options_imp::enableQueueingSystem(bool checked) { + spinMaxActiveDownloads->setEnabled(checked); + spinMaxActiveUploads->setEnabled(checked); + label_max_active_dl->setEnabled(checked); + label_max_active_up->setEnabled(checked); + maxActiveTorrents_lbl->setEnabled(checked); + spinMaxActiveTorrents->setEnabled(checked); + } + + void options_imp::enableMaxConnecsLimitPerTorrent(bool checked){ + spinMaxConnecPerTorrent->setEnabled(checked); + } + + void options_imp::enableSystrayOptions() { + checkCloseToSystray->setEnabled(true); + checkMinimizeToSysTray->setEnabled(true); + } + + void options_imp::disableSystrayOptions() { + checkCloseToSystray->setEnabled(false); + checkMinimizeToSysTray->setEnabled(false); + } + + void options_imp::setSystrayOptionsState(bool checked) { + if(checked) { + enableSystrayOptions(); + } else { + disableSystrayOptions(); + } + } + + void options_imp::enableMaxUploadsLimitPerTorrent(bool checked){ + if(checked){ + spinMaxUploadsPerTorrent->setEnabled(true); + }else{ + spinMaxUploadsPerTorrent->setEnabled(false); + } + } + + void options_imp::enableFilter(bool checked){ + lblFilterPath->setEnabled(checked); + textFilterPath->setEnabled(checked); + browseFilterButton->setEnabled(checked); + } + + void options_imp::enableRSS(bool checked) { + groupRSSSettings->setEnabled(checked); + } + + void options_imp::enableUploadLimit(bool checked){ + spinUploadLimit->setEnabled(checked); + } + + void options_imp::enableApplyButton(){ + applyButton->setEnabled(true); + } + + void options_imp::enableShareRatio(bool checked){ + spinRatio->setEnabled(checked); + } + + void options_imp::enableDHTPortSettings(bool checked) { + spinDHTPort->setEnabled(checked); + dh_port_lbl->setEnabled(checked); + } + + void options_imp::enableDHTSettings(bool checked) { + if(checked){ + checkDifferentDHTPort->setEnabled(true); + enableDHTPortSettings(checkDifferentDHTPort->isChecked()); + }else{ + checkDifferentDHTPort->setEnabled(false); + enableDHTPortSettings(false); + } + } + + + void options_imp::enableDeleteRatio(bool checked){ + spinMaxRatio->setEnabled(checked); + } + + void options_imp::enablePeerProxy(int index){ + if(index){ + //enable + lblProxyIP->setEnabled(true); + textProxyIP->setEnabled(true); + lblProxyPort->setEnabled(true); + spinProxyPort->setEnabled(true); + if(index > 1) { + checkProxyAuth->setEnabled(true); + } else { + checkProxyAuth->setEnabled(false); + checkProxyAuth->setChecked(false); + } + }else{ + //disable + lblProxyIP->setEnabled(false); + textProxyIP->setEnabled(false); + lblProxyPort->setEnabled(false); + spinProxyPort->setEnabled(false); checkProxyAuth->setEnabled(false); checkProxyAuth->setChecked(false); } - }else{ - //disable - lblProxyIP->setEnabled(false); - textProxyIP->setEnabled(false); - lblProxyPort->setEnabled(false); - spinProxyPort->setEnabled(false); - checkProxyAuth->setEnabled(false); - checkProxyAuth->setChecked(false); } -} -void options_imp::enableHTTPProxy(int index){ - bool enable = (index > 0); - lblProxyIP_http->setEnabled(enable); - textProxyIP_http->setEnabled(enable); - lblProxyPort_http->setEnabled(enable); - spinProxyPort_http->setEnabled(enable); - checkProxyAuth_http->setEnabled(enable); + void options_imp::enableHTTPProxy(int index){ + bool enable = (index > 0); + lblProxyIP_http->setEnabled(enable); + textProxyIP_http->setEnabled(enable); + lblProxyPort_http->setEnabled(enable); + spinProxyPort_http->setEnabled(enable); + checkProxyAuth_http->setEnabled(enable); - if(!enable) - checkProxyAuth_http->setChecked(false); -} - -void options_imp::enablePeerProxyAuth(bool checked){ - lblProxyUsername->setEnabled(checked); - lblProxyPassword->setEnabled(checked); - textProxyUsername->setEnabled(checked); - textProxyPassword->setEnabled(checked); -} - -void options_imp::enableHTTPProxyAuth(bool checked){ - lblProxyUsername_http->setEnabled(checked); - lblProxyPassword_http->setEnabled(checked); - textProxyUsername_http->setEnabled(checked); - textProxyPassword_http->setEnabled(checked); -} - -void options_imp::enableTorrentExport(bool checked) { - textExportDir->setEnabled(checked); - browseExportDirButton->setEnabled(checked); -} - -bool options_imp::isSlashScreenDisabled() const { - return checkNoSplash->isChecked(); -} - -bool options_imp::preAllocateAllFiles() const { - return checkPreallocateAll->isChecked(); -} - -bool options_imp::addTorrentsInPause() const { - return checkStartPaused->isChecked(); -} - -bool options_imp::isDHTPortSameAsBT() const { - return !checkDifferentDHTPort->isChecked(); -} - -// Proxy settings -bool options_imp::isPeerProxyEnabled() const{ - return comboProxyType->currentIndex(); -} - -bool options_imp::isHTTPProxyEnabled() const { - return comboProxyType_http->currentIndex(); -} - -bool options_imp::isPeerProxyAuthEnabled() const{ - return checkProxyAuth->isChecked(); -} - -QString options_imp::getPeerProxyIp() const{ - QString ip = textProxyIP->text(); - ip = ip.trimmed(); - return ip; -} - -QString options_imp::getHTTPProxyIp() const{ - QString ip = textProxyIP_http->text(); - ip = ip.trimmed(); - return ip; -} - -unsigned short options_imp::getPeerProxyPort() const{ - return spinProxyPort->value(); -} - -unsigned short options_imp::getHTTPProxyPort() const{ - return spinProxyPort_http->value(); -} - -QString options_imp::getPeerProxyUsername() const{ - QString username = textProxyUsername->text(); - username = username.trimmed(); - return username; -} - -QString options_imp::getHTTPProxyUsername() const{ - QString username = textProxyUsername_http->text(); - username = username.trimmed(); - return username; -} - -QString options_imp::getPeerProxyPassword() const{ - QString password = textProxyPassword->text(); - password = password.trimmed(); - return password; -} - -QString options_imp::getHTTPProxyPassword() const{ - QString password = textProxyPassword_http->text(); - password = password.trimmed(); - return password; -} - -// Locale Settings -QString options_imp::getLocale() const{ - return locales.at(comboI18n->currentIndex()); -} - -void options_imp::setLocale(QString locale){ - int indexLocales=locales.indexOf(QRegExp(locale)); - if(indexLocales != -1){ - comboI18n->setCurrentIndex(indexLocales); + if(!enable) + checkProxyAuth_http->setChecked(false); } -} -QString options_imp::getExportDir() const { - if(checkExportDir->isChecked()){ - return misc::expandPath(textExportDir->text()); - }else{ - return QString::null; + void options_imp::enablePeerProxyAuth(bool checked){ + lblProxyUsername->setEnabled(checked); + lblProxyPassword->setEnabled(checked); + textProxyUsername->setEnabled(checked); + textProxyPassword->setEnabled(checked); } -} -// Return action on double-click on a downloading torrent set in options -int options_imp::getActionOnDblClOnTorrentDl() const { - if(actionTorrentDlOnDblClBox->currentIndex()<1) - return 0; - return actionTorrentDlOnDblClBox->currentIndex(); -} + void options_imp::enableHTTPProxyAuth(bool checked){ + lblProxyUsername_http->setEnabled(checked); + lblProxyPassword_http->setEnabled(checked); + textProxyUsername_http->setEnabled(checked); + textProxyPassword_http->setEnabled(checked); + } -// Return action on double-click on a finished torrent set in options -int options_imp::getActionOnDblClOnTorrentFn() const { - if(actionTorrentFnOnDblClBox->currentIndex()<1) - return 0; - return actionTorrentFnOnDblClBox->currentIndex(); -} + void options_imp::enableTorrentExport(bool checked) { + textExportDir->setEnabled(checked); + browseExportDirButton->setEnabled(checked); + } -void options_imp::on_addScanFolderButton_clicked() { - const QString dir = QFileDialog::getExistingDirectory(this, tr("Add directory to scan")); - if (!dir.isEmpty()) { - const ScanFoldersModel::PathStatus status = ScanFoldersModel::instance()->addPath(dir, false); - QString error; - switch (status) { - case ScanFoldersModel::AlreadyInList: - error = tr("Folder is already being watched.").arg(dir); - break; - case ScanFoldersModel::DoesNotExist: - error = tr("Folder does not exist."); - break; - case ScanFoldersModel::CannotRead: - error = tr("Folder is not readable."); - break; - default: - addedScanDirs << dir; - enableApplyButton(); - } + bool options_imp::isSlashScreenDisabled() const { + return !checkShowSplash->isChecked(); + } - if (!error.isEmpty()) { - QMessageBox::warning(this, tr("Failure"), tr("Failed to add Scan Folder '%1': %2").arg(dir).arg(error)); + bool options_imp::preAllocateAllFiles() const { + return checkPreallocateAll->isChecked(); + } + + bool options_imp::addTorrentsInPause() const { + return checkStartPaused->isChecked(); + } + + bool options_imp::isDHTPortSameAsBT() const { + return !checkDifferentDHTPort->isChecked(); + } + + // Proxy settings + bool options_imp::isPeerProxyEnabled() const{ + return comboProxyType->currentIndex(); + } + + bool options_imp::isHTTPProxyEnabled() const { + return comboProxyType_http->currentIndex(); + } + + bool options_imp::isPeerProxyAuthEnabled() const{ + return checkProxyAuth->isChecked(); + } + + QString options_imp::getPeerProxyIp() const{ + QString ip = textProxyIP->text(); + ip = ip.trimmed(); + return ip; + } + + QString options_imp::getHTTPProxyIp() const{ + QString ip = textProxyIP_http->text(); + ip = ip.trimmed(); + return ip; + } + + unsigned short options_imp::getPeerProxyPort() const{ + return spinProxyPort->value(); + } + + unsigned short options_imp::getHTTPProxyPort() const{ + return spinProxyPort_http->value(); + } + + QString options_imp::getPeerProxyUsername() const{ + QString username = textProxyUsername->text(); + username = username.trimmed(); + return username; + } + + QString options_imp::getHTTPProxyUsername() const{ + QString username = textProxyUsername_http->text(); + username = username.trimmed(); + return username; + } + + QString options_imp::getPeerProxyPassword() const{ + QString password = textProxyPassword->text(); + password = password.trimmed(); + return password; + } + + QString options_imp::getHTTPProxyPassword() const{ + QString password = textProxyPassword_http->text(); + password = password.trimmed(); + return password; + } + + // Locale Settings + QString options_imp::getLocale() const{ + return locales.at(comboI18n->currentIndex()); + } + + void options_imp::setLocale(QString locale){ + int indexLocales=locales.indexOf(QRegExp(locale)); + if(indexLocales != -1){ + comboI18n->setCurrentIndex(indexLocales); } } -} -void options_imp::on_removeScanFolderButton_clicked() { - const QModelIndexList &selected - = scanFoldersView->selectionModel()->selectedIndexes(); - if (selected.isEmpty()) - return; - Q_ASSERT(selected.count() == ScanFoldersModel::instance()->columnCount()); - ScanFoldersModel::instance()->removePath(selected.first().row()); -} - -void options_imp::handleScanFolderViewSelectionChanged() { - removeScanFolderButton->setEnabled(!scanFoldersView->selectionModel()->selectedIndexes().isEmpty()); -} - -void options_imp::on_browseExportDirButton_clicked() { - QString export_path = misc::expandPath(textExportDir->text()); - QDir exportDir(export_path); - QString dir; - if(!export_path.isEmpty() && exportDir.exists()) { - dir = QFileDialog::getExistingDirectory(this, tr("Choose export directory"), exportDir.absolutePath()); - } else { - dir = QFileDialog::getExistingDirectory(this, tr("Choose export directory"), QDir::homePath()); + QString options_imp::getExportDir() const { + if(checkExportDir->isChecked()){ + return misc::expandPath(textExportDir->text()); + }else{ + return QString::null; + } } - if(!dir.isNull()){ + + // Return action on double-click on a downloading torrent set in options + int options_imp::getActionOnDblClOnTorrentDl() const { + if(actionTorrentDlOnDblClBox->currentIndex()<1) + return 0; + return actionTorrentDlOnDblClBox->currentIndex(); + } + + // Return action on double-click on a finished torrent set in options + int options_imp::getActionOnDblClOnTorrentFn() const { + if(actionTorrentFnOnDblClBox->currentIndex()<1) + return 0; + return actionTorrentFnOnDblClBox->currentIndex(); + } + + void options_imp::on_addScanFolderButton_clicked() { + const QString dir = QFileDialog::getExistingDirectory(this, tr("Add directory to scan")); + if (!dir.isEmpty()) { + const ScanFoldersModel::PathStatus status = ScanFoldersModel::instance()->addPath(dir, false); + QString error; + switch (status) { + case ScanFoldersModel::AlreadyInList: + error = tr("Folder is already being watched.").arg(dir); + break; + case ScanFoldersModel::DoesNotExist: + error = tr("Folder does not exist."); + break; + case ScanFoldersModel::CannotRead: + error = tr("Folder is not readable."); + break; + default: + addedScanDirs << dir; + enableApplyButton(); + } + + if (!error.isEmpty()) { + QMessageBox::warning(this, tr("Failure"), tr("Failed to add Scan Folder '%1': %2").arg(dir).arg(error)); + } + } + } + + void options_imp::on_removeScanFolderButton_clicked() { + const QModelIndexList &selected + = scanFoldersView->selectionModel()->selectedIndexes(); + if (selected.isEmpty()) + return; + Q_ASSERT(selected.count() == ScanFoldersModel::instance()->columnCount()); + ScanFoldersModel::instance()->removePath(selected.first().row()); + } + + void options_imp::handleScanFolderViewSelectionChanged() { + removeScanFolderButton->setEnabled(!scanFoldersView->selectionModel()->selectedIndexes().isEmpty()); + } + + void options_imp::on_browseExportDirButton_clicked() { + QString export_path = misc::expandPath(textExportDir->text()); + QDir exportDir(export_path); + QString dir; + if(!export_path.isEmpty() && exportDir.exists()) { + dir = QFileDialog::getExistingDirectory(this, tr("Choose export directory"), exportDir.absolutePath()); + } else { + dir = QFileDialog::getExistingDirectory(this, tr("Choose export directory"), QDir::homePath()); + } + if(!dir.isNull()){ #ifdef Q_WS_WIN - dir = dir.replace("/", "\\"); + dir = dir.replace("/", "\\"); #endif - textExportDir->setText(dir); + textExportDir->setText(dir); + } } -} -void options_imp::on_browseFilterButton_clicked() { - QString filter_path = misc::expandPath(textFilterPath->text()); - QDir filterDir(filter_path); - QString ipfilter; - if(!filter_path.isEmpty() && filterDir.exists()) { - ipfilter = QFileDialog::getOpenFileName(this, tr("Choose an ip filter file"), filterDir.absolutePath(), tr("Filters")+QString(" (*.dat *.p2p *.p2b)")); - } else { - ipfilter = QFileDialog::getOpenFileName(this, tr("Choose an ip filter file"), QDir::homePath(), tr("Filters")+QString(" (*.dat *.p2p *.p2b)")); - } - if(!ipfilter.isNull()){ + void options_imp::on_browseFilterButton_clicked() { + QString filter_path = misc::expandPath(textFilterPath->text()); + QDir filterDir(filter_path); + QString ipfilter; + if(!filter_path.isEmpty() && filterDir.exists()) { + ipfilter = QFileDialog::getOpenFileName(this, tr("Choose an ip filter file"), filterDir.absolutePath(), tr("Filters")+QString(" (*.dat *.p2p *.p2b)")); + } else { + ipfilter = QFileDialog::getOpenFileName(this, tr("Choose an ip filter file"), QDir::homePath(), tr("Filters")+QString(" (*.dat *.p2p *.p2b)")); + } + if(!ipfilter.isNull()){ #ifdef Q_WS_WIN - ipfilter = ipfilter.replace("/", "\\"); + ipfilter = ipfilter.replace("/", "\\"); #endif - textFilterPath->setText(ipfilter); + textFilterPath->setText(ipfilter); + } } -} -// Display dialog to choose save dir -void options_imp::on_browseSaveDirButton_clicked(){ - QString save_path = misc::expandPath(textSavePath->text()); - QDir saveDir(save_path); - QString dir; - if(!save_path.isEmpty() && saveDir.exists()) { - dir = QFileDialog::getExistingDirectory(this, tr("Choose a save directory"), saveDir.absolutePath()); - } else { - dir = QFileDialog::getExistingDirectory(this, tr("Choose a save directory"), QDir::homePath()); - } - if(!dir.isNull()){ + // Display dialog to choose save dir + void options_imp::on_browseSaveDirButton_clicked(){ + QString save_path = misc::expandPath(textSavePath->text()); + QDir saveDir(save_path); + QString dir; + if(!save_path.isEmpty() && saveDir.exists()) { + dir = QFileDialog::getExistingDirectory(this, tr("Choose a save directory"), saveDir.absolutePath()); + } else { + dir = QFileDialog::getExistingDirectory(this, tr("Choose a save directory"), QDir::homePath()); + } + if(!dir.isNull()){ #ifdef Q_WS_WIN - dir = dir.replace("/", "\\"); + dir = dir.replace("/", "\\"); #endif - textSavePath->setText(dir); + textSavePath->setText(dir); + } } -} -void options_imp::on_browseTempDirButton_clicked(){ - QString temp_path = misc::expandPath(textTempPath->text()); - QDir tempDir(temp_path); - QString dir; - if(!temp_path.isEmpty() && tempDir.exists()) { - dir = QFileDialog::getExistingDirectory(this, tr("Choose a save directory"), tempDir.absolutePath()); - } else { - dir = QFileDialog::getExistingDirectory(this, tr("Choose a save directory"), QDir::homePath()); - } - if(!dir.isNull()){ + void options_imp::on_browseTempDirButton_clicked(){ + QString temp_path = misc::expandPath(textTempPath->text()); + QDir tempDir(temp_path); + QString dir; + if(!temp_path.isEmpty() && tempDir.exists()) { + dir = QFileDialog::getExistingDirectory(this, tr("Choose a save directory"), tempDir.absolutePath()); + } else { + dir = QFileDialog::getExistingDirectory(this, tr("Choose a save directory"), QDir::homePath()); + } + if(!dir.isNull()){ #ifdef Q_WS_WIN - dir = dir.replace("/", "\\"); + dir = dir.replace("/", "\\"); #endif - textTempPath->setText(dir); + textTempPath->setText(dir); + } } -} -// Return Filter object to apply to BT session -QString options_imp::getFilter() const{ - return textFilterPath->text(); -} + // Return Filter object to apply to BT session + QString options_imp::getFilter() const{ + return textFilterPath->text(); + } -// Web UI + // Web UI -void options_imp::enableWebUi(bool checkBoxValue){ - groupWebUiServer->setEnabled(checkBoxValue); - groupWebUiAuth->setEnabled(checkBoxValue); -} + void options_imp::enableWebUi(bool checkBoxValue){ + groupWebUiServer->setEnabled(checkBoxValue); + groupWebUiAuth->setEnabled(checkBoxValue); + } -bool options_imp::isWebUiEnabled() const -{ - return checkWebUi->isChecked(); -} + bool options_imp::isWebUiEnabled() const + { + return checkWebUi->isChecked(); + } -quint16 options_imp::webUiPort() const -{ - return spinWebUiPort->value(); -} + quint16 options_imp::webUiPort() const + { + return spinWebUiPort->value(); + } -QString options_imp::webUiUsername() const -{ - return textWebUiUsername->text(); -} + QString options_imp::webUiUsername() const + { + return textWebUiUsername->text(); + } -QString options_imp::webUiPassword() const -{ - return textWebUiPassword->text(); -} + QString options_imp::webUiPassword() const + { + return textWebUiPassword->text(); + } diff --git a/src/ui/confirmdeletiondlg.ui b/src/ui/confirmdeletiondlg.ui index d52ccac5a..bc7d70ecb 100644 --- a/src/ui/confirmdeletiondlg.ui +++ b/src/ui/confirmdeletiondlg.ui @@ -6,8 +6,8 @@ 0 0 - 399 - 143 + 463 + 152 @@ -60,22 +60,49 @@ - - - - 0 - 0 - - - - - true - - - - Delete the files on the hard disk as well - - + + + + + false + + + Remember choice + + + + + + + :/Icons/oxygen/encrypted.png:/Icons/oxygen/encrypted.png + + + + 20 + 18 + + + + + + + + + 0 + 0 + + + + + true + + + + Also delete the files on the hard disk + + + + @@ -97,7 +124,6 @@ - diff --git a/src/ui/options.ui b/src/ui/options.ui index 4b87d8dce..01f120bb6 100644 --- a/src/ui/options.ui +++ b/src/ui/options.ui @@ -240,16 +240,16 @@ 0 - 0 - 524 - 406 + -24 + 506 + 430 - User interface + Visual Appearance @@ -338,20 +338,6 @@ - - - - Disable splash screen - - - - - - - On torrent deletion, also delete files on hard disk as a default - - - @@ -475,40 +461,47 @@ - System tray icon + Desktop - + 0 - - + + - Disable system tray icon + Show splash screen on start up - + + + + Start qBittorrent minimized + + + + + + + Show qBittorrent icon in notification area + + + + - Minimize to tray + Minimize qBittorrent to notification area false - + - Close to tray - - - - - - - Start minimized + Close qBittorrent to notification area @@ -3089,10 +3082,8 @@ QGroupBox { tabOption comboI18n comboStyle - checkNoSystray checkCloseToSystray checkMinimizeToSysTray - checkStartMinimized textSavePath browseSaveDirButton checkPreallocateAll