[Xfce4-commits] [apps/xfce4-screensaver] 01/01: Enable global screensaver switch
noreply at xfce.org
noreply at xfce.org
Tue Nov 20 02:16:03 CET 2018
This is an automated email from the git hooks/post-receive script.
b l u e s a b r e p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository apps/xfce4-screensaver.
commit 841924bca121363f073cfc98f522a54af5a64f75
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Mon Nov 19 20:15:57 2018 -0500
Enable global screensaver switch
---
src/gs-listener-x11.c | 10 ++++++
src/gs-listener-x11.h | 2 ++
src/gs-manager.c | 28 ++++++++++++++++-
src/gs-manager.h | 4 +++
src/gs-monitor.c | 2 ++
src/gs-prefs.c | 17 ++++++++++
src/gs-prefs.h | 8 +++++
src/xfce4-screensaver-preferences.c | 60 ++++++++++++++++++++++++++++++++++++
src/xfce4-screensaver-preferences.ui | 3 +-
9 files changed, 131 insertions(+), 3 deletions(-)
diff --git a/src/gs-listener-x11.c b/src/gs-listener-x11.c
index f3d55aa..0fa269e 100644
--- a/src/gs-listener-x11.c
+++ b/src/gs-listener-x11.c
@@ -55,6 +55,7 @@ struct GSListenerX11Private {
gint lock_timeout;
guint lock_timer_id;
gboolean idle_activation_enabled;
+ gboolean saver_enabled;
};
enum {
@@ -115,6 +116,9 @@ lock_timer (GSListenerX11 *listener) {
guint idle_time;
gint state;
+ if (!listener->priv->saver_enabled)
+ return TRUE;
+
get_x11_idle_info (&idle_time, &state);
gs_debug("Lock Timeout: %is, Idle: %is, Idle Activation: %s, Screensaver: %s, Lock State: %s",
listener->priv->lock_timeout,
@@ -262,6 +266,12 @@ gs_listener_x11_set_lock_after (GSListenerX11 *listener,
}
void
+gs_listener_x11_set_saver_enabled (GSListenerX11 *listener,
+ gboolean enabled) {
+ listener->priv->saver_enabled = enabled;
+}
+
+void
gs_listener_x11_set_activation_enabled (GSListenerX11 *listener,
gboolean enabled) {
listener->priv->idle_activation_enabled = enabled;
diff --git a/src/gs-listener-x11.h b/src/gs-listener-x11.h
index 136427f..c7575f9 100644
--- a/src/gs-listener-x11.h
+++ b/src/gs-listener-x11.h
@@ -54,6 +54,8 @@ GSListenerX11 *gs_listener_x11_new (void);
gboolean gs_listener_x11_acquire (GSListenerX11 *listener);
void gs_listener_x11_set_lock_after (GSListenerX11 *listener,
gint lock_after);
+void gs_listener_x11_set_saver_enabled (GSListenerX11 *listener,
+ gboolean enabled);
void gs_listener_x11_set_activation_enabled (GSListenerX11 *listener,
gboolean enabled);
diff --git a/src/gs-manager.c b/src/gs-manager.c
index c8b52e3..65e0b27 100644
--- a/src/gs-manager.c
+++ b/src/gs-manager.c
@@ -55,6 +55,7 @@ struct GSManagerPrivate {
glong cycle_timeout;
glong logout_timeout;
+ guint saver_enabled : 1;
guint lock_enabled : 1;
guint lock_with_saver_enabled : 1;
guint logout_enabled : 1;
@@ -136,7 +137,8 @@ select_theme (GSManager *manager) {
g_return_val_if_fail (manager != NULL, NULL);
g_return_val_if_fail (GS_IS_MANAGER (manager), NULL);
- if (manager->priv->saver_mode == GS_MODE_BLANK_ONLY) {
+ if (!manager->priv->saver_enabled ||
+ manager->priv->saver_mode == GS_MODE_BLANK_ONLY) {
return NULL;
}
@@ -435,6 +437,30 @@ gs_manager_set_saver_active (GSManager *manager,
}
void
+gs_manager_get_saver_enabled (GSManager *manager,
+ gboolean *saver_enabled) {
+ if (saver_enabled != NULL) {
+ *saver_enabled = FALSE;
+ }
+
+ g_return_if_fail (GS_IS_MANAGER (manager));
+
+ if (saver_enabled != NULL) {
+ *saver_enabled = manager->priv->saver_enabled;
+ }
+}
+
+void
+gs_manager_set_saver_enabled (GSManager *manager,
+ gboolean saver_enabled) {
+ g_return_if_fail (GS_IS_MANAGER (manager));
+
+ if (manager->priv->saver_enabled != saver_enabled) {
+ manager->priv->saver_enabled = saver_enabled;
+ }
+}
+
+void
gs_manager_get_lock_enabled (GSManager *manager,
gboolean *lock_enabled) {
if (lock_enabled != NULL) {
diff --git a/src/gs-manager.h b/src/gs-manager.h
index 9e68644..0d04386 100644
--- a/src/gs-manager.h
+++ b/src/gs-manager.h
@@ -76,6 +76,10 @@ void gs_manager_set_keyboard_command (GSManager *manager,
const char *command);
void gs_manager_set_status_message (GSManager *manager,
const char *message);
+void gs_manager_get_saver_enabled (GSManager *manager,
+ gboolean *saver_enabled);
+void gs_manager_set_saver_enabled (GSManager *manager,
+ gboolean saver_enabled);
void gs_manager_get_lock_enabled (GSManager *manager,
gboolean *lock_enabled);
void gs_manager_set_lock_enabled (GSManager *manager,
diff --git a/src/gs-monitor.c b/src/gs-monitor.c
index ab2f09e..ae52f20 100644
--- a/src/gs-monitor.c
+++ b/src/gs-monitor.c
@@ -212,12 +212,14 @@ static void _gs_monitor_update_from_prefs(GSMonitor* monitor, GSPrefs* prefs) {
gs_manager_set_keyboard_command(monitor->priv->manager, monitor->priv->prefs->keyboard_command);
gs_manager_set_cycle_timeout(monitor->priv->manager, monitor->priv->prefs->cycle);
gs_manager_set_mode(monitor->priv->manager, monitor->priv->prefs->mode);
+ gs_manager_set_saver_enabled(monitor->priv->manager, monitor->priv->prefs->saver_enabled);
gs_manager_set_themes(monitor->priv->manager, monitor->priv->prefs->themes);
/* enable activation when allowed */
gs_listener_set_activation_enabled(monitor->priv->listener, monitor->priv->prefs->idle_activation_enabled);
gs_listener_x11_set_activation_enabled(monitor->priv->listener_x11, monitor->priv->prefs->idle_activation_enabled);
gs_listener_x11_set_lock_after(monitor->priv->listener_x11, monitor->priv->prefs->timeout);
+ gs_listener_x11_set_saver_enabled(monitor->priv->listener_x11, monitor->priv->prefs->saver_enabled);
}
static void disconnect_listener_signals(GSMonitor* monitor) {
diff --git a/src/gs-prefs.c b/src/gs-prefs.c
index ed5c105..ab3a2ae 100644
--- a/src/gs-prefs.c
+++ b/src/gs-prefs.c
@@ -173,6 +173,12 @@ _gs_prefs_set_idle_activation_enabled (GSPrefs *prefs,
}
static void
+_gs_prefs_set_saver_enabled (GSPrefs *prefs,
+ gboolean value) {
+ prefs->saver_enabled = value;
+}
+
+static void
_gs_prefs_set_lock_enabled (GSPrefs *prefs,
gboolean value) {
prefs->lock_enabled = value;
@@ -262,6 +268,11 @@ gs_prefs_load_from_settings (GSPrefs *prefs) {
_gs_prefs_set_idle_activation_enabled (prefs, bvalue);
bvalue = xfconf_channel_get_bool (prefs->priv->channel,
+ KEY_SAVER_ENABLED,
+ DEFAULT_KEY_SAVER_ENABLED);
+ _gs_prefs_set_saver_enabled (prefs, bvalue);
+
+ bvalue = xfconf_channel_get_bool (prefs->priv->channel,
KEY_LOCK_ENABLED,
DEFAULT_KEY_LOCK_ENABLED);
_gs_prefs_set_lock_enabled (prefs, bvalue);
@@ -370,6 +381,11 @@ key_changed_cb (XfconfChannel *channel,
enabled = xfconf_channel_get_bool (channel, property, DEFAULT_KEY_IDLE_ACTIVATION_ENABLED);
_gs_prefs_set_idle_activation_enabled (prefs, enabled);
+ } else if (strcmp (property, KEY_SAVER_ENABLED) == 0) {
+ gboolean enabled;
+
+ enabled = xfconf_channel_get_bool (channel, property, DEFAULT_KEY_SAVER_ENABLED);
+ _gs_prefs_set_saver_enabled (prefs, enabled);
} else if (strcmp (property, KEY_LOCK_ENABLED) == 0) {
gboolean enabled;
@@ -436,6 +452,7 @@ gs_prefs_init (GSPrefs *prefs) {
G_CALLBACK (key_changed_cb),
prefs);
+ prefs->saver_enabled = TRUE;
prefs->lock_enabled = TRUE;
prefs->idle_activation_enabled = TRUE;
prefs->lock_with_saver_enabled = TRUE;
diff --git a/src/gs-prefs.h b/src/gs-prefs.h
index 863b6e9..da9686f 100644
--- a/src/gs-prefs.h
+++ b/src/gs-prefs.h
@@ -38,6 +38,13 @@ G_BEGIN_DECLS
#define SETTINGS_XFCONF_CHANNEL "xfce4-screensaver"
/**
+ * Enable screensaver
+ * Set this to TRUE to globally enable screensavers.
+ */
+#define KEY_SAVER_ENABLED "/saver/enabled"
+#define DEFAULT_KEY_SAVER_ENABLED TRUE
+
+/**
* Screensaver theme selection mode
* The selection mode used by screensaver. May be "blank-only" to enable the screensaver
* without using any theme on activation, "single" to enable screensaver using only one
@@ -170,6 +177,7 @@ typedef struct
GSPrefsPrivate *priv;
+ guint saver_enabled : 1; /* global saver switch */
guint lock_enabled : 1; /* global lock switch */
guint idle_activation_enabled : 1; /* whether to activate when idle */
diff --git a/src/xfce4-screensaver-preferences.c b/src/xfce4-screensaver-preferences.c
index 5e44472..386feed 100644
--- a/src/xfce4-screensaver-preferences.c
+++ b/src/xfce4-screensaver-preferences.c
@@ -318,6 +318,27 @@ config_set_idle_activation_enabled (gboolean enabled) {
}
static gboolean
+config_get_saver_enabled (gboolean *is_writable) {
+ gboolean lock;
+
+ if (is_writable) {
+ *is_writable = !xfconf_channel_is_property_locked (screensaver_channel,
+ KEY_SAVER_ENABLED);
+ }
+
+ lock = xfconf_channel_get_bool (screensaver_channel,
+ KEY_SAVER_ENABLED,
+ DEFAULT_KEY_SAVER_ENABLED);
+
+ return lock;
+}
+
+static void
+config_set_saver_enabled (gboolean lock) {
+ xfconf_channel_set_bool (screensaver_channel, KEY_SAVER_ENABLED, lock);
+}
+
+static gboolean
config_get_lock_enabled (gboolean *is_writable) {
gboolean lock;
@@ -1088,6 +1109,16 @@ drag_data_received_cb (GtkWidget *widget,
}
static void
+saver_toggled_cb (GtkSwitch *widget, gpointer user_data) {
+ gboolean writable;
+
+ config_set_saver_enabled (gtk_switch_get_active (widget));
+
+ writable = gtk_switch_get_active (widget);
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "saver_grid")), writable);
+}
+
+static void
lock_toggled_cb (GtkSwitch *widget, gpointer user_data) {
gboolean writable;
@@ -1159,6 +1190,23 @@ keyboard_toggled_cb (GtkSwitch *widget, gpointer user_data) {
}
static void
+ui_set_saver_enabled (gboolean enabled) {
+ GtkWidget *widget;
+ gboolean active;
+ gboolean writable;
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "saver_enabled"));
+
+ active = gtk_switch_get_active (GTK_SWITCH (widget));
+ if (active != enabled) {
+ gtk_switch_set_active (GTK_SWITCH (widget), enabled);
+ }
+
+ writable = enabled;
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "saver_grid")), writable);
+}
+
+static void
ui_set_lock_enabled (gboolean enabled) {
GtkWidget *widget;
gboolean active;
@@ -1351,6 +1399,10 @@ key_changed_cb (XfconfChannel *channel, const gchar *key, gpointer data) {
gboolean enabled;
enabled = xfconf_channel_get_bool (channel, key, DEFAULT_KEY_IDLE_ACTIVATION_ENABLED);
ui_set_idle_activation_enabled (enabled);
+ } else if (strcmp (key, KEY_SAVER_ENABLED) == 0) {
+ gboolean enabled;
+ enabled = xfconf_channel_get_bool (channel, key, DEFAULT_KEY_SAVER_ENABLED);
+ ui_set_saver_enabled (enabled);
} else if (strcmp (key, KEY_LOCK_ENABLED) == 0) {
gboolean enabled;
enabled = xfconf_channel_get_bool (channel, key, DEFAULT_KEY_LOCK_ENABLED);
@@ -1860,6 +1912,14 @@ configure_capplet (void) {
g_signal_connect (widget, "notify::active",
G_CALLBACK (idle_activation_toggled_cb), NULL);
+ /* Saver enabled */
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "saver_enabled"));
+ enabled = config_get_saver_enabled (&is_writable);
+ ui_set_saver_enabled (enabled);
+ set_widget_writable (widget, is_writable);
+ g_signal_connect (widget, "notify::active",
+ G_CALLBACK (saver_toggled_cb), NULL);
+
/* Lock enabled */
widget = GTK_WIDGET (gtk_builder_get_object (builder, "lock_enabled"));
enabled = config_get_lock_enabled (&is_writable);
diff --git a/src/xfce4-screensaver-preferences.ui b/src/xfce4-screensaver-preferences.ui
index 80c32c0..d4eccfd 100644
--- a/src/xfce4-screensaver-preferences.ui
+++ b/src/xfce4-screensaver-preferences.ui
@@ -550,9 +550,8 @@ Simon Steinbeiß
</packing>
</child>
<child>
- <object class="GtkSwitch" id="saver_enable">
+ <object class="GtkSwitch" id="saver_enabled">
<property name="visible">True</property>
- <property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list