diff options
author | Petr Mrázek <peterix@gmail.com> | 2015-09-04 02:10:29 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2015-09-04 02:10:29 +0200 |
commit | cd108fd02975eac3a3fed2fde26c58de5cbdaf1c (patch) | |
tree | c19f22573086901238b7feacd9b265d249195700 /logic/settings/OverrideSetting.cpp | |
parent | 151a0ca11ec658525e151b7130543a364c41a3e8 (diff) | |
download | MultiMC-cd108fd02975eac3a3fed2fde26c58de5cbdaf1c.tar MultiMC-cd108fd02975eac3a3fed2fde26c58de5cbdaf1c.tar.gz MultiMC-cd108fd02975eac3a3fed2fde26c58de5cbdaf1c.tar.lz MultiMC-cd108fd02975eac3a3fed2fde26c58de5cbdaf1c.tar.xz MultiMC-cd108fd02975eac3a3fed2fde26c58de5cbdaf1c.zip |
GH-1223 fix override settings
They now work more like passthrough settings, except not passing through set and reset
Diffstat (limited to 'logic/settings/OverrideSetting.cpp')
-rw-r--r-- | logic/settings/OverrideSetting.cpp | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/logic/settings/OverrideSetting.cpp b/logic/settings/OverrideSetting.cpp index e8a9bfff..25162dff 100644 --- a/logic/settings/OverrideSetting.cpp +++ b/logic/settings/OverrideSetting.cpp @@ -15,16 +15,40 @@ #include "OverrideSetting.h" -OverrideSetting::OverrideSetting(std::shared_ptr<Setting> other) +OverrideSetting::OverrideSetting(std::shared_ptr<Setting> other, std::shared_ptr<Setting> gate) : Setting(other->configKeys(), QVariant()) { + Q_ASSERT(other); + Q_ASSERT(gate); m_other = other; + m_gate = gate; +} + +bool OverrideSetting::isOverriding() const +{ + return m_gate->get().toBool(); } QVariant OverrideSetting::defValue() const { - if (m_other) - return m_other->get(); - else - return QVariant(); + return m_other->get(); +} + +QVariant OverrideSetting::get() const +{ + if(isOverriding()) + { + return Setting::get(); + } + return m_other->get(); +} + +void OverrideSetting::reset() +{ + Setting::reset(); +} + +void OverrideSetting::set(QVariant value) +{ + Setting::set(value); } |