event-editor: Add attendees section and details page

UX/UI designed by Philipp Sauberzweig (@PhilippSauberz).

The event editor dialog is now a NavigationView and the participants
details open in a separate page. Group attendees/participants in
AdwPreferencesGroups and bind groups'
ListBox widgets to backing filter models. These are just "views" into a
single GListStore containing all the event attendees.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
This commit is contained in:
mindonwarp
2026-01-21 19:37:52 +00:00
committed by Marge Bot
parent 884855ee0b
commit ba3ca061ce
17 changed files with 1495 additions and 83 deletions
@@ -0,0 +1,81 @@
using Gtk 4.0;
using Adw 1;
template $GcalAttendeeDetailsPage: Adw.NavigationPage {
title: _("Participants");
child: Adw.ToolbarView {
[top]
Adw.HeaderBar {
show-end-title-buttons: false;
show-start-title-buttons: true;
}
content: Adw.PreferencesPage {
Adw.PreferencesGroup {
title: _("Accepted");
visible: bind template.model-accepted as <Gtk.FilterListModel>.n-items;
ListBox list_accepted {
selection-mode: none;
styles [
"boxed-list",
]
}
}
Adw.PreferencesGroup {
title: _("Tentative");
visible: bind template.model-tentative as <Gtk.FilterListModel>.n-items;
ListBox list_tentative {
selection-mode: none;
styles [
"boxed-list",
]
}
}
Adw.PreferencesGroup {
title: _("Declined");
visible: bind template.model-declined as <Gtk.FilterListModel>.n-items;
ListBox list_declined {
selection-mode: none;
styles [
"boxed-list",
]
}
}
Adw.PreferencesGroup {
title: _("Delegated");
visible: bind template.model-delegated as <Gtk.FilterListModel>.n-items;
ListBox list_delegated {
selection-mode: none;
styles [
"boxed-list",
]
}
}
Adw.PreferencesGroup {
title: _("Not responded");
visible: bind template.model-not-responded as <Gtk.FilterListModel>.n-items;
ListBox list_not_responded {
selection-mode: none;
styles [
"boxed-list",
]
}
}
};
};
}