added starred

This commit is contained in:
Jeena 2014-08-22 22:04:54 +02:00
parent 5035f1cae2
commit 7c98f0259b

View file

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