Add the common shortcut as per: https://developer.gnome.org/hig/reference/keyboard.html#basic-shortcuts
416 lines
10 KiB
Plaintext
416 lines
10 KiB
Plaintext
using Gtk 4.0;
|
|
using Adw 1;
|
|
|
|
template $GcalWindow: Adw.ApplicationWindow {
|
|
title: _("Calendar");
|
|
default-width: 800;
|
|
default-height: 600;
|
|
width-request: 360;
|
|
height-request: 600;
|
|
|
|
ShortcutController {
|
|
Shortcut {
|
|
trigger: "<Control>t";
|
|
action: "action(win.today)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Alt>Down";
|
|
action: "action(win.today)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "Home";
|
|
action: "action(win.today)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Alt>Left";
|
|
action: "action(win.previous-date)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "Page_Up";
|
|
action: "action(win.previous-date)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Alt>Right";
|
|
action: "action(win.next-date)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "Page_Down";
|
|
action: "action(win.next-date)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Control>Page_Down";
|
|
action: "action(win.change-view)";
|
|
arguments: "-1";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Control>Page_Up";
|
|
action: "action(win.change-view)";
|
|
arguments: "-2";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Alt>1";
|
|
action: "action(win.change-view)";
|
|
arguments: "0";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Alt>2";
|
|
action: "action(win.change-view)";
|
|
arguments: "1";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Alt>3";
|
|
action: "action(win.change-view)";
|
|
arguments: "3";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Ctrl>n";
|
|
action: "action(win.new-event)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Control>w";
|
|
action: "action(window.close)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Control>q";
|
|
action: "action(app.quit)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Ctrl><Alt>m";
|
|
action: "action(win.show-calendars)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "<Ctrl>r";
|
|
action: "action(app.sync)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "F5";
|
|
action: "action(app.sync)";
|
|
}
|
|
|
|
Shortcut {
|
|
trigger: "F8";
|
|
action: "action(win.show-calendars)";
|
|
}
|
|
}
|
|
|
|
GestureClick {
|
|
button: 8; // Hardware back button.
|
|
pressed => $on_back_button_pressed_cb(template) not-swapped;
|
|
}
|
|
|
|
GestureClick {
|
|
button: 9; // Hardware forward button.
|
|
pressed => $on_forward_button_pressed_cb(template) not-swapped;
|
|
}
|
|
|
|
Adw.ToastOverlay overlay {
|
|
$GcalDropOverlay drop_overlay {
|
|
overlayed: Adw.StatusPage drop_status_page {
|
|
title: _("Drop Event Files to Import");
|
|
icon-name: "calendar-month-symbolic";
|
|
|
|
styles [
|
|
"drop-overlay-area",
|
|
"compact",
|
|
]
|
|
};
|
|
|
|
child: Adw.OverlaySplitView split_view {
|
|
pin-sidebar: true;
|
|
show-sidebar: false;
|
|
|
|
DropTarget drop_target {
|
|
actions: copy;
|
|
propagation-phase: capture;
|
|
accept => $on_drop_target_accept_cb(template) not-swapped;
|
|
drop => $on_drop_target_drop_cb(template) not-swapped;
|
|
}
|
|
|
|
styles [
|
|
"drop-target",
|
|
]
|
|
|
|
sidebar: Adw.ToolbarView {
|
|
[top]
|
|
Adw.HeaderBar {}
|
|
|
|
content: Box {
|
|
orientation: vertical;
|
|
|
|
$GcalDateChooser date_chooser {
|
|
split-month-year: true;
|
|
vexpand: false;
|
|
active-date: bind template.active-date no-sync-create bidirectional;
|
|
day-selected => $day_selected(template);
|
|
}
|
|
|
|
$GcalCalendarList calendars_list {}
|
|
};
|
|
};
|
|
|
|
content: Adw.ToolbarView main_toolbar {
|
|
styles [
|
|
"view",
|
|
]
|
|
|
|
[top]
|
|
Adw.HeaderBar header_bar {
|
|
[start]
|
|
ToggleButton sidebar_button {
|
|
icon-name: "sidebar-show-symbolic";
|
|
tooltip-text: _("Toggle Sidebar");
|
|
active: bind split_view.show-sidebar bidirectional;
|
|
|
|
ShortcutController {
|
|
scope: managed;
|
|
|
|
Shortcut {
|
|
trigger: "F9";
|
|
action: "activate";
|
|
}
|
|
}
|
|
}
|
|
|
|
[start]
|
|
$GcalSyncIndicator sync_indicator {}
|
|
|
|
title-widget: $GcalCalendarNavigationButton navigation_button_title {
|
|
active-date: bind template.active-date no-sync-create bidirectional;
|
|
active: bind split_view.show-sidebar inverted;
|
|
};
|
|
|
|
[end]
|
|
MenuButton menu_button {
|
|
icon-name: "open-menu-symbolic";
|
|
popover: win_menu;
|
|
tooltip-text: _("Main Menu");
|
|
primary: true;
|
|
}
|
|
|
|
[end]
|
|
$GcalSearchButton search_button {
|
|
tooltip-text: C_("tooltip", "Search");
|
|
}
|
|
}
|
|
|
|
content: Adw.ViewStack views_stack {
|
|
hexpand: true;
|
|
vexpand: true;
|
|
notify::visible-child => $view_changed(template) not-swapped;
|
|
|
|
styles [
|
|
"view",
|
|
]
|
|
|
|
Adw.ViewStackPage month_page {
|
|
name: "month";
|
|
title: _("_Month");
|
|
use-underline: true;
|
|
icon-name: "calendar-month-symbolic";
|
|
|
|
child: $GcalMonthView month_view {
|
|
active-date: bind template.active-date no-sync-create bidirectional;
|
|
create-event => $show_new_event_widget(template) not-swapped;
|
|
create-event-detailed => $create_event_detailed_cb(template) not-swapped;
|
|
event-activated => $event_activated(template) not-swapped;
|
|
};
|
|
}
|
|
|
|
Adw.ViewStackPage week_page {
|
|
name: "week";
|
|
title: _("_Week");
|
|
use-underline: true;
|
|
icon-name: "calendar-week-symbolic";
|
|
|
|
child: $GcalWeekView week_view {
|
|
active-date: bind template.active-date no-sync-create bidirectional;
|
|
create-event => $show_new_event_widget(template) not-swapped;
|
|
event-activated => $event_activated(template) not-swapped;
|
|
};
|
|
}
|
|
|
|
Adw.ViewStackPage agenda_page {
|
|
name: "agenda";
|
|
title: _("_Agenda");
|
|
use-underline: true;
|
|
icon-name: "calendar-agenda-symbolic";
|
|
visible: false;
|
|
|
|
child: $GcalAgendaView agenda_view {
|
|
vexpand: true;
|
|
active-date: bind template.active-date no-sync-create bidirectional;
|
|
create-event => $show_new_event_widget(template) not-swapped;
|
|
event-activated => $event_activated(template) not-swapped;
|
|
};
|
|
}
|
|
};
|
|
|
|
[bottom]
|
|
ActionBar {
|
|
[start]
|
|
Button previous_date_button {
|
|
icon-name: bind $get_previous_date_icon(views_stack.visible-child) as <string>;
|
|
tooltip-text: bind $get_previous_date_tooltip(views_stack.visible-child-name) as <string>;
|
|
action-name: "win.previous-date";
|
|
}
|
|
|
|
[start]
|
|
Button next_date_button {
|
|
icon-name: bind $get_next_date_icon(views_stack.visible-child) as <string>;
|
|
tooltip-text: bind $get_next_date_tooltip(views_stack.visible-child-name) as <string>;
|
|
action-name: "win.next-date";
|
|
}
|
|
|
|
[start]
|
|
Button {
|
|
action-name: "win.today";
|
|
|
|
child: Adw.ButtonContent {
|
|
label: _("_Today");
|
|
use-underline: true;
|
|
icon-name: "calendar-today-symbolic";
|
|
can-shrink: true;
|
|
tooltip-text: _("Go to Today");
|
|
};
|
|
}
|
|
|
|
[center]
|
|
Adw.Bin view_switcher_bin {
|
|
child: Adw.ViewSwitcher view_switcher_wide {
|
|
stack: views_stack;
|
|
policy: wide;
|
|
};
|
|
}
|
|
|
|
[end]
|
|
Button {
|
|
icon-name: "list-add-symbolic";
|
|
action-name: "win.new-event";
|
|
tooltip-text: C_("tooltip", "Add Event");
|
|
}
|
|
|
|
[end]
|
|
Button {
|
|
icon-name: "x-office-calendar-symbolic";
|
|
tooltip-text: _("Manage Calendars");
|
|
action-name: "win.show-calendars";
|
|
}
|
|
}
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
notify::current-breakpoint => $on_breakpoint_changed(template) not-swapped;
|
|
|
|
Adw.Breakpoint {
|
|
condition ("max-width: 1000sp")
|
|
|
|
setters {
|
|
split_view.collapsed: true;
|
|
view_switcher_bin.child: view_switcher_narrow;
|
|
}
|
|
}
|
|
|
|
Adw.Breakpoint {
|
|
condition ("max-width: 700sp")
|
|
|
|
setters {
|
|
split_view.collapsed: true;
|
|
view_switcher_bin.visible: false;
|
|
previous_date_button.visible: false;
|
|
next_date_button.visible: false;
|
|
split_view.show-sidebar: false;
|
|
sidebar_button.visible: false;
|
|
header_bar.title-widget: null;
|
|
navigation_button_title.active: false;
|
|
week_page.visible: false;
|
|
month_page.visible: false;
|
|
agenda_page.visible: true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Adw.InlineViewSwitcher view_switcher_narrow {
|
|
styles [
|
|
"flat",
|
|
]
|
|
|
|
stack: views_stack;
|
|
display-mode: icons;
|
|
}
|
|
|
|
$GcalQuickAddPopover quick_add_popover {
|
|
edit-event => $edit_event(template) not-swapped;
|
|
closed => $close_new_event_widget(template) not-swapped;
|
|
}
|
|
|
|
$GcalEventEditorDialog event_editor {
|
|
remove-event => $on_event_editor_dialog_remove_event_cb(template) not-swapped;
|
|
}
|
|
|
|
menu menu {
|
|
section {
|
|
item {
|
|
label: _("_Synchronize Calendars");
|
|
action: "app.sync";
|
|
}
|
|
}
|
|
|
|
section {
|
|
item {
|
|
label: _("_Date & Time Settings…");
|
|
action: "win.open-date-time-settings";
|
|
}
|
|
|
|
item {
|
|
label: _("_Online Accounts…");
|
|
action: "win.open-online-accounts";
|
|
}
|
|
|
|
submenu {
|
|
label: _("Weather");
|
|
|
|
item {
|
|
custom: "weather";
|
|
}
|
|
}
|
|
}
|
|
|
|
section {
|
|
item {
|
|
label: _("_Keyboard Shortcuts");
|
|
action: "app.shortcuts";
|
|
}
|
|
|
|
item {
|
|
label: _("_About Calendar");
|
|
action: "app.about";
|
|
}
|
|
}
|
|
}
|
|
|
|
PopoverMenu win_menu {
|
|
menu-model: menu;
|
|
|
|
[weather]
|
|
$GcalWeatherSettings weather_settings {}
|
|
}
|