diff options
Diffstat (limited to 'mate-settings-daemon/mate-settings-plugin-info.c')
-rw-r--r-- | mate-settings-daemon/mate-settings-plugin-info.c | 50 |
1 files changed, 20 insertions, 30 deletions
diff --git a/mate-settings-daemon/mate-settings-plugin-info.c b/mate-settings-daemon/mate-settings-plugin-info.c index c5cd494..9fa333e 100644 --- a/mate-settings-daemon/mate-settings-plugin-info.c +++ b/mate-settings-daemon/mate-settings-plugin-info.c @@ -25,7 +25,7 @@ #include <glib.h> #include <glib/gi18n.h> #include <gmodule.h> -#include <mateconf/mateconf-client.h> +#include <gio/gio.h> #include "mate-settings-plugin-info.h" #include "mate-settings-module.h" @@ -48,10 +48,10 @@ typedef enum struct MateSettingsPluginInfoPrivate { char *file; - MateConfClient *client; + GSettings *settings; char *location; - MateSettingsPluginLoader loader; + MateSettingsPluginLoader loader; GTypeModule *module; char *name; @@ -117,14 +117,7 @@ mate_settings_plugin_info_finalize (GObject *object) g_free (info->priv->copyright); g_strfreev (info->priv->authors); - if (info->priv->enabled_notification_id != 0) { - mateconf_client_notify_remove (info->priv->client, - info->priv->enabled_notification_id); - - info->priv->enabled_notification_id = 0; - } - - g_object_unref (info->priv->client); + g_object_unref (info->priv->settings); G_OBJECT_CLASS (mate_settings_plugin_info_parent_class)->finalize (object); } @@ -164,7 +157,6 @@ static void mate_settings_plugin_info_init (MateSettingsPluginInfo *info) { info->priv = MATE_SETTINGS_PLUGIN_INFO_GET_PRIVATE (info); - info->priv->client = mateconf_client_get_default (); } static void @@ -296,32 +288,17 @@ mate_settings_plugin_info_fill_from_file (MateSettingsPluginInfo *info, } static void -plugin_enabled_cb (MateConfClient *client, - guint cnxn_id, - MateConfEntry *entry, +plugin_enabled_cb (GSettings *settings, + gchar *key, MateSettingsPluginInfo *info) { - if (mateconf_value_get_bool (entry->value)) { + if (g_settings_get_boolean (info->priv->settings, key)) { mate_settings_plugin_info_activate (info); } else { mate_settings_plugin_info_deactivate (info); } } -void -mate_settings_plugin_info_set_enabled_key_name (MateSettingsPluginInfo *info, - const char *key_name) -{ - info->priv->enabled_notification_id = mateconf_client_notify_add (info->priv->client, - key_name, - (MateConfClientNotifyFunc)plugin_enabled_cb, - info, - NULL, - NULL); - - info->priv->enabled = mateconf_client_get_bool (info->priv->client, key_name, NULL); -} - MateSettingsPluginInfo * mate_settings_plugin_info_new_from_file (const char *filename) { @@ -614,3 +591,16 @@ mate_settings_plugin_info_set_priority (MateSettingsPluginInfo *info, info->priv->priority = priority; } + +void +mate_settings_plugin_info_set_schema (MateSettingsPluginInfo *info, + gchar *schema) +{ + g_return_if_fail (MATE_IS_SETTINGS_PLUGIN_INFO (info)); + + info->priv->settings = g_settings_new (schema); + info->priv->priority = g_settings_get_int(info->priv->settings, "priority"); + info->priv->enabled = g_settings_get_boolean(info->priv->settings, "active"); + + g_signal_connect (info->priv->settings, "changed::active", G_CALLBACK (plugin_enabled_cb), info); +} |