[gnome-control-center] lock: Use AdwComboRow for blank screen delay
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] lock: Use AdwComboRow for blank screen delay
- Date: Mon, 24 Jan 2022 21:38:03 +0000 (UTC)
commit 847f1ea584697ab760d387cdc3b449120da9d9cb
Author: Christopher Davis <christopherdavis gnome org>
Date: Fri Jan 21 15:38:49 2022 -0800
lock: Use AdwComboRow for blank screen delay
panels/lock/cc-lock-panel.c | 123 +++++++++++++++++++++----------------------
panels/lock/cc-lock-panel.h | 14 +++++
panels/lock/cc-lock-panel.ui | 70 ++++--------------------
3 files changed, 82 insertions(+), 125 deletions(-)
---
diff --git a/panels/lock/cc-lock-panel.c b/panels/lock/cc-lock-panel.c
index 4427a389d..c4b602a90 100644
--- a/panels/lock/cc-lock-panel.c
+++ b/panels/lock/cc-lock-panel.c
@@ -40,7 +40,7 @@ struct _CcLockPanel
GCancellable *cancellable;
GtkSwitch *automatic_screen_lock_switch;
- GtkComboBox *blank_screen_combo;
+ AdwComboRow *blank_screen_row;
AdwComboRow *lock_after_row;
GtkSwitch *show_notifications_switch;
GtkSwitch *usb_protection_switch;
@@ -114,79 +114,72 @@ set_lock_value_for_combo (AdwComboRow *combo_row,
adw_enum_list_model_find_position (model, value));
}
+static char *
+screen_delay_name_cb (AdwEnumListItem *item,
+ gpointer user_data)
+{
+
+ switch (adw_enum_list_item_get_value (item))
+ {
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_1_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "1 minute"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_2_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "2 minutes"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_3_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "3 minutes"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_4_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "4 minutes"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_5_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "5 minutes"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_8_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "8 minutes"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_10_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "10 minutes"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_12_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "12 minutes"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_15_MIN:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "15 minutes"));
+ case CC_LOCK_PANEL_BLANK_SCREEN_DELAY_NEVER:
+ /* Translators: Option for "Blank screen" in "Screen Lock" panel */
+ return g_strdup (C_("blank_screen", "Never"));
+ default:
+ return NULL;
+ }
+}
+
static void
set_blank_screen_delay_value (CcLockPanel *self,
gint value)
{
- g_autoptr(GtkTreeIter) insert = NULL;
- g_autofree gchar *text = NULL;
- GtkTreeIter iter;
- GtkTreeIter new;
- GtkTreeModel *model;
- gint value_tmp;
- gint value_last = 0;
- gboolean ret;
-
- /* get entry */
- model = gtk_combo_box_get_model (self->blank_screen_combo);
- ret = gtk_tree_model_get_iter_first (model, &iter);
- if (!ret)
- return;
-
- /* try to make the UI match the setting */
- do
- {
- gtk_tree_model_get (model,
- &iter,
- 1, &value_tmp,
- -1);
- if (value_tmp == value)
- {
- gtk_combo_box_set_active_iter (self->blank_screen_combo, &iter);
- return;
- }
-
- /* Insert before if the next value is larger or the value is lower
- * again (i.e. "Never" is zero and last). */
- if (!insert && (value_tmp > value || value_last > value_tmp))
- insert = gtk_tree_iter_copy (&iter);
-
- value_last = value_tmp;
- } while (gtk_tree_model_iter_next (model, &iter));
+ AdwEnumListModel *model;
- /* The value is not listed, so add it at the best point (or the end). */
- gtk_list_store_insert_before (GTK_LIST_STORE (model), &new, insert);
+ model = ADW_ENUM_LIST_MODEL (adw_combo_row_get_model (self->blank_screen_row));
- text = cc_util_time_to_string_text (value * 1000);
- gtk_list_store_set (GTK_LIST_STORE (model), &new,
- 0, text,
- 1, value,
- -1);
- gtk_combo_box_set_active_iter (self->blank_screen_combo, &new);
+ adw_combo_row_set_selected (self->blank_screen_row,
+ adw_enum_list_model_find_position (model, value));
}
static void
-on_blank_screen_delay_changed_cb (GtkWidget *widget,
+on_blank_screen_delay_changed_cb (AdwComboRow *combo_row,
+ GParamSpec *pspec,
CcLockPanel *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);
-
- /* set both keys */
- g_settings_set_uint (self->session_settings, "idle-delay", value);
+ AdwEnumListItem *item;
+ CcLockPanelBlankScreenDelay delay;
+
+ item = ADW_ENUM_LIST_ITEM (adw_combo_row_get_selected_item (combo_row));
+ delay = adw_enum_list_item_get_value (item);
+
+ g_settings_set_uint (self->session_settings, "idle-delay", delay);
}
static void
@@ -266,16 +259,18 @@ cc_lock_panel_class_init (CcLockPanelClass *klass)
oclass->finalize = cc_lock_panel_finalize;
g_type_ensure (CC_TYPE_LOCK_PANEL_LOCK_AFTER);
+ g_type_ensure (CC_TYPE_LOCK_PANEL_BLANK_SCREEN_DELAY);
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/control-center/lock/cc-lock-panel.ui");
gtk_widget_class_bind_template_child (widget_class, CcLockPanel, automatic_screen_lock_switch);
- gtk_widget_class_bind_template_child (widget_class, CcLockPanel, blank_screen_combo);
+ gtk_widget_class_bind_template_child (widget_class, CcLockPanel, blank_screen_row);
gtk_widget_class_bind_template_child (widget_class, CcLockPanel, lock_after_row);
gtk_widget_class_bind_template_child (widget_class, CcLockPanel, show_notifications_switch);
gtk_widget_class_bind_template_child (widget_class, CcLockPanel, usb_protection_switch);
gtk_widget_class_bind_template_child (widget_class, CcLockPanel, usb_protection_row);
+ gtk_widget_class_bind_template_callback (widget_class, screen_delay_name_cb);
gtk_widget_class_bind_template_callback (widget_class, on_blank_screen_delay_changed_cb);
gtk_widget_class_bind_template_callback (widget_class, lock_after_name_cb);
gtk_widget_class_bind_template_callback (widget_class, on_lock_combo_changed_cb);
diff --git a/panels/lock/cc-lock-panel.h b/panels/lock/cc-lock-panel.h
index 0737a914a..0174863d8 100644
--- a/panels/lock/cc-lock-panel.h
+++ b/panels/lock/cc-lock-panel.h
@@ -38,4 +38,18 @@ typedef enum {
CC_LOCK_PANEL_LOCK_AFTER_1_HR = 3600,
} CcLockPanelLockAfter;
+typedef enum {
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_1_MIN = 60,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_2_MIN = 120,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_3_MIN = 180,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_4_MIN = 240,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_5_MIN = 300,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_8_MIN = 480,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_10_MIN = 600,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_12_MIN = 720,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_15_MIN = 900,
+ CC_LOCK_PANEL_BLANK_SCREEN_DELAY_NEVER = 0,
+} CcLockPanelBlankScreenDelay;
+
+
G_END_DECLS
diff --git a/panels/lock/cc-lock-panel.ui b/panels/lock/cc-lock-panel.ui
index cf168ac5d..7581efd3f 100644
--- a/panels/lock/cc-lock-panel.ui
+++ b/panels/lock/cc-lock-panel.ui
@@ -9,21 +9,20 @@
<!-- Blank Screen Delay row -->
<child>
- <object class="AdwActionRow">
+ <object class="AdwComboRow" id="blank_screen_row">
<property name="title" translatable="yes">Blank Screen Delay</property>
<property name="subtitle" translatable="yes">Period of inactivity after which the screen
will go blank.</property>
<property name="subtitle-lines">2</property>
- <property name="activatable-widget">blank_screen_combo</property>
- <property name="sensitive" bind-source="blank_screen_combo" bind-property="sensitive"/>
<property name="use-underline">true</property>
- <child>
- <object class="GtkComboBoxText" id="blank_screen_combo">
- <property name="valign">center</property>
- <property name="entry_text_column">0</property>
- <property name="model">blank_screen_model</property>
- <signal name="changed" handler="on_blank_screen_delay_changed_cb" object="CcLockPanel"
swapped="no" />
+ <signal name="notify::selected-item" handler="on_blank_screen_delay_changed_cb"/>
+ <property name="model">
+ <object class="AdwEnumListModel">
+ <property name="enum-type">CcLockPanelBlankScreenDelay</property>
</object>
- </child>
+ </property>
+ <property name="expression">
+ <closure type="gchararray" function="screen_delay_name_cb"/>
+ </property>
</object>
</child>
@@ -99,55 +98,4 @@
</object>
</child>
</template>
-
- <object class="GtkListStore" id="blank_screen_model">
- <columns>
- <!-- column-name name -->
- <column type="gchararray"/>
- <!-- column-name value -->
- <column type="gint"/>
- </columns>
- <data>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">1 minute</col>
- <col id="1">60</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">2 minutes</col>
- <col id="1">120</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">3 minutes</col>
- <col id="1">180</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">4 minutes</col>
- <col id="1">240</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">5 minutes</col>
- <col id="1">300</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">8 minutes</col>
- <col id="1">480</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">10 minutes</col>
- <col id="1">600</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">12 minutes</col>
- <col id="1">720</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">15 minutes</col>
- <col id="1">900</col>
- </row>
- <row>
- <col id="0" translatable="yes" context="blank_screen" comments="Translators: Option for "Blank
screen" in "Power" panel.">Never</col>
- <col id="1">0</col>
- </row>
- </data>
- </object>
</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]