root/data/resources/ui/browse.ui

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <menu id="primary_menu">
    <section>
      <item>
        <attribute name="label" translatable="yes">_Preferences</attribute>
        <attribute name="action">app.preferences</attribute>
      </item>
      <item>
        <attribute name="label" translatable="yes">_View Wiki</attribute>
        <attribute name="action">app.open-wiki</attribute>
      </item>
      <item>
        <attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
        <attribute name="action">app.shortcuts</attribute>
      </item>
      <item>
        <attribute name="label" translatable="yes">_About Boorus</attribute>
        <attribute name="action">app.about</attribute>
      </item>
    </section>
  </menu>
  <template class="BrowsePage" parent="GtkBox">
    <child>
      <object class="AdwOverlaySplitView" id="split">
        <property name="show-sidebar" bind-source="flap_button" bind-property="active" bind-flags="sync-create|bidirectional">False</property>
        <property name="sidebar">
          <!-- Sidebar -->
          <object class="GtkBox">
            <property name="orientation">vertical</property>
            <child>
              <object class="AdwHeaderBar">
                <property name="title-widget">
                  <object class="AdwWindowTitle">
                    <property name="title" translatable="yes">Boorus</property>
                  </object>
                </property>
              </object>
            </child>
            <child>
              <object class="GtkScrolledWindow">
                <property name="hscrollbar-policy">never</property>
                <property name="vexpand">True</property>
                <child>
                  <object class="GtkBox">
                    <style>
                      <class name="background"/>
                    </style>
                    <property name="orientation">vertical</property>
                    <property name="spacing">3</property>
                    <child>
                      <object class="AdwBin" id="booru_list"/>
                    </child>
                    <child>
                      <object class="GtkBox" id="page_info_box">
                        <property name="margin-top">20</property>
                        <property name="orientation">vertical</property>
                        <style>
                          <class name="page-info-box"/>
                        </style>
                        <child>
                          <object class="GtkLabel" id="current_page_label">
                            <property name="label" translatable="true">Page 1</property>
                          </object>
                        </child>
                        <child>
                          <object class="GtkButton" id="next_page">
                            <property name="label" translatable="true">Load next page</property>
                            <property name="hexpand">False</property>
                            <property name="margin-top">5</property>
                            <property name="halign">center</property>
                          </object>
                        </child>
                      </object>
                    </child>
                    <child>
                      <object class="AdwBin" id="saved_searches"/>
                    </child>
                  </object>
                </child>
              </object>
            </child>
          </object>
        </property>
        <property name="content">
          <!-- Main -->
          <object class="GtkBox">
            <property name="orientation">vertical</property>
            <property name="vexpand">True</property>
            <child>
              <object class="AdwHeaderBar">
                <child type="start">
                  <object class="GtkToggleButton" id="flap_button">
                    <property name="icon-name">sidebar-show-symbolic</property>
                    <property name="active">True</property>
                    <property name="tooltip-text" translatable="true">Toggle Sidebar</property>
                    <property name="visible" bind-source="BrowsePage" bind-property="narrow" bind-flags="sync-create">False</property>
                  </object>
                </child>
                <property name="title-widget">
                  <object class="GtkBox">
                    <property name="orientation">horizontal</property>
                    <style>
                      <class name="linked"/>
                    </style>
                    <child>
                      <object class="GtkSearchEntry" id="search">
                        <property name="placeholder-text" translatable="true">Search...</property>
                        <child>
                          <object class="GtkPopover" id="autocomplete">
                            <property name="autohide">False</property>
                          </object>
                        </child>
                      </object>
                    </child>
                    <child>
                      <object class="GtkButton" id="submit_search">
                        <property name="icon-name">system-search-symbolic</property>
                        <property name="tooltip-text" translatable="true">Submit Search</property>
                        <property name="action-name">app.reload-index</property>
                      </object>
                    </child>
                    <child>
                      <object class="GtkButton" id="save_search">
                        <property name="icon-name">emblem-favorite-symbolic</property>
                        <property name="tooltip-text" translatable="true">Save Search</property>
                        <property name="action-name">app.save-search</property>
                      </object>
                    </child>
                  </object>
                </property>
                <child type="end">
                  <object class="GtkMenuButton" id="settings">
                    <property name="icon-name">open-menu-symbolic</property>
                    <property name="menu-model">primary_menu</property>
                    <property name="primary">True</property>
                    <property name="tooltip-text" translatable="true">Main Menu</property>
                  </object>
                </child>
              </object>
            </child>
            <child>
              <object class="GtkStack" id="stack">
                <!-- First started the app, or no saved searches -->
                <child>
                  <object class="GtkStackPage">
                    <property name="name">start-state</property>
                    <property name="title">start-state</property>
                    <property name="child">
                      <object class="AdwStatusPage">
                        <property name="vexpand">True</property>
                        <property name="hexpand">True</property>
                        <property name="icon-name">edit-find-symbolic</property>
                        <property name="title" translatable="yes">Search for a tag</property>
                        <property name="description" translatable="yes">or do an empty search to see the index</property>
                        <property name="child">
                          <object class="GtkButton" id="load_index">
                            <property name="label" translatable="true">Load index</property>
                            <property name="hexpand">False</property>
                            <property name="halign">center</property>
                            <property name="action-name">app.reload-index</property>
                            <style>
                              <class name="suggested-action"/>
                            </style>
                          </object>
                        </property>
                      </object>
                    </property>
                  </object>
                </child>
                <!-- Normal Gridview -->
                <child>
                  <object class="GtkStackPage">
                    <property name="name">grid</property>
                    <property name="title">grid</property>
                    <property name="child">
                      <object class="GtkScrolledWindow" id="scroll">
                        <property name="hscrollbar-policy">never</property>
                        <property name="vscrollbar-policy">always</property>
                        <property name="vexpand">True</property>
                        <child>
                          <object class="GtkGridView" id="grid_view">
                            <property name="vexpand">True</property>
                            <property name="hexpand">True</property>
                            <property name="halign">start</property>
                            <property name="valign">start</property>
                            <property name="min-columns">3</property>
                            <property name="max-columns">20</property>
                            <property name="single-click-activate">True</property>
                          </object>
                        </child>
                      </object>
                    </property>
                  </object>
                </child>
                <!-- A Search returned no results -->
                <child>
                  <object class="GtkStackPage">
                    <property name="name">no-results</property>
                    <property name="title">no-results</property>
                    <property name="child">
y                      <object class="AdwStatusPage">
                        <property name="vexpand">True</property>
                        <property name="hexpand">True</property>
                        <property name="icon-name">edit-find-symbolic</property>
                        <property name="title" translatable="yes">No Results found</property>
                        <property name="description" translatable="yes">Try a different search or booru</property>
                      </object>
                    </property>
                  </object>
                </child>
                <!-- Fetched saved searches, but nothing new -->
                <child>
                  <object class="GtkStackPage">
                    <property name="name">no-new-posts</property>
                    <property name="title">no-new-posts</property>
                    <property name="child">
                      <object class="AdwStatusPage">
                        <property name="vexpand">True</property>
                        <property name="hexpand">True</property>
                        <property name="icon-name">loupe-with-heart-symbolic</property>
                        <property name="title" translatable="yes">No new posts</property>
                        <property name="description" translatable="yes">All saved searches up to date</property>
                      </object>
                    </property>
                  </object>
                </child>
              </object>
            </child>
          </object>
        </property>
      </object>
    </child>
  </template>
</interface>