OpenRGB/qt/OpenRGBSettingsPage.cpp

104 lines
3.4 KiB
C++

#include "OpenRGBSettingsPage.h"
#include "ui_OpenRGBSettingsPage.h"
#include "ResourceManager.h"
using namespace Ui;
OpenRGBSettingsPage::OpenRGBSettingsPage(QWidget *parent) :
QWidget(parent),
ui(new Ui::OpenRGBSettingsPageUi)
{
ui->setupUi(this);
/*---------------------------------------------------------*\
| Load theme settings (Windows only) |
\*---------------------------------------------------------*/
#ifdef _WIN32
ui->ComboBoxTheme->addItems({"auto", "light", "dark"});
json theme_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Theme");
if(theme_settings.contains("theme"))
{
std::string theme = theme_settings["theme"];
ui->ComboBoxTheme->setCurrentText(QString::fromStdString(theme));
}
else
{
ui->ComboBoxTheme->setCurrentText(QString::fromStdString(("light")));
}
theme_initialized = true;
#else
ui->ComboBoxTheme->hide();
ui->ThemeLabel->hide();
#endif
/*---------------------------------------------------------*\
| Load user interface settings (Windows only) |
\*---------------------------------------------------------*/
json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface");
if(ui_settings.contains("minimize_on_close"))
{
ui->CheckboxMinimizeOnClose->setChecked(ui_settings["minimize_on_close"]);
}
if(ui_settings.contains("geometry"))
{
if(ui_settings["geometry"].contains("load_geometry"))
{
ui->CheckboxLoadGeometry->setChecked(ui_settings["geometry"]["load_geometry"]);
}
if(ui_settings["geometry"].contains("save_on_exit"))
{
ui->CheckboxSaveGeometry->setChecked(ui_settings["geometry"]["save_on_exit"]);
}
}
}
OpenRGBSettingsPage::~OpenRGBSettingsPage()
{
delete ui;
}
void OpenRGBSettingsPage::on_ComboBoxTheme_currentTextChanged(const QString theme)
{
if(theme_initialized)
{
json theme_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Theme");
theme_settings["theme"] = theme.toStdString();
ResourceManager::get()->GetSettingsManager()->SetSettings("Theme", theme_settings);
SaveSettings();
}
}
void OpenRGBSettingsPage::on_CheckboxMinimizeOnClose_clicked()
{
json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface");
ui_settings["minimize_on_close"] = ui->CheckboxMinimizeOnClose->isChecked();
ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface", ui_settings);
SaveSettings();
}
void Ui::OpenRGBSettingsPage::on_CheckboxLoadGeometry_clicked()
{
json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface");
ui_settings["geometry"]["load_geometry"] = ui->CheckboxLoadGeometry->isChecked();
ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface", ui_settings);
SaveSettings();
}
void Ui::OpenRGBSettingsPage::on_CheckboxSaveGeometry_clicked()
{
json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface");
ui_settings["geometry"]["save_on_exit"] = ui->CheckboxSaveGeometry->isChecked();
ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface", ui_settings);
SaveSettings();
}
void OpenRGBSettingsPage::SaveSettings()
{
ResourceManager::get()->GetSettingsManager()->SaveSettings();
}