1 // This file is a part of Simple Launcher
3 // Copyright (C) 2006, 2007, Mikhail Sobolev
5 // Simple Launcher is free software; you can redistribute it and/or modify it
6 // under the terms of the GNU General Public License version 2 as published by
7 // the Free Software Foundation.
9 // This program is distributed in the hope that it will be useful, but WITHOUT
10 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 // You should have received a copy of the GNU General Public License along with
15 // this program; if not, write to the Free Software Foundation, Inc., 51
16 // Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 #ifndef _GCONF_WRAPPER_H_
19 #define _GCONF_WRAPPER_H_
23 #include <gconf/gconf-client.h>
27 virtual ~GConfItem() {}
30 GConfItem(); // I do not want to create instances of this class
32 static void allocateClient();
35 // TODO: should I count the references and unref the client when the last user is gone??
36 static GConfClient *ourClient;
39 class GConfKey : public GConfItem {
41 GConfKey(const std::string&);
42 GConfKey(const GConfKey&, const std::string&);
45 const std::string& path() const { return myKeyPath; }
47 std::string merge(const std::string&) const;
50 const std::string myKeyPath;
53 class GConfOption : public GConfItem {
55 GConfOption(GConfValueType kind, const GConfKey& key, const std::string& path): myKind(kind), myIsSynchronized(false), myPath(key.merge(path)) { }
57 GConfValueType kind() const { return myKind; }
59 void setGConfValue(const GConfValue *);
60 GConfValue *getGConfValue() const;
61 void unsetGConfValue();
64 const GConfValueType myKind;
65 mutable bool myIsSynchronized;
66 const std::string myPath;
69 class GConfStringOption : public GConfOption {
71 GConfStringOption(const GConfKey&, const std::string&, const std::string& = "");
73 const std::string& value() const;
74 const std::string& setValue(const std::string& newValue);
77 mutable std::string myValue;
78 const std::string myDefaultValue;
81 class GConfBooleanOption : public GConfOption {
83 GConfBooleanOption(const GConfKey&, const std::string&, bool = false);
86 bool setValue(bool newValue);
90 const bool myDefaultValue;
93 class GConfIntegerOption : public GConfOption {
95 GConfIntegerOption(const GConfKey&, const std::string&, int = false);
98 int setValue(int newValue);
102 const int myDefaultValue;