[gnome-control-center] display: Refactor night light widget instantiation
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] display: Refactor night light widget instantiation
- Date: Wed, 9 Aug 2017 17:37:46 +0000 (UTC)
commit 9b0cf3391cbec376a21b763d5dd7ec746c05cfb5
Author: Rui Matos <tiagomatos gmail com>
Date: Thu Jul 27 18:21:53 2017 +0200
display: Refactor night light widget instantiation
We'll need multiple instances of this widget in the new panel
design. This makes it possible.
https://bugzilla.gnome.org/show_bug.cgi?id=785949
panels/display/cc-display-panel.c | 97 +++++++++++++++++++------------------
1 files changed, 50 insertions(+), 47 deletions(-)
---
diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c
index 10ce278..4647258 100644
--- a/panels/display/cc-display-panel.c
+++ b/panels/display/cc-display-panel.c
@@ -90,9 +90,8 @@ struct _CcDisplayPanelPrivate
GtkWidget *rotate_right_button;
GtkWidget *dialog;
GtkWidget *config_grid;
- GtkWidget *night_light_filter_label;
- CcNightLightDialog *night_light_dialog;
+ CcNightLightDialog *night_light_dialog;
GSettings *settings_color;
UpClient *up_client;
@@ -2749,22 +2748,61 @@ sensor_proxy_vanished_cb (GDBusConnection *connection,
}
static void
-night_light_enabled_recheck (CcDisplayPanel *self)
+night_light_sync_label (GtkWidget *label, GSettings *settings)
{
- CcDisplayPanelPrivate *priv = DISPLAY_PANEL_PRIVATE (self);
- gboolean ret = g_settings_get_boolean (priv->settings_color,
- "night-light-enabled");
- gtk_label_set_label (GTK_LABEL (priv->night_light_filter_label),
+ gboolean ret = g_settings_get_boolean (settings, "night-light-enabled");
+ gtk_label_set_label (GTK_LABEL (label),
/* TRANSLATORS: the state of the night light setting */
ret ? _("On") : _("Off"));
}
static void
-settings_color_changed_cb (GSettings *settings, gchar *key, gpointer user_data)
+settings_color_changed_cb (GSettings *settings, gchar *key, GtkWidget *label)
{
- CcDisplayPanel *self = CC_DISPLAY_PANEL (user_data);
if (g_strcmp0 (key, "night-light-enabled") == 0)
- night_light_enabled_recheck (self);
+ night_light_sync_label (label, settings);
+}
+
+static GtkWidget *
+make_night_light_widget (CcDisplayPanel *self)
+{
+ CcDisplayPanelPrivate *priv = DISPLAY_PANEL_PRIVATE (self);
+ GtkWidget *frame, *row, *box, *label;
+ GtkWidget *night_light_listbox;
+
+ frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+ night_light_listbox = gtk_list_box_new ();
+ gtk_list_box_set_selection_mode (GTK_LIST_BOX (night_light_listbox),
+ GTK_SELECTION_NONE);
+ gtk_container_add (GTK_CONTAINER (frame), night_light_listbox);
+ g_signal_connect (night_light_listbox, "row-activated",
+ G_CALLBACK (cc_display_panel_night_light_activated),
+ self);
+ row = gtk_list_box_row_new ();
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
+ gtk_container_add (GTK_CONTAINER (row), box);
+ gtk_container_add (GTK_CONTAINER (night_light_listbox), row);
+
+ label = gtk_label_new (_("_Night Light"));
+ gtk_widget_set_halign (label, GTK_ALIGN_START);
+ gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
+ gtk_widget_set_margin_start (label, 20);
+ gtk_widget_set_margin_end (label, 20);
+ gtk_widget_set_margin_top (label, 12);
+ gtk_widget_set_margin_bottom (label, 12);
+ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+
+ label = gtk_label_new ("");
+ gtk_widget_set_halign (label, GTK_ALIGN_END);
+ gtk_widget_set_margin_start (label, 24);
+ gtk_widget_set_margin_end (label, 24);
+ gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0);
+ g_signal_connect_object (priv->settings_color, "changed",
+ G_CALLBACK (settings_color_changed_cb), label, 0);
+ night_light_sync_label (label, priv->settings_color);
+
+ return frame;
}
static void
@@ -2849,10 +2887,6 @@ cc_display_panel_init (CcDisplayPanel *self)
{
CcDisplayPanelPrivate *priv;
GtkWidget *frame, *vbox;
- GtkListBoxRow *row;
- GtkWidget *box;
- GtkWidget *label;
- GtkWidget *night_light_listbox;
GSettings *settings;
g_resources_register (cc_display_get_resource ());
@@ -2874,6 +2908,7 @@ cc_display_panel_init (CcDisplayPanel *self)
priv->thumbnail_factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL);
priv->night_light_dialog = cc_night_light_dialog_new ();
+ priv->settings_color = g_settings_new ("org.gnome.settings-daemon.plugins.color");
output_ids = g_hash_table_new (g_direct_hash, g_direct_equal);
@@ -2906,35 +2941,8 @@ cc_display_panel_init (CcDisplayPanel *self)
gtk_container_add (GTK_CONTAINER (vbox), priv->arrange_button);
- /* night light section */
- frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
- night_light_listbox = gtk_list_box_new ();
- gtk_list_box_set_selection_mode (GTK_LIST_BOX (night_light_listbox),
- GTK_SELECTION_NONE);
- gtk_container_add (GTK_CONTAINER (frame), night_light_listbox);
- g_signal_connect (night_light_listbox, "row-activated",
- G_CALLBACK (cc_display_panel_night_light_activated),
- self);
- row = GTK_LIST_BOX_ROW (gtk_list_box_row_new ());
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
- gtk_container_add (GTK_CONTAINER (row), box);
- gtk_container_add (GTK_CONTAINER (night_light_listbox), GTK_WIDGET (row));
- label = gtk_label_new (_("_Night Light"));
- gtk_widget_set_halign (label, GTK_ALIGN_START);
- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
- gtk_widget_set_margin_start (label, 20);
- gtk_widget_set_margin_end (label, 20);
- gtk_widget_set_margin_top (label, 12);
- gtk_widget_set_margin_bottom (label, 12);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
- priv->night_light_filter_label = label = gtk_label_new ("");
- gtk_widget_set_halign (label, GTK_ALIGN_END);
- gtk_widget_set_margin_start (label, 24);
- gtk_widget_set_margin_end (label, 24);
- gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0);
- gtk_container_add (GTK_CONTAINER (vbox), frame);
+ gtk_container_add (GTK_CONTAINER (vbox), make_night_light_widget (self));
gtk_widget_show_all (vbox);
self->priv->up_client = up_client_new ();
@@ -2953,11 +2961,6 @@ cc_display_panel_init (CcDisplayPanel *self)
else
g_clear_object (&self->priv->up_client);
- priv->settings_color = g_settings_new ("org.gnome.settings-daemon.plugins.color");
- g_signal_connect (priv->settings_color, "changed",
- G_CALLBACK (settings_color_changed_cb), self);
- night_light_enabled_recheck (self);
-
g_signal_connect (self, "map", G_CALLBACK (mapped_cb), NULL);
self->priv->shell_cancellable = g_cancellable_new ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]