calendar-management: Use callbacks to apply changes

This commit is contained in:
Titouan Real
2025-05-24 16:39:59 +02:00
parent 766369dd48
commit 9aa3497202
2 changed files with 53 additions and 29 deletions
@@ -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);
}
@@ -9,15 +9,13 @@
<child type="top">
<object class="AdwHeaderBar">
<property name="show-end-title-buttons">False</property>
<property name="show-start-title-buttons">False</property>
<property name="title-widget">
<object class="AdwWindowTitle">
<binding name="title">
<lookup type="GtkEditable" name="text">name_entry</lookup>
</binding>
</object>
</property>
<property name="title-widget">
<object class="AdwWindowTitle">
<binding name="title">
<lookup type="GtkEditable" name="text">name_entry</lookup>
</binding>
</object>
</property>
</object>
</child>
@@ -98,6 +96,7 @@
<property name="with-alpha">False</property>
</object>
</property>
<signal name="notify::rgba" handler="on_calendar_color_changed_cb" object="GcalEditCalendarPage" swapped="no"/>
</object>
</child>
@@ -109,6 +108,7 @@
<object class="AdwSwitchRow" id="calendar_visible_row">
<property name="title" translatable="yes">_Display Calendar</property>
<property name="use-underline">true</property>
<signal name="notify::active" handler="on_calendar_visibility_changed_cb" object="GcalEditCalendarPage" swapped="no"/>
</object>
</child>