From 7c98f0259ba827a5760ce096c86cc8a9e73b651a Mon Sep 17 00:00:00 2001 From: Jeena Date: Fri, 22 Aug 2014 22:04:54 +0200 Subject: [PATCH] added starred --- feedthemonkey | 61 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/feedthemonkey b/feedthemonkey index 208bd32..c37f4fc 100755 --- a/feedthemonkey +++ b/feedthemonkey @@ -1,4 +1,5 @@ #!/usr/bin/env python2 +# coding: utf-8 try: import urllib.request as urllib2 @@ -62,6 +63,8 @@ class MainWindow(QtGui.QMainWindow): actionMenu = mb.addMenu("&Action") actionMenu.addAction(mkAction("&Reload", self.content.reload, "R")) + actionMenu.addAction(mkAction("Show &Starred", self.content.showStarred, "*")) + actionMenu.addAction(mkAction("Set &Starred", self.content.setUnread, "S")) actionMenu.addAction(mkAction("Set &Unread", self.content.setUnread, "U")) actionMenu.addAction(mkAction("&Next", self.content.showNext, "J")) actionMenu.addAction(mkAction("&Previous", self.content.showPrevious, "K")) @@ -157,11 +160,13 @@ class List(QtGui.QTableWidget): def initHeader(self): self.clear() - self.setColumnCount(3) - self.setHorizontalHeaderLabels(("Feed", "Title", "Date")) + self.setColumnCount(5) + self.setHorizontalHeaderLabels(("*", "Feed", "Title", "Date", "Author")) self.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.ResizeToContents) self.horizontalHeader().setResizeMode(1, QtGui.QHeaderView.Stretch) - self.horizontalHeader().setResizeMode(2, QtGui.QHeaderView.ResizeToContents) + self.horizontalHeader().setResizeMode(2, QtGui.QHeaderView.Stretch) + self.horizontalHeader().setResizeMode(3, QtGui.QHeaderView.ResizeToContents) + self.horizontalHeader().setResizeMode(4, QtGui.QHeaderView.ResizeToContents) self.verticalHeader().hide() def setItems(self, articles): @@ -169,24 +174,27 @@ class List(QtGui.QTableWidget): self.setRowCount(len(articles)) row = 0 for article in articles: + if "marked" in article: + starred = QtGui.QTableWidgetItem("*" if article["marked"] else "") + starred.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) + self.setItem(row, 0, starred) if "feed_title" in article: feed_title = QtGui.QTableWidgetItem(article["feed_title"]) feed_title.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) - self.setItem(row, 0, feed_title) + self.setItem(row, 1, feed_title) if "title" in article: title = QtGui.QTableWidgetItem(article["title"]) title.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) - self.setItem(row, 1, title) + self.setItem(row, 2, title) if "updated" in article: date = QtCore.QDateTime.fromTime_t(article["updated"]).toString(QtCore.Qt.SystemLocaleShortDate) d = QtGui.QTableWidgetItem(date) d.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) - self.setItem(row, 2, d) + self.setItem(row, 3, d) if "author" in article: author = QtGui.QTableWidgetItem(article["author"]) author.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) - self.setItem(row, 3, author) - self.resizeRowToContents(row) + self.setItem(row, 4, author) row += 1 self.selectRow(0) @@ -198,7 +206,7 @@ class List(QtGui.QTableWidget): def updateRead(self): for row, article in enumerate(self.app.content.unread_articles): - for x in xrange(0,3): + for x in xrange(0,5): item = self.item(row, x) font = item.font() font.setBold(article["unread"]) @@ -238,6 +246,11 @@ class Content(QtGui.QWidget): self.connect(w, QtCore.SIGNAL("reload_done()"), self.reload_done) w.start() + def showStarred(self): + w = WorkerThread(self.app, self._showStarred) + self.connect(w, QtCore.SIGNAL("reload_done()"), self.reload_done) + w.start() + def setUnread(self): article = self.unread_articles[self.index] article["unread"] = True @@ -248,20 +261,25 @@ class Content(QtGui.QWidget): self.unread_articles = self.app.tinyTinyRSS.getUnreadFeeds() self.index = -1 + def _showStarred(self): + self.unread_articles = self.app.tinyTinyRSS.getStarredFeeds() + self.index = -1 + def reload_done(self): self.setUnreadCount() - if len(self.unread_articles) > 0: - self.showNext() self.app.list.setItems(self.unread_articles) def showIndex(self, index): - previous = self.unread_articles[self.index] - if not "set_unread" in previous or not previous["set_unread"]: - self.app.tinyTinyRSS.setArticleRead(previous["id"]) - previous["unread"] = False - self.app.list.updateRead() - else: - previous["set_unread"] = False + if self.index > -1: + previous = self.unread_articles[self.index] + if not "set_unread" in previous or not previous["set_unread"]: + self.app.tinyTinyRSS.setArticleRead(previous["id"]) + previous["unread"] = False + else: + previous["set_unread"] = False + + self.app.list.updateRead() + self.index = index current = self.unread_articles[self.index] self.setArticle(current) @@ -443,10 +461,10 @@ class TinyTinyRSS: return json.loads(body)["content"] - def getUnreadFeeds(self): + def getUnreadFeeds(self, view_mode="unread"): unread_articles = [] def more(skip): - return self.doOperation("getHeadlines", {"show_excerpt": False, "view_mode": "unread", "show_content": True, "feed_id": -4, "skip": skip}) + return self.doOperation("getHeadlines", {"show_excerpt": False, "view_mode": view_mode, "show_content": True, "feed_id": -4, "skip": skip}) skip = 0 while True: @@ -460,6 +478,9 @@ class TinyTinyRSS: return unread_articles + def getStarredFeeds(self): + return self.getUnreadFeeds("marked") + def setArticleRead(self, article_id): l = lambda: self.doOperation("updateArticle", {'article_ids':article_id, 'mode': 0, 'field': 2}) t = Thread(target=l)