~ubuntu-branches/ubuntu/saucy/hplip/saucy-proposed

« back to all changes in this revision

Viewing changes to ui4/systemtray.py

  • Committer: Package Import Robot
  • Author(s): Mark Purcell
  • Date: 2012-05-26 11:20:39 UTC
  • mfrom: (1.5.6) (31.1.3 precise)
  • Revision ID: package-import@ubuntu.com-20120526112039-bevxczegxnbyr5m7
Tags: 3.12.4-1
* New upstream release
* Switch to source/format 3.0 (quilt) - drop dpatch
* Refreshed debian/patches
* dh_autoreconf debian/autogen.sh & set local-options single-debian-patch
* Update to debian/compat -> 9
* Fix "hardened build flags" patch from Moritz - thanks (Closes: #667828)
* Fix "duplex descriptor uninitialized" patch from Matej (Closes: #583273)
* Fix "please migrate to kde-runtime" patch from Pino (Closes: #666544)

Show diffs side-by-side

added added

removed removed

Lines of Context:
74
74
BLIP_DELAY = 2000
75
75
SET_MENU_DELAY = 1000
76
76
MAX_MENU_EVENTS = 10
 
77
UPGRADE_CHECK_DELAY=24*60*60*1000               #1 day
77
78
 
78
79
ERROR_STATE_TO_ICON = {
79
80
    ERROR_STATE_CLEAR:        QSystemTrayIcon.Information,
205
206
class SystraySettingsDialog(QDialog):
206
207
    def __init__(self, parent, systray_visible, polling,
207
208
                 polling_interval, systray_messages,
208
 
                 device_list=None):
 
209
                 device_list=None,
 
210
                 upgrade_notify=True,
 
211
                 upgrade_pending_time=0,
 
212
                 upgrade_last_update_time=0,
 
213
                 upgrade_msg=""
 
214
                 ):
 
215
#                 upgrade_pending_update_time=0,
 
216
 
209
217
 
210
218
        QDialog.__init__(self, parent)
211
219
 
219
227
 
220
228
        self.polling = polling
221
229
        self.polling_interval = polling_interval
 
230
        self.upgrade_notify =upgrade_notify
 
231
        self.upgrade_last_update_time=upgrade_last_update_time
 
232
        self.upgrade_pending_time=upgrade_pending_time
 
233
        self.upgrade_msg=upgrade_msg
222
234
 
223
235
        self.initUi()
224
236
        self.SystemTraySettings.updateUi()
235
247
        self.SystemTraySettings.initUi(self.systray_visible,
236
248
                                       self.polling, self.polling_interval,
237
249
                                       self.device_list,
238
 
                                       self.systray_messages)
 
250
                                       self.systray_messages,
 
251
                                       self.upgrade_notify,
 
252
                                       self.upgrade_pending_time,
 
253
                                       self.upgrade_msg)
239
254
 
240
255
        sizePolicy = QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
241
256
        sizePolicy.setHorizontalStretch(0)
260
275
        #QMetaObject.connectSlotsByName(self)
261
276
 
262
277
        self.setWindowTitle(self.__tr("HP Device Manager - System Tray Settings"))
 
278
        self.setWindowIcon(QIcon(load_pixmap('hp_logo', '128x128')))
 
279
#        pm = load_pixmap("hp_logo", "32x32")
 
280
#        self.prop_icon = QIcon(pm)
263
281
 
264
282
 
265
283
    def acceptClicked(self):
268
286
        self.polling_interval = self.SystemTraySettings.polling_interval
269
287
        self.device_list = self.SystemTraySettings.device_list
270
288
        self.systray_messages = self.SystemTraySettings.systray_messages
 
289
        self.upgrade_notify =self.SystemTraySettings.upgrade_notify
271
290
        self.accept()
272
291
 
273
292
 
276
295
 
277
296
 
278
297
 
 
298
 
279
299
class SystemTrayApp(QApplication):
280
300
    def __init__(self, args, read_pipe):
281
301
        QApplication.__init__(self, args)
325
345
        self.tray_icon.setIcon(self.prop_active_icon)
326
346
        self.active_icon = True
327
347
 
 
348
        self.handle_hplip_updation()
328
349
        QTimer.singleShot(SET_MENU_DELAY, self.initDone)
329
350
 
 
351
        self.timer = QTimer()
 
352
        self.timer.connect(self.timer,SIGNAL("timeout()"),self.handle_hplip_updation)
 
353
        self.timer.start(UPGRADE_CHECK_DELAY)
 
354
 
 
355
 
330
356
 
331
357
    def initDone(self):
332
358
        self.tray_icon.setIcon(self.prop_icon)
344
370
            devices[device_uri].needs_update = True
345
371
 
346
372
 
 
373
    def handle_hplip_updation(self):
 
374
        log.debug("handle_hplip_updation upgrade_notify =%d"%(self.user_settings.upgrade_notify))
 
375
        path = utils.which('hp-upgrade')
 
376
        if self.user_settings.upgrade_notify is False:
 
377
            log.debug("upgrade notification is disabled in systray ")
 
378
            if path:
 
379
                path = os.path.join(path, 'hp-upgrade')
 
380
                log.debug("Running hp-upgrade: %s " % (path))
 
381
                # this just updates the available version in conf file. But won't notify
 
382
                os.spawnlp(os.P_NOWAIT, path, 'hp-upgrade', '--check')
 
383
            return
 
384
            
 
385
            
 
386
        current_time = time.time()
 
387
    
 
388
        if int(current_time) > self.user_settings.upgrade_pending_update_time:
 
389
            path = utils.which('hp-upgrade')
 
390
            if path:
 
391
                path = os.path.join(path, 'hp-upgrade')
 
392
                log.debug("Running hp-upgrade: %s " % (path))
 
393
                os.spawnlp(os.P_NOWAIT, path, 'hp-upgrade', '--notify')
 
394
                
 
395
            else:
 
396
                log.error("Unable to find hp-upgrade --notify on PATH.")
 
397
        else:
 
398
            log.debug("upgrade schedule time is not yet completed. schedule time =%d current time =%d " %(self.user_settings.upgrade_pending_update_time, current_time))
 
399
        
 
400
 
 
401
 
 
402
 
 
403
 
347
404
 
348
405
    def setMenu(self):
349
406
        self.menu = QMenu()
350
407
 
351
 
        title = QWidgetAction(self.menu)
 
408
        title = QAction(self.menu)
352
409
        #title.setDisabled(True)
353
 
 
354
 
        hbox = QFrame(self.menu)
355
 
        layout = QHBoxLayout(hbox)
356
 
        layout.setMargin(3)
357
 
        layout.setSpacing(5)
358
 
        pix_label = QLabel(hbox)
359
 
 
360
 
        layout.insertWidget(-1, pix_label, 0)
361
 
 
362
 
        icon_size = self.menu.style().pixelMetric(QStyle.PM_SmallIconSize)
363
 
        pix_label.setPixmap(self.prop_icon.pixmap(icon_size))
364
 
 
365
 
        label = QLabel(hbox)
366
 
        layout.insertWidget(-1, label, 20)
367
 
        title.setDefaultWidget(hbox)
368
 
 
369
 
        label.setText(self.__tr("HPLIP Status Service"))
370
 
 
371
 
        f = label.font()
372
 
        f.setBold(True)
373
 
        label.setFont(f)
 
410
        title.setText(self.__tr("HPLIP Status Service"))
 
411
        title.setIcon(self.prop_icon)
 
412
        title.setIconVisibleInMenu(True)
374
413
        self.menu.insertAction(None, title)
375
414
 
376
415
        if devices:
417
456
            return
418
457
 
419
458
        self.sendMessage('', '', EVENT_DEVICE_STOP_POLLING)
 
459
#        sys_conf
 
460
        cur_vers = sys_conf.get('hplip', 'version')
 
461
        self.user_settings.load()
 
462
        installed_time =time.strftime("%d-%m-%Y", time.localtime(self.user_settings.upgrade_last_update_time))
 
463
        if utils.Is_HPLIP_older_version(cur_vers, self.user_settings.latest_available_version):
 
464
            if int(time.time()) < self.user_settings.upgrade_pending_update_time :
 
465
                postponed_time =time.strftime("%d-%m-%Y", time.localtime(self.user_settings.upgrade_pending_update_time))
 
466
                upgrade_msg ="HPLIP-%s version was installed on %s.\n\nNew version of HPLIP-%s is available for upgrade. HPLIP upgrade is scheduled on %s." %(cur_vers,installed_time , self.user_settings.latest_available_version, postponed_time)
 
467
            elif self.user_settings.upgrade_last_update_time:
 
468
                upgrade_msg ="HPLIP-%s version was installed on %s.\n\nNew version of HPLIP-%s is available for upgrade." %(cur_vers,installed_time , self.user_settings.latest_available_version)
 
469
            else:
 
470
                upgrade_msg ="HPLIP-%s version was installed.\n\nNew version of HPLIP-%s is available for upgrade." %(cur_vers, self.user_settings.latest_available_version)
 
471
        elif self.user_settings.upgrade_last_update_time:
 
472
            upgrade_msg ="HPLIP-%s version was installed on %s."%(cur_vers, installed_time)
 
473
        else: 
 
474
            upgrade_msg ="HPLIP-%s version was installed."%(cur_vers)
 
475
            
 
476
        
420
477
        try:
421
478
            dlg = SystraySettingsDialog(self.menu, self.user_settings.systray_visible,
422
479
                                        self.user_settings.polling, self.user_settings.polling_interval,
423
480
                                        self.user_settings.systray_messages,
424
 
                                        self.user_settings.polling_device_list)
 
481
                                        self.user_settings.polling_device_list,
 
482
                                        self.user_settings.upgrade_notify,
 
483
                                        self.user_settings.upgrade_pending_update_time,
 
484
                                        self.user_settings.upgrade_last_update_time,
 
485
                                        upgrade_msg)
 
486
 
425
487
 
426
488
            if dlg.exec_() == QDialog.Accepted:
427
489
                self.user_settings.systray_visible = dlg.systray_visible
428
490
                self.user_settings.systray_messages = dlg.systray_messages
429
 
 
 
491
                self.user_settings.upgrade_notify = dlg.upgrade_notify
 
492
        
 
493
                log.debug("HPLIP update  notification = %d"%(self.user_settings.upgrade_notify))
430
494
                self.user_settings.save()
431
495
 
432
496
                if self.user_settings.systray_visible == SYSTRAY_VISIBLE_SHOW_ALWAYS:
473
537
 
474
538
        elif reason == QSystemTrayIcon.Trigger:
475
539
            #print "single click"
 
540
            self.updateMenu()
 
541
            if not self.menu is None:
 
542
                self.menu.popup(QCursor.pos())
476
543
            pass
477
544
 
478
545
        elif reason == QSystemTrayIcon.MiddleClick: