added avatar in detailed item view
authorMax Usachev <maxusachev@gmail.com>
Thu, 17 Jun 2010 06:55:39 +0000 (09:55 +0300)
committerMax Usachev <maxusachev@gmail.com>
Thu, 17 Jun 2010 06:55:39 +0000 (09:55 +0300)
renderers/hildon_renderer.py
ui/hildon_ui.py

index e56f952..a99c69a 100644 (file)
@@ -6,7 +6,8 @@ import os
 import gtk
 import hildon
 
-ICONS_PATH = '/usr/share/icons/hicolor/48x48/hildon/'
+ICONS_48_PATH = '/usr/share/icons/hicolor/48x48/hildon/'
+ICONS_144_PATH = '/usr/share/icons/hicolor/144x144/hildon/'
 
 class HildonRenderer:
     def __init__(self):
@@ -30,8 +31,7 @@ class HildonRenderer:
             'roomNumber': 'general_presence_home.png',
             'gender': 'camera_scene_mode_portrait.png',
             'title': 'general_certificate.png',
-            'personalTitle': 'general_certificate.png'
-        }
+            'personalTitle': 'general_certificate.png'}
 
     def render_button(self, title, value, field=None):
         """Set necessary image for field."""
@@ -42,8 +42,14 @@ class HildonRenderer:
         button.set_style(hildon.BUTTON_STYLE_PICKER)
         button.set_alignment(0, 0.5, 0, 0)
         if field is not None:
-            image = gtk.image_new_from_file(os.path.join(ICONS_PATH,
+            image = gtk.image_new_from_file(os.path.join(ICONS_48_PATH,
                 self.fields_dict.get(field, 'general_business_card.png')))
             button.set_image(image)
         return button
 
+    def render_image(self, entry):
+        """Sets entry image."""
+
+        fname = os.path.join(ICONS_144_PATH, entry.get('image', \
+            'general_default_avatar.png'))
+        return gtk.image_new_from_file(fname)
index 918fb66..3cdc6e1 100644 (file)
@@ -115,16 +115,26 @@ class HildonMeabook(MeabookUI):
             func2(parent, entry_id)
 
         def update_entry(window, entry_id):
+            # create widgets
+            entry = self.controller.get_item(entry_id)
+            widgets_table = gtk.Table(rows=1, columns=1)
+            info_box = gtk.VBox()
+            image_box = gtk.VBox()
             pannable_area = hildon.PannableArea()
-            vbox = gtk.VBox()
-            for fname, fvalue in self.controller.get_item(entry_id):
+            image = self.renderer.render_image(dict(entry))
+            for fname, fvalue in entry:
                 button = self.renderer.render_button(_(fname) , fvalue, fname)
-                vbox.pack_start(button, expand=False)
-            pannable_area.add_with_viewport(vbox)
+                info_box.pack_start(button, expand=False)
+            # pack widgets
+            image_box.pack_start(image, expand=False)
+            widgets_table.attach(image_box, 0, 1, 0, 1, xoptions=gtk.SHRINK, \
+                yoptions=gtk.FILL, ypadding=8)
+            pannable_area.add_with_viewport(info_box)
+            widgets_table.attach(pannable_area, 1, 2, 0, 1, ypadding=8)
             child = window.get_child()
             if child:
                 child.destroy()
-            window.add(pannable_area)
+            window.add(widgets_table)
             pannable_area.show_all()