PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [spark7162] kommen nicht aus dem Radio Modus raus



nappi
07.07.2014, 16:45
Hallo,

ich komme nicht mehr aus dem radio modus raus, früher musste man die null drücken und man kam raus.
Habe die neuste version vom 28 drauf und da klappt es nicht mehr.


EDIT:

Die ganz einfache Lösung ist wenn man im normalen TV Bild 2 mal Blau drückt und schon ist man raus dem Radio modus

santa
07.07.2014, 17:34
Dann such einen Sender aus, so das Radio läuft, es darf keine Liste eingeblendet sein.
Dann tv/radio drücken

daTa deVil
07.07.2014, 23:08
@santa:

wollts dir per pn schicken, bekomme aber keine anhänge angeboten, daher bekommst es jetzt hier:o:

ChannelSelection.py nur in der "class ChannelSelection".

zeile 1464

def doTVButton(self):
if self.mode == MODE_TV:
self.setModeRadio()
elif self.mode == MODE_RADIO:
self.setModeTv()

zeile 1470

def setModeTv(self):
if self.revertMode is None:
self.revertMode = self.mode
self.history = self.history_tv
self.lastservice = config.tv.lastservice
self.lastroot = config.tv.lastroot
#config.servicelist.lastmode.value = 'tv' # deactivated, for set the right list only when a service is started, or when ChannelSelection was canceled with nothing
self.setTvMode()
self.setMode()
return

zeile 1487

def setModeRadio(self):
if self.revertMode is None:
self.revertMode = self.mode
if config.usage.e1like_radio_mode.value:
self.history = self.history_radio
self.lastservice = config.radio.lastservice
self.lastroot = config.radio.lastroot
#config.servicelist.lastmode.value = 'radio' # deactivated, for set the right list only when a service is started, or when ChannelSelection was canceled with nothing
self.setRadioMode()
self.setMode()
return

zeile 1511

def channelSelected(self, doClose = True):
if self.startServiceRef is None and not doClose:
self.startServiceRef = self.session.nav.getCurrentlyPlayingServiceOrGroup ()
ref = self.getCurrentSelection()
# this for set the "config.servicelist.lastmode" only when a service is selected, else the wrong list comes at next restart
mode = ref.toString()
if mode.startswith('1:0:2:'):
config.servicelist.lastmode.value = 'radio'
else:
config.servicelist.lastmode.value = 'tv'
############
if self.movemode:
self.toggleMoveMarked()
elif ref.flags & eServiceReference.flagDirectory == eServiceReference.flagDirectory:
self.enterPath(ref)
self.gotoCurrentServiceOrProvider(ref)
elif self.bouquet_mark_edit != OFF:
if not (self.bouquet_mark_edit == EDIT_ALTERNATIVES and ref.flags & eServiceReference.isGroup):
self.doMark()
elif not (ref.flags & eServiceReference.isMarker or ref.type == -1):
root = self.getRoot()
if not root or not root.flags & eServiceReference.isGroup:
self.zap(enable_pipzap=doClose, preview_zap=not doClose)
self.asciiOff()
if doClose:
if self.dopipzap:
self.zapBack()
self.startServiceRef = None
self.startRoot = None
self.correctChannelNumber()
self.close(ref)
return

zeile 1765

def cancel(self):
if self.revertMode is None:
self.restoreRoot()
if self.dopipzap:
self.setCurrentSelection(self.session.pip.getCurre ntService())
else:
lastservice = eServiceReference(self.lastservice.value)
if lastservice.valid() and self.getCurrentSelection() != lastservice:
self.setCurrentSelection(lastservice)
self.asciiOff()
self.zapBack()
self.correctChannelNumber()
# this for set the right "servicelist" after when switch to other list and nothing was/is selected
ref = self.session.nav.getCurrentlyPlayingServiceOrGroup ()
mode = ref.toString()
if mode.startswith('1:0:2:'):
config.servicelist.lastmode.value = 'radio'
self.setModeRadio()
else:
config.servicelist.lastmode.value = 'tv'
self.setModeTv()
##################################
self.close(None)
return

Vielleicht könnt ihr es ja gebrauchen, ist ne ein Button lösung für die fb. Geht dann auch schön mit exit raus.

Gruss

santa
08.07.2014, 07:07
Ich warte erstmal noch etwas ab, da pli gerade daran herumschraubt

daTa deVil
09.07.2014, 20:33
na dann warte lange. Denn da passiert nichts.

da kriegst es schon direkt funktionierend und probierst es nichtmal?

Solltest direkt sogar sehen, das man das auch noch verkürzen kann, wenn man will.

Anskar
09.07.2014, 20:49
@daTa deVil
für was ist das denn, kurze Info dazu wäre nicht schlecht.
MfG

santa
09.07.2014, 21:04
@anskar:
damit kannst du so leicht nix anfangen, das ist eine Änderung die das verhalten in der Senderliste verändert wenn man zwischen radio/tv wechselt.

@datadevil:
pli hat gerade 3 oder 4 mal was verändert daran, das image wurde vor dem letzten change gebaut, danach habe ich nochmal lokal zum testen
gebaut, aber noch nicht geschafft das zu testen und ggf dein change reinzubauen, komme da frühestens am wochenende dazu.
Trotzdem danke

santa
09.07.2014, 22:10
gerade mal kurz getestet, im image was noch nicht öffentlich probiert.

das problem ist immer das selbe, wenn man auf keinem Radiosender war, dann geht das alles nicht anständig,
wenn man aber drauf war, kann man recht gut mit tv/radio wechseln.

daTa deVil
09.07.2014, 22:18
Erklärung:

der erste befehl zum aufrufen/wechseln der Radio/Tv-liste ist in der InfobarActions(mapto="toogleTvRadio") in der keymap.xml definiert und wird in der InfoBar.py verarbeitet(sozusagen).

Das ist der befehl der genutzt wird, wenn keine Oberfläche angezeigt wird, oder halt nur die infobar/secondinfobar eingeblendet ist.


der zweite befehl zum aufrufen/wechseln der Radio/Tv-liste ist in der TvRadioActions(mapto="keyTV") in der keymap.xml definiert und wird in der ChannelSelection.py verarbeitet.

Der befehl wird genutzt, wenn die Channellist(Tv, oder Radio) schon geöffnet ist.


Der erste aufruf(über die InfobarActions) ist kein Problem, ist ja auch richtig rum im hdmu-image drin(bei pkt z.b. ist/war es falschrum).

Die Probleme kommen erst, wenn man dann z.b. die grad gewechselte Liste wieder schliesst, ohne einen Sender gestartet zu haben.
Für das "system" ist das, wo man sich zuletzt drin bewegt hat, die momentan verwendete liste.
Soll heissen: man schaut Tv und ruft die Radioliste auf und schliesst diese ohne einen Sender gewählt zu haben wieder und drückt danach Programm rauf, dann wird in der Radioliste der Sender gewechselt.


Das in der ersten codebox korrigiert den Aufruf über "mapto="toogleTvRadio"" der über die "InfoBar.py" in die "ChannelSelection.py" führt und dort erst richtig verarbeitet wird.
Dieses macht auch ein richtiges hin und her switchen zwischen den Listen erst möglich(halt mit der Taste die in der keymap.xml für die beiden genannten Aufrufe definiert sind(beim Triplex und Gm990 ist es die Tv2-Taste, bzw. die Tv/Radio auf der Fernbedienung).


In den codeboxen zwei und drei werden die "config.servicelist.lastmode.value"-werte zum speichern beim "nur-switchen" deaktiviert. Da man an den stellen ja noch nicht wirklich seine "Auswahl"(einen Sender ausgewählt) getroffen hat.


In der vierten codebox ist der wert-"config.servicelist.lastmode.value" hinzugefügt, da dort der grad ausgewählte Sender dann gestartet/aufgerufen wird.
Der wert wird per Reference-erkennung gesetzt.


In der fünften codebox ist das speichern des "config.servicelist.lastmode.value"-wertes ebenfalls hinzugefügt.
Das ist der teil, wenn man z.b. keinen Sender gestartet hat und irgendeine Liste einfach mit der Exit-taste wieder verlässt.
Auch dort wird der wert per Reference-erkennung gespeichert aus dem grad laufenden Senders.
________________

Das ist/wär die "ein Tasten-Lösung", da ja die Exit-Taste sowieso schon definiert ist(nur halt auch noch nicht richtig gearbeitet hat)

daTa deVil
09.07.2014, 23:16
@santa:

Dann tät ich an deiner stelle mal nachschauen was du vergessen hast.

Hab mir grad das aktuelle "HDMU_12467_E2_spark_215_git_2965_nodebug_mix_Flash" auf dem Gm990 raufgemacht.

Anschliessend die bearbeitete "ChannelSelection.py" vom Triplex-image reingetan und noch in der keymap.xml das folgende Feld auf das abgeändert:

<map context="TvRadioActions">
<!--key id="KEY_TV" mapto="keyTV" flags="m" /-->
<!--key id="KEY_0" mapto="keyTV" flags="m" /-->
<!--in der Senderlist in radio springen-->
<key id="KEY_RADIO" mapto="keyRadio" flags="m" />
<key id="KEY_TEXT" mapto="keyRadio" flags="m" />
<key id="KEY_TV2" mapto="keyTV" flags="m" />
</map>

Danach Oberfläche neugestartet.

Funktioniert astrein.

Wers testen möchte:

im Anhang ist die bearbeitete "ChannelSelection.pyo". Funktioniert auf dem Triplex und dem Gm990.

bitte auch dazu das grad geschriebene wegen der keymap.xml beachten, damit das "mapto="keyTV"" auch die gewünschte ein-Tasten-Lösung bringt.

Die "ChannelSelection.pyo" gehört nach /usr/lib/enigma2/python/Screens. Benennt Eure originale "sicherheitshalber" vorher um.
Danach Oberfläche neustarten.

daTa deVil
10.07.2014, 00:31
Und zu guter letzt:

zwei fehler die es ebenfalls zu beachten gibt, falls es mal auftreten sollte(oder irgendwer so ebenfalls machen sollte).
Betrifft neugeflashte images in verbindung mit den funktionsaufrufen, ohne das jemals irgendein sender an war.


das ganze nochmal neugeflasht um zu schauen was passiert, wenn keine "lastmode.value-werte" exestieren. Soll heissen es wurde kein Sender gestartet nach dem flashen und austauschen der ChannelSelection.py.

Fehler eins:
TV/Radio-Taste drücken(InfobarActions) ohne das werte/Sender zum zurückschalten exestieren->gibt ws.

Abhilfe schafft das in der "InfoBar.py"

def toogleTvRadio(self):
service = self.session.nav.getCurrentService()
if not service:
return None
info = service.info()
AudioPID = info.getInfo(iServiceInformation.sAudioPID)
VideoPID = info.getInfo(iServiceInformation.sVideoPID)
print 'sAudioPID', AudioPID
print 'sVideoPID', VideoPID
if VideoPID == -1:
print 'radio->tv'
self.showTv2()
else:
print 'tv->radio'
self.showRadio2()
das "if not service: ->return None".


Fehler zwei:
öffnet man die Favoriten(Fav-Taste) ebenfalls ohne das jemals irgendein Sender an war und stöbert man da rum, ohne ebenfalls ein sender auszuwählen und versucht man dann mit Exit-Taste rauszugehen-->gibt ws.

Abhilfe schafft das zusätzliche in der "ChannelSelection.py":

def cancel(self):
if self.revertMode is None:
self.restoreRoot()
if self.dopipzap:
self.setCurrentSelection(self.session.pip.getCurre ntService())
else:
lastservice = eServiceReference(self.lastservice.value)
if lastservice.valid() and self.getCurrentSelection() != lastservice:
self.setCurrentSelection(lastservice)
self.asciiOff()
self.zapBack()
self.correctChannelNumber()
# this for set the right "servicelist" after when switch to other list and nothing was/is selected
ref = self.session.nav.getCurrentlyPlayingServiceOrGroup ()
if not ref:
self.close(None)
return
else:
mode = ref.toString()
if mode.startswith('1:0:2:'):
config.servicelist.lastmode.value = 'radio'
self.setModeRadio()
else:
config.servicelist.lastmode.value = 'tv'
self.setModeTv()
##################################
self.close(None)
return

Ihr seht ja was dazu gekommen ist in dieser "def".

das if not ref: ->self.Close(None)->return

nappi
13.07.2014, 13:19
Die ganz einfache Lösung ist wenn man im normalen TV Bild 2 mal Blau drückt und schon ist man raus dem Radio modus

santa
13.07.2014, 13:27
Hab ich ja schon geschrieben, man muss nur einen Sender auswählen

daTa deVil
13.07.2014, 15:33
Der witz an eurer "schreiberei" ist:

Das was im image für die sparks drin ist dafür, ist für boxen gemacht die zwei Tasten dafür auf der FB haben, nämlich ein Radio und ein Tv-Button zum hin und herswitchen. Siehe z.b. Die Gi Xpeed's mit ihrer FB und diverse andere.

Die Sparks haben aber nur eine dafür und das ist nunmal die TV/Radio-Taste. Also muss diese sinngemäss auch beide Funktionen bedienen.

Und genauso muss man ganz normal mit der Exit-Taste da raus kommen. Auch wenn man keinen Sender ausgewählt hat. Und wenn man in einer anderen Liste war und keinen Sender ausgwählt hat, muss man trotzdem in der richtigen Liste bleiben.

Die alles erfüllt das aktuelle hdmu nicht, wie auch das aktuelle arp und pkt-image. Weil es nunmal nicht richtig angepasst ist.

Da Euch das aber nicht zu stören scheint--> heult auch nicht mehr rum, wenn sonstwas in den images nicht so gemappt ist wie es auf den Fb-Tasten steht:D.

santa
13.07.2014, 16:08
Bla bla bla.

Viel Spaß damit.


Jetzt mal im Ernst, was interessiert mich ne spark, ich will das es auf allen boxen geht und nicht auf einer.
Das ist nun mal unser Wunsch so viele boxen wie möglich gut zu unterstützen, da wir leider im Moment sehr viel privaten Stress haben, kann es eben mal sein das länger was nicht so ist wie es sein sollte, es ist ja nicht so das der Fehler das Leben der User völlig ruiniert weil man eine taste mehr drücken muss.

Also ich bitte nochmals um Entschuldigung das mir mein Privatleben mir manchmal wichtiger ist!!!!