src/3rdparty/libgq/gconf/gconfitem.h
changeset 37 758a864f9613
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/3rdparty/libgq/gconf/gconfitem.h	Mon Oct 04 01:19:32 2010 +0300
@@ -0,0 +1,147 @@
+/* * This file is part of libgq *
+ *
+ * Copyright (C) 2009 Nokia Corporation.
+ *
+ * Contact: Marius Vollmer <marius.vollmer@nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#ifndef GCONFITEM_H
+#define GCONFITEM_H
+
+#include <QVariant>
+#include <QStringList>
+#include <QObject>
+
+/*!
+
+  \brief GConfItem is a simple C++ wrapper for GConf.
+
+  Creating a GConfItem instance gives you access to a single GConf
+  key.  You can get and set its value, and connect to its
+  valueChanged() signal to be notified about changes.
+
+  The value of a GConf key is returned to you as a QVariant, and you
+  pass in a QVariant when setting the value.  GConfItem converts
+  between a QVariant and GConf values as needed, and according to the
+  following rules:
+
+  - A QVariant of type QVariant::Invalid denotes an unset GConf key.
+
+  - QVariant::Int, QVariant::Double, QVariant::Bool are converted to
+    and from the obvious equivalents.
+
+  - QVariant::String is converted to/from a GConf string and always
+    uses the UTF-8 encoding.  No other encoding is supported.
+
+  - QVariant::StringList is converted to a list of UTF-8 strings.
+
+  - QVariant::List (which denotes a QList<QVariant>) is converted
+    to/from a GConf list.  All elements of such a list must have the
+    same type, and that type must be one of QVariant::Int,
+    QVariant::Double, QVariant::Bool, or QVariant::String.  (A list of
+    strings is returned as a QVariant::StringList, however, when you
+    get it back.)
+
+  - Any other QVariant or GConf value is essentially ignored.
+
+  \warning GConfItem is as thread-safe as GConf.
+
+*/
+
+class GConfItem : public QObject
+{
+    Q_OBJECT
+
+ public:
+    /*! Initializes a GConfItem to access the GConf key denoted by
+        \a key.  Key names should follow the normal GConf conventions
+        like "/myapp/settings/first".
+
+        \param key    The name of the key.
+        \param parent Parent object
+    */
+    explicit GConfItem(const QString &key, QObject *parent = 0);
+
+    /*! Finalizes a GConfItem.
+     */
+    virtual ~GConfItem();
+
+    /*! Returns the key of this item, as given to the constructor.
+     */
+    QString key() const;
+
+    /*! Returns the current value of this item, as a QVariant.
+     */
+    QVariant value() const;
+
+    /*! Returns the current value of this item, as a QVariant.  If
+     *  there is no value for this item, return \a def instead.
+     */
+    QVariant value(const QVariant &def) const;
+
+    /*! Set the value of this item to \a val.  If \a val can not be
+        represented in GConf or GConf refuses to accept it for other
+        reasons, the current value is not changed and nothing happens.
+
+        When the new value is different from the old value, the
+        changedValue() signal is emitted on this GConfItem as part
+        of calling set(), but other GConfItem:s for the same key do
+        only receive a notification once the main loop runs.
+
+        \param val  The new value.
+    */
+    void set(const QVariant &val);
+
+    /*! Unset this item.  This is equivalent to
+
+        \code
+        item.set(QVariant(QVariant::Invalid));
+        \endcode
+     */
+    void unset();
+
+    /*! Return a list of the directories below this item.  The
+        returned strings are absolute key names like
+        "/myapp/settings".
+
+        A directory is a key that has children.  The same key might
+        also have a value, but that is confusing and best avoided.
+    */
+    QList<QString> listDirs() const;
+
+    /*! Return a list of entries below this item.  The returned
+        strings are absolute key names like "/myapp/settings/first".
+
+        A entry is a key that has a value.  The same key might also
+        have children, but that is confusing and is best avoided.
+    */
+    QList<QString> listEntries() const;
+
+ signals:
+    /*! Emitted when the value of this item has changed.
+     */
+    void valueChanged();
+
+ private:
+    friend struct GConfItemPrivate;
+    struct GConfItemPrivate *priv;
+
+    void update_value(bool emit_signal);
+};
+
+#endif // GCONFITEM_H