From 9aa3497202db5724413878621f31c5add810ba06 Mon Sep 17 00:00:00 2001 From: Titouan Real Date: Sat, 9 Nov 2024 16:17:53 +0100 Subject: [PATCH] calendar-management: Use callbacks to apply changes --- .../gcal-edit-calendar-page.c | 64 +++++++++++++------ .../gcal-edit-calendar-page.ui | 18 +++--- 2 files changed, 53 insertions(+), 29 deletions(-) diff --git a/src/gui/calendar-management/gcal-edit-calendar-page.c b/src/gui/calendar-management/gcal-edit-calendar-page.c index 19b04f2e..80678154 100644 --- a/src/gui/calendar-management/gcal-edit-calendar-page.c +++ b/src/gui/calendar-management/gcal-edit-calendar-page.c @@ -211,29 +211,39 @@ setup_calendar (GcalEditCalendarPage *self, gtk_widget_set_visible (self->remove_group, e_source_get_removable (source)); } -static void -update_calendar (GcalEditCalendarPage *self) -{ - const GdkRGBA *color; - - GCAL_ENTRY; - - g_assert (self->calendar != NULL); - - color = gtk_color_dialog_button_get_rgba (self->calendar_color_button); - - gcal_calendar_set_visible (self->calendar, adw_switch_row_get_active (self->calendar_visible_row)); - gcal_calendar_set_name (self->calendar, gtk_editable_get_text (GTK_EDITABLE (self->name_entry))); - gcal_calendar_set_color (self->calendar, color); - - GCAL_EXIT; -} - - /* * Callbacks */ +static void +on_calendar_color_changed_cb (GtkColorDialogButton *button, + GParamSpec *pspec, + GcalEditCalendarPage *self) +{ + gcal_calendar_set_color (self->calendar, gtk_color_dialog_button_get_rgba (button)); +} + +static void +on_calendar_visibility_changed_cb (AdwSwitchRow *row, + GParamSpec *pspec, + GcalEditCalendarPage *self) +{ + gcal_calendar_set_visible (self->calendar, adw_switch_row_get_active (row)); +} + +static void +on_default_calendar_changed_cb (AdwSwitchRow *row, + GParamSpec *pspec, + GcalEditCalendarPage *self) +{ + GcalManager *manager; + + manager = gcal_context_get_manager (self->context); + + if (adw_switch_row_get_active (row)) + gcal_manager_set_default_calendar (manager, self->calendar); +} + static void on_remove_button_row_activated_cb (GtkButton *button, GcalEditCalendarPage *self) @@ -301,7 +311,7 @@ gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page) self = GCAL_EDIT_CALENDAR_PAGE (page); - update_calendar (self); + gcal_calendar_set_name (self->calendar, gtk_editable_get_text (GTK_EDITABLE (self->name_entry))); manager = gcal_context_get_manager (self->context); gcal_manager_save_source (manager, gcal_calendar_get_source (self->calendar)); @@ -323,6 +333,16 @@ gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *i * GObject overrides */ +static void +gcal_edit_calendar_page_dispose (GObject *object) +{ + GcalEditCalendarPage *self = GCAL_EDIT_CALENDAR_PAGE (object); + + gcal_calendar_set_name (self->calendar, gtk_editable_get_text (GTK_EDITABLE (self->name_entry))); + + G_OBJECT_CLASS (gcal_edit_calendar_page_parent_class)->dispose (object); +} + static void gcal_edit_calendar_page_finalize (GObject *object) { @@ -379,6 +399,7 @@ gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + object_class->dispose = gcal_edit_calendar_page_dispose; object_class->finalize = gcal_edit_calendar_page_finalize; object_class->get_property = gcal_edit_calendar_page_get_property; object_class->set_property = gcal_edit_calendar_page_set_property; @@ -394,6 +415,9 @@ gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass) gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, name_entry); gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, remove_group); + gtk_widget_class_bind_template_callback (widget_class, on_calendar_color_changed_cb); + gtk_widget_class_bind_template_callback (widget_class, on_calendar_visibility_changed_cb); + gtk_widget_class_bind_template_callback (widget_class, on_default_calendar_changed_cb); gtk_widget_class_bind_template_callback (widget_class, on_remove_button_row_activated_cb); gtk_widget_class_bind_template_callback (widget_class, on_settings_button_clicked_cb); } diff --git a/src/gui/calendar-management/gcal-edit-calendar-page.ui b/src/gui/calendar-management/gcal-edit-calendar-page.ui index 248392ad..4b724bb8 100644 --- a/src/gui/calendar-management/gcal-edit-calendar-page.ui +++ b/src/gui/calendar-management/gcal-edit-calendar-page.ui @@ -9,15 +9,13 @@ - False - False - - - - name_entry - - - + + + + name_entry + + + @@ -98,6 +96,7 @@ False + @@ -109,6 +108,7 @@ _Display Calendar true +