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