class ScheduledRecordingsItem(Item): def __init__(self, parent): Item.__init__(self, parent, skin_type='tv') self.name = _('Scheduled Recordings') self.menuw = None self.recordclient = RecordClient() def actions(self): return [ ( self.display_schedule , _('Display Scheduled Recordings') ) ] def display_schedule(self, arg=None, menuw=None): if not self.recordclient.pingNow(): AlertBox(self.recordclient.recordserverdown).show() return items = self.get_items() if not len(items): AlertBox(_('Nothing scheduled.')).show() return schedule_menu = menu.Menu(_('Scheduled Recordings'), items, reload_func=self.reload, item_types='tv program menu') self.menuw = menuw menuw.pushmenu(schedule_menu) menuw.refresh() def reload(self): menuw = self.menuw menu = menuw.menustack[-1] new_choices = self.get_items() if not menu.selected in new_choices and len(new_choices): sel = menu.choices.index(menu.selected) if len(new_choices) <= sel: menu.selected = new_choices[-1] else: menu.selected = new_choices[sel] menu.choices = new_choices return menu def get_items(self): items = [] if not self.recordclient.pingNow(): AlertBox(self.recordclient.recordserverdown).show() return [] (status, progs) = self.recordclient.getScheduledRecordingsNow() if status: f = lambda a, b: cmp(a.start, b.start) progs.sort(f) for prog in progs: items.append(ProgramItem(self, prog, context='schedule')) else: AlertBox(_('Get scheduled recordings failed')+(':\n%s' % schedule)).show() return [] return items
class ScheduledRecordingsItem(Item): def __init__(self, parent): Item.__init__(self, parent, skin_type='tv') self.name = _('Scheduled Recordings') self.menuw = None self.recordclient = RecordClient() def actions(self): return [ ( self.display_schedule , _('Display Scheduled Recordings') ) ] def display_schedule(self, arg=None, menuw=None): if not self.recordclient.pingNow(): AlertBox(self.recordclient.recordserverdown).show() return items = self.get_items() if not len(items): AlertBox(_('Nothing scheduled.')).show() return schedule_menu = menu.Menu(_('Scheduled Recordings'), items, reload_func=self.reload, item_types='tv program menu') self.menuw = menuw rc.app(None) menuw.pushmenu(schedule_menu) menuw.refresh() def reload(self): menuw = self.menuw menu = menuw.menustack[-1] new_choices = self.get_items() if not menu.selected in new_choices and len(new_choices): sel = menu.choices.index(menu.selected) if len(new_choices) <= sel: menu.selected = new_choices[-1] else: menu.selected = new_choices[sel] menu.choices = new_choices return menu def get_items(self): items = [] if not self.recordclient.pingNow(): AlertBox(self.recordclient.recordserverdown).show() return [] (status, schedule) = self.recordclient.getScheduledRecordingsNow() if status: progs = schedule.getProgramList() f = lambda a, b: cmp(a.start, b.start) progs = progs.values() progs.sort(f) for prog in progs: items.append(ProgramItem(self, prog, context='schedule')) else: AlertBox(_('Get scheduled recordings failed')+(':\n%s' % schedule)).show() return [] return items