mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-03-10 12:21:12 +00:00
Merge pull request #415 from Gelmir/edit_tracker
Allow to edit tracker URI
This commit is contained in:
commit
88d22e4309
@ -35,6 +35,8 @@
|
|||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QInputDialog>
|
||||||
|
#include <QUrl>
|
||||||
#include <libtorrent/version.hpp>
|
#include <libtorrent/version.hpp>
|
||||||
#include <libtorrent/peer_info.hpp>
|
#include <libtorrent/peer_info.hpp>
|
||||||
#include "trackerlist.h"
|
#include "trackerlist.h"
|
||||||
@ -343,6 +345,65 @@ void TrackerList::deleteSelectedTrackers() {
|
|||||||
loadTrackers();
|
loadTrackers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TrackerList::editSelectedTracker() {
|
||||||
|
try {
|
||||||
|
QTorrentHandle h = properties->getCurrentTorrent();
|
||||||
|
|
||||||
|
QList<QTreeWidgetItem *> selected_items = getSelectedTrackerItems();
|
||||||
|
if (selected_items.isEmpty())
|
||||||
|
return;
|
||||||
|
// During multi-select only process item selected last
|
||||||
|
QUrl tracker_url = selected_items.last()->text(COL_URL);
|
||||||
|
|
||||||
|
QInputDialog editDlg(this);
|
||||||
|
editDlg.setInputMode(QInputDialog::TextInput);
|
||||||
|
editDlg.setLabelText(tr("Tracker URL:"));
|
||||||
|
editDlg.setWindowTitle(tr("Tracker editing"));
|
||||||
|
editDlg.setTextValue(tracker_url.toString());
|
||||||
|
QSize dlgSize = editDlg.size();
|
||||||
|
dlgSize.setWidth(350);
|
||||||
|
editDlg.resize(dlgSize);
|
||||||
|
|
||||||
|
if(!editDlg.exec())
|
||||||
|
return;
|
||||||
|
|
||||||
|
QUrl new_tracker_url = editDlg.textValue().trimmed();
|
||||||
|
if (!new_tracker_url.isValid()) {
|
||||||
|
QMessageBox::warning(this, tr("Tracker editing failed"), tr("The tracker URL entered is invalid."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (new_tracker_url == tracker_url)
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::vector<announce_entry> trackers = h.trackers();
|
||||||
|
std::vector<announce_entry>::iterator it = trackers.begin();
|
||||||
|
std::vector<announce_entry>::iterator itend = trackers.end();
|
||||||
|
bool match = false;
|
||||||
|
|
||||||
|
for ( ; it != itend; ++it) {
|
||||||
|
if (new_tracker_url == QUrl(misc::toQString(it->url))) {
|
||||||
|
QMessageBox::warning(this, tr("Tracker editing failed"), tr("The tracker URL already exists."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tracker_url == QUrl(misc::toQString(it->url)) && !match) {
|
||||||
|
announce_entry new_entry(new_tracker_url.toString().toStdString());
|
||||||
|
new_entry.tier = it->tier;
|
||||||
|
match = true;
|
||||||
|
*it = new_entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h.replace_trackers(trackers);
|
||||||
|
h.force_reannounce();
|
||||||
|
h.force_dht_announce();
|
||||||
|
} catch(invalid_handle&) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
loadTrackers();
|
||||||
|
}
|
||||||
|
|
||||||
void TrackerList::showTrackerListMenu(QPoint) {
|
void TrackerList::showTrackerListMenu(QPoint) {
|
||||||
QTorrentHandle h = properties->getCurrentTorrent();
|
QTorrentHandle h = properties->getCurrentTorrent();
|
||||||
if (!h.is_valid()) return;
|
if (!h.is_valid()) return;
|
||||||
@ -350,10 +411,13 @@ void TrackerList::showTrackerListMenu(QPoint) {
|
|||||||
QMenu menu;
|
QMenu menu;
|
||||||
// Add actions
|
// Add actions
|
||||||
QAction *addAct = menu.addAction(IconProvider::instance()->getIcon("list-add"), tr("Add a new tracker..."));
|
QAction *addAct = menu.addAction(IconProvider::instance()->getIcon("list-add"), tr("Add a new tracker..."));
|
||||||
QAction *copyAct = menu.addAction(IconProvider::instance()->getIcon("edit-copy"), tr("Copy tracker url"));
|
QAction *copyAct = 0;
|
||||||
QAction *delAct = 0;
|
QAction *delAct = 0;
|
||||||
|
QAction *editAct = 0;
|
||||||
if (!getSelectedTrackerItems().isEmpty()) {
|
if (!getSelectedTrackerItems().isEmpty()) {
|
||||||
delAct = menu.addAction(IconProvider::instance()->getIcon("list-remove"), tr("Remove tracker"));
|
delAct = menu.addAction(IconProvider::instance()->getIcon("list-remove"), tr("Remove tracker"));
|
||||||
|
copyAct = menu.addAction(IconProvider::instance()->getIcon("edit-copy"), tr("Copy tracker url"));
|
||||||
|
editAct = menu.addAction(IconProvider::instance()->getIcon("edit-rename"),tr("Edit selected tracker URL"));
|
||||||
}
|
}
|
||||||
QAction *act = menu.exec(QCursor::pos());
|
QAction *act = menu.exec(QCursor::pos());
|
||||||
if (act == 0) return;
|
if (act == 0) return;
|
||||||
@ -369,6 +433,10 @@ void TrackerList::showTrackerListMenu(QPoint) {
|
|||||||
deleteSelectedTrackers();
|
deleteSelectedTrackers();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (act == editAct) {
|
||||||
|
editSelectedTracker();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackerList::loadSettings() {
|
void TrackerList::loadSettings() {
|
||||||
|
@ -72,6 +72,7 @@ public slots:
|
|||||||
void askForTrackers();
|
void askForTrackers();
|
||||||
void copyTrackerUrl();
|
void copyTrackerUrl();
|
||||||
void deleteSelectedTrackers();
|
void deleteSelectedTrackers();
|
||||||
|
void editSelectedTracker();
|
||||||
void showTrackerListMenu(QPoint);
|
void showTrackerListMenu(QPoint);
|
||||||
void loadSettings();
|
void loadSettings();
|
||||||
void saveSettings() const;
|
void saveSettings() const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user