screen: Hook up screen locking
https://bugzilla.gnome.org/show_bug.cgi?id=637939
This commit is contained in:
parent
f2461603f3
commit
c09ecde3cf
2 changed files with 75 additions and 2 deletions
|
@ -77,7 +77,7 @@ dnl ==============================================
|
|||
|
||||
GLIB_REQUIRED_VERSION=2.25.11
|
||||
GTK_REQUIRED_VERSION=2.91.6
|
||||
DESKTOP_SCHEMAS_REQUIRED_VERSION=0.1.3
|
||||
DESKTOP_SCHEMAS_REQUIRED_VERSION=0.1.7
|
||||
PA_REQUIRED_VERSION=0.9.16
|
||||
CANBERRA_REQUIRED_VERSION=0.13
|
||||
GDKPIXBUF_REQUIRED_VERSION=2.23.0
|
||||
|
|
|
@ -112,6 +112,8 @@ on_lock_settings_changed (GSettings *settings,
|
|||
const char *key,
|
||||
CcScreenPanel *panel)
|
||||
{
|
||||
if (g_str_equal (key, "lock-delay") == FALSE)
|
||||
return;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -289,6 +291,28 @@ dpms_combo_changed_cb (GtkWidget *widget, CcScreenPanel *self)
|
|||
g_settings_set_int (self->priv->gsd_settings, "sleep-display-battery", value);
|
||||
}
|
||||
|
||||
static void
|
||||
lock_combo_changed_cb (GtkWidget *widget, CcScreenPanel *self)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model;
|
||||
gint value;
|
||||
gboolean ret;
|
||||
|
||||
/* no selection */
|
||||
ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX(widget), &iter);
|
||||
if (!ret)
|
||||
return;
|
||||
|
||||
/* get entry */
|
||||
model = gtk_combo_box_get_model (GTK_COMBO_BOX(widget));
|
||||
gtk_tree_model_get (model, &iter,
|
||||
1, &value,
|
||||
-1);
|
||||
|
||||
g_settings_set (self->priv->lock_settings, "lock-delay", "u", value);
|
||||
}
|
||||
|
||||
static void
|
||||
set_dpms_value_for_combo (GtkComboBox *combo_box, CcScreenPanel *self)
|
||||
{
|
||||
|
@ -319,6 +343,36 @@ set_dpms_value_for_combo (GtkComboBox *combo_box, CcScreenPanel *self)
|
|||
} while (gtk_tree_model_iter_next (model, &iter));
|
||||
}
|
||||
|
||||
static void
|
||||
set_lock_value_for_combo (GtkComboBox *combo_box, CcScreenPanel *self)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model;
|
||||
guint value;
|
||||
gint value_tmp;
|
||||
gboolean ret;
|
||||
|
||||
/* get entry */
|
||||
model = gtk_combo_box_get_model (combo_box);
|
||||
ret = gtk_tree_model_get_iter_first (model, &iter);
|
||||
if (!ret)
|
||||
return;
|
||||
|
||||
/* try to make the UI match the AC setting */
|
||||
g_settings_get (self->priv->lock_settings, "lock-delay", "u", &value);
|
||||
do
|
||||
{
|
||||
gtk_tree_model_get (model, &iter,
|
||||
1, &value_tmp,
|
||||
-1);
|
||||
if (value == value_tmp)
|
||||
{
|
||||
gtk_combo_box_set_active_iter (combo_box, &iter);
|
||||
break;
|
||||
}
|
||||
} while (gtk_tree_model_iter_next (model, &iter));
|
||||
}
|
||||
|
||||
static void
|
||||
cc_screen_panel_init (CcScreenPanel *self)
|
||||
{
|
||||
|
@ -354,7 +408,7 @@ cc_screen_panel_init (CcScreenPanel *self)
|
|||
got_power_proxy_cb,
|
||||
self);
|
||||
|
||||
self->priv->lock_settings = g_settings_new ("org.gnome.desktop.interface");
|
||||
self->priv->lock_settings = g_settings_new ("org.gnome.desktop.screensaver");
|
||||
g_signal_connect (self->priv->lock_settings,
|
||||
"changed",
|
||||
G_CALLBACK (on_lock_settings_changed),
|
||||
|
@ -375,6 +429,25 @@ cc_screen_panel_init (CcScreenPanel *self)
|
|||
G_CALLBACK (dpms_combo_changed_cb),
|
||||
self);
|
||||
|
||||
/* bind the screen lock checkbox */
|
||||
widget = WID ("screen_lock_on_switch");
|
||||
g_settings_bind (self->priv->lock_settings,
|
||||
"lock-enabled",
|
||||
widget, "active",
|
||||
G_SETTINGS_BIND_DEFAULT);
|
||||
|
||||
/* lock time */
|
||||
widget = WID ("screen_lock_combobox");
|
||||
set_lock_value_for_combo (GTK_COMBO_BOX (widget), self);
|
||||
g_signal_connect (widget, "changed",
|
||||
G_CALLBACK (lock_combo_changed_cb),
|
||||
self);
|
||||
|
||||
g_settings_bind (self->priv->lock_settings,
|
||||
"lock-enabled",
|
||||
widget, "sensitive",
|
||||
G_SETTINGS_BIND_GET);
|
||||
|
||||
widget = WID ("screen_vbox");
|
||||
gtk_widget_reparent (widget, (GtkWidget *) self);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue