]> git.sesse.net Git - vlc/commitdiff
HTTP UI - Updates
authorBrandon Brooks <bwbrooks@archmageinc.com>
Thu, 30 Jun 2011 14:01:50 +0000 (10:01 -0400)
committerJean-Baptiste Kempf <jb@videolan.org>
Thu, 30 Jun 2011 21:04:35 +0000 (23:04 +0200)
This patch contains various updates to the new HTTP UI

Mobile views have only been tested on Android.

Update - Added EQ functionality
Update - Corrected rounding mistakes and EQ units
Update - Added Mobile EQ
Update - Added Mobile Flash View
Update - Minor Display Adjustments
Update - Revert Playlist.xml for backward compatability
Update - Added playlist_jstree.xml for UI usability
Update - Added Batch VLM Command interface
Update - Added VLM command error reporting
Update - Added functionality for future EQ merge into status.xml
Update - Modified Makefile.am to include new files
Update - Corrected main EQ button
Update - Modified author comments

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
24 files changed:
share/Makefile.am
share/lua/http/css/main.css
share/lua/http/dialogs/batch_window.html [new file with mode: 0644]
share/lua/http/dialogs/browse_window.html
share/lua/http/dialogs/create_stream.html
share/lua/http/dialogs/equalizer_window.html [new file with mode: 0755]
share/lua/http/dialogs/error_window.html [new file with mode: 0644]
share/lua/http/dialogs/mosaic_window.html
share/lua/http/dialogs/offset_window.html
share/lua/http/dialogs/stream_config_window.html [new file with mode: 0644]
share/lua/http/dialogs/stream_window.html
share/lua/http/images/button-equalizer-48.png [new file with mode: 0644]
share/lua/http/images/vlc-48.png [new file with mode: 0644]
share/lua/http/index.html
share/lua/http/js/common.js
share/lua/http/js/controlers.js
share/lua/http/js/ui.js [new file with mode: 0644]
share/lua/http/mobile.html [new file with mode: 0644]
share/lua/http/mobile_browse.html [new file with mode: 0644]
share/lua/http/mobile_equalizer.html [new file with mode: 0644]
share/lua/http/mobile_view.html [new file with mode: 0644]
share/lua/http/requests/playlist.xml
share/lua/http/requests/playlist_jstree.xml [new file with mode: 0644]
share/lua/http/view.html

index bd8d7c0e0c1d1891f4f7ab569f741b1b3c16f3e0..af3fcf87fcc2e57c8e20ba08487e532a654e5176 100644 (file)
@@ -248,118 +248,122 @@ EXTRA_DIST += \
        lua/sd/metachannels.lua
 
 DIST_http_lua = \
-       lua/http/.hosts \
-       lua/http/css/main.css \
-       lua/http/css/ui-lightness/jquery-ui-1.8.13.custom.css \
-       lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png \
-       lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png \
-       lua/http/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png \
-       lua/http/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png \
-       lua/http/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png \
-       lua/http/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png \
-       lua/http/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png \
-       lua/http/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png \
-       lua/http/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png \
-       lua/http/css/ui-lightness/images/ui-icons_222222_256x240.png \
-       lua/http/css/ui-lightness/images/ui-icons_228ef1_256x240.png \
-       lua/http/css/ui-lightness/images/ui-icons_ef8c08_256x240.png \
-       lua/http/css/ui-lightness/images/ui-icons_ffd27a_256x240.png \
-       lua/http/css/ui-lightness/images/ui-icons_ffffff_256x240.png \
-       lua/http/custom.lua \
-       lua/http/dialogs/.hosts \
-       lua/http/dialogs/browse \
-       lua/http/dialogs/browse_window.html \
+       lua/http/view.html \
+       lua/http/mobile.html \
        lua/http/dialogs/create_stream.html \
-       lua/http/dialogs/footer \
-       lua/http/dialogs/input \
-       lua/http/dialogs/main \
-       lua/http/dialogs/mosaic \
+       lua/http/dialogs/equalizer_window.html \
        lua/http/dialogs/mosaic_window.html \
-       lua/http/dialogs/offset_window.html \
-       lua/http/dialogs/playlist \
-       lua/http/dialogs/sout \
+       lua/http/dialogs/batch_window.html \
+       lua/http/dialogs/error_window.html \
+       lua/http/dialogs/browse_window.html \
+       lua/http/dialogs/.hosts \
        lua/http/dialogs/stream_window.html \
-       lua/http/dialogs/vlm \
-       lua/http/favicon.ico \
+       lua/http/dialogs/offset_window.html \
+       lua/http/dialogs/stream_config_window.html \
+       lua/http/custom.lua \
        lua/http/flash.html \
-       lua/http/images/Audio-48.png \
-       lua/http/images/Back-48.png \
-       lua/http/images/button_eject-48.png \
-       lua/http/images/button_ffw-48.png \
-       lua/http/images/button_first-48.png \
-       lua/http/images/button_full-48.png \
-       lua/http/images/button_help-48.png \
-       lua/http/images/button_last-48.png \
+       lua/http/vlm.html \
+       lua/http/images/loop.png \
        lua/http/images/button_pause-48.png \
-       lua/http/images/button_play-48.png \
-       lua/http/images/button_rec-48.png \
-       lua/http/images/button_repeat-48.png \
-       lua/http/images/button_rew-48.png \
-       lua/http/images/button_stop-48.png \
-       lua/http/images/button_stream-48.png \
-       lua/http/images/delete.png \
-       lua/http/images/delete_small.png \
-       lua/http/images/eject.png \
-       lua/http/images/empty.png \
-       lua/http/images/Folder-48.png \
+       lua/http/images/speaker-32.png \
        lua/http/images/fullscreen.png \
-       lua/http/images/help.png \
-       lua/http/images/info.png \
-       lua/http/images/loop.png \
+       lua/http/images/vlc-48.png \
+       lua/http/images/prev.png \
+       lua/http/images/play.png \
+       lua/http/images/Audio-48.png \
+       lua/http/images/empty.png \
        lua/http/images/minus.png \
-       lua/http/images/next.png \
-       lua/http/images/Other-48.png \
+       lua/http/images/slider_right.png \
+       lua/http/images/slider_point.png \
        lua/http/images/pause.png \
-       lua/http/images/play.png \
-       lua/http/images/playlist.png \
-       lua/http/images/playlist_small.png \
-       lua/http/images/plus.png \
-       lua/http/images/prev.png \
+       lua/http/images/speaker_mute.png \
+       lua/http/images/delete_small.png \
+       lua/http/images/snapshot.png \
+       lua/http/images/Folder-48.png \
+       lua/http/images/info.png \
        lua/http/images/refresh.png \
-       lua/http/images/repeat.png \
-       lua/http/images/reset.png \
-       lua/http/images/sd.png \
+       lua/http/images/sout.png \
+       lua/http/images/button_stop-48.png \
+       lua/http/images/button_help-48.png \
+       lua/http/images/button-equalizer-48.png \
+       lua/http/images/button_ffw-48.png \
+       lua/http/images/sort.png \
+       lua/http/images/button_play-48.png \
+       lua/http/images/white_cross_small.png \
+       lua/http/images/button_full-48.png \
        lua/http/images/shuffle.png \
-       lua/http/images/slider_bar.png \
-       lua/http/images/slider_left.png \
-       lua/http/images/slider_point.png \
-       lua/http/images/slider_right.png \
-       lua/http/images/snapshot.png \
+       lua/http/images/Other-48.png \
+       lua/http/images/button_repeat-48.png \
+       lua/http/images/repeat.png \
        lua/http/images/slow.png \
-       lua/http/images/sort.png \
-       lua/http/images/sout.png \
-       lua/http/images/speaker-32.png \
-       lua/http/images/speaker.png \
-       lua/http/images/speaker_mute.png \
+       lua/http/images/slider_left.png \
+       lua/http/images/help.png \
        lua/http/images/stop.png \
+       lua/http/images/sd.png \
+       lua/http/images/speaker.png \
+       lua/http/images/button_first-48.png \
+       lua/http/images/button_stream-48.png \
+       lua/http/images/button_rew-48.png \
+       lua/http/images/button_rec-48.png \
+       lua/http/images/delete.png \
+       lua/http/images/Back-48.png \
+       lua/http/images/button_eject-48.png \
        lua/http/images/Video-48.png \
-       lua/http/images/vlc16x16.png \
-       lua/http/images/volume_down.png \
+       lua/http/images/playlist_small.png \
+       lua/http/images/eject.png \
+       lua/http/images/playlist.png \
        lua/http/images/volume_up.png \
+       lua/http/images/next.png \
+       lua/http/images/button_last-48.png \
+       lua/http/images/volume_down.png \
+       lua/http/images/slider_bar.png \
+       lua/http/images/vlc16x16.png \
+       lua/http/images/plus.png \
        lua/http/images/white.png \
-       lua/http/images/white_cross_small.png \
-       lua/http/index.html \
-       lua/http/js/common.js \
-       lua/http/js/controlers.js \
-       lua/http/js/functions.js \
-       lua/http/js/jquery-1.5.1.min.js \
-       lua/http/js/jquery.jstree.js \
-       lua/http/js/jquery-ui-1.8.13.custom.min.js \
-       lua/http/js/mosaic.js \
-       lua/http/js/vlm.js \
+       lua/http/images/reset.png \
+       lua/http/mobile_equalizer.html \
+       lua/http/vlm_export.html \
+       lua/http/mobile_browse.html \
        lua/http/mosaic.html \
-       lua/http/requests/browse.xml \
-       lua/http/requests/equalizer.xml \
+       lua/http/favicon.ico \
+       lua/http/mobile_view.html \
+       lua/http/.hosts \
        lua/http/requests/playlist.xml \
+       lua/http/requests/README.txt \
+       lua/http/requests/playlist_jstree.xml \
+       lua/http/requests/equalizer.xml \
+       lua/http/requests/browse.xml \
+       lua/http/requests/vlm_cmd.xml \
        lua/http/requests/status.xml \
        lua/http/requests/vlm.xml \
-       lua/http/requests/vlm_cmd.xml \
-       lua/http/requests/README.txt \
-       lua/http/style.css \
+       lua/http/index.html \
+       lua/http/css/ui-lightness/jquery-ui-1.8.13.custom.css \
+       lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png \
+       lua/http/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png \
+       lua/http/css/ui-lightness/images/ui-icons_ffffff_256x240.png \
+       lua/http/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png \
+       lua/http/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png \
+       lua/http/css/ui-lightness/images/ui-icons_222222_256x240.png \
+       lua/http/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png \
+       lua/http/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png \
+       lua/http/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png \
+       lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png \
+       lua/http/css/ui-lightness/images/ui-icons_ffd27a_256x240.png \
+       lua/http/css/ui-lightness/images/ui-icons_228ef1_256x240.png \
+       lua/http/css/ui-lightness/images/ui-icons_ef8c08_256x240.png \
+       lua/http/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png \
+       lua/http/css/main.css \
        lua/http/iehacks.css \
-       lua/http/view.html \
-       lua/http/vlm.html \
-       lua/http/vlm_export.html
+       lua/http/js/jquery-1.5.1.min.js \
+       lua/http/js/functions.js \
+       lua/http/js/vlm.js \
+       lua/http/js/ui.js \
+       lua/http/js/common.js \
+       lua/http/js/jquery.jstree.js \
+       lua/http/js/controlers.js \
+       lua/http/js/jquery-ui-1.8.13.custom.min.js \
+       lua/http/js/mosaic.js \
+       lua/http/style.css
 
 DIST_maemo = \
        maemo/vlc_intf.rc \
index 57c19d3554784b8800b7f3ee161b11432635074a..9dd2b8324b8004ecc88e0729ae6e9d9b3aa75db7 100644 (file)
@@ -90,6 +90,9 @@ body{
 #buttonSout{
        background-image: url("../images/button_stream-48.png") ;
 }
+#buttonEQ{
+       background-image: url("../images/button-equalizer-48.png") ;
+}
 #window_browse ol{
        list-style-type: none;
 }
@@ -114,6 +117,18 @@ body{
 #window_create_stream table tr td{
        font-size: 11px;
 }
+
+#window_equalizer div div{
+       text-align: center;
+       font-size: 11px;
+       padding: 0px;
+}
+.eqBand{
+       margin-bottom: 10px;
+       margin-top: 10px;
+       height: 400px;
+       font-size: 1.5em;
+}
 .footer{
        text-align: center;
        font-size: 11px;
diff --git a/share/lua/http/dialogs/batch_window.html b/share/lua/http/dialogs/batch_window.html
new file mode 100644 (file)
index 0000000..c6aa396
--- /dev/null
@@ -0,0 +1,29 @@
+<script type="text/javascript">
+       $(function(){
+               $('#window_batch').dialog({
+                       autoOpen: false,
+                       width: 600,
+                       modal: true,
+                       buttons:{
+                               "Send":function(){
+                                       var cmds        =       $('#batchCommand').val().split("\n");
+                                       for(var i=0;i<cmds.length;i++){
+                                               cmds[i] =       cmds[i].replace(/^#.*$/,'\n');
+                                       }
+                                       cmds    =       cmds.join(";").replace(/\n/g,';').replace(/;+/g,';').replace(/^;/,'');
+                                       sendVLMCmd(cmds);
+                                       $(this).dialog('close');
+                               },
+                               "Cancel":function(){
+                                       $(this).dialog('close');
+                               }
+                       }
+               });
+       })
+</script>
+<div id="window_batch" title="VLM Batch Commands">
+<textarea id="batchCommand" cols="50" rows="16">
+#paste your VLM commands here
+#separate commands with a new line or a semi-colon
+</textarea>
+</div>
\ No newline at end of file
index d578a0e296a0200e70aaf0f603f14c2089215e98..38a24a13994094049a2d95c47231d23c856fb653 100644 (file)
@@ -1,20 +1,11 @@
 <script language="javascript" type="text/javascript">
-       var video_types                 =       new Array('avi','mp4','wmv','mov','swf','vob','mkv','mpg');
-       var audio_types                 =       new Array('mp3','wav');
        var browse_target               =       'default';
-       function createElementLi(name,type,dir,ext){
-               var icon        =       type=="dir" && name=='..' ? 'Back-48.png' : (type=='dir' ? "Folder-48.png" : ($.inArray(ext,video_types)!=-1 ? "Video-48.png" : ($.inArray(ext,audio_types)!=-1 ? "Audio-48.png" : "Other-48.png")));
-               var open        =       type=="dir" ? "opendir='"+dir+"'" : (type=="file" ? "openfile='"+dir+"'" : "opendev='"+dir+"'");
-               var str         =       "<li class='system_icon ui-widget-content' "+open+" ><img src='images/"+icon+"' width='48px' height='48px' title='"+name+"' alt='"+name+"' style='border: none;background:none;'/><div style='font-size:10px;border:none;background:none;'>"+name+"</div></li>";
-               return str;
-       }
        $(function(){
                $('#window_browse').dialog({
                        autoOpen: false,
                        width: 600,
                        height: 650,
                        modal: true,
-                       position: ['left','top'],
                        resizable: false,
                        buttons: {
                                "Open":function(){
index 8384161d563bdb562d90d61a1892ad77c7045d68..cc9ddf45268e6d262b16f0d0064a658437141a84 100644 (file)
@@ -37,7 +37,6 @@
                        autoOpen: false,
                        width:800,
                        modal: true,
-                       position: ['left','top'],
                        buttons:{
                                "Create":function(){
                                        var e   =       false;
diff --git a/share/lua/http/dialogs/equalizer_window.html b/share/lua/http/dialogs/equalizer_window.html
new file mode 100755 (executable)
index 0000000..79fbd1c
--- /dev/null
@@ -0,0 +1,52 @@
+<script language="javascript" type="text/javascript">
+       var bands       =       new Array('60Hz','170Hz','310Hz','600Hz','1kHz','3kHz','6kHz','12kHz','14kHz','16kHz');
+       $(function(){
+               $('#window_equalizer').dialog({
+                       autoOpen: false,
+                       height: 650,
+                       width: 500,
+                       resizable: false,
+                       buttons:{
+                               "Reset":function(){
+                                       $('.eqBand').each(function(){
+                                               $(this).slider('value',0);
+                                               sendEQCmd({
+                                                       command:'equalizer',
+                                                       val: 0,
+                                                       band: $(this).attr('id').substr(2)
+                                               })
+                                       });
+
+                               },
+                               "Close":function(){
+                                       $(this).dialog("close");
+                               }
+                       }
+               });
+               $('#preamp').slider({
+                       min: -20,
+                       max: 20,
+                       step: 0.1,
+                       range: "min",
+                       animate: true,
+                       stop: function(event,ui){
+                               $('#preamp_txt').empty().append(ui.value+'dB');
+                               sendEQCmd({
+                                       command:'preamp',
+                                       val: ui.value
+                               })
+                       },
+                       slide: function(event,ui){
+                               $('#preamp_txt').empty().append(ui.value+'dB');
+                       }
+               });
+       });
+</script>
+<div id="window_equalizer" title="Graphical Equalizer">
+       <div style="margin: 5px 5px 5px 5px;">
+               <div>Preamp: <span id="preamp_txt">0dB</span></div>
+       </div>
+       <div style="margin: 5px 5px 10px 5px;">
+               <div id="preamp" style="font-size: 18px;"></div>
+       </div>
+</div>
\ No newline at end of file
diff --git a/share/lua/http/dialogs/error_window.html b/share/lua/http/dialogs/error_window.html
new file mode 100644 (file)
index 0000000..22639ac
--- /dev/null
@@ -0,0 +1,19 @@
+<script type="text/javascript">
+       $(function(){
+               $('#window_error').dialog({
+                       autoOpen: false,
+                       width:400,
+                       modal: true,
+                       buttons:{
+                               "Close":function(){
+                                       $('#error_container').empty();
+                                       $(this).dialog('close');
+                               }
+                       }
+                       });
+       })
+</script>
+<div id="window_error" title="Error!">
+       <div class="ui-state-error"><div class="ui-icon ui-icon-alert"></div></div>
+       <div id="error_container" class="ui-state-error"></div>
+</div>
\ No newline at end of file
index a55c613ad0f79f5e0f200e41e67a7640b5d383fd..c721d7cc0674c9e2a591178f4dbb5731386a3af8 100644 (file)
@@ -7,7 +7,6 @@
                        minWidth: 800,
                        minHeight: 500,
                        modal: true,
-                       position: ['left','top'],
                        buttons: {
                                "Create": function() {
                                        $(this).dialog("close");
index bf6679491b27282b66583ca4b62bd56e7a7d2855..1b5d375d7487c4731b841571a6cbe499bc5a5221 100644 (file)
@@ -3,7 +3,6 @@
                $('#window_offset').dialog({
                        autoOpen: false,
                        minWidth: 400,
-                       position: ['left','top'],
                        buttons:{
                                "Close":function(){
                                        $(this).dialog("close");
diff --git a/share/lua/http/dialogs/stream_config_window.html b/share/lua/http/dialogs/stream_config_window.html
new file mode 100644 (file)
index 0000000..b35f218
--- /dev/null
@@ -0,0 +1,40 @@
+<script type="text/javascript">
+       $(function(){
+               $('#window_stream_config').dialog({
+                       autoOpen: false,
+                       width:400,
+                       modal: true,
+                       buttons:{
+                               "Okay":function(){
+                                       $('#player').empty();
+                                       $('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
+                                       flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
+                                       $(this).dialog('close');
+                               },
+                               "Cancel":function(){
+                                       $(this).dialog('close');
+                               }
+                       }
+               });
+       })
+</script>
+<div id="window_stream_config" title="Stream Input Configuration">
+       <table>
+               <tr>
+                       <td>Protocol</td>
+                       <td><input type="text" name="stream_protocol" id="stream_protocol" value="http" /></td>
+               </tr>
+               <tr>
+                       <td>Host</td>
+                       <td><input type="text" name="stream_host" id="stream_host" value="" /></td>
+               </tr>
+               <tr>
+                       <td>Port</td>
+                       <td><input type="text" name="stream_port" id="stream_port" value="8081" /></td>
+               </tr>
+               <tr>
+                       <td>File</td>
+                       <td><input type="text" name="stream_file" id="stream_file" value="stream.flv" /></td>
+               </tr>
+       </table>
+</div>
\ No newline at end of file
index a9fe277ce5d39a3b4ffd0e968c5ea9dbbb9b024c..288e2f729c440a89395d6237d6e6862ed94af4fd 100644 (file)
@@ -11,7 +11,6 @@
                        autoOpen: false,
                        minWidth: 600,
                        minHeight: 430,
-                       position: ['left','top'],
                        buttons:{
                                "Close":function(){
                                        $(this).dialog("close");
@@ -21,7 +20,6 @@
                $('#window_stream_config').dialog({
                        autoOpen: false,
                        width:400,
-                       position: ['left','top'],
                        modal: true,
                        buttons:{
                                "Okay":function(){
                $('#button_create_mosaic').click(function(){
                        $('#window_mosaic').dialog('open');
                        return false;
+               });
+               $('#button_refresh_streams').click(function(){
+                       updateStreams();
+                       return false;
                })
                $('#stream_host').val(stream_server);
        });
@@ -67,6 +69,7 @@
        <div id="button_create_mosaic" class="button icon ui-widget ui-state-default" title="Create Mosaic" opendialog="window_create_mosaiac"><span class="ui-icon ui-icon-calculator"></span></div>
        <div id="button_clear_streams" class="button icon ui-widget ui-state-default" title="Delete All Streams"><span class="ui-icon ui-icon-trash"></span></div>
        <div id="button_config_streams" class="button icon ui-widget ui-state-default" title="Configure Stream Defaults"><span class="ui-icon ui-icon-wrench"></span></div>
+       <div id="button_refresh_streams" class="button ui-widget ui-state-default ui-corner-all" title="Refresh Streams"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></div>
        <div id="stream_info">
 
        </div>
diff --git a/share/lua/http/images/button-equalizer-48.png b/share/lua/http/images/button-equalizer-48.png
new file mode 100644 (file)
index 0000000..1574cd6
Binary files /dev/null and b/share/lua/http/images/button-equalizer-48.png differ
diff --git a/share/lua/http/images/vlc-48.png b/share/lua/http/images/vlc-48.png
new file mode 100644 (file)
index 0000000..327b538
Binary files /dev/null and b/share/lua/http/images/vlc-48.png differ
index df06a0e10db9c813444d0b3f9cd753d58c328c7a..0629831a6394392a6ca9136cb2a18e5e6b9ef595 100644 (file)
@@ -1,59 +1,52 @@
+<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  index.html: VLC media player web interface - VLM
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  Copyright (C) 2005-2006 the VideoLAN team
+<  $Id$
+<
+<  Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
+<
+<  This program is free software; you can redistribute it and/or modify
+<  it under the terms of the GNU General Public License as published by
+<  the Free Software Foundation; either version 2 of the License, or
+<  (at your option) any later version.
+<
+<  This program is distributed in the hope that it will be useful,
+<  but WITHOUT ANY WARRANTY; without even the implied warranty of
+<  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+<  GNU General Public License for more details.
+<
+<  You should have received a copy of the GNU General Public License
+<  along with this program; if not, write to the Free Software
+<  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
 <html>
-
        <head>
                <title>VLC media player - Web Interface</title>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
+               <script type="text/javascript" src="js/common.js"></script>
+               <script type="text/javascript">
+                       if(isMobile()){
+                               window.location='mobile.html';
+                       }
+               </script>
                <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
                <link type="text/css" href="css/main.css" rel="stylesheet" />
                <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
                <script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
                <script type="text/javascript" src="js/jquery.jstree.js"></script>
                <script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
-               <script type="text/javascript" src="js/common.js"></script>
+               <script type="text/javascript" src="js/ui.js"></script>
                <script type="text/javascript" src="js/controlers.js"></script>
-               
                <script type="text/javascript">
+                       var pollStatus  =       true;
                        $(function(){
                                $('.button').hover(function(){$(this).addClass('ui-state-hover')},function(){$(this).removeClass('ui-state-hover')});
                                $('.button48').hover(
                                        function(){$(this).css({'filter':'alpha(opacity=50)','-moz-opacity':'0.5','-khtml-opacity': '0.5'})},
                                        function(){$(this).css({'filter':'alpha(opacity=100)','-moz-opacity':'1','-khtml-opacity': '1'})}
                                );
-
-                               $( "#seekSlider" ).slider({
-                                       range: "min",
-                                       value: 0,
-                                       min: 0,
-                                       max: 100,
-                                       stop: function( event, ui ) {
-                                               $( "#currentTime" ).empty();
-                                               $( "#currentTime" ).append( format_time(Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))) );
-                                               switch(current_que){
-                                                       case 'main':
-                                                               sendCommand({'command':'seek','val':Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))});
-                                                               break;
-                                                       case 'stream':
-                                                               sendVLMCmd('control Current seek '+ui.value);
-                                                               break;
-                                               }
-                                               
-                                       }
-                               });
-                               $( "#volumeSlider" ).slider({
-                                       range: "min",
-                                       value: 50,
-                                       min: 0,
-                                       max: 100,
-                                       stop: function( event, ui ) {
-                                               $( "#currentVolume" ).empty();
-                                               $( "#currentVolume" ).append( ui.value+"%" );
-                                               sendCommand({
-                                                       'command':'volume',
-                                                       'val':Math.round(ui.value*5.12)
-                                               })
-                                       }
-                               });
-                               
                                $('#buttonPlayList').click(function(){
                                        $('#libraryContainer').animate({
                                                height: 'toggle'
                                        })
                                        return false;
                                });
+                               $('#buttonEqualizer').click(function(){
+                                       updateEQ();
+                                       $('#window_equalizer').dialog('open');
+                                       return false;
+                               })
                                $('#buttonOffsets').click(function(){
                                        $('#window_offset').dialog('open');
-                               })
+                                       return false;
+                               });
+                               $('#buttonBatch').click(function(){
+                                       $('#window_batch').dialog('open');
+                                       return false;
+                               });
                                $('#buttonOpen').click(function(){
                                        browse_target   =       'default';
                                        browse();
                                        $('#window_browse').dialog('open');
-                               });
-                               $('#buttonStop').click(function(){
-                                       switch(current_que){
-                                               case 'main':
-                                                       sendCommand({'command' : 'pl_stop'})
-                                                       break;
-                                               case 'stream':
-                                                       sendVLMCmd('control Current stop');
-                                                       break;
-                                       }
-                                       
-                                       return false;
-                               });
-                               $('#buttonPlay').click(function(){
-                                       if($(this).attr('state')=='stopped'){
-                                               switch(current_que){
-                                                       case 'main':
-                                                               var id  =       $('.jstree-clicked','#libraryTree').length>0 ?  $('.jstree-clicked','#libraryTree').first().parents().first().attr('id').substr(5) : current_id;
-                                                               sendCommand({'command':'pl_play','id':id});
-                                                               break;
-                                                       case 'stream':
-                                                               sendVLMCmd('control Current play');
-                                                               flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
-                                                               break;
-                                               }
-                                               
-                                       }else{
-                                               switch(current_que){
-                                                       case 'main':
-                                                               sendCommand({'command':'pl_pause'});
-                                                               break;
-                                                       case 'stream':
-                                                               sendVLMCmd('control Current pause');
-                                                               break;
-                                               }
-                                       }
                                        return false;
                                });
                                $('#buttonPrev').mousedown(function(){
                                        intv    =       0;
                                        return false;
                                });
-                               $('#buttonFull').click(function(){
-                                       sendCommand({'command':'fullscreen'});
-                                       return false;
-                               });
                                $('#buttonPlEmpty').click(function(){
                                        sendCommand({'command':'pl_empty'})
                                        return false;
                                        return false;
                                });
                                $('#buttonStreams, #buttonStreams2').click(function(){
+                                       updateStreams();
                                        $('#window_streams').dialog('open');
                                });
                                $('#buttonSout').click(function(){
                                $('#windowStreamConfirm').dialog({
                                        autoOpen: false,
                                        width:600,
-                                       position: ['left','top'],
                                        modal: true,
                                        buttons:{
                                                "Yes":function(){
                                                        var file                        =       $('[current="current"]','#libraryTree').length>0 ? decodeURIComponent($('[current="current"]','#libraryTree').first().attr('uri').substr(7)) : ($('.jstree-clicked','#libraryTree').length>0 ? decodeURIComponent($('.jstree-clicked','#libraryTree').first().parents().first().attr('uri').substr(7)) : ($('#plid_'+current_id).attr('uri') ? decodeURIComponent($('#plid_'+current_id).attr('uri').substr(7)) : false));
                                                        if(file){
+                                                               if($('#viewContainer').css('display')=='none'){
+                                                                       $('#buttonViewer').click();
+                                                               }
                                                                var defaultStream       =       'new Current broadcast enabled input "'+file+'" output #transcode{vcodec=FLV1,vb=4096,fps=25,scale=1,acodec=mp3,ab=512,samplerate=44100,channels=2}:std{access='+$('#stream_protocol').val()+',mux=ffmpeg{{mux=flv}},dst=0.0.0.0:'+$('#stream_port').val()+'/'+$('#stream_file').val()+'}';
                                                                sendVLMCmd('del Current;'+defaultStream+';control Current play');
                                                                $('#player').empty();
                        });
                </script>
        </head>
-
        <body>
                <div align="center">
                <div id="mainContainer" align="center">
                                                        <div id="buttonViewer" class="button ui-widget ui-state-default ui-corner-all" title="Hide / Show Viewer" style="float: left;"><span class="ui-icon ui-icon-video"></span></div>
                                                        <div id="buttonStreams" class="button ui-widget ui-state-default ui-corner-all" title="Manage Streams" style="float: left;"><span class="ui-icon ui-icon-script"></span></div>
                                                        <div id="buttonOffsets" class="button ui-widget ui-state-default ui-corner-all" title="Track Synchronisation" style="float: left;"><span class="ui-icon ui-icon-transfer-e-w"></span></div>
+                                                       <div id="buttonEqualizer" class="button ui-widget ui-state-default ui-corner-all" title="Equalizer" style="float: left;"><span class="ui-icon ui-icon-signal"></span></div>
+                                                       <div id="buttonBatch" class="button ui-widget ui-state-default ui-corner-all" title="VLM Batch Commands" style="float: left;"><span class="ui-icon ui-icon-suitcase"></span></div>
                                                </td>
                                                <td>
                                                        <div style="margin-left:20px;">
                <?vlc
                current_page = "index"
 
-               dialogs("browse_window.html","stream_window.html","create_stream.html","offset_window.html","mosaic_window.html");
+               dialogs("browse_window.html","stream_window.html","create_stream.html","offset_window.html","mosaic_window.html","equalizer_window.html","batch_window.html","error_window.html");
                ?>
-               
        </body>
 </html>
\ No newline at end of file
index f692ba71289ef024532a67bddbf895a9f10a8836..9982b23449c2eeb4daa35952698dc51c1d74084d 100644 (file)
@@ -1,5 +1,8 @@
 var intv       =       0;
 var ccmd       =       "";
+var video_types                        =       new Array('avi','mp4','wmv','mov','swf','vob','mkv','mpg');
+var audio_types                        =       new Array('mp3','wav');
+var stream_server              =       window.location.hostname;
 function format_time( s ){
     var hours  = Math.floor(s/3600);
     var minutes = Math.floor((s/60)%60);
@@ -36,3 +39,23 @@ function setIntv(){
                }
        }
 }
+function convertHz(value){
+       if(value>=1000){
+               return Math.round(value/1000,2)+'kHz';
+       }else{
+               return Math.round(value,2)+'Hz';
+       }
+}
+function isMobile(){
+       var a   =       navigator.userAgent||navigator.vendor||window.opera;
+       if(/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))){
+               return true;
+       }
+       return false;
+}
+function createElementLi(name,type,dir,ext){
+       var icon        =       type=="dir" && name=='..' ? 'Back-48.png' : (type=='dir' ? "Folder-48.png" : ($.inArray(ext,video_types)!=-1 ? "Video-48.png" : ($.inArray(ext,audio_types)!=-1 ? "Audio-48.png" : "Other-48.png")));
+       var open        =       type=="dir" ? "opendir='"+dir+"'" : (type=="file" ? "openfile='"+dir+"'" : "opendev='"+dir+"'");
+       var str         =       "<li class='system_icon ui-widget-content' "+open+" ><img src='images/"+icon+"' width='48px' height='48px' title='"+name+"' alt='"+name+"' style='border: none;background:none;'/><div style='font-size:10px;border:none;background:none;'>"+name+"</div></li>";
+       return str;
+}
\ No newline at end of file
index 6aa44d135c04c237e083934fafb696ec2e5b349c..6a7dd78ac855dcdbbbfbe44455b96e82e5821ab5 100644 (file)
@@ -21,6 +21,7 @@ function updateStatus(){
                                $('#currentSubtitleDelay').append(Math.round($('subtitledelay',data).text()*100)/100+'s');
                                $('#seekSlider').attr('totalLength',$('length',data).text());
                                $('#buttonPlay').attr('state',$('state',data).text());
+                               $('#buttonPlay').attr('mrl',$('[name="filename"]',data).text());
                                if($('state',data).text()=='playing'){
                                        $('#buttonPlay').css({
                                                'background-image':'url("images/button_pause-48.png")'
@@ -60,29 +61,64 @@ function updateStatus(){
                                                'display':'block'
                                        });
                                }else if($('[name="artwork_url"]',data).text()==""){
-                                       $('#albumArt').css({
-                                               'visibility':'hidden',
-                                               'display':'none'
-                                       });
+                                       $('#albumArt').attr('src','images/vlc-48.png');
                                }
-                               setTimeout( updateStatus, 1000 );
+                               if(pollStatus){
+                                       setTimeout( updateStatus, 1000 );
+                               }
+                               
                        }
+                       $('band',data).each(function(){
+                               var id          =       $(this).attr('id');
+                               var freq        =       convertHz($(this).attr('freqency'));
+                               var value       =       $(this).text() ? $(this).text() : 0;
+                               if(!$('#eq_container'+id).length){
+                                       $('#window_equalizer').append('<div style="float:left;width:44px;" align="center" id="eq_container'+id+'"><div id="eq'+id+'_txt">'+value+'dB</div><div class="eqBand" id="eq'+id+'" style="font-size: 18px;"></div><div>'+freq+'</div></div>');
+                                       $('#eq'+id).slider({
+                                               min: -20,
+                                               max: 20,
+                                               step: 0.1,
+                                               range: "min",
+                                               value: value,
+                                               animate: true,
+                                               orientation: "vertical",
+                                               stop: function(event,ui){
+                                                       $('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB');
+                                                       sendCommad({
+                                                               command:'equalizer',
+                                                               val: ui.value,
+                                                               band: $(this).attr('id').substr(2)
+                                                       })
+                                               },
+                                               slide: function(event,ui){
+                                                       $('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB');
+                                               }
+                                       });
+                               }else{
+                                       $('#eq'+id).slider({value:value});
+                                       $('#eq'+id+'_txt').empty().append(Math.round(value*100)/100+'dB');
+                               }
+                       });
+                       $('#preamp').slider('value',$('preamp',data).text());
+                       $('#preamp_txt').empty().append(Math.round($('preamp',data).text()*100)/100+'dB');
                },
                error: function(jqXHR,status,error){
                        setTimeout( updateStatus, 500 );
                }
        });
 }
-
 function updatePlayList(){
        $('#libraryTree').jstree('refresh',-1);
 }
-function sendCommand(params){
+function sendCommand(params,append){
        if(current_que=='stream'){
                $.ajax({
                        url: 'requests/status.xml',
                        data: params,
                        success:function(data,status,jqXHR){
+                               if(append!=undefined){
+                                       eval(append);
+                               }
                                updateStatus();
                                updatePlayList();
                        }
@@ -91,20 +127,26 @@ function sendCommand(params){
                if(params.plreload===false){
                        $.ajax({
                                url: 'requests/status.xml',
-                               data: params
+                               data: params,
+                               success:function(data,status,jqXHR){
+                                       if(append!=undefined){
+                                               eval(append);
+                                       }
+                               }
                        });
                }else{
                        $.ajax({
                                url: 'requests/status.xml',
                                data: params,
                                success:function(data,status,jqXHR){
+                                       if(append!=undefined){
+                                               eval(append);
+                                       }
                                        updatePlayList();
                                }
                        });
-               }
-               
+               }       
        }
-       
 }
 function browse(dir){
        dir     =       dir==undefined ? '~' : dir;
@@ -112,6 +154,7 @@ function browse(dir){
                url: 'requests/browse.xml',
                data:'dir='+encodeURIComponent(dir),
                success: function(data,status,jqXHR){
+                       var tgt =       browse_target.indexOf('__')==-1 ? browse_target : browse_target.substr(0,browse_target.indexOf('__'));
                        $('#browse_elements').empty();
             $('element',data).each(function(){
                                if($(this).attr('type')=='dir' || $.inArray($(this).attr('name').substr(-3),video_types)!=-1 || $.inArray($(this).attr('name').substr(-3),audio_types)!=-1){
@@ -122,7 +165,6 @@ function browse(dir){
                                browse($(this).attr('opendir'));
                        });
                        $('[openfile]').dblclick(function(){
-                               var tgt =       browse_target.indexOf('__')==-1 ? browse_target : browse_target.substr(0,browse_target.indexOf('__'));
                                switch(tgt){
                                        case '#stream_input':
                                                $(browse_target).val($(this).attr('openfile'));
@@ -136,14 +178,39 @@ function browse(dir){
                                                        'float' : 'left'
                                                });
                                                break;
+                                       case '#mobile':
+                                               break;
                                        default:
                                                sendCommand('command=in_play&input=file://'+encodeURIComponent($(this).attr('openfile')));
                                                break;
                                }
                                $('#window_browse').dialog('close');
                        });
-                       $('[selectable]').selectable();
-                       
+                       $('[opendir]').click(function(){
+                               switch(tgt){
+                                       case '#mobile':
+                                               browse($(this).attr('opendir'));
+                                               break;
+                                       default:
+                                               break;
+                               }
+                       });
+                       $('[openfile]').click(function(){
+                               switch(tgt){
+                                       case '#mobile':
+                                               sendCommand('command=in_play&input=file://'+encodeURIComponent($(this).attr('openfile')),"window.location='mobile.html'");
+                                               break;
+                                       default:
+                                               break;
+                               }
+                       });
+                       switch(tgt){
+                               case '#mobile':
+                                       break;
+                               default:
+                                       $('[selectable]').selectable();
+                                       break;
+                       }
                },
                error: function(jqXHR,status,error){
                        setTimeout('browse("'+dir+'")',1041);
@@ -256,47 +323,113 @@ function updateStreams(){
                                }
                                setTimeout( updateStreams, 1000 );
                        }
-                       
                }
        });
 }
-function sendVLMCmd(command){
+function updateEQ(){
+       $.ajax({
+               url: 'requests/equalizer.xml',
+               success: function(data,status,jqXHR){
+                       $('band',data).each(function(){
+                               var id          =       $(this).attr('id');
+                               var freq        =       convertHz($(this).attr('freqency'));
+                               var value       =       $(this).text() ? $(this).text() : 0;
+                               if(!$('#eq_container'+id).length){
+                                       $('#window_equalizer').append('<div style="float:left;width:44px;" align="center" id="eq_container'+id+'"><div id="eq'+id+'_txt">'+value+'dB</div><div class="eqBand" id="eq'+id+'" style="font-size: 18px;"></div><div>'+freq+'</div></div>');
+                                       $('#eq'+id).slider({
+                                               min: -20,
+                                               max: 20,
+                                               step: 0.1,
+                                               range: "min",
+                                               value: value,
+                                               animate: true,
+                                               orientation: "vertical",
+                                               stop: function(event,ui){
+                                                       $('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB');
+                                                       sendEQCmd({
+                                                               command:'equalizer',
+                                                               val: ui.value,
+                                                               band: $(this).attr('id').substr(2)
+                                                       })
+                                               },
+                                               slide: function(event,ui){
+                                                       $('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB');
+                                               }
+                                       });
+                               }else{
+                                       $('#eq'+id).slider({value:value});
+                                       $('#eq'+id+'_txt').empty().append(Math.round(value*100)/100+'dB');
+                               }
+                       });
+                       $('#preamp').slider('value',$('preamp',data).text());
+                       $('#preamp_txt').empty().append(Math.round($('preamp',data).text()*100)/100+'dB');
+               }
+       })
+}
+function sendVLMCmd(command,append){
        var commands    =       command.split(';');
        if(commands.length>1){
-               sendBatchVLMCmd(command);
+               sendBatchVLMCmd(command,append);
        }else{
                if(current_que=='main'){
                        $.ajax({
                                url: 'requests/vlm_cmd.xml',
                                data: 'command='+encodeURIComponent(command),
                                success: function(data,status,jqXHR){
+                                       if($('error',data).text()){
+                                               $('#error_container').append('<div>'+$('error',data).text()+'</div>');
+                                               $('#window_error').dialog('open');
+                                       }
+                                       if(append!=undefined){
+                                               eval(append);
+                                       }
                                        updateStreams();
                                }
                        });
                }else{
                        $.ajax({
                                url: 'requests/vlm_cmd.xml',
-                               data: 'command='+encodeURIComponent(command)
+                               data: 'command='+encodeURIComponent(command),
+                               success: function(data,status,jqXHR){
+                                       if($('error',data).text()){
+                                               $('#error_container').append('<div>'+$('error',data).text()+'</div>');
+                                               $('#window_error').dialog('open');
+                                       }
+                                       updateStreams();
+                               }
                        });
                }
-               
        }
 }
-function sendBatchVLMCmd(command){
+function sendBatchVLMCmd(command,append){
        var commands    =       command.split(';');
        $.ajax({
                url: 'requests/vlm_cmd.xml',
                data: 'command='+encodeURIComponent(commands.shift()),
                success:function(data,status,jqXHR){
-                       sendVLMCmd(commands.join(';'));
+                       if($('error',data).text()){
+                               $('#error_container').append('<div>'+$('error',data).text()+'</div>');
+                               $('#window_error').dialog('open');
+                       }
+                       sendVLMCmd(commands.join(';'),append);
                }
        });
 }
+function sendEQCmd(params){
+       $.ajax({
+               url: 'requests/equalizer.xml',
+               data: params,
+               success: function(data,status,jqXHR){
+                       updateEQ();
+               }
+       });
+}
+
 $(function(){
        $('#libraryTree').jstree({
                "xml_data":{
                        "ajax":{
-                               "url" : "requests/playlist.xml"
+                               "url" : "requests/playlist_jstree.xml"
                        },
                        "xsl" : "nest"
                },
@@ -317,4 +450,5 @@ $(function(){
        });
        updateStatus();
        updateStreams();
+       updateEQ();
 });
diff --git a/share/lua/http/js/ui.js b/share/lua/http/js/ui.js
new file mode 100644 (file)
index 0000000..fbef9ff
--- /dev/null
@@ -0,0 +1,72 @@
+$(function(){
+       $( "#seekSlider" ).slider({
+               range: "min",
+               value: 0,
+               min: 0,
+               max: 100,
+               stop: function( event, ui ) {
+                       $( "#currentTime" ).empty().append( format_time(Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))) );
+                       switch(current_que){
+                               case 'main':
+                                       sendCommand({'command':'seek','val':Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))});
+                                       break;
+                               case 'stream':
+                                       sendVLMCmd('control Current seek '+ui.value);
+                                       break;
+                       }
+               }
+       });
+       $( "#volumeSlider" ).slider({
+               range: "min",
+               value: 50,
+               min: 0,
+               max: 100,
+               stop: function( event, ui ) {
+                       $( "#currentVolume" ).empty().append( ui.value+"%" );
+                       sendCommand({
+                               'command':'volume',
+                               'val':Math.round(ui.value*5.12)
+                       })
+               }
+       });
+       $('#buttonStop').click(function(){
+               switch(current_que){
+                       case 'main':
+                               sendCommand({'command' : 'pl_stop'})
+                               break;
+                       case 'stream':
+                               sendVLMCmd('control Current stop');
+                               break;
+               }
+               return false;
+       });
+       $('#buttonPlay').click(function(){
+               if($(this).attr('state')=='stopped'){
+                       switch(current_que){
+                               case 'main':
+                                       var id  =       $('.jstree-clicked','#libraryTree').length>0 ?  $('.jstree-clicked','#libraryTree').first().parents().first().attr('id').substr(5) : current_id;
+                                       sendCommand({'command':'pl_play','id':id});
+                                       break;
+                               case 'stream':
+                                       sendVLMCmd('control Current play');
+                                       flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
+                                       break;
+                       }
+               }else{
+                       switch(current_que){
+                               case 'main':
+                                       sendCommand({'command':'pl_pause'});
+                                       break;
+                               case 'stream':
+                                       sendVLMCmd('control Current pause');
+                                       break;
+                       }
+               }
+               return false;
+       });
+       $('#buttonFull').click(function(){
+               sendCommand({'command':'fullscreen'});
+               return false;
+       });
+       $('#stream_host').val(stream_server);
+})
\ No newline at end of file
diff --git a/share/lua/http/mobile.html b/share/lua/http/mobile.html
new file mode 100644 (file)
index 0000000..885c85c
--- /dev/null
@@ -0,0 +1,122 @@
+<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  mobile.html: VLC media player web interface - VLM
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  Copyright (C) 2005-2006 the VideoLAN team
+<  $Id$
+<
+<  Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
+<
+<  This program is free software; you can redistribute it and/or modify
+<  it under the terms of the GNU General Public License as published by
+<  the Free Software Foundation; either version 2 of the License, or
+<  (at your option) any later version.
+<
+<  This program is distributed in the hope that it will be useful,
+<  but WITHOUT ANY WARRANTY; without even the implied warranty of
+<  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+<  GNU General Public License for more details.
+<
+<  You should have received a copy of the GNU General Public License
+<  along with this program; if not, write to the Free Software
+<  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+<html>
+       <head>
+               <title>VLC media player - Web Interface</title>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <meta name="viewport" content="width=device-width; user-scalable=no" />
+               <link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
+               <script type="text/javascript" src="js/common.js"></script>
+               <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
+               <link type="text/css" href="css/main.css" rel="stylesheet" />
+               <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
+               <script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
+               <script type="text/javascript" src="js/jquery.jstree.js"></script>
+               <script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
+               <script type="text/javascript" src="js/ui.js"></script>
+               <script type="text/javascript" src="js/controlers.js"></script>
+               <script type="text/javascript">
+                       var pollStatus  =       true;
+                       $(function(){
+                               $('#buttonPrev').click(function(){
+                                       sendCommand({'command':'pl_previous'});
+                                       return false;
+                               });
+                               $('#buttonNext').click(function(){
+                                       sendCommand({'command':'pl_next'});
+                                       return false;
+                               });
+                               $('#buttonOpen').click(function(){
+                                       window.location='mobile_browse.html';
+                               });
+                               $('#buttonEQ').click(function(){
+                                       window.location='mobile_equalizer.html';
+                               });
+                               $('#buttonSout').click(function(){
+                                       var file                        =         decodeURIComponent($('#buttonPlay').attr('mrl'));
+                                       if(file){
+                                               var defaultStream       =       'new Current broadcast enabled input "'+file+'" output #transcode{vcodec=FLV1,vb=4096,fps=25,scale=1,acodec=mp3,ab=512,samplerate=44100,channels=2}:std{access='+$('#stream_protocol').val()+',mux=ffmpeg{{mux=flv}},dst=0.0.0.0:'+$('#stream_port').val()+'/'+$('#stream_file').val()+'}';
+                                               sendVLMCmd('del Current;'+defaultStream+';control Current play','window.location="mobile_view.html"');
+                                       }
+                                       return false;
+                               });
+                       })
+               </script>
+       </head>
+       <body>
+               <div id="main">
+                       <table width="100%" cellpadding="0" cellspacing="0" style="height:100%" border="0">
+
+                               <tr>
+                                       <td valign="top" height="130px">
+                                               <img id="albumArt" src="/art" width="141px" height="130px" alt="Album Art" style="border:2px solid #000000;"/>
+                                       </td>
+                                       <td valign="top" width="125px"  class="ui-widget-content" rowspan="2">
+                                               <div id="buttonOpen" class="button48  ui-corner-all" title="Open Media"></div>
+                                               <div id="buttonFull" class="button48  ui-corner-all" title="Full Screen"></div>
+                                               <div id="buttonEQ" class="button48 ui-corner-all" title="Equalizer"></div>
+                                               <div id="buttonSout" class="button48  ui-corner-all" title="Easy Stream"></div
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td>&nbsp;</td>
+                               </tr>
+                               <tr>
+                                       <td colspan="2" valign="bottom" height="60px">
+                                               <div id="volumeSlider" title="Volume" style="width:98%; margin-left:10px; font-size:30px;"><img src="images/speaker-32.png" class="ui-slider-handle" alt="volume"/></div>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td colspan="2" valign="bottom" height="20px">
+                                               <div id="mediaTitle" class="dynamic"></div>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td id="controlButtons" colspan="2" valign="bottom" height="108px;" class="ui-widget-content">
+                                               <div align="center">
+                                                       <div id="buttonPrev" class="button48  ui-corner-all" title="Previous"></div>
+                                                       <div id="buttonPlay" class="button48  ui-corner-all" title="Play"></div>
+                                                       <div id="buttonNext" class="button48  ui-corner-all" title="Next"></div>
+                                                       <div id="buttonStop" class="button48  ui-corner-all" title="Stop"></div>
+                                               </div>
+                                               <div id="seekSlider" title="Seek Time" style="width:98%; margin-left:10px;font-size:30px;"></div>
+                                               <table width="100%">
+                                                       <tr>
+                                                               <td>
+                                                                       <div id="currentTime" class="dynamic">00:00:00</div>
+                                                               </td>
+                                                               <td>
+                                                                       <div id="totalTime" class="dynamic">00:00:00</div>
+                                                               </td>
+                                                       </tr>
+                                               </table>
+                                       </td>
+                               </tr>
+                       </table>
+               </div>
+               <?vlc
+
+       dialogs("stream_config_window.html");
+       ?>
+       </body>
+</html>
\ No newline at end of file
diff --git a/share/lua/http/mobile_browse.html b/share/lua/http/mobile_browse.html
new file mode 100644 (file)
index 0000000..314da74
--- /dev/null
@@ -0,0 +1,54 @@
+<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  mobile_browse.html: VLC media player web interface - VLM
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  Copyright (C) 2005-2006 the VideoLAN team
+<  $Id$
+<
+<  Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
+<
+<  This program is free software; you can redistribute it and/or modify
+<  it under the terms of the GNU General Public License as published by
+<  the Free Software Foundation; either version 2 of the License, or
+<  (at your option) any later version.
+<
+<  This program is distributed in the hope that it will be useful,
+<  but WITHOUT ANY WARRANTY; without even the implied warranty of
+<  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+<  GNU General Public License for more details.
+<
+<  You should have received a copy of the GNU General Public License
+<  along with this program; if not, write to the Free Software
+<  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+<html>
+       <head>
+               <title>VLC media player - Web Interface</title>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <meta name="viewport" content="width=device-width; user-scalable=no" />
+               <link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
+               <script type="text/javascript" src="js/common.js"></script>
+               <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
+               <link type="text/css" href="css/main.css" rel="stylesheet" />
+               <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
+               <script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
+               <script type="text/javascript" src="js/jquery.jstree.js"></script>
+               <script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
+               <script type="text/javascript" src="js/controlers.js"></script>
+               <script type="text/javascript">
+                       var pollStatus                  =       false;
+                       var browse_target               =       '#mobile';
+                       $(function(){
+                               browse();
+                       })
+               </script>
+       </head>
+       <body>
+               <div id="window_browse" title="Media Browser">
+                       <div>
+                               <ol id='browse_elements' selectable="selectable">
+                                       <li>Play List</li>
+                               </ol>
+                       </div>
+               </div>
+       </body>
+</html>
\ No newline at end of file
diff --git a/share/lua/http/mobile_equalizer.html b/share/lua/http/mobile_equalizer.html
new file mode 100644 (file)
index 0000000..310eb40
--- /dev/null
@@ -0,0 +1,70 @@
+<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  mobile_equalizer.html: VLC media player web interface - VLM
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  Copyright (C) 2005-2006 the VideoLAN team
+<  $Id$
+<
+<  Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
+<
+<  This program is free software; you can redistribute it and/or modify
+<  it under the terms of the GNU General Public License as published by
+<  the Free Software Foundation; either version 2 of the License, or
+<  (at your option) any later version.
+<
+<  This program is distributed in the hope that it will be useful,
+<  but WITHOUT ANY WARRANTY; without even the implied warranty of
+<  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+<  GNU General Public License for more details.
+<
+<  You should have received a copy of the GNU General Public License
+<  along with this program; if not, write to the Free Software
+<  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+<html>
+       <head>
+               <title>VLC media player - Web Interface</title>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <meta name="viewport" content="width=device-width; user-scalable=no" />
+               <link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
+               <script type="text/javascript" src="js/common.js"></script>
+               <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
+               <link type="text/css" href="css/main.css" rel="stylesheet" />
+               <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
+               <script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
+               <script type="text/javascript" src="js/jquery.jstree.js"></script>
+               <script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
+               <script type="text/javascript" src="js/controlers.js"></script>
+               <script language="javascript" type="text/javascript">
+                       var pollStatus  =       false;
+                       $(function(){
+                               $('#preamp').slider({
+                                       min: -20,
+                                       max: 20,
+                                       step: 0.1,
+                                       range: "min",
+                                       animate: true,
+                                       stop: function(event,ui){
+                                               $('#preamp_txt').empty().append(ui.value+'dB');
+                                               sendEQCmd({
+                                                       command:'preamp',
+                                                       val: ui.value
+                                               })
+                                       },
+                                       slide: function(event,ui){
+                                               $('#preamp_txt').empty().append(ui.value+'dB');
+                                       }
+                               });
+                       });
+               </script>
+       </head>
+       <body>
+               <div id="window_equalizer" title="Graphical Equalizer">
+                       <div style="margin: 5px 5px 5px 5px;">
+                               <div>Preamp: <span id="preamp_txt">0dB</span></div>
+                       </div>
+                       <div style="margin: 5px 5px 10px 5px;">
+                               <div id="preamp" style="font-size: 22px;"></div>
+                       </div>
+               </div>
+       </body>
+</html>
\ No newline at end of file
diff --git a/share/lua/http/mobile_view.html b/share/lua/http/mobile_view.html
new file mode 100644 (file)
index 0000000..b84b2d7
--- /dev/null
@@ -0,0 +1,55 @@
+<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  mobile_view.html: VLC media player web interface - VLM
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  Copyright (C) 2005-2006 the VideoLAN team
+<  $Id$
+<
+<  Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
+<
+<  This program is free software; you can redistribute it and/or modify
+<  it under the terms of the GNU General Public License as published by
+<  the Free Software Foundation; either version 2 of the License, or
+<  (at your option) any later version.
+<
+<  This program is distributed in the hope that it will be useful,
+<  but WITHOUT ANY WARRANTY; without even the implied warranty of
+<  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+<  GNU General Public License for more details.
+<
+<  You should have received a copy of the GNU General Public License
+<  along with this program; if not, write to the Free Software
+<  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+<html>
+       <head>
+               <title>VLC media player - Web Interface</title>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <meta name="viewport" content="width=device-width; user-scalable=no" />
+               <link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
+               <script type="text/javascript" src="js/common.js"></script>
+               <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
+               <link type="text/css" href="css/main.css" rel="stylesheet" />
+               <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
+               <script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
+               <script type="text/javascript" src="js/jquery.jstree.js"></script>
+               <script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
+               <script type="text/javascript" src="js/controlers.js"></script>
+               <script type="text/javascript" src="js/ui.js"></script>
+               <script language="javascript" type="text/javascript">
+                       var pollStatus  =       false;
+                       $(function(){
+                               $('#player').empty();
+                               $('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
+                               flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
+                       });
+               </script>
+       </head>
+       <body>
+               <div id="player" style="width:100%;height:100%">
+
+               </div>
+               <?vlc
+                       dialogs("stream_config_window.html");
+               ?>
+       </body>
+</html>
\ No newline at end of file
index d8bbe02eb2f7d825db1ac8c808abd3e7b5831549..23fdb64b952c9bca0af549f4580f8ea1ea55dd54 100644 (file)
@@ -6,25 +6,25 @@ vim:syntax=lua
 < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
 <  Copyright (C) 2005-2006 the VideoLAN team
 <  $Id$
-< 
+<
 <  Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
-< 
+<
 <  This program is free software; you can redistribute it and/or modify
 <  it under the terms of the GNU General Public License as published by
 <  the Free Software Foundation; either version 2 of the License, or
 <  (at your option) any later version.
-< 
+<
 <  This program is distributed in the hope that it will be useful,
 <  but WITHOUT ANY WARRANTY; without even the implied warranty of
 <  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 <  GNU General Public License for more details.
-< 
+<
 <  You should have received a copy of the GNU General Public License
 <  along with this program; if not, write to the Free Software
 <  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
 ]] ?>
-<root>
+
 <?vlc
 --[[
 function a(t,pre)
@@ -42,17 +42,11 @@ function print_playlist(item)
     if item.flags.disabled then return end
     if(item.children) then
         local name = vlc.strings.convert_xml_special_chars(item.name or "")
-        if(name ~= "Undefined") then
-                       print('<item id="plid_' ..tostring(item.id).. '" name="' ..tostring(name).. '" ro="' ..(item.flags.ro and "ro" or "rw").. '"><content><name>' ..name.. '</name></content>')
-                       for _, child in ipairs(item.children) do
-                               print_playlist(child)
-                       end
-                       print('</item>')
-               else
-                       for _, child in ipairs(item.children) do
-                               print_playlist(child)
-                       end
-               end
+        print('<node id="' ..tostring(item.id).. '" name="' ..tostring(name).. '" ro="' ..(item.flags.ro and "ro" or "rw").. '">')
+        for _, child in ipairs(item.children) do
+            print_playlist(child)
+        end
+        print('</node>')
     else
         local name, path = vlc.strings.convert_xml_special_chars(item.name or "", item.path or "")
         local current_item = vlc.input.item()
@@ -63,7 +57,7 @@ function print_playlist(item)
                 current = 'current="current"'
             end
         end
-        print('<item id="plid_' ..tostring(item.id).. '" uri="' ..tostring(path).. '" name="' ..name.. '" ro="' ..(item.flags.ro and "ro" or "rw").. '" duration ="' ..math.floor(item.duration).. '" ' ..current.. ' ><content><name>' ..name.. '</name></content></item>')
+        print('<leaf id="' ..tostring(item.id).. '" uri="' ..tostring(path).. '" name="' ..name.. '" ro="' ..(item.flags.ro and "ro" or "rw").. '" duration ="' ..math.floor(item.duration).. '" ' ..current.. ' />')
     end
 end
 
@@ -82,4 +76,3 @@ end
 --a(p) --Uncomment to debug
 print_playlist(p)
 ?>
-</root>
\ No newline at end of file
diff --git a/share/lua/http/requests/playlist_jstree.xml b/share/lua/http/requests/playlist_jstree.xml
new file mode 100644 (file)
index 0000000..d8bbe02
--- /dev/null
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?<?vlc print'>'?>
+<?vlc --[[
+vim:syntax=lua
+<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  playlist.xml: VLC media player web interface
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  Copyright (C) 2005-2006 the VideoLAN team
+<  $Id$
+< 
+<  Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
+< 
+<  This program is free software; you can redistribute it and/or modify
+<  it under the terms of the GNU General Public License as published by
+<  the Free Software Foundation; either version 2 of the License, or
+<  (at your option) any later version.
+< 
+<  This program is distributed in the hope that it will be useful,
+<  but WITHOUT ANY WARRANTY; without even the implied warranty of
+<  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+<  GNU General Public License for more details.
+< 
+<  You should have received a copy of the GNU General Public License
+<  along with this program; if not, write to the Free Software
+<  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+]] ?>
+<root>
+<?vlc
+--[[
+function a(t,pre)
+  local pre = pre or ""
+  for k,v in pairs(t) do
+    vlc.msg.err(pre..tostring(k).." : "..tostring(v))
+    if type(v) == "table" then
+      a(v,pre.."  ")
+    end
+  end
+end
+--]]
+
+function print_playlist(item)
+    if item.flags.disabled then return end
+    if(item.children) then
+        local name = vlc.strings.convert_xml_special_chars(item.name or "")
+        if(name ~= "Undefined") then
+                       print('<item id="plid_' ..tostring(item.id).. '" name="' ..tostring(name).. '" ro="' ..(item.flags.ro and "ro" or "rw").. '"><content><name>' ..name.. '</name></content>')
+                       for _, child in ipairs(item.children) do
+                               print_playlist(child)
+                       end
+                       print('</item>')
+               else
+                       for _, child in ipairs(item.children) do
+                               print_playlist(child)
+                       end
+               end
+    else
+        local name, path = vlc.strings.convert_xml_special_chars(item.name or "", item.path or "")
+        local current_item = vlc.input.item()
+        local current = ""
+        -- Is the item the one currently played
+        if(current_item ~= nil) then
+            if(vlc.input.item().uri(current_item) == path) then
+                current = 'current="current"'
+            end
+        end
+        print('<item id="plid_' ..tostring(item.id).. '" uri="' ..tostring(path).. '" name="' ..name.. '" ro="' ..(item.flags.ro and "ro" or "rw").. '" duration ="' ..math.floor(item.duration).. '" ' ..current.. ' ><content><name>' ..name.. '</name></content></item>')
+    end
+end
+
+local p
+if _GET["search"] then
+  if _GET["search"] ~= "" then
+    _G.search_key = _GET["search"]
+  else
+    _G.search_key = nil
+  end
+  local key = vlc.strings.decode_uri(_GET["search"])
+  p = vlc.playlist.search(key)
+else
+  p = vlc.playlist.get()
+end
+--a(p) --Uncomment to debug
+print_playlist(p)
+?>
+</root>
\ No newline at end of file
index e1d646b9ac162afd01ec31178381d8062299b082..99fd531d604d1ecbe4b19396b90975380b08e42c 100644 (file)
@@ -1,16 +1,39 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  view.html: VLC media player web interface - VLM
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
+<  Copyright (C) 2005-2006 the VideoLAN team
+<  $Id$
+<
+<  Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
+<
+<  This program is free software; you can redistribute it and/or modify
+<  it under the terms of the GNU General Public License as published by
+<  the Free Software Foundation; either version 2 of the License, or
+<  (at your option) any later version.
+<
+<  This program is distributed in the hope that it will be useful,
+<  but WITHOUT ANY WARRANTY; without even the implied warranty of
+<  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+<  GNU General Public License for more details.
+<
+<  You should have received a copy of the GNU General Public License
+<  along with this program; if not, write to the Free Software
+<  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
 <html xmlns="http://www.w3.org/1999/xhtml">
 
 <head>
        <title>VLC media player - Flash Viewer</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+       <link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
        <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
        <link type="text/css" href="css/main.css" rel="stylesheet" />
+       <script type="text/javascript" src="js/common.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
-               <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
-               <script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
+       <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
+       <script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
        <script language="javascript" type="text/javascript">
-       var stream_server               =       window.location.hostname;
+       
        $(function(){
                $('#window_stream').resizable({
                        minHeight: 300,
                                })
                        }
                });
-               $('#window_stream_config').dialog({
-                       autoOpen: false,
-                       width:400,
-                       position: ['left','top'],
-                       modal: true,
-                       buttons:{
-                               "Okay":function(){
-                                       $('#player').empty();
-                                       $('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
-                                       flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
-                                       $(this).dialog('close');
-                               },
-                               "Cancel":function(){
-                                       $(this).dialog('close');
-                               }
-                       }
-               });
                $('#button_stream_config').click(function(){
                        $('#window_stream_config').dialog('open');
                });
-               $('#stream_host').val(stream_server);
                $('#player').empty();
                $('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
                flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
                        <?vlc print(vlc.misc.version() .. " - Lua Web Interface - " .. vlc.misc.copyright()) ?>
                </div>
        </div>
-       <div id="window_stream_config" title="Stream Input Configuration">
-               <table>
-                       <tr>
-                               <td>Protocol</td>
-                               <td><input type="text" name="stream_protocol" id="stream_protocol" value="http" /></td>
-                       </tr>
-                       <tr>
-                               <td>Host</td>
-                               <td><input type="text" name="stream_host" id="stream_host" value="" /></td>
-                       </tr>
-                       <tr>
-                               <td>Port</td>
-                               <td><input type="text" name="stream_port" id="stream_port" value="8081" /></td>
-                       </tr>
-                       <tr>
-                               <td>File</td>
-                               <td><input type="text" name="stream_file" id="stream_file" value="stream.flv" /></td>
-                       </tr>
-               </table>
-       </div>
+       <?vlc
+
+       dialogs("stream_config_window.html");
+       ?>
 </body>
 </html>
\ No newline at end of file