Introduced styles - first version of Widgets
[opentodolist:opentodolist.git] / OpenTodoList / settings.cpp
1 /*
2  *  OpenTodoList - A todo and task manager
3  *  Copyright (C) 2013  Martin Höher <martin@rpdev.net>
4  *
5  *  This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #include "settings.h"
20
21 #include <QSettings>
22
23 Settings::Settings(QStringList groups, QObject *parent) :
24     QObject( parent ),
25     m_settings( new QSettings() ),
26     m_groups()
27 {
28     setGroups( groups );
29 }
30
31 Settings::Settings(QObject *parent) :
32     QObject( parent ),
33     m_settings( new QSettings() ),
34     m_groups()
35 {
36 }
37
38 Settings::~Settings()
39 {
40     delete m_settings;
41 }
42
43 /**
44    @brief The groups we're currently writing to
45
46    The settings object should (at each point in time) be associated with a
47    given group to which settings are written. Such a groups list could be
48    [ "ApplicationViewer", "Android" ].
49
50    @sa setGroups
51  */
52 const QStringList &Settings::groups() const
53 {
54     return m_groups;
55 }
56
57 /**
58    @brief Saves a value
59
60    This writes a @p value into the settings object using the given @p name. The
61    value will be put in the currently set @sa groups.
62  */
63 void Settings::setValue(const QString &name, QVariant value)
64 {
65     m_settings->setValue( name, value );
66 }
67
68 /**
69    @brief Reads a value
70
71    This will read the value with the given @p name from the settings. If the
72    value is present in the currently active @sa groups its value will be
73    returned. Otherwise, this method will return the @p defaultValue.
74  */
75 QVariant Settings::getValue(const QString &name, QVariant defaultValue)
76 {
77     return m_settings->value( name, defaultValue );
78 }
79
80 /**
81    @brief Removes a value
82
83    This will remove the value with the given @p name from the currently active
84    @sa groups.
85  */
86 void Settings::deleteValue(const QString &name)
87 {
88     m_settings->remove( name );
89 }
90
91 /**
92    @brief Sets the groups to which we are writing to and reading from.
93  */
94 void Settings::setGroups(const QStringList &groups)
95 {
96     for ( int i = 0; i < m_groups.size(); ++i ) {
97         m_settings->endGroup();
98     }
99     m_groups = groups;
100     foreach ( QString group, m_groups ) {
101         m_settings->beginGroup( group );
102     }
103     emit groupsChanged();
104 }
105