1
2 #include "boolsetting.hpp"
3
4 #include <QCheckBox>
5 #include <QMutexLocker>
6
7 #include <components/settings/settings.hpp>
8
9 #include "category.hpp"
10 #include "state.hpp"
11
BoolSetting(Category * parent,Settings::Manager * values,QMutex * mutex,const std::string & key,const std::string & label,bool default_)12 CSMPrefs::BoolSetting::BoolSetting (Category *parent, Settings::Manager *values,
13 QMutex *mutex, const std::string& key, const std::string& label, bool default_)
14 : Setting (parent, values, mutex, key, label), mDefault (default_), mWidget(nullptr)
15 {}
16
setTooltip(const std::string & tooltip)17 CSMPrefs::BoolSetting& CSMPrefs::BoolSetting::setTooltip (const std::string& tooltip)
18 {
19 mTooltip = tooltip;
20 return *this;
21 }
22
makeWidgets(QWidget * parent)23 std::pair<QWidget *, QWidget *> CSMPrefs::BoolSetting::makeWidgets (QWidget *parent)
24 {
25 mWidget = new QCheckBox (QString::fromUtf8 (getLabel().c_str()), parent);
26 mWidget->setCheckState (mDefault ? Qt::Checked : Qt::Unchecked);
27
28 if (!mTooltip.empty())
29 {
30 QString tooltip = QString::fromUtf8 (mTooltip.c_str());
31 mWidget->setToolTip (tooltip);
32 }
33
34 connect (mWidget, SIGNAL (stateChanged (int)), this, SLOT (valueChanged (int)));
35
36 return std::make_pair (static_cast<QWidget *> (nullptr), mWidget);
37 }
38
updateWidget()39 void CSMPrefs::BoolSetting::updateWidget()
40 {
41 if (mWidget)
42 {
43 mWidget->setCheckState(getValues().getBool(getKey(), getParent()->getKey())
44 ? Qt::Checked
45 : Qt::Unchecked);
46 }
47 }
48
valueChanged(int value)49 void CSMPrefs::BoolSetting::valueChanged (int value)
50 {
51 {
52 QMutexLocker lock (getMutex());
53 getValues().setBool (getKey(), getParent()->getKey(), value);
54 }
55
56 getParent()->getState()->update (*this);
57 }
58