setdefaulttimeout(timeout)
del timeout
+import xml.sax
+
LIST_ICON_SIZE = 32
LIST_ICON_BORDER = 10
gtk.ICON_LOOKUP_USE_BUILTIN)
self.feedItems.clear()
+ feedInfo = {}
+ count = 0
for key in self.listing.getListOfFeeds():
unreadItems = self.listing.getFeedNumberOfUnreadItems(key)
if unreadItems > 0 or not self.config.getHideReadFeeds():
+ count=count+1
title = self.listing.getFeedTitle(key)
updateTime = self.listing.getFeedUpdateTime(key)
-
+ updateStamp = self.listing.getFeedUpdateStamp(key)
subtitle = '%s / %d unread items' % (updateTime, unreadItems)
+ feedInfo[key] = [count, unreadItems, updateStamp, title, subtitle, updateTime];
+
+ order = self.config.getFeedSortOrder();
+ if order == "Most unread":
+ keyorder = sorted(feedInfo, key = lambda k: feedInfo[k][1], reverse=True)
+ elif order == "Least unread":
+ keyorder = sorted(feedInfo, key = lambda k: feedInfo[k][1])
+ elif order == "Most recent":
+ keyorder = sorted(feedInfo, key = lambda k: feedInfo[k][2], reverse=True)
+ elif order == "Least recent":
+ keyorder = sorted(feedInfo, key = lambda k: feedInfo[k][2])
+ else: # order == "Manual" or invalid value...
+ keyorder = sorted(feedInfo, key = lambda k: feedInfo[k][0])
+
+ for key in keyorder:
+ unreadItems = feedInfo[key][1]
+ title = xml.sax.saxutils.escape(feedInfo[key][3])
+ subtitle = feedInfo[key][4]
+ updateTime = feedInfo[key][5]
+ if unreadItems:
+ markup = FEED_TEMPLATE_UNREAD % (title, subtitle)
+ else:
+ markup = FEED_TEMPLATE % (title, subtitle)
- if unreadItems:
- markup = FEED_TEMPLATE_UNREAD % (title, subtitle)
- else:
- markup = FEED_TEMPLATE % (title, subtitle)
-
- try:
- icon_filename = self.listing.getFavicon(key)
- pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_filename, \
- LIST_ICON_SIZE, LIST_ICON_SIZE)
- except:
- pixbuf = default_pixbuf
+ try:
+ icon_filename = self.listing.getFavicon(key)
+ pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_filename, \
+ LIST_ICON_SIZE, LIST_ICON_SIZE)
+ except:
+ pixbuf = default_pixbuf
- self.feedItems.append((pixbuf, markup, key))
+ self.feedItems.append((pixbuf, markup, key))
def on_feedList_row_activated(self, treeview, path, column):
model = treeview.get_model()
VERSION = "0.6.1"
section = "FeedingIt"
-ranges = { "updateInterval":[0.5, 1, 2, 4, 12, 24], "expiry":[24, 48, 72], "fontSize":range(12,24), "orientation":["Automatic", "Landscape", "Portrait"], "artFontSize":[10, 12, 14, 16, 18, 20]}
-titles = {"updateInterval":"Auto-update interval", "expiry":"Delete articles", "fontSize":"List font size", "orientation":"Display orientation", "artFontSize":"Article font size"}
-subtitles = {"updateInterval":"Every %s hours", "expiry":"After %s hours", "fontSize":"%s pixels", "orientation":"%s", "artFontSize":"%s pixels"}
+ranges = { "updateInterval":[0.5, 1, 2, 4, 12, 24], "expiry":[24, 48, 72], "fontSize":range(12,24), "orientation":["Automatic", "Landscape", "Portrait"], "artFontSize":[10, 12, 14, 16, 18, 20], "feedsort":["Manual", "Most unread", "Least unread", "Most recent", "Least recent"] }
+titles = {"updateInterval":"Auto-update interval", "expiry":"Delete articles", "fontSize":"List font size", "orientation":"Display orientation", "artFontSize":"Article font size","feedsort":"Feed sort order"}
+subtitles = {"updateInterval":"Every %s hours", "expiry":"After %s hours", "fontSize":"%s pixels", "orientation":"%s", "artFontSize":"%s pixels", "feedsort":"%s"}
class Config():
def __init__(self, parent, configFilename):
add_setting('fontSize')
add_setting('artFontSize')
add_setting('orientation')
+ add_setting('feedsort')
button = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
button.set_label("Hide read feeds")
button.set_active(self.config["hidereadfeeds"])
except:
self.config["hidereadfeeds"] = False
self.config["hidereadarticles"] = False
+ try:
+ self.config["feedsort"] = configParser.get(section, "feedsort")
+ except:
+ self.config["feedsort"] = "Manual"
def saveConfig(self):
configParser = RawConfigParser()
configParser.set(section, 'proxy', str(self.config["proxy"]))
configParser.set(section, 'hidereadfeeds', str(self.config["hidereadfeeds"]))
configParser.set(section, 'hidereadarticles', str(self.config["hidereadarticles"]))
+ configParser.set(section, 'feedsort', str(self.config["feedsort"]))
# Writing our configuration file
file = open(self.configFilename, 'wb')
return self.config["hidereadfeeds"]
def getHideReadArticles(self):
return self.config["hidereadarticles"]
+ def getFeedSortOrder(self):
+ return self.config["feedsort"]
self.url = url
self.countUnread = 0
self.updateTime = "Never"
+ self.updateStamp = 0
self.uniqueId = uniqueId
self.etag = None
self.modified = None
del tmp
self.countUnread = tmpUnread
self.updateTime = time.asctime()
+ self.updateStamp = currentTime
self.saveFeed(configdir)
from glob import glob
from os import stat
def getUpdateTime(self):
return self.updateTime
+ def getUpdateStamp(self):
+ try:
+ return self.updateStamp
+ except:
+ self.updateStamp = 0
+ return self.updateStamp
+
def getEntries(self):
return self.entries
# if currentTime - entry["time"] > 2*expiry:
# self.removeEntry(id)
self.updateTime = time.asctime()
+ self.updateStamp = time.time()
self.saveFeed(configdir)
def purgeReadArticles(self):
feed.updateFeed(self.configdir, expiryTime, proxy, imageCache)
self.listOfFeeds[key]["unread"] = feed.getNumberOfUnreadItems()
self.listOfFeeds[key]["updateTime"] = feed.getUpdateTime()
+ self.listOfFeeds[key]["updateStamp"] = feed.getUpdateStamp()
def updateFeed(self, key, expiryTime=24, proxy=None, imageCache=False):
feed = self.getFeed(key)
feed.updateFeed(self.configdir, expiryTime, proxy, imageCache)
self.listOfFeeds[key]["unread"] = feed.getNumberOfUnreadItems()
self.listOfFeeds[key]["updateTime"] = feed.getUpdateTime()
+ self.listOfFeeds[key]["updateStamp"] = feed.getUpdateStamp()
def editFeed(self, key, title, url):
self.listOfFeeds[key]["title"] = title
self.listOfFeeds[key]["updateTime"] = "Never"
return self.listOfFeeds[key]["updateTime"]
+ def getFeedUpdateStamp(self, key):
+ #print self.listOfFeeds.has_key(key)
+ if not self.listOfFeeds[key].has_key("updateStamp"):
+ self.listOfFeeds[key]["updateStamp"] = 0
+ return self.listOfFeeds[key]["updateStamp"]
+
def getFeedNumberOfUnreadItems(self, key):
if not self.listOfFeeds[key].has_key("unread"):
self.listOfFeeds[key]["unread"] = 0