[ekiga/ds-gsettings3: 23/33] Added C++ boost class "wrapper" around GSettings.
- From: Damien Sandras <dsandras src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ekiga/ds-gsettings3: 23/33] Added C++ boost class "wrapper" around GSettings.
- Date: Sat, 5 Oct 2013 12:16:04 +0000 (UTC)
commit 9c9f5dfd4e44580b7bb54b32a5b0d185c44e4848
Author: Damien Sandras <dsandras beip be>
Date: Sun May 5 17:48:01 2013 +0200
Added C++ boost class "wrapper" around GSettings.
This allows C++ callbacks. Previous GSettings changes should use it
instead of the custom static C functions calling C++ methods (which
sucks actually).
lib/ekiga-settings.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
---
diff --git a/lib/ekiga-settings.h b/lib/ekiga-settings.h
index 5514a04..8dc05fc 100644
--- a/lib/ekiga-settings.h
+++ b/lib/ekiga-settings.h
@@ -39,9 +39,56 @@
#ifndef EKIGA_SETTINGS_H_
#define EKIGA_SETTINGS_H_
+#include <boost/signals.hpp>
+#include <gio/gio.h>
+
#define USER_INTERFACE "org.gnome." PACKAGE_NAME ".general.user-interface"
#define SOUND_EVENTS_SCHEMA "org.gnome." PACKAGE_NAME ".general.sound-events"
#define AUDIO_DEVICES_SCHEMA "org.gnome." PACKAGE_NAME ".devices.audio"
+namespace Ekiga {
+
+ /*
+ * This is a C++ wrapper around the GSettings signal function.
+ *
+ * Please use it in C++ code.
+ */
+ class Settings : boost::noncopyable {
+
+ static void f_callback (G_GNUC_UNUSED GSettings *settings,
+ gchar *key,
+ const Settings* self)
+ {
+ self->changed (std::string (key));
+ }
+
+
+public:
+
+ Settings (const std::string & _schema)
+ {
+ gsettings = g_settings_new (_schema.c_str ());
+ handler = g_signal_connect (gsettings, "changed", G_CALLBACK (&f_callback), this);
+ }
+
+ ~Settings ()
+ {
+ g_signal_handler_disconnect (gsettings, handler);
+ g_clear_object (&gsettings);
+ }
+
+ GSettings* get_g_settings ()
+ {
+ return gsettings;
+ }
+
+ boost::signal1<void, std::string> changed;
+
+private:
+ gulong handler;
+ GSettings *gsettings;
+ };
+}
+
#endif /* EKIGA_SETTINGS_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]