From b9339bb7270e9893aaa78e954fd26ceba889d480 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Mon, 27 Nov 2017 16:40:06 +0800 Subject: [PATCH] Allow to drag-n-drop URLs into mainwindow to initiate download Fix issue: https://github.com/qbittorrent/qBittorrent/issues/7785#issuecomment-347092418 Minor refactor --- src/gui/mainwindow.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index eeb85be78..431fd7904 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -1225,25 +1225,26 @@ void MainWindow::dropEvent(QDropEvent *event) // remove scheme QStringList files; if (event->mimeData()->hasUrls()) { - const QList urls = event->mimeData()->urls(); - foreach (const QUrl &url, urls) { - if (!url.isEmpty()) { - if (url.scheme().compare("file", Qt::CaseInsensitive) == 0) - files << url.toLocalFile(); - else - files << url.toString(); - } + foreach (const QUrl &url, event->mimeData()->urls()) { + if (url.isEmpty()) + continue; + + files << ((url.scheme().compare("file", Qt::CaseInsensitive) == 0) + ? url.toLocalFile() + : url.toString()); } } else { files = event->mimeData()->text().split('\n'); } - // differentiate ".torrent" files and others + // differentiate ".torrent" files/links & magnet links from others QStringList torrentFiles, otherFiles; foreach (const QString &file, files) { - if (file.startsWith("magnet:", Qt::CaseInsensitive) - || file.endsWith(C_TORRENT_FILE_EXTENSION, Qt::CaseInsensitive)) + const bool isTorrentLink = (file.startsWith("magnet:", Qt::CaseInsensitive) + || file.endsWith(C_TORRENT_FILE_EXTENSION, Qt::CaseInsensitive) + || Utils::Misc::isUrl(file)); + if (isTorrentLink) torrentFiles << file; else otherFiles << file;