class MC_VideoPlayer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
#		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
#		self.session.nav.stopService()
		self["key_red"] = Button(_("Favorites"))
		self["key_yellow"] = Button("")
		self["key_blue"] = Button(_("Settings"))
		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.curfavfolder = -1
		
		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions", 
			{
				"ok": (self.KeyOk, "Play selected file"),
				"cancel": (self.Exit, "Exit Video Player"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"info": (self.showFileInfo, "Show File Info"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
				"red": (self.FavoriteFolders, "Favorite Folders"),
				"blue": (self.KeySettings, "Settings"),
			}, -2)
		self.aspect = getAspect()
		currDir = config.plugins.mc_vp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"
		self["currentfolder"].setText(str(currDir))
		self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|mp4|flv|divx)")
		self["filelist"] = self.filelist
		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
			{
				iPlayableService.evUser+11: self.__evDecodeError,
				iPlayableService.evUser+12: self.__evPluginError
			})
	def up(self):
		self["filelist"].up()
	def down(self):
		self["filelist"].down()
	def leftUp(self):
		self["filelist"].pageUp()
	def rightDown(self):
		self["filelist"].pageDown()
	def NextFavFolder(self):
		if self.curfavfolder + 1 < config.plugins.mc_favorites.foldercount.value:
			self.curfavfolder += 1
			self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value
			self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value
			self["currentfolder"].setText(("%s") % (self.folder))
			self["currentfavname"].setText(("%s") % (self.favname))
			if os.path.exists(self.folder) == True:
				self["filelist"].changeDir(self.folder)
		else:
			return
	def PrevFavFolder(self):
		if self.curfavfolder <= 0:
			return
		else:
			self.curfavfolder -= 1
			self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value
			self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value
			self["currentfolder"].setText(("%s") % (self.folder))
			self["currentfavname"].setText(("%s") % (self.favname))
			if os.path.exists(self.folder) == True:
				self["filelist"].changeDir(self.folder)
	def showFileInfo(self):
		if self["filelist"].canDescent():
			return
		else:
			self.session.open(MC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef())
	def KeyOk(self):
		if self.filelist.canDescent():
			self.filelist.descent()
		else:
			self.session.open(BonkelPlayer, self["filelist"].getServiceRef())
			# screen adjustment
			os.system("echo " + hex(config.plugins.mc_globalsettings.dst_top.value)[2:] + " > /proc/stb/vmpeg/0/dst_top")
			os.system("echo " + hex(config.plugins.mc_globalsettings.dst_left.value)[2:] + " > /proc/stb/vmpeg/0/dst_left")
			os.system("echo " + hex(config.plugins.mc_globalsettings.dst_width.value)[2:] + " > /proc/stb/vmpeg/0/dst_width")
			os.system("echo " + hex(config.plugins.mc_globalsettings.dst_height.value)[2:] + " > /proc/stb/vmpeg/0/dst_height")
	def KeyMenu(self):
		if self["filelist"].canDescent():
			if self.filelist.getCurrent()[0][1]:
				self.currentDirectory = self.filelist.getCurrent()[0][0]
				if self.currentDirectory is not None:
					foldername = self.currentDirectory.split('/')
					foldername = foldername[-2]
					self.session.open(MC_FolderOptions,self.currentDirectory, foldername)
	def returnVal(self, val=0):
		if val > 0:
			for x in self.filelist.getFileList():
				if x[0][1] == True:
					val += 1
			self.filelist.moveToIndex(val)
	def JumpToFolder(self, jumpto = None):
		if jumpto is None:
			return
		else:
			self["filelist"].changeDir(jumpto)
			self["currentfolder"].setText(("%s") % (jumpto))
	def FavoriteFolders(self):
		self.session.openWithCallback(self.JumpToFolder, MC_FavoriteFolders)
	def KeySettings(self):
		self.session.open(VideoPlayerSettings)
	def __evDecodeError(self):
		currPlay = self.session.nav.getCurrentService()
		sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType)
		print "[__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
		self.session.open(MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MessageBox.TYPE_INFO,timeout = 10 )
	def __evPluginError(self):
		currPlay = self.session.nav.getCurrentService()
		message = currPlay.info().getInfoString(iServiceInformation.sUser+12)
		print "[__evPluginError]" , message
		self.session.open(MessageBox, ("GStreamer Error: missing %s") % message, type = MessageBox.TYPE_INFO,timeout = 20 )
	def Exit(self):
		if self.filelist.getCurrentDirectory() is None:
			config.plugins.mc_vp.lastDir.value = "/"
		else:
			config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
		config.plugins.mc_vp.save()
		self.close()
Example #2
0
class MC_VideoPlayer(Screen, HelpableScreen):
    def __init__(self, session):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)
        #		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
        #		self.session.nav.stopService()
        self["key_red"] = Button(_("Favorites"))
        self["key_yellow"] = Button("")
        self["key_blue"] = Button(_("Settings"))
        self["currentfolder"] = Label("")
        self["currentfavname"] = Label("")
        self.curfavfolder = -1

        self["actions"] = HelpableActionMap(
            self, "MC_VideoPlayerActions", {
                "ok": (self.KeyOk, "Play selected file"),
                "cancel": (self.Exit, "Exit Video Player"),
                "left": (self.leftUp, "List Top"),
                "right": (self.rightDown, "List Bottom"),
                "up": (self.up, "List up"),
                "down": (self.down, "List down"),
                "menu": (self.KeyMenu, "File / Folder Options"),
                "info": (self.showFileInfo, "Show File Info"),
                "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
                "prevBouquet":
                (self.PrevFavFolder, "Previous Favorite Folder"),
                "red": (self.FavoriteFolders, "Favorite Folders"),
                "blue": (self.KeySettings, "Settings"),
            }, -2)
        self.aspect = getAspect()
        currDir = config.plugins.mc_vp.lastDir.value
        if not pathExists(currDir):
            currDir = "/"
        self["currentfolder"].setText(str(currDir))
        self.filelist = FileList(
            currDir,
            useServiceRef=True,
            showDirectories=True,
            showFiles=True,
            matchingPattern=
            "(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|mp4|flv|divx)")
        self["filelist"] = self.filelist
        self.__event_tracker = ServiceEventTracker(
            screen=self,
            eventmap={
                iPlayableService.evUser + 11: self.__evDecodeError,
                iPlayableService.evUser + 12: self.__evPluginError
            })

    def up(self):
        self["filelist"].up()

    def down(self):
        self["filelist"].down()

    def leftUp(self):
        self["filelist"].pageUp()

    def rightDown(self):
        self["filelist"].pageDown()

    def NextFavFolder(self):
        if self.curfavfolder + 1 < config.plugins.mc_favorites.foldercount.value:
            self.curfavfolder += 1
            self.favname = config.plugins.mc_favorites.folders[
                self.curfavfolder].name.value
            self.folder = config.plugins.mc_favorites.folders[
                self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if os.path.exists(self.folder) == True:
                self["filelist"].changeDir(self.folder)
        else:
            return

    def PrevFavFolder(self):
        if self.curfavfolder <= 0:
            return
        else:
            self.curfavfolder -= 1
            self.favname = config.plugins.mc_favorites.folders[
                self.curfavfolder].name.value
            self.folder = config.plugins.mc_favorites.folders[
                self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if os.path.exists(self.folder) == True:
                self["filelist"].changeDir(self.folder)

    def showFileInfo(self):
        if self["filelist"].canDescent():
            return
        else:
            self.session.open(
                MC_VideoInfoView, self["filelist"].getCurrentDirectory() +
                self["filelist"].getFilename(), self["filelist"].getFilename(),
                self["filelist"].getServiceRef())

    def KeyOk(self):
        if self.filelist.canDescent():
            self.filelist.descent()
        else:
            self.session.open(BonkelPlayer, self["filelist"].getServiceRef())
            # screen adjustment
            os.system("echo " +
                      hex(config.plugins.mc_globalsettings.dst_top.value)[2:] +
                      " > /proc/stb/vmpeg/0/dst_top")
            os.system(
                "echo " +
                hex(config.plugins.mc_globalsettings.dst_left.value)[2:] +
                " > /proc/stb/vmpeg/0/dst_left")
            os.system(
                "echo " +
                hex(config.plugins.mc_globalsettings.dst_width.value)[2:] +
                " > /proc/stb/vmpeg/0/dst_width")
            os.system(
                "echo " +
                hex(config.plugins.mc_globalsettings.dst_height.value)[2:] +
                " > /proc/stb/vmpeg/0/dst_height")

    def KeyMenu(self):
        if self["filelist"].canDescent():
            if self.filelist.getCurrent()[0][1]:
                self.currentDirectory = self.filelist.getCurrent()[0][0]
                if self.currentDirectory is not None:
                    foldername = self.currentDirectory.split('/')
                    foldername = foldername[-2]
                    self.session.open(MC_FolderOptions, self.currentDirectory,
                                      foldername)

    def returnVal(self, val=0):
        if val > 0:
            for x in self.filelist.getFileList():
                if x[0][1] == True:
                    val += 1
            self.filelist.moveToIndex(val)

    def JumpToFolder(self, jumpto=None):
        if jumpto is None:
            return
        else:
            self["filelist"].changeDir(jumpto)
            self["currentfolder"].setText(("%s") % (jumpto))

    def FavoriteFolders(self):
        self.session.openWithCallback(self.JumpToFolder, MC_FavoriteFolders)

    def KeySettings(self):
        self.session.open(VideoPlayerSettings)

    def __evDecodeError(self):
        currPlay = self.session.nav.getCurrentService()
        sVideoType = currPlay.info().getInfoString(
            iServiceInformation.sVideoType)
        print "[__evDecodeError] video-codec %s can't be decoded by hardware" % (
            sVideoType)
        self.session.open(MessageBox,
                          _("This Dreambox can't decode %s video streams!") %
                          sVideoType,
                          type=MessageBox.TYPE_INFO,
                          timeout=10)

    def __evPluginError(self):
        currPlay = self.session.nav.getCurrentService()
        message = currPlay.info().getInfoString(iServiceInformation.sUser + 12)
        print "[__evPluginError]", message
        self.session.open(MessageBox,
                          ("GStreamer Error: missing %s") % message,
                          type=MessageBox.TYPE_INFO,
                          timeout=20)

    def Exit(self):
        if self.filelist.getCurrentDirectory() is None:
            config.plugins.mc_vp.lastDir.value = "/"
        else:
            config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory(
            )
        config.plugins.mc_vp.save()
        self.close()
class EVOMC_PictureViewer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		
		# Show Background MVI
		#system("/usr/bin/showiframe /usr/lib/enigma2/python/Plugins/Extensions/EVOMediaCenter/icons/background.mvi &")
		
		self["key_red"] = Button("Favorites")
		self["key_green"] = Button("Slide Show")
		self["key_yellow"] = Button("Thumb View")
		self["key_blue"] = Button(_("Settings"))

		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.curfavfolder = -1

		self["actions"] = HelpableActionMap(self, "EVOMC_PictureViewerActions", 
			{
				"ok": (self.KeyOk, "Show Picture"),
#				"cancel": (self.Exit, "Exit Picture Viewer"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"info": (self.StartExif, "Show File Info"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
				"red": (self.FavoriteFolders, "Favorite Folders"),
				"green": (self.startslideshow, "Start Slideshow"),
				"yellow": (self.StartThumb, "Thumb View"),
				"blue": (self.Settings, "Settings"),
			}, -2)
			
		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", 
			{
				"cancel": (self.Exit, "Exit Picture Viewer"),
			}, -2)
		
		self.aspect = getAspect()
		currDir = config.plugins.EVOMC_pp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"

		self["currentfolder"].setText(str(currDir))

		self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
		self["filelist"] = self.filelist
		self["thumbnail"] = Pixmap()
		evfd.getInstance().vfd_write_string("EVO-PICVIEWER")
		self.ThumbTimer = eTimer()
		self.ThumbTimer.callback.append(self.showThumb)
		self.ThumbTimer.start(500, True)

		self.picload = ePicLoad()
		#self.picload.PictureData.get().append(self.showPic)
		
	def startslideshow(self):
		self.session.openWithCallback(self.returnVal , EVOMC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), True)

	def up(self):
		self["filelist"].up()
		self.ThumbTimer.start(500, True)

	def down(self):
		self["filelist"].down()
		self.ThumbTimer.start(500, True)
		
	def leftUp(self):
		self["filelist"].pageUp()
		self.ThumbTimer.start(500, True)
		
	def rightDown(self):
		self["filelist"].pageDown()
		self.ThumbTimer.start(500, True)

	def NextFavFolder(self):
		if self.curfavfolder + 1 < config.plugins.EVOMC_favorites.foldercount.value:
			self.curfavfolder += 1
			self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value
			self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value
			self["currentfolder"].setText(("%s") % (self.folder))
			self["currentfavname"].setText(("%s") % (self.favname))
			if pathExists(self.folder) == True:
				self["filelist"].changeDir(self.folder)
		else:
			return
			
	def PrevFavFolder(self):
		if self.curfavfolder <= 0:
			return
		else:
			self.curfavfolder -= 1
			self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value
			self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value
			self["currentfolder"].setText(("%s") % (self.folder))
			self["currentfavname"].setText(("%s") % (self.favname))
			if pathExists(self.folder) == True:
				self["filelist"].changeDir(self.folder)

	def showPic(self, picInfo=""):
		ptr = self.picload.getData()
		if ptr != None:
			self["thumbnail"].instance.setPixmap(ptr.__deref__())
			self["thumbnail"].show()
			
	def showThumb(self):
		return
		if not self.filelist.canDescent():
			if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1:
				ptr = self.picload.getData()
			else:
				ptr = None
			
			#ptr = loadPic(self.filelist.getCurrentDirectory() + self.filelist.getFilename(), 180, 160, self.aspect, int(config.plugins.EVOMC_pp.resize.value), 0, 0, cachefile)
			if ptr != None:
				self["thumbnail"].instance.setPixmap(ptr.__deref__())
				self["thumbnail"].show()
		else:
			self["thumbnail"].hide()

	def KeyOk(self):
		if self.filelist.canDescent():
			self.filelist.descent()
		else:
			self.session.openWithCallback(self.returnVal, EVOMC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), False)

	def KeyMenu(self):
		self.ThumbTimer.stop()
		if self["filelist"].canDescent():
			if self.filelist.getCurrent()[0][1]:
				self.currentDirectory = self.filelist.getCurrent()[0][0]
				foldername = self.currentDirectory.split('/')
				foldername = foldername[-2]
				self.session.open(EVOMC_FolderOptions,self.currentDirectory, foldername)
	
	def StartThumb(self):
		self.session.openWithCallback(self.returnVal, EVOMC_PicThumbViewer, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory())

	def JumpToFolder(self, jumpto = None):
		if jumpto is None:
			return
		else:
			self["filelist"].changeDir(jumpto)
			self["currentfolder"].setText(("%s") % (jumpto))
	
	def FavoriteFolders(self):
		self.session.openWithCallback(self.JumpToFolder, EVOMC_FavoriteFolders)

	def returnVal(self, val=0):
		if val > 0:
			for x in self.filelist.getFileList():
				if x[0][1] == True:
					val += 1
			self.filelist.moveToIndex(val)

	def StartExif(self):
		if not self.filelist.canDescent():
			#self.session.open(Pic_Exif, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
			#self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getSelectionIndex()))
			self.session.open(MessageBox, "Oh no, bugged in this version :(", MessageBox.TYPE_ERROR)

	def Settings(self):
		self.session.open(EVOMC_PicSetup)
	
	def Exit(self):
		if self.filelist.getCurrentDirectory() is None:
			config.plugins.EVOMC_pp.lastDir.value = "/"
		else:
			config.plugins.EVOMC_pp.lastDir.value = self.filelist.getCurrentDirectory()

		config.plugins.EVOMC_pp.save()
		self.close()
Example #4
0
class EVOMC_AudioPlayer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		self.bScreen = self.session.instantiateDialog(Blackscreen)
		self.bScreen.show()
		self.myaudioScreenSaverconfig = int(config.plugins.EVOMC_saver.myaudioScreenSaver.value)
		self.myaudioScreenSaverTimer = eTimer()
		self.myaudioScreenSaverTimer.timeout.get().append(self.myaudioScreenSaverTimer_Timeout)
		self.ResetmyaudioScreenSaverTimer()
		self.start_timer = eTimer()
		self.moveTimer = eTimer()
		self.start_timer.timeout.get().append(self.onLayoutFinished) 
		self.isVisible = True
		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
		self.skindir = "/usr/lib/enigma2/python/Plugins/Extensions/EVOMediaCenter/skins/basic"
		self.coverArtFileName = ""
		self["PositionGauge"] = ServicePositionGauge(self.session.nav)
		self["key_red"] = Button(_("Delete"))
		self["key_green"] = Button(_("Play All"))
		self["key_yellow"] = Button(_("Favorites"))
		self["key_blue"] = Button(_("Settings"))
		self["fileinfo"] = Label()
		self["coverArt"] = MediaPixmap()
		self["currentfolder"] = Label()
		self["currentfavname"] = Label()
		self.playlist = MyPlayList()
		self.currList = "filelist"
		self.curfavfolder = -1
		self["play"] = Pixmap()
		self["stop"] = Pixmap()
		self["curplayingtitle"] = Label()
		self.currPlaying = 0
		self.PlaySingle = 0
		self.PlaySingleRUN = 0
		self.PlayAll = 0
		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
			{
				iPlayableService.evEOF: self.doEOF,
				iPlayableService.evStopped: self.StopPlayback,
				iPlayableService.evUser+11: self.__evDecodeError,
				iPlayableService.evUser+12: self.__evPluginError,
				iPlayableService.evUser+13: self["coverArt"].embeddedCoverArt
			})
		self["actions"] = HelpableActionMap(self, "EVOMC_AudioPlayerActions",
			{
				"ok": (self.KeyPlaySingle, "Play selected file"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"video": (self.visibility, "Show / Hide Player"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
				"red": (self.deleteFile, "Delete File"),
				"green": (self.KeyPlayAll, "Play All"),
				"yellow": (self.FavoriteFolders, "Favorite Folders"),
				"blue": (self.Settings, "Settings"),
			}, -2)
		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
			{
				"cancel": (self.Exit, "Exit Audio Player"),
			}, -2)
		self["InfobarShowHideActions"] = HelpableActionMap(self, "InfobarShowHideActions",
			{
				"toggleShow": (self.showFileInfo, "Show File Info"),
			}, -2)
		self["MediaPlayerActions"] = HelpableActionMap(self, "MediaPlayerActions",
			{
				"stop": (self.StopPlayback, "Stop Playback"),
			}, -2)
		self.aspect = getAspect()
		currDir = config.plugins.EVOMC_ap.lastDir.value
		if not pathExists(currDir):
			currDir = "/"
		self["currentfolder"].setText(str(currDir))
		self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(mp3|ogg|wma|wav|wave|flac|m4a)")
		self["filelist"] = self.filelist
		self["thumbnail"] = Pixmap()
		evfd.getInstance().vfd_write_string("EVO-AUDIOPLAYER")
		self.ThumbTimer = eTimer()
		self.ThumbTimer.callback.append(self.showThumb)
		self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True)
		self.DimmerTimer = eTimer()
		self.DimmerTimer.callback.append(self.showDimmer)
		self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
		self.BlinkingPlayIconTimer = eTimer()
		self.BlinkingPlayIconTimer.callback.append(self.BlinkingPlayIcon)
		self.blinking=False
		self.FileInfoTimer = eTimer()
		self.FileInfoTimer.callback.append(self.updateFileInfo)
		self.myaudioScreenSaverconfig = int(config.plugins.EVOMC_saver.myaudioScreenSaver.value)
        	self.ResetmyaudioScreenSaverTimer()
	def onLayoutFinished(self):
        	global startindex
        	self.startindex = startindex
        	self.num += 1
        	if startindex is not None:
            		self.start_timer.stop()
        	else:
            		if self.num < 30:
               			self.start_timer.start(2000)
            		else:
                		self.start_timer.stop()
                		fehler = "Fehler beim automatischen Start"
                		self.session.open(MessageBox,_("%s" %fehler), MessageBox.TYPE_INFO)
	def myaudioScreenSaverTimer_Timeout(self):
        	if self.myaudioScreenSaverTimer.isActive():
        		self.myaudioScreenSaverTimer.stop()
        	self.session.openWithCallback(self.ResetmyaudioScreenSaverTimer,myaudioScreenSaver)
	def ResetmyaudioScreenSaverTimer(self):
        	if onmyaudioScreenSaver:
            		pass
        	if self.myaudioScreenSaverconfig != 0:
            		if self.myaudioScreenSaverTimer.isActive():
                		self.myaudioScreenSaverTimer.stop()
            		self.myaudioScreenSaverTimer.start(self.myaudioScreenSaverconfig * 1000)
	def deleteFile(self):
		if self.currList == "filelist":
			self.service = self.filelist.getServiceRef()
		else:
			self.service = self.playlist.getSelection()
		if self.service is None:
			return
		if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference() is not None:
			if self.service == self.session.nav.getCurrentlyPlayingServiceReference():
				self.stopEntry()

		serviceHandler = eServiceCenter.getInstance()
		offline = serviceHandler.offlineOperations(self.service)
		info = serviceHandler.info(self.service)
		name = info and info.getName(self.service)
		result = False
		if offline is not None:
			# simulate first
			if not offline.deleteFromDisk(1):
				result = True
		if result == True:
			self.session.openWithCallback(self.deleteConfirmed_offline, MessageBox, _("Do you really want to delete %s?") % (name))
		else:
			self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"), MessageBox.TYPE_ERROR)      

	def deleteConfirmed_offline(self, confirmed):
		if confirmed:
			serviceHandler = eServiceCenter.getInstance()
			offline = serviceHandler.offlineOperations(self.service)
			result = False
			if offline is not None:
				# really delete!
				if not offline.deleteFromDisk(0):
					result = True
			if result == False:
				self.session.open(MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR)
			else:
				self.removeListEntry()

	def removeListEntry(self):
		self.savePlaylistOnExit = True
		currdir = self.filelist.getCurrentDirectory()
		self.filelist.changeDir(currdir)
		deleteend = False
		while not deleteend:
			index = 0
			deleteend = True
			if len(self.playlist) > 0:
				for x in self.playlist.list:
					if self.service == x[0]:
						self.playlist.deleteFile(index)
						deleteend = False
						break
					index += 1
		self.playlist.updateList()
		if self.currList == "playlist":
			if len(self.playlist) == 0:
				self.switchToFileList()
	def up(self):
		self["filelist"].up()
		system("stfbcontrol a 255")
		self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True)
		self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
	def down(self):
		self["filelist"].down()
		system("stfbcontrol a 255")
		self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True)
		self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
	def leftUp(self):
		self["filelist"].pageUp()
		system("stfbcontrol a 255")
		self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True)
		self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
	def rightDown(self):
		self["filelist"].pageDown()
		system("stfbcontrol a 255")
		self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True)
		self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
	def showDimmer(self):
		if config.plugins.EVOMC_all.showDimmer.value:
			system("stfbcontrol a 80")
#		else:
#			pass
	def NextFavFolder(self):
		system("stfbcontrol a 255")
		if self.curfavfolder + 1 < config.plugins.EVOMC_favorites.foldercount.value:
			self.curfavfolder += 1
			self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value
			self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value
			self["currentfolder"].setText(("%s") % (self.folder))
			self["currentfavname"].setText(("%s") % (self.favname))
			if pathExists(self.folder) == True:
				self["filelist"].changeDir(self.folder)
		else:
			return
	def PrevFavFolder(self):
		system("stfbcontrol a 255")
		if self.curfavfolder <= 0:
			return
		else:
			self.curfavfolder -= 1
			self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value
			self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value
			self["currentfolder"].setText(("%s") % (self.folder))
			self["currentfavname"].setText(("%s") % (self.favname))
			if pathExists(self.folder) == True:
				self["filelist"].changeDir(self.folder)
	def KeyPlaySingle(self):
		filename = self["filelist"].getFilename()
		print "filename", filename
		print "self.PlaySingle", self.PlaySingle
		if self.PlaySingleRUN == 0:
			if self.PlaySingle == 1 or config.plugins.EVOMC_ap.showPreview.getValue():
				if filename.upper().endswith(".MP3") or filename.upper().endswith(".OGG") or filename.upper().endswith(".WAV") or filename.upper().endswith(".WAVE") or filename.upper().endswith(".FLAC") or filename.upper().endswith(".M4A"):
					return
		else:
			if config.plugins.EVOMC_ap.showPreview.getValue():
				if filename.upper().endswith(".MP3") or filename.upper().endswith(".OGG") or filename.upper().endswith(".WAV") or filename.upper().endswith(".WAVE") or filename.upper().endswith(".FLAC") or filename.upper().endswith(".M4A"):
					return
		system("stfbcontrol a 255")
		self.ThumbTimer.stop()
		if self["filelist"].canDescent():
			self["currentfavname"].setText("")
			self.curfavfolder = -1
			self.filelist.descent()
			self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
		else:
			self.PlaySingle = 1
			self.PlaySingleRUN = 1
			self.PlayService()
			self.BlinkingPlayIconTimer.stop()
	def KeyPlayAll(self):
		self.ThumbTimer.stop()
		if not self["filelist"].canDescent():
			self.PlaySingle = 0
			self.PlayAll = 1
			self.PlayService()
			self.BlinkingPlayIconTimer.start(1000, True)
	def PlayService(self):
		system("stfbcontrol a 255")
		self.StopPlayback()
		self.filelist.refresh()
		self.currPlaying = 1
		if self.PlayAll == 1:
			self.BlinkingPlayIconTimer.start(1000, True)
		evfd.getInstance().vfd_write_string("PLAY")
		self.session.nav.playService(self["filelist"].getServiceRef())
		self.FileInfoTimer.start(2000, True)
		self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_enabled.png")
		self["stop"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/stop_disabled.png")
		system("vfdctl +play")
		system("vfdctl +mp3")
		system("vfdctl +music")
		path = self["filelist"].getFilename()
		self["coverArt"].updateCoverArt(path)
	def JumpToFolder(self, jumpto = None):
		if jumpto is None:
			return
		else:
			self["filelist"].changeDir(jumpto)
			self["currentfolder"].setText(("%s") % (jumpto))
	def FavoriteFolders(self):
		self.session.openWithCallback(self.JumpToFolder, EVOMC_FavoriteFolders)
	def StartThumb(self):
		self.session.openWithCallback(self.returnVal, ThumbView, self.filelist.getFileList(), self.filelist.getFilename(), self.filelist.getCurrentDirectory())
	def showThumb(self):
		if config.plugins.EVOMC_ap.showPreview.getValue() == False:
			return
		if self["filelist"].canDescent():
			return
		else:
			if self["filelist"].getServiceRef() is not None:
				system("stfbcontrol a 255")
				self.ThumbTimer.stop()
				system("killall -9 showiframe")
				system("stfbcontrol a 255")
				self.filelist.refresh()
				self.session.nav.stopService()
				self.session.nav.playService(self["filelist"].getServiceRef())
				self.currPlaying = 1
				self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_enabled.png")
				self["stop"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/stop_disabled.png")
				self.FileInfoTimer.start(2000, True)
				self.BlinkingPlayIconTimer.start(1000, True)
	def returnVal(self, val=0):
		if val > 0:
			for x in self.filelist.getFileList():
				if x[0][1] == True:
					val += 1
			self.filelist.moveToIndex(val)
	def StartExif(self):
		if not self.filelist.canDescent():
			self.session.open(ExifView, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
	def visibility(self, force=1):
		if self.isVisible == True:
			self.isVisible = False
			self.hide()
		else:
			self.isVisible = True
			self.show()
	def BlinkingPlayIcon(self):
		if self.blinking:
			self.blinking=False
			self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_disabled.png")
			self.BlinkingPlayIconTimer.start(1000, True)
		else:
			self.blinking=True
			self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_enabled.png")
			self.BlinkingPlayIconTimer.start(1000, True)
	def StopPlayback(self):
		evfd.getInstance().vfd_write_string("STOP")
		if self.isVisible == False:
			self.show()
			self.isVisible = True
		if self.session.nav.getCurrentService() is None:
			return
		else:
			self.session.nav.stopService()
			self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_disabled.png")
			self["stop"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/stop_enabled.png")
			self.currPlaying = 0
			self.BlinkingPlayIconTimer.stop()
			self.ThumbTimer.stop()
			system("killall -9 showiframe")
			system("stfbcontrol a 255")
			self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True)
			self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
			system("vfdctl -play")
			system("vfdctl -mp3")
			system("vfdctl -music")
			self.StopPlayback()
	def showFileInfo(self):
		if self["filelist"].canDescent():
			return
		else:
			system("stfbcontrol a 255")
			self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True)
			self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
			self.session.open(EVOMC_AudioInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef())
	def updateFileInfo(self):
		if self["filelist"].canDescent():
			return
		currPlay = self.session.nav.getCurrentService()
		if currPlay is not None:
			stitle = currPlay.info().getInfoString(iServiceInformation.sTagTitle)
			sArtist = currPlay.info().getInfoString(iServiceInformation.sTagArtist)
			sAlbum = currPlay.info().getInfoString(iServiceInformation.sTagAlbum)
			sGenre = currPlay.info().getInfoString(iServiceInformation.sTagGenre)
			sYear = currPlay.info().getInfoString(iServiceInformation.sTimeCreate)
#			sComment = currPlay.info().getInfoString(iServiceInformation.sTagComment)
			if stitle == "":
				stitle = currPlay.info().getName().split('/')[-1]
			self["fileinfo"].setText("Title: " + stitle + "\nArtist: " +  sArtist + "\nAlbum: " + sAlbum + "\nGenre: " + sGenre)
			self["curplayingtitle"].setText(stitle)
		else:
			pass
	def doEOF(self):
		try:
			print "EVO-MediaCenter: EOF Event ..."
			if self.PlaySingle == 0:
				print "Play Next File ..."
				self.ThumbTimer.stop()
				self.down()
				try:
					self.PlayService()
				except:
					pass
			else:
				print "Stop Playback ..."
				self.StopPlayback()
				system("vfdctl -play")
				system("vfdctl -mp3")
				system("vfdctl -music")
		except:
			pass
	def __evDecodeError(self):
		currPlay = self.session.nav.getCurrentService()
		sAudioType = currPlay.info().getInfoString(iServiceInformation.sUser+10)
		print "[__evAudioDecodeError] audio-codec %s can't be decoded by hardware" % (sAudioType)
		self.session.open(MessageBox, _("This UFS can't decode %s streams!") % sAudioType, type = MessageBox.TYPE_INFO,timeout = 5 )
	def __evPluginError(self):
		currPlay = self.session.nav.getCurrentService()
		message = currPlay.info().getInfoString(iServiceInformation.sUser+12)
		print "[__evPluginError]" , message
		self.session.open(MessageBox, message, type = MessageBox.TYPE_INFO,timeout = 20 )
	def Playlists(self):
		evfd.getInstance().vfd_write_string("PLAYLIST")
		self.ThumbTimer.stop()
		self.session.open(MessageBox,"Coming soon ... :)",  MessageBox.TYPE_INFO)
	def KeyMenu(self):
		self.ThumbTimer.stop()
		if self["filelist"].canDescent():
			if self.filelist.getCurrent()[0][1]:
				self.currentDirectory = self.filelist.getCurrent()[0][0]
				self.foldername = self.currentDirectory.split('/')
				self.foldername = self.foldername[-2]
				self.session.open(EVOMC_FolderOptions, self.currentDirectory, self.foldername)
	def Settings(self):
		evfd.getInstance().vfd_write_string("SETTINGS")
		system("stfbcontrol a 255")
		self.ThumbTimer.stop()
		self.session.open(AudioPlayerSettings)
		config.plugins.EVOMC_ap.save()
		config.plugins.EVOMC_all.save()
	def Exit(self):
		if self.isVisible == False:
			self.visibility()
			return
		if self.filelist.getCurrentDirectory() is None:
			config.plugins.EVOMC_ap.lastDir.value = "/"
		else:
			config.plugins.EVOMC_ap.lastDir.value = self.filelist.getCurrentDirectory()
		system("killall -9 showiframe")
		system("stfbcontrol a 255")
		system("vfdctl -play")
		system("vfdctl -mp3")
		system("vfdctl -music")
		self.ThumbTimer.stop()
		self.DimmerTimer.stop()
		self.FileInfoTimer.stop()
		del self["coverArt"].picload
		config.plugins.EVOMC_ap.save()
		config.plugins.EVOMC_all.save()
		self.session.nav.stopService()
		evfd.getInstance().vfd_write_string("EVO-MediaCenter")
		self.close()
class EVOMC_VideoPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarNotifications, HelpableScreen):
    def __init__(self, session):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)
        InfoBarNotifications.__init__(self)
        InfoBarBase.__init__(self)
        InfoBarSeek.__init__(self, actionmap="MediaPlayerSeekActions")
        self.isVisible = True
        self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
        self.session.nav.stopService()
        self.playlistparsers = {}
        self.addPlaylistParser(PlaylistIOM3U, "m3u")
        self.playlist = MyPlayList()
        self["fileinfo"] = Label()
        self["key_red"] = Button(_("Delete"))
        self["key_green"] = Button(_(""))
        self["key_yellow"] = Button("Favorites")
        self["key_blue"] = Button(_("Settings"))
        self["currentfolder"] = Label("")
        self["currentfavname"] = Label("")
        self.currList = "filelist"
        self.curfavfolder = -1
        self["actions"] = HelpableActionMap(
            self,
            "EVOMC_VideoPlayerActions",
            {
                "ok": (self.KeyOk, "Play selected file"),
                "left": (self.leftUp, "List Top"),
                "right": (self.rightDown, "List Bottom"),
                "up": (self.up, "List up"),
                "down": (self.down, "List down"),
                "menu": (self.KeyMenu, "File / Folder Options"),
                "video": (self.visibility, "Show / Hide Player"),
                "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
                "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
                "stop": (self.StopPlayback, "Stop Playback"),
                "red": (self.deleteFile, "Delete File"),
                "yellow": (self.FavoriteFolders, "Favorite Folders"),
                # 				"green": (self.showPreview, "Preview"),
                "blue": (self.KeySettings, "Settings"),
            },
            -2,
        )
        self["InfobarShowHideActions"] = HelpableActionMap(
            self, "InfobarShowHideActions", {"toggleShow": (self.showFileInfo, "Show File Info")}, -2
        )
        self["OkCancelActions"] = HelpableActionMap(
            self, "OkCancelActions", {"cancel": (self.Exit, "Exit Video Player")}, -2
        )
        self.aspect = getAspect()
        currDir = config.plugins.EVOMC_vp.lastDir.value
        if not pathExists(currDir):
            currDir = "/"
        self["currentfolder"].setText(str(currDir))
        if pathExists("/usr/lib/enigma2/python/Plugins/Extensions/DVDPlayer") is True:
            self.filelist = FileList(
                currDir,
                useServiceRef=True,
                showDirectories=True,
                showFiles=True,
                matchingPattern="(?i)^.*\.(mp4|ts|trp|wmv|mpg|vob|avi|mkv|dat|flac|m2ts|trp|flv)",
            )
        else:
            self.filelist = FileList(
                currDir,
                useServiceRef=True,
                showDirectories=True,
                showFiles=True,
                matchingPattern="(?i)^.*\.(mp4|ts|trp|wmv|mpg|vob|avi|mkv|dat|flac|m2ts|trp|flv)",
            )
        self["filelist"] = self.filelist
        self["thumbnail"] = Pixmap()
        evfd.getInstance().vfd_write_string("EVO-VIDEOPLAYER")
        # 		self.filelist.refresh()
        # 		self.ThumbTimer = eTimer()
        # 		self.ThumbTimer.callback.append(self.showThumb)
        # 		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        # 		self.filelistTimer = eTimer()
        # 		self.filelistTimer.callback.append(self.filelist.refresh())
        # 		self.filelistTimer.start(60, True)
        self.DimmerTimer = eTimer()
        self.DimmerTimer.callback.append(self.showDimmer)
        self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
        self.__event_tracker = ServiceEventTracker(
            screen=self,
            eventmap={
                iPlayableService.evUser + 11: self.__evDecodeError,
                iPlayableService.evUser + 12: self.__evPluginError,
            },
        )

    def addPlaylistParser(self, parser, extension):
        self.playlistparsers[extension] = parser

    def deleteFile(self):
        if self.currList == "filelist":
            self.service = self.filelist.getServiceRef()
        else:
            self.service = self.playlist.getSelection()
        if self.service is None:
            return
        if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference() is not None:
            if self.service == self.session.nav.getCurrentlyPlayingServiceReference():
                self.stopEntry()

        serviceHandler = eServiceCenter.getInstance()
        offline = serviceHandler.offlineOperations(self.service)
        info = serviceHandler.info(self.service)
        name = info and info.getName(self.service)
        result = False
        if offline is not None:
            # simulate first
            if not offline.deleteFromDisk(1):
                result = True
        if result == True:
            self.session.openWithCallback(
                self.deleteConfirmed_offline, MessageBox, _("Do you really want to delete %s?") % (name)
            )
        else:
            self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"), MessageBox.TYPE_ERROR)

    def deleteConfirmed_offline(self, confirmed):
        if confirmed:
            serviceHandler = eServiceCenter.getInstance()
            offline = serviceHandler.offlineOperations(self.service)
            result = False
            if offline is not None:
                # really delete!
                if not offline.deleteFromDisk(0):
                    result = True
            if result == False:
                self.session.open(MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR)
            else:
                self.removeListEntry()

    def removeListEntry(self):
        self.savePlaylistOnExit = True
        currdir = self.filelist.getCurrentDirectory()
        self.filelist.changeDir(currdir)
        deleteend = False
        while not deleteend:
            index = 0
            deleteend = True
            if len(self.playlist) > 0:
                for x in self.playlist.list:
                    if self.service == x[0]:
                        self.playlist.deleteFile(index)
                        deleteend = False
                        break
                    index += 1
        self.playlist.updateList()
        if self.currList == "playlist":
            if len(self.playlist) == 0:
                self.switchToFileList()

    def up(self):
        system("stfbcontrol a 255")
        self["filelist"].up()
        # 		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)

    def down(self):
        system("stfbcontrol a 255")
        self["filelist"].down()
        # 		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)

    def leftUp(self):
        system("stfbcontrol a 255")
        self["filelist"].pageUp()
        # 		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)

    def rightDown(self):
        system("stfbcontrol a 255")
        self["filelist"].pageDown()
        # 		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)

    def showDimmer(self):
        if config.plugins.EVOMC_all.showDimmer.getValue():
            system("stfbcontrol a 80")

    def NextFavFolder(self):
        system("stfbcontrol a 255")
        if self.curfavfolder + 1 < config.plugins.EVOMC_favorites.foldercount.value:
            self.curfavfolder += 1
            self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value
            self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if pathExists(self.folder) == True:
                self["filelist"].changeDir(self.folder)
        else:
            return

    def PrevFavFolder(self):
        system("stfbcontrol a 255")
        if self.curfavfolder <= 0:
            return
        else:
            self.curfavfolder -= 1
            self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value
            self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if pathExists(self.folder) == True:
                self["filelist"].changeDir(self.folder)

    # 	def showPreview(self):
    # 		system("stfbcontrol a 255")
    # 		if self["filelist"].canDescent():
    # 			return
    # 		else:
    # 			if self["filelist"].getServiceRef() is not None:
    # 				self.DimmerTimer.stop()
    # 				self.session.nav.stopService()
    # 				self.session.nav.playService(self["filelist"].getServiceRef())
    # 	def showThumb(self):
    # 		if config.plugins.EVOMC_vp.showPreview.getValue() == False:
    # 			return
    # 		if self["filelist"].canDescent():
    # 			return
    # 		else:
    # 			if self["filelist"].getServiceRef() is not None:
    # 				self.DimmerTimer.stop()
    # 				self.session.nav.stopService()
    # 				self.session.nav.playService(self["filelist"].getServiceRef())
    def showFileInfo(self):
        if self["filelist"].canDescent():
            return
        else:
            system("stfbcontrol a 255")
            # 			self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
            self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
            self.session.open(
                EVOMC_VideoInfoView,
                self["filelist"].getCurrentDirectory() + self["filelist"].getFilename(),
                self["filelist"].getFilename(),
                self["filelist"].getServiceRef(),
            )

    def KeyOk(self):
        system("stfbcontrol a 255")
        system("echo 3 -> /dev/ttyAS1")
        self.filelist.refresh()
        if self.isVisible == False:
            self.visibility()
            return
        # 		self.ThumbTimer.stop()
        self.DimmerTimer.stop()
        if self.filelist.canDescent():
            self.filelist.descent()
        else:
            evfd.getInstance().vfd_write_string("PLAY")
            if self.filelist.getServiceRef().type == 4098:
                ServiceRef = self.filelist.getServiceRef()
                extension = ServiceRef.getPath()[ServiceRef.getPath().rfind(".") + 1 :]
                if self.playlistparsers.has_key(extension):
                    playlist = self.playlistparsers[extension]()
                    list = playlist.open(ServiceRef.getPath())
                    for x in list:
                        self.playlist.addFile(x.ref)
                self.playlist.updateList()
            else:
                self.playlist.addFile(self.filelist.getServiceRef())
                self.playlist.updateList()
            currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
            print "currref !!!!!!!!!!!!!!!!!!!!!!!!!", currref
            self.session.open(MoviePlayer, currref)

    # 			system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_top.value)[2:] + " > /proc/stb/vmpeg/0/dst_top")
    # 			system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_left.value)[2:] + " > /proc/stb/vmpeg/0/dst_left")
    # 			system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_width.value)[2:] + " > /proc/stb/vmpeg/0/dst_width")
    # 			system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_height.value)[2:] + " > /proc/stb/vmpeg/0/dst_height")
    def KeyMenu(self):
        # 		self.ThumbTimer.stop()
        if self["filelist"].canDescent():
            if self.filelist.getCurrent()[0][1]:
                self.currentDirectory = self.filelist.getCurrent()[0][0]
                foldername = self.currentDirectory.split("/")
                foldername = foldername[-2]
                self.session.open(EVOMC_FolderOptions, self.currentDirectory, foldername)

    # 	def StartThumb(self):
    # 		self.session.openWithCallback(self.returnVal, ThumbView, self.filelist.getFileList(), self.filelist.getFilename(), self.filelist.getCurrentDirectory())
    # 	def returnVal(self, val=0):
    # 		if val > 0:
    # 			for x in self.filelist.getFileList():
    # 				if x[0][1] == True:
    # 					val += 1
    # 			self.filelist.moveToIndex(val)
    # 	def StartExif(self):
    # 		if not self.filelist.canDescent():
    # 			self.session.open(ExifView, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
    def visibility(self, force=1):
        if self.isVisible == True:
            self.isVisible = False
            self.hide()
        else:
            self.isVisible = True
            self.show()

    def StopPlayback(self):
        # 		self.ThumbTimer.stop()
        system("echo C -> /dev/ttyAS1")
        self.session.nav.stopService()
        self.session.nav.playService(self.oldService)
        # 		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
        system("stfbcontrol a 255")
        self.show()

    def JumpToFolder(self, jumpto=None):
        if jumpto is None:
            return
        else:
            self["filelist"].changeDir(jumpto)
            self["currentfolder"].setText(("%s") % (jumpto))

    def FavoriteFolders(self):
        self.session.openWithCallback(self.JumpToFolder, EVOMC_FavoriteFolders)

    def KeySettings(self):
        self.session.open(VideoPlayerSettings)
        config.plugins.EVOMC_vp.save()
        config.plugins.EVOMC_all.save()

    def __evDecodeError(self):
        currPlay = self.session.nav.getCurrentService()
        sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType)
        print "[__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
        self.session.open(
            MessageBox,
            _("This Dreambox can't decode %s video streams!") % sVideoType,
            type=MessageBox.TYPE_INFO,
            timeout=10,
        )

    def __evPluginError(self):
        currPlay = self.session.nav.getCurrentService()
        message = currPlay.info().getInfoString(iServiceInformation.sUser + 12)
        print "[__evPluginError]", message
        self.session.open(MessageBox, ("GStreamer Error: missing %s") % message, type=MessageBox.TYPE_INFO, timeout=20)

    def Exit(self):
        system("stfbcontrol a 255")
        if self.isVisible == False:
            self.visibility()
            return
        if self.filelist.getCurrentDirectory() is None:
            config.plugins.EVOMC_vp.lastDir.value = "/"
        else:
            config.plugins.EVOMC_vp.lastDir.value = self.filelist.getCurrentDirectory()
        self.session.nav.stopService()
        self.DimmerTimer.stop()
        config.plugins.EVOMC_vp.save()
        config.plugins.EVOMC_all.save()
        self.close()

    def showAfterSeek(self):
        self.show()

    def checkSkipShowHideLock(self):
        self.updatedSeekState()

    def unPauseService(self):
        self.setSeekState(self.SEEK_STATE_PLAY)

    def updatedSeekState(self):
        if self.seekstate == self.SEEK_STATE_PAUSE:
            self.playlist.pauseFile()
        elif self.seekstate == self.SEEK_STATE_PLAY:
            self.playlist.playFile()
        elif self.isStateForward(self.seekstate):
            self.playlist.forwardFile()
        elif self.isStateBackward(self.seekstate):
            self.playlist.rewindFile()

    def addPlaylistParser(self, parser, extension):
        self.playlistparsers[extension] = parser
class EVOMC_PictureViewer(Screen, HelpableScreen):
    def __init__(self, session):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)

        # Show Background MVI
        #system("/usr/bin/showiframe /usr/lib/enigma2/python/Plugins/Extensions/EVOMediaCenter/icons/background.mvi &")

        self["key_red"] = Button("Favorites")
        self["key_green"] = Button("Slide Show")
        self["key_yellow"] = Button("Thumb View")
        self["key_blue"] = Button(_("Settings"))

        self["currentfolder"] = Label("")
        self["currentfavname"] = Label("")
        self.curfavfolder = -1

        self["actions"] = HelpableActionMap(
            self,
            "EVOMC_PictureViewerActions",
            {
                "ok": (self.KeyOk, "Show Picture"),
                #				"cancel": (self.Exit, "Exit Picture Viewer"),
                "left": (self.leftUp, "List Top"),
                "right": (self.rightDown, "List Bottom"),
                "up": (self.up, "List up"),
                "down": (self.down, "List down"),
                "menu": (self.KeyMenu, "File / Folder Options"),
                "info": (self.StartExif, "Show File Info"),
                "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
                "prevBouquet":
                (self.PrevFavFolder, "Previous Favorite Folder"),
                "red": (self.FavoriteFolders, "Favorite Folders"),
                "green": (self.startslideshow, "Start Slideshow"),
                "yellow": (self.StartThumb, "Thumb View"),
                "blue": (self.Settings, "Settings"),
            },
            -2)

        self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", {
            "cancel": (self.Exit, "Exit Picture Viewer"),
        }, -2)

        self.aspect = getAspect()
        currDir = config.plugins.EVOMC_pp.lastDir.value
        if not pathExists(currDir):
            currDir = "/"

        self["currentfolder"].setText(str(currDir))

        self.filelist = FileList(
            currDir, matchingPattern="(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
        self["filelist"] = self.filelist
        self["thumbnail"] = Pixmap()
        evfd.getInstance().vfd_write_string("EVO-PICVIEWER")
        self.ThumbTimer = eTimer()
        self.ThumbTimer.callback.append(self.showThumb)
        self.ThumbTimer.start(500, True)

        self.picload = ePicLoad()
        #self.picload.PictureData.get().append(self.showPic)

    def startslideshow(self):
        self.session.openWithCallback(self.returnVal, EVOMC_PicView,
                                      self.filelist.getFileList(),
                                      self.filelist.getSelectionIndex(),
                                      self.filelist.getCurrentDirectory(),
                                      True)

    def up(self):
        self["filelist"].up()
        self.ThumbTimer.start(500, True)

    def down(self):
        self["filelist"].down()
        self.ThumbTimer.start(500, True)

    def leftUp(self):
        self["filelist"].pageUp()
        self.ThumbTimer.start(500, True)

    def rightDown(self):
        self["filelist"].pageDown()
        self.ThumbTimer.start(500, True)

    def NextFavFolder(self):
        if self.curfavfolder + 1 < config.plugins.EVOMC_favorites.foldercount.value:
            self.curfavfolder += 1
            self.favname = config.plugins.EVOMC_favorites.folders[
                self.curfavfolder].name.value
            self.folder = config.plugins.EVOMC_favorites.folders[
                self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if pathExists(self.folder) == True:
                self["filelist"].changeDir(self.folder)
        else:
            return

    def PrevFavFolder(self):
        if self.curfavfolder <= 0:
            return
        else:
            self.curfavfolder -= 1
            self.favname = config.plugins.EVOMC_favorites.folders[
                self.curfavfolder].name.value
            self.folder = config.plugins.EVOMC_favorites.folders[
                self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if pathExists(self.folder) == True:
                self["filelist"].changeDir(self.folder)

    def showPic(self, picInfo=""):
        ptr = self.picload.getData()
        if ptr != None:
            self["thumbnail"].instance.setPixmap(ptr.__deref__())
            self["thumbnail"].show()

    def showThumb(self):
        return
        if not self.filelist.canDescent():
            if self.picload.getThumbnail(self.filelist.getCurrentDirectory() +
                                         self.filelist.getFilename()) == 1:
                ptr = self.picload.getData()
            else:
                ptr = None

            #ptr = loadPic(self.filelist.getCurrentDirectory() + self.filelist.getFilename(), 180, 160, self.aspect, int(config.plugins.EVOMC_pp.resize.value), 0, 0, cachefile)
            if ptr != None:
                self["thumbnail"].instance.setPixmap(ptr.__deref__())
                self["thumbnail"].show()
        else:
            self["thumbnail"].hide()

    def KeyOk(self):
        if self.filelist.canDescent():
            self.filelist.descent()
        else:
            self.session.openWithCallback(self.returnVal, EVOMC_PicView,
                                          self.filelist.getFileList(),
                                          self.filelist.getSelectionIndex(),
                                          self.filelist.getCurrentDirectory(),
                                          False)

    def KeyMenu(self):
        self.ThumbTimer.stop()
        if self["filelist"].canDescent():
            if self.filelist.getCurrent()[0][1]:
                self.currentDirectory = self.filelist.getCurrent()[0][0]
                foldername = self.currentDirectory.split('/')
                foldername = foldername[-2]
                self.session.open(EVOMC_FolderOptions, self.currentDirectory,
                                  foldername)

    def StartThumb(self):
        self.session.openWithCallback(self.returnVal, EVOMC_PicThumbViewer,
                                      self.filelist.getFileList(),
                                      self.filelist.getSelectionIndex(),
                                      self.filelist.getCurrentDirectory())

    def JumpToFolder(self, jumpto=None):
        if jumpto is None:
            return
        else:
            self["filelist"].changeDir(jumpto)
            self["currentfolder"].setText(("%s") % (jumpto))

    def FavoriteFolders(self):
        self.session.openWithCallback(self.JumpToFolder, EVOMC_FavoriteFolders)

    def returnVal(self, val=0):
        if val > 0:
            for x in self.filelist.getFileList():
                if x[0][1] == True:
                    val += 1
            self.filelist.moveToIndex(val)

    def StartExif(self):
        if not self.filelist.canDescent():
            #self.session.open(Pic_Exif, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
            #self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getSelectionIndex()))
            self.session.open(MessageBox, "Oh no, bugged in this version :(",
                              MessageBox.TYPE_ERROR)

    def Settings(self):
        self.session.open(EVOMC_PicSetup)

    def Exit(self):
        if self.filelist.getCurrentDirectory() is None:
            config.plugins.EVOMC_pp.lastDir.value = "/"
        else:
            config.plugins.EVOMC_pp.lastDir.value = self.filelist.getCurrentDirectory(
            )

        config.plugins.EVOMC_pp.save()
        self.close()
Example #7
0
class EVOMC_VideoPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarNotifications,
                        HelpableScreen):
    def __init__(self, session):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)
        InfoBarNotifications.__init__(self)
        InfoBarBase.__init__(self)
        InfoBarSeek.__init__(self, actionmap="MediaPlayerSeekActions")
        self.isVisible = True
        self.oldService = self.session.nav.getCurrentlyPlayingServiceReference(
        )
        self.session.nav.stopService()
        self.playlistparsers = {}
        self.addPlaylistParser(PlaylistIOM3U, "m3u")
        self.playlist = MyPlayList()
        self["fileinfo"] = Label()
        self["key_red"] = Button(_("Delete"))
        self["key_green"] = Button(_(""))
        self["key_yellow"] = Button("Favorites")
        self["key_blue"] = Button(_("Settings"))
        self["currentfolder"] = Label("")
        self["currentfavname"] = Label("")
        self.currList = "filelist"
        self.curfavfolder = -1
        self["actions"] = HelpableActionMap(
            self,
            "EVOMC_VideoPlayerActions",
            {
                "ok": (self.KeyOk, "Play selected file"),
                "left": (self.leftUp, "List Top"),
                "right": (self.rightDown, "List Bottom"),
                "up": (self.up, "List up"),
                "down": (self.down, "List down"),
                "menu": (self.KeyMenu, "File / Folder Options"),
                "video": (self.visibility, "Show / Hide Player"),
                "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
                "prevBouquet":
                (self.PrevFavFolder, "Previous Favorite Folder"),
                "stop": (self.StopPlayback, "Stop Playback"),
                "red": (self.deleteFile, "Delete File"),
                "yellow": (self.FavoriteFolders, "Favorite Folders"),
                #				"green": (self.showPreview, "Preview"),
                "blue": (self.KeySettings, "Settings"),
            },
            -2)
        self["InfobarShowHideActions"] = HelpableActionMap(
            self, "InfobarShowHideActions", {
                "toggleShow": (self.showFileInfo, "Show File Info"),
            }, -2)
        self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", {
            "cancel": (self.Exit, "Exit Video Player"),
        }, -2)
        self.aspect = getAspect()
        currDir = config.plugins.EVOMC_vp.lastDir.value
        if not pathExists(currDir):
            currDir = "/"
        self["currentfolder"].setText(str(currDir))
        if pathExists("/usr/lib/enigma2/python/Plugins/Extensions/DVDPlayer"
                      ) is True:
            self.filelist = FileList(
                currDir,
                useServiceRef=True,
                showDirectories=True,
                showFiles=True,
                matchingPattern=
                "(?i)^.*\.(mp4|ts|trp|wmv|mpg|vob|avi|mkv|dat|flac|m2ts|trp|flv)"
            )
        else:
            self.filelist = FileList(
                currDir,
                useServiceRef=True,
                showDirectories=True,
                showFiles=True,
                matchingPattern=
                "(?i)^.*\.(mp4|ts|trp|wmv|mpg|vob|avi|mkv|dat|flac|m2ts|trp|flv)"
            )
        self["filelist"] = self.filelist
        self["thumbnail"] = Pixmap()
        evfd.getInstance().vfd_write_string("EVO-VIDEOPLAYER")
        #		self.filelist.refresh()
        #		self.ThumbTimer = eTimer()
        #		self.ThumbTimer.callback.append(self.showThumb)
        #		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        #		self.filelistTimer = eTimer()
        #		self.filelistTimer.callback.append(self.filelist.refresh())
        #		self.filelistTimer.start(60, True)
        self.DimmerTimer = eTimer()
        self.DimmerTimer.callback.append(self.showDimmer)
        self.DimmerTimer.start(
            config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
        self.__event_tracker = ServiceEventTracker(
            screen=self,
            eventmap={
                iPlayableService.evUser + 11: self.__evDecodeError,
                iPlayableService.evUser + 12: self.__evPluginError
            })

    def addPlaylistParser(self, parser, extension):
        self.playlistparsers[extension] = parser

    def deleteFile(self):
        if self.currList == "filelist":
            self.service = self.filelist.getServiceRef()
        else:
            self.service = self.playlist.getSelection()
        if self.service is None:
            return
        if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference(
        ) is not None:
            if self.service == self.session.nav.getCurrentlyPlayingServiceReference(
            ):
                self.stopEntry()

        serviceHandler = eServiceCenter.getInstance()
        offline = serviceHandler.offlineOperations(self.service)
        info = serviceHandler.info(self.service)
        name = info and info.getName(self.service)
        result = False
        if offline is not None:
            # simulate first
            if not offline.deleteFromDisk(1):
                result = True
        if result == True:
            self.session.openWithCallback(
                self.deleteConfirmed_offline, MessageBox,
                _("Do you really want to delete %s?") % (name))
        else:
            self.session.openWithCallback(self.close, MessageBox,
                                          _("You cannot delete this!"),
                                          MessageBox.TYPE_ERROR)

    def deleteConfirmed_offline(self, confirmed):
        if confirmed:
            serviceHandler = eServiceCenter.getInstance()
            offline = serviceHandler.offlineOperations(self.service)
            result = False
            if offline is not None:
                # really delete!
                if not offline.deleteFromDisk(0):
                    result = True
            if result == False:
                self.session.open(MessageBox, _("Delete failed!"),
                                  MessageBox.TYPE_ERROR)
            else:
                self.removeListEntry()

    def removeListEntry(self):
        self.savePlaylistOnExit = True
        currdir = self.filelist.getCurrentDirectory()
        self.filelist.changeDir(currdir)
        deleteend = False
        while not deleteend:
            index = 0
            deleteend = True
            if len(self.playlist) > 0:
                for x in self.playlist.list:
                    if self.service == x[0]:
                        self.playlist.deleteFile(index)
                        deleteend = False
                        break
                    index += 1
        self.playlist.updateList()
        if self.currList == "playlist":
            if len(self.playlist) == 0:
                self.switchToFileList()

    def up(self):
        system("stfbcontrol a 255")
        self["filelist"].up()
        #		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(
            config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)

    def down(self):
        system("stfbcontrol a 255")
        self["filelist"].down()
        #		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(
            config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)

    def leftUp(self):
        system("stfbcontrol a 255")
        self["filelist"].pageUp()
        #		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(
            config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)

    def rightDown(self):
        system("stfbcontrol a 255")
        self["filelist"].pageDown()
        #		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(
            config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)

    def showDimmer(self):
        if config.plugins.EVOMC_all.showDimmer.getValue():
            system("stfbcontrol a 80")

    def NextFavFolder(self):
        system("stfbcontrol a 255")
        if self.curfavfolder + 1 < config.plugins.EVOMC_favorites.foldercount.value:
            self.curfavfolder += 1
            self.favname = config.plugins.EVOMC_favorites.folders[
                self.curfavfolder].name.value
            self.folder = config.plugins.EVOMC_favorites.folders[
                self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if pathExists(self.folder) == True:
                self["filelist"].changeDir(self.folder)
        else:
            return

    def PrevFavFolder(self):
        system("stfbcontrol a 255")
        if self.curfavfolder <= 0:
            return
        else:
            self.curfavfolder -= 1
            self.favname = config.plugins.EVOMC_favorites.folders[
                self.curfavfolder].name.value
            self.folder = config.plugins.EVOMC_favorites.folders[
                self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if pathExists(self.folder) == True:
                self["filelist"].changeDir(self.folder)
#	def showPreview(self):
#		system("stfbcontrol a 255")
#		if self["filelist"].canDescent():
#			return
#		else:
#			if self["filelist"].getServiceRef() is not None:
#				self.DimmerTimer.stop()
#				self.session.nav.stopService()
#				self.session.nav.playService(self["filelist"].getServiceRef())
#	def showThumb(self):
#		if config.plugins.EVOMC_vp.showPreview.getValue() == False:
#			return
#		if self["filelist"].canDescent():
#			return
#		else:
#			if self["filelist"].getServiceRef() is not None:
#				self.DimmerTimer.stop()
#				self.session.nav.stopService()
#				self.session.nav.playService(self["filelist"].getServiceRef())

    def showFileInfo(self):
        if self["filelist"].canDescent():
            return
        else:
            system("stfbcontrol a 255")
            #			self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
            self.DimmerTimer.start(
                config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
            self.session.open(
                EVOMC_VideoInfoView, self["filelist"].getCurrentDirectory() +
                self["filelist"].getFilename(), self["filelist"].getFilename(),
                self["filelist"].getServiceRef())

    def KeyOk(self):
        system("stfbcontrol a 255")
        system("echo 3 -> /dev/ttyAS1")
        self.filelist.refresh()
        if self.isVisible == False:
            self.visibility()
            return
#		self.ThumbTimer.stop()
        self.DimmerTimer.stop()
        if self.filelist.canDescent():
            self.filelist.descent()
        else:
            evfd.getInstance().vfd_write_string("PLAY")
            if self.filelist.getServiceRef().type == 4098:
                ServiceRef = self.filelist.getServiceRef()
                extension = ServiceRef.getPath(
                )[ServiceRef.getPath().rfind('.') + 1:]
                if self.playlistparsers.has_key(extension):
                    playlist = self.playlistparsers[extension]()
                    list = playlist.open(ServiceRef.getPath())
                    for x in list:
                        self.playlist.addFile(x.ref)
                self.playlist.updateList()
            else:
                self.playlist.addFile(self.filelist.getServiceRef())
                self.playlist.updateList()
            currref = self.playlist.getServiceRefList()[
                self.playlist.getCurrentIndex()]
            print "currref !!!!!!!!!!!!!!!!!!!!!!!!!", currref
            self.session.open(MoviePlayer, currref)
#			system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_top.value)[2:] + " > /proc/stb/vmpeg/0/dst_top")
#			system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_left.value)[2:] + " > /proc/stb/vmpeg/0/dst_left")
#			system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_width.value)[2:] + " > /proc/stb/vmpeg/0/dst_width")
#			system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_height.value)[2:] + " > /proc/stb/vmpeg/0/dst_height")

    def KeyMenu(self):
        #		self.ThumbTimer.stop()
        if self["filelist"].canDescent():
            if self.filelist.getCurrent()[0][1]:
                self.currentDirectory = self.filelist.getCurrent()[0][0]
                foldername = self.currentDirectory.split('/')
                foldername = foldername[-2]
                self.session.open(EVOMC_FolderOptions, self.currentDirectory,
                                  foldername)


#	def StartThumb(self):
#		self.session.openWithCallback(self.returnVal, ThumbView, self.filelist.getFileList(), self.filelist.getFilename(), self.filelist.getCurrentDirectory())
#	def returnVal(self, val=0):
#		if val > 0:
#			for x in self.filelist.getFileList():
#				if x[0][1] == True:
#					val += 1
#			self.filelist.moveToIndex(val)
#	def StartExif(self):
#		if not self.filelist.canDescent():
#			self.session.open(ExifView, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())

    def visibility(self, force=1):
        if self.isVisible == True:
            self.isVisible = False
            self.hide()
        else:
            self.isVisible = True
            self.show()

    def StopPlayback(self):
        #		self.ThumbTimer.stop()
        system("echo C -> /dev/ttyAS1")
        self.session.nav.stopService()
        self.session.nav.playService(self.oldService)
        #		self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True)
        self.DimmerTimer.start(
            config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True)
        system("stfbcontrol a 255")
        self.show()

    def JumpToFolder(self, jumpto=None):
        if jumpto is None:
            return
        else:
            self["filelist"].changeDir(jumpto)
            self["currentfolder"].setText(("%s") % (jumpto))

    def FavoriteFolders(self):
        self.session.openWithCallback(self.JumpToFolder, EVOMC_FavoriteFolders)

    def KeySettings(self):
        self.session.open(VideoPlayerSettings)
        config.plugins.EVOMC_vp.save()
        config.plugins.EVOMC_all.save()

    def __evDecodeError(self):
        currPlay = self.session.nav.getCurrentService()
        sVideoType = currPlay.info().getInfoString(
            iServiceInformation.sVideoType)
        print "[__evDecodeError] video-codec %s can't be decoded by hardware" % (
            sVideoType)
        self.session.open(MessageBox,
                          _("This Dreambox can't decode %s video streams!") %
                          sVideoType,
                          type=MessageBox.TYPE_INFO,
                          timeout=10)

    def __evPluginError(self):
        currPlay = self.session.nav.getCurrentService()
        message = currPlay.info().getInfoString(iServiceInformation.sUser + 12)
        print "[__evPluginError]", message
        self.session.open(MessageBox,
                          ("GStreamer Error: missing %s") % message,
                          type=MessageBox.TYPE_INFO,
                          timeout=20)

    def Exit(self):
        system("stfbcontrol a 255")
        if self.isVisible == False:
            self.visibility()
            return
        if self.filelist.getCurrentDirectory() is None:
            config.plugins.EVOMC_vp.lastDir.value = "/"
        else:
            config.plugins.EVOMC_vp.lastDir.value = self.filelist.getCurrentDirectory(
            )
        self.session.nav.stopService()
        self.DimmerTimer.stop()
        config.plugins.EVOMC_vp.save()
        config.plugins.EVOMC_all.save()
        self.close()

    def showAfterSeek(self):
        self.show()

    def checkSkipShowHideLock(self):
        self.updatedSeekState()

    def unPauseService(self):
        self.setSeekState(self.SEEK_STATE_PLAY)

    def updatedSeekState(self):
        if self.seekstate == self.SEEK_STATE_PAUSE:
            self.playlist.pauseFile()
        elif self.seekstate == self.SEEK_STATE_PLAY:
            self.playlist.playFile()
        elif self.isStateForward(self.seekstate):
            self.playlist.forwardFile()
        elif self.isStateBackward(self.seekstate):
            self.playlist.rewindFile()

    def addPlaylistParser(self, parser, extension):
        self.playlistparsers[extension] = parser