diff options
author | Christopher Davis <christopherdavis@gnome.org> | 2022-01-03 14:30:21 -0800 |
---|---|---|
committer | Christopher Davis <christopherdavis@gnome.org> | 2022-01-06 11:47:10 -0800 |
commit | 24fbb5e49ae691ecd508f106f4fbf188f1a9b808 (patch) | |
tree | c4692c5321917a52141235a74e3fef9c3cc77237 | |
parent | 0a5515463d797b9208eea312220dfc66b01606d2 (diff) | |
download | gnome-control-center-24fbb5e49ae691ecd508f106f4fbf188f1a9b808.tar.gz |
cc-datetime-panel: Use AdwComboRow
The API is nicer, and it's the recommended widget to use
for dropdown rows.
-rw-r--r-- | panels/datetime/cc-datetime-panel.c | 39 | ||||
-rw-r--r-- | panels/datetime/cc-datetime-panel.ui | 19 |
2 files changed, 34 insertions, 24 deletions
diff --git a/panels/datetime/cc-datetime-panel.c b/panels/datetime/cc-datetime-panel.c index 0524acb16..2d3414ecb 100644 --- a/panels/datetime/cc-datetime-panel.c +++ b/panels/datetime/cc-datetime-panel.c @@ -93,7 +93,7 @@ struct _CcDateTimePanel GtkWidget *datetime_dialog; GtkWidget *datetime_label; GtkWidget *day_spinbutton; - GtkWidget *format_combobox; + GtkWidget *timeformat_row; GtkWidget *h_spinbutton; GtkLockButton *lock_button; GtkLabel *month_label; @@ -178,22 +178,35 @@ cc_date_time_panel_get_help_uri (CcPanel *panel) static void clock_settings_changed_cb (CcDateTimePanel *panel, gchar *key); +static char * +format_clock_name_cb (AdwEnumListItem *item, + gpointer user_data) +{ + + switch (adw_enum_list_item_get_value (item)) + { + case G_DESKTOP_CLOCK_FORMAT_24H: + return g_strdup (_("24-hour")); + case G_DESKTOP_CLOCK_FORMAT_12H: + return g_strdup (_("AM / PM")); + default: + return NULL; + } +} + static void change_clock_settings (GObject *gobject, GParamSpec *pspec, CcDateTimePanel *self) { GDesktopClockFormat value; - const char *active_id; + AdwEnumListItem *item; g_signal_handlers_block_by_func (self->clock_settings, clock_settings_changed_cb, self); - active_id = gtk_combo_box_get_active_id (GTK_COMBO_BOX (self->format_combobox)); - if (!g_strcmp0 (active_id, "24h")) - value = G_DESKTOP_CLOCK_FORMAT_24H; - else - value = G_DESKTOP_CLOCK_FORMAT_12H; + item = ADW_ENUM_LIST_ITEM (adw_combo_row_get_selected_item (ADW_COMBO_ROW (self->timeformat_row))); + value = adw_enum_list_item_get_value (item); g_settings_set_enum (self->clock_settings, CLOCK_FORMAT_KEY, value); g_settings_set_enum (self->filechooser_settings, CLOCK_FORMAT_KEY, value); @@ -214,18 +227,15 @@ clock_settings_changed_cb (CcDateTimePanel *self, value = g_settings_get_enum (self->clock_settings, CLOCK_FORMAT_KEY); self->clock_format = value; - g_signal_handlers_block_by_func (self->format_combobox, change_clock_settings, self); + g_signal_handlers_block_by_func (self->timeformat_row, change_clock_settings, self); - if (value == G_DESKTOP_CLOCK_FORMAT_24H) - gtk_combo_box_set_active_id (GTK_COMBO_BOX (self->format_combobox), "24h"); - else - gtk_combo_box_set_active_id (GTK_COMBO_BOX (self->format_combobox), "12h"); + adw_combo_row_set_selected (ADW_COMBO_ROW (self->timeformat_row), value); cc_time_editor_set_am_pm (CC_TIME_EDITOR (self->time_editor), value == G_DESKTOP_CLOCK_FORMAT_12H); update_time (self); - g_signal_handlers_unblock_by_func (self->format_combobox, change_clock_settings, self); + g_signal_handlers_unblock_by_func (self->timeformat_row, change_clock_settings, self); } @@ -972,7 +982,7 @@ cc_date_time_panel_class_init (CcDateTimePanelClass *klass) gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, datetime_label); gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, day_row); gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, day_spinbutton); - gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, format_combobox); + gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, timeformat_row); gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, lock_button); gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, month_label); gtk_widget_class_bind_template_child (widget_class, CcDateTimePanel, month_popover); @@ -991,6 +1001,7 @@ cc_date_time_panel_class_init (CcDateTimePanelClass *klass) gtk_widget_class_bind_template_callback (widget_class, change_clock_settings); gtk_widget_class_bind_template_callback (widget_class, month_row_activated_cb); gtk_widget_class_bind_template_callback (widget_class, date_box_row_activated_cb); + gtk_widget_class_bind_template_callback (widget_class, format_clock_name_cb); bind_textdomain_codeset (GETTEXT_PACKAGE_TIMEZONES, "UTF-8"); diff --git a/panels/datetime/cc-datetime-panel.ui b/panels/datetime/cc-datetime-panel.ui index 4e5c07373..9497c0c12 100644 --- a/panels/datetime/cc-datetime-panel.ui +++ b/panels/datetime/cc-datetime-panel.ui @@ -366,19 +366,18 @@ <child> <object class="AdwPreferencesGroup"> <child> - <object class="AdwActionRow" id="timeformat_row"> + <object class="AdwComboRow" id="timeformat_row"> <property name="title" translatable="yes">Time _Format</property> <property name="use_underline">True</property> - <child> - <object class="GtkComboBoxText" id="format_combobox"> - <property name="valign">center</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> - </items> + <signal name="notify::selected-item" handler="change_clock_settings" object="CcDateTimePanel" swapped="no"/> + <property name="model"> + <object class="AdwEnumListModel"> + <property name="enum_type">GDesktopClockFormat</property> </object> - </child> + </property> + <property name="expression"> + <closure type="gchararray" function="format_clock_name_cb"/> + </property> </object> </child> </object> |