From cb7e48b2e841d3bea19ad1830de6ec932525f82e Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sun, 18 May 2008 11:44:50 +0000 Subject: [PATCH] - Allow to add several trackers at once --- Changelog | 1 + src/TrackersAdditionDlg.h | 53 ++++++++++++++++++++++++++++ src/properties_imp.cpp | 24 +++++++------ src/properties_imp.h | 1 + src/src.pro | 6 ++-- src/trackersAdd.ui | 73 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 145 insertions(+), 13 deletions(-) create mode 100644 src/TrackersAdditionDlg.h create mode 100644 src/trackersAdd.ui diff --git a/Changelog b/Changelog index 82b1f506b..36dc969f6 100644 --- a/Changelog +++ b/Changelog @@ -13,6 +13,7 @@ - FEATURE: Added support for PeerGuardian p2p filters (text) - FEATURE: Added support for PeerGuardian p2b filters (binary) - FEATURE: Allow to customize folder scan interval + - FEATURE: Allow to add several trackers at once - BUGFIX: Do not display seeds number in seeding list (always 0) - BUGFIX: Threadified IP filter file parser to avoid GUI freeze - COSMETIC: Do not display progress bar in seeding list (always 100%) diff --git a/src/TrackersAdditionDlg.h b/src/TrackersAdditionDlg.h new file mode 100644 index 000000000..43a4cab8f --- /dev/null +++ b/src/TrackersAdditionDlg.h @@ -0,0 +1,53 @@ +/* + * Bittorrent Client using Qt4 and libtorrent. + * Copyright (C) 2006 Christophe Dumez + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact : chris@qbittorrent.org + */ + +#ifndef TRACKERSADDITION_H +#define TRACKERSADDITION_H + +#include +#include +#include "ui_trackersAdd.h" + +class TrackersAddDlg : public QDialog, private Ui::TrackersAdditionDlg{ + Q_OBJECT + + public: + TrackersAddDlg(QWidget *parent): QDialog(parent){ + setupUi(this); + setAttribute(Qt::WA_DeleteOnClose); + show(); + } + + ~TrackersAddDlg(){} + + signals: + void TrackersToAdd(QStringList trackers); + + public slots: + void on_buttonBox_accepted() { + QStringList trackers = trackers_list->toPlainText().trimmed().split("\n"); + if(trackers.size()) { + emit TrackersToAdd(trackers); + } + } +}; + +#endif diff --git a/src/properties_imp.cpp b/src/properties_imp.cpp index 38418026f..aa359e485 100644 --- a/src/properties_imp.cpp +++ b/src/properties_imp.cpp @@ -26,6 +26,7 @@ #include "arborescence.h" #include "realprogressbar.h" #include "realprogressbarthread.h" +#include "TrackersAdditionDlg.h" #include #include @@ -482,18 +483,19 @@ void properties::askWebSeed(){ // and add it to the download list // if it is not already in it void properties::askForTracker(){ - bool ok; - // Ask user for a new tracker - QString trackerUrl = QInputDialog::getText(this, tr("New tracker"), - tr("New tracker url:"), QLineEdit::Normal, - "http://www.", &ok); - if(!ok) return; - // Add the tracker to the list + TrackersAddDlg *dlg = new TrackersAddDlg(this); + connect(dlg, SIGNAL(TrackersToAdd(QStringList)), this, SLOT(addTrackerList(QStringList))); +} + +void properties::addTrackerList(QStringList myTrackers) { + // Add the trackers to the list std::vector trackers = h.trackers(); - announce_entry new_tracker(misc::toString(trackerUrl.toUtf8().data())); - new_tracker.tier = 0; // Will be fixed a bit later - trackers.push_back(new_tracker); - misc::fixTrackersTiers(trackers); + foreach(QString tracker, myTrackers) { + announce_entry new_tracker(misc::toString(tracker.toUtf8().data())); + new_tracker.tier = 0; // Will be fixed a bit later + trackers.push_back(new_tracker); + misc::fixTrackersTiers(trackers); + } h.replace_trackers(trackers); h.force_reannounce(); // Reload Trackers diff --git a/src/properties_imp.h b/src/properties_imp.h index ed80c7212..073df95ec 100644 --- a/src/properties_imp.h +++ b/src/properties_imp.h @@ -77,6 +77,7 @@ class properties : public QDialog, private Ui::properties{ void updateParentsPriority(QStandardItem *item, int priority); void updatePriorities(QStandardItem *item); void getPriorities(QStandardItem *parent, int *priorities); + void addTrackerList(QStringList myTrackers); void writeSettings(); void loadSettings(); diff --git a/src/src.pro b/src/src.pro index 0023b718a..8d17ab732 100644 --- a/src/src.pro +++ b/src/src.pro @@ -147,12 +147,14 @@ HEADERS += GUI.h misc.h options_imp.h about_imp.h \ realprogressbarthread.h qrealarray.h \ httpserver.h httpconnection.h \ httprequestparser.h httpresponsegenerator.h \ - json.h eventmanager.h filterParserThread.h + json.h eventmanager.h filterParserThread.h \ + TrackersAdditionDlg.h FORMS += MainWindow.ui options.ui about.ui \ properties.ui createtorrent.ui preview.ui \ login.ui downloadFromURL.ui addTorrentDialog.ui \ search.ui rss.ui seeding.ui bandwidth_limit.ui \ - download.ui engineSelect.ui pluginSource.ui + download.ui engineSelect.ui pluginSource.ui \ + trackersAdd.ui SOURCES += GUI.cpp \ main.cpp \ options_imp.cpp \ diff --git a/src/trackersAdd.ui b/src/trackersAdd.ui new file mode 100644 index 000000000..363158018 --- /dev/null +++ b/src/trackersAdd.ui @@ -0,0 +1,73 @@ + + TrackersAdditionDlg + + + + 0 + 0 + 367 + 201 + + + + Trackers addition dialog + + + + + + List of trackers to add (one per line): + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + TrackersAdditionDlg + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + TrackersAdditionDlg + reject() + + + 316 + 260 + + + 286 + 274 + + + + +