summaryrefslogtreecommitdiffabout
path: root/microkde/kdecore/kconfigbase.h
Unidiff
Diffstat (limited to 'microkde/kdecore/kconfigbase.h') (more/less context) (ignore whitespace changes)
-rw-r--r--microkde/kdecore/kconfigbase.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/microkde/kdecore/kconfigbase.h b/microkde/kdecore/kconfigbase.h
new file mode 100644
index 0000000..7e56d11
--- a/dev/null
+++ b/microkde/kdecore/kconfigbase.h
@@ -0,0 +1,102 @@
1/*
2 This file is part of the KDE libraries
3 Copyright (c) 1999 Preston Brown <pbrown@kde.org>
4 Copyright (c) 1997 Matthias Kalle Dalheimer <kalle@kde.org>
5 Copyright (c) 2001 Waldo Bastian <bastian@kde.org>
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details.
16
17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA.
21*/
22
23// $Id$
24
25#ifndef _KCONFIGBASE_H
26#define _KCONFIGBASE_H
27
28#include "kconfig.h"
29
30/**
31 * Helper class to facilitate working with @ref KConfig / @ref KSimpleConfig
32 * groups.
33 *
34 * Careful programmers always set the group of a
35 * @ref KConfig @ref KSimpleConfig object to the group they want to read from
36 * and set it back to the old one of afterwards. This is usually
37 * written as:
38 * <pre>
39 *
40 * QString oldgroup config->group();
41 * config->setGroup( "TheGroupThatIWant" );
42 * ...
43 * config->writeEntry( "Blah", "Blubb" );
44 *
45 * config->setGroup( oldgroup );
46 * </pre>
47 *
48 * In order to facilitate this task, you can use
49 * KConfigGroupSaver. Simply construct such an object ON THE STACK
50 * when you want to switch to a new group. Then, when the object goes
51 * out of scope, the group will automatically be restored. If you
52 * want to use several different groups within a function or method,
53 * you can still use KConfigGroupSaver: Simply enclose all work with
54 * one group (including the creation of the KConfigGroupSaver object)
55 * in one block.
56 *
57 * @author Matthias Kalle Dalheimer <kalle@kde.org>
58 * @version $Id$
59 * @see KConfigBase, KConfig, KSimpleConfig
60 * @short Helper class for easier use of KConfig/KSimpleConfig groups
61 */
62//US I converted the class in a way that it can be used with KConfig objects of microkde
63
64class KConfigGroupSaver
65{
66public:
67 /**
68 * Constructor. You pass a pointer to the KConfigBase-derived
69 * object you want to work with and a string indicating the _new_
70 * group.
71 *
72 * @param config The KConfigBase-derived object this
73 * KConfigGroupSaver works on.
74 * @param group The new group that the config object should switch to.
75 */
76 KConfigGroupSaver( KConfig* config, QString group )
77 /* KDE 4 : make the second parameter const QString & */
78 : _config(config), _oldgroup(config->group())
79 { _config->setGroup( group ); }
80
81 KConfigGroupSaver( KConfig* config, const char *group )
82 : _config(config), _oldgroup(config->group())
83 { _config->setGroup( group ); }
84
85 KConfigGroupSaver( KConfig* config, const QCString &group )
86 : _config(config), _oldgroup(config->group())
87 { _config->setGroup( group ); }
88
89 ~KConfigGroupSaver() { _config->setGroup( _oldgroup ); }
90
91 KConfig* config() { return _config; };
92
93private:
94 KConfig* _config;
95 QString _oldgroup;
96
97 KConfigGroupSaver(const KConfigGroupSaver&);
98 KConfigGroupSaver& operator=(const KConfigGroupSaver&);
99
100};
101
102#endif