views/month: Read number of rows from setting
And react to changes. Helps: https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/1064 Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/856>
This commit is contained in:
committed by
Jean-François Fortin Tam
parent
4f9b8e5e4a
commit
9d97c5a9bd
@@ -1478,6 +1478,51 @@ on_month_popover_closed_cb (GcalMonthPopover *month_popover,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_settings_month_view_n_week_rows_changed_cb (GSettings *settings,
|
||||||
|
gchar *key,
|
||||||
|
GcalMonthView *self)
|
||||||
|
{
|
||||||
|
uint32_t old_rows_per_page = self->rows_per_page;
|
||||||
|
|
||||||
|
self->rows_per_page = g_settings_get_uint (settings, "month-view-n-week-rows");
|
||||||
|
g_assert (self->rows_per_page > 1 && self->rows_per_page <= 20);
|
||||||
|
|
||||||
|
if (self->rows_per_page > old_rows_per_page)
|
||||||
|
{
|
||||||
|
int new_rows = N_TOTAL_ROWS (self) - self->week_rows->len;
|
||||||
|
|
||||||
|
g_assert (new_rows > 0);
|
||||||
|
|
||||||
|
while (new_rows-- > 0)
|
||||||
|
{
|
||||||
|
GtkWidget *row = gcal_month_view_row_new (self->event_widget_pool);
|
||||||
|
g_signal_connect (row, "event-activated", G_CALLBACK (on_event_widget_activated_cb), self);
|
||||||
|
g_signal_connect (row, "cell-activated", G_CALLBACK (on_month_row_cell_activated_cb), self);
|
||||||
|
g_signal_connect (row, "show-overflow", G_CALLBACK (on_month_row_show_overflow_cb), self);
|
||||||
|
gtk_widget_insert_before (row, GTK_WIDGET (self), self->header);
|
||||||
|
g_ptr_array_add (self->week_rows, row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_ptr_array_set_size (self->week_rows, N_TOTAL_ROWS (self));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gtk_accessible_update_relation (GTK_ACCESSIBLE (self),
|
||||||
|
GTK_ACCESSIBLE_RELATION_COL_COUNT, GCAL_N_WEEKDAYS,
|
||||||
|
GTK_ACCESSIBLE_RELATION_ROW_COUNT, self->rows_per_page,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
update_weekday_labels (self);
|
||||||
|
redraw_month_view_rows (self);
|
||||||
|
update_week_ranges (self, self->date);
|
||||||
|
update_visible_rows (self);
|
||||||
|
|
||||||
|
gcal_timeline_subscriber_range_changed (GCAL_TIMELINE_SUBSCRIBER (self));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GcalTimelineSubscriber iface
|
* GcalTimelineSubscriber iface
|
||||||
@@ -2113,8 +2158,19 @@ gcal_month_view_init (GcalMonthView *self)
|
|||||||
{
|
{
|
||||||
GtkDropTarget *drop_target;
|
GtkDropTarget *drop_target;
|
||||||
g_autoptr (GDateTime) now = NULL;
|
g_autoptr (GDateTime) now = NULL;
|
||||||
|
GSettings *settings;
|
||||||
|
|
||||||
|
settings = gcal_context_get_settings (gcal_application_get_context (GCAL_DEFAULT_APPLICATION));
|
||||||
|
|
||||||
|
self->rows_per_page = g_settings_get_uint (settings, "month-view-n-week-rows");
|
||||||
|
g_assert (self->rows_per_page > 1 && self->rows_per_page <= 20);
|
||||||
|
|
||||||
|
g_signal_connect_object (settings,
|
||||||
|
"changed::month-view-n-week-rows",
|
||||||
|
G_CALLBACK (on_settings_month_view_n_week_rows_changed_cb),
|
||||||
|
self,
|
||||||
|
0);
|
||||||
|
|
||||||
self->rows_per_page = 5;
|
|
||||||
self->event_widget_pool = gcal_event_widget_pool_new ();
|
self->event_widget_pool = gcal_event_widget_pool_new ();
|
||||||
|
|
||||||
gtk_widget_init_template (GTK_WIDGET (self));
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
|
|||||||
Reference in New Issue
Block a user