class DownloadsScreen(BaseArchivCZSKMenuListScreen, DownloadList): instance = None def __init__(self, session, name, content_provider): BaseArchivCZSKMenuListScreen.__init__(self, session, panelList=PanelListDownload) DownloadList.__init__(self) self.name = name self.content_provider = content_provider from Plugins.Extensions.archivCZSK.engine.player.player import Player self.player = Player(session, self.workingFinished) self.sort_options = [{'id':'az', 'name':_('Sort alphabetically')}, {'id':'date', 'name':_('Sort by date')}, {'id':'size', 'name':_('Sort by size')}, {'id':'state', 'name':_('Sort by state')}] self.sort_current = self.sort_options[0] self.sort_next = self.sort_options[1] self.lst_items = self.content_provider.get_downloads() self["key_red"] = Button(_("Remove")) self["key_green"] = Button("") self["key_yellow"] = Button(self.sort_next['name']) self["key_blue"] = Button("") self.title = self.name.encode('utf-8', 'ignore') + ' - ' + (_("Downloads")) self["actions"] = NumberActionMap(["archivCZSKActions"], { "ok": self.ok, "cancel": self.cancel, "red": self.askRemoveDownload, "yellow": self.toggleSort, "up": self.up, "down": self.down, }, -2) self.onLayoutFinish.append(self.sortList) self.onShown.append(self.setWindowTitle) def setWindowTitle(self): self.setTitle(self.title) def refreshList(self, sort=False): if not sort: self.lst_items = self.content_provider.get_downloads() self.updateMenuList() def askRemoveDownload(self): if len(self.lst_items) > 0: download = self.getSelectedItem() self.session.openWithCallback(self.removeDownload, MessageBox, _('Do you want to remove') \ + ' ' + download.name.encode('utf-8', 'ignore') + ' ?', type=MessageBox.TYPE_YESNO) def removeDownload(self, callback=None): if callback: self.content_provider.remove_download(self.getSelectedItem()) self.refreshList() def toggleSort(self): next_idx = self.sort_options.index(self.sort_next) self.sort_current = self.sort_next if next_idx == len(self.sort_options) - 1: self.sort_next = self.sort_options[0] else: self.sort_next = self.sort_options[next_idx + 1] self["key_yellow"].setText(self.sort_next['name']) self.sortList() def sortList(self): if self.sort_current['id'] == 'az': self.lst_items.sort(key=lambda d:d.name) elif self.sort_current['id'] == 'size': self.lst_items.sort(key=lambda d:d.size) elif self.sort_current['id'] == 'state': self.lst_items.sort(key=lambda d:d.state) elif self.sort_current['id'] == 'date': self.lst_items.sort(key=lambda d:d.finish_time) self.refreshList(True) def updateMenuList(self): menu_list = [] for idx, x in enumerate(self.lst_items): menu_list.append(PanelListDownloadListEntry(x)) self["menu"].setList(menu_list) def ok(self): if not self.working and len(self.lst_items) > 0: it = self.getSelectedItem() download = DownloadManager.getInstance().findDownloadByIT(it) if download is not None and download.running: self.player.playDownload(download) else: self.player.setMediaItem(it) self.player.play()
class ArchivCZSKDownloadsScreen(BaseArchivCZSKMenuListScreen, DownloadList): instance = None def __init__(self, session, name, content_provider): BaseArchivCZSKMenuListScreen.__init__(self, session, panelList=PanelListDownload) DownloadList.__init__(self) self.name = name self.content_provider = content_provider from Plugins.Extensions.archivCZSK.engine.player.player import Player self.player = Player(session, self.workingFinished) self.sort_options = [{'id':'az', 'name':_('Sort alphabetically')}, {'id':'date', 'name':_('Sort by date')}, {'id':'size', 'name':_('Sort by size')}, {'id':'state', 'name':_('Sort by state')}] self.sort_current = self.sort_options[0] self.sort_next = self.sort_options[1] self.lst_items = self.content_provider.get_downloads() self["key_red"] = Button(_("Remove")) self["key_green"] = Button("") self["key_yellow"] = Button(self.sort_next['name']) self["key_blue"] = Button("") self.title = self.name.encode('utf-8', 'ignore') + ' - ' + (_("Downloads")) self["actions"] = NumberActionMap(["archivCZSKActions"], { "ok": self.ok, "cancel": self.cancel, "red": self.askRemoveDownload, "yellow": self.toggleSort, "up": self.up, "down": self.down, }, -2) self.onLayoutFinish.append(self.sortList) self.onShown.append(self.setWindowTitle) def setWindowTitle(self): self.setTitle(self.title) def refreshList(self, sort=False): if not sort: self.lst_items = self.content_provider.get_downloads() self.updateMenuList() def askRemoveDownload(self): if len(self.lst_items) > 0: download = self.getSelectedItem() self.session.openWithCallback(self.removeDownload, MessageBox, _('Do you want to remove') \ + ' ' + download.name.encode('utf-8', 'ignore') + ' ?', type=MessageBox.TYPE_YESNO) def removeDownload(self, callback=None): if callback: self.content_provider.remove_download(self.getSelectedItem()) self.refreshList() def toggleSort(self): next_idx = self.sort_options.index(self.sort_next) self.sort_current = self.sort_next if next_idx == len(self.sort_options) - 1: self.sort_next = self.sort_options[0] else: self.sort_next = self.sort_options[next_idx + 1] self["key_yellow"].setText(self.sort_next['name']) self.sortList() def sortList(self): if self.sort_current['id'] == 'az': self.lst_items.sort(key=lambda d:d.name) elif self.sort_current['id'] == 'size': self.lst_items.sort(key=lambda d:d.size) elif self.sort_current['id'] == 'state': self.lst_items.sort(key=lambda d:d.state) elif self.sort_current['id'] == 'date': self.lst_items.sort(key=lambda d:d.finish_time) self.refreshList(True) def updateMenuList(self): menu_list = [] for idx, x in enumerate(self.lst_items): menu_list.append(PanelListDownloadListEntry(x)) self["menu"].setList(menu_list) def ok(self): if not self.working and len(self.lst_items) > 0: it = self.getSelectedItem() download = DownloadManager.getInstance().findDownloadByIT(it) if download is not None and download.running: self.player.playDownload(download) else: self.player.setMediaItem(it) self.player.play()
class DownloadListScreen(BaseArchivCZSKMenuListScreen): instance = None def __init__(self, session): BaseArchivCZSKMenuListScreen.__init__(self, session) DownloadListScreen.instance = self self["key_red"] = Button(_("Cancel")) self["key_green"] = Button(_("Play")) self["key_yellow"] = Button(_("Remove")) self["key_blue"] = Button("") from Plugins.Extensions.archivCZSK.engine.player.player import Player self.player = Player(session, self.workingFinished) self.lst_items = [] self.title = "ArchivyCZSK" + " - " + _("Recent downloads") self.onClose.append(self.__onClose) self["actions"] = NumberActionMap(["archivCZSKActions"], { "ok": self.ok, "cancel": self.cancel, "red": self.askCancelDownload, "green": self.askPlayDownload, "yellow": self.askRemoveDownload, "up": self.up, "down": self.down, }, -2) self.lst_items = DownloadManager.getInstance().download_lst self.onShown.append(self.setWindowTitle) def __onClose(self): DownloadListScreen.instance = None def setWindowTitle(self): self.setTitle(self.title) def refreshList(self): self.lst_items = DownloadManager.getInstance().download_lst self.updateMenuList() def askCancelDownload(self): if len(self.lst_items) > 0: download = self.getSelectedItem() self.session.openWithCallback(self.cancelDownload, MessageBox, _('Do you want to cancel') + ' '\ + download.name.encode('utf-8', 'ignore') + ' ?', type=MessageBox.TYPE_YESNO) def cancelDownload(self, callback=None): if callback: download = self.getSelectedItem() DownloadManager.getInstance().cancelDownload(download) self.refreshList() def askRemoveDownload(self): if len(self.lst_items) > 0: download = self.getSelectedItem() self.session.openWithCallback(self.removeDownload, MessageBox, _('Do you want to remove') + ' '\ + download.name.encode('utf-8', 'ígnore') + _('from disk') + ' ?', type=MessageBox.TYPE_YESNO) def removeDownload(self, callback=None): if callback: download = self.getSelectedItem() DownloadManager.getInstance().removeDownload(download) self.refreshList() def askPlayDownload(self): if len(self.lst_items) > 0: self.workingStarted() download = self.getSelectedItem() if download.downloaded or not download.running: self.playDownload(True) else: message = '%s %s %s' % (_("The file"), download.name.encode('utf-8', 'ígnore'), _('is not downloaded yet. Do you want to play it anyway?')) self.session.openWithCallback(self.playDownload, MessageBox, message, type=MessageBox.TYPE_YESNO) def playDownload(self, callback=None): if callback: download = self.getSelectedItem() self.player.playDownload(download) else: self.workingFinished() def updateMenuList(self): menu_list = [] for idx, x in enumerate(self.lst_items): menu_list.append(PanelListDownloadEntry(x.name, x)) self["menu"].setList(menu_list) def ok(self): if len(self.lst_items) > 0: download = self.getSelectedItem() self.session.openWithCallback(self.workingFinished, DownloadStatusScreen, download)
class ArchivCZSKDownloadListScreen(BaseArchivCZSKMenuListScreen): instance = None def __init__(self, session): BaseArchivCZSKMenuListScreen.__init__(self, session) ArchivCZSKDownloadListScreen.instance = self self["key_red"] = Button(_("Cancel")) self["key_green"] = Button(_("Play")) self["key_yellow"] = Button(_("Remove")) self["key_blue"] = Button("") from Plugins.Extensions.archivCZSK.engine.player.player import Player self.player = Player(session, self.workingFinished) self.lst_items = [] self.title = "ArchivyCZSK" + " - " + _("Recent downloads") self.onClose.append(self.__onClose) self["actions"] = NumberActionMap(["archivCZSKActions"], { "ok": self.ok, "cancel": self.cancel, "red": self.askCancelDownload, "green": self.askPlayDownload, "yellow": self.askRemoveDownload, "up": self.up, "down": self.down, }, -2) self.lst_items = DownloadManager.getInstance().download_lst self.onShown.append(self.setWindowTitle) def __onClose(self): ArchivCZSKDownloadListScreen.instance = None def setWindowTitle(self): self.setTitle(self.title) def refreshList(self): self.lst_items = DownloadManager.getInstance().download_lst self.updateMenuList() def askCancelDownload(self): if len(self.lst_items) > 0: download = self.getSelectedItem() self.session.openWithCallback(self.cancelDownload, MessageBox, _('Do you want to cancel') + ' '\ + download.name.encode('utf-8', 'ignore') + ' ?', type=MessageBox.TYPE_YESNO) def cancelDownload(self, callback=None): if callback: download = self.getSelectedItem() DownloadManager.getInstance().cancelDownload(download) self.refreshList() def askRemoveDownload(self): if len(self.lst_items) > 0: download = self.getSelectedItem() self.session.openWithCallback(self.removeDownload, MessageBox, _('Do you want to remove') + ' '\ + download.name.encode('utf-8', 'ígnore') + _('from disk') + ' ?', type=MessageBox.TYPE_YESNO) def removeDownload(self, callback=None): if callback: download = self.getSelectedItem() DownloadManager.getInstance().removeDownload(download) self.refreshList() def askPlayDownload(self): if len(self.lst_items) > 0: self.workingStarted() download = self.getSelectedItem() if download.downloaded or not download.running: self.playDownload(True) else: message = '%s %s %s' % (_("The file"), download.name.encode('utf-8', 'ígnore'), _('is not downloaded yet. Do you want to play it anyway?')) self.session.openWithCallback(self.playDownload, MessageBox, message, type=MessageBox.TYPE_YESNO) def playDownload(self, callback=None): if callback: download = self.getSelectedItem() self.player.playDownload(download) else: self.workingFinished() def updateMenuList(self): menu_list = [] for idx, x in enumerate(self.lst_items): menu_list.append(PanelListDownloadEntry(x.name, x)) self["menu"].setList(menu_list) def ok(self): if len(self.lst_items) > 0: download = self.getSelectedItem() self.session.openWithCallback(self.workingFinished, ArchivCZSKDownloadStatusScreen, download)