-feedingit (0.5.3-0) unstable; urgency=low
+feedingit (0.5.3-4) unstable; urgency=low
+
+ * Fixed text selection when panning (#5103)
+ * Fixed re-layout of listing when orientation changes
+
+ -- Yves <yves@marcoz.org> Mon, 22 Mar 2010 22:02:19 -0800
+
+feedingit (0.5.3-2) unstable; urgency=low
* Enabled image caching for all articles
-
- -- Yves <yves@marcoz.org> Wed, 21 Mar 2010 21:39:19 -0800
+ * Added update dbus call
+
+ -- Yves <yves@marcoz.org> Mon, 22 Mar 2010 22:02:19 -0800
feedingit (0.5.2-4) unstable; urgency=low
Package: feedingit
Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, python-gtkhtml2, python, python-hildon,
- libgtkhtml2-0, python-dbus, python-osso, python-gconf, python-beautifulsoup, python2.5-webkit
+Depends: ${shlibs:Depends}, ${misc:Depends}, python, python-hildon,
+ python-dbus, python-osso, python-gconf, python-beautifulsoup, python2.5-webkit
Description:
RSS Reader
Its main features are:
class DisplayArticle(hildon.StackableWindow):
- def __init__(self, feed, id, key, config):
+ def __init__(self, feed, id, key, config, listing):
hildon.StackableWindow.__init__(self)
#self.imageDownloader = ImageDownloader()
self.feed = feed
- #self.listing=listing
+ self.listing=listing
self.key = key
self.id = id
self.set_title(feed.getTitle(id))
self.feed.setEntryRead(self.id)
#if key=="ArchivedArticles":
self.view.open("file://" + contentLink)
+ self.view.connect("motion-notify-event", lambda w,ev: True)
+
#else:
#self.view.load_html_string(self.text, contentLink) # "text/html", "utf-8", self.link)
self.view.set_zoom_level(float(config.getArtFontSize())/10.)
# self.show_all()
def _signal_link_clicked(self, object, link):
- bus = dbus.SystemBus()
+ bus = dbus.SessionBus()
proxy = bus.get_object("com.nokia.osso_browser", "/com/nokia/osso_browser/request")
iface = dbus.Interface(proxy, 'com.nokia.osso_browser')
- iface.load_url(link)
+ iface.open_new_window(link)
#def _signal_request_url(self, object, url, stream):
#print url
self.show_all()
def clear(self):
- self.remove(self.pannableFeed)
+ self.pannableFeed.destroy()
+ #self.remove(self.pannableFeed)
def button_clicked(self, button, index, previous=False, next=False):
#newDisp = DisplayArticle(self.feedTitle, self.feed.getArticle(index), self.feed.getLink(index), index, self.key, self.listing, self.config)
- newDisp = DisplayArticle(self.feed, index, self.key, self.config)
+ newDisp = DisplayArticle(self.feed, index, self.key, self.config, self.listing)
stack = hildon.WindowStack.get_default()
if previous:
tmp = stack.peek()
self.listing = Listing(CONFIGDIR)
self.downloadDialog = False
- #self.orientation = FremantleRotation("FeedingIt", main_window=self.window)
- #self.orientation.set_mode(self.config.getOrientation())
+ self.orientation = FremantleRotation("FeedingIt", main_window=self.window, app=self)
+ self.orientation.set_mode(self.config.getOrientation())
menu = hildon.AppMenu()
# Create a button and add it to the menu
break
def buttonFeedClicked(widget, button, self, window, key):
- disp = DisplayFeed(self.listing, self.listing.getFeed(key), self.listing.getFeedTitle(key), key, self.config)
- disp.connect("feed-closed", self.onFeedClosed)
+ self.disp = DisplayFeed(self.listing, self.listing.getFeed(key), self.listing.getFeedTitle(key), key, self.config)
+ self.disp.connect("feed-closed", self.onFeedClosed)
def onFeedClosed(self, object, key):
#self.displayListing()
@dbus.service.method('org.maemo.feedingit')
def GetStatus(self):
return self.app.getStatus()
+
+ def Update(self):
+ self.app.button_update_clicked(None, None)
+ return "Done"
_MCE_REQUEST_PATH = '/com/nokia/mce/request'
_MCE_REQUEST_IF = 'com.nokia.mce.request'
- def __init__(self, app_name, main_window=None, version='1.0', mode=0):
+ def __init__(self, app_name, main_window=None, version='1.0', mode=0, app=None):
"""Create a new rotation manager
app_name ... The name of your application (for osso.Context)
self._main_window = main_window
self._stack = hildon.WindowStack.get_default()
self._mode = -1
+ self.app = app
app_id = '-'.join((app_name, self.__class__.__name__))
self._osso_context = osso.Context(app_id, version, False)
self._last_dbus_orientation = self._get_current_orientation()
hildon.hildon_gtk_window_set_portrait_flags(window, flags)
self._orientation = orientation
+ if orientation == self._PORTRAIT:
+ try:
+ self.app.disp.clear()
+ self.app.disp.displayFeed()
+ except:
+ pass
def _on_orientation_signal(self, orientation, stand, face, x, y, z):
if orientation in (self._PORTRAIT, self._LANDSCAPE):
tmp=feedparser.parse(self.url)
else:
tmp=feedparser.parse(self.url, handlers = [proxy])
+ expiry = float(expiryTime) * 3600.
# Check if the parse was succesful (number of entries > 0, else do nothing)
if len(tmp["entries"])>0:
#reversedEntries = self.getEntries()
#reversedEntries.reverse()
if not isdir(configdir+self.uniqueId+".d"):
mkdir(configdir+self.uniqueId+".d")
+ currentTime = time.time()
tmpEntries = {}
tmpIds = []
for entry in tmp["entries"]:
tmpEntry = {"title":entry["title"], "content":self.extractContent(entry),
"date":date, "dateTuple":dateTuple, "link":entry["link"], "images":[] }
id = self.generateUniqueId(tmpEntry)
+
+ #articleTime = time.mktime(self.entries[id]["dateTuple"])
if not id in self.ids:
-
- soup = BeautifulSoup(tmpEntry["content"])
+ soup = BeautifulSoup(self.getArticle(tmpEntry)) #tmpEntry["content"])
images = soup('img')
baseurl = ''.join(urlparse(tmpEntry["link"])[:-1])
if imageCache:
- for img in images:
+ for img in images:
+ try:
filename = self.imageHandler.addImage(self.uniqueId, baseurl, img['src'])
img['src']=filename
tmpEntry["images"].append(filename)
+ except:
+ print "Error downloading image %s" %img
tmpEntry["contentLink"] = configdir+self.uniqueId+".d/"+id+".html"
file = open(tmpEntry["contentLink"], "w")
file.write(soup.prettify())
file.close()
tmpEntries[id] = tmpEntry
tmpIds.append(id)
+ if id not in self.readItems:
+ self.readItems[id] = False
+ else:
+ tmpEntries[id] = self.entries[id]
+ tmpIds.append(id)
- for entryId in self.getIds()[:]:
- currentTime = time.time()
- expiry = float(expiryTime) * 3600.
- try:
- articleTime = time.mktime(self.entries[entryId]["dateTuple"])
- if currentTime - articleTime < expiry:
- tmpEntries[entryId] = self.entries[entryId]
- tmpIds.append(entryId)
- else:
- if (not self.isEntryRead(entryId)) and (currentTime - articleTime < 2*expiry):
- tmpEntries[entryId] = self.entries[entryId]
- tmpIds.append(entryId)
- else:
- self.removeEntry(id)
- except:
- self.removeEntry(id)
- print "Error purging old articles %s" % id
-
-
+ oldIds = self.ids[:]
+ for entryId in oldIds:
+ if not entryId in tmpIds:
+ try:
+ articleTime = time.mktime(self.entries[entryId]["dateTuple"])
+ if (currentTime - articleTime > 2*expiry):
+ self.removeEntry(entryId)
+ continue
+ if (currentTime - articleTime > expiry) and (self.isEntryRead(entryId)):
+ # Entry is over 24 hours, and already read
+ self.removeEntry(entryId)
+ continue
+ tmpEntries[entryId] = self.entries[entryId]
+ tmpIds.append(entryId)
+ except:
+ print "Error purging old articles %s" % entryId
+ self.removeEntry(entryId)
+
self.entries = tmpEntries
self.ids = tmpIds
- self.countUnread = 0
- # Initialize the new articles to unread
- tmpReadItems = self.readItems
- self.readItems = {}
- for id in self.getIds():
- if not tmpReadItems.has_key(id):
+ tmpUnread = 0
+
+
+ ids = self.ids[:]
+ for id in ids:
+ if not self.readItems.has_key(id):
self.readItems[id] = False
- else:
- self.readItems[id] = tmpReadItems[id]
if self.readItems[id]==False:
- self.countUnread = self.countUnread + 1
+ tmpUnread = tmpUnread + 1
del tmp
+ self.countUnread = tmpUnread
self.updateTime = time.asctime()
self.saveFeed(configdir)
#except:
# print "Error removing entry %s" %id
- def getArticle(self, id):
- self.setEntryRead(id)
- entry = self.entries[id]
+ def getArticle(self, entry):
+ #self.setEntryRead(id)
+ #entry = self.entries[id]
title = entry['title']
#content = entry.get('content', entry.get('summary_detail', {}))
content = entry["content"]
def addArchivedArticle(self, key, index):
feed = self.getFeed(key)
title = feed.getTitle(index)
- link = feed.getLink(index)
+ link = feed.getExternalLink(index)
date = feed.getDateTuple(index)
if not self.listOfFeeds.has_key("ArchivedArticles"):
self.listOfFeeds["ArchivedArticles"] = {"title":"Archived Articles", "url":"", "unread":0, "updateTime":"Never"}