summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/settings.cpp204
-rw-r--r--src/settings.h65
-rw-r--r--src/settingsdialog.cpp105
-rw-r--r--src/settingsdialog.h63
-rw-r--r--src/settingsdialoggeneral.cpp274
-rw-r--r--src/settingsdialoggeneral.h53
7 files changed, 392 insertions, 375 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9785dc3d..29c419b5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -37,6 +37,7 @@ SET(organizer_SRCS
spawn.cpp
singleinstance.cpp
settingsdialog.cpp
+ settingsdialoggeneral.cpp
settings.cpp
selfupdater.cpp
selectiondialog.cpp
@@ -151,6 +152,7 @@ SET(organizer_HDRS
spawn.h
singleinstance.h
settingsdialog.h
+ settingsdialoggeneral.h
settings.h
selfupdater.h
selectiondialog.h
@@ -431,6 +433,7 @@ set(profiles
set(settings
settings
settingsdialog
+ settingsdialoggeneral
)
set(utilities
diff --git a/src/settings.cpp b/src/settings.cpp
index 5ad066b2..0911b155 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -22,6 +22,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "pluginsetting.h"
#include "serverinfo.h"
#include "settingsdialog.h"
+#include "settingsdialoggeneral.h"
#include "versioninfo.h"
#include "appconfig.h"
#include "organizercore.h"
@@ -81,6 +82,23 @@ private:
};
+SettingsTab::SettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
+ : m_parent(m_parent)
+ , m_Settings(m_parent->settingsRef())
+ , m_dialog(m_dialog)
+ , ui(m_dialog.ui)
+{
+}
+
+SettingsTab::~SettingsTab()
+{}
+
+QWidget* SettingsTab::parentWidget()
+{
+ return &m_dialog;
+}
+
+
Settings *Settings::s_Instance = nullptr;
@@ -663,63 +681,9 @@ void Settings::writePluginBlacklist()
m_Settings.endArray();
}
-void Settings::addLanguages(QComboBox *languageBox)
-{
- std::vector<std::pair<QString, QString>> languages;
-
- QDirIterator langIter(QCoreApplication::applicationDirPath() + "/translations", QDir::Files);
- QString pattern = ToQString(AppConfig::translationPrefix()) + "_([a-z]{2,3}(_[A-Z]{2,2})?).qm";
- QRegExp exp(pattern);
- while (langIter.hasNext()) {
- langIter.next();
- QString file = langIter.fileName();
- if (exp.exactMatch(file)) {
- QString languageCode = exp.cap(1);
- QLocale locale(languageCode);
- QString languageString = QString("%1 (%2)").arg(locale.nativeLanguageName()).arg(locale.nativeCountryName()); //QLocale::languageToString(locale.language());
- if (locale.language() == QLocale::Chinese) {
- if (languageCode == "zh_TW") {
- languageString = "Chinese (traditional)";
- } else {
- languageString = "Chinese (simplified)";
- }
- }
- languages.push_back(std::make_pair(QString("%1").arg(languageString), exp.cap(1)));
- //languageBox->addItem(QString("%1").arg(languageString), exp.cap(1));
- }
- }
- if (!languageBox->findText("English")) {
- languages.push_back(std::make_pair(QString("English"), QString("en_US")));
- //languageBox->addItem("English", "en_US");
- }
- std::sort(languages.begin(), languages.end());
- for (const auto &lang : languages) {
- languageBox->addItem(lang.first, lang.second);
- }
-}
-
-void Settings::addStyles(QComboBox *styleBox)
-{
- styleBox->addItem("None", "");
- styleBox->addItem("Fusion", "Fusion");
-
- QDirIterator langIter(QCoreApplication::applicationDirPath() + "/" + ToQString(AppConfig::stylesheetsPath()), QStringList("*.qss"), QDir::Files);
- while (langIter.hasNext()) {
- langIter.next();
- QString style = langIter.fileName();
- styleBox->addItem(style, style);
- }
-}
-
-void Settings::resetDialogs()
-{
- QuestionBoxMemory::resetDialogs();
-}
-
void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
{
SettingsDialog dialog(pluginContainer, this, parent);
- connect(&dialog, SIGNAL(resetDialogs()), this, SLOT(resetDialogs()));
std::vector<std::unique_ptr<SettingsTab>> tabs;
@@ -787,128 +751,6 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
}
-Settings::SettingsTab::SettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : m_parent(m_parent)
- , m_Settings(m_parent->m_Settings)
- , m_dialog(m_dialog)
-{
-}
-
-Settings::SettingsTab::~SettingsTab()
-{}
-
-Settings::GeneralTab::GeneralTab(Settings *m_parent, SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
- , m_languageBox(m_dialog.findChild<QComboBox *>("languageBox"))
- , m_styleBox(m_dialog.findChild<QComboBox *>("styleBox"))
- , m_compactBox(m_dialog.findChild<QCheckBox *>("compactBox"))
- , m_showMetaBox(m_dialog.findChild<QCheckBox *>("showMetaBox"))
- , m_usePrereleaseBox(m_dialog.findChild<QCheckBox *>("usePrereleaseBox"))
- , m_overwritingBtn(m_dialog.findChild<QPushButton *>("overwritingBtn"))
- , m_overwrittenBtn(m_dialog.findChild<QPushButton *>("overwrittenBtn"))
- , m_overwritingArchiveBtn(m_dialog.findChild<QPushButton *>("overwritingArchiveBtn"))
- , m_overwrittenArchiveBtn(m_dialog.findChild<QPushButton *>("overwrittenArchiveBtn"))
- , m_containsBtn(m_dialog.findChild<QPushButton *>("containsBtn"))
- , m_containedBtn(m_dialog.findChild<QPushButton *>("containedBtn"))
- , m_colorSeparatorsBox(m_dialog.findChild<QCheckBox *>("colorSeparatorsBox"))
-{
- // FIXME I think 'addLanguages' lives in here not in parent
- m_parent->addLanguages(m_languageBox);
- {
- QString languageCode = m_parent->language();
- int currentID = m_languageBox->findData(languageCode);
- // I made a mess. :( Most languages are stored with only the iso country
- // code (2 characters like "de") but chinese
- // with the exact language variant (zh_TW) so I have to search for both
- // variants
- if (currentID == -1) {
- currentID = m_languageBox->findData(languageCode.mid(0, 2));
- }
- if (currentID != -1) {
- m_languageBox->setCurrentIndex(currentID);
- }
- }
-
- // FIXME I think addStyles lives in here not in parent
- m_parent->addStyles(m_styleBox);
- {
- int currentID = m_styleBox->findData(
- m_Settings.value("Settings/style", "").toString());
- if (currentID != -1) {
- m_styleBox->setCurrentIndex(currentID);
- }
- }
- /* verision using palette only works with fusion theme for some stupid reason...
- m_overwritingBtn->setAutoFillBackground(true);
- m_overwrittenBtn->setAutoFillBackground(true);
- m_containsBtn->setAutoFillBackground(true);
- m_containedBtn->setAutoFillBackground(true);
- m_overwritingBtn->setPalette(QPalette(m_parent->modlistOverwritingLooseColor()));
- m_overwrittenBtn->setPalette(QPalette(m_parent->modlistOverwrittenLooseColor()));
- m_containsBtn->setPalette(QPalette(m_parent->modlistContainsPluginColor()));
- m_containedBtn->setPalette(QPalette(m_parent->pluginListContainedColor()));
- QPalette palette1 = m_overwritingBtn->palette();
- QPalette palette2 = m_overwrittenBtn->palette();
- QPalette palette3 = m_containsBtn->palette();
- QPalette palette4 = m_containedBtn->palette();
- palette1.setColor(QPalette::Background, m_parent->modlistOverwritingLooseColor());
- palette2.setColor(QPalette::Background, m_parent->modlistOverwrittenLooseColor());
- palette3.setColor(QPalette::Background, m_parent->modlistContainsPluginColor());
- palette4.setColor(QPalette::Background, m_parent->pluginListContainedColor());
- m_overwritingBtn->setPalette(palette1);
- m_overwrittenBtn->setPalette(palette2);
- m_containsBtn->setPalette(palette3);
- m_containedBtn->setPalette(palette4);
- */
-
- //version with stylesheet
- m_dialog.setButtonColor(m_overwritingBtn, m_parent->modlistOverwritingLooseColor());
- m_dialog.setButtonColor(m_overwrittenBtn, m_parent->modlistOverwrittenLooseColor());
- m_dialog.setButtonColor(m_overwritingArchiveBtn, m_parent->modlistOverwritingArchiveColor());
- m_dialog.setButtonColor(m_overwrittenArchiveBtn, m_parent->modlistOverwrittenArchiveColor());
- m_dialog.setButtonColor(m_containsBtn, m_parent->modlistContainsPluginColor());
- m_dialog.setButtonColor(m_containedBtn, m_parent->pluginListContainedColor());
-
- m_dialog.setOverwritingColor(m_parent->modlistOverwritingLooseColor());
- m_dialog.setOverwrittenColor(m_parent->modlistOverwrittenLooseColor());
- m_dialog.setOverwritingArchiveColor(m_parent->modlistOverwritingArchiveColor());
- m_dialog.setOverwrittenArchiveColor(m_parent->modlistOverwrittenArchiveColor());
- m_dialog.setContainsColor(m_parent->modlistContainsPluginColor());
- m_dialog.setContainedColor(m_parent->pluginListContainedColor());
-
- m_compactBox->setChecked(m_parent->compactDownloads());
- m_showMetaBox->setChecked(m_parent->metaDownloads());
- m_usePrereleaseBox->setChecked(m_parent->usePrereleases());
- m_colorSeparatorsBox->setChecked(m_parent->colorSeparatorScrollbar());
-}
-
-void Settings::GeneralTab::update()
-{
- QString oldLanguage = m_parent->language();
- QString newLanguage = m_languageBox->itemData(m_languageBox->currentIndex()).toString();
- if (newLanguage != oldLanguage) {
- m_Settings.setValue("Settings/language", newLanguage);
- emit m_parent->languageChanged(newLanguage);
- }
-
- QString oldStyle = m_Settings.value("Settings/style", "").toString();
- QString newStyle = m_styleBox->itemData(m_styleBox->currentIndex()).toString();
- if (oldStyle != newStyle) {
- m_Settings.setValue("Settings/style", newStyle);
- emit m_parent->styleChanged(newStyle);
- }
-
- m_Settings.setValue("Settings/overwritingLooseFilesColor", m_dialog.getOverwritingColor());
- m_Settings.setValue("Settings/overwrittenLooseFilesColor", m_dialog.getOverwrittenColor());
- m_Settings.setValue("Settings/overwritingArchiveFilesColor", m_dialog.getOverwritingArchiveColor());
- m_Settings.setValue("Settings/overwrittenArchiveFilesColor", m_dialog.getOverwrittenArchiveColor());
- m_Settings.setValue("Settings/containsPluginColor", m_dialog.getContainsColor());
- m_Settings.setValue("Settings/containedColor", m_dialog.getContainedColor());
- m_Settings.setValue("Settings/compact_downloads", m_compactBox->isChecked());
- m_Settings.setValue("Settings/meta_downloads", m_showMetaBox->isChecked());
- m_Settings.setValue("Settings/use_prereleases", m_usePrereleaseBox->isChecked());
- m_Settings.setValue("Settings/colorSeparatorScrollbars", m_colorSeparatorsBox->isChecked());
-}
Settings::PathsTab::PathsTab(Settings *parent, SettingsDialog &dialog)
: SettingsTab(parent, dialog)
@@ -991,7 +833,7 @@ void Settings::PathsTab::update()
}
Settings::DiagnosticsTab::DiagnosticsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
+ : SettingsTab(m_parent, m_dialog)
, m_logLevelBox(m_dialog.findChild<QComboBox *>("logLevelBox"))
, m_dumpsTypeBox(m_dialog.findChild<QComboBox *>("dumpsTypeBox"))
, m_dumpsMaxEdit(m_dialog.findChild<QSpinBox *>("dumpsMaxEdit"))
@@ -1036,7 +878,7 @@ void Settings::DiagnosticsTab::setLevelsBox()
}
Settings::NexusTab::NexusTab(Settings *parent, SettingsDialog &dialog)
- : Settings::SettingsTab(parent, dialog)
+ : SettingsTab(parent, dialog)
, m_offlineBox(dialog.findChild<QCheckBox *>("offlineBox"))
, m_proxyBox(dialog.findChild<QCheckBox *>("proxyBox"))
, m_knownServersList(dialog.findChild<QListWidget *>("knownServersList"))
@@ -1114,7 +956,7 @@ void Settings::NexusTab::update()
}
Settings::SteamTab::SteamTab(Settings *m_parent, SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
+ : SettingsTab(m_parent, m_dialog)
, m_steamUserEdit(m_dialog.findChild<QLineEdit *>("steamUserEdit"))
, m_steamPassEdit(m_dialog.findChild<QLineEdit *>("steamPassEdit"))
{
@@ -1134,7 +976,7 @@ void Settings::SteamTab::update()
}
Settings::PluginsTab::PluginsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
+ : SettingsTab(m_parent, m_dialog)
, m_pluginsList(m_dialog.findChild<QListWidget *>("pluginsList"))
, m_pluginBlacklistList(m_dialog.findChild<QListWidget *>("pluginBlacklist"))
{
@@ -1181,7 +1023,7 @@ void Settings::PluginsTab::update()
Settings::WorkaroundsTab::WorkaroundsTab(Settings *m_parent,
SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
+ : SettingsTab(m_parent, m_dialog)
, m_appIDEdit(m_dialog.findChild<QLineEdit *>("appIDEdit"))
, m_mechanismBox(m_dialog.findChild<QComboBox *>("mechanismBox"))
, m_hideUncheckedBox(m_dialog.findChild<QCheckBox *>("hideUncheckedBox"))
diff --git a/src/settings.h b/src/settings.h
index c66eb94c..e88080ba 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -55,8 +55,30 @@ namespace MOBase {
class IPluginGame;
}
+namespace Ui {
+ class SettingsDialog;
+}
+
class SettingsDialog;
class PluginContainer;
+class Settings;
+
+class SettingsTab
+{
+public:
+ SettingsTab(Settings *m_parent, SettingsDialog &m_dialog);
+ virtual ~SettingsTab();
+
+ virtual void update() = 0;
+
+protected:
+ Settings *m_parent;
+ QSettings &m_Settings;
+ SettingsDialog &m_dialog;
+ Ui::SettingsDialog* ui;
+
+ QWidget* parentWidget();
+};
/**
* manages the settings for Mod Organizer. The settings are not cached
@@ -404,6 +426,8 @@ public:
*/
bool colorSeparatorScrollbar() const;
+ QSettings& settingsRef() { return m_Settings; }
+
public slots:
void managedGameChanged(MOBase::IPluginGame const *gamePlugin);
@@ -414,49 +438,10 @@ private:
static bool obfuscate(const QString key, const QString data);
static QString deObfuscate(const QString key);
- void addLanguages(QComboBox *languageBox);
- void addStyles(QComboBox *styleBox);
void readPluginBlacklist();
void writePluginBlacklist();
QString getConfigurablePath(const QString &key, const QString &def, bool resolve) const;
- class SettingsTab
- {
- public:
- SettingsTab(Settings *m_parent, SettingsDialog &m_dialog);
- virtual ~SettingsTab();
-
- virtual void update() = 0;
-
- protected:
- Settings *m_parent;
- QSettings &m_Settings;
- SettingsDialog &m_dialog;
-
- };
-
- /** Display/store the configuration in the 'general' tab of the settings dialogue */
- class GeneralTab : public SettingsTab
- {
- public:
- GeneralTab(Settings *m_parent, SettingsDialog &m_dialog);
-
- void update();
-
- private:
- QComboBox *m_languageBox;
- QComboBox *m_styleBox;
- QCheckBox *m_compactBox;
- QCheckBox *m_showMetaBox;
- QCheckBox *m_usePrereleaseBox;
- QPushButton *m_overwritingBtn;
- QPushButton *m_overwrittenBtn;
- QPushButton *m_overwritingArchiveBtn;
- QPushButton *m_overwrittenArchiveBtn;
- QPushButton *m_containsBtn;
- QPushButton *m_containedBtn;
- QCheckBox *m_colorSeparatorsBox;
- };
class PathsTab : public SettingsTab
{
@@ -554,8 +539,6 @@ private:
private slots:
- void resetDialogs();
-
signals:
void languageChanged(const QString &newLanguage);
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index 0dae31ac..f922cfb9 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -131,23 +131,6 @@ QString SettingsDialog::getColoredButtonStyleSheet() const
"}");
}
-void SettingsDialog::setButtonColor(QPushButton *button, const QColor &color)
-{
- button->setStyleSheet(
- QString("QPushButton {"
- "background-color: rgba(%1, %2, %3, %4);"
- "color: %5;"
- "border: 1px solid;"
- "padding: 3px;"
- "}")
- .arg(color.red())
- .arg(color.green())
- .arg(color.blue())
- .arg(color.alpha())
- .arg(Settings::getIdealTextColor(color).name())
- );
-};
-
void SettingsDialog::accept()
{
QString newModPath = ui->modDirEdit->text();
@@ -181,14 +164,6 @@ bool SettingsDialog::getApiKeyChanged()
return m_keyChanged;
}
-void SettingsDialog::on_categoriesBtn_clicked()
-{
- CategoriesDialog dialog(this);
- if (dialog.exec() == QDialog::Accepted) {
- dialog.commitChanges();
- }
-}
-
void SettingsDialog::on_execBlacklistBtn_clicked()
{
bool ok = false;
@@ -299,86 +274,6 @@ void SettingsDialog::on_browseGameDirBtn_clicked()
}
}
-void SettingsDialog::on_containsBtn_clicked()
-{
- QColor result = QColorDialog::getColor(m_ContainsColor, this, "Color Picker: Mod contains selected plugin", QColorDialog::ShowAlphaChannel);
- if (result.isValid()) {
- m_ContainsColor = result;
- setButtonColor(ui->containsBtn, result);
- }
-}
-
-void SettingsDialog::on_containedBtn_clicked()
-{
- QColor result = QColorDialog::getColor(m_ContainedColor, this, "ColorPicker: Plugin is Contained in selected Mod", QColorDialog::ShowAlphaChannel);
- if (result.isValid()) {
- m_ContainedColor = result;
- setButtonColor(ui->containedBtn, result);
- }
-}
-
-void SettingsDialog::on_overwrittenBtn_clicked()
-{
- QColor result = QColorDialog::getColor(m_OverwrittenColor, this, "ColorPicker: Is overwritten (loose files)", QColorDialog::ShowAlphaChannel);
- if (result.isValid()) {
- m_OverwrittenColor = result;
- setButtonColor(ui->overwrittenBtn, result);
- }
-}
-
-void SettingsDialog::on_overwritingBtn_clicked()
-{
- QColor result = QColorDialog::getColor(m_OverwritingColor, this, "ColorPicker: Is overwriting (loose files)", QColorDialog::ShowAlphaChannel);
- if (result.isValid()) {
- m_OverwritingColor = result;
- setButtonColor(ui->overwritingBtn, result);
- }
-}
-
-void SettingsDialog::on_overwrittenArchiveBtn_clicked()
-{
- QColor result = QColorDialog::getColor(m_OverwrittenArchiveColor, this, "ColorPicker: Is overwritten (archive files)", QColorDialog::ShowAlphaChannel);
- if (result.isValid()) {
- m_OverwrittenArchiveColor = result;
- setButtonColor(ui->overwrittenArchiveBtn, result);
- }
-}
-
-void SettingsDialog::on_overwritingArchiveBtn_clicked()
-{
- QColor result = QColorDialog::getColor(m_OverwritingArchiveColor, this, "ColorPicker: Is overwriting (archive files)", QColorDialog::ShowAlphaChannel);
- if (result.isValid()) {
- m_OverwritingArchiveColor = result;
- setButtonColor(ui->overwritingArchiveBtn, result);
- }
-}
-
-void SettingsDialog::on_resetColorsBtn_clicked()
-{
- m_OverwritingColor = QColor(255, 0, 0, 64);
- m_OverwrittenColor = QColor(0, 255, 0, 64);
- m_OverwritingArchiveColor = QColor(255, 0, 255, 64);
- m_OverwrittenArchiveColor = QColor(0, 255, 255, 64);
- m_ContainsColor = QColor(0, 0, 255, 64);
- m_ContainedColor = QColor(0, 0, 255, 64);
-
- setButtonColor(ui->overwritingBtn, m_OverwritingColor);
- setButtonColor(ui->overwrittenBtn, m_OverwrittenColor);
- setButtonColor(ui->overwritingArchiveBtn, m_OverwritingArchiveColor);
- setButtonColor(ui->overwrittenArchiveBtn, m_OverwrittenArchiveColor);
- setButtonColor(ui->containsBtn, m_ContainsColor);
- setButtonColor(ui->containedBtn, m_ContainedColor);
-}
-
-void SettingsDialog::on_resetDialogsButton_clicked()
-{
- if (QMessageBox::question(this, tr("Confirm?"),
- tr("This will make all dialogs show up again where you checked the \"Remember selection\"-box. Continue?"),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit resetDialogs();
- }
-}
-
void SettingsDialog::on_nexusConnect_clicked()
{
if (m_nexusLogin && m_nexusLogin->isActive()) {
diff --git a/src/settingsdialog.h b/src/settingsdialog.h
index c5f487fd..01a0afa2 100644
--- a/src/settingsdialog.h
+++ b/src/settingsdialog.h
@@ -54,7 +54,7 @@ public:
*/
QString getColoredButtonStyleSheet() const;
- void setButtonColor(QPushButton *button, const QColor &color);
+ Ui::SettingsDialog *ui;
public slots:
@@ -62,7 +62,6 @@ public slots:
signals:
- void resetDialogs();
void retryApiConnection();
private:
@@ -71,73 +70,41 @@ private:
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; }
+ void setExecutableBlacklist(QString blacklist) { m_ExecutableBlacklist = blacklist; }
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_baseDirEdit_editingFinished();
void on_browseBaseDirBtn_clicked();
+ void on_browseCacheDirBtn_clicked();
+ void on_browseDownloadDirBtn_clicked();
+ void on_browseGameDirBtn_clicked();
+ void on_browseModDirBtn_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_bsaDateBtn_clicked();
+ void on_cacheDirEdit_editingFinished();
+ void on_clearCacheButton_clicked();
void on_downloadDirEdit_editingFinished();
+ void on_execBlacklistBtn_clicked();
void on_modDirEdit_editingFinished();
- void on_cacheDirEdit_editingFinished();
- void on_profilesDirEdit_editingFinished();
- void on_overwriteDirEdit_editingFinished();
void on_nexusConnect_clicked();
+ void on_nexusDisconnect_clicked();
void on_nexusManualKey_clicked();
+ void on_overwriteDirEdit_editingFinished();
+ void on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
+ void on_profilesDirEdit_editingFinished();
void on_resetGeometryBtn_clicked();
void deleteBlacklistItem();
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_GeometriesReset;
bool m_keyChanged;
diff --git a/src/settingsdialoggeneral.cpp b/src/settingsdialoggeneral.cpp
new file mode 100644
index 00000000..b22b04fd
--- /dev/null
+++ b/src/settingsdialoggeneral.cpp
@@ -0,0 +1,274 @@
+#include "settingsdialoggeneral.h"
+#include "ui_settingsdialog.h"
+#include "appconfig.h"
+#include "categoriesdialog.h"
+#include <questionboxmemory.h>
+
+using MOBase::QuestionBoxMemory;
+
+GeneralTab::GeneralTab(Settings *m_parent, SettingsDialog &m_dialog)
+ : SettingsTab(m_parent, m_dialog)
+{
+ addLanguages();
+ {
+ QString languageCode = m_parent->language();
+ int currentID = ui->languageBox->findData(languageCode);
+ // I made a mess. :( Most languages are stored with only the iso country
+ // code (2 characters like "de") but chinese
+ // with the exact language variant (zh_TW) so I have to search for both
+ // variants
+ if (currentID == -1) {
+ currentID = ui->languageBox->findData(languageCode.mid(0, 2));
+ }
+ if (currentID != -1) {
+ ui->languageBox->setCurrentIndex(currentID);
+ }
+ }
+
+ addStyles();
+ {
+ int currentID = ui->styleBox->findData(
+ m_Settings.value("Settings/style", "").toString());
+ if (currentID != -1) {
+ ui->styleBox->setCurrentIndex(currentID);
+ }
+ }
+ /* verision using palette only works with fusion theme for some stupid reason...
+ m_overwritingBtn->setAutoFillBackground(true);
+ m_overwrittenBtn->setAutoFillBackground(true);
+ m_containsBtn->setAutoFillBackground(true);
+ m_containedBtn->setAutoFillBackground(true);
+ m_overwritingBtn->setPalette(QPalette(m_parent->modlistOverwritingLooseColor()));
+ m_overwrittenBtn->setPalette(QPalette(m_parent->modlistOverwrittenLooseColor()));
+ m_containsBtn->setPalette(QPalette(m_parent->modlistContainsPluginColor()));
+ m_containedBtn->setPalette(QPalette(m_parent->pluginListContainedColor()));
+ QPalette palette1 = m_overwritingBtn->palette();
+ QPalette palette2 = m_overwrittenBtn->palette();
+ QPalette palette3 = m_containsBtn->palette();
+ QPalette palette4 = m_containedBtn->palette();
+ palette1.setColor(QPalette::Background, m_parent->modlistOverwritingLooseColor());
+ palette2.setColor(QPalette::Background, m_parent->modlistOverwrittenLooseColor());
+ palette3.setColor(QPalette::Background, m_parent->modlistContainsPluginColor());
+ palette4.setColor(QPalette::Background, m_parent->pluginListContainedColor());
+ m_overwritingBtn->setPalette(palette1);
+ m_overwrittenBtn->setPalette(palette2);
+ m_containsBtn->setPalette(palette3);
+ m_containedBtn->setPalette(palette4);
+ */
+
+ //version with stylesheet
+ setButtonColor(ui->overwritingBtn, m_parent->modlistOverwritingLooseColor());
+ setButtonColor(ui->overwrittenBtn, m_parent->modlistOverwrittenLooseColor());
+ setButtonColor(ui->overwritingArchiveBtn, m_parent->modlistOverwritingArchiveColor());
+ setButtonColor(ui->overwrittenArchiveBtn, m_parent->modlistOverwrittenArchiveColor());
+ setButtonColor(ui->containsBtn, m_parent->modlistContainsPluginColor());
+ setButtonColor(ui->containedBtn, m_parent->pluginListContainedColor());
+
+ setOverwritingColor(m_parent->modlistOverwritingLooseColor());
+ setOverwrittenColor(m_parent->modlistOverwrittenLooseColor());
+ setOverwritingArchiveColor(m_parent->modlistOverwritingArchiveColor());
+ setOverwrittenArchiveColor(m_parent->modlistOverwrittenArchiveColor());
+ setContainsColor(m_parent->modlistContainsPluginColor());
+ setContainedColor(m_parent->pluginListContainedColor());
+
+ ui->compactBox->setChecked(m_parent->compactDownloads());
+ ui->showMetaBox->setChecked(m_parent->metaDownloads());
+ ui->usePrereleaseBox->setChecked(m_parent->usePrereleases());
+ ui->colorSeparatorsBox->setChecked(m_parent->colorSeparatorScrollbar());
+
+ QObject::connect(ui->overwritingArchiveBtn, &QPushButton::clicked, [&]{ on_overwritingArchiveBtn_clicked(); });
+ QObject::connect(ui->overwritingBtn, &QPushButton::clicked, [&]{ on_overwritingBtn_clicked(); });
+ QObject::connect(ui->overwrittenArchiveBtn, &QPushButton::clicked, [&]{ on_overwrittenArchiveBtn_clicked(); });
+ QObject::connect(ui->overwrittenBtn, &QPushButton::clicked, [&]{ on_overwrittenBtn_clicked(); });
+ QObject::connect(ui->containedBtn, &QPushButton::clicked, [&]{ on_containedBtn_clicked(); });
+ QObject::connect(ui->containsBtn, &QPushButton::clicked, [&]{ on_containsBtn_clicked(); });
+ QObject::connect(ui->categoriesBtn, &QPushButton::clicked, [&]{ on_categoriesBtn_clicked(); });
+ QObject::connect(ui->resetColorsBtn, &QPushButton::clicked, [&]{ on_resetColorsBtn_clicked(); });
+ QObject::connect(ui->resetDialogsButton, &QPushButton::clicked, [&]{ on_resetDialogsButton_clicked(); });
+}
+
+void GeneralTab::update()
+{
+ QString oldLanguage = m_parent->language();
+ QString newLanguage = ui->languageBox->itemData(ui->languageBox->currentIndex()).toString();
+ if (newLanguage != oldLanguage) {
+ m_Settings.setValue("Settings/language", newLanguage);
+ emit m_parent->languageChanged(newLanguage);
+ }
+
+ QString oldStyle = m_Settings.value("Settings/style", "").toString();
+ QString newStyle = ui->styleBox->itemData(ui->styleBox->currentIndex()).toString();
+ if (oldStyle != newStyle) {
+ m_Settings.setValue("Settings/style", newStyle);
+ emit m_parent->styleChanged(newStyle);
+ }
+
+ m_Settings.setValue("Settings/overwritingLooseFilesColor", getOverwritingColor());
+ m_Settings.setValue("Settings/overwrittenLooseFilesColor", getOverwrittenColor());
+ m_Settings.setValue("Settings/overwritingArchiveFilesColor", getOverwritingArchiveColor());
+ m_Settings.setValue("Settings/overwrittenArchiveFilesColor", getOverwrittenArchiveColor());
+ m_Settings.setValue("Settings/containsPluginColor", getContainsColor());
+ m_Settings.setValue("Settings/containedColor", getContainedColor());
+ m_Settings.setValue("Settings/compact_downloads", ui->compactBox->isChecked());
+ m_Settings.setValue("Settings/meta_downloads", ui->showMetaBox->isChecked());
+ m_Settings.setValue("Settings/use_prereleases", ui->usePrereleaseBox->isChecked());
+ m_Settings.setValue("Settings/colorSeparatorScrollbars", ui->colorSeparatorsBox->isChecked());
+}
+
+void GeneralTab::addLanguages()
+{
+ std::vector<std::pair<QString, QString>> languages;
+
+ QDirIterator langIter(QCoreApplication::applicationDirPath() + "/translations", QDir::Files);
+ QString pattern = QString::fromStdWString(AppConfig::translationPrefix()) + "_([a-z]{2,3}(_[A-Z]{2,2})?).qm";
+ QRegExp exp(pattern);
+ while (langIter.hasNext()) {
+ langIter.next();
+ QString file = langIter.fileName();
+ if (exp.exactMatch(file)) {
+ QString languageCode = exp.cap(1);
+ QLocale locale(languageCode);
+ QString languageString = QString("%1 (%2)").arg(locale.nativeLanguageName()).arg(locale.nativeCountryName()); //QLocale::languageToString(locale.language());
+ if (locale.language() == QLocale::Chinese) {
+ if (languageCode == "zh_TW") {
+ languageString = "Chinese (traditional)";
+ } else {
+ languageString = "Chinese (simplified)";
+ }
+ }
+ languages.push_back(std::make_pair(QString("%1").arg(languageString), exp.cap(1)));
+ //languageBox->addItem(QString("%1").arg(languageString), exp.cap(1));
+ }
+ }
+ if (!ui->languageBox->findText("English")) {
+ languages.push_back(std::make_pair(QString("English"), QString("en_US")));
+ //languageBox->addItem("English", "en_US");
+ }
+ std::sort(languages.begin(), languages.end());
+ for (const auto &lang : languages) {
+ ui->languageBox->addItem(lang.first, lang.second);
+ }
+}
+
+void GeneralTab::addStyles()
+{
+ ui->styleBox->addItem("None", "");
+ ui->styleBox->addItem("Fusion", "Fusion");
+
+ QDirIterator langIter(QCoreApplication::applicationDirPath() + "/" + QString::fromStdWString(AppConfig::stylesheetsPath()), QStringList("*.qss"), QDir::Files);
+ while (langIter.hasNext()) {
+ langIter.next();
+ QString style = langIter.fileName();
+ ui->styleBox->addItem(style, style);
+ }
+}
+
+void GeneralTab::resetDialogs()
+{
+ QuestionBoxMemory::resetDialogs();
+}
+
+void GeneralTab::setButtonColor(QPushButton *button, const QColor &color)
+{
+ button->setStyleSheet(
+ QString("QPushButton {"
+ "background-color: rgba(%1, %2, %3, %4);"
+ "color: %5;"
+ "border: 1px solid;"
+ "padding: 3px;"
+ "}")
+ .arg(color.red())
+ .arg(color.green())
+ .arg(color.blue())
+ .arg(color.alpha())
+ .arg(Settings::getIdealTextColor(color).name())
+ );
+};
+
+void GeneralTab::on_containsBtn_clicked()
+{
+ QColor result = QColorDialog::getColor(m_ContainsColor, parentWidget(), "Color Picker: Mod contains selected plugin", QColorDialog::ShowAlphaChannel);
+ if (result.isValid()) {
+ m_ContainsColor = result;
+ setButtonColor(ui->containsBtn, result);
+ }
+}
+
+void GeneralTab::on_containedBtn_clicked()
+{
+ QColor result = QColorDialog::getColor(m_ContainedColor, parentWidget(), "ColorPicker: Plugin is Contained in selected Mod", QColorDialog::ShowAlphaChannel);
+ if (result.isValid()) {
+ m_ContainedColor = result;
+ setButtonColor(ui->containedBtn, result);
+ }
+}
+
+void GeneralTab::on_overwrittenBtn_clicked()
+{
+ QColor result = QColorDialog::getColor(m_OverwrittenColor, parentWidget(), "ColorPicker: Is overwritten (loose files)", QColorDialog::ShowAlphaChannel);
+ if (result.isValid()) {
+ m_OverwrittenColor = result;
+ setButtonColor(ui->overwrittenBtn, result);
+ }
+}
+
+void GeneralTab::on_overwritingBtn_clicked()
+{
+ QColor result = QColorDialog::getColor(m_OverwritingColor, parentWidget(), "ColorPicker: Is overwriting (loose files)", QColorDialog::ShowAlphaChannel);
+ if (result.isValid()) {
+ m_OverwritingColor = result;
+ setButtonColor(ui->overwritingBtn, result);
+ }
+}
+
+void GeneralTab::on_overwrittenArchiveBtn_clicked()
+{
+ QColor result = QColorDialog::getColor(m_OverwrittenArchiveColor, parentWidget(), "ColorPicker: Is overwritten (archive files)", QColorDialog::ShowAlphaChannel);
+ if (result.isValid()) {
+ m_OverwrittenArchiveColor = result;
+ setButtonColor(ui->overwrittenArchiveBtn, result);
+ }
+}
+
+void GeneralTab::on_overwritingArchiveBtn_clicked()
+{
+ QColor result = QColorDialog::getColor(m_OverwritingArchiveColor, parentWidget(), "ColorPicker: Is overwriting (archive files)", QColorDialog::ShowAlphaChannel);
+ if (result.isValid()) {
+ m_OverwritingArchiveColor = result;
+ setButtonColor(ui->overwritingArchiveBtn, result);
+ }
+}
+
+void GeneralTab::on_resetColorsBtn_clicked()
+{
+ m_OverwritingColor = QColor(255, 0, 0, 64);
+ m_OverwrittenColor = QColor(0, 255, 0, 64);
+ m_OverwritingArchiveColor = QColor(255, 0, 255, 64);
+ m_OverwrittenArchiveColor = QColor(0, 255, 255, 64);
+ m_ContainsColor = QColor(0, 0, 255, 64);
+ m_ContainedColor = QColor(0, 0, 255, 64);
+
+ setButtonColor(ui->overwritingBtn, m_OverwritingColor);
+ setButtonColor(ui->overwrittenBtn, m_OverwrittenColor);
+ setButtonColor(ui->overwritingArchiveBtn, m_OverwritingArchiveColor);
+ setButtonColor(ui->overwrittenArchiveBtn, m_OverwrittenArchiveColor);
+ setButtonColor(ui->containsBtn, m_ContainsColor);
+ setButtonColor(ui->containedBtn, m_ContainedColor);
+}
+
+void GeneralTab::on_resetDialogsButton_clicked()
+{
+ if (QMessageBox::question(parentWidget(), QObject::tr("Confirm?"),
+ QObject::tr("This will make all dialogs show up again where you checked the \"Remember selection\"-box. Continue?"),
+ QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
+ resetDialogs();
+ }
+}
+
+void GeneralTab::on_categoriesBtn_clicked()
+{
+ CategoriesDialog dialog(parentWidget());
+ if (dialog.exec() == QDialog::Accepted) {
+ dialog.commitChanges();
+ }
+}
diff --git a/src/settingsdialoggeneral.h b/src/settingsdialoggeneral.h
new file mode 100644
index 00000000..1f1b4637
--- /dev/null
+++ b/src/settingsdialoggeneral.h
@@ -0,0 +1,53 @@
+#ifndef SETTINGSDIALOGGENERAL_H
+#define SETTINGSDIALOGGENERAL_H
+
+#include "settingsdialog.h"
+#include "settings.h"
+
+class GeneralTab : public SettingsTab
+{
+public:
+ GeneralTab(Settings *m_parent, SettingsDialog &m_dialog);
+
+ void update();
+
+private:
+ QColor m_OverwritingColor;
+ QColor m_OverwrittenColor;
+ QColor m_OverwritingArchiveColor;
+ QColor m_OverwrittenArchiveColor;
+ QColor m_ContainsColor;
+ QColor m_ContainedColor;
+
+ void addLanguages();
+ void addStyles();
+ void resetDialogs();
+ void setButtonColor(QPushButton *button, const QColor &color);
+
+ 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; }
+
+ 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 on_overwritingArchiveBtn_clicked();
+ void on_overwritingBtn_clicked();
+ void on_overwrittenArchiveBtn_clicked();
+ void on_overwrittenBtn_clicked();
+ void on_containedBtn_clicked();
+ void on_containsBtn_clicked();
+
+ void on_categoriesBtn_clicked();
+ void on_resetColorsBtn_clicked();
+ void on_resetDialogsButton_clicked();
+};
+
+#endif // SETTINGSDIALOGGENERAL_H