Closed dream-alpha closed 6 years ago
Noch besser wäre es aus meiner Sicht wenn die reguläre E2 abfrage kommt, was mit zukünftigen Ereignissen geschehen soll.
oder so ;-)
Muss erstmal den Code verstehn, kommt da überhaupt noch die Meldung "Not stopping any repeating timers. Modify them with the timer editor."?
Früher kam die Meldung sicher. Aber schon lange nicht mehr probiert, weil ich gleich ins Timer menu ging. ;)
Hm ok muss mir mal anschauen was der Timereditor da genau macht und ob man das so einfach übernehmen kann.
@Swiss-MAD Das ist die Abfrage die du dann immer siehst oder? "Repeating event currently recording... What do you want to do?" (("Stop current event but not coming events"), "stoponlycurrent"), (("Stop current event and disable coming events"), "stopall"), (_("Don't stop current event but disable coming events"), "stoponlycoming")
Also über den E2 TimerEditor.
Ja genau. Der Wunsch wäre also wenn man in EMC einen noch laufenden wiederholenden Timer löschen will, erst diese Abfrage vom E2 Timer Editor erscheint. Danach kann man dann die Aufnahme bei Bedarf löschen.
eigentlich waere der wunsch so: wenn man in der movielist mit der roten taste den film loeschen will, kommt diese abfrage und nach beantwortung wird die timeraktion durchgefuehrt und der film geloescht. alles in einem rutsch. oder: falls es mit der abfrage zu umständlich/schwierig ist: einfach den timer disablen und wieder enablen... damit bleibt der timer fuer zukuenftige events aktiv und den film loeschen.
Nein bitte nicht in einem Rutsch! Genau so wie bei einem einzelnem Timer, einfach mit der Abfrage dazwischen. Weil sonst wird einem die Möglichkeit genommen, einen laufenden Timer in EMC einfach zu beenden, und nach Wunsch erst danach zu löschen. Das Nutze ich noch ab und zu bei einzel Timern, wenn ich sehe das die Nachlaufzeit nicht nötig ist. Das ist je nach dem ob man die Löschabfrage drin hat oder nicht einen oder 2 Tasten mehr. Das müsste drin liegen. ;) Notfalls im Setup einstellbar, ob danach sofort auch gelöscht wird, oder nicht. Sollte dann für einzel und wiederholenden Timern gleichzeitig gelten.
Und wenn beim Löschen im EMC anstatt der bisherigen Frage "Laufende Aufnahme beenden? ....ja/nein" eine ChoiceBox kommt? Es handelt sich um eine laufende Aufnahme. Was wollen sie machen ?
Wenn es ein wiederkehrender Timer ist, könnte danach ja dann die Frage von E2 kommen: Wiederholender Timer ist zur Zeit aktiv... Was wollen Sie machen?
Oder es wird nach der 1. Frage code-intern automatisch die Variante 1 für den wiederkehrenden Timer gesetzt (laufendes Ereignis abbrechen, aber kommende ausführen), also ganz ohne 2. Frage. Das wäre meiner Meinung nach dann ja die sinnvollste Variante aus dem EMC heraus.
ja, genau so wie svenh0 es beschreibt, meine ich es auch.
das dürfte der passende Code-Teil vom TimerEditor sein. Variante 1 = stoponlycurrent bei "if t.repeated:" https://github.com/libo/Enigma2/blob/master/lib/python/Screens/TimerEdit.py#L91
Nur eben den Code aus dem CallBack direkt anstelle der ChoiceBox für den wiederkehrenden Timer verwenden.
Das müsste dann hier rein - anstelle von "return False" https://github.com/betonme/e2openplugin-EnhancedMovieCenter/blob/master/src/RecordingsControl.py#L189
die geänderte Funktion "stopRecording" in der RecordingsControl.py funktioniert bei mir schon mal auch für das Beenden von wiederkehrenden Timern. Fehlt nur noch vorneweg die ChoiceBox, ob man nur den Timer beenden möchte oder auch gleich die Aufnahme löschen möchte ;)
def stopRecording(self, filename):
try:
if filename[0] == "/": filename = os.path.basename(filename)
if not isDreamOS:
if filename.lower().endswith(".ts"): filename = filename[:-3]
if filename in self.recDict:
for timer in NavigationInstance.instance.RecordTimer.timer_list:
if timer.isRunning() and not timer.justplay and timer.Filename.find(filename)>=0:
if timer.repeated:
#return False
timer.enable()
timer_afterEvent = timer.afterEvent
timer.afterEvent = AFTEREVENT.NONE
timer.processRepeated(findRunningEvent = False)
NavigationInstance.instance.RecordTimer.doActivate(timer)
timer.afterEvent = timer_afterEvent
NavigationInstance.instance.RecordTimer.timeChanged(timer)
else:
timer.afterEvent = AFTEREVENT.NONE
NavigationInstance.instance.RecordTimer.removeEntry(timer)
emcDebugOut("[emcRC] REC STOP for: " + filename)
return True
else:
emcDebugOut("[emcRC] OOPS stop REC for nonexistent: " + filename)
except Exception, e:
emcDebugOut("[emcRC] stopRecording exception:\n" + str(e))
return False
das sieht doch schon mal nicht schlecht aus.... und wuerde meinen usecase bereits abdecken, weil in 90% der cases will man ja den wiederholenden timer nicht loeschen sondern nur das aktuelle event beenden aber den timer fuer zukuenftige events weiterlaufen lassen. und wenn man dann doch mal den kompletten wiederholenden timer loeschen will, dann kann man ins timer menue gehen.
Sorry aber das macht für mich keinen Sinn, der Button heißt löschen also sollte er auch löschen und nicht nur den Timer stoppen, Der Button heißt nicht Timer stoppen und Aufnahme beibehalten, dafür kann man auch wie schon zuvor das Timermenü direkt aufrufen.
Da muss ich aber widersprechen. Die Frage im EMC lautet: „soll die laufende Aufnahme beendet werden?“
Da steht nichts von Timer löschen.
@dhwz: ja genau... das war vielleicht nicht klar... wenn man auf die rote taste "loeschen" drueckt, dann wird der film auf jeden fall geloescht. das timer-handling ist zusaetzlich. wenn man den film nicht loeschen will, dann geht man halt ins timer-menue und haelt den timer an.
@svenh0 Ich sprech nicht vom Timer, sondern von der Aufnahme. Weil Swiss-MAD geschrieben hatte die Aufnahme solle beibehalten werden, das würde den Button ad absurdum führen.
genau, das file soll auf jeden fall geloescht werden. und mit der timerabfrage soll man die wahl bekomme ob AUCH der dazugehoerende aktuelle wiederholende timer "angehalten" wird oder ob der wiederholende timer komplett geloescht wird.
Wir haben hier ja 2 Baustellen.
Timerhandling Mit dem obigen Code können jetzt auch wiederkehrende Timer berücksichtigt werden.
Löschen von Aufnahmen (auch wenn die Aufnahme gerade läuft) Genau das geht im Moment nicht. Es wird nur die Aufnahme beendet. Löschen muss ich die Aufnahme dann mit nochmaliger roter Taste. Deshalb war ja der Kompromiss mit der Choicebox als Multilösung.
Dennoch macht es Sinn zuerst zu fragen ob der noch laufenden Timer wirklich beendet werden soll. Ob dann gleich auch die Aufnahme dazu gelöscht werden soll sollte danach aber nochmal angefragt werden.
Also ich würde bevorzugen den Timer gar nicht anzupacken, dass der Timer geöscht wird macht ja bei Single-Events auch Sinn. Bei wiederholenden Timer, will man ja die laufende Aufnahme dann löschen, folglich sollte der Timer selbst auch nicht verändert/gelöscht werden. EMC ist kein Timer-Editor!
@Swiss-MAD Das passiert doch jetzt auch nicht bei einem Single-Event?
Ich finde die jetzige Lösung inkonsequent. Warum sollte man nicht auch wiederkehrende Timer beenden können.
Es kommt ja vorher auch die Frage, ob man die Aufnahme beenden will.
Da finde ich den Hinweis auf den TimerEditor eher primitiv, zumal es EMC mit obigen Code selber machen könnte.
Ich merke aber, dass das offensichtlich trotz Wunsch in #221 nicht gewollt ist.
Also es sollte IMHO identisch behandelt werden nur dass der Timer eben nicht gelöscht sondern nur gestoppt wird.
Doch jetzt wird erst gefragt ob der Timer beendet werden soll, (weil sonst die Aufnahme nach dem löschen wieder fortgesetzt wird....war zumindest früher im OE2.0 so. Auf OE2.5 habe ich das nicht ausprobiert) danach konnte man erst löschen.
EMC soll auch kein Timer Editor werden, aber die Möglichkeit den noch laufenden Timer in EMC schnell zu stoppen ohne auch gleich die Aufnahme zu löschen finde ich schon sehr praktisch.
@Swiss-MAD Du missverstehst mich, exakt das macht doch die Änderung von Sven. Es ging um die Timer! Die Abfrage die du meinst kommt doch sowieso beim drücken der roten Taste, wenn der Timer nicht mehr läuft. Da brauchen wir doch keine zusätzliche Abfrage mehr.
Ja die Lösung von Sven gefällt mir. Danach noch die Frage ob der Film auch gleich gelöscht werden soll, und dann finde ich das eine Runde Sache. ;)
Ja wiederholende Timer sollen nicht einfach so gelöscht werden. Entweder stoppen, oder choice box vom Timer Editor. Oder meinst du noch was anderes? ....muss mal Kaffee machen. ;)
Ja wenn der Timer nicht mehr läuft, muss natürlich auch nichts am Timer gedreht werden.
Ja, genauso behandeln wie jetzt nur den wiederkehrenden eben nur stoppen. Es geht ja eigentlich nur noch um das Löschen der Aufnahme. Dazwischen kommt ja nur das Timerhandling.
Er möchte ja das Beenden eines Timers und Löschen der Aufnahme in einem Rutsch mit einer ChoiceBox. Weil jetzt muss man mit rot erst die Aufnahme beenden und dann, wenn man möchte, nochmal mit rot die Aufnahme löschen. Mit der ChoiceBox bei der Timer-Beenden-Frage könnte man das Löschen direkt ausführen sofern gewünscht. Die Option nur den Timer zu beenden würde ich dabei lassen, weil das jetzt bestimmt auch einige in EMC so nutzen.
Ja, ungefähr so hätte ich mir das vorgestellt. :D
Okay, naja das mit der Abfrage ist ja auch kein Problem, allerdings brauchen wir da keine ChoiceBox sondern einen normale MessageBox mit Ja/Nein reicht da dann völlig und bei Ja rufen wir einfach noch das self.deleteMovieQ auf nachdem self.stopRecordQ aufgerufen wurde, dann gilt das nämlich auch für alles Single-Events und Multi-Events.
Also Möchten sie laufenden Timer stoppen ja/nein -> ja -> Möchten sie die Aufnahme löschen ja/nein -> ja -> löschen
Ja, das hört sich gut an. ;)
@dhwz: genau das war eigentlich mein urspruenglicher request... habe mich vielleicht ein bisschen umstaendlich ausgedrueckt :-)
Also nur bei einer laufenden Aufnahme folgende ChoiceBox: Es handelt sich um eine laufende Aufnahme. Was wollen sie machen ?
Punkt 1 funktioniert ja schon - bisherige Variante in EMC (mit obigen Code jetzt auch für wiederkehrende Timer) Punkt 2 müsste irgendwie noch integriert werden. Also nach Löscheb/Beenden der Timer auch das File löschen, sofern eben Punkt 2 gewählt wurde.
Ok, dann mach ich das später so oder Sven wenn er lustig ist, aber da muss auch bissl aufgeräumt werden dann ;) @svenh0 ich würde vermeiden unnötig die alten Abfragen kaputt zu machen weil sonst die ganzen Übersetzungen futsch sind, daher lieber eine 2. Abfrage ja/nein die macht nichts kaputt.
Ok, 2 nacheinanderfolgende Fragen ja/nein ginge auch. Die ChoiceBox wäre dann luxus ;)
in der zweiten checkbox bitte den default sinngemaess auf "der wiederholende timer soll nicht komplett geloescht werden, sondern nur angehalten werden" setzen, weil das imho der hauptanwendungsfall ist.
Wie gesagt am Timer wird ja nichts gemacht die Abfrage sollte sich auf die AUFNAHME beziehen. Die Abfrage heißt ja auch jetzt schon ob man die laufenden Aufnahme stoppen möchte, von Timer löschen steht da ja nirgendwo etwas.
Wie gesagt, mit den 2 Fragen könnte ich auch leben. Auf jeden Fall ein Fortschritt zum jetzigen Stand ;)
Die #221 könnte man ja mit obigen Code schon erledigen. Zum direkten Löschen der Aufnahme nach Beenden des Timers könnte man ja einen neuen Punkt aufmachen.
Oder soll das hier alles komplett fertig gemacht werden?
Ich würd das hier fertig machen, ist ja nicht mehr viel, ggf. kannst ja auch den Titel oben ergänzen.
Ok ;)
Ich glaube mit dem Aufruf von self.deleteMovieQ direkt nach dem self.stopRecordQ würde dann auch eine Mischauswahl (laufende und fertige Aufnahmen) bei Mehrfachauswahl berücksichtigen. Jetzt werden glaub ich nur die Timer beendet. Die mitgewählten fertigen Aufnahmen werden bisher ignoriert, wenn man auch laufende Aunahmen ausgewählt hat.
Also gleich mehrere Fliegen mit einer Klappe ;)
Ich teste das Nachmittag mal. Ist ja nur eine zusätzliche Codezeile ;) Die Variante mit der ChoiceBox wäre da nicht so einfach.
2 Abfragen hintereinander passt doch. Da würde ich keine Zeit in eine ChoiceBox investieren. Und wie dhwz schrieb macht man damit bei der Übersetzung auch nichts kaputt.
@svenh: wenn du magst, kannst du mir das auch zum testen geben.
Ok. Kann ich machen. Schick mir doch im Dreambox-Board mal ne PN (Konversation).
Oder soll ich die beiden geänderten Files hier hochladen? Ich glaub, hier kann man auch Files mit reinhängen, oder?
ja, hier anhaengen waere das einfachste... denke ich.
Edit: der alte Text hier hat sich inzwischen erledigt, daher entfernt
Die funktionierende RecordingsControl.py zum Beenden von wiederkehrenden Timern hänge ich hier schon mal an.
Hab es hinbekommen ;) Hier nun noch die geänderte MovieSelection.py: MovieSelection.zip
Jetzt kommt erst die Frage nach dem Timer beenden und wenn alle Timer erfolgreich gestoppt werden konnten, dann kommt die Frage, ob die Aufnahmen gelöscht werden sollen?
Wenn jetzt allerdings Timer nicht beendet werden können (warum auch immer), kommt jetzt immer noch der Hinweis zu den wiederkehrenden Timern und dem TimerEditor ?!? Sollte man da vielleicht eine Meldung ausgeben, dass das Beenden der Timer nicht vollständig ausgeführt werden konnte ? https://github.com/betonme/e2openplugin-EnhancedMovieCenter/blob/master/src/MovieSelection.py#L2264
Hm, ich hatte mir das anders gedacht ich muss mal mal hier ausprobieren.
Die Funktionsweise ist jetzt aber genauso wie zuvor ausgemacht ;)
Beim Löschen von laufenden Timeraufnahmen werden momentan reguläre Timer mitgelöscht. Es wäre toll, wenn beim Löschen von wiederholenden Timer-Aufnahmen der dazugehörige Timer deaktiviert und wieder aktiviert würde. Momentan muss man das manuell machen, was die Sache umständlich macht. Bitte um wohlwollende Behandlung ;-) Danke.