mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-24 18:26:11 +03:00
Merge pull request #13689 from Chocobo1/paste
Allow adding torrents using "Paste" key sequence
This commit is contained in:
commit
7c1c91ac43
2 changed files with 40 additions and 4 deletions
|
@ -30,11 +30,13 @@
|
|||
|
||||
#include <chrono>
|
||||
|
||||
#include <QClipboard>
|
||||
#include <QCloseEvent>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QFileSystemWatcher>
|
||||
#include <QKeyEvent>
|
||||
#include <QMessageBox>
|
||||
#include <QMimeData>
|
||||
#include <QProcess>
|
||||
|
@ -129,6 +131,14 @@ namespace
|
|||
{
|
||||
return SettingsStorage::instance();
|
||||
}
|
||||
|
||||
bool isTorrentLink(const QString &str)
|
||||
{
|
||||
return str.startsWith(QLatin1String("magnet:"), Qt::CaseInsensitive)
|
||||
|| str.endsWith(QLatin1String(C_TORRENT_FILE_EXTENSION), Qt::CaseInsensitive)
|
||||
|| (!str.startsWith(QLatin1String("file:"), Qt::CaseInsensitive)
|
||||
&& Net::DownloadManager::hasSupportedScheme(str));
|
||||
}
|
||||
}
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
|
@ -1134,6 +1144,34 @@ void MainWindow::showEvent(QShowEvent *e)
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
if (event->matches(QKeySequence::Paste)) {
|
||||
const QMimeData *mimeData {QGuiApplication::clipboard()->mimeData()};
|
||||
|
||||
if (mimeData->hasText()) {
|
||||
const bool useTorrentAdditionDialog {AddNewTorrentDialog::isEnabled()};
|
||||
const QStringList lines {mimeData->text().split('\n', QString::SkipEmptyParts)};
|
||||
|
||||
for (QString line : lines) {
|
||||
line = line.trimmed();
|
||||
|
||||
if (!isTorrentLink(line))
|
||||
continue;
|
||||
|
||||
if (useTorrentAdditionDialog)
|
||||
AddNewTorrentDialog::show(line, this);
|
||||
else
|
||||
BitTorrent::Session::instance()->addTorrent(line);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
QMainWindow::keyPressEvent(event);
|
||||
}
|
||||
|
||||
// Called when we close the program
|
||||
void MainWindow::closeEvent(QCloseEvent *e)
|
||||
{
|
||||
|
@ -1288,10 +1326,7 @@ void MainWindow::dropEvent(QDropEvent *event)
|
|||
// differentiate ".torrent" files/links & magnet links from others
|
||||
QStringList torrentFiles, otherFiles;
|
||||
for (const QString &file : asConst(files)) {
|
||||
const bool isTorrentLink = (file.startsWith("magnet:", Qt::CaseInsensitive)
|
||||
|| file.endsWith(C_TORRENT_FILE_EXTENSION, Qt::CaseInsensitive)
|
||||
|| Net::DownloadManager::hasSupportedScheme(file));
|
||||
if (isTorrentLink)
|
||||
if (isTorrentLink(file))
|
||||
torrentFiles << file;
|
||||
else
|
||||
otherFiles << file;
|
||||
|
|
|
@ -213,6 +213,7 @@ private:
|
|||
void dragEnterEvent(QDragEnterEvent *event) override;
|
||||
void closeEvent(QCloseEvent *) override;
|
||||
void showEvent(QShowEvent *) override;
|
||||
void keyPressEvent(QKeyEvent *event) override;
|
||||
bool event(QEvent *e) override;
|
||||
void displayRSSTab(bool enable);
|
||||
void displaySearchTab(bool enable);
|
||||
|
|
Loading…
Reference in a new issue