qBittorrent
pluginselectdialog.h
Go to the documentation of this file.
1 /*
2  * Bittorrent Client using Qt and libtorrent.
3  * Copyright (C) 2015 Vladimir Golovnev <glassez@yandex.ru>
4  * Copyright (C) 2006 Christophe Dumez <chris@qbittorrent.org>
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * In addition, as a special exception, the copyright holders give permission to
21  * link this program with the OpenSSL project's "OpenSSL" library (or with
22  * modified versions of it that use the same license as the "OpenSSL" library),
23  * and distribute the linked executables. You must obey the GNU General Public
24  * License in all respects for all of the code used other than "OpenSSL". If you
25  * modify file(s), you may extend this exception to your version of the file(s),
26  * but you are not obligated to do so. If you do not wish to do so, delete this
27  * exception statement from your version.
28  */
29 
30 #pragma once
31 
32 #include <QDialog>
33 #include <QStringList>
34 
36 #include "base/settingvalue.h"
37 
38 class QDropEvent;
39 class QTreeWidgetItem;
40 
41 namespace Net
42 {
43  struct DownloadResult;
44 }
45 
46 namespace Ui
47 {
48  class PluginSelectDialog;
49 }
50 
51 class PluginSelectDialog final : public QDialog
52 {
53  Q_OBJECT
54  Q_DISABLE_COPY_MOVE(PluginSelectDialog)
55 
56 public:
57  explicit PluginSelectDialog(SearchPluginManager *pluginManager, QWidget *parent = nullptr);
58  ~PluginSelectDialog() override;
59 
60  QVector<QTreeWidgetItem*> findItemsWithUrl(const QString &url);
61  QTreeWidgetItem *findItemWithID(const QString &id);
62 
63 protected:
64  void dropEvent(QDropEvent *event) override;
65  void dragEnterEvent(QDragEnterEvent *event) override;
66 
67 private slots:
72  void togglePluginState(QTreeWidgetItem*, int);
73  void setRowColor(int row, const QString &color);
74  void displayContextMenu(const QPoint &);
75  void enableSelection(bool enable);
76  void askForLocalPlugin();
77  void askForPluginUrl();
78  void iconDownloadFinished(const Net::DownloadResult &result);
79 
80  void checkForUpdatesFinished(const QHash<QString, PluginVersion> &updateInfo);
81  void checkForUpdatesFailed(const QString &reason);
82  void pluginInstalled(const QString &name);
83  void pluginInstallationFailed(const QString &name, const QString &reason);
84  void pluginUpdated(const QString &name);
85  void pluginUpdateFailed(const QString &name, const QString &reason);
86 
87 private:
89  void addNewPlugin(const QString &pluginName);
90  void startAsyncOp();
91  void finishAsyncOp();
92  void finishPluginUpdate();
93 
94  Ui::PluginSelectDialog *m_ui;
97  QStringList m_updatedPlugins;
98  int m_asyncOps = 0;
100 };
Ui::PluginSelectDialog * m_ui
PluginSelectDialog(SearchPluginManager *pluginManager, QWidget *parent=nullptr)
void togglePluginState(QTreeWidgetItem *, int)
void setRowColor(int row, const QString &color)
void iconDownloadFinished(const Net::DownloadResult &result)
void checkForUpdatesFinished(const QHash< QString, PluginVersion > &updateInfo)
void pluginInstallationFailed(const QString &name, const QString &reason)
void displayContextMenu(const QPoint &)
void dragEnterEvent(QDragEnterEvent *event) override
void pluginUpdateFailed(const QString &name, const QString &reason)
QStringList m_updatedPlugins
QVector< QTreeWidgetItem * > findItemsWithUrl(const QString &url)
SearchPluginManager * m_pluginManager
SettingValue< QSize > m_storeDialogSize
void enableSelection(bool enable)
void addNewPlugin(const QString &pluginName)
void pluginInstalled(const QString &name)
QTreeWidgetItem * findItemWithID(const QString &id)
void checkForUpdatesFailed(const QString &reason)
void dropEvent(QDropEvent *event) override
void pluginUpdated(const QString &name)
Definition: session.h:86