The new discoverer is a vast improvement over the code that use used to have here. Right now, we fail to use Soup to detect the URL, and that's been reported multiple times already. Use the new web discoverer code, and adjust the UI to match the new code. Namely, use a GtkPopover to show the credentials widget. Fixes #380
358 lines
14 KiB
XML
358 lines
14 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<interface>
|
|
<template class="GcalNewCalendarPage" parent="GtkBox">
|
|
<property name="visible">True</property>
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">12</property>
|
|
<property name="margin-top">24</property>
|
|
<property name="margin-bottom">24</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
|
|
<!-- Local calendar -->
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="visible">True</property>
|
|
<property name="margin-bottom">18</property>
|
|
<property name="orientation">vertical</property>
|
|
<style>
|
|
<class name="view" />
|
|
<class name="frame" />
|
|
</style>
|
|
|
|
<!-- Calendar name -->
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="visible">True</property>
|
|
<property name="margin">12</property>
|
|
|
|
<child>
|
|
<object class="GtkLabel">
|
|
<property name="visible">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="label" translatable="yes">Calendar Name</property>
|
|
<property name="xalign">0.0</property>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkEntry" id="local_calendar_name_entry">
|
|
<property name="visible">True</property>
|
|
<property name="placeholder-text" translatable="yes">Calendar Name</property>
|
|
<signal name="notify::text" handler="on_local_calendar_name_entry_text_changed_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkSeparator">
|
|
<property name="visible">True</property>
|
|
</object>
|
|
</child>
|
|
|
|
<!-- Color -->
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="visible">True</property>
|
|
<property name="margin">12</property>
|
|
|
|
<child>
|
|
<object class="GtkLabel">
|
|
<property name="visible">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="label" translatable="yes">Color</property>
|
|
<property name="xalign">0.0</property>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkColorButton" id="local_calendar_color_button">
|
|
<property name="visible">True</property>
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkLabel">
|
|
<property name="visible">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="label" translatable="yes">Import a Calendar</property>
|
|
<property name="xalign">0.0</property>
|
|
<attributes>
|
|
<attribute name="scale" value="1.3" />
|
|
<attribute name="weight" value="bold" />
|
|
</attributes>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkGrid">
|
|
<property name="visible">True</property>
|
|
<property name="row_spacing">12</property>
|
|
<property name="column_spacing">12</property>
|
|
|
|
<!-- Online Accounts reference label-->
|
|
<child>
|
|
<object class="GtkLabel">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">Alternatively, enter the web address of an online calendar you want to import, or open a supported calendar file.</property>
|
|
<property name="wrap">True</property>
|
|
<property name="xalign">0</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">0</property>
|
|
<property name="top_attach">0</property>
|
|
<property name="width">2</property>
|
|
</packing>
|
|
</child>
|
|
|
|
<!-- URL entry -->
|
|
<child>
|
|
<object class="GtkEntry" id="calendar_address_entry">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="placeholder-text">https://example.com/calendar.ics</property>
|
|
<signal name="notify::text" handler="on_url_entry_text_changed_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
<signal name="activate" handler="on_calendar_address_activated_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">0</property>
|
|
<property name="top_attach">1</property>
|
|
</packing>
|
|
</child>
|
|
|
|
<!-- File Chooser button -->
|
|
<child>
|
|
<object class="GtkFileChooserButton" id="calendar_file_chooser_button">
|
|
<property name="visible">True</property>
|
|
<property name="filter">calendar_file_filter</property>
|
|
<property name="title" translatable="yes">Open a File</property>
|
|
<signal name="file-set" handler="on_file_chooser_button_file_set_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">1</property>
|
|
<property name="top_attach">1</property>
|
|
</packing>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkRevealer" id="web_sources_revealer">
|
|
<property name="transition_type">crossfade</property>
|
|
<property name="transition_duration">200</property>
|
|
<child>
|
|
<object class="GtkBox" id="web_sources_listbox_box">
|
|
<property name="visible">True</property>
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">6</property>
|
|
<child>
|
|
<object class="GtkLabel" id="web_sources_calendar_label">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">Calendars</property>
|
|
<property name="xalign">0</property>
|
|
<attributes>
|
|
<attribute name="weight" value="bold" />
|
|
</attributes>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkScrolledWindow">
|
|
<property name="height_request">100</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="vexpand">True</property>
|
|
<child>
|
|
<object class="GtkViewport" id="viewport">
|
|
<property name="visible">True</property>
|
|
<property name="shadow_type">none</property>
|
|
<child>
|
|
<object class="GtkListBox" id="web_sources_listbox">
|
|
<property name="visible">True</property>
|
|
<property name="activate_on_single_click">False</property>
|
|
<property name="selection_mode">none</property>
|
|
<style>
|
|
<class name="calendar-list" />
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">0</property>
|
|
<property name="top_attach">2</property>
|
|
<property name="width">2</property>
|
|
</packing>
|
|
</child>
|
|
|
|
<!-- Online Accounts reference label-->
|
|
<child>
|
|
<object class="GtkLabel" id="web_description_label">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">If the calendar belongs to one of your online accounts, you can add it through the <a href="GOA">online account settings</a>.</property>
|
|
<property name="use_markup">True</property>
|
|
<property name="wrap">True</property>
|
|
<property name="xalign">0</property>
|
|
<signal name="activate-link" handler="on_web_description_label_link_activated_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">0</property>
|
|
<property name="top_attach">3</property>
|
|
<property name="width">2</property>
|
|
</packing>
|
|
</child>
|
|
|
|
</object>
|
|
</child>
|
|
</template>
|
|
|
|
<!-- Credentials popover -->
|
|
<object class="GtkPopover" id="credentials_popover">
|
|
<property name="relative-to">calendar_address_entry</property>
|
|
<property name="position">top</property>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="visible">True</property>
|
|
<property name="orientation">vertical</property>
|
|
<property name="margin">12</property>
|
|
<child>
|
|
<object class="GtkGrid" id="credentials_grid">
|
|
<property name="visible">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="border_width">12</property>
|
|
<property name="row_spacing">6</property>
|
|
<property name="column_spacing">12</property>
|
|
<child>
|
|
<object class="GtkLabel" id="credentials_user_dim_label">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">User</property>
|
|
<property name="xalign">1</property>
|
|
<style>
|
|
<class name="dim-label" />
|
|
</style>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">0</property>
|
|
<property name="top_attach">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel" id="credentials_password_dim_label">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">Password</property>
|
|
<property name="xalign">1</property>
|
|
<style>
|
|
<class name="dim-label" />
|
|
</style>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">0</property>
|
|
<property name="top_attach">1</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkEntry" id="credentials_user_entry">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<signal name="activate" handler="on_credential_entry_activate_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">1</property>
|
|
<property name="top_attach">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkEntry" id="credentials_password_entry">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="visibility">False</property>
|
|
<signal name="activate" handler="on_credential_entry_activate_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">1</property>
|
|
<property name="top_attach">1</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="visible">True</property>
|
|
<property name="spacing">12</property>
|
|
<child>
|
|
<object class="GtkButton" id="credentials_cancel_button">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="label" translatable="yes">Cancel</property>
|
|
<signal name="clicked" handler="on_credential_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton" id="credentials_connect_button">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="label" translatable="yes">Connect</property>
|
|
<signal name="clicked" handler="on_credential_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
<style>
|
|
<class name="suggested-action" />
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
|
|
<!-- Calendar file filter -->
|
|
<object class="GtkFileFilter" id="calendar_file_filter">
|
|
<patterns>
|
|
<pattern>*.ical</pattern>
|
|
<pattern>*.icalendar</pattern>
|
|
<pattern>*.ics</pattern>
|
|
<pattern>*.ifb</pattern>
|
|
<pattern>*.vcs</pattern>
|
|
</patterns>
|
|
<mime-types>
|
|
<mime-type>text/calendar</mime-type>
|
|
</mime-types>
|
|
</object>
|
|
|
|
<!-- Headerbar buttons -->
|
|
<object class="GtkButton" id="cancel_button">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">Cancel</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="receives_default">True</property>
|
|
<signal name="clicked" handler="on_cancel_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
</object>
|
|
<object class="GtkButton" id="add_button">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">Add</property>
|
|
<property name="sensitive">False</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="receives_default">True</property>
|
|
<signal name="clicked" handler="on_add_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" />
|
|
<style>
|
|
<class name="suggested-action"/>
|
|
</style>
|
|
</object>
|
|
</interface>
|