Mercurial > libervia-backend
diff frontends/quick_frontend/quick_app.py @ 72:f271fff3a713
MUC implementation: first draft
/!\ the experimental muc branche of wokkel must be used
- bridge: new roomJoined signal
- wix: contact list widget is now in a separate file, and manage different kinds of presentation
- wix: chat window now manage group chat (first draft, not working yet)
- wix: constants are now in a separate class, so then can be accessible from everywhere
- wix: new menu to join room (do nothing yet, except entering in a test room)
- new plugin for xep 0045 (MUC), use wokkel experimental MUC branch
- plugins: the profile is now given for get_handler, cause it can be used internally by a plugin (e.g.: xep-0045 plugin)
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 21 Mar 2010 10:28:55 +1100 |
parents | efe81b61673c |
children | 7322a41f8a8e |
line wrap: on
line diff
--- a/frontends/quick_frontend/quick_app.py Sat Mar 06 14:57:23 2010 +1100 +++ b/frontends/quick_frontend/quick_app.py Sun Mar 21 10:28:55 2010 +1100 @@ -42,6 +42,7 @@ self.bridge.register("newContact", self.newContact) self.bridge.register("newMessage", self.newMessage) self.bridge.register("presenceUpdate", self.presenceUpdate) + self.bridge.register("roomJoined", self.roomJoined) self.bridge.register("subscribe", self.subscribe) self.bridge.register("paramUpdate", self.paramUpdate) self.bridge.register("contactDeleted", self.contactDeleted) @@ -80,7 +81,7 @@ ## misc ## self.profiles[profile]['onlineContact'] = set() #FIXME: temporary - #TODO: managed multi-profiles here + #TODO: gof: managed multi-profiles here if self.bridge.isConnected(profile): self.setStatusOnline(True) else: @@ -153,7 +154,7 @@ if not self.__check_profile(profile): return print "check ok" - debug (_("presence update for %(jid)s (show=%(show)s, statuses=%(statuses)s)") % {'jid':jabber_id, 'show':show, 'statuses':statuses}); + debug (_("presence update for %(jid)s (show=%(show)s, priority=%(priority)s, statuses=%(statuses)s) [profile:%(profile)s]") % {'jid':jabber_id, 'show':show, 'priority':priority, 'statuses':statuses, 'profile':profile}); from_jid=JID(jabber_id) debug ("from_jid.short=%(from_jid)s whoami.short=%(whoami)s" % {'from_jid':from_jid.short, 'whoami':self.profiles[profile]['whoami'].short}) @@ -187,13 +188,19 @@ self.CM.update(from_jid, 'nick', cache['nick']) if cache.has_key('avatar'): self.CM.update(from_jid, 'avatar', self.bridge.getAvatarFile(cache['avatar'])) - self.contactList.replace(from_jid) + self.contactList.replace(from_jid, self.CM.getAttr(from_jid, 'groups')) if show=="unavailable" and from_jid in self.profiles[profile]['onlineContact']: self.profiles[profile]['onlineContact'].remove(from_jid) self.CM.remove(from_jid) if not self.CM.isConnected(from_jid): self.contactList.disconnect(from_jid) + + def roomJoined(self, room_id, room_service, room_nicks, user_nick, profile): + """Called when a MUC room is joined""" + debug (_("Room [%(room_name)s] joined by %(profile)s") % {'room_name':room_id+'@'+room_service, 'profile': profile}) + + def subscribe(self, type, raw_jid, profile): """Called when a subsciption maangement signal is received"""