from Components.config import config, configElement, ConfigSubsection, configSequence
from ChannelSelection import ChannelSelection
+from Components.Pixmap import Pixmap, PixmapConditional
+from Components.BlinkingPixmap import BlinkingPixmapConditional
from Components.ServiceName import ServiceName
from Components.EventInfo import EventInfo
from Screens.Standby import Standby
from Screens.EventView import EventView
+from Tools import Notifications
+
#from enigma import eTimer, eDVBVolumecontrol, quitMainloop
from enigma import *
config.audio.volume.save()
def volUp(self):
+ if (eDVBVolumecontrol.getInstance().isMuted()):
+ self.volMute()
eDVBVolumecontrol.getInstance().volumeUp()
self.volumeDialog.instance.show()
self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
self.hideVolTimer.start(3000)
def volDown(self):
+ if (eDVBVolumecontrol.getInstance().isMuted()):
+ self.volMute()
eDVBVolumecontrol.getInstance().volumeDown()
self.volumeDialog.instance.show()
self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
self.state = self.STATE_SHOWN
+ self.onExecBegin.append(self.show)
self.onClose.append(self.delHideTimer)
self.hideTimer = eTimer()
self.hideTimer.timeout.get().append(self.doTimerHide)
- self.hideTimer.start(1000)
+ self.hideTimer.start(5000)
def delHideTimer(self):
del self.hideTimer
def hide(self):
self.instance.hide()
+
+ def show(self):
+ self.state = self.STATE_SHOWN
+ self.hideTimer.stop()
+ self.hideTimer.start(5000)
def doTimerHide(self):
+ self.hideTimer.stop()
if self.state == self.STATE_SHOWN:
self.instance.hide()
self.state = self.STATE_HIDDEN
self.instance.hide()
#pls check animation support, sorry
# self.startHide()
+ self.hideTimer.stop()
self.state = self.STATE_HIDDEN
- else:
+ elif self.state == self.STATE_HIDDEN:
self.instance.show()
-# self.startShow()
- self.state = self.STATE_SHOWN
- #TODO: make it customizable
- self.hideTimer.start(5000)
-
+ self.show()
+
def startShow(self):
self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
self.state = self.STATE_SHOWN
def numberEntered(self, retval):
# print self.servicelist
if retval > 0:
- self.servicelist.zapToNumber(retval)
+ self.zapToNumber(retval)
+
+ def searchNumberHelper(self, serviceHandler, num, bouquet):
+ servicelist = serviceHandler.list(bouquet)
+ if not servicelist is None:
+ while num:
+ serviceIterator = servicelist.getNext()
+ if not serviceIterator.valid(): #check end of list
+ break
+ if serviceIterator.flags: #assume normal dvb service have no flags set
+ continue
+ num -= 1;
+ if not num: #found service with searched number ?
+ return serviceIterator, 0
+ return None, num
+
+ def zapToNumber(self, number):
+ bouquet = self.servicelist.bouquet_root
+ service = None
+ serviceHandler = eServiceCenter.getInstance()
+ if bouquet.toString().find('FROM BOUQUET "bouquets.') == -1: #FIXME HACK
+ service, number = self.searchNumberHelper(serviceHandler, number, bouquet)
+ else:
+ bouquetlist = serviceHandler.list(bouquet)
+ if not bouquetlist is None:
+ while number:
+ bouquet = bouquetlist.getNext()
+ if not bouquet.valid(): #check end of list
+ break
+ if ((bouquet.flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory):
+ continue
+ service, number = self.searchNumberHelper(serviceHandler, number, bouquet)
+ if not service is None:
+ self.session.nav.playService(service) #play service
+ if self.servicelist.getRoot() != bouquet: #already in correct bouquet?
+ self.servicelist.setRoot(bouquet)
+ self.servicelist.setCurrentSelection(service) #select the service in servicelist
class InfoBarChannelSelection:
""" ChannelSelection - handles the channelSelection dialog and the initial
def zapUp(self):
self.servicelist.moveUp()
self.servicelist.zap()
+ self.instance.show()
+ self.show()
def zapDown(self):
self.servicelist.moveDown()
self.servicelist.zap()
-
+ self.instance.show()
+ self.show()
+
class InfoBarMenu:
""" Handles a menu action, to open the (main) menu """
def __init__(self):
"""Instant Record - handles the instantRecord action in order to
start/stop instant records"""
def __init__(self):
- self["InstnantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord",
+ self["InstantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord",
{
"instantRecord": (self.instantRecord, "Instant Record..."),
})
self.recording = None
-
+
+ self["BlinkingPoint"] = BlinkingPixmapConditional()
+ self.onShown.append(self["BlinkingPoint"].hidePixmap)
+ self["BlinkingPoint"].setConnect(self.session.nav.RecordTimer.isRecording)
+
def stopCurrentRecording(self):
self.session.nav.RecordTimer.removeEntry(self.recording)
self.recording = None
-
+
def startInstantRecording(self):
serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
# fix me, description.
self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
self.recording.dontSave = True
+
+ #self["BlinkingPoint"].setConnect(lambda: self.recording.isRunning())
+
+ def isInstantRecordRunning(self):
+ if self.recording != None:
+ if self.recording.isRunning():
+ return True
+ return False
def recordQuestionCallback(self, answer):
if answer == False:
return
- if self.recording != None:
+ if self.isInstantRecordRunning():
self.stopCurrentRecording()
else:
self.startInstantRecording()
self.session.open(MessageBox, "No HDD found!")
return
- if self.recording != None:
- self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
+ if self.isInstantRecordRunning():
+ self.session.openWithCallback(self.recordQuestionCallback, MessageBox, _("Do you want to stop the current\n(instant) recording?"))
else:
- self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
+ self.session.openWithCallback(self.recordQuestionCallback, MessageBox, _("Start recording?"))
from Screens.AudioSelection import AudioSelection
n = audio.getNumberOfTracks()
if n > 0:
self.session.open(AudioSelection, audio)
+
+class InfoBarAdditionalInfo:
+ def __init__(self):
+ self["DolbyActive"] = PixmapConditional()
+ # TODO: get the info from c++ somehow
+ self["DolbyActive"].setConnect(lambda: False)
+
+ self["CryptActive"] = PixmapConditional()
+ # TODO: get the info from c++ somehow
+ self["CryptActive"].setConnect(lambda: False)
+
+ self["FormatActive"] = PixmapConditional()
+ # TODO: get the info from c++ somehow
+ self["FormatActive"].setConnect(lambda: False)
+
+ self["ButtonRed"] = Pixmap()
+ self["ButtonRedText"] = Label(_("Record"))
+ self["ButtonGreen"] = Pixmap()
+ self["ButtonYellow"] = Pixmap()
+ self["ButtonBlue"] = Pixmap()
+
+class InfoBarNotifications:
+ def __init__(self):
+ self.onExecBegin.append(self.checkNotifications)
+ Notifications.notificationAdded.append(self.checkNotificationsIfExecing)
+
+ def checkNotificationsIfExecing(self):
+ if self.execing:
+ self.checkNotifications()
+
+ def checkNotifications(self):
+ if len(Notifications.notifications):
+ n = Notifications.notifications[0]
+ Notifications.notifications = Notifications.notifications[1:]
+ print "open",n
+ cb = n[0]
+ if cb is not None:
+ self.session.openWithCallback(cb, *n[1:])
+ else:
+ self.session.open(*n[1:])