forked from teamnwah/openmw-tes3coop
Merge remote-tracking branch 'thunderforge/feature/4054-launcher-advanced-settings-panel'
commit
2a5a574134
@ -0,0 +1,89 @@
|
|||||||
|
#include "advancedpage.hpp"
|
||||||
|
|
||||||
|
#include <components/files/configurationmanager.hpp>
|
||||||
|
|
||||||
|
Launcher::AdvancedPage::AdvancedPage(Files::ConfigurationManager &cfg, Settings::Manager &engineSettings, QWidget *parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
, mCfgMgr(cfg)
|
||||||
|
, mEngineSettings(engineSettings)
|
||||||
|
{
|
||||||
|
setObjectName ("AdvancedPage");
|
||||||
|
setupUi(this);
|
||||||
|
|
||||||
|
loadSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Launcher::AdvancedPage::loadSettings()
|
||||||
|
{
|
||||||
|
// Game Settings
|
||||||
|
loadSettingBool(canLootDuringDeathAnimationCheckBox, "can loot during death animation", "Game");
|
||||||
|
loadSettingBool(followersAttackOnSightCheckBox, "followers attack on sight", "Game");
|
||||||
|
loadSettingBool(preventMerchantEquippingCheckBox, "prevent merchant equipping", "Game");
|
||||||
|
loadSettingBool(showEffectDurationCheckBox, "show effect duration", "Game");
|
||||||
|
loadSettingBool(showMeleeInfoCheckBox, "show enchant chance", "Game");
|
||||||
|
loadSettingBool(showMeleeInfoCheckBox, "show melee info", "Game");
|
||||||
|
loadSettingBool(showProjectileDamageCheckBox, "show projectile damage", "Game");
|
||||||
|
|
||||||
|
// Expected values are (0, 1, 2, 3)
|
||||||
|
int showOwnedIndex = mEngineSettings.getInt("show owned", "Game");
|
||||||
|
// Match the index with the option. Will default to 0 if invalid.
|
||||||
|
if (showOwnedIndex >= 0 && showOwnedIndex <= 3)
|
||||||
|
showOwnedComboBox->setCurrentIndex(showOwnedIndex);
|
||||||
|
|
||||||
|
// Input Settings
|
||||||
|
loadSettingBool(allowThirdPersonZoomCheckBox, "allow third person zoom", "Input");
|
||||||
|
loadSettingBool(grabCursorCheckBox, "grab cursor", "Input");
|
||||||
|
loadSettingBool(toggleSneakCheckBox, "toggle sneak", "Input");
|
||||||
|
|
||||||
|
// Other Settings
|
||||||
|
loadSettingBool(timePlayedCheckbox, "timeplayed", "Saves");
|
||||||
|
|
||||||
|
QString screenshotFormatString = QString::fromStdString(mEngineSettings.getString("screenshot format", "General")).toUpper();
|
||||||
|
if (screenshotFormatComboBox->findText(screenshotFormatString) == -1)
|
||||||
|
screenshotFormatComboBox->addItem(screenshotFormatString);
|
||||||
|
screenshotFormatComboBox->setCurrentIndex(screenshotFormatComboBox->findText(screenshotFormatString));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Launcher::AdvancedPage::saveSettings()
|
||||||
|
{
|
||||||
|
// Ensure we only set the new settings if they changed. This is to avoid cluttering the
|
||||||
|
// user settings file (which by definition should only contain settings the user has touched)
|
||||||
|
|
||||||
|
// Game Settings
|
||||||
|
saveSettingBool(canLootDuringDeathAnimationCheckBox, "can loot during death animation", "Game");
|
||||||
|
saveSettingBool(followersAttackOnSightCheckBox, "followers attack on sight", "Game");
|
||||||
|
saveSettingBool(preventMerchantEquippingCheckBox, "prevent merchant equipping", "Game");
|
||||||
|
saveSettingBool(showEffectDurationCheckBox, "show effect duration", "Game");
|
||||||
|
saveSettingBool(showMeleeInfoCheckBox, "show enchant chance", "Game");
|
||||||
|
saveSettingBool(showMeleeInfoCheckBox, "show melee info", "Game");
|
||||||
|
saveSettingBool(showProjectileDamageCheckBox, "show projectile damage", "Game");
|
||||||
|
|
||||||
|
int showOwnedCurrentIndex = showOwnedComboBox->currentIndex();
|
||||||
|
if (showOwnedCurrentIndex != mEngineSettings.getInt("show owned", "Game"))
|
||||||
|
mEngineSettings.setInt("show owned", "Game", showOwnedCurrentIndex);
|
||||||
|
|
||||||
|
// Input Settings
|
||||||
|
saveSettingBool(allowThirdPersonZoomCheckBox, "allow third person zoom", "Input");
|
||||||
|
saveSettingBool(grabCursorCheckBox, "grab cursor", "Input");
|
||||||
|
saveSettingBool(toggleSneakCheckBox, "toggle sneak", "Input");
|
||||||
|
|
||||||
|
// Other Settings
|
||||||
|
saveSettingBool(timePlayedCheckbox, "timeplayed", "Saves");
|
||||||
|
|
||||||
|
std::string screenshotFormatString = screenshotFormatComboBox->currentText().toLower().toStdString();
|
||||||
|
if (screenshotFormatString != mEngineSettings.getString("screenshot format", "General"))
|
||||||
|
mEngineSettings.setString("screenshot format", "General", screenshotFormatString);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Launcher::AdvancedPage::loadSettingBool(QCheckBox *checkbox, const std::string &setting, const std::string &group) {
|
||||||
|
if (mEngineSettings.getBool(setting, group))
|
||||||
|
checkbox->setCheckState(Qt::Checked);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Launcher::AdvancedPage::saveSettingBool(QCheckBox *checkbox, const std::string &setting, const std::string &group) {
|
||||||
|
bool cValue = checkbox->checkState();
|
||||||
|
if (cValue != mEngineSettings.getBool(setting, group))
|
||||||
|
mEngineSettings.setBool(setting, group, cValue);
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
#ifndef ADVANCEDPAGE_H
|
||||||
|
#define ADVANCEDPAGE_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
#include "ui_advancedpage.h"
|
||||||
|
|
||||||
|
#include <components/settings/settings.hpp>
|
||||||
|
|
||||||
|
namespace Files { struct ConfigurationManager; }
|
||||||
|
|
||||||
|
namespace Launcher
|
||||||
|
{
|
||||||
|
class AdvancedPage : public QWidget, private Ui::AdvancedPage
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
AdvancedPage(Files::ConfigurationManager &cfg, Settings::Manager &engineSettings, QWidget *parent = 0);
|
||||||
|
|
||||||
|
bool loadSettings();
|
||||||
|
void saveSettings();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Files::ConfigurationManager &mCfgMgr;
|
||||||
|
Settings::Manager &mEngineSettings;
|
||||||
|
|
||||||
|
void loadSettingBool(QCheckBox *checkbox, const std::string& setting, const std::string& group);
|
||||||
|
void saveSettingBool(QCheckBox *checkbox, const std::string& setting, const std::string& group);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#endif
|
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
Loading…
Reference in New Issue