Fokus von selektierten Untermenüpunkten
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Fokus von selektierten Untermenüpunkten
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).
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.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: [Broken] Fokus von selektierten Untermenüpunkten
Auf diese Meldung habe ich irgendwie schon gewartet. 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.
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: [Broken] Fokus von selektierten Untermenüpunkten
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.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.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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:
Beispiel für movieplayer_menu.cpp:
Was denkt ihr? Würde das funktionieren?
Beispiel für movieplayer_menu.h:
Code: Alles auswählen
class CMoviePlayerMenue : public CMenuTarget
{
private:
...
int selected;
...
public:
...
}
Code: Alles auswählen
CMoviePlayerMenue::CMoviePlayerMenue()
{
...
selected = -1;
...
}
...
void CMoviePlayerMenue::showMoviePlayerMenue()
{
...
mpmenue->setSelected(selected);
mpmenue->exec(NULL, "");
selected = mpmenue->getSelected();
...
}
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: Fokus von selektierten Untermenüpunkten
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.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: Fokus von selektierten Untermenüpunkten
OK, mehr wäre da nicht notwendig.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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 hat geschrieben:... (in Medienwiedergabe auch in die 3. Ebene) ...
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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.
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.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: Fokus von selektierten Untermenüpunkten
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 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.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
Wenn du etwas einfacheres auf Lager hast, immer her damit. Mir ist nichts besseres eingefallen.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: Fokus von selektierten Untermenüpunkten
Bisher hab ich noch nichts gefunden.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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. Ich habe auch gar kein IDE-Interface.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: Fokus von selektierten Untermenüpunkten
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.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
Welche Menüs meinst du damit genau?dbt hat geschrieben:Und wenn "erinnern" dann nur die Menüs, wo man großteils nur durchnavigiert.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: Fokus von selektierten Untermenüpunkten
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 mitGaucho316 hat geschrieben:Wenn du etwas einfacheres auf Lager hast, immer her damit. Mir ist nichts besseres eingefallen.
Code: Alles auswählen
selected = -1
Code: Alles auswählen
setSelectID(selected)
Code: Alles auswählen
selected = getSelectID()
neutrino_keep-menu-position_example_2010-12-02.patch
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.Gaucho316 hat geschrieben:Welche Menüs meinst du damit genau?dbt hat geschrieben:Und wenn "erinnern" dann nur die Menüs, wo man großteils nur durchnavigiert.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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
Link zum Patch entfernt
Zuletzt geändert von Gaucho316 am Montag 6. Dezember 2010, 14:53, insgesamt 1-mal geändert.
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Fokus von selektierten Untermenüpunkten
@Gaucho316
Funktioniert bei mir auch ohne Probleme. Vielen Dank für die Arbeit.
Funktioniert bei mir auch ohne Probleme. Vielen Dank für die Arbeit.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: Fokus von selektierten Untermenüpunkten
Das war in meinem Patch eigentlich schon so vorgesehen.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.
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);
}
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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.dbt hat geschrieben:Das war in meinem Patch eigentlich schon so vorgesehen.
Link zum Patch entfernt
Zuletzt geändert von Gaucho316 am Montag 6. Dezember 2010, 14:53, insgesamt 1-mal geändert.
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Fokus von selektierten Untermenüpunkten
Vielleicht ist hat es dbt aber so programmiert, das er mit defaultselected einen Eintrag markieren wollte, solange das Menü noch nichtGaucho316 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.
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.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: Fokus von selektierten Untermenüpunkten
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
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.
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Fokus von selektierten Untermenüpunkten
Noch etwas.
Was passiert, wenn ein defaultselected Eintrag inaktiv, neu gebootet und dann das Menü betreten wird?
Was passiert, wenn ein defaultselected Eintrag inaktiv, neu gebootet und dann das Menü betreten wird?