Implement gateway for adding new torrents

PR #19355.
This commit is contained in:
Vladimir Golovnev
2023-08-14 18:17:56 +03:00
committed by GitHub
parent e4313d6651
commit dcf3e97291
42 changed files with 933 additions and 639 deletions

View File

@@ -39,24 +39,22 @@
#include <QStandardItemModel>
#include <QUrl>
#include "base/bittorrent/session.h"
#include "base/preferences.h"
#include "base/search/searchdownloadhandler.h"
#include "base/search/searchhandler.h"
#include "base/search/searchpluginmanager.h"
#include "base/utils/misc.h"
#include "gui/addnewtorrentdialog.h"
#include "gui/interfaces/iguiapplication.h"
#include "gui/lineedit.h"
#include "gui/uithememanager.h"
#include "gui/utils.h"
#include "searchsortmodel.h"
#include "ui_searchjobwidget.h"
SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, QWidget *parent)
: QWidget(parent)
, m_ui(new Ui::SearchJobWidget)
, m_searchHandler(searchHandler)
, m_nameFilteringMode(u"Search/FilteringMode"_s)
SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, IGUIApplication *app, QWidget *parent)
: GUIApplicationComponent(app, parent)
, m_ui {new Ui::SearchJobWidget}
, m_searchHandler {searchHandler}
, m_nameFilteringMode {u"Search/FilteringMode"_s}
{
m_ui->setupUi(this);
@@ -289,12 +287,7 @@ void SearchJobWidget::downloadTorrent(const QModelIndex &rowIndex, const AddTorr
void SearchJobWidget::addTorrentToSession(const QString &source, const AddTorrentOption option)
{
if (source.isEmpty()) return;
if ((option == AddTorrentOption::ShowDialog) || ((option == AddTorrentOption::Default) && AddNewTorrentDialog::isEnabled()))
AddNewTorrentDialog::show(source, this);
else
BitTorrent::Session::instance()->addTorrent(source);
app()->addTorrentManager()->addTorrent(source, {}, option);
}
void SearchJobWidget::updateResultsCount()

View File

@@ -32,6 +32,8 @@
#include <QWidget>
#include "base/settingvalue.h"
#include "gui/guiaddtorrentmanager.h"
#include "gui/guiapplicationcomponent.h"
#define ENGINE_URL_COLUMN 4
#define URL_COLUMN 5
@@ -52,7 +54,7 @@ namespace Ui
class SearchJobWidget;
}
class SearchJobWidget final : public QWidget
class SearchJobWidget final : public GUIApplicationComponent<QWidget>
{
Q_OBJECT
Q_DISABLE_COPY_MOVE(SearchJobWidget)
@@ -74,7 +76,7 @@ public:
NoResults
};
explicit SearchJobWidget(SearchHandler *searchHandler, QWidget *parent = nullptr);
SearchJobWidget(SearchHandler *searchHandler, IGUIApplication *app, QWidget *parent = nullptr);
~SearchJobWidget() override;
Status status() const;
@@ -94,13 +96,6 @@ private slots:
void displayColumnHeaderMenu();
private:
enum class AddTorrentOption
{
Default,
ShowDialog,
SkipDialog,
};
void loadSettings();
void saveSettings() const;
void updateFilter();

View File

@@ -53,6 +53,7 @@
#include "base/search/searchpluginmanager.h"
#include "base/utils/foreignapps.h"
#include "gui/desktopintegration.h"
#include "gui/interfaces/iguiapplication.h"
#include "gui/mainwindow.h"
#include "gui/uithememanager.h"
#include "pluginselectdialog.h"
@@ -84,8 +85,7 @@ namespace
}
SearchWidget::SearchWidget(IGUIApplication *app, MainWindow *mainWindow)
: QWidget(mainWindow)
, GUIApplicationComponent(app)
: GUIApplicationComponent(app, mainWindow)
, m_ui {new Ui::SearchWidget()}
, m_mainWindow {mainWindow}
{
@@ -347,7 +347,7 @@ void SearchWidget::on_searchButton_clicked()
auto *searchHandler = SearchPluginManager::instance()->startSearch(pattern, selectedCategory(), plugins);
// Tab Addition
auto *newTab = new SearchJobWidget(searchHandler, this);
auto *newTab = new SearchJobWidget(searchHandler, app(), this);
m_allTabs.append(newTab);
QString tabName = pattern;

View File

@@ -48,7 +48,7 @@ namespace Ui
class SearchWidget;
}
class SearchWidget : public QWidget, public GUIApplicationComponent
class SearchWidget : public GUIApplicationComponent<QWidget>
{
Q_OBJECT
Q_DISABLE_COPY_MOVE(SearchWidget)