+# for localized messages
+from . import _
+
from enigma import eTimer
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
-from Screens.ChoiceBox import ChoiceBox
+
from Components.ActionMap import ActionMap
-from Components.Label import Label
from Components.ScrollLabel import ScrollLabel
-from Components.Pixmap import Pixmap
-
-from RSSList import RSSList
-from RSSSetup import RSSSetup
+from Components.Sources.List import List
+from Components.Sources.StaticText import StaticText
-class PictureView(Screen):
- """Downloads a Picture, shows it and delete the temporary file"""
+from RSSList import RSSFeedList
+class RSSSummary(Screen):
skin = """
- <screen position="100,100" size="460,400" title="Simple RSS Reader" >
- <widget name="content" position="0,0" size="460,400" alphatest="on"/>
- </screen>"""
-
- filename = '/tmp/simplerss_enclosure'
-
- def __init__(self, session, url):
- Screen.__init__(self, session)
-
- self.url = url
-
- self["actions"] = ActionMap([ "OkCancelActions" ],
- {
- "ok": self.close,
- "cancel": self.close,
- })
+ <screen position="0,0" size="132,64">
+ <widget source="parent.title" render="Label" position="6,4" size="120,21" font="Regular;18" />
+ <widget source="entry" render="Label" position="6,25" size="120,21" font="Regular;16" />
+ <widget source="global.CurrentTime" render="Label" position="56,46" size="82,18" font="Regular;16" >
+ <convert type="ClockToText">WithSeconds</convert>
+ </widget>
+ </screen>"""
+
+ def __init__(self, session, parent):
+ Screen.__init__(self, session, parent = parent)
+ self["entry"] = StaticText("")
+ parent.onChangedEntry.append(self.selectionChanged)
+ self.onShow.append(parent.updateInfo)
+ self.onClose.append(self.removeWatcher)
+
+ def removeWatcher(self):
+ self.parent.onChangedEntry.remove(self.selectionChanged)
+
+ def selectionChanged(self, text):
+ self["entry"].text = text
- self["content"] = Pixmap()
-
- self.onLayoutFinish.append(self.fetchFile)
-
- def fetchFile(self):
- # Fetch file
- from twisted.web.client import downloadPage
- downloadPage(self.url, self.filename).addCallback(self.gotFile).addErrback(self.error)
-
- def gotFile(self, data = ""):
- # Determine Aspect
- from Components.AVSwitch import AVSwitch
- aspect = AVSwitch().getAspectRatioSetting()/2
+class RSSBaseView(Screen):
+ """Base Screen for all Screens used in SimpleRSS"""
- # Load Picture
- from enigma import loadPic
- ptr = loadPic(self.filename, 460, 400, aspect)
+ def __init__(self, session, poller, parent = None):
+ Screen.__init__(self, session, parent)
+ self["title"] = StaticText()
+ self.onChangedEntry = []
+ self.rssPoller = poller
+ self.pollDialog = None
- # Show Picture
- self["content"].instance.setPixmap(ptr)
+ def createSummary(self):
+ return RSSSummary
- # Remove Temporary File
- from os import unlink
- unlink(self.filename)
+ def setTitle(self, title):
+ Screen.setTitle(self, title)
+ self["title"].text = title
- def error(self):
+ def errorPolling(self, errmsg = ""):
+ # An error occured while polling
self.session.open(
MessageBox,
- "Error while loading Picture.",
+ _("Error while parsing Feed, this usually means there is something wrong with it."),
type = MessageBox.TYPE_ERROR,
timeout = 3
)
- self.close()
-
-class RSSBaseView(Screen):
- """Base Screen for all Screens used in SimpleRSS"""
-
- def __init__(self, session, poller):
- Screen.__init__(self, session)
- self.rssPoller = poller
- self.pollDialog = None
- def errorPolling(self, errmsg = ""):
- # Hide Dialog if shown
+ # Don't show "we're updating"-dialog any longer
if self.pollDialog:
self.pollDialog.close()
self.pollDialog = None
- # TODO: fix error not showing when dialog was just hid (work around by using a timer?)
- self.session.open(
- MessageBox,
- "Error while parsing Feed, this usually means there is something wrong with it.",
- type = MessageBox.TYPE_ERROR,
- timeout = 3
- )
-
def singleUpdate(self, feedid, errback = None):
+ # Don't do anything if we have no poller
+ if self.rssPoller is None:
+ return
+
# Default errorback to self.errorPolling
# If an empty errorback is wanted the Screen needs to provide it
if errback is None:
# Open Dialog and save locally
self.pollDialog = self.session.open(
MessageBox,
- "Update is being done in Background.\nContents will automatically be updated when it's done.",
+ _("Update is being done in Background.\nContents will automatically be updated when it's done."),
type = MessageBox.TYPE_INFO,
timeout = 5
)
if enclosures is None:
return
- count = len(enclosures)
- # Select stream in ChoiceBox if more than one present
- if count > 1:
- self.session.openWithCallback(
- self.enclosureSelected,
- ChoiceBox,
- "Select enclosure to play",
- [(x[0][x[0].rfind("/")+1:].replace('%20', ' ').replace('%5F', '_').replace('%2D', '-'), x) for x in enclosures]
- )
- # Play if one present
- elif count:
- self.enclosureSelected((None, enclosures[0]))
-
- def enclosureSelected(self, enclosure):
- if enclosure:
- (url, type) = enclosure[1]
-
- print "[SimpleRSS] Trying to play back enclosure: url=%s, type=%s" % (url, type)
+ from Components.Scanner import openList
- if type in ["video/mpeg", "audio/mpeg"]:
- from enigma import eServiceReference
- from Screens.MediaPlayer import MediaPlayer
-
- mp = self.session.open(MediaPlayer)
- ref = eServiceReference(4097, 0, url)
-
- mp.switchToPlayList()
- mp.playlist.addFile(ref)
- mp.playlist.updateList()
-
- mp.playServiceRefEntry(ref)
- elif type in ["image/jpeg", "image/png", "image/gif", "image/bmp"]:
- self.session.open(PictureView, url)
+ if not openList(self.session, enclosures):
+ self.session.open(
+ MessageBox,
+ _("Found no Enclosure we can display."),
+ type = MessageBox.TYPE_INFO,
+ timeout = 5
+ )
class RSSEntryView(RSSBaseView):
"""Shows a RSS Item"""
+
skin = """
- <screen position="100,100" size="460,420" title="Simple RSS Reader" >
- <widget name="info" position="0,0" size="460, 20" halign="right" font="Regular; 18" />
- <widget name="content" position="0,20" size="460,420" font="Regular; 22" />
+ <screen position="center,center" size="460,420" title="Simple RSS Reader" >
+ <widget source="info" render="Label" position="0,0" size="460, 20" halign="right" font="Regular; 18" />
+ <widget name="content" position="0,20" size="460,400" font="Regular; 22" />
</screen>"""
- def __init__(self, session, data, feedTitle="", cur_idx=None, entries=None, nextEntryCB=None, previousEntryCB=None, nextFeedCB=None, previousFeedCB=None):
- RSSBaseView.__init__(self, session, None)
+ def __init__(self, session, data, feedTitle="", cur_idx=None, entries=None, parent=None):
+ RSSBaseView.__init__(self, session, None, parent)
self.data = data
self.feedTitle = feedTitle
- self.nextEntryCB = nextEntryCB
- self.previousEntryCB = previousEntryCB
- self.nextFeedCB = nextFeedCB
- self.previousFeedCB = previousFeedCB
self.cur_idx = cur_idx
self.entries = entries
if cur_idx is not None and entries is not None:
- self["info"] = Label("Entry %s/%s" % (cur_idx+1, entries))
+ self["info"] = StaticText(_("Entry %s/%s") % (cur_idx+1, entries))
else:
- self["info"] = Label()
+ self["info"] = StaticText()
- if data is not None:
- self["content"] = ScrollLabel("\n\n".join([data[0], data[2], " ".join([str(len(data[3])), "Enclosures"])]))
+ if data:
+ self["content"] = ScrollLabel(''.join((data[0], '\n\n', data[2], '\n\n', str(len(data[3])), ' ', _("Enclosures"))))
else:
self["content"] = ScrollLabel()
self.onLayoutFinish.append(self.setConditionalTitle)
def setConditionalTitle(self):
- self.setTitle(': '.join(["Simple RSS Reader", self.feedTitle]))
+ self.setTitle(_("Simple RSS Reader: %s") % (self.feedTitle))
+
+ def updateInfo(self):
+ if self.data:
+ text = self.data[0]
+ else:
+ text = _("No such Item.")
+
+ for x in self.onChangedEntry:
+ try:
+ x(text)
+ except Exception:
+ pass
def up(self):
self["content"].pageUp()
self["content"].pageDown()
def next(self):
- if self.nextEntryCB is not None:
- (self.data, self.cur_idx, self.entries) = self.nextEntryCB()
+ if self.parent is not None:
+ (self.data, self.cur_idx, self.entries) = self.parent.nextEntry()
self.setContent()
def previous(self):
- if self.previousEntryCB is not None:
- (self.data, self.cur_idx, self.entries) = self.previousEntryCB()
+ if self.parent is not None:
+ (self.data, self.cur_idx, self.entries) = self.parent.previousEntry()
self.setContent()
def nextFeed(self):
# Show next Feed
- if self.nextFeedCB is not None:
- result = self.nextFeedCB()
+ if self.parent is not None:
+ result = self.parent.next()
self.feedTitle = result[0]
self.entries = len(result[1])
if self.entries:
def previousFeed(self):
# Show previous Feed
- if self.previousFeedCB is not None:
- result = self.previousFeedCB()
+ if self.parent is not None:
+ result = self.parent.previous()
self.feedTitle = result[0]
self.entries = len(result[1])
if self.entries:
def setContent(self):
if self.cur_idx is not None and self.entries is not None:
- self["info"].setText("Entry %s/%s" % (self.cur_idx+1, self.entries))
+ self["info"].text = _("Entry %s/%s") % (self.cur_idx+1, self.entries)
else:
- self["info"].setText("")
- if self.data is not None:
- self["content"].setText("\n\n".join([self.data[0], self.data[2], " ".join([str(len(self.data[3])), "Enclosures"])]))
+ self["info"].text = ""
+ data = self.data
+ if data:
+ self["content"].setText(''.join((data[0], '\n\n', data[2], '\n\n', str(len(data[3])), ' ', _("Enclosures"))))
else:
- self["content"].setText("No such Item.")
+ self["content"].setText(_("No such Item."))
+ self.updateInfo()
def selectEnclosure(self):
if self.data is not None:
class RSSFeedView(RSSBaseView):
"""Shows a RSS-Feed"""
+
skin = """
- <screen position="100,100" size="460,415" title="Simple RSS Reader" >
- <widget name="info" position="0,0" size="460,20" halign="right" font="Regular; 18" />
- <widget name="content" position="0,20" size="460,300" scrollbarMode="showOnDemand" />
- <widget name="summary" position="0,320" size="460,95" font="Regular;16" />
+ <screen position="center,center" size="460,415" title="Simple RSS Reader" >
+ <widget source="info" render="Label" position="0,0" size="460,20" halign="right" font="Regular; 18" />
+ <widget source="content" render="Listbox" position="0,20" size="460,300" scrollbarMode="showOnDemand">
+ <convert type="TemplatedMultiContent">
+ {"template": [
+ MultiContentEntryText(pos=(0, 3), size=(460, 294), font=0, flags = RT_HALIGN_LEFT|RT_WRAP, text = 0)
+ ],
+ "fonts": [gFont("Regular", 22)],
+ "itemHeight": 50
+ }
+ </convert>
+ </widget>
+ <widget source="summary" render="Label" position="0,320" size="460,95" font="Regular;16" />
</screen>"""
- def __init__(self, session, data, feedTitle = "", newItems=False, nextFeedCB=None, previousFeedCB=None, rssPoller=None, id = None):
- RSSBaseView.__init__(self, session, rssPoller)
+ def __init__(self, session, feed=None, newItems=False, parent=None, rssPoller=None,id=None):
+ RSSBaseView.__init__(self, session, rssPoller, parent)
- self.data = data
- self.feedTitle = feedTitle
+ self.feed = feed
self.newItems = newItems
self.id = id
- self.nextFeedCB=nextFeedCB
- self.previousFeedCB=previousFeedCB
- self["content"] = RSSList(data)
- self["summary"] = Label()
- self["info"] = Label()
+ self["content"] = List(self.feed.history)
+ self["summary"] = StaticText()
+ self["info"] = StaticText()
if not newItems:
- self["actions"] = ActionMap([ "OkCancelActions", "ChannelSelectBaseActions", "MenuActions", "ColorActions" ],
+ self["actions"] = ActionMap([ "OkCancelActions", "ChannelSelectBaseActions", "MenuActions", "ColorActions" ],
{
"ok": self.showCurrentEntry,
"cancel": self.close,
"menu": self.menu,
"yellow": self.selectEnclosure,
})
- self.onShown.append(self.__show)
+ self.onLayoutFinish.append(self.__show)
self.onClose.append(self.__close)
self.timer = None
else:
- self["actions"] = ActionMap([ "OkCancelActions" ],
+ self["actions"] = ActionMap([ "OkCancelActions" ],
{
"cancel": self.close,
})
self.timer = eTimer()
- self.timer.timeout.get().append(self.timerTick)
+ self.timer.callback.append(self.timerTick)
self.onExecBegin.append(self.startTimer)
- self["content"].connectSelChanged(self.updateInfo)
- self.onLayoutFinish.extend([self.updateInfo, self.setConditionalTitle])
+ self["content"].onSelectionChanged.append(self.updateInfo)
+ self.onLayoutFinish.extend((
+ self.updateInfo,
+ self.setConditionalTitle
+ ))
def startTimer(self):
self.timer.startLongTimer(5)
def timerTick(self):
+ self.timer.callback.remove(self.timerTick)
+
self.close()
def __show(self):
def __close(self):
if self.timer is not None:
- self.timer.timeout.get().remove(self.timerTick)
+ self.timer.callback.remove(self.timerTick)
self.timer = None
self.rssPoller.removeCallback(self.pollCallback)
def pollCallback(self, id = None):
print "[SimpleRSS] SimpleRSSFeed called back"
- current_entry = self["content"].getCurrentEntry()
-
- if id is not None and self.id == id+1:
- print "[SimpleRSS] pollCallback recieved local feed", self.id
- self.feedTitle = self.rssPoller.feeds[id].title
- self.data = self.rssPoller.feeds[id].history
- elif self.id == 0:
- print "[SimpleRSS] pollCallback recieved all or non-local feed, updating active view (new_items)"
- self.data = self.rssPoller.new_items
- else:
- print "[SimpleRSS] pollCallback recieved all or non-local feed, updating", self.id
- self.feedTitle = self.rssPoller.feeds[self.id-1].title
- self.data = self.rssPoller.feeds[self-id-1].history
- self["content"].l.setList(self.data)
- self["content"].moveToEntry(current_entry)
-
- self.setConditionalTitle()
- self.updateInfo()
+ if id is None or id+1 == self.id:
+ self["content"].updateList(self.feed.history)
+ self.setConditionalTitle()
+ self.updateInfo()
def setConditionalTitle(self):
- if not self.newItems:
- self.setTitle(': '.join(["Simple RSS Reader", self.feedTitle]))
- else:
- self.setTitle("Simple RSS Reader: New Items")
+ self.setTitle(_("Simple RSS Reader: %s") % (self.feed.title))
def updateInfo(self):
- current_entry = self["content"].getCurrentEntry()
+ current_entry = self["content"].current
if current_entry:
- self["summary"].setText(current_entry[2])
+ self["summary"].text = current_entry[2]
- cur_idx = self["content"].getCurrentIndex()
- self["info"].setText("Entry %s/%s" % (cur_idx+1, len(self.data)))
+ cur_idx = self["content"].index
+ self["info"].text = _("Entry %s/%s") % (cur_idx+1, len(self.feed.history))
+ summary_text = current_entry[0]
else:
- self["summary"].setText("Feed is empty.")
- self["info"].setText("")
+ self["summary"].text = _("Feed is empty.")
+ self["info"].text = ""
+ summary_text = _("Feed is empty.")
+
+ for x in self.onChangedEntry:
+ try:
+ x(summary_text)
+ except Exception:
+ pass
def menu(self):
if self.id > 0:
self.singleUpdate(self.id-1)
- def nextEntryCB(self):
- self["content"].moveDown()
- return (self["content"].getCurrentEntry(), self["content"].getCurrentIndex(), len(self.data))
+ def nextEntry(self):
+ self["content"].selectNext()
+ return (self["content"].current, self["content"].index, len(self.feed.history))
- def previousEntryCB(self):
- self["content"].moveUp()
- return (self["content"].getCurrentEntry(), self["content"].getCurrentIndex(), len(self.data))
+ def previousEntry(self):
+ self["content"].selectPrevious()
+ return (self["content"].current, self["content"].index, len(self.feed.history))
- # TODO: Fix moving back to previously marked entry (same goes for self.previous)
def next(self):
# Show next Feed
- if self.nextFeedCB is not None:
- result = self.nextFeedCB()
- (self.feedTitle, self.data, self.id) = result
- #current_entry = self["content"].getCurrentEntry()
- self["content"].l.setList(self.data) # Update list
- self["content"].moveToIndex(0)
- #self["content"].moveToEntry(current_entry)
- self.updateInfo() # In case entry is no longer in history
+ if self.parent is not None:
+ (self.feed, self.id) = self.parent.nextFeed()
+ self["content"].list = self.feed.history
+ self["content"].index = 0
+ self.updateInfo()
self.setConditionalTitle() # Update title
- return result
- return (self.feedTitle, self.data, self.id)
+ return (self.feed.title, self.feed.history, self.id)
+ return (self.feed.title, self.feed.history, self.id)
def previous(self):
# Show previous Feed
- if self.previousFeedCB is not None:
- result = self.previousFeedCB()
- (self.feedTitle, self.data, self.id) = result
- #current_entry = self["content"].getCurrentEntry()
- self["content"].l.setList(self.data) # Update list
- self["content"].moveToIndex(0)
- #self["content"].moveToEntry(current_entry)
- self.updateInfo() # In case entry is no longer in history
+ if self.parent is not None:
+ (self.feed, self.id) = self.parent.previousFeed()
+ self["content"].list = self.feed.history
+ self["content"].index = 0
+ self.updateInfo()
self.setConditionalTitle() # Update title
- return result
- return (self.feedTitle, self.data, self.id)
+ return (self.feed.title, self.feed.history, self.id)
+ return (self.feed.title, self.feed.history, self.id)
def checkEmpty(self):
- if self.id > 0 and not len(self.data):
+ if self.id > 0 and not len(self.feed.history):
self.singleUpdate(self.id-1)
def showCurrentEntry(self):
- current_entry = self["content"].getCurrentEntry()
- if current_entry is None: # empty list
+ current_entry = self["content"].current
+ if not current_entry: # empty list
return
self.session.openWithCallback(
self.updateInfo,
RSSEntryView,
current_entry,
- cur_idx=self["content"].getCurrentIndex(),
- entries=len(self.data),
- feedTitle=self.feedTitle,
- nextEntryCB=self.nextEntryCB,
- previousEntryCB=self.previousEntryCB,
- nextFeedCB=self.next,
- previousFeedCB=self.previous
+ cur_idx = self["content"].index,
+ entries = len(self.feed.history),
+ feedTitle = self.feed.title,
+ parent = self
)
def selectEnclosure(self):
- current_entry = self["content"].getCurrentEntry()
- if current_entry is None: # empty list
+ current_entry = self["content"].current
+ if not current_entry: # empty list
return
RSSBaseView.selectEnclosure(self, current_entry[3])
class RSSOverview(RSSBaseView):
"""Shows an Overview over all RSS-Feeds known to rssPoller"""
+
skin = """
- <screen position="100,100" size="460,415" title="Simple RSS Reader" >
- <widget name="info" position="0,0" size="460,20" halign="right" font="Regular; 18" />
+ <screen position="center,center" size="460,415" title="Simple RSS Reader" >
+ <widget source="info" render="Label" position="0,0" size="460,20" halign="right" font="Regular; 18" />
<widget name="content" position="0,20" size="460,300" scrollbarMode="showOnDemand" />
- <widget name="summary" position="0,320" size="460,95" font="Regular;16" />
+ <widget source="summary" render="Label" position="0,320" size="460,95" font="Regular;16" />
</screen>"""
def __init__(self, session, poller):
RSSBaseView.__init__(self, session, poller)
- self["actions"] = ActionMap([ "OkCancelActions", "MenuActions", "ColorActions" ],
+ self["actions"] = ActionMap([ "OkCancelActions", "MenuActions", "ColorActions" ],
{
"ok": self.showCurrentEntry,
"cancel": self.close,
self.fillFeeds()
# We always have at least "New Items"-Feed
- self["content"] = RSSList(self.feeds)
- self["summary"] = Label(self.feeds[0][2])
- self["info"] = Label("Feed 1/%s" % len(self.feeds))
+ self["content"] = RSSFeedList(self.feeds)
+ self["summary"] = StaticText(' '.join((str(len(self.feeds[0][0].history)), _("Entries"))))
+ self["info"] = StaticText(_("Feed %s/%s") % (1, len(self.feeds)))
self["content"].connectSelChanged(self.updateInfo)
- self.onShown.append(self.__show)
+ self.onLayoutFinish.append(self.__show)
self.onClose.append(self.__close)
def __show(self):
self.rssPoller.addCallback(self.pollCallback)
+ self.setTitle(_("Simple RSS Reader"))
def __close(self):
self.rssPoller.removeCallback(self.pollCallback)
def fillFeeds(self):
- self.feeds = [(
- "New Items",
- "New Items since last Auto-Update",
- ' '.join([str(len(self.rssPoller.new_items)), "Entries"]),
- self.rssPoller.new_items
- )]
- self.feeds.extend([
- (
- feed.title,
- feed.description,
- ' '.join([str(len(feed.history)), "Entries"]),
- feed.history
- )
- for feed in self.rssPoller.feeds
- ])
+ # Feedlist contains our virtual Feed and all real ones
+ self.feeds = [(self.rssPoller.newItemFeed,)]
+ self.feeds.extend([(feed,) for feed in self.rssPoller.feeds])
def pollCallback(self, id = None):
print "[SimpleRSS] SimpleRSS called back"
- current_entry = self["content"].getCurrentEntry()
-
- if id is not None:
- print "[SimpleRSS] pollCallback updating feed", id
- self.feeds[id+1] = (
- self.rssPoller.feeds[id].title,
- self.rssPoller.feeds[id].description,
- ' '.join([str(len(self.rssPoller.feeds[id].history)), "Entries"]),
- self.rssPoller.feeds[id].history
- )
- else:
- print "[SimpleRSS] pollCallback updating all feeds"
- self.fillFeeds()
-
- self["content"].l.setList(self.feeds)
- self["content"].moveToEntry(current_entry)
-
self.updateInfo()
+ self["content"].invalidate()
def updateInfo(self):
- current_entry = self["content"].getCurrentEntry()
- if current_entry:
- self["summary"].setText(current_entry[2])
- self["info"].setText("Feed %s/%s" % (self["content"].getCurrentIndex()+1, len(self.feeds)))
- # Should never happen
- else:
- self["summary"].setText("")
- self["info"].setText("")
+ current_entry = self["content"].getCurrent()
+ self["summary"].text = ' '.join((str(len(current_entry.history)), _("Entries")))
+ self["info"].text = _("Feed %s/%s") % (self["content"].getSelectedIndex()+1, len(self.feeds))
+ summary_text = current_entry.title
+
+ for x in self.onChangedEntry:
+ try:
+ x(summary_text)
+ except Exception:
+ pass
def menu(self):
- cur_idx = self["content"].getCurrentIndex()
+ from Screens.ChoiceBox import ChoiceBox
+
+ cur_idx = self["content"].getSelectedIndex()
if cur_idx > 0:
- possible_actions = [
+ possible_actions = (
(_("Update Feed"), "update"),
(_("Setup"), "setup"),
(_("Close"), "close")
- ]
+ )
else:
- possible_actions = [
+ possible_actions = (
(_("Setup"), "setup"),
(_("Close"), "close")
- ]
+ )
+
self.session.openWithCallback(
self.menuChoice,
ChoiceBox,
- "What to do?",
+ _("What to do?"),
possible_actions
)
def menuChoice(self, result):
if result:
if result[1] == "update":
- cur_idx = self["content"].getCurrentIndex()
+ cur_idx = self["content"].getSelectedIndex()
if cur_idx > 0:
self.singleUpdate(cur_idx-1)
elif result[1] == "setup":
- self.session.openWithCallback(self.refresh, RSSSetup, rssPoller=self.rssPoller)
+ from RSSSetup import RSSSetup
+
+ self.session.openWithCallback(
+ self.refresh,
+ RSSSetup,
+ rssPoller=self.rssPoller
+ )
elif result[1] == "close":
self.close()
def refresh(self):
- current_entry = self["content"].getCurrentEntry()
+ current_entry = self["content"].getCurrent()
self.fillFeeds()
- self["content"].l.setList(self.feeds)
+ self["content"].setList(self.feeds)
self["content"].moveToEntry(current_entry)
self.updateInfo()
- def nextFeedCB(self):
- self["content"].moveUp()
- current_entry = self["content"].getCurrentEntry()
- return (current_entry[0], current_entry[3], self["content"].getCurrentIndex())
+ def nextFeed(self):
+ self["content"].up()
+ return (self["content"].getCurrent(), self["content"].getSelectedIndex())
- def previousFeedCB(self):
- self["content"].moveDown()
- current_entry = self["content"].getCurrentEntry()
- return (current_entry[0], current_entry[3], self["content"].getCurrentIndex())
+ def previousFeed(self):
+ self["content"].down()
+ return (self["content"].getCurrent(), self["content"].getSelectedIndex())
def showCurrentEntry(self):
- current_entry = self["content"].getCurrentEntry()
- if current_entry is None: # empty list
- return
-
+ current_entry = self["content"].getCurrent()
self.session.openWithCallback(
- self.refresh,
+ self.updateInfo,
RSSFeedView,
- current_entry[3],
- feedTitle=current_entry[0],
- nextFeedCB=self.nextFeedCB,
- previousFeedCB=self.previousFeedCB,
+ feed=current_entry,
+ parent=self,
rssPoller=self.rssPoller,
- id=self["content"].getCurrentIndex()
+ id=self["content"].getSelectedIndex()
)
def selectEnclosure(self):
- current_entry = self["content"].getCurrentEntry()
- if current_entry is None: # empty list
- return
-
# Build a list of all enclosures in this feed
enclosures = []
- for entry in current_entry[3]:
+ for entry in self["content"].getCurrent().history:
enclosures.extend(entry[3])
RSSBaseView.selectEnclosure(self, enclosures)
+