static void allocateClient();
protected:
+ // TODO: should I count the references and unref the client when the last user is gone??
static GConfClient *ourClient;
};
const std::string& path() const { return myKeyPath; }
- static std::string mergePath(const std::string&, const std::string);
+ std::string merge(const std::string&) const;
private:
- std::string myKeyPath;
+ const std::string myKeyPath;
};
class GConfOption : public GConfItem {
protected:
- GConfOption(const GConfKey& key, const std::string& path): myIsSynchronized(false), myPath(GConfKey::mergePath(key.path(), path)) { }
+ GConfOption(const GConfKey& key, const std::string& path): myIsSynchronized(false), myPath(key.merge(path)) { }
+
+ virtual GConfValueType kind() const = 0;
void setGConfValue(const GConfValue *);
- GConfValue *getGConfValue(GConfValueType) const;
+ GConfValue *getGConfValue() const;
void unsetGConfValue();
protected:
mutable bool myIsSynchronized;
- std::string myPath;
+ const std::string myPath;
};
-class GConfStringValue : public GConfOption {
+class GConfStringOption : public GConfOption {
public:
- GConfStringValue(const GConfKey&, const std::string&, const std::string& = "");
- ~GConfStringValue();
+ GConfStringOption(const GConfKey&, const std::string&, const std::string&);
+
+ virtual GConfValueType kind() const { return GCONF_VALUE_STRING; }
const std::string& value() const;
const std::string& setValue(const std::string& newValue);
private:
mutable std::string myValue;
- std::string myDefaultValue;
+ const std::string myDefaultValue;
};
-class GConfBooleanValue : public GConfOption {
+class GConfBooleanOption : public GConfOption {
public:
- GConfBooleanValue(const GConfKey&, const std::string&, bool = false);
- ~GConfBooleanValue();
+ GConfBooleanOption(const GConfKey&, const std::string&, bool);
+
+ virtual GConfValueType kind() const { return GCONF_VALUE_BOOL; }
bool value() const;
bool setValue(bool newValue);
private:
mutable bool myValue;
- bool myDefaultValue;
+ const bool myDefaultValue;
};
-class GConfIntegerValue : public GConfOption {
+class GConfIntegerOption : public GConfOption {
public:
- GConfIntegerValue(const GConfKey&, const std::string&, int = false);
- ~GConfIntegerValue();
+ GConfIntegerOption(const GConfKey&, const std::string&, int);
+
+ virtual GConfValueType kind() const { return GCONF_VALUE_INT; }
int value() const;
int setValue(int newValue);
private:
mutable int myValue;
- int myDefaultValue;
+ const int myDefaultValue;
};
#endif