diff --git a/src/properties/trackerlist.cpp b/src/properties/trackerlist.cpp index 3db762faf..aa9c835a7 100644 --- a/src/properties/trackerlist.cpp +++ b/src/properties/trackerlist.cpp @@ -297,6 +297,19 @@ void TrackerList::askForTrackers() { } } +void TrackerList::copyTrackerUrl() { + QList selected_items = getSelectedTrackerItems(); + if (selected_items.isEmpty()) return; + QStringList urls_to_copy; + foreach (QTreeWidgetItem *item, selected_items) { + QString tracker_url = item->data(COL_URL, Qt::DisplayRole).toString(); + qDebug() << QString("Copy: ") + tracker_url; + urls_to_copy << tracker_url; + } + QApplication::clipboard()->setText(urls_to_copy.join("\n")); +} + + void TrackerList::deleteSelectedTrackers() { QTorrentHandle h = properties->getCurrentTorrent(); if (!h.is_valid()) { @@ -336,6 +349,7 @@ void TrackerList::showTrackerListMenu(QPoint) { QMenu menu; // Add actions 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 *delAct = 0; if (!getSelectedTrackerItems().isEmpty()) { delAct = menu.addAction(IconProvider::instance()->getIcon("list-remove"), tr("Remove tracker")); @@ -346,6 +360,10 @@ void TrackerList::showTrackerListMenu(QPoint) { askForTrackers(); return; } + if (act == copyAct) { + copyTrackerUrl(); + return; + } if (act == delAct) { deleteSelectedTrackers(); return; diff --git a/src/properties/trackerlist.h b/src/properties/trackerlist.h index 15e3d05c6..d4923be22 100644 --- a/src/properties/trackerlist.h +++ b/src/properties/trackerlist.h @@ -33,6 +33,7 @@ #include #include +#include #include #include "qtorrenthandle.h" @@ -69,6 +70,7 @@ public slots: void loadStickyItems(const QTorrentHandle &h); void loadTrackers(); void askForTrackers(); + void copyTrackerUrl(); void deleteSelectedTrackers(); void showTrackerListMenu(QPoint); void loadSettings();