def init(self): self.setHasConfigurationInterface(False) self.resize(125, 125) self.setAspectRatioMode(Plasma.Square) self.setBackgroundHints(Plasma.Applet.TranslucentBackground) self.layout = QGraphicsLinearLayout(self.applet) self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.layout.setOrientation(Qt.Horizontal) self.background = Plasma.IconWidget() self.layout.addItem(self.background) print(self.config().config().name()) popen2.Popen3("xdg-icon-resource install --size 128 facebook_icon.png facebook-plasmoid") self.initSettings() self.background.clicked.connect(self.onClick) self.authManager = AuthenticationManager(self.settings) self.fbManager = FacebookManager(self.settings) self.timer = QTimer() self.timer.setInterval(self.settings["pollinterval"] * 1000) self.timer.timeout.connect(self.fbManager.checkNewNotifications) self.fbManager.notificationsChanged.connect(self.updateIcon) self.fbManager.authExpired.connect(self.authManager.reauthenticate) self.authManager.accessTokenChanged.connect(self.fbManager.updateQueries) self.authManager.accessTokenChanged.connect(self.writeSettings) self.fbManager.queryFailed.connect(self.onQueryFail) self.updateIcon(0) self.fbManager.refreshNotifications() self.timer.start()
class FacebookWidget(plasmascript.Applet): def __init__(self,parent,args=None): plasmascript.Applet.__init__(self,parent) sharedconfig = None def init(self): self.setHasConfigurationInterface(False) self.resize(125, 125) self.setAspectRatioMode(Plasma.Square) self.setBackgroundHints(Plasma.Applet.TranslucentBackground) self.layout = QGraphicsLinearLayout(self.applet) self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.layout.setOrientation(Qt.Horizontal) self.background = Plasma.IconWidget() self.layout.addItem(self.background) print(self.config().config().name()) popen2.Popen3("xdg-icon-resource install --size 128 facebook_icon.png facebook-plasmoid") self.initSettings() self.background.clicked.connect(self.onClick) self.authManager = AuthenticationManager(self.settings) self.fbManager = FacebookManager(self.settings) self.timer = QTimer() self.timer.setInterval(self.settings["pollinterval"] * 1000) self.timer.timeout.connect(self.fbManager.checkNewNotifications) self.fbManager.notificationsChanged.connect(self.updateIcon) self.fbManager.authExpired.connect(self.authManager.reauthenticate) self.authManager.accessTokenChanged.connect(self.fbManager.updateQueries) self.authManager.accessTokenChanged.connect(self.writeSettings) self.fbManager.queryFailed.connect(self.onQueryFail) self.updateIcon(0) self.fbManager.refreshNotifications() self.timer.start() def onClick(self) : print("== Icon Clicked == ") cmd = str(self.settings["browser"]) + " http://www.facebook.com/" print("\tLaunching : " + cmd) popen2.Popen3(cmd) # popen2.Popen3("xdg-open http://www.facebook.com/") def onQueryFail(self) : self.updateIcon(" ") def updateIcon(self, notifications) : pix = QPixmap(self.settings["background_icon"]) canvas = QPainter(pix) canvas.setRenderHint(QPainter.SmoothPixmapTransform) canvas.setRenderHint(QPainter.Antialiasing) rect = pix.rect() canvas.setPen(Qt.red) factor = rect.height() / canvas.fontMetrics().height() f = canvas.font() f.setPointSizeF(f.pointSizeF()*factor) canvas.setFont(f) canvas.drawText(rect, Qt.AlignVCenter | Qt.AlignHCenter, str(notifications)) canvas.end() self.background.setIcon(QIcon(pix)) self.background.update() def writeSettings(self) : settings = self.settings cg = self.config() cg.writeEntry("access_token", settings["access_token"]) cg.writeEntry("pollinterval", settings["pollinterval"]) cg.writeEntry("notification_icon", settings["notification_icon"]) cg.writeEntry("background_icon", settings["background_icon"]) cg.writeEntry("browser", settings["browser"]) cg.writeEntry("notification_body" , settings["notification_body"]) cg.writeEntry("notification_title" , settings["notification_title"]) cg.sync() def initSettings(self) : print("In FacebookWidget::initSettings():") cg = self.config() #cg.sync() settings = {} settings["access_token"] = cg.readEntry("access_token", "").toString() settings["pollinterval"] = int(cg.readEntry("pollinterval", "3").toString()) settings["notification_icon"] = cg.readEntry("notification_icon", unicode(self.package().path()) + "contents/facebook_icon.svg").toString() settings["background_icon"] = cg.readEntry("background_icon", unicode(self.package().path()) + "contents/facebook_icon.svg").toString() settings["browser"] = cg.readEntry("browser", "xdg-open").toString() settings["notification_body"] = cg.readEntry("notification_body", "%title_html%") settings["notification_title"] = cg.readEntry("notification_title", "Facebook") #self.writeSettings(settings) #c.append("access_token=") #self.settings["access_token"] = self.authManager.accessToken() #3 #self.settings["notification_body_element"] = #self.settings["notificatoin_title_element"] #settings["notification_icon"] = unicode(self.package().path()) + "contents/facebook_icon.svg" #unicode(self.package().path()) + "contents/facebook_icon.svg" #"weblaunch" #"" #print(self.settings["pollinterval"]) #print(self.settings["pollinterval"]) self.settings = settings def config(self) : if self.sharedconfig == None : rcpath = KStandardDirs.locateLocal("config", "fb-plasmoidrc") self.sharedconfig = KSharedConfig.openConfig(rcpath) self.initSettings() self.writeSettings() return KConfigGroup(self.sharedconfig, "main")