improved search bar
authorMax Usachev <maxusachev@gmail.com>
Mon, 21 Jun 2010 08:28:15 +0000 (11:28 +0300)
committerMax Usachev <maxusachev@gmail.com>
Mon, 21 Jun 2010 08:28:15 +0000 (11:28 +0300)
ui/hildon_ui.py

index 171f60b..213503f 100644 (file)
@@ -3,6 +3,7 @@ Hildon UI for Meabook
 """
 
 import gtk
+import pango
 import hildon
 import gobject
 from gettext import gettext as _
@@ -55,7 +56,12 @@ class HildonMeabook(MeabookUI):
         self.selector = hildon.TouchSelector()
 
         widgets_box = gtk.VBox()
+        self.search_widgets_box = gtk.HBox()
         self.search_entry = hildon.Entry(gtk.HILDON_SIZE_AUTO)
+        clear_search_entry_container = gtk.EventBox()
+        clear_search_entry_image = gtk.image_new_from_icon_name( \
+            'general_delete', gtk.HILDON_SIZE_FINGER_HEIGHT)
+
 
         # connect signals
         settings_button.connect('clicked', self.show_settings_dialog_cb)
@@ -63,10 +69,16 @@ class HildonMeabook(MeabookUI):
         import_button.connect('clicked', self.show_import_dialog_cb)
         self.handler = self.selector.connect('changed', self.select_item_cb)
         self.search_entry.connect('key-release-event', self.search_item_cb)
+        clear_search_entry_container.connect('button-press-event', \
+            self.clear_search_entry_cb)
 
         # packing widgets
+        clear_search_entry_container.add(clear_search_entry_image)
+        self.search_widgets_box.pack_start(self.search_entry, expand=True)
+        self.search_widgets_box.pack_start(clear_search_entry_container, \
+            expand=False, padding=24)
         widgets_box.pack_start(self.selector, expand=True)
-        widgets_box.pack_end(self.search_entry, expand=False)
+        widgets_box.pack_end(self.search_widgets_box, expand=False)
         self.window.add(widgets_box)
         self.menu.add_filter(self.level1_filter)
         self.menu.add_filter(self.level2_filter)
@@ -108,6 +120,7 @@ class HildonMeabook(MeabookUI):
         # reconnect callback
         selector.handler_unblock(handler)
 
+
     def _show_items_dialog(self, title, items):
         """Creates dialog with items."""
 
@@ -260,7 +273,7 @@ class HildonMeabook(MeabookUI):
             return
 
         self._update_title(' - '.join([_('Meabook'), widget.get_label()]))
-        self.search_entry.hide()
+        self.search_widgets_box.hide()
 
         if widget == self.level1_filter:
             self._set_selector_content(self.selector, self.handler, \
@@ -271,7 +284,7 @@ class HildonMeabook(MeabookUI):
         else:
             self.search_entry.set_text('')
             self.search_entry.set_placeholder(_('Enter search text here'))
-            self.search_entry.show()
+            self.search_widgets_box.show()
             self._set_selector_content(self.selector, self.handler)
 
     def select_item_cb(self, widget, column):
@@ -295,6 +308,11 @@ class HildonMeabook(MeabookUI):
             self.controller.get_all_files_by_pattern(widget.get_text()))
         widget.grab_focus()
 
+    def clear_search_entry_cb(self, widget, event):
+        """Clears search entry content."""
+
+        self.search_entry.set_text('')
+