From: Ivan Frade Date: Mon, 7 Sep 2009 22:50:50 +0000 (+0300) Subject: Search only after 3 or more characters X-Git-Tag: mussorgsky-0.3-1~9 X-Git-Url: https://vcs.maemo.org/git/?p=mussorgsky;a=commitdiff_plain;h=a40d0d7ecb205b7a7ea4c0e1b655df924bbf20ff Search only after 3 or more characters Add new column in the model to speed up the search --- diff --git a/src/browse_panel.py b/src/browse_panel.py index 521dd1c..0695244 100755 --- a/src/browse_panel.py +++ b/src/browse_panel.py @@ -16,26 +16,20 @@ class MussorgskyBrowsePanel (hildon.StackableWindow): self.artist_set = Set () self.albums_set = Set () - # (uri, "Music", artist, title, album, mimetype) + "string" - full_model = gtk.ListStore (str, str, str, str, str, str, str) + # (uri, "Music", artist, title, album, mimetype) + "string" + search_string + self.full_model = gtk.ListStore (str, str, str, str, str, str, str, str) for (uri, category, artist, title, album, mime) in songs_list: text = "%s\n%s" % (escape_html (title), escape_html (artist) + " / " + escape_html (album)) - full_model.append ((uri, category, artist, title, album, mime, text)) + search_str = artist.lower () + " " + title.lower () + " " + album.lower () + self.full_model.append ((uri, category, artist, title, album, mime, text, search_str)) self.artist_set.insert (artist) self.albums_set.insert (album) - self.filtered_model = full_model.filter_new () + self.filtered_model = self.full_model.filter_new () self.treeview.set_model (self.filtered_model) - self.treeview.set_fixed_height_mode (True) - print self.filtered_model - self.filtered_model.connect ("row_changed", self.row_changed_cb) self.kpid = self.connect ("key-press-event", self.key_pressed_cb) - def row_changed_cb (self, model, path, it): - print "In", self.__class__,"row-changed: ", model, path - - def __create_view (self): vbox = gtk.VBox (homogeneous=False) @@ -67,10 +61,15 @@ class MussorgskyBrowsePanel (hildon.StackableWindow): self.add (vbox) def search_type (self, widget): - print "Search" + if len (widget.get_text()) == 0: + self.treeview.set_model (self.full_model) + return + + if (len (widget.get_text ()) < 3): + return self.filtered_model.set_visible_func (self.entry_equals, widget) self.filtered_model.refilter () - #self.treeview.set_model (self.filtered_model) + self.treeview.set_model (self.filtered_model) def close_search_cb (self, widget): assert not self.search_box_visible @@ -88,14 +87,13 @@ class MussorgskyBrowsePanel (hildon.StackableWindow): self.search_hbox.set_no_show_all (False) self.search_hbox.show_all () - print "key:", gtk.gdk.keyval_name(event.keyval) self.search_entry.grab_focus () self.search_entry.connect ("changed", self.search_type) self.disconnect (self.kpid) def entry_equals (self, model, it, user_data): t = user_data.get_text () - return t.lower () in model.get_value (it, 6).lower() + return t.lower () in model.get_value (it, 7) def row_activated_cb (self, treeview, path, view_colum): edit_view = MussorgskyEditPanel () @@ -103,14 +101,7 @@ class MussorgskyBrowsePanel (hildon.StackableWindow): edit_view.set_album_alternatives (self.albums_set.as_list ()) edit_view.set_model (self.treeview.get_model (), self.treeview.get_model ().get_iter (path)) edit_view.show_all () - edit_view.connect ("destroy", self.after_edit) - - def after_edit (self, widget): - while (gtk.events_pending()): - gtk.main_iteration() - self.treeview.queue_draw () - while (gtk.events_pending()): - gtk.main_iteration() + if __name__ == "__main__":