summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2018-05-30 09:30:49 +1200
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2018-06-01 20:35:30 +0000
commitdd61d98ec50604925cf1f00545899c090f87e2a9 (patch)
treea6e9b4cf9ea1f7d3def426801659acce8242c064
parentc461e436b773d2fef694c505b8a7debd1ac39b42 (diff)
downloadgnome-control-center-dd61d98ec50604925cf1f00545899c090f87e2a9.tar.gz
datetime: Move callbacks into .ui file
-rw-r--r--panels/datetime/cc-datetime-panel.c131
-rw-r--r--panels/datetime/datetime.ui13
2 files changed, 63 insertions, 81 deletions
diff --git a/panels/datetime/cc-datetime-panel.c b/panels/datetime/cc-datetime-panel.c
index ef3134f1f..880490a81 100644
--- a/panels/datetime/cc-datetime-panel.c
+++ b/panels/datetime/cc-datetime-panel.c
@@ -113,7 +113,6 @@ struct _CcDateTimePanel
GtkWidget *timezone_label;
GtkWidget *timezone_searchentry;
GtkWidget *year_spinbutton;
- gulong am_pm_visiblity_changed_id;
GnomeWallClock *clock_tracker;
@@ -141,13 +140,6 @@ cc_date_time_panel_dispose (GObject *object)
g_clear_object (&panel->cancellable);
}
- if (panel->am_pm_visiblity_changed_id != 0)
- {
- g_signal_handler_disconnect (panel->am_pm_stack,
- panel->am_pm_visiblity_changed_id);
- panel->am_pm_visiblity_changed_id = 0;
- }
-
if (panel->toplevels)
{
g_list_free_full (panel->toplevels, (GDestroyNotify) gtk_widget_destroy);
@@ -184,48 +176,6 @@ cc_date_time_panel_get_help_uri (CcPanel *panel)
return "help:gnome-help/clock";
}
-static void
-cc_date_time_panel_class_init (CcDateTimePanelClass *klass)
-{
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
-
- object_class->dispose = cc_date_time_panel_dispose;
-
- panel_class->get_permission = cc_date_time_panel_get_permission;
- panel_class->get_help_uri = cc_date_time_panel_get_help_uri;
-
- gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/datetime/datetime.ui");
-
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, am_pm_button);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, am_pm_stack);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, aspectmap);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, auto_datetime_row);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, auto_timezone_row);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, auto_timezone_switch);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, city_liststore);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, city_modelsort);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, datetime_button);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, datetime_dialog);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, datetime_label);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, format_combobox);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, h_spinbutton);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, listbox1);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, listbox2);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, m_spinbutton);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, month_liststore);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, network_time_switch);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, time_box);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, time_grid);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timezone_button);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timezone_dialog);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timezone_label);
- gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timezone_searchentry);
-
- bind_textdomain_codeset (GETTEXT_PACKAGE_TIMEZONES, "UTF-8");
-}
-
static void clock_settings_changed_cb (GSettings *settings,
gchar *key,
CcDateTimePanel *panel);
@@ -965,12 +915,6 @@ setup_listbox (CcDateTimePanel *self,
GtkWidget *listbox)
{
gtk_list_box_set_header_func (GTK_LIST_BOX (listbox), cc_list_box_update_header_func, NULL, NULL);
- g_signal_connect (listbox, "row-activated",
- G_CALLBACK (list_box_row_activated), self);
-
- g_signal_connect (listbox, "keynav-failed",
- G_CALLBACK (keynav_failed), self);
-
self->listboxes = g_list_append (self->listboxes, listbox);
self->listboxes_reverse = g_list_prepend (self->listboxes_reverse, listbox);
}
@@ -1027,9 +971,6 @@ setup_timezone_dialog (CcDateTimePanel *self)
gtk_container_add (GTK_CONTAINER (self->aspectmap),
self->map);
- g_signal_connect (self->timezone_dialog, "delete-event",
- G_CALLBACK (gtk_widget_hide_on_delete), NULL);
-
/* Create the completion object */
completion = gtk_entry_completion_new ();
gtk_entry_set_completion (GTK_ENTRY (self->timezone_searchentry), completion);
@@ -1076,15 +1017,8 @@ setup_am_pm_button (CcDateTimePanel *self)
gtk_container_add (GTK_CONTAINER (self->am_pm_stack), self->am_label);
gtk_container_add (GTK_CONTAINER (self->am_pm_stack), self->pm_label);
gtk_widget_show_all (self->am_pm_stack);
- self->am_pm_visiblity_changed_id = g_signal_connect_swapped (self->am_pm_stack,
- "notify::visible-child",
- G_CALLBACK (am_pm_stack_visible_child_changed_cb),
- self);
am_pm_stack_visible_child_changed_cb (self);
- g_signal_connect (self->am_pm_button, "clicked",
- G_CALLBACK (am_pm_button_clicked), self);
-
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
".gnome-control-center-ampm-toggle-button {\n"
@@ -1121,9 +1055,6 @@ setup_datetime_dialog (CcDateTimePanel *self)
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
- g_signal_connect (self->datetime_dialog, "delete-event",
- G_CALLBACK (gtk_widget_hide_on_delete), NULL);
-
/* Force the direction for the time, so that the time
* is presented correctly for RTL languages */
gtk_widget_set_direction (self->time_grid, GTK_TEXT_DIR_LTR);
@@ -1154,21 +1085,62 @@ setup_datetime_dialog (CcDateTimePanel *self)
G_CALLBACK (month_year_changed), self);
/* Hours and minutes */
- g_signal_connect (self->h_spinbutton, "output",
- G_CALLBACK (format_hours_combobox), self);
- g_signal_connect (self->m_spinbutton, "output",
- G_CALLBACK (format_minutes_combobox), self);
-
gtk_spin_button_set_increments (GTK_SPIN_BUTTON (self->h_spinbutton), 1, 0);
gtk_spin_button_set_increments (GTK_SPIN_BUTTON (self->m_spinbutton), 1, 0);
gtk_spin_button_set_range (GTK_SPIN_BUTTON (self->h_spinbutton), 0, 23);
gtk_spin_button_set_range (GTK_SPIN_BUTTON (self->m_spinbutton), 0, 59);
+}
+
+static void
+cc_date_time_panel_class_init (CcDateTimePanelClass *klass)
+{
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
- g_signal_connect_swapped (self->h_spinbutton, "value-changed",
- G_CALLBACK (change_time), self);
- g_signal_connect_swapped (self->m_spinbutton, "value-changed",
- G_CALLBACK (change_time), self);
+ object_class->dispose = cc_date_time_panel_dispose;
+
+ panel_class->get_permission = cc_date_time_panel_get_permission;
+ panel_class->get_help_uri = cc_date_time_panel_get_help_uri;
+
+ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/datetime/datetime.ui");
+
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, am_pm_button);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, am_pm_stack);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, aspectmap);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, auto_datetime_row);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, auto_timezone_row);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, auto_timezone_switch);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, city_liststore);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, city_modelsort);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, datetime_button);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, datetime_dialog);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, datetime_label);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, format_combobox);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, h_spinbutton);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, listbox1);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, listbox2);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, m_spinbutton);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, month_liststore);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, network_time_switch);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, time_box);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, time_grid);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timezone_button);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timezone_dialog);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timezone_label);
+ gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timezone_searchentry);
+
+ gtk_widget_class_bind_template_callback (widget_class, list_box_row_activated);
+ gtk_widget_class_bind_template_callback (widget_class, keynav_failed);
+ gtk_widget_class_bind_template_callback (widget_class, am_pm_button_clicked);
+ gtk_widget_class_bind_template_callback (widget_class, format_hours_combobox);
+ gtk_widget_class_bind_template_callback (widget_class, format_minutes_combobox);
+ gtk_widget_class_bind_template_callback (widget_class, change_time);
+ gtk_widget_class_bind_template_callback (widget_class, change_clock_settings);
+ gtk_widget_class_bind_template_callback (widget_class, am_pm_stack_visible_child_changed_cb);
+
+ bind_textdomain_codeset (GETTEXT_PACKAGE_TIMEZONES, "UTF-8");
}
static void
@@ -1285,9 +1257,6 @@ cc_date_time_panel_init (CcDateTimePanel *self)
g_signal_connect (self->clock_settings, "changed::" CLOCK_FORMAT_KEY,
G_CALLBACK (clock_settings_changed_cb), self);
- g_signal_connect (self->format_combobox, "notify::active-id",
- G_CALLBACK (change_clock_settings), self);
-
update_time (self);
load_regions_model (GTK_LIST_STORE (self->city_liststore));
diff --git a/panels/datetime/datetime.ui b/panels/datetime/datetime.ui
index 0488e7851..5213a808b 100644
--- a/panels/datetime/datetime.ui
+++ b/panels/datetime/datetime.ui
@@ -62,6 +62,7 @@
<property name="resizable">False</property>
<property name="type_hint">dialog</property>
<property name="use_header_bar">1</property>
+ <signal name="delete-event" handler="gtk_widget_hide_on_delete"/>
<child internal-child="vbox">
<object class="GtkBox" id="dialog_vbox2">
<property name="can_focus">False</property>
@@ -101,6 +102,8 @@
<property name="orientation">vertical</property>
<property name="numeric">True</property>
<property name="wrap">True</property>
+ <signal name="output" handler="format_hours_combobox" object="CcDateTimePanel" swapped="no"/>
+ <signal name="value-changed" handler="change_time" object="CcDateTimePanel" swapped="yes"/>
<child internal-child="accessible">
<object class="AtkObject" id="h_spinbutton-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Hour</property>
@@ -138,6 +141,8 @@
<property name="orientation">vertical</property>
<property name="numeric">True</property>
<property name="wrap">True</property>
+ <signal name="output" handler="format_minutes_combobox" object="CcDateTimePanel" swapped="no"/>
+ <signal name="value-changed" handler="change_time" object="CcDateTimePanel" swapped="yes"/>
<child internal-child="accessible">
<object class="AtkObject" id="m_spinbutton-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Minute</property>
@@ -164,6 +169,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
+ <signal name="clicked" handler="am_pm_button_clicked" object="CcDateTimePanel" swapped="no"/>
<style>
<class name="gnome-control-center-ampm-toggle-button"/>
</style>
@@ -171,6 +177,7 @@
<object class="GtkStack" id="am_pm_stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <signal name="notify::visible-child" handler="am_pm_stack_visible_child_changed_cb" object="CcDateTimePanel" swapped="yes"/>
<child>
<placeholder/>
</child>
@@ -209,6 +216,7 @@
<property name="resizable">False</property>
<property name="type_hint">dialog</property>
<property name="use_header_bar">1</property>
+ <signal name="delete-event" handler="gtk_widget_hide_on_delete"/>
<child internal-child="headerbar">
<object class="GtkHeaderBar" id="dialog_header_bar">
<property name="visible">True</property>
@@ -281,6 +289,8 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="selection_mode">none</property>
+ <signal name="row-activated" handler="list_box_row_activated" object="CcDateTimePanel" swapped="no"/>
+ <signal name="keynav-failed" handler="keynav_failed" object="CcDateTimePanel" swapped="no"/>
<child>
<object class="GtkListBoxRow" id="auto_datetime_row">
<property name="visible">True</property>
@@ -553,6 +563,8 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="selection_mode">none</property>
+ <signal name="row-activated" handler="list_box_row_activated" object="CcDateTimePanel" swapped="no"/>
+ <signal name="keynav-failed" handler="keynav_failed" object="CcDateTimePanel" swapped="no"/>
<child>
<object class="GtkListBoxRow" id="timeformat_row">
<property name="visible">True</property>
@@ -588,6 +600,7 @@
<property name="valign">center</property>
<property name="margin_start">20</property>
<property name="margin_end">20</property>
+ <signal name="notify::active-id" handler="change_clock_settings" object="CcDateTimePanel" swapped="no"/>
<items>
<item id="24h" translatable="yes">24-hour</item>
<item id="12h" translatable="yes">AM / PM</item>