henryk hat geschrieben:Deshalb: Ist ein einfacher Weg vorgesehen die Markierungen asynchron zu verteilen?
Ja, sowas ist möglich. Es gibt zwar keine direkte Möglichkeit, eine Aktualisierung auszulösen, aber du kannst die Sendung markieren und sofort wieder entmarkieren. Dann wird die Sendung neu gemalt, dabei werden von deinem Plugin die Icons abgefragt.
Hat das schonmal jemand erfolgreich getan? Ich bin jetzt nämlich soweit dass mein Plugin im wesentlichen das tut, die richtigen Icons werden aber nicht angezeigt.
OK. Sorry. Das war mein Fehler. Momentan funktioniert das noch nicht, weil die Icons gecached werden. Ich habe jetzt jedoch eingebaut, dass sie neu geholt werden, wenn sich das Program geändert hat (also z.B. markiert wurde). In der nächsten Version sollte das mit dem Markieren/Entmarkieren also funktionieren.
Nein, das ist hier nicht das Problem. Es geht hier um die Plugin-Icons (die, die unter der Zeit stehen) und nicht um das Markierungs-Icon (das Icon rechts unten). Das Markieren/Entmarkieren wird hier nur als Trick benutzt um ein Neumalen der Sendung auszulösen.
Zuletzt geändert von Til am 06 Sep 2004, 13:25, insgesamt 1-mal geändert.
Nein, das ist hier nicht das Problem. Es geht hier um die Plugin-Icons (die, die unter der Zeit stehen) und nicht um das Markierungs-Icon (das Icon rechts unten). Das Markieren/Entmarkieren wird hier nur als Trick benutzt um ein Neumalen der Sendung auszulösen.
Jupp, aber wenn das in der Javadoc stimmt und er null zurückliefert ist der Trick ausgehebelt
Til hat geschrieben:OK. Sorry. Das war mein Fehler. Momentan funktioniert das noch nicht, weil die Icons gecached werden. Ich habe jetzt jedoch eingebaut, dass sie neu geholt werden, wenn sich das Program geändert hat (also z.B. markiert wurde). In der nächsten Version sollte das mit dem Markieren/Entmarkieren also funktionieren.
Hmm, ok, danke. Ich frage dann jetzt also TVBrowser.VERSION ab und wenn das kleinergleich 1.0 RC5 ist werfe ich meinen Hack an: Ein Timer wird gestartet der alle 5s nachschaut ob in der letzten Zeit Klassifikationen eingegangen sind. Und wenn dem so ist wird das erwähnte forceRepaintAll() angeworfen. Ansonsten halt mark/unmark.
Til hat geschrieben:In der nächsten Version sollte das mit dem Markieren/Entmarkieren also funktionieren.
Kann man das schon irgendwo sehen zum Ausprobieren? Also ich hab das CVS für das Projekt von Sourceforge ausgecheckt, aber damit funktioniert es zum Beispiel nicht.
Sorry. Ich hatte was vergessen, so dass die Icons nicht neu geholt wurden, wenn die Sendung nicht in der Programmtabelle war. Wenn sie sonst wo angezeigt wurde, hat es funktioniert...
Mit der aktuellen CVS-Version sollte es gehen. Wenn nicht, dann melde dich nochmal...
Til hat geschrieben:Mit der aktuellen CVS-Version sollte es gehen. Wenn nicht, dann melde dich nochmal...
meld. Ich hab jetzt zwischen markieren und entmarkieren eine Sekunde Pause eingefügt und kann in der Programmtabelle wunderbar sehen wie alle Sendungen der Reihe nach Aufleuchten. Das Icon ändert sich trotzdem nicht.
Ich bin mir zwar nicht sicher ob ich das alles richtig verstanden habe, aber soweit ich sehe sollte die Magie in ProgramPanel.stateChanged() passieren, richtig? Das ruft dann getPluginIcons() und holt sich die Icons neu. getPluginIcons() wird aber nur einmal am Anfang beim Aufbauen der Programmtabelle aufgerufen und später nicht wieder (wie ein System.out.println() zeigt; nützliches Debugging-Tool, das ;-). Weiter nachgesehen wird ProgramPanel.stateChanged() überhaupt gar nie aufgerufen, was vermutlich daran liegt dass ProgramPanel.addNotify() nie aufgerufen wird und das Program daher auch nie das ProgramPanel als ChangeListener kennenlernt.
Bevor ich jetzt lang rumprobier frag ich lieber
Ist der Umweg über mark()/unmark() noch notwendig wenn ein Icon für die bereits dargestellte Programmtabelle angezeigt werden soll?
Im Grunde weis die Tabelle von dem neuen Icon ja nichts.