Fokus von selektierten Untermenüpunkten

Wünsche, Anträge, Fehlermeldungen
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Fokus von selektierten Untermenüpunkten

Beitrag von GetAway »

Ich schon wieder.

Altbekannt waren einmal markierte Menüpunkte bzw. Menüpunkte die einmal den Fokus besaßen
immer noch markiert nachdem man das Untermenü verlassen und danach wieder betreten hatte.

Dies funktioniert nur noch auf der ersten Unterebene und nicht mehr auf der 2. Der Fokus springt
jetzt immer auf den obersten Menüpunkt (i.d.R. auf Zurück).
Zuletzt geändert von GetAway am Donnerstag 23. September 2010, 10:35, insgesamt 1-mal geändert.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: [Broken] Fokus von selektierten Untermenüpunkten

Beitrag von dbt »

Auf diese Meldung habe ich irgendwie schon gewartet. :wink: Kann ich dir ziemlich genau sagen. Die Menüobjekte bleiben nur innerhalb von Haupt-Einstellungs- und Sevicemenü erhalten, aber die restlichen werden separat aufgerufen, also bei Bedarf. Das ist so erst mal kein Problem. Ich bastle aber noch an den Hauptmenüs wo die Instanzierung etwas anders läuft. Da sollte das dann wieder gehen. Aber eigentlich sollte man damit leben können, wenn einige Elemente bzw. Apps oder Objekte, will mal nicht Menüs dazu sagen, nur dann neu geladen werden, wenn man sie auch braucht.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [Broken] Fokus von selektierten Untermenüpunkten

Beitrag von GetAway »

dbt hat geschrieben:Die Menüobjekte bleiben nur innerhalb von Haupt-Einstellungs- und Sevicemenü erhalten, aber die restlichen werden separat aufgerufen, also bei Bedarf. Das ist so erst mal kein Problem.
Das durch den geänderten Menüaufbau die Objekte teilweise wieder verloren gehen, dachte ich mir schon, dann ist es auch nicht wirklich kaputt. Ich ändere mal den Threadtitel. :wink:
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Ich habe eine Idee zur teilweisen Lösung des "Problems". Könnte man sich nicht zumindest für die Objekte, die in neutrino_menu.cpp instanziert werden, die Position merken? Die Objekte verbleiben ja im Speicher, wenn ich das richtig verstehe. Dazu müsste man für die Klasse CMenuWidget zwei neue Methoden einführen, um auf die Eigenschaft selected zugreifen zu können: getSelected() und setSelected(). Vor dem Aufruf eines MenuWidgets müsste man dann einfach setSelected() ausführen und danach getSelected(). Diesen Wert muss man sich dann in der entsprechenden Klasse wie z.B. CMoviePlayerMenue merken.

Beispiel für movieplayer_menu.h:

Code: Alles auswählen

class CMoviePlayerMenue : public CMenuTarget
{
	private:
		...
		int selected;
		...
	public:
		...
}
Beispiel für movieplayer_menu.cpp:

Code: Alles auswählen

CMoviePlayerMenue::CMoviePlayerMenue()
{
	...
	selected = -1;
	...
}
...
void CMoviePlayerMenue::showMoviePlayerMenue()
{
	...
	mpmenue->setSelected(selected);
	mpmenue->exec(NULL, "");
	selected = mpmenue->getSelected();
	...
}
Was denkt ihr? Würde das funktionieren?
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Fokus von selektierten Untermenüpunkten

Beitrag von dbt »

Ich hatte schon mal die Idee, das mit dem Parameter defaultselected zu machen, aber nicht weiter verfolgt. Wenn deine Idee funktioniert, warum nicht. Von alleine würde sich das erledigen, wenn man die Objekte wie früher mal im Stack lässt. Die könnte man auch als Objekte übergeben. Der Fokus ist aber nicht überall sinnvoll. Deshalb finde ich das in den drei Hauptmenüs eigentlich völlig ausreichend. Evtl. Maximal noch in einigen Untermenüs, die nur zur Navigation dienen. Allgemein sind Menüelemente in den verschiendensten GUI's ohne Fokus auf ein unteres Element sondern werden nur auf den Einstieg gelegt.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Ich hatte vor, dass in den Hauptmenüpunkt "Movieplayer" und in die 2. Ebene von Einstellungen (in Medienwiedergabe auch in die 3. Ebene) einzubauen. Oder ist das wirklich zuviel des Guten? Auf alle Fälle werde ich es mir die Tage mal genauer ansehen und ausprobieren.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Fokus von selektierten Untermenüpunkten

Beitrag von dbt »

OK, mehr wäre da nicht notwendig.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Gaucho316 hat geschrieben:... (in Medienwiedergabe auch in die 3. Ebene) ...
Von dieser Idee werde ich mich wohl aufgrund neuer Erkenntnisse für mich aus einem anderen Posting verabschieden müssen. Aber für die 2. Ebene des Einstellungsmenüs reicht's mir auch.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Ich habe das jetzt einmal für den Hauptmenüeintrag Movieplayer und die Einstellungsmenüs Video, Audio und Jugendschutz umgesetzt. Von meiner ursprünglichen Idee, die Eigenschaft selected direkt zu ändern, bin ich aber abgerückt, da mir das zu heikel war. Stattdessen mache ich das nun über den Parameter defaultselected, wie es von dbt mal angedacht war. Wenn's so ok ist, kann ich das für die anderen Einstellungsmenüpunkte auch umsetzen.

Link zum Patch entfernt

Edit: In Kanalsuche und Software-Update im Servicemenü lässt sich das übrigens auch sehr einfach einbauen.
Zuletzt geändert von Gaucho316 am Montag 6. Dezember 2010, 14:52, insgesamt 1-mal geändert.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Fokus von selektierten Untermenüpunkten

Beitrag von dbt »

Gaucho316 hat geschrieben:Ich habe das jetzt einmal für den Hauptmenüeintrag Movieplayer und die Einstellungsmenüs Video, Audio und Jugendschutz umgesetzt. Von meiner ursprünglichen Idee, die Eigenschaft selected direkt zu ändern, bin ich aber abgerückt, da mir das zu heikel war. Stattdessen mache ich das nun über den Parameter defaultselected, wie es von dbt mal angedacht war. Wenn's so ok ist, kann ich das für die anderen Einstellungsmenüpunkte auch umsetzen.

Link zum Patch entfernt

Edit: In Kanalsuche und Software-Update im Servicemenü lässt sich das übrigens auch sehr einfach einbauen.
Funktioniert astrein, soweit ich das getestet habe. Wenn du das noch für den Rest (was du für wichtig hältst) machen könntest, wäre das toll. Edit: Da müsste man doch noch was anderes probieren, müsst glaube ich noch einfacher gehen.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Wenn du etwas einfacheres auf Lager hast, immer her damit. Mir ist nichts besseres eingefallen.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Fokus von selektierten Untermenüpunkten

Beitrag von dbt »

Bisher hab ich noch nichts gefunden.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Lohnt es sich dann überhaupt noch, den Code auch in die anderen Menüeinträge einzubauen? Umsonst möchte ich das eigentlich nicht machen. Im IDE-Menü lasse ich das übrigens weg. Da sehe ich nicht durch. :wink: Ich habe auch gar kein IDE-Interface.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Fokus von selektierten Untermenüpunkten

Beitrag von dbt »

Da muss ich an den Stellen sowieso noch was nachbessern, weil da noch einiges aufzuräumen wäre. Und wenn "erinnern" dann nur die Menüs, wo man großteils nur durchnavigiert. Das IDE-Menü ist sowas wie eine App für sich wie einige andere auch.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

dbt hat geschrieben:Und wenn "erinnern" dann nur die Menüs, wo man großteils nur durchnavigiert.
Welche Menüs meinst du damit genau?
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Fokus von selektierten Untermenüpunkten

Beitrag von dbt »

Gaucho316 hat geschrieben:Wenn du etwas einfacheres auf Lager hast, immer her damit. Mir ist nichts besseres eingefallen.
Hab mal versucht, das ganze etwas einfacher zu machen. So braucht man nur eine select id zu setzen und anzufordern, denn wenn das Widgetobject wech ist muss man das halt, der defaultselect Parameter kann dann im Gegensatz zu deiner Lösung leer bleiben, es sei denn, man setzt den auf true, dann wird der Parameter natürlich brücksichtigt. Ich habe das mal am Beispiel vom Mediaplayer Setup getestet. Man muss nur eine selected Variable da reinbauen die mit

Code: Alles auswählen

selected = -1 
gezündet werden muss, sonst hat man beim ersten öffnen des Menüs keinen Auswahlbalken. Am Anfang setzt man mit

Code: Alles auswählen

setSelectID(selected)
das gewünschte Element was selektiert werden soll. Am Schluss muss man das gewählte dann abrufen und mit

Code: Alles auswählen

selected = getSelectID()
einlagern. Das wars.

neutrino_keep-menu-position_example_2010-12-02.patch
Gaucho316 hat geschrieben:
dbt hat geschrieben:Und wenn "erinnern" dann nur die Menüs, wo man großteils nur durchnavigiert.
Welche Menüs meinst du damit genau?
Das wären die Hauptmenüs, aber da ist das ja sowieso schon erledigt. Besagtes Mediaplayer Setup, Erweiterte Einstellungen, Personalisierung, Tasten Einstiegsmenü usw., eben da wo nicht wirklich Optionen eingestellt werden. Allerdings ist es so doch recht einfach, das fast überall einzubauen. :wink:
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

:up: Ich habe mal einen Blick auf den Code geworfen. Der sieht sehr vielversprechend aus. Mir sind da aber noch ein paar kleine Vereinfachungen eingefallen. Ich probier das mal die Tage aus und baue das dann in das Movieplayer-Menü, alle Einstellungsmenüs (außer IDE) und Kanalsuche und Software-Update im Servicemenü ein. Dann muss ich keine Auswahl treffen.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Ich habe jetzt einen neuen Patch auf Basis meines alten und von dbts Code erstellt und getestet. Bei mir funktioniert's wunderbar.

Link zum Patch entfernt
Zuletzt geändert von Gaucho316 am Montag 6. Dezember 2010, 14:53, insgesamt 1-mal geändert.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Fokus von selektierten Untermenüpunkten

Beitrag von GetAway »

@Gaucho316

Funktioniert bei mir auch ohne Probleme. Vielen Dank für die Arbeit. :D
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Ich reiche nachher noch eine kleine Aktualisierung nach, so dass der Parameter defaultselected Vorrang vor der Variablen preselected hat. Das ist mir über Nacht noch eingefallen.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Fokus von selektierten Untermenüpunkten

Beitrag von dbt »

Gaucho316 hat geschrieben:Ich reiche nachher noch eine kleine Aktualisierung nach, so dass der Parameter defaultselected Vorrang vor der Variablen preselected hat. Das ist mir über Nacht noch eingefallen.
:gruebel: Das war in meinem Patch eigentlich schon so vorgesehen.

Code: Alles auswählen

 void CMenuWidget::addItem(CMenuItem* menuItem, const bool defaultselected)
 {
-	if (defaultselected)
+	bool is_selected = defaultselected;
+	
+	if (select_id != -1)
+	{	
+		if (!defaultselected && (select_id == items.size()))
+			is_selected = true;
+	}
+	
+	if (is_selected)
 		selected = items.size();
+
 	menuItem->isUsed();
 	items.push_back(menuItem);
 }
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

dbt hat geschrieben:Das war in meinem Patch eigentlich schon so vorgesehen.
Nein, war es leider nicht. Stell dir mal folgendes Beispiel vor. Beim 5. Eintrag eines Menüs ist der Parameter defaultselected auf true und beim Schließen dieses Menüs ist der 6. Menüeintrag markiert. Öffnen wir das Menü nun wieder, wird der 6. Menüeintrag markiert, obwohl beim 5. defaultselected auf true steht. Somit hat defaultselected keinen Vorrang. Dieses Verhalten habe ich nun korrigiert. Außerdem habe ich noch eine Sache von dir übernommen, so dass nicht unnötigerweise in allen MenuWidgets andauernd items.size() berechnet wird.

Link zum Patch entfernt
Zuletzt geändert von Gaucho316 am Montag 6. Dezember 2010, 14:53, insgesamt 1-mal geändert.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Fokus von selektierten Untermenüpunkten

Beitrag von GetAway »

Gaucho316 hat geschrieben:Stell dir mal folgendes Beispiel vor. Beim 5. Eintrag eines Menüs ist der Parameter defaultselected auf true und beim Schließen dieses Menüs ist der 6. Menüeintrag markiert. Öffnen wir das Menü nun wieder, wird der 6. Menüeintrag markiert, obwohl beim 5. defaultselected auf true steht. Somit hat defaultselected keinen Vorrang.
Vielleicht ist hat es dbt aber so programmiert, das er mit defaultselected einen Eintrag markieren wollte, solange das Menü noch nicht
betreten wurde. Ist es dann betreten worden und ein anderer Eintrag markiert, spielt defaultselected keine Rolle mehr und der makrkierte
Eintrag hat nach verlassen den Vorrang. So würde ich es jedenfalls sehen.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Fokus von selektierten Untermenüpunkten

Beitrag von Gaucho316 »

Das ist mir eben auch durch den Kopf geschossen. Bei MenuWidgets, die im Speicher bleiben, ist das nämlich so, wie du beschrieben hast. Dann ist dbts Code aber auch falsch. Ich wandele mal mein Beispiel von eben etwas ab. Beim 6. Eintrag eines Menüs ist der Parameter defaultselected auf true und beim Schließen dieses Menüs ist der 5. Menüeintrag markiert. Öffnen wir das Menü nun wieder, wird der 6. Menüeintrag markiert, obwohl zuletzt der 5. gewählt war. Ich poste gleich meinen Code nochmals leicht abgewandelt.

Edit: So müsste es jetzt eigentlich passen.
Link zum Patch entfernt
Zuletzt geändert von Gaucho316 am Montag 6. Dezember 2010, 14:54, insgesamt 1-mal geändert.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Fokus von selektierten Untermenüpunkten

Beitrag von GetAway »

Noch etwas.
Was passiert, wenn ein defaultselected Eintrag inaktiv, neu gebootet und dann das Menü betreten wird?