Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Hallo
hat jemand das squeezebox-Widget schon überarbeitet und würde es zur Verfügung stellen, ich habe noch eine Version in der die ausgelaufenen widget drin sind wir basic.dual, basic.button,basic.value
falls es jemand brauchen kann
Meine
widget_squeezebox.html
Code:
/**
* -----------------------------------------------------------------------------
* @package smartVISU
* @author Martin Gleiß
* @copyright 2012
* @license GPL <http://www.gnu.de>
* -----------------------------------------------------------------------------
*/
/**
* Squeezebox Multimedia Player
*
* @param unique id for this widget
* @param the gad/item for play
* @param the gad/item for pause
* @param the gad/item for stop (optional)
* @param the gad/item for playlist forward
* @param the gad/item for playlist backward
* @param the gad/item for the volume (optional)
* @param the gad/item to mute the music (optional)
* @param the gad/item for the song title (optional)
* @param the gad/item for the song artist (optional)
* @param the gad/item for repeat (optional)
* @param the gad/item to load the default playlist (optional)
* @param the gad/item for the duration (optional)
* @param the gad/item for the time/position (optional)
*
* @author Robert Budde
* derived from "multimedia" by Axel Otterstätter - thanks!
*/
{% macro control(id, gad_power, gad_play, gad_pause, gad_stop, gad_playlistforward, gad_playlistbackward, gad_vol, gad_mute,
gad_title, gad_artist, gad_repeat, gad_defaultplaylist, gad_duration, gad_time) %}
{% import "basic.html" as basic %}
{% import "widget_my.html" as my %}
{% set uid = uid(page, id) %}
<div id="{{ uid }}" class="music">
{% if gad_vol %}
<div class="vol">
<img class="slider-bottomup-scale" src="pages/base/pics/scale_buttomup.png">
{{ basic.slider(id~'vol', gad_vol, 0, 100, 5, 'bottomup') }}
</div>
{% endif %}
<div class="control">
{% if gad_power %} {{ basic.stateswitch('', gad_power, '', '','control_standby.svg') }} {% endif %}
{% if gad_mute %} {{ basic.stateswitch('', gad_mute, '',[0,1],'audio_volume_mute.svg') }} {% endif %}
{% if gad_repeat %} {{ basic.stateswitch('', gad_repeat, '', '', 'audio_repeat.svg') }} {% endif %}
{% if gad_defaultplaylist %} {{ basic.stateswitch('', gad_defaultplaylist, '', 1, 'audio_playlist.svg', 'Default Playlist') }} {% endif %}
</div>
<div class="title">
{% if gad_artist %}
{{ basic.print('', gad_artist) }}
<br />
{% endif %}
{% if gad_title %}
{{ basic.print('', gad_title) }}
{% endif %}
</div>
<div class="set">
{% if gad_duration %}
{% if gad_time %}
<div class="pos">
<div class="scale"> </div>
{{ my.time_slider(id~'time', gad_time, gad_duration, 1) }}
</div>
{% endif %}
{% endif %}
<div data-role="controlgroup" data-type="horizontal">
{{ basic.stateswitch('', gad_playlistbackward,'', 1 , 'control_arrow_left.svg','backward') }}
{{ basic.stateswitch('', gad_play, '', [1,1], 'audio_play.svg') }}
{{ basic.stateswitch('', gad_pause, '', '', 'audio_pause.svg') }}
{% if gad_stop %} {{ basic.stateswitch('', gad_stop, '', [1,1],'audio_stop.svg') }} {% endif %}
{{ basic.stateswitch('', gad_playlistforward, '', 1, 'control_arrow_right.svg', 'forward') }}
</div>
</div>
</div>
{% endmacro %}
und die dazugehörige
widget_my.html (unverändert)
Code:
/**
* A list with selectable item
*
* @param unique id for this widget
* @param a gad/item for the list
* @param a gad/item for the selected item
* @param the text to be displayed on top of the list
*/
{% macro list(id, gad_list, gad_item, txt ) %}
<ul id="{{ uid(page, id) }}" data-widget="basic.list" data-item="{{ gad_list }}, {{ gad_item }}"
data-role="listview" data-dividertheme="c">
<li data-icon="false"><a href="#">View details</a></li>
<li data-icon="false"><a href="#">Edit</a></li>
<li data-icon="false"><a href="#">Disable</a></li>
<li data-icon="false"><a href="#">Delete</a></li>
</ul>
{% endmacro %}
/**
* Displays a slider-control
*
* @param unique id for this widget
* @param a gad/item current time (progress)
* @param a gad/item total duration (maximum)
* @param seconds between two values (optional, default 5s)
* @param the orientation ('none', 'vertical', 'bottomup', 'semicircle')
*/
{% macro time_slider(id, gad_time, gad_duration, step, mode) %}
<input id="{{ uid(page, id) }}" data-widget="my.time_slider" data-item="{{ gad_time }}, {{ gad_duration }}"
type="range" value="0" min="0" max="1" disabled="1" step="{{ step|default(5) }}"
orientation="{{ mode }}" data-highlight="true" />
{% endmacro %}
Hi element
in den widgets my.list und my.time_slider werden javascript-Funktionen (basic.list und my.time_slider) aufgerufen. Wo ist dieser Code zu finden?
Kann der Timeslider auch durch das multimedia.timeslider ersetzt werden? Der benötigt allerdings ein item mehr, nämlich für die Info, ob der Titel gerade gespielt wird:
Code:
/**
* Displays a slider to show and control the current time of a media file. Slider continues to run every second even if time value is not updated by item
*
* @param {id=} unique id for this widget
* @param {item(num)} an item providing the current time of a media file
* @param {item(bool)} an item providing info whether song is playing or not (value has to be true or false)
* @param {item(num)} an item providing the duration of the same media file
* @param {value=5} step in % between updates (optional, default 5)
* @param {text(input,handle,both,none)=input} how should the value be shown; possible options: 'input', 'handle', 'both', 'none' (optional, default 'input')
*/
{% macro timeslider(id, time, play, duration, step, value_display) %}
<input {% if not id is empty %} id="{{ uid(page, id) }}"{% endif %} data-widget="multimedia.timeslider" data-item="{{ time }}, {{ duration }}, {{ play }}"
type="range" value="0" min="0" max="1" disabled="1" step="{{ step|default(5) }}" timer="{{ step|default(5) }}"
orientation="horizontal" handleinfo="{{ value_display == 'handle' or value_display == 'both' }}" class="{{ value_display|default('input') == 'input' or value_display == 'both' ? '' : 'ui-slider-no-input' }}" data-highlight="true" />
{% endmacro %}
Wenn alles vollständig ist und ich die docstrings so ergänzt habe, dass der Templatechecker mit den Widgets klar kommt, dann veröffentliche ich das gerne als Package.
Gruß
Wolfram
P.S.: Du könntest auch einfach mal probieren, ob es reicht, statt der widget_my.html die multimedia.html zu importieren
funktioniert perfekt,
vorher hat der slider nichts angezeigt (glaube ich), ich hatte den nie genutzt, höre fast nur Internetradio über die squeezebox, habe eine playlist, in der ich vor und zurückspringen kann und einen Taster belegt zum Einschalten und Senderwahl.
Habe zum Testen auch einzelne Lieder ausprobiert, wird korrekt angezeigt und im Stück springen klappt auch.
Die widget_my.html ist überflüssig.
Ich glaube der Richtigkeit halber gehört in den Anfang noch
"* @param the gad/item for power" an die zweite Stelle.
Und die ganzen ID's die ich rausgenommen habe, der template checker meckert bei den widgets immer das die bereits vergeben sich.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen und die Websiteaktivitäten zu analysieren. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar