mirror of
https://github.com/Lurkki14/tuxclocker.git
synced 2025-02-25 18:55:24 -06:00
apply desired assignable settings when changing profile
This commit is contained in:
parent
560453bacf
commit
9005399b74
@ -8,6 +8,7 @@
|
||||
#include <QToolButton>
|
||||
#include <QVariant>
|
||||
#include <Settings.hpp>
|
||||
#include <Utils.hpp>
|
||||
|
||||
using namespace mpark::patterns;
|
||||
using namespace TuxClocker::Device;
|
||||
@ -59,8 +60,11 @@ DeviceBrowser::DeviceBrowser(DeviceModel &model, QWidget *parent)
|
||||
connect(m_settings, &Settings::cancelled,
|
||||
[=] { Globals::g_mainStack->setCurrentWidget(this); });
|
||||
|
||||
connect(m_settings, &Settings::settingsSaved,
|
||||
[=](auto) { Globals::g_mainStack->setCurrentWidget(this); });
|
||||
connect(m_settings, &Settings::settingsSaved, [=](auto data) {
|
||||
Globals::g_mainStack->setCurrentWidget(this);
|
||||
Utils::setModelAssignableSettings(
|
||||
*Globals::g_deviceModel, data.assignableSettings);
|
||||
});
|
||||
}
|
||||
Globals::g_mainStack->setCurrentWidget(m_settings);
|
||||
});
|
||||
|
@ -62,7 +62,6 @@ Settings::Settings(QWidget *parent) : QWidget(parent) {
|
||||
auto saveButton = new QPushButton{"Save", this};
|
||||
|
||||
connect(saveButton, &QPushButton::released, this, [=] {
|
||||
// TODO: read assignableSettings from disk
|
||||
auto settingsData = fromUIState();
|
||||
writeSettings(fromUIState());
|
||||
|
||||
@ -117,9 +116,15 @@ SettingsData Settings::fromUIState() {
|
||||
};
|
||||
Utils::traverseModel(cb, m_profileView->model());
|
||||
|
||||
// Read assignableSettings for wanted profile
|
||||
QVector<AssignableSetting> assSettings;
|
||||
if (currentProfile.has_value())
|
||||
assSettings = readAssignableSettings(currentProfile.value());
|
||||
|
||||
return SettingsData{
|
||||
.autoApplyProfile = m_autoLoad->isChecked(),
|
||||
.currentProfile = currentProfile,
|
||||
.assignableSettings = assSettings,
|
||||
.profiles = profiles,
|
||||
};
|
||||
}
|
||||
@ -138,6 +143,35 @@ void Settings::writeSettings(SettingsData data) {
|
||||
settings.setValue("currentProfile", data.currentProfile.value());
|
||||
}
|
||||
|
||||
SettingsData Settings::setAssignableSetting(SettingsData data, AssignableSetting setting) {
|
||||
// Check if there is exising setting for path
|
||||
for (auto &assSetting : data.assignableSettings) {
|
||||
if (assSetting.assignablePath == setting.assignablePath) {
|
||||
assSetting.value = setting.value;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
data.assignableSettings.append(setting);
|
||||
return data;
|
||||
}
|
||||
|
||||
QVector<AssignableSetting> Settings::readAssignableSettings(QString profile) {
|
||||
QVector<AssignableSetting> retval;
|
||||
QSettings s{"tuxclocker"};
|
||||
s.beginGroup(QString{"profiles/%1"}.arg(profile));
|
||||
|
||||
auto keys = s.allKeys();
|
||||
for (auto &key : keys) {
|
||||
AssignableSetting setting{
|
||||
.assignablePath = Utils::fromSettingsPath(key),
|
||||
.value = s.value(key),
|
||||
};
|
||||
retval.append(setting);
|
||||
}
|
||||
s.endGroup();
|
||||
return retval;
|
||||
}
|
||||
|
||||
SettingsData Settings::readSettings() {
|
||||
qRegisterMetaTypeStreamOperators<QVector<QString>>("QVector<QString>>");
|
||||
QSettings s{"tuxclocker"};
|
||||
@ -149,17 +183,7 @@ SettingsData Settings::readSettings() {
|
||||
auto profileStr = s.value("currentProfile").toString();
|
||||
profile = profileStr;
|
||||
// Read possible assignable settings
|
||||
s.beginGroup(QString{"profiles/%1"}.arg(profileStr));
|
||||
|
||||
auto keys = s.allKeys();
|
||||
for (auto &key : keys) {
|
||||
AssignableSetting setting{
|
||||
.assignablePath = Utils::fromSettingsPath(key),
|
||||
.value = s.value(key),
|
||||
};
|
||||
assignableSettings.append(setting);
|
||||
}
|
||||
s.endGroup();
|
||||
assignableSettings = readAssignableSettings(profileStr);
|
||||
} else
|
||||
profile = std::nullopt;
|
||||
|
||||
|
@ -26,10 +26,12 @@ public:
|
||||
explicit Settings(QWidget *parent = nullptr);
|
||||
|
||||
static SettingsData readSettings();
|
||||
static SettingsData setAssignableSetting(SettingsData, AssignableSetting);
|
||||
signals:
|
||||
void cancelled();
|
||||
void settingsSaved(SettingsData);
|
||||
private:
|
||||
static QVector<AssignableSetting> readAssignableSettings(QString profile);
|
||||
SettingsData fromUIState();
|
||||
void writeSettings(SettingsData);
|
||||
void setUIState(SettingsData);
|
||||
|
Loading…
Reference in New Issue
Block a user