~jconti/ubuntu/precise/emesene/fix-956422

« back to all changes in this revision

Viewing changes to plugins_base/mailChecker.py

  • Committer: Bazaar Package Importer
  • Author(s): Devid Antonio Filoni
  • Date: 2010-04-14 01:33:51 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20100414013351-r2icbt5gs4ai71j8
Tags: 1.6.1-0ubuntu1
* New upstream release (LP: #562646).
* Fix missing-debian-source-format lintian warning.
* Refresh 20_dont_build_own_libmimic.patch patch.
* Bump Standards-Version to 3.8.4.

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
            
57
57
        self.enabled = True
58
58
        if self.isbutt == 0 :
59
 
            '''create the gui look'''
 
59
            #create the gui look
60
60
            self.Mbox = gtk.HBox(homogeneous=False, spacing=5)
61
61
            self.controller.mainWindow.vbox.pack_start(self.Mbox, False, False)
62
62
            self.Mbox.show_all()
68
68
            self.img.set_pixel_size(10)
69
69
            self.button.set_image(self.img)
70
70
            self.button.connect('clicked', self.Mcheck , None)
 
71
            self.button.set_tooltip_text(_('Click here to checked your mail'))
71
72
            self.Mbox.pack_start(self.button, False, False)
72
73
            self.button.show_all()
73
74
            
74
75
            self.Tbutton = gtk.Button()
75
76
            self.Tbutton.connect('clicked', self.Client , None)
 
77
            self.Tbutton.set_tooltip_text(_('Click here to access your mail'))
76
78
            self.Mtext = gtk.Label(_('Not checked yet.'))
77
79
            self.Mtext.set_ellipsize( pango.ELLIPSIZE_END )
78
80
            self.Mtext.set_use_underline(True)
90
92
            self.name, 'time', '5' ))
91
93
        self.source_id = gobject.timeout_add(self.interval, 
92
94
                self.Mcheck, self , None)
 
95
        # Are notifications enabled?
 
96
        self.notifications = bool(int(self.config.getPluginValue(self.name, \
 
97
            'notifications', '0' )))
 
98
             
93
99
 
94
100
    def Client( self , widget , data=None):
95
101
        os.popen(self.config.getPluginValue( self.name, 
103
109
            
104
110
        return True
105
111
    
 
112
    def IMAP4_connect(self, server_name, use_ssl):
 
113
        '''chooses the righ connection depending on the parameter use_ssl'''
 
114
        if use_ssl == True: return IMAP4_SSL(server_name)
 
115
        else: return IMAP4(server_name)
 
116
    
106
117
    def function( self, data ):
107
118
        '''this function will run on a thread and the result will be passed
108
119
        to the callback function'''
117
128
 
118
129
        try:
119
130
            try:
120
 
                if use_ssl: server = IMAP4_SSL(server_name)
121
 
                else: server = IMAP4(server_name)
 
131
                server = self.IMAP4_connect(server_name, use_ssl)
122
132
                server.login(user_name, password) 
123
133
            except:
124
134
                if '@' in user_name:
125
135
                    old_server_name = server_name
126
136
                    user_name, server_name = user_name.split('@')
127
137
                    try:
128
 
                        server = IMAP4(server_name)
 
138
                        server = self.IMAP4_connect(server_name, use_ssl)
129
139
                        server.login(user_name, password) 
130
140
                    except:
131
 
                        server = IMAP4(old_server_name)
 
141
                        server = self.IMAP4_connect(old_server_name, use_ssl)
132
142
                        server.login(user_name, password) 
133
143
                else:
134
144
                    raise
138
148
            r = server.select()
139
149
            if r[0] == 'OK' :
140
150
                answer, data = server.search(None, "(UNSEEN)") # Get unread msgs
141
 
                if data[0] == '': numList = []
142
 
                else: numList = [int(k) for k in data[0].split(' ')]
 
151
                # numList contains the identifiers of unread messages
 
152
                try: numList = [int(k) for k in data[0].split(' ')]
 
153
                except: numList = []
143
154
 
144
 
                numMes = len(numList)
 
155
                numMes = len(numList) #number of unread messages
145
156
                
146
157
                numList = numList[-5:] # Consider only 5 newest
147
158
                numList.reverse() # newer messages first
174
185
            if numMes >= 1 :
175
186
                params = {'num': numMes, 'user': self.config.getPluginValue(\
176
187
                    self.name, 'user','user')}
177
 
                self.Mtext.set_label(_('%(num)s messages for %(user)s') % params)
 
188
                self.Mtext.set_label(\
 
189
                    _('%(num)s new messages for %(user)s') % params)
178
190
                self.Tbutton.set_tooltip_text(mail)
 
191
                
 
192
                if self.notificationsAvailable() and self.notifications:
 
193
                    self.notification_plugin.notify('', _('New email messages'), \
 
194
                        _('There are %(num)s new messages for %(user)s') % params)
179
195
            else:
180
 
                self.Mtext.set_label( _('No messages for %s') %  \
 
196
                self.Mtext.set_label( _('No new messages for %s') %  \
181
197
                    self.config.getPluginValue( self.name, 'user', 'user'))
182
198
                self.Tbutton.set_tooltip_text(_('No new messages'))
183
199
   
 
200
    def notificationsAvailable(self):
 
201
        '''Returns true if NotifyOsdImproved is available and enabled'''
 
202
        self.notification_plugin = \
 
203
            self.controller.pluginManager.getPlugin("NotifyOsdImproved")
 
204
        if self.notification_plugin and self.notification_plugin.enabled:
 
205
            return True
 
206
        else: return False
 
207
    
184
208
    def stop( self ):
185
209
        self.enabled = False
186
210
        gobject.source_remove(self.source_id)
194
218
        dataM = []
195
219
        dataM.append( Plugin.Option( 'use_ssl', bool, _('Use SSL'), '', \
196
220
            bool(int(self.config.getPluginValue(self.name, 'use_ssl', '1' )))) )
 
221
        dataM.append( Plugin.Option( 'notifications', bool, \
 
222
            _('Email notification - requires: ') + _('NotifyOsdImproved'), '', \
 
223
            bool(int(self.config.getPluginValue(self.name, \
 
224
            'notifications', '0' )))) )
197
225
        dataM.append( Plugin.Option( 'time', str, _('Check every [min]:'), '',\
198
226
            self.config.getPluginValue( self.name, 'time', '5' )) )
199
227
        dataM.append( Plugin.Option( 'server', str, _('IMAP server:'), '', \
230
258
            self.config.setPluginValue(self.name, 'pass', passwd )
231
259
            self.config.setPluginValue(self.name, 'client', r['client'].value)
232
260
            self.config.setPluginValue(self.name, 'use_ssl', str(int(r['use_ssl'].value)))
 
261
            self.notifications = r['notifications'].value
 
262
            self.config.setPluginValue(self.name, 'notifications', \
 
263
                str(int(self.notifications)))
 
264
                 
233
265
            
234
266
        #self.start()
235
267
        return True