Infos für Skinner zu den kommenden Neuerungen des aio (All IN ONE) Image für die Amlogic Dreamboxen

  • Infos über neue Skinmöglichkeiten und Änderungen im Bereich Skins ab enigma2 5.0.0r0 (aio Image / All IN ONE )



    - implement "shadowBlur" for eLabel , valid values are between 0.0 and 15.0

    Dies ist eine Möglichkeit einen weichen Schatten um ein Schriftlabel zu erzeugen


    - Implement limit & offset for multiline text and use it in ScrollLabel

    Dies bewirkt das es keine halben Zeilen mehr gibt ,bedeuet der Text in einem Scrollabel wird nicht mehr abgeschnitten oder zur hälfte angezeigt


    - implement bottomOrTop alignment (eLabel, eListbox, etc)

    Es kann ab sofort auch valign="bottomOrTop" verwendet werden ,dies bewirkt das ein Textfeld am unteren Pixel anfängt aber wenn es mehr Text gibt als in den Skinbereich passt Top gesetzt wird und der Textinhalt vom Anfang angezeigt wird.


    - enable "ellipsize > ..." by default for all single line strings (except when simultion=true, e.g. for size calc) - You can use RT_NO_ELLIPSIS to disable this behaviour when needed

    Bei einzeiligen widgets oder Listeinträgen werden jetzt bei zu langen Texten die Texte hinten abgeschnitten und durch 3 Punkte ersetzt ...

    Bei einzeiligen widgets sollte man noWrap="1" einsetzen um diese Textdarstellung zu nutzen.



    - ChoiceList: use TYPE_FILL_ALPHABLEND to replace the "--" as divider

    add dividerHeight and dividerWidth to skin component

    add "fadeDivider=0|1" to the skin component for "fade out control"

    drop fillerCount from from skin component, inform about it's obsoletion


    Info:

    Diese 3 neuen Skineinträge ersetzen den bisherigen fillerCount ----

    dividerHeight="3" höhe der Line

    dividerWidth="900" breite der Line

    fadeDivider="0" 0=line 1= fade Line



    - As a skinner you can define defaults in the <listboxcontent> section using a radius or dia value like shown in the example below (_radius and _dia work for both scenarios, the last one defined would always win)

    Add selection radius handling to listboxes.


    <listboxcontent>

    ..

    <value name="string_item_selection_radius" value="25" />

    <value name="config_item_selection_dia" value="50"/>

    ..

    </listboxcontent>


    <screen ...>

    <widget name="SomeListboxWidget" ... selectionRadius="25">...

    <widget name="SomeOtherListboxWidget" ... selectionDia="50">...</widget>


    Mit diesen neuen selectionRadius/selectionDia Einträgen können an einem Cursor Rundungen gezeichnet werden diese selection Einträge kann man global setzen aber auch in den List,config widgets extra.


    - Mit cornerDia können jetzt auch Rundungen bei Bildern angegeben werden ,sei es Picon ,Cover usw.

    Überall wo man die Rundungen angeben kann geht auch cornerDia="40,left" oder selectionDia="70,left" ,es geht auch right ,top oder bottom einzusetzen um nur an einer der 4 Seiten Rundungen zeichnen zu lassen.


    - Bei Einsatz von transparent="1" muss man keine backgroundColor mehr zusätzlich setzen damit die Schrift nicht ausfranst ,die Schrift wird jetzt über OpenGL ES gerendert und ist somit an den Kanten feiner .


    - Converter.ServiceInfo: add IsStream

    Der Converter Serviceinfo hat neue Funktionen bekommen ,neue skinbare Service Angaben, diese auch anzeigbar über Multifunktion und eine Möglichkeit für ein und ausblenden eines Streamicon


    - EPGList: add progressHeight as skinComponent

    Die skinComponent type="EPGList" wurde um einen neuen Eintrag erweitert ,mit diesem Eintrag kann man nun die Höhe des Progress im name="EPGSelectionMulti" beeinflussen und ihn so auch schmaler gestalten.


    - EventName: add extended functionality by Sven H.

    Der Eventname Converter hat viele neue Anzeigemöglichkeiten hinzubekommen


    - add beginOnly=yes to EventList converter

    Der EventList converter hat einen zusätzlichen Eintrag bekommen falls man nur die Anfangszeit anzeigen lassen möchte


    - SerienFilm: upgrade to templates

    Das Plugin Serienfilm ist ab sofort skinbar über eine eigene component type="SfMovieList" somit kann man das Plugin auch passend zur Skinauflösung skinnen.


    - fstabEditor: add skin components

    Das Plugin fstabEditor hat skinbare componets bekommen um es besser an die Skinauflösung anzupassen.

    Edited 4 times, last by zombi ().

  • zombi

    Changed the title of the thread from “Infos für Skinner zu dem kommenden Neuerungen des aio (All IN ONE) Image für die Amlogic Dreamboxen” to “Infos für Skinner zu den kommenden Neuerungen des aio (All IN ONE) Image für die Amlogic Dreamboxen”.
  • Auch neu im ServiceInfo Converter

    Dre und ich haben im ServiceInfo Converter folgende Skin Optionen hinzugefügt:

    Das Ziel war den ServiceName2 Converter zu ersetzen. Dieser sollte nicht mehr verwendet werden.


    Beispiel für eine kombinierte Zeile:

    Code
    <widget backgroundColor="bg2" font="Regular; 30" halign="left" noWrap="1" position="1360,820" render="Label" size="520,40" source="session.CurrentService" transparent="1" valign="center" foregroundColor="darkevent">
      <convert type="ServiceInfo">Multi,%FR %PS %SR %F %M</convert>
    </widget>

    oder für einzelne Einträge:

    Code
    <widget backgroundColor="bg2" font="Regular; 30" halign="left" noWrap="1" position="1175,820" render="Label" size="180,40" source="session.CurrentService" transparent="1" valign="center" foregroundColor="orange">
      <convert type="ServiceInfo">TpData,orbital_position</convert>
    </widget>

    Danke dre

  • Soll jetzt jeder den Source-Code selbst studieren, um zu wissen, was du da modifiziert hast ?

    Erkläre es mit widget-Code und Screenshots, so dass jeder sofort sieht, was du da modifiziert hast und wozu.


    Sonst wirst du vermutlich nicht viele Rückmeldungen bekommen.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One + Two mit DP AIO - OE2.6

  • Everything is explained in the code for developers and is currently being tested.

    Once testing is complete and everything is working properly, I'll add a clear explanation with screenshots for users.

  • @Andro1


    I'm not a developer, but I tested the modified code for a change!

    - Channels with out‑of‑sequence EPG timings didn’t show up in the upcoming events list before, after the modification, they now show up correctly.

    - Also, the duration was shown only in minutes, now it's shown in both hours and minutes.


    Well done!

  • Here's my feedback:

    Code
    srvRef = eServiceReference(ref.toString())

    No added value compared to Dr.Best's implementation.

    Code
            epgcache = self.epgcache
            getEvent = self.getEventTuple

    You just assign a function/instance to a variable with no added value.


    Code
            max_offset = self.max_search_offset  # Step size for searching
            max_limit = self.max_search_limit    # Maximum total search range

    No added value to assign to variable known to this function only.


    Code
    while len(contentList) < self.eventcount and total_offset < max_limit:

    Just a simple example: Skinner sets event count to 10 and maxSearchOffset to 1 hour. You have 2 events within the timespan.


    len(contentlist) will never reach 10 and you'll loop forever. As you have two limits introduced (quantity and time), you have to be more careful.


    Either you have to ensure that only one of the two can be provided or you must cover the cases properly.


    Code
                        next_event = epgcache.lookupEventTime(srvRef, next_time + offset)
                        if next_event:
                            found_event = next_event
                            break

    why do you assign next_event to found_event? you can work with next_event the whole time.


    And last one: I'm not a fan of try/except. There are cases where it makes sense but here I don't see why it should be required.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • After testing the codes EventList Converter and EventList Converter_2, I reused srvRef as follows:

    • Reusing "srvRef" improves memory usage and speed for intensive lookups

      By creating the service reference a single time and reusing it, you minimize per-iteration memory allocations and benefit from better cache locality, leading to faster, more memory-efficient EPG searches.

  • Final Changes:

    • Improved Performance: Enhanced event searching using Coarse and Fine steps to reduce delays and boost performance.

    • Prevented Duplicates: Tracked event IDs to ensure no duplicates occur.

    • Avoided Infinite Loops: Added a break to stop the loop when no further events are detected.
    • Added Clear Comments: Included code comments to explain the logic and highlight the changes made.

  • Changes Added to Version 5 (Compared to Version 4)

    1. Addition of no_event_counter Variable:
      • The variable no_event_counter was added to track the number of consecutive failed attempts to find an event.
      • Purpose: To monitor how many times the search fails to find an event within the specified time range.
    2. Addition of max_no_event_attempts Variable:
      • The variable max_no_event_attempts (default value: 10) was added to set the maximum number of failed attempts before stopping the search.
      • Purpose: To prevent infinite searching in cases of large gaps in the event schedule.
    3. Modified Behavior When No Event Is Found:
      • In version 4, the search stopped immediately upon failure using a break statement.
      • In version 5, the behavior is enhanced:
        • total_offset is increased by self.max_search_offset (default: 4 hours) to advance to the next time period.
        • no_event_counter is incremented by one.
        • If no_event_counter reaches max_no_event_attempts, the loop exits using break.
    4. Resetting no_event_counter:
      • When an event is found, no_event_counter is reset to zero.
      • Purpose: To ensure that previous failed attempts do not affect subsequent searches, enabling fresh attempts.
    5. Improved Handling of Event Schedule Gaps:
      • These changes enhance the effectiveness of the event search logic, particularly for channels with periods of no events (e.g., downtime or gaps).
      • The search now spans multiple time periods (up to 10 attempts by default) instead of stopping at the first failure, improving performance for sparse event schedules.
  • No


    Edited 2 times, last by zombi ().