views/dazzling-month-view: Sketch timeline subscription

Right now it does nothing beyond reporting a range, but eventually
we'll populate this code.
This commit is contained in:
Georges Basile Stavracas Neto
2023-08-11 15:13:44 -03:00
parent 628d530ee5
commit d62bd1ae77
2 changed files with 57 additions and 0 deletions
+2
View File
@@ -233,6 +233,7 @@ maybe_add_subscribers_to_timeline (GcalWindow *self)
timeline = gcal_manager_get_timeline (gcal_context_get_manager (self->context));
gcal_timeline_add_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->week_view));
gcal_timeline_add_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->dazzling_month_view));
gcal_timeline_add_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->month_view));
gcal_timeline_add_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->agenda_view));
gcal_timeline_add_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->date_chooser));
@@ -833,6 +834,7 @@ gcal_window_dispose (GObject *object)
timeline = gcal_manager_get_timeline (gcal_context_get_manager (self->context));
gcal_timeline_remove_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->week_view));
gcal_timeline_remove_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->dazzling_month_view));
gcal_timeline_remove_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->month_view));
gcal_timeline_remove_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->agenda_view));
gcal_timeline_remove_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->date_chooser));
+55
View File
@@ -26,6 +26,7 @@
#include "gcal-dazzling-month-view.h"
#include "gcal-debug.h"
#include "gcal-month-view-row.h"
#include "gcal-timeline-subscriber.h"
#include "gcal-utils.h"
#include "gcal-view-private.h"
@@ -65,7 +66,11 @@ static void gcal_view_interface_init (GcalViewInterf
static void gtk_buildable_interface_init (GtkBuildableIface *iface);
static void gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface);
G_DEFINE_FINAL_TYPE_WITH_CODE (GcalDazzlingMonthView, gcal_dazzling_month_view, GTK_TYPE_WIDGET,
G_IMPLEMENT_INTERFACE (GCAL_TYPE_TIMELINE_SUBSCRIBER, gcal_timeline_subscriber_interface_init)
G_IMPLEMENT_INTERFACE (GCAL_TYPE_VIEW, gcal_view_interface_init)
G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, gtk_buildable_interface_init))
@@ -482,6 +487,54 @@ on_scroll_controller_decelerate_cb (GtkEventControllerScroll *scroll_controller,
}
/*
* GcalTimelineSubscriber iface
*/
static GcalRange*
gcal_dazzling_month_view_get_range (GcalTimelineSubscriber *subscriber)
{
g_autoptr (GcalRange) first_row_range = NULL;
g_autoptr (GcalRange) last_row_range = NULL;
GcalDazzlingMonthView *self;
self = GCAL_DAZZLING_MONTH_VIEW (subscriber);
first_row_range = gcal_month_view_row_get_range (g_ptr_array_index (self->week_rows, 0));
last_row_range = gcal_month_view_row_get_range (g_ptr_array_index (self->week_rows,
self->week_rows->len - 1));
return gcal_range_union (first_row_range, last_row_range);
}
static void
gcal_dazzling_month_view_add_event (GcalTimelineSubscriber *subscriber,
GcalEvent *event)
{
}
static void
gcal_dazzling_month_view_update_event (GcalTimelineSubscriber *subscriber,
GcalEvent *event)
{
}
static void
gcal_dazzling_month_view_remove_event (GcalTimelineSubscriber *subscriber,
GcalEvent *event)
{
}
static void
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
{
iface->get_range = gcal_dazzling_month_view_get_range;
iface->add_event = gcal_dazzling_month_view_add_event;
iface->update_event = gcal_dazzling_month_view_update_event;
iface->remove_event = gcal_dazzling_month_view_remove_event;
}
/*
* GcalView interface
*/
@@ -525,6 +578,8 @@ gcal_dazzling_month_view_set_date (GcalView *view,
update_header_labels (self);
update_week_ranges (self);
gcal_timeline_subscriber_range_changed (GCAL_TIMELINE_SUBSCRIBER (view));
GCAL_EXIT;
}