Skip to content

Commit d066c6f

Browse files
committed
Start working on extensions tab in settings.
1 parent b3c5e1d commit d066c6f

15 files changed

+551
-356
lines changed

src/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ mo2_add_filter(NAME src/settingsdialog GROUPS
232232
settingsdialoggeneral
233233
settingsdialognexus
234234
settingsdialogpaths
235-
settingsdialogplugins
235+
settingsdialogextensions
236+
settingsdialogextensionrow
236237
settingsdialogworkarounds
237238
settingsdialogmodlist
238239
settingsdialogtheme

src/mainwindow.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,14 +230,15 @@ void setFilterShortcuts(QWidget* widget, QLineEdit* edit)
230230
}
231231

232232
MainWindow::MainWindow(Settings& settings, OrganizerCore& organizerCore,
233-
PluginManager& pluginManager, ThemeManager& themeManager,
233+
ExtensionManager& extensionManager, PluginManager& pluginManager,
234+
ThemeManager& themeManager,
234235
TranslationManager& translationManager, QWidget* parent)
235236
: QMainWindow(parent), ui(new Ui::MainWindow), m_WasVisible(false),
236237
m_FirstPaint(true), m_linksSeparator(nullptr), m_Tutorial(this, "MainWindow"),
237238
m_OldProfileIndex(-1), m_OldExecutableIndex(-1),
238239
m_CategoryFactory(CategoryFactory::instance()), m_OrganizerCore(organizerCore),
239-
m_PluginManager(pluginManager), m_ThemeManager(themeManager),
240-
m_TranslationManager(translationManager),
240+
m_ExtensionManager(extensionManager), m_PluginManager(pluginManager),
241+
m_ThemeManager(themeManager), m_TranslationManager(translationManager),
241242
m_ArchiveListWriter(std::bind(&MainWindow::saveArchiveList, this)),
242243
m_LinkToolbar(nullptr), m_LinkDesktop(nullptr), m_LinkStartMenu(nullptr),
243244
m_NumberOfProblems(0), m_ProblemsCheckRequired(false)
@@ -2731,8 +2732,8 @@ void MainWindow::on_actionSettings_triggered()
27312732
const bool oldCheckForUpdates = settings.checkForUpdates();
27322733
const int oldMaxDumps = settings.diagnostics().maxCoreDumps();
27332734

2734-
SettingsDialog dialog(m_PluginManager, m_ThemeManager, m_TranslationManager, settings,
2735-
this);
2735+
SettingsDialog dialog(m_ExtensionManager, m_PluginManager, m_ThemeManager,
2736+
m_TranslationManager, settings, this);
27362737
dialog.exec();
27372738

27382739
auto e = dialog.exitNeeded();

src/mainwindow.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
2323
#include "bsafolder.h"
2424
#include "delayedfilewriter.h"
2525
#include "errorcodes.h"
26+
#include "extensionmanager.h"
2627
#include "imoinfo.h"
27-
#include "iplugingame.h" //namespace MOBase { class IPluginGame; }
28+
#include "iplugingame.h"
2829
#include "iuserinterface.h"
2930
#include "modinfo.h"
3031
#include "modlistbypriorityproxy.h"
@@ -126,7 +127,8 @@ class MainWindow : public QMainWindow, public IUserInterface
126127

127128
public:
128129
explicit MainWindow(Settings& settings, OrganizerCore& organizerCore,
129-
PluginManager& pluginManager, ThemeManager& themeManager,
130+
ExtensionManager& extensionManager, PluginManager& pluginManager,
131+
ThemeManager& themeManager,
130132
TranslationManager& translationManager, QWidget* parent = 0);
131133
~MainWindow();
132134

@@ -296,6 +298,7 @@ private slots:
296298
QTime m_StartTime;
297299

298300
OrganizerCore& m_OrganizerCore;
301+
ExtensionManager& m_ExtensionManager;
299302
PluginManager& m_PluginManager;
300303
ThemeManager& m_ThemeManager;
301304
TranslationManager& m_TranslationManager;

src/moapplication.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,8 @@ int MOApplication::run(MOMultiProcess& multiProcess)
294294

295295
{
296296
tt.start("MOApplication::doOneRun() MainWindow setup");
297-
MainWindow mainWindow(*m_settings, *m_core, *m_plugins, *m_themes, *m_translations);
297+
MainWindow mainWindow(*m_settings, *m_core, *m_extensions, *m_plugins, *m_themes,
298+
*m_translations);
298299

299300
// the nexus interface can show dialogs, make sure they're parented to the
300301
// main window

src/pluginmanager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ PluginDetails::PluginDetails(PluginManager* manager, PluginExtension const& exte
7373

7474
void PluginDetails::fetchRequirements()
7575
{
76-
m_requirements = m_plugin->requirements();
76+
// m_requirements = m_plugin->requirements();
7777
}
7878

7979
std::vector<IPluginRequirement::Problem> PluginDetails::problems() const

src/settingsdialog.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,24 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
1919

2020
#include "settingsdialog.h"
2121
#include "settingsdialogdiagnostics.h"
22+
#include "settingsdialogextensions.h"
2223
#include "settingsdialoggeneral.h"
2324
#include "settingsdialogmodlist.h"
2425
#include "settingsdialognexus.h"
2526
#include "settingsdialogpaths.h"
26-
#include "settingsdialogplugins.h"
2727
#include "settingsdialogtheme.h"
2828
#include "settingsdialogworkarounds.h"
2929
#include "ui_settingsdialog.h"
3030

3131
using namespace MOBase;
3232

33-
SettingsDialog::SettingsDialog(PluginManager& pluginManager,
33+
SettingsDialog::SettingsDialog(ExtensionManager& extensionManager,
34+
PluginManager& pluginManager,
3435
ThemeManager const& themeManager,
3536
TranslationManager const& translationManager,
3637
Settings& settings, QWidget* parent)
3738
: TutorableDialog("SettingsDialog", parent), ui(new Ui::SettingsDialog),
38-
m_settings(settings), m_exit(Exit::None), m_pluginManager(&pluginManager)
39+
m_settings(settings), m_exit(Exit::None)
3940
{
4041
ui->setupUi(this);
4142

@@ -50,7 +51,7 @@ SettingsDialog::SettingsDialog(PluginManager& pluginManager,
5051
std::unique_ptr<SettingsTab>(new DiagnosticsSettingsTab(settings, *this)));
5152
m_tabs.push_back(std::unique_ptr<SettingsTab>(new NexusSettingsTab(settings, *this)));
5253
m_tabs.push_back(std::unique_ptr<SettingsTab>(
53-
new PluginsSettingsTab(settings, *m_pluginManager, *this)));
54+
new ExtensionsSettingsTab(settings, extensionManager, pluginManager, *this)));
5455
m_tabs.push_back(
5556
std::unique_ptr<SettingsTab>(new WorkaroundsSettingsTab(settings, *this)));
5657
}

src/settingsdialog.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
2424
#include "tutorabledialog.h"
2525

2626
class PluginManager;
27+
class ExtensionManager;
2728
class Settings;
2829
class SettingsDialog;
2930
class ThemeManager;
@@ -66,7 +67,8 @@ class SettingsDialog : public MOBase::TutorableDialog
6667
friend class SettingsTab;
6768

6869
public:
69-
explicit SettingsDialog(PluginManager& pluginManager,
70+
explicit SettingsDialog(ExtensionManager& extensionManager,
71+
PluginManager& pluginManager,
7072
ThemeManager const& themeManager,
7173
TranslationManager const& translationManager,
7274
Settings& settings, QWidget* parent = 0);
@@ -94,7 +96,6 @@ public slots:
9496
Settings& m_settings;
9597
std::vector<std::unique_ptr<SettingsTab>> m_tabs;
9698
ExitFlags m_exit;
97-
PluginManager* m_pluginManager;
9899
};
99100

100101
#endif // SETTINGSDIALOG_H

src/settingsdialog.ui

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1476,9 +1476,9 @@ If you disable this feature, MO will only display official DLCs this way. Please
14761476
</item>
14771477
</layout>
14781478
</widget>
1479-
<widget class="QWidget" name="pluginsTab">
1479+
<widget class="QWidget" name="extensionsTab">
14801480
<attribute name="title">
1481-
<string>Plugins</string>
1481+
<string>Extensions</string>
14821482
</attribute>
14831483
<layout class="QVBoxLayout" name="verticalLayout_9">
14841484
<item>
@@ -1532,13 +1532,7 @@ If you disable this feature, MO will only display official DLCs this way. Please
15321532
<number>0</number>
15331533
</property>
15341534
<item>
1535-
<widget class="QTreeWidget" name="pluginsList">
1536-
<column>
1537-
<property name="text">
1538-
<string notr="true">1</string>
1539-
</property>
1540-
</column>
1541-
</widget>
1535+
<widget class="QListWidget" name="extensionsList"/>
15421536
</item>
15431537
<item>
15441538
<layout class="QHBoxLayout" name="horizontalLayout_4">

src/settingsdialogextensionrow.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include "settingsdialogextensionrow.h"
2+
3+
#include "ui_settingsdialogextensionrow.h"
4+
5+
using namespace MOBase;
6+
7+
ExtensionListItemWidget::ExtensionListItemWidget(const IExtension& extension)
8+
: ui{new Ui::ExtensionListItemWidget()}, m_extension{&extension}
9+
{
10+
ui->setupUi(this);
11+
12+
QIcon icon = style()->standardIcon(QStyle::SP_DialogOkButton);
13+
ui->extensionIcon->setPixmap(extension.metadata().icon().pixmap(QSize(48, 48)));
14+
ui->extensionName->setText(extension.metadata().name());
15+
16+
ui->extensionDescription->setText(extension.metadata().description());
17+
ui->extensionAuthor->setText(extension.metadata().author().name());
18+
}

src/settingsdialogextensionrow.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#ifndef SETTINGSDIALOGEXTENSIONROW_H
2+
#define SETTINGSDIALOGEXTENSIONROW_H
3+
4+
#include <QWidget>
5+
6+
#include "extension.h"
7+
8+
namespace Ui
9+
{
10+
class ExtensionListItemWidget;
11+
}
12+
13+
class ExtensionListItemWidget : public QWidget
14+
{
15+
public:
16+
ExtensionListItemWidget(MOBase::IExtension const& extension);
17+
18+
private:
19+
Ui::ExtensionListItemWidget* ui;
20+
const MOBase::IExtension* m_extension;
21+
};
22+
23+
#endif

src/settingsdialogextensionrow.ui

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>ExtensionListItemWidget</class>
4+
<widget class="QWidget" name="ExtensionListItemWidget">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>250</width>
10+
<height>60</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Form</string>
15+
</property>
16+
<layout class="QHBoxLayout" name="horizontalLayout_2">
17+
<property name="leftMargin">
18+
<number>2</number>
19+
</property>
20+
<property name="topMargin">
21+
<number>2</number>
22+
</property>
23+
<property name="rightMargin">
24+
<number>2</number>
25+
</property>
26+
<property name="bottomMargin">
27+
<number>2</number>
28+
</property>
29+
<item>
30+
<widget class="QLabel" name="extensionIcon">
31+
<property name="sizePolicy">
32+
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
33+
<horstretch>0</horstretch>
34+
<verstretch>0</verstretch>
35+
</sizepolicy>
36+
</property>
37+
<property name="minimumSize">
38+
<size>
39+
<width>48</width>
40+
<height>48</height>
41+
</size>
42+
</property>
43+
<property name="maximumSize">
44+
<size>
45+
<width>45</width>
46+
<height>48</height>
47+
</size>
48+
</property>
49+
<property name="text">
50+
<string>TextLabel</string>
51+
</property>
52+
</widget>
53+
</item>
54+
<item>
55+
<spacer name="horizontalSpacer">
56+
<property name="orientation">
57+
<enum>Qt::Horizontal</enum>
58+
</property>
59+
<property name="sizeType">
60+
<enum>QSizePolicy::Fixed</enum>
61+
</property>
62+
<property name="sizeHint" stdset="0">
63+
<size>
64+
<width>5</width>
65+
<height>20</height>
66+
</size>
67+
</property>
68+
</spacer>
69+
</item>
70+
<item>
71+
<layout class="QVBoxLayout" name="verticalLayout">
72+
<property name="spacing">
73+
<number>2</number>
74+
</property>
75+
<item>
76+
<widget class="QLabel" name="extensionName">
77+
<property name="font">
78+
<font>
79+
<pointsize>10</pointsize>
80+
<bold>true</bold>
81+
</font>
82+
</property>
83+
<property name="text">
84+
<string>TextLabel</string>
85+
</property>
86+
</widget>
87+
</item>
88+
<item>
89+
<widget class="QLabel" name="extensionDescription">
90+
<property name="font">
91+
<font>
92+
<pointsize>8</pointsize>
93+
<italic>true</italic>
94+
</font>
95+
</property>
96+
<property name="text">
97+
<string>TextLabel</string>
98+
</property>
99+
</widget>
100+
</item>
101+
<item>
102+
<layout class="QHBoxLayout" name="horizontalLayout">
103+
<item>
104+
<widget class="QLabel" name="extensionAuthor">
105+
<property name="font">
106+
<font>
107+
<pointsize>8</pointsize>
108+
</font>
109+
</property>
110+
<property name="text">
111+
<string>TextLabel</string>
112+
</property>
113+
</widget>
114+
</item>
115+
</layout>
116+
</item>
117+
</layout>
118+
</item>
119+
</layout>
120+
</widget>
121+
<resources/>
122+
<connections/>
123+
</ui>

0 commit comments

Comments
 (0)