diff options
Diffstat (limited to 'gnomemusic/widgets/searchheaderbar.py')
-rw-r--r-- | gnomemusic/widgets/searchheaderbar.py | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/gnomemusic/widgets/searchheaderbar.py b/gnomemusic/widgets/searchheaderbar.py index d5efaea5..3c2298bd 100644 --- a/gnomemusic/widgets/searchheaderbar.py +++ b/gnomemusic/widgets/searchheaderbar.py @@ -24,14 +24,15 @@ from enum import IntEnum -from gi.repository import GLib, GObject, Gtk, Handy +from gettext import gettext as _ +from gi.repository import Adw, GObject, Gtk from gnomemusic.search import Search from gnomemusic.widgets.headerbar import HeaderBar, SelectionBarMenuButton @Gtk.Template(resource_path="/org/gnome/Music/ui/SearchHeaderBar.ui") -class SearchHeaderBar(Handy.HeaderBar): +class SearchHeaderBar(Adw.Bin): """SearcnHeaderbar of the application""" class State(IntEnum): @@ -43,6 +44,7 @@ class SearchHeaderBar(Handy.HeaderBar): __gtype_name__ = "SearchHeaderBar" + _headerbar = Gtk.Template.Child() _search_button = Gtk.Template.Child() _select_button = Gtk.Template.Child() _cancel_button = Gtk.Template.Child() @@ -51,16 +53,17 @@ class SearchHeaderBar(Handy.HeaderBar): search_state = GObject.Property(type=int, default=Search.State.NONE) selected_songs_count = GObject.Property(type=int, default=0, minimum=0) selection_mode_allowed = GObject.Property(type=bool, default=True) - stack = GObject.Property(type=Gtk.Stack) + stack = GObject.Property(type=Adw.ViewStack) def __init__(self, application): super().__init__() self._coregrilo = application.props.coregrilo self._selection_mode = False - self._timeout = None self._entry = Gtk.SearchEntry() + self._entry.props.placeholder_text = _( + "Search songs, artists, albums and playlists") self._entry.props.halign = Gtk.Align.CENTER self._entry.props.visible = True self._entry.props.width_request = 500 @@ -68,7 +71,7 @@ class SearchHeaderBar(Handy.HeaderBar): self._selection_menu = SelectionBarMenuButton() self.bind_property( - "selection-mode", self, "show-close-button", + "selection-mode", self._headerbar, "show-end-title-buttons", GObject.BindingFlags.INVERT_BOOLEAN | GObject.BindingFlags.SYNC_CREATE) self.bind_property( @@ -99,7 +102,7 @@ class SearchHeaderBar(Handy.HeaderBar): "notify::search-mode-active", self._on_search_mode_changed) self.connect("notify::search-state", self._search_state_changed) - self._entry.connect("changed", self._search_entry_timeout) + self._entry.connect("search-changed", self._search_entry_changed) @GObject.Property(type=bool, default=False) def selection_mode(self): @@ -164,9 +167,9 @@ class SearchHeaderBar(Handy.HeaderBar): def _update(self): if self.props.selection_mode: - self.props.custom_title = self._selection_menu + self._headerbar.props.title_widget = self._selection_menu else: - self.props.custom_title = self._entry + self._headerbar.props.title_widget = self._entry def _on_selection_mode_allowed_changed(self, widget, data): if self.props.selection_mode_allowed: @@ -174,16 +177,7 @@ class SearchHeaderBar(Handy.HeaderBar): else: self._select_button.props.sensitive = False - def _search_entry_timeout(self, widget): - if self._timeout: - GLib.source_remove(self._timeout) - - self._timeout = GLib.timeout_add( - 500, self._search_entry_changed, widget) - - def _search_entry_changed(self, widget): - self._timeout = None - + def _search_entry_changed(self, widget: Gtk.SearchEntry) -> bool: search_term = self._entry.get_text() if search_term != "": self.props.stack.set_visible_child_name("search") @@ -195,7 +189,6 @@ class SearchHeaderBar(Handy.HeaderBar): def _on_search_mode_changed(self, klass, data): if self.props.search_mode_active: - # self._search_entry.realize() self._entry.grab_focus() def _search_state_changed(self, klass, data): |