diff --git a/src/properties.ui b/src/properties.ui index 4ff30d251..acc230a16 100644 --- a/src/properties.ui +++ b/src/properties.ui @@ -796,6 +796,19 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -980,8 +993,8 @@ accept() - 278 - 253 + 306 + 556 96 diff --git a/src/properties_imp.cpp b/src/properties_imp.cpp index 3024ae842..13c59e9bf 100644 --- a/src/properties_imp.cpp +++ b/src/properties_imp.cpp @@ -22,6 +22,7 @@ #include "properties_imp.h" #include "misc.h" #include "PropListDelegate.h" +#include // Constructor properties::properties(QWidget *parent, torrent_handle h, QStringList trackerErrors): QDialog(parent), h(h){ @@ -44,6 +45,7 @@ properties::properties(QWidget *parent, torrent_handle h, QStringList trackerErr PropDelegate = new PropListDelegate(); filesList->setItemDelegate(PropDelegate); connect(filesList, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(toggleSelectedState(const QModelIndex&))); + connect(addTracker_button, SIGNAL(clicked()), this, SLOT(askForTracker())); // get Infos from torrent handle fileHash = QString(misc::toString(h.info_hash()).c_str()); torrent_status torrentStatus = h.status(); @@ -55,16 +57,7 @@ properties::properties(QWidget *parent, torrent_handle h, QStringList trackerErr hash_lbl->setText(fileHash); comment_txt->setText(QString(torrentInfo.comment().c_str())); //Trackers - QString tracker = QString(torrentStatus.current_tracker.c_str()).trimmed(); - if(!tracker.isEmpty()){ - trackerURL->setText(tracker); - }else{ - trackerURL->setText(tr("None - Unreachable?")); - } - std::vector trackers = torrentInfo.trackers(); - for(unsigned int i=0; iaddItem(QString(trackers[i].url.c_str())); - } + loadTrackers(); // Session infos char tmp[MAX_CHAR_TMP]; failed->setText(misc::friendlyUnit(torrentStatus.total_failed_bytes)); @@ -154,6 +147,45 @@ void properties::loadFilteredFiles(){ } } +void properties::loadTrackers(){ + torrent_status torrentStatus = h.status(); + torrent_info torrentInfo = h.get_torrent_info(); + //Trackers + std::vector trackers = torrentInfo.trackers(); + trackersURLS->clear(); + for(unsigned int i=0; iaddItem(QString(trackers[i].url.c_str())); + } + QString tracker = QString(torrentStatus.current_tracker.c_str()).trimmed(); + if(!tracker.isEmpty()){ + trackerURL->setText(tracker); + }else{ + trackerURL->setText(tr("None - Unreachable?")); + } +} + +// Ask the user for a new tracker +// 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; + // Checking if it already exists in the list + torrent_info torrentInfo = h.get_torrent_info(); +// std::vector trackers = torrentInfo.trackers(); +// for(unsigned int i=0; icount()); + h.force_reannounce(); + // Reload Trackers + loadTrackers(); +} + void properties::updateProgress(){ std::vector fp; try{ diff --git a/src/properties_imp.h b/src/properties_imp.h index 99028b023..4497eb84e 100644 --- a/src/properties_imp.h +++ b/src/properties_imp.h @@ -53,6 +53,8 @@ class properties : public QDialog, private Ui::properties{ void updateProgress(); void loadFilteredFiles(); void setAllPiecesState(bool selected); + void askForTracker(); + void loadTrackers(); signals: void changedFilteredFiles(torrent_handle h, bool compact_mode);