diff --git a/src/FinishedTorrents.cpp b/src/FinishedTorrents.cpp index 947f7d466..e287dcd27 100644 --- a/src/FinishedTorrents.cpp +++ b/src/FinishedTorrents.cpp @@ -81,6 +81,8 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png"))); actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png"))); actionSet_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png"))); + actionCopy_magnet_link->setIcon(QIcon(QString::fromUtf8(":/Icons/magnet.png"))); + connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered())); connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered())); connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered())); @@ -90,6 +92,7 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par connect(actionBuy_it, SIGNAL(triggered()), (GUI*)parent, SLOT(goBuyPage())); connect(actionTorrent_Properties, SIGNAL(triggered()), this, SLOT(propertiesSelection())); connect(actionForce_recheck, SIGNAL(triggered()), this, SLOT(forceRecheck())); + connect(actionCopy_magnet_link, SIGNAL(triggered()), (GUI*)parent, SLOT(copyMagnetURI())); connect(actionHOSColName, SIGNAL(triggered()), this, SLOT(hideOrShowColumnName())); connect(actionHOSColSize, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSize())); @@ -446,6 +449,7 @@ void FinishedTorrents::displayFinishedListMenu(const QPoint&){ myFinishedListMenu.addAction(actionOpen_destination_folder); myFinishedListMenu.addAction(actionTorrent_Properties); myFinishedListMenu.addSeparator(); + myFinishedListMenu.addAction(actionCopy_magnet_link); myFinishedListMenu.addAction(actionBuy_it); // Call menu diff --git a/src/GUI.cpp b/src/GUI.cpp index c7b6b48aa..2d1d12660 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef QT_4_4 #include #include @@ -597,6 +598,28 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis } } } + + void GUI::copyMagnetURI() const { + QStringList hashes; + switch(tabs->currentIndex()){ + case 0: + hashes = downloadingTorrentTab->getSelectedTorrents(); + break; + case 1: + hashes = finishedTorrentTab->getSelectedTorrents(); + break; + default: + return; + } + QStringList magnet_uris; + foreach(QString hash, hashes) { + QTorrentHandle h = BTSession->getTorrentHandle(hash); + if(h.is_valid()) { + magnet_uris << misc::toQString(make_magnet_uri(h.get_torrent_info())); + } + } + qApp->clipboard()->setText(magnet_uris.join("\n")); + } void GUI::goBuyPage() const { QStringList hashes; @@ -1351,6 +1374,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis } else { hashes = finishedTorrentTab->getSelectedTorrents(); } + qDebug("nb hashes: %d", hashes.size()); foreach(const QString &hash, hashes) { QTorrentHandle h = BTSession->getTorrentHandle(hash); if(!h.is_paused()){ diff --git a/src/GUI.h b/src/GUI.h index 0800be119..3c81d2b06 100644 --- a/src/GUI.h +++ b/src/GUI.h @@ -192,6 +192,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{ void setTabText(int index, QString text) const; void openDestinationFolder() const; void goBuyPage() const; + void copyMagnetURI() const; void updateRatio(); protected: diff --git a/src/Icons/magnet.png b/src/Icons/magnet.png new file mode 100644 index 000000000..49b06fd20 Binary files /dev/null and b/src/Icons/magnet.png differ diff --git a/src/download.ui b/src/download.ui index a1ae73cd1..d65662d50 100644 --- a/src/download.ui +++ b/src/download.ui @@ -1,7 +1,8 @@ - + + downloading - - + + 0 0 @@ -9,39 +10,39 @@ 453 - + Search - + - - + + 6 - + 0 - - + + 0 0 - + Qt::CustomContextMenu - + true - + QAbstractItemView::ExtendedSelection - + 1 - + false @@ -49,139 +50,144 @@ - - + + Start - - + + Pause - - + + Delete - - + + Preview file - - + + Set upload limit - - + + Set download limit - - + + Delete Permanently - - + + Torrent Properties - - - - :/Icons/oxygen/folder.png:/Icons/oxygen/folder.png + + + + :/Icons/oxygen/folder.png:/Icons/oxygen/folder.png - + Open destination folder - - + + Name - - + + Size - - + + Progress - - + + DLSpeed - - + + UpSpeed - - + + Seeds/Leechs - - + + Ratio - - + + ETA - - - + + + :/Icons/money.png:/Icons/money.png - + Buy it - - + + Priority - - - + + + :/Icons/skin/increase.png:/Icons/skin/increase.png - + Increase priority - - - + + + :/Icons/skin/decrease.png:/Icons/skin/decrease.png - + Decrease priority - - - - :/Icons/oxygen/gear.png:/Icons/oxygen/gear.png + + + + :/Icons/oxygen/gear.png:/Icons/oxygen/gear.png - + Force recheck + + + Copy magnet link + + - + diff --git a/src/downloadingTorrents.cpp b/src/downloadingTorrents.cpp index 8d03587eb..c1a1e7ed2 100644 --- a/src/downloadingTorrents.cpp +++ b/src/downloadingTorrents.cpp @@ -53,6 +53,7 @@ DownloadingTorrents::DownloadingTorrents(QObject *parent, bittorrent *BTSession) actionSet_download_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/downloading.png"))); actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png"))); actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png"))); + actionCopy_magnet_link->setIcon(QIcon(QString::fromUtf8(":/Icons/magnet.png"))); // tabBottom->setTabIcon(0, QIcon(QString::fromUtf8(":/Icons/oxygen/log.png"))); // tabBottom->setTabIcon(1, QIcon(QString::fromUtf8(":/Icons/oxygen/filter.png"))); @@ -106,6 +107,7 @@ DownloadingTorrents::DownloadingTorrents(QObject *parent, bittorrent *BTSession) connect(actionTorrent_Properties, SIGNAL(triggered()), this, SLOT(propertiesSelection())); connect(actionForce_recheck, SIGNAL(triggered()), this, SLOT(forceRecheck())); connect(actionBuy_it, SIGNAL(triggered()), (GUI*)parent, SLOT(goBuyPage())); + connect(actionCopy_magnet_link, SIGNAL(triggered()), (GUI*)parent, SLOT(copyMagnetURI())); connect(actionHOSColName, SIGNAL(triggered()), this, SLOT(hideOrShowColumnName())); connect(actionHOSColSize, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSize())); @@ -298,6 +300,7 @@ void DownloadingTorrents::displayDLListMenu(const QPoint&) { myDLLlistMenu.addAction(actionDecreasePriority); } myDLLlistMenu.addSeparator(); + myDLLlistMenu.addAction(actionCopy_magnet_link); myDLLlistMenu.addAction(actionBuy_it); // Call menu myDLLlistMenu.exec(QCursor::pos()); diff --git a/src/icons.qrc b/src/icons.qrc index fe7d4ec27..730decd9b 100644 --- a/src/icons.qrc +++ b/src/icons.qrc @@ -1,106 +1,107 @@ - Icons/add_file.png - Icons/add_folder.png - Icons/downarrow.png Icons/gnome-shutdown.png - Icons/loading.png - Icons/locale.png + Icons/rss32.png Icons/money.png Icons/refresh.png - Icons/rss16.png - Icons/rss32.png - Icons/sphere.png Icons/sphere2.png - Icons/uparrow.png + Icons/downarrow.png Icons/url.png - Icons/flags/brazil.png - Icons/flags/bulgaria.png - Icons/flags/china.png - Icons/flags/czech.png - Icons/flags/denmark.png - Icons/flags/finland.png - Icons/flags/france.png - Icons/flags/germany.png - Icons/flags/greece.png - Icons/flags/hungary.png - Icons/flags/italy.png - Icons/flags/japan.png - Icons/flags/netherlands.png - Icons/flags/norway.png - Icons/flags/poland.png - Icons/flags/portugal.png - Icons/flags/romania.png - Icons/flags/russia.png - Icons/flags/slovakia.png - Icons/flags/south_korea.png - Icons/flags/spain.png - Icons/flags/spain_catalunya.png - Icons/flags/sweden.png - Icons/flags/taiwan.png - Icons/flags/turkey.png - Icons/flags/ukraine.png - Icons/flags/united_kingdom.png - Icons/oxygen/browse.png - Icons/oxygen/bt_settings.png - Icons/oxygen/bug.png - Icons/oxygen/button_cancel.png - Icons/oxygen/button_ok.png - Icons/oxygen/configure.png - Icons/oxygen/connection.png - Icons/oxygen/download.png - Icons/oxygen/edit-clear.png - Icons/oxygen/edit-copy.png - Icons/oxygen/edit-cut.png - Icons/oxygen/edit-paste.png - Icons/oxygen/edit_clear.png - Icons/oxygen/encrypted.png - Icons/oxygen/file.png - Icons/oxygen/filter.png - Icons/oxygen/folder.png - Icons/oxygen/gear.png - Icons/oxygen/log.png - Icons/oxygen/proxy.png - Icons/oxygen/subscribe.png - Icons/oxygen/subscribe16.png - Icons/oxygen/time.png - Icons/oxygen/unavailable.png - Icons/oxygen/unsubscribe.png - Icons/oxygen/unsubscribe16.png - Icons/oxygen/webui.png - Icons/skin/add.png - Icons/skin/connected.png - Icons/skin/decrease.png - Icons/skin/delete.png - Icons/skin/delete_all.png - Icons/skin/delete_perm.png - Icons/skin/downloading.png - Icons/skin/exit.png - Icons/skin/firewalled.png - Icons/skin/increase.png - Icons/skin/info.png - Icons/skin/mascot.png - Icons/skin/new.png - Icons/skin/open.png - Icons/skin/pause.png - Icons/skin/pause_all.png - Icons/skin/paused.png + Icons/add_folder.png + Icons/locale.png + Icons/loading.png + Icons/add_file.png + Icons/magnet.png + Icons/sphere.png + Icons/uparrow.png + Icons/rss16.png Icons/skin/play.png - Icons/skin/play_all.png - Icons/skin/preview.png - Icons/skin/properties.png - Icons/skin/qb_question.png - Icons/skin/qbittorrent16.png Icons/skin/qbittorrent22.png - Icons/skin/qbittorrent32.png - Icons/skin/queued.png - Icons/skin/remove.png - Icons/skin/search.png - Icons/skin/seeding.png - Icons/skin/settings.png - Icons/skin/splash.png + Icons/skin/new.png + Icons/skin/preview.png + Icons/skin/add.png Icons/skin/stalled.png - Icons/skin/tabs.gif + Icons/skin/delete.png Icons/skin/url.png + Icons/skin/connected.png + Icons/skin/mascot.png + Icons/skin/seeding.png + Icons/skin/increase.png + Icons/skin/qbittorrent32.png + Icons/skin/paused.png + Icons/skin/qb_question.png + Icons/skin/open.png + Icons/skin/remove.png + Icons/skin/qbittorrent16.png + Icons/skin/downloading.png + Icons/skin/search.png + Icons/skin/pause_all.png + Icons/skin/play_all.png + Icons/skin/pause.png + Icons/skin/firewalled.png + Icons/skin/properties.png + Icons/skin/info.png + Icons/skin/tabs.gif + Icons/skin/delete_perm.png + Icons/skin/queued.png + Icons/skin/settings.png + Icons/skin/exit.png + Icons/skin/delete_all.png + Icons/skin/splash.png + Icons/skin/decrease.png + Icons/flags/czech.png + Icons/flags/china.png + Icons/flags/norway.png + Icons/flags/finland.png + Icons/flags/netherlands.png + Icons/flags/taiwan.png + Icons/flags/sweden.png + Icons/flags/spain_catalunya.png + Icons/flags/romania.png + Icons/flags/denmark.png + Icons/flags/hungary.png + Icons/flags/ukraine.png + Icons/flags/turkey.png + Icons/flags/greece.png + Icons/flags/spain.png + Icons/flags/portugal.png + Icons/flags/russia.png + Icons/flags/united_kingdom.png + Icons/flags/poland.png + Icons/flags/germany.png + Icons/flags/bulgaria.png + Icons/flags/brazil.png + Icons/flags/france.png + Icons/flags/slovakia.png + Icons/flags/italy.png + Icons/flags/south_korea.png + Icons/flags/japan.png + Icons/oxygen/file.png + Icons/oxygen/time.png + Icons/oxygen/edit-paste.png + Icons/oxygen/proxy.png + Icons/oxygen/log.png + Icons/oxygen/unavailable.png + Icons/oxygen/button_ok.png + Icons/oxygen/button_cancel.png + Icons/oxygen/edit-clear.png + Icons/oxygen/filter.png + Icons/oxygen/encrypted.png + Icons/oxygen/edit_clear.png + Icons/oxygen/download.png + Icons/oxygen/gear.png + Icons/oxygen/browse.png + Icons/oxygen/unsubscribe16.png + Icons/oxygen/subscribe.png + Icons/oxygen/edit-copy.png + Icons/oxygen/bt_settings.png + Icons/oxygen/webui.png + Icons/oxygen/connection.png + Icons/oxygen/bug.png + Icons/oxygen/folder.png + Icons/oxygen/configure.png + Icons/oxygen/edit-cut.png + Icons/oxygen/unsubscribe.png + Icons/oxygen/subscribe16.png \ No newline at end of file diff --git a/src/lang.qrc b/src/lang.qrc index 341252047..75e9585b4 100644 --- a/src/lang.qrc +++ b/src/lang.qrc @@ -1,31 +1,31 @@ + lang/qbittorrent_es.qm + lang/qbittorrent_sk.qm + lang/qbittorrent_zh_TW.qm + lang/qbittorrent_pt.qm + lang/qbittorrent_sv.qm + lang/qbittorrent_pl.qm + lang/qbittorrent_it.qm + lang/qbittorrent_ko.qm + lang/qbittorrent_en.qm + lang/qbittorrent_ro.qm lang/qbittorrent_bg.qm - lang/qbittorrent_ca.qm + lang/qbittorrent_ru.qm + lang/qbittorrent_nl.qm + lang/qbittorrent_nb.qm + lang/qbittorrent_fi.qm + lang/qbittorrent_uk.qm lang/qbittorrent_cs.qm + lang/qbittorrent_pt_BR.qm + lang/qbittorrent_el.qm + lang/qbittorrent_ca.qm + lang/qbittorrent_hu.qm lang/qbittorrent_da.qm lang/qbittorrent_de.qm - lang/qbittorrent_el.qm - lang/qbittorrent_en.qm - lang/qbittorrent_es.qm - lang/qbittorrent_fi.qm - lang/qbittorrent_fr.qm - lang/qbittorrent_hu.qm - lang/qbittorrent_it.qm - lang/qbittorrent_ja.qm - lang/qbittorrent_ko.qm - lang/qbittorrent_nb.qm - lang/qbittorrent_nl.qm - lang/qbittorrent_pl.qm - lang/qbittorrent_pt.qm - lang/qbittorrent_pt_BR.qm - lang/qbittorrent_ro.qm - lang/qbittorrent_ru.qm - lang/qbittorrent_sk.qm - lang/qbittorrent_sv.qm - lang/qbittorrent_tr.qm - lang/qbittorrent_uk.qm lang/qbittorrent_zh.qm - lang/qbittorrent_zh_TW.qm + lang/qbittorrent_ja.qm + lang/qbittorrent_tr.qm + lang/qbittorrent_fr.qm \ No newline at end of file diff --git a/src/search.qrc b/src/search.qrc index 84e551207..37caac734 100644 --- a/src/search.qrc +++ b/src/search.qrc @@ -1,18 +1,18 @@ + search_engine/novaprinter.py + search_engine/nova2dl.py search_engine/helpers.py search_engine/nova2.py - search_engine/nova2dl.py - search_engine/novaprinter.py + search_engine/engines/isohunt.py + search_engine/engines/isohunt.png + search_engine/engines/piratebay.py + search_engine/engines/torrentreactor.py + search_engine/engines/piratebay.png search_engine/engines/btjunkie.png search_engine/engines/btjunkie.py - search_engine/engines/isohunt.png - search_engine/engines/isohunt.py + search_engine/engines/torrentreactor.png search_engine/engines/mininova.png search_engine/engines/mininova.py - search_engine/engines/piratebay.png - search_engine/engines/piratebay.py - search_engine/engines/torrentreactor.png - search_engine/engines/torrentreactor.py \ No newline at end of file diff --git a/src/seeding.ui b/src/seeding.ui index 408e105ba..e22da1b93 100644 --- a/src/seeding.ui +++ b/src/seeding.ui @@ -146,6 +146,11 @@ Seeds / Leechers + + + Copy magnet link + +