changeset 43:8a438a6ff587

Wix: added avatar in profile - plugin XEP-0054: added getProfileFile bridge method
author Goffi <goffi@goffi.org>
date Mon, 21 Dec 2009 15:11:50 +1100
parents 874de3020e1c
children bfa7086d26d6
files frontends/sat_bridge_frontend/DBus.py frontends/wix/profile.py plugins/plugin_xep_0054.py
diffstat 3 files changed, 27 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/frontends/sat_bridge_frontend/DBus.py	Mon Dec 21 13:22:11 2009 +1100
+++ b/frontends/sat_bridge_frontend/DBus.py	Mon Dec 21 15:11:50 2009 +1100
@@ -64,6 +64,9 @@
     def getProfile(self, target):
         return self.db_comm_iface.getProfile(target)
 
+    def getAvatarFile(self, hash):
+        return self.db_comm_iface.getAvatarFile(hash)
+
     def in_band_register(self, target):
         return self.db_comm_iface.in_band_register(target)
     
--- a/frontends/wix/profile.py	Mon Dec 21 13:22:11 2009 +1100
+++ b/frontends/wix/profile.py	Mon Dec 21 15:11:50 2009 +1100
@@ -37,7 +37,8 @@
                            'birthday' : 'Birthday',
                            'phone' : 'Phone #',
                            'website' : 'Website',
-                           'email' : 'E-mail'
+                           'email' : 'E-mail',
+                           'avatar' : 'Avatar'
                          }
         self.ctl_list = {}  # usefull to access ctrl, key = (name)
 
@@ -69,6 +70,15 @@
             sizer.Add(label)
             self.ctl_list[field] = wx.TextCtrl(generaltab, -1, value, style = flags)
             sizer.Add(self.ctl_list[field], 1, flag = wx.EXPAND)
+        #Avatar
+        if data.has_key('avatar'):
+            filename = self.host.bridge.getAvatarFile(data['avatar'])
+            label=wx.StaticText(generaltab, -1, self.name_dict['avatar']+": ")
+            sizer.Add(label)
+            img = wx.Image(filename).ConvertToBitmap()
+            self.ctl_list['avatar'] = wx.StaticBitmap(generaltab, -1, img)
+            sizer.Add(self.ctl_list['avatar'], 0)
+
 
         
         self.notebook.AddPage(generaltab, "General")
--- a/plugins/plugin_xep_0054.py	Mon Dec 21 13:22:11 2009 +1100
+++ b/plugins/plugin_xep_0054.py	Mon Dec 21 15:11:50 2009 +1100
@@ -61,6 +61,7 @@
         if not os.path.exists(self.avatar_path):
             os.makedirs(self.avatar_path)
         host.bridge.addMethod("getProfile", ".communication", in_sign='s', out_sign='s', method=self.getProfile)
+        host.bridge.addMethod("getAvatarFile", ".communication", in_sign='s', out_sign='s', method=self.getAvatarFile)
     
     def getDiscoInfo(self, requestor, target, nodeIdentifier=''):
         return [disco.DiscoFeature(NS_VCARD)]
@@ -110,7 +111,7 @@
                 d2 = defer.waitForDeferred(
                             threads.deferToThread(self.save_photo, elem))
                 yield d2
-                dictionary["photo"] = d2.getResult()
+                dictionary["avatar"] = d2.getResult()
             else:
                 info ('FIXME: [%s] VCard tag is not managed yet' % elem.name)
 
@@ -145,3 +146,14 @@
         reg_request.send(to_jid.full()).addCallbacks(self.vcard_ok, self.vcard_err)
         return reg_request["id"] 
 
+    def getAvatarFile(self, hash):
+        """Give the full path of avatar from hash
+        @param hash: SHA1 hash
+        @return full_path
+        """
+        filename = self.avatar_path+'/'+hash
+        if not os.path.exists(filename):
+            error ("Asking for an uncached avatar [%s]" %  hash)
+            return ""
+        return filename
+