Port the search results list to GtkListview. Use bindings to set the title, icon, and subtitle of each row. Remove GcalSearchHitRow as it's unused now.
215 lines
8.2 KiB
XML
215 lines
8.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<interface>
|
|
<template class="GcalSearchButton" parent="AdwBin">
|
|
|
|
<child>
|
|
<object class="GtkEventControllerFocus">
|
|
<signal name="leave" handler="on_focus_controller_leave_cb" object="GcalSearchButton" swapped="no" />
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkStack" id="stack">
|
|
<property name="hhomogeneous">False</property>
|
|
<property name="vhomogeneous">True</property>
|
|
<property name="interpolate-size">True</property>
|
|
<property name="transition-type">crossfade</property>
|
|
<property name="transition-duration">200</property>
|
|
<style>
|
|
<class name="suggestionbutton" />
|
|
</style>
|
|
|
|
<child>
|
|
<object class="GtkStackPage">
|
|
<property name="name">button</property>
|
|
<property name="child">
|
|
<object class="GtkButton" id="button">
|
|
<property name="halign">start</property>
|
|
<property name="icon-name">edit-find-symbolic</property>
|
|
<signal name="clicked" handler="on_button_clicked_cb" object="GcalSearchButton" swapped="no" />
|
|
|
|
<child>
|
|
<object class='GtkShortcutController'>
|
|
<property name='scope'>global</property>
|
|
<child>
|
|
<object class='GtkShortcut'>
|
|
<property name='trigger'><Control>f</property>
|
|
<property name='action'>activate</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkStackPage">
|
|
<property name="name">entry</property>
|
|
<property name="child">
|
|
<object class="GtkSearchEntry" id="entry">
|
|
<property name="max-width-chars">0</property>
|
|
<property name="width-chars">0</property>
|
|
<signal name="activate" handler="on_entry_activate_cb" object="GcalSearchButton" swapped="no" />
|
|
<signal name="next-match" handler="on_entry_next_match_cb" object="GcalSearchButton" swapped="no" />
|
|
<signal name="previous-match" handler="on_entry_previous_match_cb" object="GcalSearchButton" swapped="no" />
|
|
<signal name="search-changed" handler="on_entry_search_changed_cb" object="GcalSearchButton" swapped="no" />
|
|
<signal name="stop-search" handler="on_entry_stop_search_cb" object="GcalSearchButton" swapped="no" />
|
|
|
|
<child>
|
|
<object class="GtkShortcutController">
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name='trigger'>Up</property>
|
|
<property name='action'>signal(previous-match)</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcut">
|
|
<property name='trigger'>Down</property>
|
|
<property name='action'>signal(next-match)</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</template>
|
|
|
|
<object class="GtkPopover" id="popover">
|
|
<property name="position">bottom</property>
|
|
<property name="autohide">False</property>
|
|
<property name="default-widget">results_listview</property>
|
|
<style>
|
|
<class name="menu" />
|
|
</style>
|
|
<child>
|
|
<object class="GtkRevealer" id="results_revealer">
|
|
<property name="transition-type">slide-down</property>
|
|
<signal name="notify::reveal-child" handler="on_results_revealer_child_reveal_state_changed_cb" object="GcalSearchButton" swapped="no" />
|
|
<signal name="notify::child-revealed" handler="on_results_revealer_child_reveal_state_changed_cb" object="GcalSearchButton" swapped="no" />
|
|
|
|
<child>
|
|
<object class="GtkScrolledWindow">
|
|
<property name="max-content-width">450</property>
|
|
<property name="max-content-height">400</property>
|
|
<property name="propagate-natural-width">True</property>
|
|
<property name="propagate-natural-height">True</property>
|
|
<property name="hscrollbar-policy">never</property>
|
|
|
|
<child>
|
|
<object class="GtkListView" id="results_listview">
|
|
<property name="hscroll-policy">natural</property>
|
|
<property name="vscroll-policy">natural</property>
|
|
<property name="single-click-activate">True</property>
|
|
<property name="model">
|
|
<object class="GtkSingleSelection" id="results_selection_model">
|
|
<property name="autoselect">True</property>
|
|
<property name="can-unselect">False</property>
|
|
</object>
|
|
</property>
|
|
<property name="factory">
|
|
<object class="GtkBuilderListItemFactory">
|
|
<property name="bytes"><![CDATA[
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<interface>
|
|
<template class="GtkListItem">
|
|
<property name="activatable">True</property>
|
|
<property name="selectable">True</property>
|
|
<property name="child">
|
|
<object class="GtkBox">
|
|
|
|
<child>
|
|
<object class="GtkImage" id="image">
|
|
<property name="valign">center</property>
|
|
<property name="hexpand">False</property>
|
|
<property name="icon-size">normal</property>
|
|
<binding name="paintable">
|
|
<lookup name="primary-icon" type="GcalSearchHit">
|
|
<lookup name="item">GtkListItem</lookup>
|
|
</lookup>
|
|
</binding>
|
|
<style>
|
|
<class name="title"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkLabel" id="title">
|
|
<property name="use-markup">True</property>
|
|
<property name="ellipsize">end</property>
|
|
<property name="xalign">0.0</property>
|
|
<property name="max-width-chars">40</property>
|
|
<binding name="label">
|
|
<closure type="gchararray" function="escape_markup_cb">
|
|
<lookup name="title" type="GcalSearchHit">
|
|
<lookup name="item">GtkListItem</lookup>
|
|
</lookup>
|
|
</closure>
|
|
</binding>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkLabel" id="separator">
|
|
<property name="label">—</property>
|
|
<binding name="visible">
|
|
<closure type="gboolean" function="string_is_not_empty_cb">
|
|
<lookup name="subtitle" type="GcalSearchHit">
|
|
<lookup name="item">GtkListItem</lookup>
|
|
</lookup>
|
|
</closure>
|
|
</binding>
|
|
<style>
|
|
<class name="dim-label"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="GtkLabel" id="subtitle">
|
|
<property name="hexpand">True</property>
|
|
<property name="use-markup">True</property>
|
|
<property name="ellipsize">end</property>
|
|
<property name="xalign">0.0</property>
|
|
<binding name="label">
|
|
<closure type="gchararray" function="escape_markup_cb">
|
|
<lookup name="subtitle" type="GcalSearchHit">
|
|
<lookup name="item">GtkListItem</lookup>
|
|
</lookup>
|
|
</closure>
|
|
</binding>
|
|
<style>
|
|
<class name="subtitle"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
</property>
|
|
</template>
|
|
</interface>
|
|
]]></property>
|
|
</object>
|
|
</property>
|
|
<signal name="activate" handler="on_results_listview_activated_cb" object="GcalSearchButton" swapped="no" />
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
</child>
|
|
|
|
</object>
|
|
</child>
|
|
</object>
|
|
|
|
</interface>
|