X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=share%2Fhttp%2Fjs%2Ffunctions.js;h=fcd6c7a1677b9b7879ef6964be5802b9277c4dbe;hb=be017fb2905530b0895b7158464b3f45a0d29356;hp=1eccd0e4f39a2d986c667f4b164efdb619ef0507;hpb=f612f30ee8d157ee5b082ec579eac8041f4c5d00;p=vlc diff --git a/share/http/js/functions.js b/share/http/js/functions.js index 1eccd0e4f3..fcd6c7a167 100644 --- a/share/http/js/functions.js +++ b/share/http/js/functions.js @@ -27,6 +27,7 @@ var old_time = 0; var pl_cur_id; +var albumart_id = -1; /********************************************************************** * Slider functions @@ -130,12 +131,16 @@ function set_css( item, element, value ) { for( var j = 0; j < document.styleSheets.length; j++ ) { - cssRules = document.styleSheets[j].cssRules; + var cssRules = document.styleSheets[j].cssRules; + if( !cssRules ) cssRules = document.styleSheets[j].rules; for( var i = 0; i < cssRules.length; i++) { if( cssRules[i].selectorText == item ) { - cssRules[i].style.setProperty( element, value, null ); + if( cssRules[i].style.setProperty ) + cssRules[i].style.setProperty( element, value, null ); + else + cssRules[i].style.setAttribute( toCamelCase( element ), value ); return; } } @@ -147,12 +152,16 @@ function get_css( item, element ) { for( var j = 0; j < document.styleSheets.length; j++ ) { - cssRules = document.styleSheets[j].cssRules; + var cssRules = document.styleSheets[j].cssRules; + if( !cssRules ) cssRules = document.styleSheets[j].rules; for( var i = 0; i < cssRules.length; i++) { if( cssRules[i].selectorText == item ) { - return cssRules[i].style.getPropertyValue( element ); + if( cssRules[i].style.getPropertyValue ) + return cssRules[i].style.getPropertyValue( element ); + else + return cssRules[i].style.getAttribute( toCamelCase( element ) ); } } } @@ -189,6 +198,7 @@ function toggle_show_node( id ) } function show( id ){ document.getElementById( id ).style.display = 'block'; } +function showinline( id ){ document.getElementById( id ).style.display = 'inline'; } function hide( id ){ document.getElementById( id ).style.display = 'none'; } @@ -196,6 +206,12 @@ function checked( id ){ return document.getElementById( id ).checked; } function value( id ){ return document.getElementById( id ).value; } +function setclass( obj, value ) +{ + obj.setAttribute( 'class', value ); /* Firefox */ + obj.setAttribute( 'className', value ); /* IE */ +} + function radio_value( name ) { var radio = document.getElementsByName( name ); @@ -211,7 +227,7 @@ function radio_value( name ) function check_and_replace_int( id, val ) { - var objRegExp = /^\d\d*$/; + var objRegExp = /^\d+$/; if( value( id ) != '' && ( !objRegExp.test( value( id ) ) || parseInt( value( id ) ) < 1 ) ) @@ -220,7 +236,16 @@ function check_and_replace_int( id, val ) } function addslashes( str ){ return str.replace(/\'/g, '\\\''); } -function escapebackslashes( str ){ return str.replace(/\\[^']/g, '\\\\'); } +function escapebackslashes( str ){ return str.replace(/\\/g, '\\\\'); } + +function toCamelCase( str ) +{ + str = str.split( '-' ); + var cml = str[0]; + for( var i=1; i 0 ? randomtag[0].firstChild.data == "1" : 0) + setclass( document.getElementById( 'btn_shuffle'), 'on' ); else - document.getElementById( 'btn_shuffle').setAttribute( 'class', 'off' ); - if( status.getElementsByTagName( 'loop' )[0].firstChild.data == "1" ) - document.getElementById( 'btn_loop').setAttribute( 'class', 'on' ); + setclass( document.getElementById( 'btn_shuffle'), 'off' ); + + var looptag = status.getElementsByTagName( 'loop' ); + if( looptag.length > 0 ? looptag[0].firstChild.data == "1" : 0) + setclass( document.getElementById( 'btn_loop'), 'on' ); else - document.getElementById( 'btn_loop').setAttribute( 'class', 'off' ); - if( status.getElementsByTagName( 'repeat' )[0].firstChild.data == "1" ) - document.getElementById( 'btn_repeat').setAttribute( 'class', 'on' ); + setclass( document.getElementById( 'btn_loop'), 'off' ); + + var repeattag = status.getElementsByTagName( 'repeat' ); + if( repeattag.length > 0 ? repeattag[0].firstChild.data == "1" : 0 ) + setclass( document.getElementById( 'btn_repeat'), 'on' ); else - document.getElementById( 'btn_repeat').setAttribute( 'class', 'off' ); + setclass( document.getElementById( 'btn_repeat'), 'off' ); var tree = document.createElement( "ul" ); var categories = status.getElementsByTagName( 'category' ); @@ -535,7 +574,7 @@ function parse_playlist() } var nd = document.createElement( "div" ); - nd.setAttribute( 'class', 'pl_node' ); + setclass( nd, 'pl_node' ); nd.setAttribute( 'id', 'pl_'+elt.getAttribute( 'id' ) ); pos.appendChild( nd ); } @@ -544,12 +583,12 @@ function parse_playlist() if( pos.hasChildNodes() ) pos.appendChild( document.createElement( "br" ) ); var pl = document.createElement( "a" ); - pl.setAttribute( 'class', 'pl_leaf' ); + setclass( pl, 'pl_leaf' ); pl.setAttribute( 'href', 'javascript:pl_play('+elt.getAttribute( 'id' )+');' ); pl.setAttribute( 'id', 'pl_'+elt.getAttribute( 'id' ) ); if( elt.getAttribute( 'current' ) == 'current' ) { - pl.setAttribute( 'style', 'font-weight: bold;' ); + pl.style.fontWeight = 'bold'; var nowplaying = document.getElementById( 'nowplaying' ); clear_children( nowplaying ); nowplaying.appendChild( document.createTextNode( elt.getAttribute( 'name' ) ) ); @@ -591,6 +630,7 @@ function parse_playlist() { elt = elt.parentNode; if( ! elt.parentNode ) break; + pos = pos.parentNode; } if( ! elt.parentNode ) break; elt = elt.parentNode.nextSibling; @@ -624,14 +664,14 @@ function parse_browse_dir( ) if( elt.nodeName == "element" ) { var item = document.createElement( "a" ); - item.setAttribute( 'class', 'browser' ); + setclass( item, 'browser' ); if( elt.getAttribute( 'type' ) == 'directory' ) { - item.setAttribute( 'href', 'javascript:browse_dir(\''+escapebackslashes(addslashes(elt.getAttribute( 'path' )))+'\');'); + item.setAttribute( 'href', 'javascript:browse_dir(\''+addslashes(escapebackslashes(elt.getAttribute( 'path' )))+'\');'); } else { - item.setAttribute( 'href', 'javascript:browse_path(\''+escapebackslashes(addslashes(elt.getAttribute( 'path' )))+'\');' ); + item.setAttribute( 'href', 'javascript:browse_path(\''+addslashes(escapebackslashes(elt.getAttribute( 'path' )))+'\');' ); } item.appendChild( document.createTextNode( elt.getAttribute( 'name' ) ) ); pos.appendChild( item ); @@ -639,8 +679,8 @@ function parse_browse_dir( ) { pos.appendChild( document.createTextNode( ' ' ) ); var item = document.createElement( "a" ); - item.setAttribute( 'class', 'browser' ); - item.setAttribute( 'href', 'javascript:browse_path(\''+escapebackslashes(addslashes(elt.getAttribute( 'path' )))+'\');'); + setclass( item, 'browser' ); + item.setAttribute( 'href', 'javascript:browse_path(\''+addslashes(escapebackslashes(elt.getAttribute( 'path' )))+'\');'); item.appendChild( document.createTextNode( '(select)' ) ); pos.appendChild( item ); } @@ -666,6 +706,7 @@ function hide_input( ) document.getElementById( 'input_file' ).style.display = 'none'; document.getElementById( 'input_disc' ).style.display = 'none'; document.getElementById( 'input_network' ).style.display = 'none'; + document.getElementById( 'input_fake' ).style.display = 'none'; } /* update the input MRL using data from the input file helper */ @@ -775,6 +816,22 @@ function update_input_net() mrl.value += " :access-filter=timeshift"; } +/* update the input MRL using data from the input fake helper */ +function update_input_fake() +{ + var mrl = document.getElementById( 'input_mrl' ); + + mrl.value = "fake://"; + mrl.value += " :fake-file=" + value( "input_fake_filename" ); + + if( value( "input_fake_width" ) ) + mrl.value += " :fake-width=" + value( "input_fake_width" ); + if( value( "input_fake_height" ) ) + mrl.value += " :fake-height=" + value( "input_fake_height" ); + if( value( "input_fake_ar" ) ) + mrl.value += " :fake-ar=" + value( "input_fake_ar" ); +} + /********************************************************************** * Sout dialog functions *********************************************************************/ @@ -849,7 +906,7 @@ function update_sout() mrl.value += "scodec="+value( 'sout_scodec' ); alot = true; } - mrl.value += value( 'sout_extra' ); + mrl.value += value( 'sout_transcode_extra' ); mrl.value += "}"; } @@ -976,7 +1033,7 @@ function browse( dest ) function browse_dir( dir ) { document.getElementById( 'browse_lastdir' ).value = dir; - loadXMLDoc( 'requests/browse.xml?dir='+escape(dir), parse_browse_dir ); + loadXMLDoc( 'requests/browse.xml?dir='+encodeURIComponent(dir), parse_browse_dir ); } function browse_path( p ) { @@ -984,7 +1041,16 @@ function browse_path( p ) hide( 'browse' ); document.getElementById( value( 'browse_dest' ) ).focus(); } - +function refresh_albumart( force ) +{ + if( albumart_id != pl_cur_id || force ) + { + var now = new Date(); + var albumart = document.getElementById( 'albumart' ); + albumart.src = '/art?timestamp=' + now.getTime(); + albumart_id = pl_cur_id; + } +} /********************************************************************** * Periodically update stuff in the interface *********************************************************************/ @@ -998,9 +1064,15 @@ function loop_refresh_playlist() /* setTimeout( 'loop_refresh_playlist()', 10000 ); */ update_playlist(); } +function loop_refresh_albumart() +{ + setTimeout( 'loop_refresh_albumart()', 1000 ); + refresh_albumart( false ); +} function loop_refresh() { setTimeout( 'loop_refresh_status()', 1 ); setTimeout( 'loop_refresh_playlist()', 1 ); + setTimeout( 'loop_refresh_albumart()', 1 ); }