Wann werden Controls Fokussiert?

  • Hey Kodinerds,
    ich versuche mich seit ein paar Tagen am Skinnen, und hab auch schon die ersten Erfolgserlebnisse gehabt :)
    Ein paar Diffuses und Animationen geändert u etwas mit den Texturen gespielt (nachdem ich sie dann mal gefunden hatte ;D).
    Jetzt wollte ich mich daran machen, einen Settingsbutton überhalb des Menüs (vertikal) zu Positionieren. Ich weiß nur leider absolut nicht, wie ich Kodi klar mache, dass er nach dem letzten Menüitem nicht wieder von unten anfangen, sondern den Settingsbutton Fokussieren soll. ?(

    Ich sollte vielleicht dazu erwähnen, dass ich mir das Skinning Manual nicht durchgelesen habe. Ich habe den Skin einfach auf debug stehen, und suche dann in den Dateien bzw. den Includes das jeweilige Element, was ich verändern möchte.

    Bestimmt weiß da jemand von euch Rat :)

    Edit: Hat sich erledigt, ich habs hinbekommen.
    Wenn mal ein Anfänger vor dem gleichen problem steht: Einfach ein <onup></onup>, <onleft></onleft>, etc. mit der ID nummer des zu fokussierenden Controls in das Control Packen.

  • ja, das manual ist teilweise schon etwas arg "kurz" in den Erklärungen.. Da bekommt man oft sowas wie
    "SetFocus bedeutet der Focus wird gesetzt" geliefert ;) .
    Aber irgendwann wenn es um conditionals geht (wenn dein Button z.B. nicht immer sichtbar ist sondern nur bei speziellen Menüpunkten),
    wirst um das Wikki nicht mehr drum herumkommen. Die Möglichkeiten sind hier ja extrem Umfangreich.

    Schön das es hinbekommen hast. Zu Beachten wäre das die ID Angabe in den meisten Fällen nur funktioniert wenn dein zu fokussierendes control
    visible ist. Controls die nicht sichtbar sind oder erst wenn sie focus haben benötigen ein SetFocus(ID).. Es schadet aber auch nicht wenn mans auch bei
    sichtbaren so verwendet.


    Grüße

  • Ich hänge mich hier mal ran, weil ich ein ähnlich gelagertes Problem habe:
    Ich habe innerhalb einer List ein Slider-Control (id=1), welches ich gerne bedienen würde. Ich war jetzt der Meinung, mit <ondown>1</ondown> komme ich auf den Slider, nur leider will er nicht? Ich habe mal die XML auf das nötigste reduziert.

    Eigentlich sollte der Focus beim ondown doch von Zeile 17 nach Zeile 32/62 wechseln?


    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • versuch mal so

    PS: mir fällt gerade auf das es so zwar anwählbar wäre aber der slider hätte dann ein festen Punkt und wär immer dort. :whistling:

    Versuch es mal mit einer Grouplist.. da kannst du mehrere Button/Slider machen

  • Hatte mal gelesen das Content auch mit Grouplist geht oder hab ich da was falsches im Kopf?


    Ich wüsste nicht wie...
    Da müsste man ja dann viele items einzeln als gruppe machen und jede noch animieren für den focus und noch ausblenden wenn die nicht existieren.

    Ich denke eher wenn das immer gleich viele sind, also die 3 auf dem Bild, müsste man sie entweder abgreifen aus einem versteckten content als liste und nachbilden als einzelne groups,
    oder gleich ohne dynamischen content zur verfügung stellen mit Propertys.

    Spätestens mit Krypton durch den click werden slider eh irgendwie ungeschickter wenn ihr mich fragt, war aber wohl nicht anders möglich..
    Das korrigiert den Bug das man bisher in Setting Corelisten hatte wenn nur ein Control (slider) drin war - da kam man "navigatorisch" nicht mehr raus ohne Maus
    außer man hatte eine "Gengennavigation" als Sicherheit drin wie nach unten/oben was aber dazu führt das man nicht mehr durch die Liste scrollen konnte.

    Vielleicht ginge aber draufleen über den container mit onup/ondown mit condition wie Container(xxx).HasFocus(yyy) zu den Slidern?
    Ist halt fürs Übersetzen und unterschiedliche Textlängen wieder doof.

    Aber anders gehts wohl nicht, container haben ja nur einen click der für alle gilt. Selbst als button hast ja keine chance da gibts soweit ich weiß keinen click im focusedlayout,
    und selbst wenn fehlt einem ja der Runscript click wieder.

    Grüße

  • Ich sehe schon, das wird kompliziert. Wäre ja auch zu einfach gewesen, wenns per <ondown> gegangen wäre. Wenn ich nicht weiterkomme, mach' dann einfach ein neues Fenster auf (so wie ich das schon beim GTO gemacht habe) und leg da den Slider + Zusatzinfos mit rein. Heute resp. morgen vormittag werde ich aber dazu nicht kommen.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Da wären wir wieder bei Bugs und Melden;).. Komischerweise funktioniert mein Videoosd Slider immer noch ohne den Click, während andere wie in den Settings tatsächlich einen brauchen.
    Ob das nun Absicht ist, keine Ahnung - auf alle Fälle geschickter wenns so bleibt;)..

    Ich hab es mal anhand eines Beispieles Versucht - das geht aber mit einem Radiobutton genausowenig. Ein Control mit einer ID kann keinen Focus erhalten im Focusedlayout.
    Weder mit Setfocus, noch sonst wie, und Focus muss es ja haben im Container sonst geht der click ja ins leere oder in den vom Container.

    Kommt der immer an Position 3? Ansonsten würde ich einfach welche drauflegen mit demselben visible wie im container
    <visible>StringCompare(ListItem.Property(type),group)</visible>

    Und im Container dann versuchen zu den Einzelnen Slider zu kommen - müsste dann auch als onup gehen, jeweils mit der kombination der Position als Abfrage falls es mehr als einen haben kann.
    Oder als Click in der Art:
    <onclick condition="!StringCompare(ListItem.Property(type),group)">RunScript(plugin.program.fritzact,action=toggle&ain=$INFO[ListItem.Label2])</onclick>
    <onclick condition="StringCompare(ListItem.Property(type),group)">SetFocus(1)</onclick>

    Und wenn doch ein Click im Slider zur Aktivierung gebraucht wird noch ein "Select" als weiteren Click.
    <onclick condition="Container(58501).Position(2) + StringCompare(ListItem.Property(type),group)">select</onclick>

    Sollte dann ja gehen - natürlich nur wenn diese mit Slider kein RunScript brauchen, sonst hilft wohl nur ein Auswahldialog mit Nachfrage was von beidem gemacht werden soll.
    Ansonsten viele mir nur ein die alte Contentmethode zu nutzen und dort dann in die einzelnen Klicks keinen Slider sondern eine Art "Fake Spin" zu verwenden und das Grafisch nachzubilden.

    Da müsstest dann ja durch einzelne Werte schalten können denk ich:

    <onclick>skin.SetString(CustomEnumeration,1)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),1)">skin.setstring(CustomEnumeration,2)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),2)">skin.setstring(CustomEnumeration,3)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),3)">skin.setstring(CustomEnumeration,4)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),4)">skin.setstring(CustomEnumeration,5)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),5)">skin.setstring(CustomEnumeration,6)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),6)">skin.setstring(CustomEnumeration,7)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),7)">skin.setstring(CustomEnumeration,8)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),8)">skin.setstring(CustomEnumeration,9)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),9)">skin.setstring(CustomEnumeration,10)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),10)">skin.setstring(CustomEnumeration,11)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),11)">skin.setstring(CustomEnumeration,12)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),12)">skin.setstring(CustomEnumeration,13)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),13)">skin.setstring(CustomEnumeration,14)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),14)">skin.setstring(CustomEnumeration,15)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),15)">skin.setstring(CustomEnumeration,16)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),16)">skin.setstring(CustomEnumeration,17)</onclick>
    <onclick condition="String.IsEqual(skin.string(CustomEnumeration),17)">skin.setstring(CustomEnumeration,1)</onclick>

    Quasi sowas in der Art.. Müsste ich aber mal Testen ob das geht mit einzelnen items als "alter Content" vor dir die Mühe machst;)..
    Anhand dieses Wertes kann man ja dann genauso den Fortschrittsbalken Grafisch Anzeigen.

    Grüße

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!