Seite 1 von 2

[Patch] MiniTV for Channellist

Verfasst: Sonntag 10. März 2013, 21:19
von GetAway
Port aus dem Coolstream-Git. Bitte testen :D

Gute Ansicht mit Schriftgrößenfaktor Horizontal 72%
Es werden folgende Patche benötigt.

0005-framebuffer-add-2-new-functions-getScreenWidth-and-getScreenHeight.patch
0006-channellist-add-new-method-to-calculate-selected-item.patch
0007-Neutrino-add-MiniTV-to-Channellist.patch
0008-Neutrino-improved-channellist-speedup-scrolling.patch

this patch includes resize of channellist
channellist with additional eventlist/MiniTV
additionally selectable next event for infobox
additionally selectable Tuning-Parameters for infobox
reorder painting of modules
redesign of DetailsItemline
yellow Button for Bouquets
blue-button to switch between description and eventlist

Re: [Patch] MiniTV for Channellist

Verfasst: Dienstag 12. März 2013, 16:04
von Gaucho316
Wow, das ist ja ein ganz schöner Brocken. Ich werde das auf alle Fälle die Tage ausprobieren, habe aber im Moment leider wenig Zeit.

Kann man die Änderungen nicht vielleicht noch ein klein wenig aufdröseln?
Die Einführung der Methode CChannelList::updateSelection() wäre beispielsweise so ein Kanidat,
der nichts mit MiniTV zu tun hat. So eine Methode könnte man übrigens auch in den Klassen
  • CBookmarkManager (bookmarkmanager.h/.cpp),
  • CBouquetList (bouquetlist.h/.cpp),
  • EventList (eventlist.h/.cpp),
  • CPluginList (pluginlist.h/.cpp),
  • CTimerList (timerlist.h/.cpp),
  • CBEBouquetWidget (bouqueteditor_bouquets.h/.cpp),
  • CBEChannelWidget (bouqueteditor_channels.h/.cpp) und
  • CListBox (listbox.h/.cpp)
nutzen, um den Code zu vereinfachen.

Re: [Patch] MiniTV for Channellist

Verfasst: Dienstag 12. März 2013, 23:20
von GetAway
Patche aktualisiert. Die neue Methode ::updateSelection() ist in einem separaten Patch.

Re: [Patch] MiniTV for Channellist

Verfasst: Mittwoch 13. März 2013, 18:41
von Gaucho316
@GetAway

Spricht etwas dagegen, dass ich in deinem Code etwas rumeditiere? Ich glaube nämlich, dass wir uns die neuen Methoden in der Klasse CFrameBuffer sparen und auf schon vorhandene Funktionen zurückgreifen können. Außerdem hätte ich gerne, dass das Fenster ohne MiniTV nicht plötzlich größer ist als vorher. Wann ich dazu komme, weiß ich aber noch nicht. Vielleicht am Wochenende.

Re: [Patch] MiniTV for Channellist

Verfasst: Mittwoch 13. März 2013, 19:38
von GetAway
Gaucho316 hat geschrieben: Spricht etwas dagegen, dass ich in deinem Code etwas rumeditiere? Ich glaube nämlich, dass wir uns die neuen Methoden in der Klasse CFrameBuffer sparen und auf schon vorhandene Funktionen zurückgreifen können. Außerdem hätte ich gerne, dass das Fenster ohne MiniTV nicht plötzlich größer ist als vorher. Wann ich dazu komme, weiß ich aber noch nicht. Vielleicht am Wochenende.
Die Methoden und Ihre Namen find ich gut. Meine Intension ist es, möglichst nahe am Coolstream-Git zu bleiben
bzw. zu kommen, sowohl vom Quellcode als auch von der Optik. Vieles wird nicht möglich sein, in diesen Fällen
kann man dann zu Alternativen greifen.

Zur Fenstergröße: Bei mir ist es genau umgekehrt. Ich hätte die Kanalliste gerne über die komplette Bildschirmfläche,
liegt daran, das ich auch ne Cooli habe und mich einfach schon daran gewöhnt habe. So unterschiedlich sind halt die
Geschmäcker. Es gäbe ja auch noch die Möglichkeit, das schaltbar zu machen. Im Cooli-Git gibt es übrigens einen
Schalter für große oder kleine Fenster, diesen könnte man für die Kanalliste verfügbar machen.
Wenn die Mehrheit andere Meinung ist, werde ich es mir natürlich lokal patchen ;)
Ansonsten kannst du meinen Code, wo immer du willst, verbessern. :)
Just my 2 cents.

Re: [Patch] MiniTV for Channellist

Verfasst: Mittwoch 13. März 2013, 20:02
von Gaucho316
Tja, jeder hat so seine Vorlieben. Ich sehe das mit der Kanallistenbreite halt eher so wie seife in Neutrino-MP.

Re: [Patch] MiniTV for Channellist

Verfasst: Donnerstag 14. März 2013, 06:17
von seife
Beachtet beim direkten übernehmen von Code auch, dass ihr nicht das tuxbox-neutrino zu GPL V2 only macht.

Re: [Patch] MiniTV for Channellist

Verfasst: Donnerstag 14. März 2013, 08:21
von GetAway
Wenn in Quelle und Ziel folgender Satz steht ...
either version 2 of the License, or
(at your option) any later version.
sollte wohl alles im grünen Bereich sein.

Re: [Patch] MiniTV for Channellist

Verfasst: Donnerstag 14. März 2013, 08:53
von seife
Ja, aber da muss man halt genau aufpassen.

Re: [Patch] MiniTV for Channellist

Verfasst: Freitag 15. März 2013, 12:15
von GetAway
Leider gibt noch Seqfaults nach mehrfachen Bouquetwechsel und anschließenden Zap auf einen Kanal.
Das liegt daran, dass die Funktion ChannelList::show() immer und immer wieder nach Bouquetwechsel
aufgerufen wird und pig jedesmal neuen Speicher ( pig = new CPIG(0); )zugewiesen wird.

Schöner wäre die Speicherzuweisung im Konstruktor zu machen, allerdings verschiebt sich dann die
Position des MiniTV, wenn man zwischendurch den Imageinfo bzw. die Technischen Informationen aufruft.
Warum das so ist, habe ich noch nicht herausgefunden. :(

Re: [Patch] MiniTV for Channellist

Verfasst: Freitag 15. März 2013, 20:22
von Gaucho316
Dann lass ich erst einmal die Finger von dem Code, bis du eine Lösung gefunden hast. Ich selbst brauche MiniTV auch nicht wirklich.

Re: [Patch] MiniTV for Channellist

Verfasst: Samstag 16. März 2013, 00:15
von GetAway
Patch 0007 nochmals aktualisiert.

fix init of variable 'emptyLineCount'
move init of pig to constructor
use set_coord to reset pig position. :)

Re: [Patch] MiniTV for Channellist

Verfasst: Samstag 16. März 2013, 17:07
von Gaucho316
Ich habe mal den alten und den neuen Patch verglichen. Es fehlen jetzt die Änderungen in settings.h.

Re: [Patch] MiniTV for Channellist

Verfasst: Samstag 16. März 2013, 22:35
von GetAway
Vielen Dank für die Rückmeldung. Den Patch habe ich aktualisiert.

Re: [Patch] MiniTV for Channellist

Verfasst: Samstag 16. März 2013, 23:39
von svenhoefer
GetAway hat geschrieben:Im Cooli-Git gibt es übrigens einen
Schalter für große oder kleine Fenster, diesen könnte man für die Kanalliste verfügbar machen.
ich habe mir mal die freiheit genommen, die idee zu klauen. momentan habe ich das erstmal so gelöst:

Code: Alles auswählen

diff --git a/src/driver/framebuffer.cpp b/src/driver/framebuffer.cpp
index a5e7715..f89c49a 100644
--- a/src/driver/framebuffer.cpp
+++ b/src/driver/framebuffer.cpp
@@ -423,6 +423,18 @@ unsigned int CFrameBuffer::getScreenHeight(bool real)
 		return g_settings.screen_EndY - g_settings.screen_StartY;
 }
 
+#define NON_BIG_WINDOWS	75 // %
+
+unsigned int CFrameBuffer::getScreenWidthRel()
+{
+	return (g_settings.screen_EndX - g_settings.screen_StartX) * (g_settings.big_windows ? 100 : NON_BIG_WINDOWS) / 100;
+}
+
+unsigned int CFrameBuffer::getScreenHeightRel()
+{
+	return (g_settings.screen_EndY - g_settings.screen_StartY) * (g_settings.big_windows ? 100 : NON_BIG_WINDOWS) / 100;
+}
+
 unsigned int CFrameBuffer::getScreenX()
 {
 	return g_settings.screen_StartX;
diff --git a/src/driver/framebuffer.h b/src/driver/framebuffer.h
index bde88e9..6283efb 100644
--- a/src/driver/framebuffer.h
+++ b/src/driver/framebuffer.h
@@ -140,6 +140,8 @@ class CFrameBuffer
 		unsigned int getStride() const;             // size of a single line in the framebuffer (in bytes)
 		unsigned int getScreenWidth(bool real = false);
 		unsigned int getScreenHeight(bool real = false); 
+		unsigned int getScreenWidthRel();
+		unsigned int getScreenHeightRel();
 		unsigned int getScreenX();
 		unsigned int getScreenY();
 		
hast du da möglicherweise eine bessere idee dafür?

Re: [Patch] MiniTV for Channellist

Verfasst: Montag 18. März 2013, 09:12
von GetAway
Du meinst für Neutrino-HD? Ob das Sinn macht global immer 75% zu
nehmen, weiß ich jetzt auch nicht. Probier's halt aus.

Re: [Patch] MiniTV for Channellist

Verfasst: Montag 18. März 2013, 13:42
von Gaucho316

Re: [Patch] MiniTV for Channellist

Verfasst: Montag 18. März 2013, 17:24
von GetAway
H+V mit 165% getestet. Sieht nicht so aus, dass man das portieren muss.

Re: [Patch] MiniTV for Channellist

Verfasst: Sonntag 24. März 2013, 15:04
von GetAway
Patch 0007 auf aktuellen Git Stand gebracht.

Patch 0008: Neutrino: improved channellist, speedup scrolling!

there is no need to update events while scrolling
now update responds at key release :)

Re: [Patch] MiniTV for Channellist

Verfasst: Dienstag 26. März 2013, 21:28
von Gaucho316
GetAway hat geschrieben:0007-Neutrino-add-MiniTV-to-Channellist.patch
Ich habe mal 'ne Frage. Warum wird full_width folgendermaßen berechnet?

Code: Alles auswählen

full_width = frameBuffer->getScreenWidth() - frameBuffer->getScreenX();
Das bedeutet ja im Prinzip:

Code: Alles auswählen

full_width = g_settings.screen_EndX - g_settings.screen_StartX - g_settings.screen_StartX;
Ich verstehe den Sinn nicht. Müsste statt des zweiten g_settings.screen_StartX nicht was anderes hin? :gruebel:

Re: [Patch] MiniTV for Channellist

Verfasst: Dienstag 26. März 2013, 21:42
von GetAway
Hoppla, das ist wirklich witzig und mir onScreen nicht negativ aufgefallen. :lol:
Da fragst du auch besser den Autor. Ich habe schon jede Menge Bugs aus dem Code gefummelt
und es ist nur menschlich, dass mir nicht alles beim Portieren auffällt. Mach es doch einfach richtig.
Du wolltest doch noch die Fenstergröße anpassen. :)

Ich bin vorerst mit der Kanalliste fertig.

Re: [Patch] MiniTV for Channellist

Verfasst: Dienstag 26. März 2013, 21:59
von Gaucho316
Ok, das mach ich dann gleich mit. Hätte ja sein können, dass da ein tieferer Sinn hintersteckt, der sich mir nur nicht erschlossen hat.

Edit: Ich sehe gerade, dass das in Neutrino-HD vor kurzem berichtigt wurde.

Re: [Patch] MiniTV for Channellist

Verfasst: Mittwoch 27. März 2013, 14:11
von svenhoefer
Gaucho316 hat geschrieben:Ich habe mal 'ne Frage. Warum wird full_width folgendermaßen berechnet?

Code: Alles auswählen

full_width = frameBuffer->getScreenWidth() - frameBuffer->getScreenX();
damit hat irgendwann mal einer angefangen und alle anderen (incl. ich) haben das fortgesetzt, ohne drüber nachzudenken. mir ist das auch vor paar tagen aufgefallen. da wird es aber bestimmt noch die eine oder andere stelle geben, wo diese berechnung genau so drin ist.

Re: [Patch] MiniTV for Channellist

Verfasst: Freitag 29. März 2013, 20:50
von Gaucho316
Gaucho316 hat geschrieben:Kann man die Änderungen nicht vielleicht noch ein klein wenig aufdröseln?
Die Einführung der Methode CChannelList::updateSelection() wäre beispielsweise so ein Kanidat,
der nichts mit MiniTV zu tun hat. So eine Methode könnte man übrigens auch in den Klassen
  • CBookmarkManager (bookmarkmanager.h/.cpp),
  • CBouquetList (bouquetlist.h/.cpp),
  • EventList (eventlist.h/.cpp),
  • CPluginList (pluginlist.h/.cpp),
  • CTimerList (timerlist.h/.cpp),
  • CBEBouquetWidget (bouqueteditor_bouquets.h/.cpp),
  • CBEChannelWidget (bouqueteditor_channels.h/.cpp) und
  • CListBox (listbox.h/.cpp)
nutzen, um den Code zu vereinfachen.
GetAway hat geschrieben:0006-channellist-add-new-method-to-calculate-selected-item.patch
Ich habe das mal umgesetzt. Die Änderung für CChannelList ist auch mit drin. Guckt mal, ob ich nichts kaputt gemacht habe. Als nächstes nehme ich mir den eigentlichen MiniTV-Patch vor.

Neutrino: move duplicate code into new method updateSelection()
Link entfernt, da Patch in Git

Re: [Patch] MiniTV for Channellist

Verfasst: Samstag 30. März 2013, 20:51
von Gaucho316
Ich habe die Patches nun ein klein wenig überarbeitet. Mir gefällt das Gesamtkunstwerk sehr gut. Vielen Dank an GetAway für die Mühe bei der Portierung und natürlich auch an alle anderen, die am ursprünglichen Code beteiligt waren. :up:
GetAway hat geschrieben:0005-framebuffer-add-2-new-functions-getScreenWidth-and-getScreenHeight.patch
Dieser Patch wird nicht mehr benötigt.
GetAway hat geschrieben:0007-Neutrino-add-MiniTV-to-Channellist.patch
Neutrino: add MiniTV to Channellist
Link entfernt, da Patch in Git
GetAway hat geschrieben:0008-Neutrino-improved-channellist-speedup-scrolling.patch
Neutrino: improved channellist, speedup scrolling!
Link entfernt, da Patch in Git


Im MiniTV-Modus der Kanalliste wird das verkleinerte Fernsehbild nur angezeigt, wenn man im TV-Modus ist. Ich habe das für die Image- und Streaminformationen auch übernommen.

Neutrino: only paint PIG in TV mode
Link entfernt, da Patch in Git