def showPopup(self): from sets import Set as set upgrades = list_upgradable() newUpgrades = set(upgrades) - set(self.lastUpgrades) self.lastUpgrades = upgrades if not len(upgrades) or not newUpgrades: return icon = KGlobal.iconLoader().loadIcon("package-manager", KIcon.Desktop, 48) message = i18n("There are <b>%1</b> updates available!").arg(len(upgrades)) self.popup = BalloonMessage(self, icon, message) pos = self.mapToGlobal(self.pos()) self.popup.setAnchor(pos) self.popup.show()
class Tray(KSystemTray): def __init__(self, parent=None): KSystemTray.__init__(self, parent) self.parent = parent self.icon = KGlobal.iconLoader().loadIcon("package-manager", KIcon.Desktop, 24) self.overlayIcon = self.icon.convertToImage() self.setPixmap(self.icon) self.timer = QTimer() self.timer.connect(self.timer, SIGNAL("timeout()"), self.checkUpdate) self.interval = 0 self.lastUpgrades = [] self.popupMenu = KPopupMenu(self.contextMenu()) self.contextMenu().insertItem(i18n("Update"), self.popupMenu) for repo in self.parent.mainwidget.command.getRepoList(): self.popupMenu.insertItem("%s" % repo) self.popupMenu.insertSeparator() self.id = self.popupMenu.insertItem(i18n("All")) self.connect(self.popupMenu, SIGNAL("activated(int)"), self.slotUpdateRepo) def slotUpdateRepo(self, id): if id == self.id: self.checkUpdate(forced=True) else: self.checkUpdate(repo=self.contextMenu().text(id), forced=True) def showPopup(self): from sets import Set as set upgrades = list_upgradable() newUpgrades = set(upgrades) - set(self.lastUpgrades) self.lastUpgrades = upgrades if not len(upgrades) or not newUpgrades: return icon = KGlobal.iconLoader().loadIcon("package-manager", KIcon.Desktop, 48) message = i18n("There are <b>%1</b> updates available!").arg(len(upgrades)) self.popup = BalloonMessage(self, icon, message) pos = self.mapToGlobal(self.pos()) self.popup.setAnchor(pos) self.popup.show() def updateInterval(self, min): # minutes to milliseconds conversion interval = min * 60 * 1000 if interval != self.interval: self.interval = interval self.timer.stop() if interval: self.timer.start(interval) def checkUpdate(self, repo=None, forced=False): manager = self.parent.mainwidget # timer interval check should not be run if any command is in progress if manager.command.inProgress(): return manager.trayUpdateCheck(repo, forced) # stolen from Akregator def updateTrayIcon(self): nofUpgrades = len(list_upgradable()) if not nofUpgrades: self.setPixmap(self.icon) return oldW = self.pixmap().size().width() oldH = self.pixmap().size().height() uStr = QString.number(nofUpgrades) f = KGlobalSettings.generalFont() f.setBold(True) pointSize = f.pointSizeFloat() fm = QFontMetrics(f) w = fm.width(uStr) if w > oldW: pointSize *= float(oldW) / float(w) f.setPointSizeFloat(pointSize) pix = QPixmap(oldW, oldH) pix.fill(Qt.white) p = QPainter(pix) p.setFont(f) p.setPen(Qt.blue) p.drawText(pix.rect(), Qt.AlignCenter, uStr) pix.setMask(pix.createHeuristicMask()) img = QImage(pix.convertToImage()) overlayImg = QImage(self.overlayIcon.copy()) KIconEffect.overlay(overlayImg, img) icon = QPixmap() icon.convertFromImage(overlayImg) self.setPixmap(icon) # for cannot destroy paint device error p = None
class Tray(KSystemTray): def __init__(self, parent=None): KSystemTray.__init__(self, parent) self.parent = parent self.icon = KGlobal.iconLoader().loadIcon("package-manager", KIcon.Desktop, 24) self.overlayIcon = self.icon.convertToImage() self.setPixmap(self.icon) self.timer = QTimer() self.timer.connect(self.timer, SIGNAL("timeout()"), self.checkUpdate) self.interval = 0 self.lastUpgrades = [] def showPopup(self): from sets import Set as set upgrades = list_upgradable() newUpgrades = set(upgrades) - set(self.lastUpgrades) self.lastUpgrades = upgrades if not len(upgrades) or not newUpgrades: return icon = KGlobal.iconLoader().loadIcon("package-manager", KIcon.Desktop, 48) message = i18n("There are <b>%1</b> updates available!").arg(len(upgrades)) self.popup = BalloonMessage(self, icon, message) pos = self.mapToGlobal(self.pos()) self.popup.setAnchor(pos) self.popup.show() def updateInterval(self, min): # minutes to milliseconds conversion interval = min * 60 * 1000 if interval != self.interval: self.interval = interval self.timer.stop() if interval: self.timer.start(interval) def checkUpdate(self): manager = self.parent.mainwidget # if package-manager is being used, do not start update-repo operation, this may annoy users. # And also if a command is in progress do not try to check updates. if not self.parent.isHidden() or manager.command.inProgress(): return manager.trayUpdateCheck() # stolen from Akregator def updateTrayIcon(self): nofUpgrades = len(list_upgradable()) if not nofUpgrades: self.setPixmap(self.icon) return oldW = self.pixmap().size().width() oldH = self.pixmap().size().height() uStr = QString.number(nofUpgrades); f = KGlobalSettings.generalFont() f.setBold(True); pointSize = f.pointSizeFloat() fm = QFontMetrics(f) w = fm.width(uStr) if w > oldW: pointSize *= float(oldW) / float(w) f.setPointSizeFloat(pointSize) pix = QPixmap(oldW, oldH) pix.fill(Qt.white) p = QPainter(pix) p.setFont(f) p.setPen(Qt.blue) p.drawText(pix.rect(), Qt.AlignCenter, uStr) pix.setMask(pix.createHeuristicMask()) img = QImage(pix.convertToImage()) overlayImg = QImage(self.overlayIcon.copy()) KIconEffect.overlay(overlayImg, img) icon = QPixmap() icon.convertFromImage(overlayImg) self.setPixmap(icon) # for cannot destroy paint device error p = None