M src/mainwindow.blp => src/mainwindow.blp +10 -0
@@ 34,6 34,11 @@ template CMainWindow : Adw.ApplicationWindow {
Adw.HeaderBar {
show-end-title-buttons: bind leaflet.folded;
+ [start]
+ Gtk.Button {
+ icon-name: "system-search-symbolic";
+ action-name: "win.search-all";
+ }
[end]
MenuButton button_menu {
@@ 71,6 76,7 @@ template CMainWindow : Adw.ApplicationWindow {
}
Gtk.Stack main_stack {
+
Gtk.StackPage {
name: "info";
title: _("Event info");
@@ 134,6 140,10 @@ template CMainWindow : Adw.ApplicationWindow {
.CPageDetails subpage_details {
} // /subpage_details
+ .CPageEvents subpage_search_all {
+ model: "search";
+ }// /subpage_search_all}
+
}// /subpage_leaflet
};// overlay
M src/mainwindow.py => src/mainwindow.py +4 -0
@@ 47,6 47,7 @@ class MainWindow(Adw.ApplicationWindow):
self._add_action("show-sidebar", None, lambda *_: self.show_sidebar())
self._add_action("show-page", None, lambda *_: self.show_stack())
self._add_action("return-to-events", None, self.return_to_event_list)
+ self._add_action("search-all", None, lambda *_: self.show_search_all())
self.nm = NetworkConnectionMonitor()
self.nm.connect("notify",self._on_networkconnectionmonitor_notify)
@@ 145,6 146,9 @@ class MainWindow(Adw.ApplicationWindow):
def subpage_navigate_back(self):
self.subpage_leaflet.navigate(Adw.NavigationDirection.BACK)
+ def show_search_all(self):
+ self.subpage_leaflet.get_page(self.subpage_events).set_navigatable(False)
+ self.subpage_leaflet.get_page(self.subpage_details).set_navigatable(False)
@Gtk.Template.Callback()
def _on_pagelist_row_activated(self, page):
self.subpage_events.set_model(page.get_model())
M src/pages.py => src/pages.py +13 -0
@@ 222,6 222,9 @@ class PageEvents(Gtk.Box):
pagebox = Gtk.Template.Child()
+ search_button = Gtk.Template.Child()
+ searchbar = Gtk.Template.Child()
+
def get_value(self):
return self._value
@@ 269,6 272,9 @@ class PageEvents(Gtk.Box):
models.dbUpdateWatcher.disconnect(self._update_handler_id)
self._update_handler_id = None
+ self.search_button.props.visible = True
+ self.searchbar.props.search_mode_enabled = False
+
if self._model == "days":
self.props.title = _("Talks on {}").format(obj.date.strftime(FMT_DAY))
self.props.subtitle = ""
@@ 305,6 311,13 @@ class PageEvents(Gtk.Box):
self.group_by = "day" # TODO: or None?
self._update_handler_id = models.dbUpdateWatcher.connect("update", self.update)
+ elif self.model == "search":
+ self.props.title = _("Search Talks")
+ self.props.subtitle = ""
+ self.filters = None
+ self.group_by = None
+
+
else:
print(f"PageEvents: set_value: no valid model set '{self._model}'")
M src/pages_events.blp => src/pages_events.blp +5 -1
@@ 21,7 21,7 @@ template CPageEvents : Gtk.Box {
}
[start]
- Gtk.Button {
+ Gtk.Button search_button {
icon-name: "system-search-symbolic";
}
@@ 31,6 31,10 @@ template CPageEvents : Gtk.Box {
}
}
+ .CSearchBarOverlay searchbar {
+ }
+
+
Gtk.ScrolledWindow {
hexpand: true;
vexpand: true;
M => +0 -5
@@ 21,11 21,6 @@ template CPageHeaderBar : Gtk.Box {
action-name: 'win.show-sidebar';
}
[start]
Gtk.Button {
icon-name: "system-search-symbolic";
}
[end]
Gtk.Button {
icon-name: "open-menu-symbolic";