calendar-management: Use callbacks to apply changes
This commit is contained in:
@@ -211,29 +211,39 @@ setup_calendar (GcalEditCalendarPage *self,
|
|||||||
gtk_widget_set_visible (self->remove_group, e_source_get_removable (source));
|
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
|
* 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
|
static void
|
||||||
on_remove_button_row_activated_cb (GtkButton *button,
|
on_remove_button_row_activated_cb (GtkButton *button,
|
||||||
GcalEditCalendarPage *self)
|
GcalEditCalendarPage *self)
|
||||||
@@ -301,7 +311,7 @@ gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page)
|
|||||||
|
|
||||||
self = GCAL_EDIT_CALENDAR_PAGE (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);
|
manager = gcal_context_get_manager (self->context);
|
||||||
gcal_manager_save_source (manager, gcal_calendar_get_source (self->calendar));
|
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
|
* 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
|
static void
|
||||||
gcal_edit_calendar_page_finalize (GObject *object)
|
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);
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
GtkWidgetClass *widget_class = GTK_WIDGET_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->finalize = gcal_edit_calendar_page_finalize;
|
||||||
object_class->get_property = gcal_edit_calendar_page_get_property;
|
object_class->get_property = gcal_edit_calendar_page_get_property;
|
||||||
object_class->set_property = gcal_edit_calendar_page_set_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, name_entry);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalEditCalendarPage, remove_group);
|
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_remove_button_row_activated_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, on_settings_button_clicked_cb);
|
gtk_widget_class_bind_template_callback (widget_class, on_settings_button_clicked_cb);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
|
|
||||||
<child type="top">
|
<child type="top">
|
||||||
<object class="AdwHeaderBar">
|
<object class="AdwHeaderBar">
|
||||||
<property name="show-end-title-buttons">False</property>
|
|
||||||
<property name="show-start-title-buttons">False</property>
|
|
||||||
<property name="title-widget">
|
<property name="title-widget">
|
||||||
<object class="AdwWindowTitle">
|
<object class="AdwWindowTitle">
|
||||||
<binding name="title">
|
<binding name="title">
|
||||||
@@ -98,6 +96,7 @@
|
|||||||
<property name="with-alpha">False</property>
|
<property name="with-alpha">False</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<signal name="notify::rgba" handler="on_calendar_color_changed_cb" object="GcalEditCalendarPage" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
@@ -109,6 +108,7 @@
|
|||||||
<object class="AdwSwitchRow" id="calendar_visible_row">
|
<object class="AdwSwitchRow" id="calendar_visible_row">
|
||||||
<property name="title" translatable="yes">_Display Calendar</property>
|
<property name="title" translatable="yes">_Display Calendar</property>
|
||||||
<property name="use-underline">true</property>
|
<property name="use-underline">true</property>
|
||||||
|
<signal name="notify::active" handler="on_calendar_visibility_changed_cb" object="GcalEditCalendarPage" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user