#include "AutoStart.h" #include "OpenRGBSettingsPage.h" #include "ui_OpenRGBSettingsPage.h" #include "LogManager.h" #include "ResourceManager.h" #include #include using namespace Ui; OpenRGBSettingsPage::OpenRGBSettingsPage(QWidget *parent) : QWidget(parent), ui(new Ui::OpenRGBSettingsPageUi) { ui->setupUi(this); /*---------------------------------------------------------*\ | App translation | | To add a new language: | | Add an entry to TRANSLATIONS in OpenRGB.pro | | Then run lupdate OpenRGB.pro to generate the new file | | | | Edit this file with | | linguist qt/i18n/OpenRGB_en.ts qt/i18n/OpenRGB_XX.ts | | or manually with any text editor | \*---------------------------------------------------------*/ /*---------------------------------------------------------*\ | Load available languages | | Tehcnically the QString is unused but declared | | here to show up in the translation file. | \*---------------------------------------------------------*/ QTranslator translator; QMap map; QString language = tr("English - US"); QDirIterator file(":/i18n/", QDirIterator::Subdirectories); while(file.hasNext()) { translator.load(file.next()); map.insert(translator.translate("Ui::OpenRGBSettingsPage", "English - US"), file.filePath()); } ui->ComboBoxLanguage->blockSignals(true); ui->ComboBoxLanguage->addItem(tr("System Default"), "default"); QMapIterator i(map); while(i.hasNext()) { i.next(); ui->ComboBoxLanguage->addItem(i.key(), i.value()); } ui->ComboBoxLanguage->blockSignals(false); /*---------------------------------------------------------*\ | Load theme settings | \*---------------------------------------------------------*/ 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; /*---------------------------------------------------------*\ | Load user interface settings | \*---------------------------------------------------------*/ json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface"); if(ui_settings.contains("language")) { /*-----------------------------------------------------*\ | Get the language preference from settings | | and check the language combobox for a match | \*-----------------------------------------------------*/ std::string language = ui_settings["language"].get(); int language_index = ui->ComboBoxLanguage->findText(QString::fromStdString(language)); if(language_index > -1) { ui->ComboBoxLanguage->setCurrentIndex(language_index); } } else { ui_settings["language"] = "default"; ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface",ui_settings); SaveSettings(); ui->ComboBoxLanguage->setCurrentIndex(0); } if(ui_settings.contains("greyscale_tray_icon")) { ui->CheckboxTrayIconGreyscale->setChecked(ui_settings["greyscale_tray_icon"]); } 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"]); } } if(ui_settings.contains("RunZoneChecks")) { ui->CheckboxRunZoneChecks->setChecked(ui_settings["RunZoneChecks"]); } else { // default value ui->CheckboxRunZoneChecks->setChecked(true); } /*---------------------------------------------------------*\ | Load LogManager settings | \*---------------------------------------------------------*/ json log_manager_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("LogManager"); /*---------------------------------------------------------*\ | Checkboxes | \*---------------------------------------------------------*/ if(log_manager_settings.contains("log_console")) { ui->CheckboxLogConsole->setChecked(log_manager_settings["log_console"]); } /*---------------------------------------------------------*\ | Load drivers settings (Windows only) | \*---------------------------------------------------------*/ #ifdef _WIN32 json drivers_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Drivers"); if(drivers_settings.contains("amd_smbus_reduce_cpu")) { ui->CheckboxAMDSMBusReduceCPU->setChecked(drivers_settings["amd_smbus_reduce_cpu"]); } if(drivers_settings.contains("shared_smbus_access")) { ui->CheckboxSharedSMBusAccess->setChecked(drivers_settings["shared_smbus_access"]); } else { ui->CheckboxSharedSMBusAccess->setChecked(true); } #else ui->DriversSettingsLabel->hide(); ui->CheckboxAMDSMBusReduceCPU->hide(); ui->CheckboxSharedSMBusAccess->hide(); #endif UpdateProfiles(); /*---------------------------------------------------------*\ | Make sure autostart settings exist | \*---------------------------------------------------------*/ CreateAutoStartSettings(); /*---------------------------------------------------------*\ | Initialise UI to current settings or defaults | \*---------------------------------------------------------*/ json autostart_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("AutoStart"); RemediateAutoStartProfile(autostart_settings); /*---------------------------------------------------------*\ | Text boxes | \*---------------------------------------------------------*/ ui->TextServerHost->setText(QString::fromStdString(autostart_settings["host"])); ui->TextServerHost->setEnabled(autostart_settings["setserverhost"]); ui->TextServerPort->setText(QString::fromStdString(autostart_settings["port"])); ui->TextServerPort->setEnabled(autostart_settings["setserverport"]); ui->TextClientHost->setText(QString::fromStdString(autostart_settings["client"])); ui->TextClientHost->setEnabled(autostart_settings["setclient"]); ui->TextCustomArgs->setText(QString::fromStdString(autostart_settings["custom"])); ui->TextCustomArgs->setEnabled(autostart_settings["setcustom"]); /*---------------------------------------------------------*\ | Checkboxes | \*---------------------------------------------------------*/ ui->CheckboxAutoStart->setChecked(autostart_settings["enabled"]); SetAutoStartVisibility(autostart_settings["enabled"]); ui->CheckboxAutoStartMinimized->setChecked(autostart_settings["setminimized"]); ui->CheckboxAutoStartClient->setChecked(autostart_settings["setclient"]); ui->CheckboxAutoStartServer->setChecked(autostart_settings["setserver"]); ui->CheckboxAutoStartSetServerHost->setChecked(autostart_settings["setserverhost"]); ui->CheckboxAutoStartSetServerPort->setChecked(autostart_settings["setserverport"]); ui->CheckboxAutoStartCustom->setChecked(autostart_settings["setcustom"]); ui->AutoStartStatusLabel->hide(); autostart_initialized = true; } OpenRGBSettingsPage::~OpenRGBSettingsPage() { delete ui; } void OpenRGBSettingsPage::changeEvent(QEvent *event) { if(event->type() == QEvent::LanguageChange) { ui->retranslateUi(this); } } void OpenRGBSettingsPage::UpdateProfiles() { /*---------------------------------------------------------*\ | Load AutoStart settings | \*---------------------------------------------------------*/ ProfileManager* profile_manager = ResourceManager::get()->GetProfileManager(); /*---------------------------------------------------------*\ | Load profiles into combo box | \*---------------------------------------------------------*/ if(profile_manager != NULL) { ui->ComboBoxAutoStartProfile->blockSignals(true); ui->ComboBoxExitProfile->blockSignals(true); ui->ComboBoxAutoStartProfile->clear(); ui->ComboBoxExitProfile->clear(); for(std::size_t profile_index = 0; profile_index < profile_manager->profile_list.size(); profile_index++) { QString new_profile = QString(profile_manager->profile_list[profile_index].c_str()); ui->ComboBoxAutoStartProfile->addItem(new_profile); ui->ComboBoxExitProfile->addItem(new_profile); } ui->ComboBoxAutoStartProfile->blockSignals(false); ui->ComboBoxExitProfile->blockSignals(false); } /*---------------------------------------------------------*\ | Load user interface settings | \*---------------------------------------------------------*/ json autostart_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("AutoStart"); if(autostart_settings.contains("profile")) { /*-----------------------------------------------------*\ | Set the profile name from settings and check the | | profile combobox for a match | \*-----------------------------------------------------*/ std::string profile_name = autostart_settings["profile"].get(); int profile_index = ui->ComboBoxAutoStartProfile->findText(QString::fromStdString(profile_name)); if(profile_index > -1) { ui->ComboBoxAutoStartProfile->setCurrentIndex(profile_index); } } /*---------------------------------------------------------*\ | Load user interface settings | \*---------------------------------------------------------*/ json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface"); if(ui_settings.contains("exit_profile")) { if(ui_settings["exit_profile"].contains("set_on_exit")) { bool is_set_on_exit = ui_settings["exit_profile"]["set_on_exit"]; ui->CheckboxSetOnExit->setChecked(is_set_on_exit); ui->ComboBoxExitProfile->setEnabled(is_set_on_exit); } if(ui_settings["exit_profile"].contains("profile_name")) { /*-----------------------------------------------------*\ | Set the profile name from settings and check the | | profile combobox for a match | \*-----------------------------------------------------*/ std::string profile_name = ui_settings["exit_profile"]["profile_name"].get(); int profile_index = ui->ComboBoxExitProfile->findText(QString::fromStdString(profile_name)); if(profile_index > -1) { ui->ComboBoxExitProfile->setCurrentIndex(profile_index); } } } } void OpenRGBSettingsPage::on_ComboBoxLanguage_currentTextChanged(const QString language) { bool loaded = false; QString file = ui->ComboBoxLanguage->currentData().toString(); QApplication* app = static_cast(QApplication::instance()); app->removeTranslator(&translator); if(file == "default") { QLocale locale = QLocale(QLocale::system()); QLocale::setDefault(locale); loaded = translator.load(":/i18n/" + QString("OpenRGB_%1.qm").arg(locale.name())); } else { loaded = translator.load(file); } if(loaded) { app->installTranslator(&translator); LOG_DEBUG("[Settings] Changed Language to %s from the %s file\n", language.toStdString().c_str(), file.toStdString().c_str()); json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface"); std::string saved = ui_settings["language"].get(); if(saved != language.toStdString()) { ui_settings["language"] = language.toStdString(); ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface",ui_settings); SaveSettings(); } } } 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_CheckboxTrayIconGreyscale_clicked() { json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface"); bool tray_icon = ui->CheckboxTrayIconGreyscale->isChecked(); ui_settings["greyscale_tray_icon"] = tray_icon; ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface", ui_settings); SaveSettings(); emit TrayIconChanged(tray_icon); } 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 Ui::OpenRGBSettingsPage::on_CheckboxRunZoneChecks_clicked() { json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface"); ui_settings["RunZoneChecks"] = ui->CheckboxRunZoneChecks->isChecked(); ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface", ui_settings); SaveSettings(); } void Ui::OpenRGBSettingsPage::on_CheckboxSetOnExit_clicked(bool checked) { json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface"); ui_settings["exit_profile"]["set_on_exit"] = checked; ui_settings["exit_profile"]["profile_name"] = ui->ComboBoxExitProfile->currentText().toStdString(); ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface", ui_settings); SaveSettings(); ui->ComboBoxExitProfile->setEnabled(checked); } void Ui::OpenRGBSettingsPage::on_ComboBoxExitProfile_currentTextChanged(const QString exit_profile_name) { json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface"); ui_settings["exit_profile"]["profile_name"] = exit_profile_name.toStdString(); ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface", ui_settings); SaveSettings(); } void Ui::OpenRGBSettingsPage::on_CheckboxAutoStart_clicked() { if(autostart_initialized) { json autostart_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("AutoStart"); autostart_settings["enabled"] = ui->CheckboxAutoStart->isChecked(); if(autostart_settings["enabled"]) { RemediateAutoStartProfile(autostart_settings); } ResourceManager::get()->GetSettingsManager()->SetSettings("AutoStart", autostart_settings); SaveSettings(); SetAutoStartVisibility(autostart_settings["enabled"]); ConfigureAutoStart(); } } void Ui::OpenRGBSettingsPage::on_CheckboxAutoStartMinimized_clicked() { SaveAutoStartSetting("setminimized", ui->CheckboxAutoStartMinimized->isChecked()); } void Ui::OpenRGBSettingsPage::on_CheckboxAutoStartServer_clicked() { SaveAutoStartSetting("setserver", ui->CheckboxAutoStartServer->isChecked()); } void Ui::OpenRGBSettingsPage::on_CheckboxAutoStartSetServerHost_clicked() { SaveAutoStartSetting("setserverhost", ui->CheckboxAutoStartSetServerHost->isChecked()); ui->TextServerHost->setEnabled(ui->CheckboxAutoStartSetServerHost->isChecked()); } void Ui::OpenRGBSettingsPage::on_CheckboxAutoStartSetServerPort_clicked() { SaveAutoStartSetting("setserverport", ui->CheckboxAutoStartSetServerPort->isChecked()); ui->TextServerPort->setEnabled(ui->CheckboxAutoStartSetServerPort->isChecked()); } void Ui::OpenRGBSettingsPage::on_CheckboxAutoStartClient_clicked() { SaveAutoStartSetting("setclient", ui->CheckboxAutoStartClient->isChecked()); ui->TextClientHost->setEnabled(ui->CheckboxAutoStartClient->isChecked()); } void Ui::OpenRGBSettingsPage::on_CheckboxAutoStartProfile_clicked() { SaveAutoStartSetting("setprofile", ui->CheckboxAutoStartProfile->isChecked()); ui->ComboBoxAutoStartProfile->setEnabled(ui->CheckboxAutoStartProfile->isChecked()); } void Ui::OpenRGBSettingsPage::on_CheckboxAutoStartCustom_clicked() { SaveAutoStartSetting("setcustom", ui->CheckboxAutoStartCustom->isChecked()); ui->TextCustomArgs->setEnabled(ui->CheckboxAutoStartCustom->isChecked()); } void Ui::OpenRGBSettingsPage::on_TextServerHost_textChanged(QString host) { SaveAutoStartSetting("host", host); } void Ui::OpenRGBSettingsPage::on_TextServerPort_textChanged(QString port) { SaveAutoStartSetting("port", port); } void Ui::OpenRGBSettingsPage::on_TextClientHost_textChanged(QString client) { SaveAutoStartSetting("client", client); } void Ui::OpenRGBSettingsPage::on_TextCustomArgs_textChanged(QString custom) { SaveAutoStartSetting("custom", custom); } void Ui::OpenRGBSettingsPage::on_ComboBoxAutoStartProfile_currentTextChanged(const QString profile) { SaveAutoStartSetting("profile", profile); } void OpenRGBSettingsPage::SaveAutoStartSetting(std::string name, QString value) { if(autostart_initialized) { json autostart_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("AutoStart"); autostart_settings[name] = value.toStdString(); ResourceManager::get()->GetSettingsManager()->SetSettings("AutoStart", autostart_settings); SaveSettings(); ConfigureAutoStart(); } } void OpenRGBSettingsPage::SaveAutoStartSetting(std::string name, bool value) { if(autostart_initialized) { json autostart_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("AutoStart"); autostart_settings[name] = value; ResourceManager::get()->GetSettingsManager()->SetSettings("AutoStart", autostart_settings); SaveSettings(); ConfigureAutoStart(); } } void OpenRGBSettingsPage::SetAutoStartVisibility(bool visible) { if (!visible) { ui->ComboBoxAutoStartProfile->hide(); ui->CheckboxAutoStartClient->hide(); ui->CheckboxAutoStartCustom->hide(); ui->CheckboxAutoStartMinimized->hide(); ui->CheckboxAutoStartProfile->hide(); ui->CheckboxAutoStartServer->hide(); ui->CheckboxAutoStartSetServerHost->hide(); ui->CheckboxAutoStartSetServerPort->hide(); ui->TextCustomArgs->hide(); ui->TextClientHost->hide(); ui->TextServerHost->hide(); ui->TextServerPort->hide(); ui->AutoStartStatusLabel->hide(); } else { ui->ComboBoxAutoStartProfile->show(); ui->CheckboxAutoStartClient->show(); ui->CheckboxAutoStartCustom->show(); ui->CheckboxAutoStartMinimized->show(); ui->CheckboxAutoStartProfile->show(); ui->CheckboxAutoStartServer->show(); ui->CheckboxAutoStartSetServerHost->show(); ui->CheckboxAutoStartSetServerPort->show(); ui->TextCustomArgs->show(); ui->TextClientHost->show(); ui->TextServerHost->show(); ui->TextServerPort->show(); ui->AutoStartStatusLabel->show(); } } void OpenRGBSettingsPage::ConfigureAutoStart() { std::map> autostart_map = { {"setminimized", {"--startminimized","",false}}, {"setserver", {"--server","",false}}, {"setserverhost", {"--server-host","host",false}}, {"setserverport", {"--server-port","port",false}}, {"setclient", {"--client","client",false}}, {"setprofile", {"--profile","profile",true}}, {"setcustom", {"","custom",false}}, }; json autostart_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("AutoStart"); AutoStart auto_start("OpenRGB"); if (!autostart_settings["enabled"]) { if (!auto_start.DisableAutoStart()) { ui->AutoStartStatusLabel->setText("A problem occurred disabling Start At Login."); ui->AutoStartStatusLabel->show(); SetAutoStartVisibility(true); } else { ui->AutoStartStatusLabel->hide(); } } else { std::string desc = "OpenRGB "; desc += VERSION_STRING; desc += ", for controlling RGB lighting."; std::string arguments = ""; for(std::pair>& x: autostart_map) { std::string argumentsetting = x.first; std::string argument = std::get<0>(x.second); std::string argumentvaluename = std::get<1>(x.second); bool argumentquoted = std::get<2>(x.second); if (autostart_settings[x.first]) { if (argument != "") { if (arguments != "") { arguments += " "; } arguments += argument; } if (argumentvaluename != "") { std::string argumentvalue = autostart_settings[argumentvaluename]; if (argumentvalue != "") { if (arguments != "") { arguments += " "; } if (argumentquoted) { arguments += "\"" + argumentvalue + "\""; } else { arguments += argumentvalue; } } } } } AutoStartInfo auto_start_info; auto_start_info.args = arguments; auto_start_info.category = "Utility;"; auto_start_info.desc = desc; auto_start_info.icon = "OpenRGB"; auto_start_info.path = auto_start.GetExePath(); if (!auto_start.EnableAutoStart(auto_start_info)) { ui->AutoStartStatusLabel->setText(tr("A problem occurred enabling Start At Login.")); ui->AutoStartStatusLabel->show(); SetAutoStartVisibility(true); } else { ui->AutoStartStatusLabel->hide(); } } } void OpenRGBSettingsPage::CreateAutoStartSettings() { std::map autostart_default_map_string = { {"custom", ""}, {"host", "0.0.0.0"}, {"port", "6742"}, {"client","localhost:6742"}, {"profile",ui->ComboBoxAutoStartProfile->count() > 0 ? ui->ComboBoxAutoStartProfile->itemText(0).toStdString(): ""} }; std::map autostart_default_map_bool = { {"enabled", false}, {"setminimized", false}, {"setclient", false}, {"setserver", false}, {"setserverhost", false}, {"setserverport", false}, {"setcustom", false}, {"setprofile", false}, }; json autostart_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("AutoStart"); for(std::pair& x: autostart_default_map_bool) { if(!autostart_settings.contains(x.first)) { autostart_settings[x.first] = x.second; } } for(std::pair& x: autostart_default_map_string) { if(!autostart_settings.contains(x.first)) { autostart_settings[x.first] = x.second; } } ResourceManager::get()->GetSettingsManager()->SetSettings("AutoStart", autostart_settings); } void OpenRGBSettingsPage::RemediateAutoStartProfile(json &autostart_settings) { /*---------------------------------------------------------*\ | If there are no profiles then we disable the UI for | | profiles and if AutoStart is enabled then we force | | disable setprofile | \*---------------------------------------------------------*/ if(ui->ComboBoxAutoStartProfile->count() == 0) { ui->CheckboxAutoStartProfile->setEnabled(false); ui->ComboBoxAutoStartProfile->setEnabled(false); autostart_settings["profile"] = ""; if(autostart_settings["enabled"]) { autostart_settings["setprofile"] = false; ResourceManager::get()->GetSettingsManager()->SetSettings("AutoStart", autostart_settings); ConfigureAutoStart(); SaveSettings(); } } /*---------------------------------------------------------*\ | Else If the profile we want doesn't exist then we force | | it to a profile which exists and if AutoStart is enabled | | then we force disable setprofile | \*---------------------------------------------------------*/ else if(autostart_settings["profile"] == "" || (autostart_settings["profile"] != "" && ui->ComboBoxAutoStartProfile->findText(QString::fromStdString(autostart_settings["profile"])) == -1)) { autostart_settings["profile"] = ui->ComboBoxAutoStartProfile->itemText(0).toStdString(); if(autostart_settings["enabled"]) { autostart_settings["setprofile"] = false; ResourceManager::get()->GetSettingsManager()->SetSettings("AutoStart", autostart_settings); ConfigureAutoStart(); SaveSettings(); } } ui->ComboBoxAutoStartProfile->setCurrentText(QString::fromStdString(autostart_settings["profile"])); ui->ComboBoxAutoStartProfile->setEnabled(autostart_settings["setprofile"]); ui->CheckboxAutoStartProfile->setChecked(autostart_settings["setprofile"]); } void OpenRGBSettingsPage::SaveSettings() { ResourceManager::get()->GetSettingsManager()->SaveSettings(); } void Ui::OpenRGBSettingsPage::on_OpenSettingsFolderButton_clicked() { std::string config_dir = ResourceManager::get()->GetConfigurationDirectory(); QUrl url = QUrl::fromLocalFile(QString::fromStdString(config_dir)); QDesktopServices::openUrl(url); } void Ui::OpenRGBSettingsPage::on_CheckboxLogConsole_clicked() { json log_manager_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("LogManager"); log_manager_settings["log_console"] = ui->CheckboxLogConsole->isChecked(); ResourceManager::get()->GetSettingsManager()->SetSettings("LogManager", log_manager_settings); SaveSettings(); } void Ui::OpenRGBSettingsPage::on_CheckboxAMDSMBusReduceCPU_clicked() { json drivers_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Drivers"); drivers_settings["amd_smbus_reduce_cpu"] = ui->CheckboxAMDSMBusReduceCPU->isChecked(); ResourceManager::get()->GetSettingsManager()->SetSettings("Drivers", drivers_settings); SaveSettings(); } void Ui::OpenRGBSettingsPage::on_CheckboxSharedSMBusAccess_clicked() { json drivers_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Drivers"); drivers_settings["shared_smbus_access"] = ui->CheckboxSharedSMBusAccess->isChecked(); ResourceManager::get()->GetSettingsManager()->SetSettings("Drivers", drivers_settings); SaveSettings(); }