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