diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2010-07-19 14:46:56 +0100 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2010-08-06 19:14:18 +1000 |
commit | 3745787733fc7fd57b20667c3042c2abdcd178fe (patch) | |
tree | ba4cf607d309c7cddf0626c2c0703a2fd4533050 | |
parent | 3398e2f2f6cd6645ff862da717185fdd9f591989 (diff) | |
download | telepathy-logger-3745787733fc7fd57b20667c3042c2abdcd178fe.tar.gz |
Add globally-enabled property + notification
-rw-r--r-- | telepathy-logger/conf.c | 71 | ||||
-rw-r--r-- | telepathy-logger/observer.c | 14 |
2 files changed, 85 insertions, 0 deletions
diff --git a/telepathy-logger/conf.c b/telepathy-logger/conf.c index 1f094c5..9cf9908 100644 --- a/telepathy-logger/conf.c +++ b/telepathy-logger/conf.c @@ -45,6 +45,65 @@ typedef struct { } TplConfPriv; +enum /* properties */ +{ + PROP_0, + PROP_GLOBALLY_ENABLED +}; + + +static void +_notify_globally_enable (GSettings *gsettings, + const gchar *key, + GObject *self) +{ + g_object_notify (self, "globally-enabled"); +} + + +static void +tpl_conf_get_property (GObject *self, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + TplConfPriv *priv = GET_PRIV (self); + + switch (prop_id) + { + case PROP_GLOBALLY_ENABLED: + g_value_set_boolean (value, + g_settings_get_boolean (priv->gsettings, KEY_ENABLED)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (self, prop_id, pspec); + break; + } +} + +static void +tpl_conf_set_property (GObject *self, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + TplConfPriv *priv = GET_PRIV (self); + + switch (prop_id) + { + case PROP_GLOBALLY_ENABLED: + g_settings_set_boolean (priv->gsettings, KEY_ENABLED, + g_value_get_boolean (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (self, prop_id, pspec); + break; + } +} + + static void tpl_conf_finalize (GObject *obj) { @@ -89,9 +148,18 @@ _tpl_conf_class_init (TplConfClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->get_property = tpl_conf_get_property; + object_class->set_property = tpl_conf_set_property; object_class->finalize = tpl_conf_finalize; object_class->constructor = tpl_conf_constructor; + g_object_class_install_property (object_class, PROP_GLOBALLY_ENABLED, + g_param_spec_boolean ("globally-enabled", + "Globally Enabled", + "TRUE if logging is enabled (may still be disabled for specific users)", + TRUE, + G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); + g_type_class_add_private (object_class, sizeof (TplConfPriv)); } @@ -103,6 +171,9 @@ _tpl_conf_init (TplConf *self) TPL_TYPE_CONF, TplConfPriv); priv->gsettings = g_settings_new (GSETTINGS_SCHEMA); + + g_signal_connect (priv->gsettings, "changed::" KEY_ENABLED, + G_CALLBACK (_notify_globally_enable), self); } diff --git a/telepathy-logger/observer.c b/telepathy-logger/observer.c index be710c2..88210d8 100644 --- a/telepathy-logger/observer.c +++ b/telepathy-logger/observer.c @@ -231,6 +231,17 @@ _tpl_observer_register_channel (TplObserver *self, } static void +_globally_enabled_changed (TplConf *conf, + GParamSpec *pspec, + TplObserver *self) +{ + gboolean enabled = _tpl_conf_is_globally_enabled (conf); + + DEBUG ("Globally %s all logging", + enabled ? "enabling" : "disabling"); +} + +static void got_tpl_channel_text_ready_cb (GObject *obj, GAsyncResult *result, gpointer user_data) @@ -369,6 +380,9 @@ _tpl_observer_init (TplObserver *self) priv->logmanager = tpl_log_manager_dup_singleton (); + g_signal_connect (priv->conf, "notify::globally-enabled", + G_CALLBACK (_globally_enabled_changed), self); + /* Observe contact text channels */ tp_base_client_take_observer_filter (TP_BASE_CLIENT (self), tp_asv_new ( |