preparation for new hildon (desktop and widgets) support
[simple-launcher] / gconf-wrapper.h
index 198b146..be94905 100644 (file)
@@ -44,62 +44,67 @@ public:
 
   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