Changeset 9755

Show
Ignore:
Timestamp:
06/03/08 16:15:57 (6 months ago)
Author:
asterix
Message:

improve new gmail e-mail popup window. Fixes #3252

Location:
trunk/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/common/connection_handlers.py

    r9749 r9755  
    13721372                        HAS_IDLE = False 
    13731373 
     1374                self.gmail_last_tid = None 
     1375                self.gmail_last_time = None 
     1376 
    13741377        def build_http_auth_answer(self, iq_obj, answer): 
    13751378                if answer == 'yes': 
     
    15831586                        gajim.log.debug('Got notification of new gmail e-mail on %s. Asking the server for more info.' % jid) 
    15841587                        iq = common.xmpp.Iq(typ = 'get') 
    1585                         iq.setAttr('id', '13') 
     1588                        iq.setID(self.connection.getAnID()) 
    15861589                        query = iq.setTag('query') 
    15871590                        query.setNamespace(common.xmpp.NS_GMAILNOTIFY) 
     1591                        # we want only be notified about newer mails 
     1592                        if self.gmail_last_tid: 
     1593                                query.setAttr('newer-than-tid', self.gmail_last_tid) 
     1594                        if self.gmail_last_time: 
     1595                                query.setAttr('newer-than-time', self.gmail_last_time) 
    15881596                        self.connection.send(iq) 
    15891597                        raise common.xmpp.NodeProcessed 
     
    16021610                                        gmail_messages = gm.getTag('mailbox').getTags('mail-thread-info') 
    16031611                                        for gmessage in gmail_messages: 
    1604                                                 sender = gmessage.getTag('senders').getTag('sender') 
    1605                                                 if not sender: 
     1612                                                unread_senders = [] 
     1613                                                for sender in gmessage.getTag('senders').getTags('sender'): 
     1614                                                        if sender.getAttr('unread') != '1': 
     1615                                                                continue 
     1616                                                        if sender.getAttr('name'): 
     1617                                                                unread_senders.append(sender.getAttr('name') + '< ' + \ 
     1618                                                                        sender.getAttr('address') + '>') 
     1619                                                        else: 
     1620                                                                unread_senders.append(sender.getAttr('address')) 
     1621 
     1622                                                if not unread_senders: 
    16061623                                                        continue 
    1607                                                 gmail_from = sender.getAttr('address') 
    16081624                                                gmail_subject = gmessage.getTag('subject').getData() 
    16091625                                                gmail_snippet = gmessage.getTag('snippet').getData() 
     1626                                                tid = int(gmessage.getAttr('tid')) 
     1627                                                if not self.gmail_last_tid or tid > self.gmail_last_tid: 
     1628                                                        self.gmail_last_tid = tid 
    16101629                                                gmail_messages_list.append({ \ 
    1611                                                         'From': gmail_from, \ 
     1630                                                        'From': unread_senders, \ 
    16121631                                                        'Subject': gmail_subject, \ 
    1613                                                         'Snippet': gmail_snippet}) 
     1632                                                        'Snippet': gmail_snippet, \ 
     1633                                                        'url': gmessage.getAttr('url'), \ 
     1634                                                        'participation': gmessage.getAttr('participation'), \ 
     1635                                                        'messages': gmessage.getAttr('messages'), \ 
     1636                                                        'date': gmessage.getAttr('date')}) 
     1637                                        self.gmail_last_time = int(gm.getTag('mailbox').getAttr( 
     1638                                                'result-time')) 
     1639 
    16141640                                jid = gajim.get_jid_from_account(self.name) 
    16151641                                gajim.log.debug(('You have %s new gmail e-mails on %s.') % (newmsgs, jid)) 
  • trunk/src/gajim.py

    r9748 r9755  
    16491649 
    16501650                        if gajim.config.get('notify_on_new_gmail_email_extra'): 
     1651                                cnt = 0 
    16511652                                for gmessage in gmail_messages_list: 
    1652                                         #FIXME: emulate Gtalk client popups. find out what they parse and how 
    1653                                         #they decide what to show 
    1654                                         # each message has a 'From', 'Subject' and 'Snippet' field 
    1655                                         text += _('\nFrom: %(from_address)s') % \ 
    1656                                                 {'from_address': gmessage['From']} 
     1653                                        #FIXME: emulate Gtalk client popups. find out what they parse and 
     1654                                        # how they decide what to show each message has a 'From', 
     1655                                        # 'Subject' and 'Snippet' field 
     1656                                        if cnt >=5: 
     1657                                                break 
     1658                                        senders = reduce(lambda b, a: a + ',\n     ' + b, 
     1659                                                gmessage['From']) 
     1660                                        text += _('\n\nFrom: %(from_address)s\nSubject: %(subject)s\n%(snippet)s') % \ 
     1661                                                {'from_address': senders, 'subject': gmessage['Subject'], 
     1662                                                'snippet': gmessage['Snippet']}  
     1663                                        cnt += 1  
    16571664 
    16581665                        if gajim.config.get_per('soundevents', 'gmail_received', 'enabled'): 
     
    16601667                        path = gtkgui_helpers.get_path_to_generic_or_avatar(img) 
    16611668                        notify.popup(_('New E-mail'), jid, account, 'gmail', 
    1662                                 path_to_image = path, title = title, text = text) 
     1669                                path_to_image=path, title=title, 
     1670                                text=gobject.markup_escape_text(text)) 
    16631671 
    16641672                if self.remote_ctrl: