summaryrefslogtreecommitdiff
path: root/src/settingsdialog.h
diff options
context:
space:
mode:
authorChris Bessent <lost.dragonist@gmail.com>2020-01-06 05:17:01 -0700
committerGitHub <noreply@github.com>2020-01-06 05:17:01 -0700
commitdfa600996c49c1b23dca884c963dc917bd9cfc0a (patch)
treec6def4277cc962822d0dcde71fa9148e050f693f /src/settingsdialog.h
parente69078e2399a88bda7bb9ffae7a3d57db9a4e9cf (diff)
parentd1a788dfad341b32235abc25c2ba1645f8be1ace (diff)
Merge pull request #954 from ModOrganizer2/Develop
Stage for release 2.2.2
Diffstat (limited to 'src/settingsdialog.h')
-rw-r--r--src/settingsdialog.h152
1 files changed, 40 insertions, 112 deletions
diff --git a/src/settingsdialog.h b/src/settingsdialog.h
index 858a36d4..bae4a469 100644
--- a/src/settingsdialog.h
+++ b/src/settingsdialog.h
@@ -21,19 +21,35 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#define SETTINGSDIALOG_H
#include "tutorabledialog.h"
-#include <iplugin.h>
-#include <QComboBox>
-#include <QDialog>
-#include <QWebSocket>
-#include <QListWidgetItem>
-#include <QTimer>
+#include "util.h"
class PluginContainer;
class Settings;
+class SettingsDialog;
+namespace Ui { class SettingsDialog; }
+
+
+class SettingsTab
+{
+public:
+ SettingsTab(Settings& settings, SettingsDialog& m_dialog);
+ virtual ~SettingsTab();
+
+ virtual void update() = 0;
+ virtual void closing() {}
+
+protected:
+ Ui::SettingsDialog* ui;
+
+ Settings& settings();
+ SettingsDialog& dialog();
+ QWidget* parentWidget();
+
+private:
+ Settings& m_settings;
+ SettingsDialog& m_dialog;
+};
-namespace Ui {
- class SettingsDialog;
-}
/**
* dialog used to change settings for Mod Organizer. On top of the
@@ -42,11 +58,12 @@ namespace Ui {
**/
class SettingsDialog : public MOBase::TutorableDialog
{
- Q_OBJECT
+ Q_OBJECT;
+ friend class SettingsTab;
public:
explicit SettingsDialog(
- PluginContainer *pluginContainer, Settings* settings, QWidget *parent = 0);
+ PluginContainer* pluginContainer, Settings& settings, QWidget* parent = 0);
~SettingsDialog();
@@ -56,112 +73,23 @@ public:
*/
QString getColoredButtonStyleSheet() const;
- void setButtonColor(QPushButton *button, const QColor &color);
-
-public slots:
-
- virtual void accept();
-
-signals:
+ PluginContainer* pluginContainer();
+ QWidget* parentWidgetForDialogs();
- void resetDialogs();
- void retryApiConnection();
+ void setExitNeeded(ExitFlags e);
+ ExitFlags exitNeeded() const;
-private:
-
- void storeSettings(QListWidgetItem *pluginItem);
- void normalizePath(QLineEdit *lineEdit);
-
-public:
-
- QColor getOverwritingColor() { return m_OverwritingColor; }
- QColor getOverwrittenColor() { return m_OverwrittenColor; }
- QColor getOverwritingArchiveColor() { return m_OverwritingArchiveColor; }
- QColor getOverwrittenArchiveColor() { return m_OverwrittenArchiveColor; }
- QColor getContainsColor() { return m_ContainsColor; }
- QColor getContainedColor() { return m_ContainedColor; }
- QString getExecutableBlacklist() { return m_ExecutableBlacklist; }
- bool getResetGeometries();
- bool getApiKeyChanged();
-
- void setOverwritingColor(QColor col) { m_OverwritingColor = col; }
- void setOverwrittenColor(QColor col) { m_OverwrittenColor = col; }
- void setOverwritingArchiveColor(QColor col) { m_OverwritingArchiveColor = col; }
- void setOverwrittenArchiveColor(QColor col) { m_OverwrittenArchiveColor = col; }
- void setContainsColor(QColor col) { m_ContainsColor = col; }
- void setContainedColor(QColor col) { m_ContainedColor = col; }
- void setExecutableBlacklist(QString blacklist) { m_ExecutableBlacklist = blacklist; }
-
-
-private slots:
- void on_categoriesBtn_clicked();
- void on_execBlacklistBtn_clicked();
- void on_bsaDateBtn_clicked();
- void on_browseDownloadDirBtn_clicked();
- void on_browseModDirBtn_clicked();
- void on_browseCacheDirBtn_clicked();
- void on_resetDialogsButton_clicked();
- void on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
- void on_associateButton_clicked();
- void on_clearCacheButton_clicked();
- void on_nexusDisconnect_clicked();
- void on_browseBaseDirBtn_clicked();
- void on_browseOverwriteDirBtn_clicked();
- void on_browseProfilesDirBtn_clicked();
- void on_browseGameDirBtn_clicked();
- void on_overwritingBtn_clicked();
- void on_overwrittenBtn_clicked();
- void on_overwritingArchiveBtn_clicked();
- void on_overwrittenArchiveBtn_clicked();
- void on_containsBtn_clicked();
- void on_containedBtn_clicked();
- void on_resetColorsBtn_clicked();
- void on_baseDirEdit_editingFinished();
- void on_downloadDirEdit_editingFinished();
- void on_modDirEdit_editingFinished();
- void on_cacheDirEdit_editingFinished();
- void on_profilesDirEdit_editingFinished();
- void on_overwriteDirEdit_editingFinished();
- void on_nexusConnect_clicked();
- void on_nexusManualKey_clicked();
- void on_resetGeometryBtn_clicked();
+ int exec() override;
- void deleteBlacklistItem();
- void dispatchLogin();
- void loginPing();
- void authError(QAbstractSocket::SocketError error);
- void receiveApiKey(const QString &apiKey);
- void completeApiConnection();
+public slots:
+ virtual void accept();
private:
- Ui::SettingsDialog *ui;
- Settings* m_settings;
- PluginContainer *m_PluginContainer;
-
- QColor m_OverwritingColor;
- QColor m_OverwrittenColor;
- QColor m_OverwritingArchiveColor;
- QColor m_OverwrittenArchiveColor;
- QColor m_ContainsColor;
- QColor m_ContainedColor;
-
- bool m_KeyReceived;
- bool m_KeyCleared;
- bool m_GeometriesReset;
- QString m_UUID;
- QString m_AuthToken;
-
- QString m_ExecutableBlacklist;
- QWebSocket *m_nexusLogin;
- QTimer m_loginTimer;
- int m_totalPings = 0;
-
- bool setKey(const QString& key);
- bool clearKey();
- void updateNexusButtons();
-
- void fetchNexusApiKey();
- void testApiKey();
+ Ui::SettingsDialog* ui;
+ Settings& m_settings;
+ std::vector<std::unique_ptr<SettingsTab>> m_tabs;
+ ExitFlags m_exit;
+ PluginContainer* m_pluginContainer;
};
#endif // SETTINGSDIALOG_H