blob: e44fc7edaf6bd759372a84bc4be2a183f6800258 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
#ifndef BSPLUGINLIST_PLUGINSWIDGET_H
#define BSPLUGINLIST_PLUGINSWIDGET_H
#include "MOPlugin/IPanelInterface.h"
#include "PluginGroupProxyModel.h"
#include "PluginListModel.h"
#include "PluginSortFilterProxyModel.h"
#include "TESData/PluginList.h"
#include <QSortFilterProxyModel>
#include <QWidget>
class Ui_PluginsWidget;
namespace BSPluginList
{
class PluginsWidget final : public QWidget
{
Q_OBJECT
public:
PluginsWidget(MOBase::IOrganizer* organizer, IPanelInterface* panelInterface,
QWidget* parent = nullptr);
PluginsWidget(const PluginsWidget&) = delete;
PluginsWidget(PluginsWidget&&) = delete;
~PluginsWidget() noexcept;
PluginsWidget& operator=(const PluginsWidget&) = delete;
PluginsWidget& operator=(PluginsWidget&&) = delete;
[[nodiscard]] TESData::PluginList* getPluginList() { return m_PluginList; }
bool eventFilter(QObject* watched, QEvent* event) override;
public slots:
void updatePluginCount();
protected:
void changeEvent(QEvent* event) override;
private slots:
void onGroupCollapsed(const QModelIndex& index);
void onGroupExpanded(const QModelIndex& index);
void onSelectionChanged();
void onPanelActivated();
void onSelectedOriginsChanged(const QList<QString>& origins);
void toggleHideForceEnabled();
void toggleIgnoreMasterConflicts();
void displayPluginInformation(const QModelIndex& index);
void on_pluginList_customContextMenuRequested(const QPoint& pos);
void on_pluginList_doubleClicked(const QModelIndex& index);
void on_pluginList_openOriginExplorer(const QModelIndex& index);
void on_espFilterEdit_textChanged(const QString& filter);
void on_sortButton_clicked();
void on_restoreButton_clicked();
void on_saveButton_clicked();
private:
[[nodiscard]] QMenu* listOptionsMenu();
void saveState();
void restoreState();
void onModStateChanged(const std::map<QString, MOBase::IModList::ModStates>& mods);
bool onAboutToRun(const QString& binary);
void onFinishedRun(const QString& binary, unsigned int exitCode);
void onSettingChanged(const QString& key, const QVariant& oldValue,
const QVariant& newValue);
void checkLoadOrderChanged(const QString& binaryName);
void importLootGroups();
// HACK: Attempt to keep our custom plugin list synchronized with the built-in panel
void synchronizePluginLists(MOBase::IOrganizer* organizer);
Ui_PluginsWidget* ui;
QMenu* optionsMenu = nullptr;
QAction* toggleForceEnabled = nullptr;
QAction* toggleIgnoreMasters = nullptr;
TESData::PluginList* m_PluginList = nullptr;
PluginListModel* m_PluginListModel = nullptr;
PluginSortFilterProxyModel* m_SortProxy = nullptr;
PluginGroupProxyModel* m_GroupProxy = nullptr;
IPanelInterface* m_PanelInterface;
MOBase::IOrganizer* m_Organizer;
bool m_DidUpdateMasterList = false;
bool m_OrganizerRefreshing = false;
bool m_IsRunningApp = false;
bool m_ExternalStatesChanged = false;
};
} // namespace BSPluginList
#endif // TESDATA_PLUGINSWIDGET_H
|