When the user deletes a calendar in the calendar management dialog, a popover allows them to undo the deletion. The calendar is fully deleted only when the toast is dismissed or when the toast reaches its timeout. When the user closes the calendar management dialog without dismissing the toast and before the end of the timeout, the calendar can still be manipulated for a short period of time. To fix this, I removed the calendar-management-dialog from the UI of the window, and made the window create and destroy the dialog on demand. This forces the toast overlay to dismiss all toasts.
383 lines
18 KiB
XML
383 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<interface>
|
|
<template class="GcalWindow" parent="AdwApplicationWindow">
|
|
<property name="title" translatable="yes">Calendar</property>
|
|
<property name="default_width">800</property>
|
|
<property name="default_height">600</property>
|
|
<property name="width_request">360</property>
|
|
<property name="height_request">600</property>
|
|
|
|
<!-- Shortcuts -->
|
|
<child>
|
|
<object class="GtkShortcutController">
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>t</property>
|
|
<property name="action">action(win.today)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Alt>Down</property>
|
|
<property name="action">action(win.today)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger">Home</property>
|
|
<property name="action">action(win.today)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Alt>Left</property>
|
|
<property name="action">action(win.previous-date)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger">Page_Up</property>
|
|
<property name="action">action(win.previous-date)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Alt>Right</property>
|
|
<property name="action">action(win.next-date)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger">Page_Down</property>
|
|
<property name="action">action(win.next-date)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>Page_Down</property>
|
|
<property name="action">action(win.change-view)</property>
|
|
<property name="arguments">-1</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>Page_Up</property>
|
|
<property name="action">action(win.change-view)</property>
|
|
<property name="arguments">-2</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Alt>1</property>
|
|
<property name="action">action(win.change-view)</property>
|
|
<property name="arguments">0</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Alt>2</property>
|
|
<property name="action">action(win.change-view)</property>
|
|
<property name="arguments">1</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Ctrl>n</property>
|
|
<property name="action">action(win.new-event)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>q</property>
|
|
<property name="action">action(app.quit)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Ctrl><Alt>m</property>
|
|
<property name="action">action(win.show-calendars)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Ctrl>r</property>
|
|
<property name="action">action(app.sync)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger">F5</property>
|
|
<property name="action">action(app.sync)</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
<!-- Main Overlay -->
|
|
<child>
|
|
<object class="AdwToastOverlay" id="overlay">
|
|
<child>
|
|
<object class="GcalDropOverlay" id="drop_overlay">
|
|
<property name="overlayed">
|
|
<object class="AdwStatusPage" id="drop_status_page">
|
|
<property name="title" translatable="yes">Drop Event Files to Import</property>
|
|
<property name="icon-name">calendar-month-symbolic</property>
|
|
<style>
|
|
<class name="drop-overlay-area"/>
|
|
<class name="compact"/>
|
|
</style>
|
|
</object>
|
|
</property>
|
|
<property name="child">
|
|
<object class="AdwNavigationSplitView" id="split_view">
|
|
<child>
|
|
<object class="GtkDropTarget" id="drop_target">
|
|
<property name="actions">copy</property>
|
|
<property name="propagation-phase">capture</property>
|
|
<signal name="accept" handler="on_drop_target_accept_cb" object="GcalWindow" swapped="no"/>
|
|
<signal name="drop" handler="on_drop_target_drop_cb" object="GcalWindow" swapped="no"/>
|
|
</object>
|
|
</child>
|
|
<style>
|
|
<class name="drop-target"/>
|
|
</style>
|
|
<!-- Sidebar -->
|
|
<property name="sidebar">
|
|
<object class="AdwNavigationPage">
|
|
<property name="title" translatable="yes">Calendar</property>
|
|
<property name="child">
|
|
<object class="AdwToolbarView">
|
|
<child type="top">
|
|
<object class="GtkBox">
|
|
<property name="orientation">vertical</property>
|
|
|
|
<child>
|
|
<object class="AdwHeaderBar">
|
|
<child type="start">
|
|
<object class="GcalSyncIndicator" id="sync_indicator" />
|
|
</child>
|
|
<property name="title-widget">
|
|
<object class="GcalCalendarButton" id="calendars_button" />
|
|
</property>
|
|
<child type="end">
|
|
<object class="GtkMenuButton" id="menu_button">
|
|
<property name="icon-name">open-menu-symbolic</property>
|
|
<property name="popover">win_menu</property>
|
|
<property name="tooltip-text" translatable="yes">Main Menu</property>
|
|
<property name="primary">True</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GcalDateChooser" id="date_chooser">
|
|
<property name="split-month-year">False</property>
|
|
<property name="vexpand">False</property>
|
|
<property name="active-date" bind-source="GcalWindow" bind-property="active-date" bind-flags="bidirectional"/>
|
|
<signal name="day-selected" handler="day_selected" object="GcalWindow" swapped="yes"/>
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
|
|
</child>
|
|
|
|
<property name="content">
|
|
<object class="GcalAgendaView" id="agenda_view">
|
|
<property name="vexpand">True</property>
|
|
<property name="active-date" bind-source="GcalWindow" bind-property="active-date" bind-flags="bidirectional"/>
|
|
<signal name="create-event" handler="show_new_event_widget" object="GcalWindow" swapped="no"/>
|
|
<signal name="event-activated" handler="event_activated" object="GcalWindow" swapped="no"/>
|
|
</object>
|
|
</property>
|
|
|
|
<child type="bottom">
|
|
<object class="GtkActionBar" id="action_bar">
|
|
<property name="revealed">False</property>
|
|
<child type="start">
|
|
<object class="GtkButton">
|
|
<property name="action-name">win.today</property>
|
|
<property name="child">
|
|
<object class="AdwButtonContent">
|
|
<property name="label" translatable="yes">_Today</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="icon-name">calendar-today-symbolic</property>
|
|
<property name="can-shrink">True</property>
|
|
<property name="tooltip-text" translatable="yes">Go to Today</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child type="end">
|
|
<object class="GcalToolbarEnd" id="sidebar_toolbar_end"/>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
|
|
<!-- Main content -->
|
|
<property name="content">
|
|
<object class="AdwNavigationPage" id="content_page">
|
|
<binding name="title">
|
|
<closure type="gchararray" function="content_title">
|
|
<lookup type="GcalWindow" name="active-view"/>
|
|
</closure>
|
|
</binding>
|
|
<property name="child">
|
|
<object class="AdwToolbarView">
|
|
<style>
|
|
<class name="view" />
|
|
</style>
|
|
|
|
<child type="top">
|
|
<object class="AdwHeaderBar" id="header_bar">
|
|
<child>
|
|
<object class="GtkButton">
|
|
<property name="action-name">win.today</property>
|
|
<property name="child">
|
|
<object class="AdwButtonContent">
|
|
<property name="label" translatable="yes">_Today</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="icon-name">calendar-today-symbolic</property>
|
|
<property name="can-shrink">True</property>
|
|
<property name="tooltip-text" translatable="yes">Go to Today</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child type="title">
|
|
<object class="AdwViewSwitcher" id="views_switcher">
|
|
<property name="stack">views_stack</property>
|
|
<property name="policy">wide</property>
|
|
</object>
|
|
</child>
|
|
<child type="end">
|
|
<object class="GcalToolbarEnd" id="toolbar_end" />
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
|
|
<property name="content">
|
|
<object class="GtkBox" id="main_box">
|
|
<property name="hexpand">True</property>
|
|
<property name="vexpand">True</property>
|
|
<property name="orientation">vertical</property>
|
|
<child>
|
|
<object class="AdwViewStack" id="views_stack">
|
|
<property name="hexpand">True</property>
|
|
<property name="vexpand">True</property>
|
|
<signal name="notify::visible-child" handler="view_changed" object="GcalWindow" swapped="no"/>
|
|
<style>
|
|
<class name="view"/>
|
|
</style>
|
|
<child>
|
|
<object class="AdwViewStackPage">
|
|
<property name="name">week</property>
|
|
<property name="title" translatable="yes">_Week</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="icon_name">calendar-week-symbolic</property>
|
|
<property name="child">
|
|
<object class="GcalWeekView" id="week_view">
|
|
<property name="active-date" bind-source="GcalWindow" bind-property="active-date" bind-flags="bidirectional"/>
|
|
<signal name="create-event" handler="show_new_event_widget" object="GcalWindow" swapped="no"/>
|
|
<signal name="event-activated" handler="event_activated" object="GcalWindow" swapped="no"/>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwViewStackPage">
|
|
<property name="name">month</property>
|
|
<property name="title" translatable="yes">_Month</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="icon_name">calendar-month-symbolic</property>
|
|
<property name="child">
|
|
<object class="GcalMonthView" id="month_view">
|
|
<property name="active-date" bind-source="GcalWindow" bind-property="active-date" bind-flags="bidirectional"/>
|
|
<signal name="create-event" handler="show_new_event_widget" object="GcalWindow" swapped="no"/>
|
|
<signal name="create-event-detailed" handler="create_event_detailed_cb" object="GcalWindow" swapped="no"/>
|
|
<signal name="event-activated" handler="event_activated" object="GcalWindow" swapped="no"/>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="AdwBreakpoint">
|
|
<condition>max-width: 700sp</condition>
|
|
<setter object="split_view" property="collapsed">True</setter>
|
|
<setter object="action_bar" property="revealed">True</setter>
|
|
<!-- This needs to be set so that focus does not stay in the content pane when folding. -->
|
|
<setter object="content_page" property="sensitive">False</setter>
|
|
</object>
|
|
</child>
|
|
</template>
|
|
<object class="GcalQuickAddPopover" id="quick_add_popover">
|
|
<signal name="edit-event" handler="edit_event" object="GcalWindow" swapped="no"/>
|
|
<signal name="closed" handler="close_new_event_widget" object="GcalWindow" swapped="no"/>
|
|
</object>
|
|
|
|
<object class="GcalEventEditorDialog" id="event_editor">
|
|
<signal name="remove-event" handler="on_event_editor_dialog_remove_event_cb" object="GcalWindow" swapped="no"/>
|
|
</object>
|
|
|
|
<menu id='menu'>
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_Date & Time Settings…</attribute>
|
|
<attribute name="action">win.open-date-time-settings</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_Online Accounts…</attribute>
|
|
<attribute name="action">win.open-online-accounts</attribute>
|
|
</item>
|
|
<submenu>
|
|
<attribute name="label" translatable="yes">Weather</attribute>
|
|
<item>
|
|
<attribute name="custom">weather</attribute>
|
|
</item>
|
|
</submenu>
|
|
</section>
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
|
|
<attribute name="action">win.show-help-overlay</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_About Calendar</attribute>
|
|
<attribute name="action">app.about</attribute>
|
|
</item>
|
|
</section>
|
|
</menu>
|
|
|
|
<object class="GtkPopoverMenu" id="win_menu">
|
|
<property name="menu-model">menu</property>
|
|
|
|
<!-- Weather submenu -->
|
|
<child type="weather">
|
|
<object class="GcalWeatherSettings" id="weather_settings" />
|
|
</child>
|
|
|
|
</object>
|
|
</interface>
|