added starred
This commit is contained in:
parent
5035f1cae2
commit
7c98f0259b
1 changed files with 41 additions and 20 deletions
|
@ -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):
|
||||||
previous = self.unread_articles[self.index]
|
if self.index > -1:
|
||||||
if not "set_unread" in previous or not previous["set_unread"]:
|
previous = self.unread_articles[self.index]
|
||||||
self.app.tinyTinyRSS.setArticleRead(previous["id"])
|
if not "set_unread" in previous or not previous["set_unread"]:
|
||||||
previous["unread"] = False
|
self.app.tinyTinyRSS.setArticleRead(previous["id"])
|
||||||
self.app.list.updateRead()
|
previous["unread"] = False
|
||||||
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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue