389 lines
18 KiB
XML
389 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<interface>
|
|
<template class="ApplicationMainWindow" parent="AdwApplicationWindow">
|
|
<property name="show_menubar">False</property>
|
|
<signal name="map" handler="on_map"/>
|
|
<signal name="unmap" handler="on_unmap"/>
|
|
|
|
<style>
|
|
<class name="geary-main-window"/>
|
|
</style>
|
|
|
|
|
|
<!-- Event controllers -->
|
|
<child>
|
|
<object class="GtkEventControllerKey">
|
|
<signal name="key-pressed" handler="on_key_pressed"/>
|
|
<signal name="key-released" handler="on_key_released"/>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkEventControllerFocus">
|
|
<signal name="enter" handler="on_focus_enter"/>
|
|
<signal name="leave" handler="on_focus_leave"/>
|
|
</object>
|
|
</child>
|
|
|
|
<!-- Shortcuts -->
|
|
<child>
|
|
<object class="GtkShortcutController">
|
|
<property name="scope">global</property>
|
|
<!-- Replying & forwarding-->
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>r</property>
|
|
<property name="action">action(reply-conversation-sender)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control><Shift>r</property>
|
|
<property name="action">action(reply-conversation-all)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>l</property>
|
|
<property name="action">action(forward-conversation)</property>
|
|
</object>
|
|
</child>
|
|
<!-- Marking actions-->
|
|
<!-- Unread is the primary action, so it doesn't get the <Shift> modifier -->
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>d</property>
|
|
<!-- XXX GTK4 this used to be an action with boolean parameter, need to decouple with unstarred -->
|
|
<property name="action">action(mark-conversations-starred)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control><Shift>d</property>
|
|
<property name="action">action(mark-conversations-unstarred)</property>
|
|
</object>
|
|
</child>
|
|
<!-- Moving & labelling-->
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>b</property>
|
|
<property name="action">action(show-copy-menu)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>m</property>
|
|
<property name="action">action(show-move-menu)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>k</property>
|
|
<property name="action">action(archive-conversations)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>j</property>
|
|
<property name="action">action(junk-conversations)</property>
|
|
</object>
|
|
</child>
|
|
<!-- Trash / delete -->
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger">BackSpace</property>
|
|
<property name="action">action(trash-conversations)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger">Delete</property>
|
|
<property name="action">action(trash-conversations)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Shift>BackSpace</property>
|
|
<property name="action">action(delete-conversations)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Shift>Delete</property>
|
|
<property name="action">action(delete-conversations)</property>
|
|
</object>
|
|
</child>
|
|
<!-- Find & Search -->
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>f</property>
|
|
<property name="action">action(find)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>s</property>
|
|
<property name="action">action(search)</property>
|
|
</object>
|
|
</child>
|
|
<!-- Navigation -->
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>comma</property>
|
|
<property name="action">action(up-conversation)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>period</property>
|
|
<property name="action">action(down-conversation)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger">Escape</property>
|
|
<property name="action">action(escape)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name="trigger"><Control>a</property>
|
|
<property name="action">action(select_all)</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
<!-- Widget tree -->
|
|
<child>
|
|
<object class="AdwToastOverlay" id="overlay">
|
|
<child>
|
|
<object class="GtkBox" id="main_layout">
|
|
<property name="orientation">vertical</property>
|
|
<child>
|
|
<object class="AdwNavigationSplitView" id="outer_view">
|
|
<property name="vexpand">True</property>
|
|
<property name="sidebar-width-fraction">0.4</property>
|
|
<property name="max-sidebar-width">700</property>
|
|
|
|
<property name="sidebar">
|
|
<object class="AdwNavigationPage">
|
|
<property name="child">
|
|
<object class="AdwNavigationSplitView" id="inner_view">
|
|
<property name="sidebar-width-fraction">0.5</property>
|
|
<signal name="notify::collapsed" handler="on_inner_view_changed"/>
|
|
<signal name="notify::show-content" handler="on_inner_view_changed"/>
|
|
|
|
<property name="sidebar">
|
|
<object class="AdwNavigationPage" id="folder_list_page">
|
|
<property name="tag">folder_list</property>
|
|
<property name="title" translatable="yes">Mail</property>
|
|
<property name="child">
|
|
<object class="AdwToolbarView" id="folder_box">
|
|
<child type="top">
|
|
<object class="AdwHeaderBar">
|
|
<child>
|
|
<object class="MonitoredSpinner" id="headerbar_spinner">
|
|
<property name="margin-start">5</property>
|
|
</object>
|
|
</child>
|
|
<child type="end">
|
|
<object class="GtkMenuButton" id="app_menu_button">
|
|
<property name="focus_on_click">False</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="icon_name">open-menu-symbolic</property>
|
|
<property name="menu-model">app_menu</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkScrolledWindow" id="folder_list_scrolled">
|
|
<property name="vexpand">True</property>
|
|
<property name="hscrollbar_policy">never</property>
|
|
<style>
|
|
<class name="geary-folder"/>
|
|
</style>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
|
|
<property name="content">
|
|
<object class="AdwNavigationPage" id="conversation_list_page">
|
|
<property name="tag">conversation_list</property>
|
|
<property name="child">
|
|
<object class="AdwToolbarView">
|
|
<child type="top">
|
|
<object class="AdwHeaderBar" id="conversation_list_headerbar">
|
|
<child>
|
|
<object class="GtkButton" id="compose_new_message_button">
|
|
<property name="focus_on_click">False</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="tooltip_text" translatable="yes" context="tooltip">Compose Message</property>
|
|
<property name="icon-name">mail-message-new-symbolic</property>
|
|
<property name="action-name">app.compose</property>
|
|
</object>
|
|
</child>
|
|
<child type="end">
|
|
<object class="GtkToggleButton" id="search_button">
|
|
<property name="focus_on_click">False</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="tooltip_text" translatable="yes">Toggle search bar</property>
|
|
<property name="icon-name">preferences-system-search-symbolic</property>
|
|
</object>
|
|
</child>
|
|
<child type="end">
|
|
<object class="GtkToggleButton" id="conversation_list_selection_button">
|
|
<property name="focus_on_click">False</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="tooltip_text" translatable="yes">Select conversations</property>
|
|
<property name="icon-name">selection-mode-symbolic</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkBox">
|
|
<property name="orientation">vertical</property>
|
|
<child>
|
|
<object class="GtkBox" id="conversation_list_box">
|
|
<property name="orientation">vertical</property>
|
|
<property name="vexpand">True</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkRevealer" id="conversation_list_actions_revealer">
|
|
<property name="reveal-child">False</property>
|
|
<property name="transition_type">slide-up</property>
|
|
<child>
|
|
<object class="ComponentsConversationActions" id="conversation_list_actions">
|
|
<property name="show_conversation_actions">True</property>
|
|
<property name="show_response_actions">False</property>
|
|
<property name="pack_justified">True</property>
|
|
<property name="hexpand">True</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
|
|
<property name="content">
|
|
<object class="AdwNavigationPage" id="conversation_viewer_page">
|
|
<property name="tag">conversation_viewer</property>
|
|
<property name="title">Conversation</property>
|
|
<property name="child">
|
|
<object class="AdwToolbarView">
|
|
<property name="hexpand">True</property>
|
|
<child type="top">
|
|
<object class="ComponentsConversationHeaderBar" id="conversation_headerbar">
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkBox">
|
|
<property name="orientation">vertical</property>
|
|
<child>
|
|
<object class="GtkBox" id="conversation_viewer_box">
|
|
<property name="orientation">vertical</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkRevealer" id="conversation_viewer_actions_revealer">
|
|
<property name="reveal-child">False</property>
|
|
<property name="transition_type">slide-up</property>
|
|
<child>
|
|
<object class="ComponentsConversationActions" id="conversation_viewer_actions">
|
|
<property name="show_conversation_actions">True</property>
|
|
<property name="show_response_actions">False</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="ComponentsInfoBarStack" id="info_bars">
|
|
</object>
|
|
</child>
|
|
<style>
|
|
<class name="geary-main-layout"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
<!-- 1st breakpoint: split folder/conversation list from conversation viewer -->
|
|
<child>
|
|
<object class="AdwBreakpoint">
|
|
<condition>max-width: 860sp</condition>
|
|
<setter object="outer_view" property="collapsed">True</setter>
|
|
<setter object="inner_view" property="sidebar-width-fraction">0.33</setter>
|
|
</object>
|
|
</child>
|
|
<!-- 2nd breakpoint: also split folder list from conversation list -->
|
|
<child>
|
|
<object class="AdwBreakpoint">
|
|
<condition>max-width: 500sp</condition>
|
|
<setter object="outer_view" property="collapsed">True</setter>
|
|
<setter object="inner_view" property="sidebar-width-fraction">0.45</setter>
|
|
<setter object="inner_view" property="collapsed">True</setter>
|
|
</object>
|
|
</child>
|
|
<!-- When things get really tight, split up the actions in the conversation viewer -->
|
|
<child>
|
|
<object class="AdwBreakpoint">
|
|
<condition>max-width: 400sp</condition>
|
|
<setter object="outer_view" property="collapsed">True</setter>
|
|
<setter object="inner_view" property="collapsed">True</setter>
|
|
<setter object="conversation_headerbar" property="compact">True</setter>
|
|
<setter object="conversation_viewer_actions_revealer" property="reveal-child">True</setter>
|
|
</object>
|
|
</child>
|
|
</template>
|
|
|
|
<menu id="app_menu">
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_Accounts</attribute>
|
|
<attribute name="action">app.accounts</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_Preferences</attribute>
|
|
<attribute name="action">app.preferences</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
|
|
<attribute name="action">win.show-help-overlay</attribute>
|
|
<attribute name="accel"><Primary>question</attribute>
|
|
<attribute name="hidden-when">action-missing</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_Help</attribute>
|
|
<attribute name="action">app.help</attribute>
|
|
<attribute name="accel">F1</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">_About Geary</attribute>
|
|
<attribute name="action">app.about</attribute>
|
|
</item>
|
|
</section>
|
|
</menu>
|
|
</interface>
|