SetProperty

  • Hallo.
    Ich wüsste gerne mehr über die Verwendung des Befehls "SetProperty".

    Ich stelle mir das so vor:

    Code
    SetProperty(StudioIcon,$INFO[ListItem.Studio,\flagging\studio\,.png])


    und Einsetzbar zB. in einem visible tag:

    Code
    <visible>IsEmpty(Window.Property(StudioIcon))</visible>


    hab ich das richtig verstanden?

    habe nebenbei mal in den nox code geschaut..... da sieht es nicht so aus, und ich verstehe es noch nicht so richtig.

    Ich bin dankbar für jede Erläuterung.
    bg

  • Moin,
    im Grunde geht es gar nicht um das was ich vorhabe.
    Das mit den Studioflags habe ich mir nur ausgedacht um meine Gedankengänge etwas zu verdeutlichen.
    Ich wollte nur verstehen was ich damit machen kann.
    Das WIKI durchstöbere ich ja immer zuerst, nur sagt mir die Beschreibung nix. Liegt vielleicht auch an meinen Englishkenntnissen.
    bg

  • Ah ok,
    was man machen kann ist wohl in den addons oder scripts definiert, zbs. die widgets properties die man im home window anzeigen will, wie auch next aired script oder weather addons.

    Deswegen war mir nicht klar was du genau mit studios machen wolltest da es bereits ListItem.Studio gibt. :)

    Achso, danke für die Erklärung.
    Hatte gehoft, dass man einer Funktion einen Namen geben kann und dann mit dem Namen weiter arbeiten kann.
    bg

  • blauesgruen
    Du hast das in deinem Eingangspost schon ganz richtig verstanden eigentlich. Mit SetProperty(key,value[,id]) wird eine neue Property für das aktive Window bzw. das spezifizierte Window gesetzt. Mit Window(id).Property(key) kann man den Wert der gesetzten Property auslesen, ClearProperty(key[,id]) setzt die Property zurück, d.h. nach ClearProperty(test,home) ist IsEmpty(Window(home).Property(test)) true.

    Externer Inhalt www.planet-ira.de
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Zitat

    blauesgruen
    Du hast das in deinem Eingangspost schon ganz richtig verstanden eigentlich. Mit SetProperty(key,value[,id]) wird eine neue Property für das aktive Window bzw. das spezifizierte Window gesetzt. Mit Window(id).Property(key) kann man den Wert der gesetzten Property auslesen, ClearProperty(key[,id]) setzt die Property zurück, d.h. nach ClearProperty(test,home) ist IsEmpty(Window(home).Property(test)) true.

    Sehr interessant. Vielen Dank. Dann werde ich mal ein bisschen experimentieren.
    Gut, dass ich gefragt habe.
    bg

  • Zitat

    Das heisst man könnte die ganzen custom items zbs. mit SetProperty erstellen?

    <onclick>SetProperty(CustomHome1)</onclick>
    <onclick>Skin.SetString(CustomHome1)</onclick>


    und dann im home Menu:

    <label>$INFO[Window(Home).Property(CustomHome1)]</label>
    <visible>IsEmpty(Window.Property(CustomHome1))</visible>

    klingt jedenfalls so ... bin noch nicht zum testen gekommen
    bg

  • so... folgendes getestet:

    das in der myvideonav.xml:

    Code
    <onload>SetProperty(StudioIcon,$INFO[ListItem.Studio,\flagging\studios\,.png])</onload>

    das dann in einem view (showcase):

    im ersten moment sieht es so aus als ob es funktioniert. ein studiologo wird angezeigt.
    beim weiterscrollen bleibt aber dieses eine logo und ändert sich nicht mehr. muss ich jetzt jedesmal ein clearproperty zum scrollen auslösen?

  • Das heisst man könnte die ganzen custom items zbs. mit SetProperty erstellen?

    <onclick>SetProperty(CustomHome1)</onclick>
    <onclick>Skin.SetString(CustomHome1)</onclick>


    und dann im home Menu:

    <label>$INFO[Window(Home).Property(CustomHome1)]</label>
    <visible>IsEmpty(Window.Property(CustomHome1))</visible>

    SetProperty macht nur dann Sinn, wenn die Werte nicht persistiert werden sollen, d.h. für custom home items ist es nicht geeignet, da diese auch nach einem Neustart noch verfügbar sein sollen. Um aber schnell und im Vergleich zu Skin.SetString() ohne Lag einen temporären Wert zu setzen, ist SetProperty() gut geeignet.

    Externer Inhalt www.planet-ira.de
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Zitat

    SetProperty macht nur dann Sinn, wenn die Werte nicht persistiert werden sollen, d.h. für custom home items ist es nicht geeignet, da diese auch nach einem Neustart noch verfügbar sein sollen. Um aber schnell und im Vergleich zu Skin.SetString() ohne Lag einen temporären Wert zu setzen, ist SetProperty() gut geeignet.

    Das muss ich mir mal auf der Zunge zergehen lassen.
    Hättest du ein Beispiel für mich, vielleicht verstehe ich es dann etwas leichter.
    Kann mir noch nicht so richtig vorstellen, was man temporär gebrauchen kann.
    Danke.
    bg

  • Da gibts vieles. :)

    Ich habe z.B. in Xperience1080 eingebaut, dass man über onback die Custom Home Items direkt editieren kann. Funktionieren tut das über eine Property, d.h. ich habe im Container

    PHP
    <onback condition="!Skin.HasSetting(KioskMode)">SetProperty(EditTile,1)</onback>
    <onback condition="!Skin.HasSetting(KioskMode)">Select</onback>

    und später (vereinfacht) in den Items

    PHP
    <onclick condition="IsEmpty(Window.Property(EditTitle))">Addon starten</onclick>
    <onclick condition="!IsEmpty(Window.Property(EditTitle))">Addon editieren</onclick>
    <onclick condition="!IsEmpty(Window.Property(EditTitle))">ClearProperty(EditTile)</onclick>

    Weiter kann man es z.B. nutzen, um in Grouplists herauszubekommen, ob nach links oder rechts gescrollt wurde, indem man folgendes in den einzelnen Buttons setzt:

    PHP
    <onleft>ClearProperty(HomeMoveDirection,Home)</onleft>
    <onright>SetProperty(HomeMoveDirection,1,Home)</onright>

    Danach kann man über IsEmpty() und !IsEmpty() Fokus-Animationen steuern.

    Auch habe ich z.B. Properties, um spezielle FileBrowser Dialoge für Fanart, Poster, Banner etc. im DialogVideoInfo anzeigen zu können. Natürlich kann ich das auch alles mit Strings machen, hat aber den Nachteil, dass für jedes Setzen eine Schreiboperation auf dem Dateisystem notwendig ist (viel langsamer) und außerdem werden die Werte nur im jeweiligen, temporären Kontext gebraucht und müssen nicht dauerhaft gespeichert sein.

    Externer Inhalt www.planet-ira.de
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Ok verstehe (ansatzweise). Werde mal mit meinem Custom Addon Widget das Szenario nachbauen. Dort kann man mit einem onlick ein Addon ins Widget legen, solange noch keines vergeben ist. Ansonsten startet er das Addon.
    Vielen Dank aufjedenfall für die Erläuterung.
    Wird aber bestimmt nicht das letzte mal sein, dass ich dazu ein paar Fragen habe. ;)
    Jetzt fällt es mir aber bestimmt leichter deinen Skincode nachzuvollziehen wenn ich mal wieder mit der Nase drin stecke.
    bg

Jetzt mitmachen!

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