Mercurial > libervia-web
changeset 213:8bbac49765d6
browser side: display the day change in chat window
fix bug 36
author | souliane <souliane@mailoo.org> |
---|---|
date | Fri, 06 Sep 2013 16:07:35 +0200 |
parents | a05e16f4a343 |
children | 7b26be266ab1 |
files | browser_side/panels.py libervia.py |
diffstat | 2 files changed, 29 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/browser_side/panels.py Fri Sep 06 15:55:45 2013 +0200 +++ b/browser_side/panels.py Fri Sep 06 16:07:35 2013 +0200 @@ -660,8 +660,15 @@ def historyPrint(self, size=20): """Print the initial history""" def getHistoryCB(history): + # display day change + day_format = "%A, %d %b %Y" + previous_day = datetime.now().strftime(day_format) for line in history: timestamp, from_jid, to_jid, message, mess_type = line + message_day = datetime.fromtimestamp(float(timestamp or time())).strftime(day_format) + if previous_day != message_day: + self.printInfo("* " + message_day) + previous_day = message_day self.printMessage(from_jid, message, timestamp) self.host.bridge.call('getHistory', getHistoryCB, self.host.whoami.bare, self.target.bare, size, True)
--- a/libervia.py Fri Sep 06 15:55:45 2013 +0200 +++ b/libervia.py Fri Sep 06 16:07:35 2013 +0200 @@ -101,7 +101,7 @@ LiberviaJsonProxy.__init__(self, "/json_api", ["getContacts", "addContact", "sendMessage", "sendMblog", "sendMblogComment", "getLastMblogs", "getMassiveLastMblogs", "getMblogComments", "getProfileJid", "getHistory", "getPresenceStatus", "joinMUC", "mucLeave", "getRoomsJoined", "launchTarotGame", "getTarotCardsPaths", "tarotGameReady", "tarotGameContratChoosed", "tarotGamePlayCards", - "launchRadioCollective", "getWaitingSub", "subscription", "delContact", "updateContact", "getCard", "getEntityData", "getParamsUI", + "launchRadioCollective", "getWaitingSub", "subscription", "delContact", "updateContact", "getCard", "getEntityData", "getParamsUI", "chatStateComposing", #"setParam", "launchAction", "disconnect", ]) @@ -339,6 +339,8 @@ self._newContactCb(*args) elif name == 'entityDataUpdated': self._entityDataUpdatedCb(*args) + elif name == 'chatStateReceived': + self._chatStateReceivedCb(*args) def _ownBlogsFills(self, mblogs): #put our own microblogs in cache, then fill all panels with them @@ -556,6 +558,25 @@ if lib_wid.isJidAccepted(entity_jid_s) or (self.whoami and entity_jid_s == self.whoami.bare): lib_wid.updateValue('avatar', entity_jid_s, avatar) + def _chatStateReceivedCb(self, from_jid_s, state, profile): + """Callback when a new chat state is received. + @param from_jid_s: JID from the contact who sent his state + @param state: new state + @profile: current profile + """ + _from = JID(from_jid_s).bare if from_jid_s != "@ALL@" else from_jid_s + for lib_wid in self.libervia_widgets: + if isinstance(lib_wid, panels.ChatPanel): + win_from = lib_wid.target.bare + good_win = win_from == _from or _from == "@ALL@" + if (good_win and lib_wid.type == 'one2one'): + if state: + lib_wid.setTitle(win_from + " (" + state + ")") + else: + lib_wid.setTitle(win_from) + elif (lib_wid.type == 'group'): + # TODO: chat state notification for groupchat + pass if __name__ == '__main__': pyjd.setup("http://localhost:8080/libervia.html")