[Patch] MiniTV for Channellist

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

[Patch] MiniTV for Channellist

Beitrag 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
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag 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.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag von GetAway »

Patche aktualisiert. Die neue Methode ::updateSelection() ist in einem separaten Patch.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag 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.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag 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.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag von Gaucho316 »

Tja, jeder hat so seine Vorlieben. Ich sehe das mit der Kanallistenbreite halt eher so wie seife in Neutrino-MP.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Patch] MiniTV for Channellist

Beitrag von seife »

Beachtet beim direkten übernehmen von Code auch, dass ihr nicht das tuxbox-neutrino zu GPL V2 only macht.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag 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.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Patch] MiniTV for Channellist

Beitrag von seife »

Ja, aber da muss man halt genau aufpassen.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag 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. :(
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag 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.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag von GetAway »

Patch 0007 nochmals aktualisiert.

fix init of variable 'emptyLineCount'
move init of pig to constructor
use set_coord to reset pig position. :)
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag von Gaucho316 »

Ich habe mal den alten und den neuen Patch verglichen. Es fehlen jetzt die Änderungen in settings.h.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag von GetAway »

Vielen Dank für die Rückmeldung. Den Patch habe ich aktualisiert.
svenhoefer
Interessierter
Interessierter
Beiträge: 42
Registriert: Donnerstag 25. Oktober 2012, 15:22

Re: [Patch] MiniTV for Channellist

Beitrag 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?
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag 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.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag von Gaucho316 »

GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag von GetAway »

H+V mit 165% getestet. Sieht nicht so aus, dass man das portieren muss.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag 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 :)
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag 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:
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Patch] MiniTV for Channellist

Beitrag 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.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag 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.
svenhoefer
Interessierter
Interessierter
Beiträge: 42
Registriert: Donnerstag 25. Oktober 2012, 15:22

Re: [Patch] MiniTV for Channellist

Beitrag 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.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag 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
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: [Patch] MiniTV for Channellist

Beitrag 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