From 311a5fd6c2f9396f4af3085a0a1ac5a5b21e25f5 Mon Sep 17 00:00:00 2001 From: Stefano Karapetsas Date: Mon, 6 May 2013 17:12:21 +0200 Subject: Use idle-delay key in org.mate.session schema Remove it from screensaver schema Closes #17 (https://github.com/mate-desktop/mate-screensaver/issues/17) --- data/org.mate.screensaver.gschema.migrate | 1 - data/org.mate.screensaver.gschema.xml.in | 5 - src/gs-prefs.c | 20 +++- src/mate-screensaver-preferences.c | 183 ++++++++++++------------------ 4 files changed, 90 insertions(+), 119 deletions(-) diff --git a/data/org.mate.screensaver.gschema.migrate b/data/org.mate.screensaver.gschema.migrate index 27c7b2d..f73ecc5 100644 --- a/data/org.mate.screensaver.gschema.migrate +++ b/data/org.mate.screensaver.gschema.migrate @@ -3,7 +3,6 @@ idle-activation-enabled = /apps/mate-screensaver/idle_activation_enabled lock-enabled = /apps/mate-screensaver/lock_enabled mode = /apps/mate-screensaver/mode themes = /apps/mate-screensaver/themes -idle-delay = /apps/mate-screensaver/idle_delay power-management-delay = /apps/mate-screensaver/power_management_delay cycle-delay = /apps/mate-screensaver/cycle_delay lock-delay = /apps/mate-screensaver/lock_delay diff --git a/data/org.mate.screensaver.gschema.xml.in b/data/org.mate.screensaver.gschema.xml.in index d3fd2a4..5cdb071 100644 --- a/data/org.mate.screensaver.gschema.xml.in +++ b/data/org.mate.screensaver.gschema.xml.in @@ -25,11 +25,6 @@ Screensaver themes This key specifies the list of themes to be used by the screensaver. It's ignored when "mode" key is "blank-only", should provide the theme name when "mode" is "single", and should provide a list of themes when "mode" is "random". - - 10 - Time before session is considered idle - The number of minutes of inactivity before the session is considered idle. - 30 Time before power management baseline diff --git a/src/gs-prefs.c b/src/gs-prefs.c index 6d7f562..df1267c 100644 --- a/src/gs-prefs.c +++ b/src/gs-prefs.c @@ -38,11 +38,13 @@ static void gs_prefs_finalize (GObject *object); #define KEY_LOCK_DISABLE "disable-lock-screen" #define KEY_USER_SWITCH_DISABLE "disable-user-switching" +#define SESSION_SETTINGS_SCHEMA "org.mate.session" +#define KEY_IDLE_DELAY "idle-delay" + #define GSETTINGS_SCHEMA "org.mate.screensaver" #define KEY_IDLE_ACTIVATION_ENABLED "idle-activation-enabled" #define KEY_LOCK_ENABLED "lock-enabled" #define KEY_MODE "mode" -#define KEY_ACTIVATE_DELAY "idle-delay" #define KEY_POWER_DELAY "power-management-delay" #define KEY_LOCK_DELAY "lock-delay" #define KEY_CYCLE_DELAY "cycle-delay" @@ -61,6 +63,7 @@ struct GSPrefsPrivate { GSettings *settings; GSettings *lockdown_settings; + GSettings *session_settings; }; enum @@ -338,7 +341,7 @@ gs_prefs_load_from_settings (GSPrefs *prefs) bvalue = g_settings_get_boolean (prefs->priv->lockdown_settings, KEY_USER_SWITCH_DISABLE); _gs_prefs_set_user_switch_disabled (prefs, bvalue); - value = g_settings_get_int (prefs->priv->settings, KEY_ACTIVATE_DELAY); + value = g_settings_get_int (prefs->priv->session_settings, KEY_IDLE_DELAY); _gs_prefs_set_timeout (prefs, value); value = g_settings_get_int (prefs->priv->settings, KEY_POWER_DELAY); @@ -409,7 +412,7 @@ key_changed_cb (GSettings *settings, g_strfreev (strv); } - else if (strcmp (key, KEY_ACTIVATE_DELAY) == 0) + else if (strcmp (key, KEY_IDLE_DELAY) == 0) { int delay; @@ -551,6 +554,12 @@ gs_prefs_init (GSPrefs *prefs) "changed", G_CALLBACK (key_changed_cb), prefs); + prefs->priv->session_settings = g_settings_new (SESSION_SETTINGS_SCHEMA); + g_signal_connect (prefs->priv->session_settings, + "changed::" KEY_IDLE_DELAY, + G_CALLBACK (key_changed_cb), + prefs); + prefs->idle_activation_enabled = TRUE; prefs->lock_enabled = TRUE; prefs->lock_disabled = FALSE; @@ -591,6 +600,11 @@ gs_prefs_finalize (GObject *object) prefs->priv->lockdown_settings = NULL; } + if (prefs->priv->session_settings) { + g_object_unref (prefs->priv->session_settings); + prefs->priv->session_settings = NULL; + } + if (prefs->themes) { g_slist_foreach (prefs->themes, (GFunc)g_free, NULL); diff --git a/src/mate-screensaver-preferences.c b/src/mate-screensaver-preferences.c index 174aea8..8ccbaa0 100644 --- a/src/mate-screensaver-preferences.c +++ b/src/mate-screensaver-preferences.c @@ -47,11 +47,13 @@ #define LOCKDOWN_SETTINGS_SCHEMA "org.mate.lockdown" #define KEY_LOCK_DISABLE "disable-lock-screen" +#define SESSION_SETTINGS_SCHEMA "org.mate.session" +#define KEY_IDLE_DELAY "idle-delay" + #define GSETTINGS_SCHEMA "org.mate.screensaver" #define KEY_LOCK "lock-enabled" #define KEY_IDLE_ACTIVATION_ENABLED "idle-activation-enabled" #define KEY_MODE "mode" -#define KEY_ACTIVATE_DELAY "idle-delay" #define KEY_LOCK_DELAY "lock-delay" #define KEY_CYCLE_DELAY "cycle-delay" #define KEY_THEMES "themes" @@ -78,65 +80,52 @@ static GtkTargetEntry drop_types [] = { "_NETSCAPE_URL", 0, TARGET_NS_URL } }; -static GtkBuilder *builder = NULL; +static GtkBuilder *builder = NULL; static GSThemeManager *theme_manager = NULL; static GSJob *job = NULL; +static GSettings *screensaver_settings = NULL; +static GSettings *session_settings = NULL; +static GSettings *lockdown_settings = NULL; static gint32 config_get_activate_delay (gboolean *is_writable) { - GSettings *settings; - gint32 delay; - - settings = g_settings_new (GSETTINGS_SCHEMA); + gint32 delay; if (is_writable) { - *is_writable = g_settings_is_writable (settings, - KEY_ACTIVATE_DELAY); + *is_writable = g_settings_is_writable (session_settings, + KEY_IDLE_DELAY); } - delay = g_settings_get_int (settings, KEY_ACTIVATE_DELAY); + delay = g_settings_get_int (session_settings, KEY_IDLE_DELAY); if (delay < 1) { delay = 1; } - g_object_unref (settings); - return delay; } static void config_set_activate_delay (gint32 timeout) { - GSettings *settings; - - settings = g_settings_new (GSETTINGS_SCHEMA); - - g_settings_set_int (settings, KEY_ACTIVATE_DELAY, timeout); - - g_object_unref (settings); + g_settings_set_int (session_settings, KEY_IDLE_DELAY, timeout); } static int config_get_mode (gboolean *is_writable) { - GSettings *settings; - int mode; - - settings = g_settings_new (GSETTINGS_SCHEMA); + int mode; if (is_writable) { - *is_writable = g_settings_is_writable (settings, + *is_writable = g_settings_is_writable (screensaver_settings, KEY_MODE); } - mode = g_settings_get_enum (settings, KEY_MODE); - - g_object_unref (settings); + mode = g_settings_get_enum (screensaver_settings, KEY_MODE); return mode; } @@ -144,32 +133,23 @@ config_get_mode (gboolean *is_writable) static void config_set_mode (int mode) { - GSettings *settings; - - settings = g_settings_new (GSETTINGS_SCHEMA); - - g_settings_set_enum (settings, KEY_MODE, mode); - - g_object_unref (settings); + g_settings_set_enum (screensaver_settings, KEY_MODE, mode); } static char * config_get_theme (gboolean *is_writable) { - GSettings *settings; - char *name; - int mode; - - settings = g_settings_new (GSETTINGS_SCHEMA); + char *name; + int mode; if (is_writable) { gboolean can_write_theme; gboolean can_write_mode; - can_write_theme = g_settings_is_writable (settings, + can_write_theme = g_settings_is_writable (screensaver_settings, KEY_THEMES); - can_write_mode = g_settings_is_writable (settings, + can_write_mode = g_settings_is_writable (screensaver_settings, KEY_MODE); *is_writable = can_write_theme && can_write_mode; } @@ -187,11 +167,11 @@ config_get_theme (gboolean *is_writable) } else { - gchar **strv; - strv = g_settings_get_strv (settings, - KEY_THEMES); - if (strv != NULL) { - name = g_strdup (strv[0]); + gchar **strv; + strv = g_settings_get_strv (screensaver_settings, + KEY_THEMES); + if (strv != NULL) { + name = g_strdup (strv[0]); } else { @@ -203,8 +183,6 @@ config_get_theme (gboolean *is_writable) g_strfreev (strv); } - g_object_unref (settings); - return name; } @@ -233,11 +211,8 @@ get_all_theme_ids (GSThemeManager *theme_manager) static void config_set_theme (const char *theme_id) { - GSettings *settings; gchar **strv = NULL; - int mode; - - settings = g_settings_new (GSETTINGS_SCHEMA); + int mode; if (theme_id && strcmp (theme_id, "__blank-only") == 0) { @@ -258,32 +233,26 @@ config_set_theme (const char *theme_id) config_set_mode (mode); - g_settings_set_strv (settings, + g_settings_set_strv (screensaver_settings, KEY_THEMES, (const gchar * const*) strv); g_strfreev (strv); - g_object_unref (settings); } static gboolean config_get_enabled (gboolean *is_writable) { - int enabled; - GSettings *settings; - - settings = g_settings_new (GSETTINGS_SCHEMA); + int enabled; if (is_writable) { - *is_writable = g_settings_is_writable (settings, + *is_writable = g_settings_is_writable (screensaver_settings, KEY_LOCK); } - enabled = g_settings_get_boolean (settings, KEY_IDLE_ACTIVATION_ENABLED); - - g_object_unref (settings); + enabled = g_settings_get_boolean (screensaver_settings, KEY_IDLE_ACTIVATION_ENABLED); return enabled; } @@ -291,32 +260,21 @@ config_get_enabled (gboolean *is_writable) static void config_set_enabled (gboolean enabled) { - GSettings *settings; - - settings = g_settings_new (GSETTINGS_SCHEMA); - - g_settings_set_boolean (settings, KEY_IDLE_ACTIVATION_ENABLED, enabled); - - g_object_unref (settings); + g_settings_set_boolean (screensaver_settings, KEY_IDLE_ACTIVATION_ENABLED, enabled); } static gboolean config_get_lock (gboolean *is_writable) { - GSettings *settings; - gboolean lock; - - settings = g_settings_new (GSETTINGS_SCHEMA); + gboolean lock; if (is_writable) { - *is_writable = g_settings_is_writable (settings, + *is_writable = g_settings_is_writable (screensaver_settings, KEY_LOCK); } - lock = g_settings_get_boolean (settings, KEY_LOCK); - - g_object_unref (settings); + lock = g_settings_get_boolean (screensaver_settings, KEY_LOCK); return lock; } @@ -324,27 +282,13 @@ config_get_lock (gboolean *is_writable) static gboolean config_get_lock_disabled () { - GSettings *settings; - gboolean lock; - - settings = g_settings_new (LOCKDOWN_SETTINGS_SCHEMA); - - lock = g_settings_get_boolean (settings, KEY_LOCK_DISABLE); - - g_object_unref (settings); - return lock; + return g_settings_get_boolean (lockdown_settings, KEY_LOCK_DISABLE); } static void config_set_lock (gboolean lock) { - GSettings *settings; - - settings = g_settings_new (GSETTINGS_SCHEMA); - - g_settings_set_boolean (settings, KEY_LOCK, lock); - - g_object_unref (settings); + g_settings_set_boolean (screensaver_settings, KEY_LOCK, lock); } static void @@ -1195,7 +1139,7 @@ key_changed_cb (GSettings *settings, const gchar *key, gpointer data) treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview")); setup_treeview_selection (treeview); } - else if (strcmp (key, KEY_ACTIVATE_DELAY) == 0) + else if (strcmp (key, KEY_IDLE_DELAY) == 0) { int delay; @@ -1486,9 +1430,8 @@ init_capplet (void) gdouble activate_delay; gboolean enabled; gboolean is_writable; - GSettings *settings; GError *error=NULL; - gint mode; + gint mode; gtk_builder_file = g_build_filename (GTKBUILDERDIR, GTK_BUILDER_FILE, NULL); builder = gtk_builder_new(); @@ -1547,6 +1490,24 @@ init_capplet (void) gtk_widget_hide (gpm_button); } + screensaver_settings = g_settings_new (GSETTINGS_SCHEMA); + g_signal_connect (screensaver_settings, + "changed", + G_CALLBACK (key_changed_cb), + NULL); + + session_settings = g_settings_new (SESSION_SETTINGS_SCHEMA); + g_signal_connect (session_settings, + "changed::" KEY_IDLE_DELAY, + G_CALLBACK (key_changed_cb), + NULL); + + lockdown_settings = g_settings_new (LOCKDOWN_SETTINGS_SCHEMA); + g_signal_connect (lockdown_settings, + "changed::" KEY_LOCK_DISABLE, + G_CALLBACK (key_changed_cb), + NULL); + activate_delay = config_get_activate_delay (&is_writable); ui_set_delay (activate_delay); if (! is_writable) @@ -1592,21 +1553,13 @@ init_capplet (void) gtk_widget_show_all (dialog); /* Update list of themes if using random screensaver */ - settings = g_settings_new (GSETTINGS_SCHEMA); - mode = g_settings_get_enum (settings, KEY_MODE); - if (mode == GS_MODE_RANDOM) { - gchar **list; - list = get_all_theme_ids (theme_manager); - g_settings_set_strv (settings, KEY_THEMES, (const gchar * const*) list); - g_strfreev (list); - } - - g_signal_connect (settings, - "changed", - G_CALLBACK (key_changed_cb), - NULL); - - g_object_unref (settings); + mode = g_settings_get_enum (screensaver_settings, KEY_MODE); + if (mode == GS_MODE_RANDOM) { + gchar **list; + list = get_all_theme_ids (theme_manager); + g_settings_set_strv (screensaver_settings, KEY_THEMES, (const gchar * const*) list); + g_strfreev (list); + } preview_clear (preview); gs_job_set_widget (job, preview); @@ -1636,6 +1589,14 @@ init_capplet (void) g_idle_add ((GSourceFunc)setup_treeview_idle, NULL); } +static void +finalize_capplet (void) +{ + g_object_unref (screensaver_settings); + g_object_unref (session_settings); + g_object_unref (lockdown_settings); +} + int main (int argc, char **argv) @@ -1658,6 +1619,8 @@ main (int argc, gtk_main (); + finalize_capplet (); + g_object_unref (theme_manager); g_object_unref (job); -- cgit v1.2.1