Initial commit: Add ShadowStream media application with file scanning and classification
13
.idea/.idea.VPR_ShadowStream/.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Rider ignored files
|
||||||
|
/projectSettingsUpdater.xml
|
||||||
|
/modules.xml
|
||||||
|
/.idea.file finder test.iml
|
||||||
|
/contentModel.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
8
.idea/.idea.VPR_ShadowStream/.idea/indexLayout.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="UserContentModel">
|
||||||
|
<attachedFolders />
|
||||||
|
<explicitIncludes />
|
||||||
|
<explicitExcludes />
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/.idea.VPR_ShadowStream/.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
168
.idea/.idea.file finder test/.idea/workspace.xml
generated
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AutoGeneratedRunConfigurationManager">
|
||||||
|
<projectFile>ModuleManager/ModuleManager.csproj</projectFile>
|
||||||
|
<projectFile>Module_Manager/Module_Manager.csproj</projectFile>
|
||||||
|
<projectFile>Mudule Manager/Mudule Manager.csproj</projectFile>
|
||||||
|
<projectFile>file finder test/file finder test.csproj</projectFile>
|
||||||
|
</component>
|
||||||
|
<component name="AutoImportSettings">
|
||||||
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
|
</component>
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="8b992919-b338-42d6-a9e0-9920b3435f35" name="Changes" comment="" />
|
||||||
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
|
</component>
|
||||||
|
<component name="DpaMonitoringSettings">
|
||||||
|
<option name="firstShow" value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="HighlightingSettingsPerFile">
|
||||||
|
<setting file="file://$PROJECT_DIR$/ShadowStream/LogHelper/LogHelper.cs" root0="FORCE_HIGHLIGHTING" />
|
||||||
|
<setting file="file://$PROJECT_DIR$/ShadowStream/MainWindow.xaml" root0="FORCE_HIGHLIGHTING" />
|
||||||
|
<setting file="file://$PROJECT_DIR$/ShadowStream/MainWindow.xaml.cs" root0="FORCE_HIGHLIGHTING" />
|
||||||
|
</component>
|
||||||
|
<component name="ProblemsViewState">
|
||||||
|
<option name="selectedTabId" value="SWEA" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectColorInfo">{
|
||||||
|
"associatedIndex": 5
|
||||||
|
}</component>
|
||||||
|
<component name="ProjectId" id="2wOylS2xokAGlzRMyidMR7063vW" />
|
||||||
|
<component name="ProjectViewState">
|
||||||
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
|
<option name="showLibraryContents" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent">{
|
||||||
|
"keyToString": {
|
||||||
|
".NET Project.file finder test.executor": "Run",
|
||||||
|
"RunOnceActivity.ChatTagsLlmMigration": "true",
|
||||||
|
"RunOnceActivity.CodyAccountHistoryMigration": "true",
|
||||||
|
"RunOnceActivity.CodyAccountsIdsRefresh": "true",
|
||||||
|
"RunOnceActivity.CodyAssignOrphanedChatsToActiveAccount": "true",
|
||||||
|
"RunOnceActivity.CodyConvertUrlToCodebaseName": "true",
|
||||||
|
"RunOnceActivity.CodyHistoryLlmMigration": "true",
|
||||||
|
"RunOnceActivity.CodyMigrateChatHistory-v2": "true",
|
||||||
|
"RunOnceActivity.CodyProjectSettingsMigration": "true",
|
||||||
|
"RunOnceActivity.DeprecatedChatLlmMigration": "true",
|
||||||
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
|
"RunOnceActivity.ToggleCodyToolWindowAfterMigration": "true",
|
||||||
|
"node.js.detected.package.eslint": "true",
|
||||||
|
"node.js.detected.package.tslint": "true",
|
||||||
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
|
"nodejs_package_manager_path": "npm",
|
||||||
|
"settings.editor.selected.configurable": "com.sourcegraph.cody.config.ui.CodyConfigurable",
|
||||||
|
"vue.rearranger.settings.migration": "true"
|
||||||
|
}
|
||||||
|
}</component>
|
||||||
|
<component name="RunManager" selected=".NET Project.file finder test">
|
||||||
|
<configuration name="ModuleManager" type="DotNetProject" factoryName=".NET Project">
|
||||||
|
<option name="EXE_PATH" value="" />
|
||||||
|
<option name="PROGRAM_PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="" />
|
||||||
|
<option name="PASS_PARENT_ENVS" value="1" />
|
||||||
|
<option name="USE_EXTERNAL_CONSOLE" value="0" />
|
||||||
|
<option name="USE_MONO" value="0" />
|
||||||
|
<option name="RUNTIME_ARGUMENTS" value="" />
|
||||||
|
<option name="PROJECT_PATH" value="$PROJECT_DIR$/ShadowStream/ShadowStream.csproj" />
|
||||||
|
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_KIND" value="DotNetCore" />
|
||||||
|
<option name="PROJECT_TFM" value="" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Build" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration name="Module_Manager" type="DotNetProject" factoryName=".NET Project">
|
||||||
|
<option name="EXE_PATH" value="" />
|
||||||
|
<option name="PROGRAM_PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="" />
|
||||||
|
<option name="PASS_PARENT_ENVS" value="1" />
|
||||||
|
<option name="USE_EXTERNAL_CONSOLE" value="0" />
|
||||||
|
<option name="USE_MONO" value="0" />
|
||||||
|
<option name="RUNTIME_ARGUMENTS" value="" />
|
||||||
|
<option name="PROJECT_PATH" value="$PROJECT_DIR$/Module_Manager/Module_Manager.csproj" />
|
||||||
|
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_KIND" value="DotNetCore" />
|
||||||
|
<option name="PROJECT_TFM" value="" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Build" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration name="Mudule Manager" type="DotNetProject" factoryName=".NET Project">
|
||||||
|
<option name="EXE_PATH" value="" />
|
||||||
|
<option name="PROGRAM_PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="" />
|
||||||
|
<option name="PASS_PARENT_ENVS" value="1" />
|
||||||
|
<option name="USE_EXTERNAL_CONSOLE" value="0" />
|
||||||
|
<option name="USE_MONO" value="0" />
|
||||||
|
<option name="RUNTIME_ARGUMENTS" value="" />
|
||||||
|
<option name="PROJECT_PATH" value="$PROJECT_DIR$/Mudule Manager/Mudule Manager.csproj" />
|
||||||
|
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_KIND" value="DotNetCore" />
|
||||||
|
<option name="PROJECT_TFM" value="" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Build" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration name="file finder test" type="DotNetProject" factoryName=".NET Project">
|
||||||
|
<option name="EXE_PATH" value="" />
|
||||||
|
<option name="PROGRAM_PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="" />
|
||||||
|
<option name="PASS_PARENT_ENVS" value="1" />
|
||||||
|
<option name="USE_EXTERNAL_CONSOLE" value="0" />
|
||||||
|
<option name="USE_MONO" value="0" />
|
||||||
|
<option name="RUNTIME_ARGUMENTS" value="" />
|
||||||
|
<option name="PROJECT_PATH" value="$PROJECT_DIR$/file finder test/file finder test.csproj" />
|
||||||
|
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
|
||||||
|
<option name="PROJECT_KIND" value="DotNetCore" />
|
||||||
|
<option name="PROJECT_TFM" value="" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Build" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="Default task">
|
||||||
|
<changelist id="8b992919-b338-42d6-a9e0-9920b3435f35" name="Changes" comment="" />
|
||||||
|
<created>1745927066187</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1745927066187</updated>
|
||||||
|
<workItem from="1745927067287" duration="5073000" />
|
||||||
|
<workItem from="1745996630719" duration="6783000" />
|
||||||
|
<workItem from="1746045982862" duration="1518000" />
|
||||||
|
<workItem from="1746079248348" duration="10000" />
|
||||||
|
<workItem from="1746079294192" duration="62000" />
|
||||||
|
<workItem from="1746776239424" duration="1269000" />
|
||||||
|
<workItem from="1746793538833" duration="1802000" />
|
||||||
|
<workItem from="1747381902319" duration="699000" />
|
||||||
|
<workItem from="1747636814735" duration="1363000" />
|
||||||
|
<workItem from="1747726736242" duration="3824000" />
|
||||||
|
<workItem from="1747989719598" duration="13921000" />
|
||||||
|
</task>
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
|
<option name="version" value="3" />
|
||||||
|
</component>
|
||||||
|
<component name="UnityProjectConfiguration" hasMinimizedUI="false" />
|
||||||
|
<component name="VcsManagerConfiguration">
|
||||||
|
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="XSLT-Support.FileAssociations.UIState">
|
||||||
|
<expand />
|
||||||
|
<select />
|
||||||
|
</component>
|
||||||
|
</project>
|
9
ShadowStream/App.xaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<Application x:Class="ModuleManager.App"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:local="clr-namespace:ModuleManager"
|
||||||
|
StartupUri="MainWindow.xaml">
|
||||||
|
<Application.Resources>
|
||||||
|
|
||||||
|
</Application.Resources>
|
||||||
|
</Application>
|
12
ShadowStream/App.xaml.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
using System.Configuration;
|
||||||
|
using System.Data;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace ModuleManager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for App.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class App : Application
|
||||||
|
{
|
||||||
|
}
|
10
ShadowStream/AssemblyInfo.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
[assembly: ThemeInfo(
|
||||||
|
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||||
|
//(used if a resource is not found in the page,
|
||||||
|
// or application resource dictionaries)
|
||||||
|
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||||
|
//(used if a resource is not found in the page,
|
||||||
|
// app, or any theme specific resource dictionaries)
|
||||||
|
)]
|
43
ShadowStream/LogHelper/LogHelper.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
//namespace Scheckenrennen_GUI.modules
|
||||||
|
//Quinn Grafe Schnecken rennen
|
||||||
|
namespace ShadowStream.LogHelper
|
||||||
|
{
|
||||||
|
public class LogHelper
|
||||||
|
{
|
||||||
|
private List<string> logEntries;
|
||||||
|
|
||||||
|
public LogHelper()
|
||||||
|
{
|
||||||
|
logEntries = new List<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Log(string entry)
|
||||||
|
{
|
||||||
|
AddEntry($"[{DateTime.Now:HH:mm:ss}] [INFO ] {entry}");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Warn(string entry)
|
||||||
|
{
|
||||||
|
AddEntry($"[{DateTime.Now:HH:mm:ss}] [WARN ] {entry}");
|
||||||
|
}
|
||||||
|
public void Error(string entry)
|
||||||
|
{
|
||||||
|
AddEntry($"[{DateTime.Now:HH:mm:ss}] [ERROR] {entry}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void AddEntry(string entry)
|
||||||
|
{
|
||||||
|
logEntries.Add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<string> GetEntries()
|
||||||
|
{
|
||||||
|
return logEntries;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
ShadowStream/LogHelper/LogWindow.xaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!-- Quinn Grafe Schencken rennen-->
|
||||||
|
<Window x:Class="ModuleManager.LogWindow"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:local="clr-namespace:ModuleManager"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Title="LogWindow" Height="450" Width="800">
|
||||||
|
<Grid>
|
||||||
|
<TextBox Foreground="Gray" Background="Black" FontFamily="consolas" Name="LogBox" IsReadOnly="True"></TextBox>
|
||||||
|
</Grid>
|
||||||
|
</Window>
|
24
ShadowStream/LogHelper/LogWindow.xaml.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
//Quinn Grafe Schnecken rennen.
|
||||||
|
namespace ModuleManager;
|
||||||
|
public partial class LogWindow : Window
|
||||||
|
{
|
||||||
|
public LogWindow(List<string> logText)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
foreach (var s in logText)
|
||||||
|
{
|
||||||
|
LogBox.Text += s + Environment.NewLine;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddLogEntry(string logEntry)
|
||||||
|
{
|
||||||
|
LogBox.Text += logEntry + Environment.NewLine;
|
||||||
|
// Force scroll to the bottom
|
||||||
|
LogBox.ScrollToEnd();
|
||||||
|
}
|
||||||
|
}
|
12
ShadowStream/LogIn.xaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<Window x:Class="ShadowStream.LogIn"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:local="clr-namespace:ShadowStream"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Title="LogIn" Height="450" Width="800">
|
||||||
|
<Grid>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</Window>
|
14
ShadowStream/LogIn.xaml.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System.Windows;
|
||||||
|
using file_finder__test;
|
||||||
|
using file_finder__test.DataBaseModules;
|
||||||
|
|
||||||
|
namespace ShadowStream;
|
||||||
|
|
||||||
|
public partial class LogIn : Window
|
||||||
|
{
|
||||||
|
DataBase dataBase = new DataBase();
|
||||||
|
public LogIn()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
32
ShadowStream/MainWindow.xaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<Window x:Class="ModuleManager.MainWindow"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:local="clr-namespace:ModuleManager"
|
||||||
|
xmlns:vlc="clr-namespace:LibVLCSharp.WPF;assembly=LibVLCSharp.WPF"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Title="MainWindow" Height="450" Width="800">
|
||||||
|
<Grid Name="MaiGrid" ShowGridLines="True">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="200"></ColumnDefinition>
|
||||||
|
<ColumnDefinition></ColumnDefinition>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="30"></RowDefinition>
|
||||||
|
<RowDefinition></RowDefinition>
|
||||||
|
<RowDefinition Height="50"></RowDefinition>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<!--top pannel-->
|
||||||
|
<DockPanel Grid.Column="1">
|
||||||
|
|
||||||
|
</DockPanel>
|
||||||
|
<!--Categorien-->
|
||||||
|
<DockPanel Name="Categorien" Grid.Row="1">
|
||||||
|
|
||||||
|
</DockPanel>
|
||||||
|
<Button Grid.Row="2" Content="Settings"></Button>
|
||||||
|
|
||||||
|
<vlc:VideoView Grid.Column="1" Grid.Row="1" Grid.RowSpan="2"></vlc:VideoView>
|
||||||
|
</Grid>
|
||||||
|
</Window>
|
99
ShadowStream/MainWindow.xaml.cs
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
using System.Text;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using file_finder__test;
|
||||||
|
using ShadowStream;
|
||||||
|
using ShadowStream.LogHelper;
|
||||||
|
using ShadowStream.Obejeckte;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace ModuleManager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for MainWindow.xaml
|
||||||
|
/// </summary>
|
||||||
|
//Quinn and Reda and Yazan
|
||||||
|
public partial class MainWindow : Window
|
||||||
|
{
|
||||||
|
private static LogHelper loghelper = new LogHelper();
|
||||||
|
LogWindow log = new LogWindow(loghelper.GetEntries());
|
||||||
|
|
||||||
|
private Catagory Muvie = new Catagory("Muvie");
|
||||||
|
private Catagory Serie = new Catagory("Serie");
|
||||||
|
private Catagory Music = new Catagory("Music");
|
||||||
|
private Catagory Photo = new Catagory("Photos");
|
||||||
|
|
||||||
|
List<string> suportedVidioFiles = new List<string>();
|
||||||
|
List<string> suportedMusicFiles = new List<string>();
|
||||||
|
List<string> suportedPhotoFiles = new List<string>();
|
||||||
|
|
||||||
|
List<string> dirs = new List<string>();
|
||||||
|
FileScanner fileScanner;
|
||||||
|
public MainWindow()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
//Initialise but Hide
|
||||||
|
log.Hide();
|
||||||
|
this.Hide();
|
||||||
|
//Begin Login Process
|
||||||
|
var login = new LogIn();
|
||||||
|
login.Show();
|
||||||
|
//adding all extensions... example values added
|
||||||
|
suportedVidioFiles.Add("mp4");
|
||||||
|
suportedVidioFiles.Add("mkv");
|
||||||
|
suportedMusicFiles.Add("wav");
|
||||||
|
suportedMusicFiles.Add("mp3");
|
||||||
|
suportedPhotoFiles.Add("jpg");
|
||||||
|
Createscan();
|
||||||
|
dirs.Add("C:/");
|
||||||
|
|
||||||
|
//execute and wait for task completion
|
||||||
|
var tmp = fileScanner.ScanAllDrivesAsync();
|
||||||
|
|
||||||
|
//load json parallel to finding drives
|
||||||
|
//add code laiter
|
||||||
|
|
||||||
|
tmp.Wait();
|
||||||
|
foreach (var VARIABLE in tmp.Result)
|
||||||
|
{
|
||||||
|
dirs.Add(VARIABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadFromJson(string path, object obj)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void Createscan()
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
string[] tmp = new string[suportedMusicFiles.Count + suportedVidioFiles.Count + suportedPhotoFiles.Count];
|
||||||
|
foreach (var suportedVidioFile in suportedVidioFiles)
|
||||||
|
{
|
||||||
|
tmp[count] = suportedVidioFile;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var suportedMusicFile in suportedMusicFiles)
|
||||||
|
{
|
||||||
|
tmp[count] = suportedMusicFile;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var suportedPhotoFile in suportedPhotoFiles)
|
||||||
|
{
|
||||||
|
tmp[count] = suportedPhotoFile;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
fileScanner = new FileScanner(tmp);
|
||||||
|
}
|
||||||
|
}
|
22
ShadowStream/Obejeckte/Catagory.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
namespace ShadowStream.Obejeckte;
|
||||||
|
//Quinn
|
||||||
|
public class Catagory
|
||||||
|
{
|
||||||
|
public readonly string name;
|
||||||
|
List<Item> items = new List<Item>();
|
||||||
|
|
||||||
|
public Catagory(string name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addItem(Item item)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeAllItems()
|
||||||
|
{
|
||||||
|
items.Clear();
|
||||||
|
}
|
||||||
|
}
|
52
ShadowStream/Obejeckte/Item.cs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
|
||||||
|
namespace ShadowStream.Obejeckte;
|
||||||
|
//Quinn
|
||||||
|
public class Item
|
||||||
|
{
|
||||||
|
Label name;
|
||||||
|
string path;
|
||||||
|
string type;
|
||||||
|
BitmapImage image;
|
||||||
|
Button playButton;
|
||||||
|
bool isFoto;
|
||||||
|
|
||||||
|
|
||||||
|
public Item(string path, string type,BitmapImage image,bool isFoto)
|
||||||
|
{
|
||||||
|
this.path = path;
|
||||||
|
this.type = type;
|
||||||
|
this.name = new Label(){Name="name",Content = name};
|
||||||
|
this.image = image;
|
||||||
|
this.playButton = new Button();
|
||||||
|
playButton.Content = "Play";
|
||||||
|
this.isFoto = isFoto;
|
||||||
|
}
|
||||||
|
public (Label ,string,Button,BitmapImage,DockPanel) CreateLable(int[] gridPosition, Grid grid)
|
||||||
|
{
|
||||||
|
DockPanel dockPanel = new DockPanel();
|
||||||
|
DockPanel.SetDock(name, Dock.Top);
|
||||||
|
dockPanel.Children.Add(name);
|
||||||
|
dockPanel.Children.Add(playButton);
|
||||||
|
if (isFoto){
|
||||||
|
playButton.Content = "Show";
|
||||||
|
}
|
||||||
|
return (name,path,playButton,image,dockPanel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getLink()
|
||||||
|
{
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getFormat()
|
||||||
|
{
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getName()
|
||||||
|
{
|
||||||
|
return name.Content.ToString();
|
||||||
|
}
|
||||||
|
}
|
24
ShadowStream/ShadowStream.csproj
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<UseWPF>true</UseWPF>
|
||||||
|
<AssemblyName>ShadowStream</AssemblyName>
|
||||||
|
<RootNamespace>ShadowStream</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\file finder test\file finder test.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="LibVLCSharp" Version="3.9.3" />
|
||||||
|
<PackageReference Include="LibVLCSharp.WPF" Version="3.9.3" />
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
|
<PackageReference Include="VideoLAN.LibVLC.Windows" Version="3.0.21" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
BIN
ShadowStream/bin/Debug/net8.0-windows/LibVLCSharp.WPF.dll
Normal file
BIN
ShadowStream/bin/Debug/net8.0-windows/LibVLCSharp.dll
Normal file
847
ShadowStream/bin/Debug/net8.0-windows/ShadowStream.deps.json
Normal file
@ -0,0 +1,847 @@
|
|||||||
|
{
|
||||||
|
"runtimeTarget": {
|
||||||
|
"name": ".NETCoreApp,Version=v8.0",
|
||||||
|
"signature": ""
|
||||||
|
},
|
||||||
|
"compilationOptions": {},
|
||||||
|
"targets": {
|
||||||
|
".NETCoreApp,Version=v8.0": {
|
||||||
|
"ShadowStream/1.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"LibVLCSharp": "3.9.3",
|
||||||
|
"LibVLCSharp.WPF": "3.9.3",
|
||||||
|
"VideoLAN.LibVLC.Windows": "3.0.21"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"ShadowStream.dll": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"LibVLCSharp/3.9.3": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Net.Http": "4.3.4",
|
||||||
|
"System.Private.Uri": "4.3.2",
|
||||||
|
"System.Text.RegularExpressions": "4.3.1"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/LibVLCSharp.dll": {
|
||||||
|
"assemblyVersion": "3.9.3.0",
|
||||||
|
"fileVersion": "3.9.3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"LibVLCSharp.WPF/3.9.3": {
|
||||||
|
"dependencies": {
|
||||||
|
"LibVLCSharp": "3.9.3"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0-windows7.0/LibVLCSharp.WPF.dll": {
|
||||||
|
"assemblyVersion": "3.9.3.0",
|
||||||
|
"fileVersion": "3.9.3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.Platforms/1.1.1": {},
|
||||||
|
"Microsoft.NETCore.Targets/1.1.3": {},
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.native.System/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime.native.System.Net.Http/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime.native.System.Security.Cryptography.Apple/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"dependencies": {
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
|
||||||
|
"System.Collections/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Collections.Concurrent/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Diagnostics.Debug": "4.3.0",
|
||||||
|
"System.Diagnostics.Tracing": "4.3.0",
|
||||||
|
"System.Globalization": "4.3.0",
|
||||||
|
"System.Reflection": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Threading": "4.3.0",
|
||||||
|
"System.Threading.Tasks": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Diagnostics.Debug/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Diagnostics.DiagnosticSource/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Diagnostics.Tracing": "4.3.0",
|
||||||
|
"System.Reflection": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Threading": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Diagnostics.Tracing/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Globalization/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Globalization.Calendars/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Globalization": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Globalization.Extensions/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"System.Globalization": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Runtime.InteropServices": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.IO/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Text.Encoding": "4.3.0",
|
||||||
|
"System.Threading.Tasks": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.IO.FileSystem/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.IO.FileSystem.Primitives": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Handles": "4.3.0",
|
||||||
|
"System.Text.Encoding": "4.3.0",
|
||||||
|
"System.Threading.Tasks": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.IO.FileSystem.Primitives/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Linq/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Diagnostics.Debug": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Net.Http/4.3.4": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Diagnostics.Debug": "4.3.0",
|
||||||
|
"System.Diagnostics.DiagnosticSource": "4.3.0",
|
||||||
|
"System.Diagnostics.Tracing": "4.3.0",
|
||||||
|
"System.Globalization": "4.3.0",
|
||||||
|
"System.Globalization.Extensions": "4.3.0",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.IO.FileSystem": "4.3.0",
|
||||||
|
"System.Net.Primitives": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Runtime.Handles": "4.3.0",
|
||||||
|
"System.Runtime.InteropServices": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Algorithms": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Encoding": "4.3.0",
|
||||||
|
"System.Security.Cryptography.OpenSsl": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Primitives": "4.3.0",
|
||||||
|
"System.Security.Cryptography.X509Certificates": "4.3.0",
|
||||||
|
"System.Text.Encoding": "4.3.0",
|
||||||
|
"System.Threading": "4.3.0",
|
||||||
|
"System.Threading.Tasks": "4.3.0",
|
||||||
|
"runtime.native.System": "4.3.0",
|
||||||
|
"runtime.native.System.Net.Http": "4.3.0",
|
||||||
|
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Net.Primitives/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Handles": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Private.Uri/4.3.2": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Reflection/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.Reflection.Primitives": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Reflection.Primitives/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Resources.ResourceManager/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Globalization": "4.3.0",
|
||||||
|
"System.Reflection": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Runtime/4.3.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Runtime.Extensions/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Runtime.Handles/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Runtime.InteropServices/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Reflection": "4.3.0",
|
||||||
|
"System.Reflection.Primitives": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Handles": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Runtime.Numerics/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Globalization": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Algorithms/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Runtime.Handles": "4.3.0",
|
||||||
|
"System.Runtime.InteropServices": "4.3.0",
|
||||||
|
"System.Runtime.Numerics": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Encoding": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Primitives": "4.3.0",
|
||||||
|
"System.Text.Encoding": "4.3.0",
|
||||||
|
"runtime.native.System.Security.Cryptography.Apple": "4.3.0",
|
||||||
|
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Cng/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Runtime.Handles": "4.3.0",
|
||||||
|
"System.Runtime.InteropServices": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Algorithms": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Encoding": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Primitives": "4.3.0",
|
||||||
|
"System.Text.Encoding": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Csp/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.Reflection": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Runtime.Handles": "4.3.0",
|
||||||
|
"System.Runtime.InteropServices": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Algorithms": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Encoding": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Primitives": "4.3.0",
|
||||||
|
"System.Text.Encoding": "4.3.0",
|
||||||
|
"System.Threading": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Encoding/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Collections.Concurrent": "4.3.0",
|
||||||
|
"System.Linq": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Runtime.Handles": "4.3.0",
|
||||||
|
"System.Runtime.InteropServices": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Primitives": "4.3.0",
|
||||||
|
"System.Text.Encoding": "4.3.0",
|
||||||
|
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.OpenSsl/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Runtime.Handles": "4.3.0",
|
||||||
|
"System.Runtime.InteropServices": "4.3.0",
|
||||||
|
"System.Runtime.Numerics": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Algorithms": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Encoding": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Primitives": "4.3.0",
|
||||||
|
"System.Text.Encoding": "4.3.0",
|
||||||
|
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Primitives/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Diagnostics.Debug": "4.3.0",
|
||||||
|
"System.Globalization": "4.3.0",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Threading": "4.3.0",
|
||||||
|
"System.Threading.Tasks": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.X509Certificates/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Diagnostics.Debug": "4.3.0",
|
||||||
|
"System.Globalization": "4.3.0",
|
||||||
|
"System.Globalization.Calendars": "4.3.0",
|
||||||
|
"System.IO": "4.3.0",
|
||||||
|
"System.IO.FileSystem": "4.3.0",
|
||||||
|
"System.IO.FileSystem.Primitives": "4.3.0",
|
||||||
|
"System.Resources.ResourceManager": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Runtime.Extensions": "4.3.0",
|
||||||
|
"System.Runtime.Handles": "4.3.0",
|
||||||
|
"System.Runtime.InteropServices": "4.3.0",
|
||||||
|
"System.Runtime.Numerics": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Algorithms": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Cng": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Csp": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Encoding": "4.3.0",
|
||||||
|
"System.Security.Cryptography.OpenSsl": "4.3.0",
|
||||||
|
"System.Security.Cryptography.Primitives": "4.3.0",
|
||||||
|
"System.Text.Encoding": "4.3.0",
|
||||||
|
"System.Threading": "4.3.0",
|
||||||
|
"runtime.native.System": "4.3.0",
|
||||||
|
"runtime.native.System.Net.Http": "4.3.0",
|
||||||
|
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Text.Encoding/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Text.RegularExpressions/4.3.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Threading/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Runtime": "4.3.1",
|
||||||
|
"System.Threading.Tasks": "4.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Threading.Tasks/4.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.1",
|
||||||
|
"Microsoft.NETCore.Targets": "1.1.3",
|
||||||
|
"System.Runtime": "4.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VideoLAN.LibVLC.Windows/3.0.21": {},
|
||||||
|
"file finder test/1.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"file finder test.dll": {
|
||||||
|
"assemblyVersion": "1.0.0",
|
||||||
|
"fileVersion": "1.0.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"ShadowStream/1.0.0": {
|
||||||
|
"type": "project",
|
||||||
|
"serviceable": false,
|
||||||
|
"sha512": ""
|
||||||
|
},
|
||||||
|
"LibVLCSharp/3.9.3": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-af6EBu2bQksw3u6WQ6f18aJN7GenOMmGY8WAAVr2p2RCESg5Usau1/8yxWIJCjsasUY5wQjKAKdVpGpvGFtP+g==",
|
||||||
|
"path": "libvlcsharp/3.9.3",
|
||||||
|
"hashPath": "libvlcsharp.3.9.3.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"LibVLCSharp.WPF/3.9.3": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-Kh7Zz2ItFzrI0vgWF7qT7rHl4+KWsxmqLy3K7DD9Pm7xDIbmheL7P+cHJhgvCPTT2qtEniCD13ctiDe5sDvh2Q==",
|
||||||
|
"path": "libvlcsharp.wpf/3.9.3",
|
||||||
|
"hashPath": "libvlcsharp.wpf.3.9.3.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.Platforms/1.1.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ==",
|
||||||
|
"path": "microsoft.netcore.platforms/1.1.1",
|
||||||
|
"hashPath": "microsoft.netcore.platforms.1.1.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.Targets/1.1.3": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==",
|
||||||
|
"path": "microsoft.netcore.targets/1.1.3",
|
||||||
|
"hashPath": "microsoft.netcore.targets.1.1.3.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==",
|
||||||
|
"path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==",
|
||||||
|
"path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==",
|
||||||
|
"path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.native.System/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
|
||||||
|
"path": "runtime.native.system/4.3.0",
|
||||||
|
"hashPath": "runtime.native.system.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.native.System.Net.Http/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
|
||||||
|
"path": "runtime.native.system.net.http/4.3.0",
|
||||||
|
"hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.native.System.Security.Cryptography.Apple/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
|
||||||
|
"path": "runtime.native.system.security.cryptography.apple/4.3.0",
|
||||||
|
"hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==",
|
||||||
|
"path": "runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==",
|
||||||
|
"path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==",
|
||||||
|
"path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==",
|
||||||
|
"path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0",
|
||||||
|
"hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==",
|
||||||
|
"path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==",
|
||||||
|
"path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==",
|
||||||
|
"path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==",
|
||||||
|
"path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==",
|
||||||
|
"path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
|
||||||
|
"hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Collections/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
|
||||||
|
"path": "system.collections/4.3.0",
|
||||||
|
"hashPath": "system.collections.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Collections.Concurrent/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
|
||||||
|
"path": "system.collections.concurrent/4.3.0",
|
||||||
|
"hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Diagnostics.Debug/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
|
||||||
|
"path": "system.diagnostics.debug/4.3.0",
|
||||||
|
"hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Diagnostics.DiagnosticSource/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==",
|
||||||
|
"path": "system.diagnostics.diagnosticsource/4.3.0",
|
||||||
|
"hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Diagnostics.Tracing/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
|
||||||
|
"path": "system.diagnostics.tracing/4.3.0",
|
||||||
|
"hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Globalization/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
|
||||||
|
"path": "system.globalization/4.3.0",
|
||||||
|
"hashPath": "system.globalization.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Globalization.Calendars/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
|
||||||
|
"path": "system.globalization.calendars/4.3.0",
|
||||||
|
"hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Globalization.Extensions/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
|
||||||
|
"path": "system.globalization.extensions/4.3.0",
|
||||||
|
"hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.IO/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
|
||||||
|
"path": "system.io/4.3.0",
|
||||||
|
"hashPath": "system.io.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.IO.FileSystem/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
|
||||||
|
"path": "system.io.filesystem/4.3.0",
|
||||||
|
"hashPath": "system.io.filesystem.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.IO.FileSystem.Primitives/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
|
||||||
|
"path": "system.io.filesystem.primitives/4.3.0",
|
||||||
|
"hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Linq/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
|
||||||
|
"path": "system.linq/4.3.0",
|
||||||
|
"hashPath": "system.linq.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Net.Http/4.3.4": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==",
|
||||||
|
"path": "system.net.http/4.3.4",
|
||||||
|
"hashPath": "system.net.http.4.3.4.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Net.Primitives/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
|
||||||
|
"path": "system.net.primitives/4.3.0",
|
||||||
|
"hashPath": "system.net.primitives.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Private.Uri/4.3.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-o1+7RJnu3Ik3PazR7Z7tJhjPdE000Eq2KGLLWhqJJKXj04wrS8lwb1OFtDF9jzXXADhUuZNJZlPc98uwwqmpFA==",
|
||||||
|
"path": "system.private.uri/4.3.2",
|
||||||
|
"hashPath": "system.private.uri.4.3.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Reflection/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
|
||||||
|
"path": "system.reflection/4.3.0",
|
||||||
|
"hashPath": "system.reflection.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Reflection.Primitives/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
|
||||||
|
"path": "system.reflection.primitives/4.3.0",
|
||||||
|
"hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Resources.ResourceManager/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
|
||||||
|
"path": "system.resources.resourcemanager/4.3.0",
|
||||||
|
"hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Runtime/4.3.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==",
|
||||||
|
"path": "system.runtime/4.3.1",
|
||||||
|
"hashPath": "system.runtime.4.3.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Runtime.Extensions/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
|
||||||
|
"path": "system.runtime.extensions/4.3.0",
|
||||||
|
"hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Runtime.Handles/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
|
||||||
|
"path": "system.runtime.handles/4.3.0",
|
||||||
|
"hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Runtime.InteropServices/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
|
||||||
|
"path": "system.runtime.interopservices/4.3.0",
|
||||||
|
"hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Runtime.Numerics/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
|
||||||
|
"path": "system.runtime.numerics/4.3.0",
|
||||||
|
"hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Algorithms/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
|
||||||
|
"path": "system.security.cryptography.algorithms/4.3.0",
|
||||||
|
"hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Cng/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
|
||||||
|
"path": "system.security.cryptography.cng/4.3.0",
|
||||||
|
"hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Csp/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
|
||||||
|
"path": "system.security.cryptography.csp/4.3.0",
|
||||||
|
"hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Encoding/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
|
||||||
|
"path": "system.security.cryptography.encoding/4.3.0",
|
||||||
|
"hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.OpenSsl/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
|
||||||
|
"path": "system.security.cryptography.openssl/4.3.0",
|
||||||
|
"hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.Primitives/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
|
||||||
|
"path": "system.security.cryptography.primitives/4.3.0",
|
||||||
|
"hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Security.Cryptography.X509Certificates/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
|
||||||
|
"path": "system.security.cryptography.x509certificates/4.3.0",
|
||||||
|
"hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Text.Encoding/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
|
||||||
|
"path": "system.text.encoding/4.3.0",
|
||||||
|
"hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Text.RegularExpressions/4.3.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==",
|
||||||
|
"path": "system.text.regularexpressions/4.3.1",
|
||||||
|
"hashPath": "system.text.regularexpressions.4.3.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Threading/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
|
||||||
|
"path": "system.threading/4.3.0",
|
||||||
|
"hashPath": "system.threading.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Threading.Tasks/4.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
|
||||||
|
"path": "system.threading.tasks/4.3.0",
|
||||||
|
"hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"VideoLAN.LibVLC.Windows/3.0.21": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-1b1yjZPIzS2+s6YZv9Z5Co/q2srIvo03ZToPvZblWreeyeFGkLDwX7WZat8AxCB9uMQV6VUnms67SgQqko7Z0w==",
|
||||||
|
"path": "videolan.libvlc.windows/3.0.21",
|
||||||
|
"hashPath": "videolan.libvlc.windows.3.0.21.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"file finder test/1.0.0": {
|
||||||
|
"type": "project",
|
||||||
|
"serviceable": false,
|
||||||
|
"sha512": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
ShadowStream/bin/Debug/net8.0-windows/ShadowStream.dll
Normal file
BIN
ShadowStream/bin/Debug/net8.0-windows/ShadowStream.exe
Normal file
BIN
ShadowStream/bin/Debug/net8.0-windows/ShadowStream.pdb
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"runtimeOptions": {
|
||||||
|
"tfm": "net8.0",
|
||||||
|
"frameworks": [
|
||||||
|
{
|
||||||
|
"name": "Microsoft.NETCore.App",
|
||||||
|
"version": "8.0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.WindowsDesktop.App",
|
||||||
|
"version": "8.0.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configProperties": {
|
||||||
|
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"runtimeTarget": {
|
||||||
|
"name": ".NETCoreApp,Version=v8.0",
|
||||||
|
"signature": ""
|
||||||
|
},
|
||||||
|
"compilationOptions": {},
|
||||||
|
"targets": {
|
||||||
|
".NETCoreApp,Version=v8.0": {
|
||||||
|
"file finder test/1.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"file finder test.dll": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"file finder test/1.0.0": {
|
||||||
|
"type": "project",
|
||||||
|
"serviceable": false,
|
||||||
|
"sha512": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
ShadowStream/bin/Debug/net8.0-windows/file finder test.dll
Normal file
BIN
ShadowStream/bin/Debug/net8.0-windows/file finder test.exe
Normal file
BIN
ShadowStream/bin/Debug/net8.0-windows/file finder test.pdb
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"runtimeOptions": {
|
||||||
|
"tfm": "net8.0",
|
||||||
|
"framework": {
|
||||||
|
"name": "Microsoft.NETCore.App",
|
||||||
|
"version": "8.0.0"
|
||||||
|
},
|
||||||
|
"configProperties": {
|
||||||
|
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
ShadowStream/bin/Debug/net8.0-windows/libvlc/win-x64/libvlc.dll
Normal file
BIN
ShadowStream/bin/Debug/net8.0-windows/libvlc/win-x64/libvlc.lib
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
root {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
}
|
||||||
|
#mainContainer{
|
||||||
|
text-align: center;
|
||||||
|
width: 800px;
|
||||||
|
}
|
||||||
|
#controlContainer{
|
||||||
|
width: 800px;
|
||||||
|
}
|
||||||
|
#libraryContainer{
|
||||||
|
width: 800px;
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
#libraryTree{
|
||||||
|
height: 300px;
|
||||||
|
overflow: auto;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
#viewContainer{
|
||||||
|
width: 800px;
|
||||||
|
}
|
||||||
|
#mediaViewer{
|
||||||
|
min-height: 500px;
|
||||||
|
background-color:#222;
|
||||||
|
}
|
||||||
|
#player{
|
||||||
|
top:0px;
|
||||||
|
height: 500px;
|
||||||
|
width: 500px;
|
||||||
|
background-color:#222;
|
||||||
|
}
|
||||||
|
#seekSlider{
|
||||||
|
width: 98%;
|
||||||
|
margin-left:5px;
|
||||||
|
}
|
||||||
|
#volumeSlider{
|
||||||
|
width: 100px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#currentVolume{
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#mediaTitle{
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 10px;
|
||||||
|
width: 600px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 5px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
#currentTime{
|
||||||
|
margin-top:-40px;
|
||||||
|
float: left;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#totalTime{
|
||||||
|
margin-top:-40px;
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#controlTable{
|
||||||
|
position:relative;
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
#controlButtons{
|
||||||
|
position: absolute;
|
||||||
|
top: 80px;
|
||||||
|
left: 10px;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonszone{
|
||||||
|
position:absolute;
|
||||||
|
width: 20px;
|
||||||
|
margin-left:-20px;
|
||||||
|
vertical-align:top;
|
||||||
|
padding:0px;
|
||||||
|
font-size:0px;
|
||||||
|
line-height:0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buttonszone1 {
|
||||||
|
top: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buttonszone2 {
|
||||||
|
top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonszone li{
|
||||||
|
float:left;
|
||||||
|
clear:left;
|
||||||
|
font-size:0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonszone li span{
|
||||||
|
float:left
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonszone_active {
|
||||||
|
margin-top: 0px;
|
||||||
|
width: 120px;
|
||||||
|
margin-left:-122px;
|
||||||
|
font-size:10px;
|
||||||
|
line-height:16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonszone_active li {
|
||||||
|
width:120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#volumesliderzone{
|
||||||
|
position: absolute;
|
||||||
|
top: 105px;
|
||||||
|
left: 410px;
|
||||||
|
width: 210px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#volumeSlider{
|
||||||
|
width: 208px;
|
||||||
|
}
|
||||||
|
#libraryTree ul li a {
|
||||||
|
border:none;
|
||||||
|
}
|
||||||
|
#artszone{
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
right: 10px;
|
||||||
|
width: 150px;
|
||||||
|
height: 150px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
#seekContainer{
|
||||||
|
position:absolute;
|
||||||
|
left: 5px;
|
||||||
|
top: 55px;
|
||||||
|
width: 79%;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button48{
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
margin: 5px 0px 5px 2px;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
display: inline-block;
|
||||||
|
list-style: none;
|
||||||
|
float:left;
|
||||||
|
cursor: pointer;
|
||||||
|
background-image: url("../images/buttons.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
.button48:hover{
|
||||||
|
filter: alpha(opacity:0.5);
|
||||||
|
-ms-filter: "alpha(opacity=50)";
|
||||||
|
-khtml-opacity: 0.50;
|
||||||
|
-moz-opacity: 0.5;
|
||||||
|
filter: alpha(opacity=50);
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button{
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#buttonOpen{
|
||||||
|
background-position: 0px 0px;
|
||||||
|
}
|
||||||
|
#buttonStop{
|
||||||
|
background-position: -576px 0px;
|
||||||
|
}
|
||||||
|
.playing {
|
||||||
|
background-position: -336px 0px;
|
||||||
|
}
|
||||||
|
.paused {
|
||||||
|
background-position: -384px 0px;
|
||||||
|
}
|
||||||
|
#buttonPrev{
|
||||||
|
background-position: -144px 0px;
|
||||||
|
}
|
||||||
|
#buttonNext{
|
||||||
|
background-position: -288px 0px;
|
||||||
|
}
|
||||||
|
#buttonFull{
|
||||||
|
background-position: -192px 0px;
|
||||||
|
}
|
||||||
|
#buttonSout{
|
||||||
|
background-position: -624px 0px;
|
||||||
|
}
|
||||||
|
#buttonEQ{
|
||||||
|
background-position: -48px 0px;
|
||||||
|
}
|
||||||
|
#window_browse ol{
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
#window_browse ol li{
|
||||||
|
list-style-type: none;
|
||||||
|
float: left;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.system_icon{
|
||||||
|
width:80px;
|
||||||
|
text-align:center;
|
||||||
|
vertical-align:top;
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 2px;
|
||||||
|
border: 1px solid #823D0A;
|
||||||
|
margin: 2px;
|
||||||
|
height: 92px;
|
||||||
|
background-color: #E1E1E1;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
#window_create_stream table tr td{
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window_equalizer div div{
|
||||||
|
text-align: center;
|
||||||
|
font-size: 11px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window_equalizer {
|
||||||
|
height:80px !important ;
|
||||||
|
}
|
||||||
|
|
||||||
|
.eqBand{
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
height: 400px;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.footer{
|
||||||
|
margin-top: 30px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.centered{
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden{
|
||||||
|
visibility: hidden;
|
||||||
|
display: none;
|
||||||
|
}
|
@ -0,0 +1,188 @@
|
|||||||
|
root {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#content{
|
||||||
|
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
font: 11pt Helvetica, Arial, sans-serif;
|
||||||
|
background-color:#EEE;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#libraryTree{
|
||||||
|
height: 300px;
|
||||||
|
overflow:scroll;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mediaViewer{
|
||||||
|
min-height: 500px;
|
||||||
|
}
|
||||||
|
#meta {
|
||||||
|
position:relative;
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
#seekSlider{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#volumeSlider{
|
||||||
|
width: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#currentVolume{
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#mediaTitle{
|
||||||
|
text-align:center;
|
||||||
|
width:100%;
|
||||||
|
margin-top:5px;
|
||||||
|
}
|
||||||
|
#currentTime{
|
||||||
|
float: left;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
#totalTime{
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
#play_controls, #controls{
|
||||||
|
margin-top:30px;
|
||||||
|
width:95%;
|
||||||
|
margin-left:auto;
|
||||||
|
margin-right:auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#controlTable{
|
||||||
|
position:relative;
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buttonszone li{
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#art{
|
||||||
|
top:0px;
|
||||||
|
width:150px;
|
||||||
|
height:150px;
|
||||||
|
margin:0 auto;
|
||||||
|
box-sizing:border-box;
|
||||||
|
-webkit-box-sizing:border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-slider-range{
|
||||||
|
background-color:#FFB200;
|
||||||
|
background:#FFB200 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#buttons{
|
||||||
|
--button-scale: 1.2;
|
||||||
|
margin:0 auto;
|
||||||
|
position: relative;
|
||||||
|
width: calc(288px * var(--button-scale));
|
||||||
|
}
|
||||||
|
.button48{
|
||||||
|
width: calc(48px * var(--button-scale));
|
||||||
|
height: calc(48px * var(--button-scale));
|
||||||
|
margin: 5px 0px 5px 0px;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
background-image: url("../images/buttons.png");
|
||||||
|
background-size: calc(672px * var(--button-scale));
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button{
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#buttonOpen{
|
||||||
|
background-position: 0px 0px;
|
||||||
|
}
|
||||||
|
#buttonStop{
|
||||||
|
background-position: calc(-576px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
#buttonRewd{
|
||||||
|
background-position: calc(-528px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
#buttonFwrd{
|
||||||
|
background-position: calc(-96px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
.playing {
|
||||||
|
background-position: calc(-336px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
.paused {
|
||||||
|
background-position: calc(-384px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
#buttonPrev{
|
||||||
|
background-position: calc(-144px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
#buttonNext{
|
||||||
|
background-position: calc(-288px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
#buttonFull{
|
||||||
|
background-position: calc(-192px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
#buttonSout{
|
||||||
|
background-position: calc(-624px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
#buttonEQ{
|
||||||
|
background-position: calc(-48px * var(--button-scale)) 0px;
|
||||||
|
}
|
||||||
|
#window_browse ol{
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
#window_browse ol li{
|
||||||
|
list-style-type: none;
|
||||||
|
float: left;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.system_icon{
|
||||||
|
width:80px;
|
||||||
|
text-align:center;
|
||||||
|
vertical-align:top;
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 2px;
|
||||||
|
border: 1px solid #823D0A;
|
||||||
|
margin: 2px;
|
||||||
|
height: 92px;
|
||||||
|
background-color: #E1E1E1;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
#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{
|
||||||
|
margin-top: 30px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.centered{
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden{
|
||||||
|
visibility: hidden;
|
||||||
|
display: none;
|
||||||
|
}
|
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 197 B |
After Width: | Height: | Size: 147 B |
After Width: | Height: | Size: 103 B |
After Width: | Height: | Size: 115 B |
After Width: | Height: | Size: 95 B |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 88 B |
After Width: | Height: | Size: 126 B |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.1 KiB |
@ -0,0 +1,581 @@
|
|||||||
|
/*
|
||||||
|
* jQuery UI CSS Framework 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Theming/API
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Layout helpers
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-helper-hidden { display: none; }
|
||||||
|
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
|
||||||
|
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
||||||
|
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
||||||
|
.ui-helper-clearfix { display: inline-block; }
|
||||||
|
/* required comment for clearfix to work in Opera \*/
|
||||||
|
* html .ui-helper-clearfix { height:1%; }
|
||||||
|
.ui-helper-clearfix { display:block; }
|
||||||
|
/* end clearfix */
|
||||||
|
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
||||||
|
|
||||||
|
|
||||||
|
/* Interaction Cues
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-disabled { cursor: default !important; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Icons
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* states and images */
|
||||||
|
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc visuals
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* Overlays */
|
||||||
|
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* jQuery UI CSS Framework 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Theming/API
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Component containers
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
|
||||||
|
.ui-widget .ui-widget { font-size: 1em; }
|
||||||
|
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
|
||||||
|
|
||||||
|
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
|
||||||
|
.ui-widget-content a { color: #333333; }
|
||||||
|
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
|
||||||
|
.ui-widget-header a { color: #ffffff; }
|
||||||
|
|
||||||
|
/* Interaction states
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
|
||||||
|
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
|
||||||
|
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
|
||||||
|
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
|
||||||
|
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
|
||||||
|
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
|
||||||
|
.ui-widget :active { outline: none; }
|
||||||
|
|
||||||
|
/* Interaction Cues
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
|
||||||
|
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
|
||||||
|
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
|
||||||
|
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
|
||||||
|
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
|
||||||
|
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
||||||
|
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||||
|
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||||
|
.ui-selecting { background: #FECA40; }
|
||||||
|
.ui-selected { background: #F39814; color: white; }
|
||||||
|
|
||||||
|
/* Icons
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* states and images */
|
||||||
|
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
|
||||||
|
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
||||||
|
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
|
||||||
|
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||||
|
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||||
|
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||||
|
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
|
||||||
|
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
|
||||||
|
|
||||||
|
/* positioning */
|
||||||
|
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||||
|
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||||
|
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||||
|
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||||
|
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||||
|
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||||
|
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||||
|
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||||
|
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||||
|
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||||
|
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||||
|
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||||
|
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||||
|
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||||
|
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||||
|
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||||
|
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||||
|
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||||
|
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||||
|
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||||
|
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||||
|
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||||
|
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||||
|
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||||
|
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||||
|
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||||
|
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||||
|
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||||
|
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||||
|
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||||
|
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||||
|
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||||
|
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||||
|
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||||
|
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||||
|
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||||
|
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||||
|
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||||
|
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||||
|
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||||
|
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||||
|
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||||
|
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||||
|
.ui-icon-extlink { background-position: -32px -80px; }
|
||||||
|
.ui-icon-newwin { background-position: -48px -80px; }
|
||||||
|
.ui-icon-refresh { background-position: -64px -80px; }
|
||||||
|
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||||
|
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||||
|
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||||
|
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||||
|
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||||
|
.ui-icon-document { background-position: -32px -96px; }
|
||||||
|
.ui-icon-document-b { background-position: -48px -96px; }
|
||||||
|
.ui-icon-note { background-position: -64px -96px; }
|
||||||
|
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||||
|
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||||
|
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||||
|
.ui-icon-comment { background-position: -128px -96px; }
|
||||||
|
.ui-icon-person { background-position: -144px -96px; }
|
||||||
|
.ui-icon-print { background-position: -160px -96px; }
|
||||||
|
.ui-icon-trash { background-position: -176px -96px; }
|
||||||
|
.ui-icon-locked { background-position: -192px -96px; }
|
||||||
|
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||||
|
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||||
|
.ui-icon-tag { background-position: -240px -96px; }
|
||||||
|
.ui-icon-home { background-position: 0 -112px; }
|
||||||
|
.ui-icon-flag { background-position: -16px -112px; }
|
||||||
|
.ui-icon-calendar { background-position: -32px -112px; }
|
||||||
|
.ui-icon-cart { background-position: -48px -112px; }
|
||||||
|
.ui-icon-pencil { background-position: -64px -112px; }
|
||||||
|
.ui-icon-clock { background-position: -80px -112px; }
|
||||||
|
.ui-icon-disk { background-position: -96px -112px; }
|
||||||
|
.ui-icon-calculator { background-position: -112px -112px; }
|
||||||
|
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||||
|
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||||
|
.ui-icon-search { background-position: -160px -112px; }
|
||||||
|
.ui-icon-wrench { background-position: -176px -112px; }
|
||||||
|
.ui-icon-gear { background-position: -192px -112px; }
|
||||||
|
.ui-icon-heart { background-position: -208px -112px; }
|
||||||
|
.ui-icon-star { background-position: -224px -112px; }
|
||||||
|
.ui-icon-link { background-position: -240px -112px; }
|
||||||
|
.ui-icon-cancel { background-position: 0 -128px; }
|
||||||
|
.ui-icon-plus { background-position: -16px -128px; }
|
||||||
|
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||||
|
.ui-icon-minus { background-position: -48px -128px; }
|
||||||
|
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||||
|
.ui-icon-close { background-position: -80px -128px; }
|
||||||
|
.ui-icon-closethick { background-position: -96px -128px; }
|
||||||
|
.ui-icon-key { background-position: -112px -128px; }
|
||||||
|
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||||
|
.ui-icon-scissors { background-position: -144px -128px; }
|
||||||
|
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||||
|
.ui-icon-copy { background-position: -176px -128px; }
|
||||||
|
.ui-icon-contact { background-position: -192px -128px; }
|
||||||
|
.ui-icon-image { background-position: -208px -128px; }
|
||||||
|
.ui-icon-video { background-position: -224px -128px; }
|
||||||
|
.ui-icon-script { background-position: -240px -128px; }
|
||||||
|
.ui-icon-alert { background-position: 0 -144px; }
|
||||||
|
.ui-icon-info { background-position: -16px -144px; }
|
||||||
|
.ui-icon-notice { background-position: -32px -144px; }
|
||||||
|
.ui-icon-help { background-position: -48px -144px; }
|
||||||
|
.ui-icon-check { background-position: -64px -144px; }
|
||||||
|
.ui-icon-bullet { background-position: -80px -144px; }
|
||||||
|
.ui-icon-radio-off { background-position: -96px -144px; }
|
||||||
|
.ui-icon-radio-on { background-position: -112px -144px; }
|
||||||
|
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||||
|
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||||
|
.ui-icon-play { background-position: 0 -160px; }
|
||||||
|
.ui-icon-pause { background-position: -16px -160px; }
|
||||||
|
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||||
|
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||||
|
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||||
|
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||||
|
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||||
|
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||||
|
.ui-icon-stop { background-position: -96px -160px; }
|
||||||
|
.ui-icon-eject { background-position: -112px -160px; }
|
||||||
|
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||||
|
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||||
|
.ui-icon-power { background-position: 0 -176px; }
|
||||||
|
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||||
|
.ui-icon-signal { background-position: -32px -176px; }
|
||||||
|
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||||
|
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||||
|
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||||
|
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||||
|
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||||
|
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||||
|
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||||
|
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||||
|
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||||
|
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||||
|
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||||
|
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||||
|
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||||
|
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||||
|
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||||
|
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||||
|
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||||
|
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||||
|
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||||
|
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||||
|
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||||
|
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||||
|
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||||
|
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||||
|
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||||
|
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||||
|
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||||
|
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||||
|
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||||
|
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc visuals
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* Corner radius */
|
||||||
|
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
|
||||||
|
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
||||||
|
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
||||||
|
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
||||||
|
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
||||||
|
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
||||||
|
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
||||||
|
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
||||||
|
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
|
||||||
|
|
||||||
|
/* Overlays */
|
||||||
|
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
|
||||||
|
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
|
||||||
|
* jQuery UI Resizable 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Resizable#theming
|
||||||
|
*/
|
||||||
|
.ui-resizable { position: relative;}
|
||||||
|
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;
|
||||||
|
/* http://bugs.jqueryui.com/ticket/7233
|
||||||
|
- Resizable: resizable handles fail to work in IE if transparent and content overlaps
|
||||||
|
*/
|
||||||
|
background-image:url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=);
|
||||||
|
}
|
||||||
|
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
||||||
|
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
|
||||||
|
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
|
||||||
|
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
|
||||||
|
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
|
||||||
|
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
||||||
|
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
||||||
|
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
||||||
|
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
|
||||||
|
* jQuery UI Selectable 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Selectable#theming
|
||||||
|
*/
|
||||||
|
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
|
||||||
|
/*
|
||||||
|
* jQuery UI Accordion 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Accordion#theming
|
||||||
|
*/
|
||||||
|
/* IE/Win - Fix animation bug - #4615 */
|
||||||
|
.ui-accordion { width: 100%; }
|
||||||
|
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
|
||||||
|
.ui-accordion .ui-accordion-li-fix { display: inline; }
|
||||||
|
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
|
||||||
|
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
|
||||||
|
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
|
||||||
|
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
|
||||||
|
.ui-accordion .ui-accordion-content-active { display: block; }
|
||||||
|
/*
|
||||||
|
* jQuery UI Autocomplete 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Autocomplete#theming
|
||||||
|
*/
|
||||||
|
.ui-autocomplete { position: absolute; cursor: default; }
|
||||||
|
|
||||||
|
/* workarounds */
|
||||||
|
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* jQuery UI Menu 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Menu#theming
|
||||||
|
*/
|
||||||
|
.ui-menu {
|
||||||
|
list-style:none;
|
||||||
|
padding: 2px;
|
||||||
|
margin: 0;
|
||||||
|
display:block;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.ui-menu .ui-menu {
|
||||||
|
margin-top: -3px;
|
||||||
|
}
|
||||||
|
.ui-menu .ui-menu-item {
|
||||||
|
margin:0;
|
||||||
|
padding: 0;
|
||||||
|
zoom: 1;
|
||||||
|
float: left;
|
||||||
|
clear: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.ui-menu .ui-menu-item a {
|
||||||
|
text-decoration:none;
|
||||||
|
display:block;
|
||||||
|
padding:.2em .4em;
|
||||||
|
line-height:1.5;
|
||||||
|
zoom:1;
|
||||||
|
}
|
||||||
|
.ui-menu .ui-menu-item a.ui-state-hover,
|
||||||
|
.ui-menu .ui-menu-item a.ui-state-active {
|
||||||
|
font-weight: normal;
|
||||||
|
margin: -1px;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* jQuery UI Button 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Button#theming
|
||||||
|
*/
|
||||||
|
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
|
||||||
|
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
|
||||||
|
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
|
||||||
|
.ui-button-icons-only { width: 3.4em; }
|
||||||
|
button.ui-button-icons-only { width: 3.7em; }
|
||||||
|
|
||||||
|
/*button text element */
|
||||||
|
.ui-button .ui-button-text { display: block; line-height: 1.4; }
|
||||||
|
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
|
||||||
|
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
|
||||||
|
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
|
||||||
|
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
|
||||||
|
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
|
||||||
|
/* no icon support for input elements, provide padding by default */
|
||||||
|
input.ui-button { padding: .4em 1em; }
|
||||||
|
|
||||||
|
/*button icon element(s) */
|
||||||
|
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
|
||||||
|
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
|
||||||
|
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
||||||
|
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
||||||
|
|
||||||
|
/*button sets*/
|
||||||
|
.ui-buttonset { margin-right: 7px; }
|
||||||
|
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
|
||||||
|
|
||||||
|
/* workarounds */
|
||||||
|
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
|
||||||
|
/*
|
||||||
|
* jQuery UI Dialog 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Dialog#theming
|
||||||
|
*/
|
||||||
|
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
|
||||||
|
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
||||||
|
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
|
||||||
|
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
|
||||||
|
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
||||||
|
.ui-draggable .ui-dialog-titlebar { cursor: move; }
|
||||||
|
/*
|
||||||
|
* jQuery UI Slider 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Slider#theming
|
||||||
|
*/
|
||||||
|
.ui-slider { position: relative; text-align: left; }
|
||||||
|
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
||||||
|
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
|
||||||
|
|
||||||
|
.ui-slider-horizontal { height: .8em; }
|
||||||
|
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
||||||
|
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
||||||
|
|
||||||
|
.ui-slider-vertical { width: .8em; height: 100px; }
|
||||||
|
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
||||||
|
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
||||||
|
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
||||||
|
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
|
||||||
|
* jQuery UI Tabs 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Tabs#theming
|
||||||
|
*/
|
||||||
|
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
||||||
|
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
|
||||||
|
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
|
||||||
|
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
|
||||||
|
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
|
||||||
|
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
|
||||||
|
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
|
||||||
|
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
|
||||||
|
.ui-tabs .ui-tabs-hide { display: none !important; }
|
||||||
|
/*
|
||||||
|
* jQuery UI Datepicker 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Datepicker#theming
|
||||||
|
*/
|
||||||
|
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
|
||||||
|
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
||||||
|
.ui-datepicker .ui-datepicker-next { right:2px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
|
||||||
|
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
|
||||||
|
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
|
||||||
|
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
|
||||||
|
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
||||||
|
.ui-datepicker select.ui-datepicker-month,
|
||||||
|
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
||||||
|
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
||||||
|
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
||||||
|
.ui-datepicker td { border: 0; padding: 1px; }
|
||||||
|
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
||||||
|
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
||||||
|
|
||||||
|
/* with multiple calendars */
|
||||||
|
.ui-datepicker.ui-datepicker-multi { width:auto; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group { float:left; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
|
||||||
|
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
|
||||||
|
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
|
||||||
|
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
|
||||||
|
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
|
||||||
|
.ui-datepicker-row-break { clear:both; width:100%; }
|
||||||
|
|
||||||
|
/* RTL support */
|
||||||
|
.ui-datepicker-rtl { direction: rtl; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||||
|
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||||
|
|
||||||
|
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
|
||||||
|
.ui-datepicker-cover {
|
||||||
|
display: none; /*sorry for IE5*/
|
||||||
|
display/**/: block; /*sorry for IE5*/
|
||||||
|
position: absolute; /*must have*/
|
||||||
|
z-index: -1; /*must have*/
|
||||||
|
filter: mask(); /*must have*/
|
||||||
|
top: -4px; /*must have*/
|
||||||
|
left: -4px; /*must have*/
|
||||||
|
width: 200px; /*must have*/
|
||||||
|
height: 200px; /*must have*/
|
||||||
|
}/*
|
||||||
|
* jQuery UI Progressbar 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Progressbar#theming
|
||||||
|
*/
|
||||||
|
.ui-progressbar { height:2em; text-align: left; }
|
||||||
|
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
|
@ -0,0 +1,19 @@
|
|||||||
|
-- make xgettext fetch strings from html code
|
||||||
|
function gettext(text) print(vlc.gettext._(text)) end
|
||||||
|
|
||||||
|
local _G = _G
|
||||||
|
|
||||||
|
local dialogs = setmetatable({}, {
|
||||||
|
__index = function(self, name)
|
||||||
|
-- Cache the dialogs
|
||||||
|
return rawget(self, name) or
|
||||||
|
rawget(rawset(self, name, process(http_dir.."/dialogs/"..name)), name)
|
||||||
|
end})
|
||||||
|
|
||||||
|
_G.dialogs = function(...)
|
||||||
|
for i=1, select("#",...) do
|
||||||
|
dialogs[(select(i,...))]()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
_G.vlm = vlc.vlm()
|
@ -0,0 +1,32 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
$(function(){
|
||||||
|
$('#window_batch').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width: 600,
|
||||||
|
modal: true,
|
||||||
|
buttons:{
|
||||||
|
"<?vlc gettext("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');
|
||||||
|
},
|
||||||
|
"<?vlc gettext("Cancel") ?>":function(){
|
||||||
|
$(this).dialog('close');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
<div id="window_batch" title="<?vlc gettext("VLM Batch Commands") ?>">
|
||||||
|
<textarea id="batchCommand" cols="50" rows="16">
|
||||||
|
<?vlc gettext("#paste your VLM commands here") ?>
|
||||||
|
|
||||||
|
<?vlc gettext("#separate commands with a new line or a semi-colon") ?>
|
||||||
|
</textarea>
|
||||||
|
</div>
|
@ -0,0 +1,44 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
var browse_target = 'default';
|
||||||
|
$(function(){
|
||||||
|
$('#window_browse').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width: 600,
|
||||||
|
height: 650,
|
||||||
|
modal: true,
|
||||||
|
resizable: false,
|
||||||
|
buttons: {
|
||||||
|
"<?vlc gettext("Open") ?>":function(){
|
||||||
|
$('li.ui-selected','#browse_elements').each(function(){
|
||||||
|
$(this).dblclick();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
"<?vlc gettext("Enqueue") ?>": function() {
|
||||||
|
$('li.ui-selected','#browse_elements').each(function(){
|
||||||
|
var path = this.getAttribute('opendir') ? this.getAttribute('opendir') : this.getAttribute('openfile');
|
||||||
|
switch(browse_target){
|
||||||
|
default:
|
||||||
|
sendCommand('command=in_enqueue&input='+encodeURI(path));
|
||||||
|
setTimeout(function(){updatePlayList(true);},1000);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(this).dialog("close");
|
||||||
|
},
|
||||||
|
"<?vlc gettext("Cancel") ?>" : function(){
|
||||||
|
$(this).dialog("close")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="window_browse" title="<?vlc gettext("Media Browser") ?>">
|
||||||
|
<div style="height:500px;overflow: auto;">
|
||||||
|
<ol id='browse_elements' selectable="selectable">
|
||||||
|
<li><?vlc gettext("Play List") ?></li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,394 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
$(function(){
|
||||||
|
$('#stream_out_method').change(function(){
|
||||||
|
$('#output_options').empty();
|
||||||
|
switch($(this).val()){
|
||||||
|
case 'file':
|
||||||
|
var options = $('#file_options').clone();
|
||||||
|
break;
|
||||||
|
case 'http':
|
||||||
|
var options = $('#net_options').clone();
|
||||||
|
break;
|
||||||
|
case 'mmsh':
|
||||||
|
case 'rtp':
|
||||||
|
case 'udp':
|
||||||
|
var options = $('#net_options').clone();
|
||||||
|
$('#stream_out_file_',options).val('');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$('[id]',options).each(function(){
|
||||||
|
$(this).attr('id',$(this).attr('id').substr(0,$(this).attr('id').length-1));
|
||||||
|
$(this).attr('name',$(this).attr('name').substr(0,$(this).attr('name').length-1));
|
||||||
|
});
|
||||||
|
$(options).css({
|
||||||
|
'visibility':'visible',
|
||||||
|
'display':'block'
|
||||||
|
})
|
||||||
|
$(options).appendTo('#output_options');
|
||||||
|
});
|
||||||
|
$('#stream_out_mux').change(function(){
|
||||||
|
if($(this).val()=='ffmpeg'){
|
||||||
|
$('#stream_out_mux_opts').val('{mux=flv}');
|
||||||
|
}else{
|
||||||
|
$('#stream_out_mux_opts').val('');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#window_create_stream').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width:800,
|
||||||
|
modal: true,
|
||||||
|
buttons:{
|
||||||
|
"<?vlc gettext("Create") ?>":function(){
|
||||||
|
var e = false;
|
||||||
|
$('input',$(this)).removeClass('ui-state-error');
|
||||||
|
$('#stream_error_container').css({
|
||||||
|
'visibility':'hidden',
|
||||||
|
'display':'none'
|
||||||
|
});
|
||||||
|
if(!$('#stream_name').val()){
|
||||||
|
$('#stream_name').addClass('ui-state-error');
|
||||||
|
e = true;
|
||||||
|
}
|
||||||
|
if(!$('#stream_input').val()){
|
||||||
|
$('#stream_input').addClass('ui-state-error');
|
||||||
|
e = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($('#stream_out_method').val()!='file' && !$('#stream_out_port').val()){
|
||||||
|
$('#stream_out_port').addClass('ui-state-error');
|
||||||
|
e = true;
|
||||||
|
}
|
||||||
|
if($('#stream_out_method').val()!='file' && !$('#stream_out_dest').val()){
|
||||||
|
$('#stream_out_dest').addClass('ui-state-error');
|
||||||
|
e = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($('#stream_out_method').val()=='file' && !$('#stream_out_filename').val()){
|
||||||
|
$('#stream_out_filename').addClass('ui-state-error');
|
||||||
|
e = true;
|
||||||
|
}
|
||||||
|
if(e){
|
||||||
|
$('#stream_error_message').empty();
|
||||||
|
$('#stream_error_message').append('One or more fields require attention.');
|
||||||
|
$('#stream_error_container').css({
|
||||||
|
'visibility':'visible',
|
||||||
|
'display':'block'
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
sendVLMCmd(buildStreamCode());
|
||||||
|
$(this).dialog('close');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"<?vlc gettext("Cancel") ?>":function(){
|
||||||
|
$(this).dialog('close');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#button_input').click(function(){
|
||||||
|
browse_target = '#stream_input';
|
||||||
|
browse();
|
||||||
|
$('#window_browse').dialog('open');
|
||||||
|
});
|
||||||
|
$('#button_in_screen').click(function(){
|
||||||
|
$('#stream_input').val('screen://');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
function buildStreamCode(){
|
||||||
|
var name = $('#stream_name').val().replace(' ','_');
|
||||||
|
var infile = $('#stream_input').val();
|
||||||
|
|
||||||
|
var vcodec = $('#stream_vcodec').val();
|
||||||
|
var vb = $('#stream_vb').val();
|
||||||
|
var fps = $('#stream_fps').val();
|
||||||
|
var scale = $('#stream_scale').val();
|
||||||
|
var dlace = $('#stream_deinterlace').is(':checked');
|
||||||
|
|
||||||
|
var acodec = $('#stream_acodec').val();
|
||||||
|
var ab = $('#stream_ab').val();
|
||||||
|
var srate = $('#stream_samplerate').val();
|
||||||
|
var channels = $('#stream_channels').val();
|
||||||
|
|
||||||
|
var scodec = $('#stream_scodec').val() && !$('#stream_soverlay').checked ? ','+$('#stream_scodec').val() : '';
|
||||||
|
var soverlay = $('#stream_soverlay').is(':checked') ? ',soverlay' : '';
|
||||||
|
|
||||||
|
var outmethod = $('#stream_out_method').val();
|
||||||
|
var mux = $('#stream_out_mux').val();
|
||||||
|
var muxoptions = $('#stream_out_mux_opts').val() ? '{'+$('#stream_out_mux_opts').val()+'}' : '';
|
||||||
|
|
||||||
|
if(outmethod=='file'){
|
||||||
|
var filename = $('#stream_out_filename').val();
|
||||||
|
}else{
|
||||||
|
var outport = $('#stream_out_port').val();
|
||||||
|
var outdest = $('#stream_out_dest').val();
|
||||||
|
var outfile = $('#stream_out_file').val();
|
||||||
|
}
|
||||||
|
var dest = outmethod=='file' ? filename : (outfile ? outdest+':'+outport+'/'+outfile : outdest+':'+outport);
|
||||||
|
var inCode = 'new '+name+' broadcast enabled input "'+infile+'" ';
|
||||||
|
var transCode = 'output #transcode{vcodec='+vcodec+',vb='+vb+',fps='+fps+',scale='+scale+',acodec='+acodec+',ab='+ab+',samplerate='+srate+',channels='+channels+scodec+soverlay+'}';
|
||||||
|
var outCode = ':std{access='+outmethod+',mux='+mux+muxoptions+',dst='+dest+'}';
|
||||||
|
|
||||||
|
return inCode+transCode+outCode;
|
||||||
|
}
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
<div id="window_create_stream" title="<?vlc gettext("Create Stream") ?>">
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top">
|
||||||
|
<h5><?vlc gettext("Stream name") ?></h5>
|
||||||
|
</td>
|
||||||
|
<td colspan="5" valign="top">
|
||||||
|
<input type="text" name="stream_name" id="stream_name" value=""/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2" valign="top">
|
||||||
|
<h5><?vlc gettext("Video") ?></h5>
|
||||||
|
</th>
|
||||||
|
<th colspan="2" valign="top">
|
||||||
|
<h5><?vlc gettext("Audio") ?></h5>
|
||||||
|
</th>
|
||||||
|
<th colspan="2" valign="top">
|
||||||
|
<h5><?vlc gettext("Subtitles") ?></h5>
|
||||||
|
</th>
|
||||||
|
<th colspan="2" valign="top">
|
||||||
|
<h5><?vlc gettext("Output") ?></h5>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Video codec") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_vcodec" id="stream_vcodec">
|
||||||
|
<option value="FLV1">FLV1</option>
|
||||||
|
<option value="mp1v">mp1v</option>
|
||||||
|
<option value="mp2v">mp2v</option>
|
||||||
|
<option value="mp4v">mp4v</option>
|
||||||
|
<option value="DIV1">DIV1</option>
|
||||||
|
<option value="DIV2">DIV2</option>
|
||||||
|
<option value="DIV3">DIV3</option>
|
||||||
|
<option value="h263">H263</option>
|
||||||
|
<option value="h264">H264</option>
|
||||||
|
<option value="WMV1">WMV1</option>
|
||||||
|
<option value="WMV2">WMV2</option>
|
||||||
|
<option value="MJPG">MJPG</option>
|
||||||
|
<option value="theo">theo</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Audio codec") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_acodec" id="stream_acodec">
|
||||||
|
<option value="mp3">mp3</option>
|
||||||
|
<option value="mpga">mpga</option>
|
||||||
|
<option value="mp2a">mp2a</option>
|
||||||
|
<option value="mp4a">mp4a</option>
|
||||||
|
<option value="a52">a52</option>
|
||||||
|
<option value="vorb">vorb</option>
|
||||||
|
<option value="flac">flac</option>
|
||||||
|
<option value="spx">spx</option>
|
||||||
|
<option value="s16l">s16l</option>
|
||||||
|
<option value="fl32">fl32</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Subtitle codec") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_scodec" id="stream_scodec">
|
||||||
|
<option value=""><?vlc gettext("None") ?></option>
|
||||||
|
<option value="dvbs">dvbs</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Output method") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_out_method" id="stream_out_method">
|
||||||
|
<option value="http">HTTP</option>
|
||||||
|
<option value="file"><?vlc gettext("File") ?></option>
|
||||||
|
<option value="mmsh">MMSH</option>
|
||||||
|
<option value="rtp">RTP</option>
|
||||||
|
<option value="udp">UDP</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Video bitrate") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_vb" id="stream_vb">
|
||||||
|
<option value="4096">4096</option>
|
||||||
|
<option value="3072">3072</option>
|
||||||
|
<option value="2048">2048</option>
|
||||||
|
<option value="1024">1024</option>
|
||||||
|
<option value="768">768</option>
|
||||||
|
<option value="512">512</option>
|
||||||
|
<option value="384">384</option>
|
||||||
|
<option value="256">256</option>
|
||||||
|
<option value="192">192</option>
|
||||||
|
<option value="128">128</option>
|
||||||
|
<option value="96">96</option>
|
||||||
|
<option value="64">64</option>
|
||||||
|
<option value="32">32</option>
|
||||||
|
<option value="16">16</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Audio bitrate") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_ab" id="stream_ab">
|
||||||
|
<option value="512">512</option>
|
||||||
|
<option value="384">384</option>
|
||||||
|
<option value="256">256</option>
|
||||||
|
<option value="192">192</option>
|
||||||
|
<option value="128">128</option>
|
||||||
|
<option value="96">96</option>
|
||||||
|
<option value="64">64</option>
|
||||||
|
<option value="32">32</option>
|
||||||
|
<option value="16">16</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Overlay") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<input type="checkbox" name="stream_soverlay" id="stream_soverlay" value="1" />
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Multiplexer") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_out_mux" id="stream_out_mux">
|
||||||
|
<option value="ts">MPEG TS</option>
|
||||||
|
<option value="ps">MPEG PS</option>
|
||||||
|
<option value="mpeg1">MPEG 1</option>
|
||||||
|
<option value="ogg">OGG</option>
|
||||||
|
<option value="asf">ASF</option>
|
||||||
|
<option value="mp4">MP4</option>
|
||||||
|
<option value="mov">MOV</option>
|
||||||
|
<option value="wav">WAV</option>
|
||||||
|
<option value="raw">Raw</option>
|
||||||
|
<option value="ffmpeg" selected="selected">FFMPEG</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Video FPS") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_fps" id="stream_fps">
|
||||||
|
<option value="300">300</option>
|
||||||
|
<option value="120">120</option>
|
||||||
|
<option value="100">100</option>
|
||||||
|
<option value="72">72</option>
|
||||||
|
<option value="60">60</option>
|
||||||
|
<option value="50">50</option>
|
||||||
|
<option value="48">48</option>
|
||||||
|
<option value="30">30</option>
|
||||||
|
<option value="25" selected="selected">25</option>
|
||||||
|
<option value="24">24</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Audio sample rate") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_samplerate" id="stream_samplerate">
|
||||||
|
<option value="192000">192 KHz</option>
|
||||||
|
<option value="96000">96 KHz</option>
|
||||||
|
<option value="50000">50 KHz</option>
|
||||||
|
<option value="48000">48 KHz</option>
|
||||||
|
<option value="44100" selected="selected">44 KHz</option>
|
||||||
|
<option value="32000">32 KHz</option>
|
||||||
|
<option value="22050">22 KHz</option>
|
||||||
|
<option value="16000">16 KHz</option>
|
||||||
|
<option value="11025">11 KHz</option>
|
||||||
|
<option value="8000">8 KHz</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td colspan="2" valign="top"> </td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("MUX options") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<input type="text" name="stream_out_mux_opts" id="stream_out_mux_opts" value="{mux=flv}" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Video scale") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_scale" id="stream_scale">
|
||||||
|
<option value="0.25">25%</option>
|
||||||
|
<option value="0.5">50%</option>
|
||||||
|
<option value="0.75">75%</option>
|
||||||
|
<option selected="selected" value="1">100%</option>
|
||||||
|
<option value="1.25">125%</option>
|
||||||
|
<option value="1.5">150%</option>
|
||||||
|
<option value="1.75">175%</option>
|
||||||
|
<option value="2">200%</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Audio channels") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<select name="stream_channels" id="stream_channels" >
|
||||||
|
<option value="1">1</option>
|
||||||
|
<option value="2" selected="selected">2</option>
|
||||||
|
<option value="4">4</option>
|
||||||
|
<option value="6">6</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td colspan="2" valign="top"> </td>
|
||||||
|
<td colspan="2" rowspan="2" valign="top">
|
||||||
|
<div id="output_options">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Output port") ?></td>
|
||||||
|
<td valign="top"><input type="text" name="stream_out_port" id="stream_out_port" value="8081" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Output destination") ?></td>
|
||||||
|
<td><input type="text" name="stream_out_dest" id="stream_out_dest" value="0.0.0.0" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Output file") ?></td>
|
||||||
|
<td valign="top"><input type="text" name="stream_out_file" id="stream_out_file" value="stream.flv" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" style="text-align:right"><?vlc gettext("Deinterlace") ?></td>
|
||||||
|
<td valign="top">
|
||||||
|
<input type="checkbox" name="stream_deinterlace" id="stream_deinterlace" value="1" />
|
||||||
|
</td>
|
||||||
|
<td colspan="2" valign="top"> </td>
|
||||||
|
<td colspan="2" valign="top"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" colspan="2" valign="top">
|
||||||
|
<?vlc gettext("Input media") ?>
|
||||||
|
</td>
|
||||||
|
<td colspan="6" valign="top">
|
||||||
|
<input type="text" name="stream_input" id="stream_input" value="" size="50" />
|
||||||
|
<div id="button_input" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Media file") ?>" opendialog="window_browse"><span class="ui-icon ui-icon-eject"></span></div>
|
||||||
|
<div id="button_in_screen" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Capture screen") ?>" ><span class="ui-icon ui-icon-contact"></span></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="ui-widget" id="stream_error_container" style="display:none;visibility: hidden;">
|
||||||
|
<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
|
||||||
|
<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
|
||||||
|
<strong><?vlc gettext("Error:") ?></strong> <span id="stream_error_message"><?vlc gettext("Sample ui-state-error style.") ?></span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="net_options" style="display:none;visibility: hidden;">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Output port") ?></td>
|
||||||
|
<td valign="top"><input type="text" name="stream_out_port_" id="stream_out_port_" value="8081" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Output destination") ?></td>
|
||||||
|
<td valign="top"><input type="text" name="stream_out_dest_" id="stream_out_dest_" value="0.0.0.0" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("Output file") ?></td>
|
||||||
|
<td valign="top"><input type="text" name="stream_out_file_" id="stream_out_file_" value="stream.flv" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="file_options" style="display:none;visibility: hidden;">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right" valign="top"><?vlc gettext("File name") ?></td>
|
||||||
|
<td valign="top"><input type="text" name="stream_out_filename_" id="stream_out_filename_"/></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
@ -0,0 +1,54 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
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:{
|
||||||
|
"<?vlc gettext("Reset") ?>":function(){
|
||||||
|
$('.eqBand').each(function(){
|
||||||
|
$(this).slider('value',0);
|
||||||
|
sendEQCmd({
|
||||||
|
command:'equalizer',
|
||||||
|
val: 0,
|
||||||
|
band: $(this).attr('id').substr(2)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
"<?vlc gettext("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="<?vlc gettext("Graphical Equalizer") ?>">
|
||||||
|
<div style="margin: 5px 5px 5px 5px;">
|
||||||
|
<div><?vlc gettext("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>
|
@ -0,0 +1,19 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
$('#window_error').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width:400,
|
||||||
|
modal: true,
|
||||||
|
buttons:{
|
||||||
|
"<?vlc gettext("Close") ?>":function(){
|
||||||
|
$('#error_container').empty();
|
||||||
|
$(this).dialog('close');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<div id="window_error" title="<?vlc gettext("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>
|
@ -0,0 +1,146 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
$(function(){
|
||||||
|
$('#window_mosaic').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width: 800,
|
||||||
|
maxWidth: 1000,
|
||||||
|
minWidth: 800,
|
||||||
|
minHeight: 500,
|
||||||
|
modal: true,
|
||||||
|
buttons: {
|
||||||
|
"<?vlc gettext("Create") ?>": function() {
|
||||||
|
$(this).dialog("close");
|
||||||
|
},
|
||||||
|
"<?vlc gettext("Cancel") ?>" : function(){
|
||||||
|
$(this).dialog("close")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#mosaic_bg').resizable({
|
||||||
|
maxWidth: 780,
|
||||||
|
ghost: true
|
||||||
|
});
|
||||||
|
$('#mosaic_tiles').draggable({
|
||||||
|
maxWidth: 780,
|
||||||
|
handle: 'h3',
|
||||||
|
containment: [13,98,99999999,99999999],
|
||||||
|
drag:function(event,ui){
|
||||||
|
var xoff = ui.offset.left - $('#mosaic_bg').offset().left;
|
||||||
|
var yoff = ui.offset.top - $('#mosaic_bg').offset().top-17;
|
||||||
|
$('#mosaic_xoff').val(xoff);
|
||||||
|
$('#mosaic_yoff').val(yoff);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('input','#mosaic_options').change(setMosaic);
|
||||||
|
setMosaic();
|
||||||
|
});
|
||||||
|
function setMosaic(){
|
||||||
|
var rows = Number($('#mosaic_rows').val());
|
||||||
|
var cols = Number($('#mosaic_cols').val());
|
||||||
|
var n = 0;
|
||||||
|
$('#mosaic_tiles').empty()
|
||||||
|
$('#mosaic_tiles').append('<tr><td colspan="99"><h3 style="margin:0px;cursor:move; font-weight:normal" class="ui-widget-header"><?vlc gettext("Mosaic Tiles") ?></h3></td></tr>');
|
||||||
|
for(var i=0;i<rows;i++){
|
||||||
|
$('#mosaic_tiles').append('<tr>');
|
||||||
|
for(var j=0;j<cols;j++){
|
||||||
|
$('tr:last','#mosaic_tiles').append('<td class="mosaic">');
|
||||||
|
$('td:last','#mosaic_tiles').append('<div id="mosaic_open__'+n+'" class="button icon ui-widget ui-state-default" title="Open Media" style="margin-top:49%"><span class="ui-icon ui-icon-eject"></span></div>');
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('.mosaic').resizable({
|
||||||
|
alsoResize: '.mosaic',
|
||||||
|
resize:function(event,ui){
|
||||||
|
$('#mosaic_width').val(ui.size.width);
|
||||||
|
$('#mosaic_height').val(ui.size.height);
|
||||||
|
$('[id^=mosaic_open]').css({
|
||||||
|
'margin-top': Number($('#mosaic_height').val()/2)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('.mosaic').css({
|
||||||
|
'background': '#33FF33',
|
||||||
|
'width': Number($('#mosaic_width').val()),
|
||||||
|
'height':Number($('#mosaic_height').val()),
|
||||||
|
'text-align': 'center',
|
||||||
|
'float' : 'left',
|
||||||
|
'border' : '1px solid #990000',
|
||||||
|
'margin-left': Number($('#mosaic_rbord').val()),
|
||||||
|
'margin-right': Number($('#mosaic_rbord').val()),
|
||||||
|
'margin-top': Number($('#mosaic_cbord').val()),
|
||||||
|
'margin-bottom': Number($('#mosaic_cbord').val())
|
||||||
|
});
|
||||||
|
$('[id^=mosaic_open_]').each(function(){
|
||||||
|
$(this).css({
|
||||||
|
'margin-top': Number($('#mosaic_height').val()/2)
|
||||||
|
});
|
||||||
|
$(this).click(function(){
|
||||||
|
browse_target = '#'+$(this).attr('id');
|
||||||
|
get_dir();
|
||||||
|
$('#window_browse').dialog('open');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.button').hover(
|
||||||
|
function() { $(this).addClass('ui-state-hover'); },
|
||||||
|
function() { $(this).removeClass('ui-state-hover'); }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="window_mosaic" title="<?vlc gettext("Create Mosaic") ?>">
|
||||||
|
<table id="mosaic_options">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right"><?vlc gettext("Rows") ?></td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="mosaic_rows" id="mosaic_rows" size="3" value="2"/>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right"><?vlc gettext("X offset") ?></td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="mosaic_xoff" id="mosaic_xoff" size="3" value="0" disabled="disabled"/>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right"><?vlc gettext("Row border") ?></td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="mosaic_rbord" id="mosaic_rbord" size="3" value="5"/>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right"><?vlc gettext("Width") ?></td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="mosaic_width" id="mosaic_width" size="3" value="100" disabled="disabled"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right"><?vlc gettext("Columns") ?></td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="mosaic_cols" id="mosaic_cols" size="3" value="2"/>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right"><?vlc gettext("Y offset") ?></td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="mosaic_yoff" id="mosaic_yoff" size="3" value="0" disabled="disabled"/>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right"><?vlc gettext("Column border") ?></td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="mosaic_cbord" id="mosaic_cbord" size="3" value="5"/>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right"><?vlc gettext("Height") ?></td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="mosaic_height" id="mosaic_height" size="3" value="100" disabled="disabled"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div id="mosaic_bg" class="ui-widget-content" style="background: #3333FF;width:400px; height:300px;text-align: center; vertical-align: middle;">
|
||||||
|
<h3 style="margin:0px;font-weight:normal" class="ui-widget-header"><?vlc gettext("Background") ?></h3>
|
||||||
|
<table id="mosaic_tiles" class="ui-widget-content" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td colspan="99"><h3 style="margin:0px;cursor:move; font-weight:normal" class="ui-widget-header"><?vlc gettext("Mosaic Tiles") ?></h3></td></tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mosaic"></td>
|
||||||
|
<td class="mosaic"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mosaic"></td>
|
||||||
|
<td class="mosaic"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,79 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
$(function(){
|
||||||
|
$('#window_offset').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
minWidth: 400,
|
||||||
|
buttons:{
|
||||||
|
"Close":function(){
|
||||||
|
$(this).dialog("close");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$( "#rateSlider" ).slider({
|
||||||
|
range: "min",
|
||||||
|
value: 1,
|
||||||
|
min: 0.25,
|
||||||
|
max: 10,
|
||||||
|
step: 0.25,
|
||||||
|
stop: function( event, ui ) {
|
||||||
|
sendCommand({
|
||||||
|
'command':'rate',
|
||||||
|
'val':(ui.value)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
slide: function(event,ui){
|
||||||
|
$('#currentRate').empty();
|
||||||
|
$('#currentRate').append(ui.value+'x');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$( "#audioSlider" ).slider({
|
||||||
|
range: "min",
|
||||||
|
value: 0,
|
||||||
|
min: -10,
|
||||||
|
max: 10,
|
||||||
|
step: 0.25,
|
||||||
|
stop: function( event, ui ) {
|
||||||
|
sendCommand({
|
||||||
|
'command':'audiodelay',
|
||||||
|
'val':(ui.value)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
slide: function(event,ui){
|
||||||
|
$('#currentAudioDelay').empty();
|
||||||
|
$('#currentAudioDelay').append(ui.value+'s');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$( "#subtitleSlider" ).slider({
|
||||||
|
range: "min",
|
||||||
|
value: 0,
|
||||||
|
min: -10,
|
||||||
|
max: 10,
|
||||||
|
step: 0.25,
|
||||||
|
stop: function( event, ui ) {
|
||||||
|
sendCommand({
|
||||||
|
'command':'subdelay',
|
||||||
|
'val':(ui.value)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
slide: function(event,ui){
|
||||||
|
$('#currentSubtitleDelay').empty();
|
||||||
|
$('#currentSubtitleDelay').append(ui.value+'s');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
<div id="window_offset" title="<?vlc gettext("Track Synchronisation") ?>">
|
||||||
|
<div><?vlc gettext("Playback Rate") ?></div>
|
||||||
|
<div id="rateSlider" title="<?vlc gettext("Playback Rate") ?>"></div>
|
||||||
|
<div id="currentRate" class="dynamic">1x</div>
|
||||||
|
<br/>
|
||||||
|
<div><?vlc gettext("Audio Delay") ?></div>
|
||||||
|
<div id="audioSlider" title="<?vlc gettext("Audio Delay") ?>"></div>
|
||||||
|
<div id="currentAudioDelay" class="dynamic">0s</div>
|
||||||
|
<br/>
|
||||||
|
<div><?vlc gettext("Subtitle Delay") ?></div>
|
||||||
|
<div id="subtitleSlider" title="<?vlc gettext("Subtitle Delay") ?>"></div>
|
||||||
|
<div id="currentSubtitleDelay" class="dynamic">0s</div>
|
||||||
|
</div>
|
@ -0,0 +1,40 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
$('#window_stream_config').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width:400,
|
||||||
|
modal: true,
|
||||||
|
buttons:{
|
||||||
|
"<?vlc gettext("Okay") ?>":function(){
|
||||||
|
$('#player').empty();
|
||||||
|
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
|
||||||
|
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||||
|
$(this).dialog('close');
|
||||||
|
},
|
||||||
|
"<?vlc gettext("Cancel") ?>":function(){
|
||||||
|
$(this).dialog('close');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<div id="window_stream_config" title="<?vlc gettext("Stream Input Configuration") ?>">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><?vlc gettext("Protocol") ?></td>
|
||||||
|
<td><input type="text" name="stream_protocol" id="stream_protocol" value="http" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?vlc gettext("Host") ?></td>
|
||||||
|
<td><input type="text" name="stream_host" id="stream_host" value="" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?vlc gettext("Port") ?></td>
|
||||||
|
<td><input type="text" name="stream_port" id="stream_port" value="8081" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?vlc gettext("File") ?></td>
|
||||||
|
<td><input type="text" name="stream_file" id="stream_file" value="stream.flv" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
@ -0,0 +1,99 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
var stream_server = window.location.hostname;
|
||||||
|
function configureStreamWindow(stream_protocol,stream_server,stream_port,stream_file){
|
||||||
|
$('#stream_protocol').val(stream_protocol);
|
||||||
|
$('#stream_host').val(stream_server);
|
||||||
|
$('#stream_port').val(stream_port);
|
||||||
|
$('#stream_file').val(stream_file);
|
||||||
|
}
|
||||||
|
$(function(){
|
||||||
|
$('#window_streams').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
minWidth: 600,
|
||||||
|
minHeight: 430,
|
||||||
|
buttons:{
|
||||||
|
"<?vlc gettext("Close") ?>":function(){
|
||||||
|
$(this).dialog("close");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#window_stream_config').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width:400,
|
||||||
|
modal: true,
|
||||||
|
buttons:{
|
||||||
|
"<?vlc gettext("Okay") ?>":function(){
|
||||||
|
$(this).dialog('close');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#button_create_stream').click(function(){
|
||||||
|
$('#window_create_stream').dialog('open');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#button_clear_streams').click(function(){
|
||||||
|
sendVLMCmd('del all');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#button_config_streams').click(function(){
|
||||||
|
$('#window_stream_config').dialog('open');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#button_create_mosaic').click(function(){
|
||||||
|
$('#window_mosaic').dialog('open');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#button_refresh_streams').click(function(){
|
||||||
|
updateStreams();
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
$('#stream_host').val(stream_server);
|
||||||
|
});
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
<div id="stream_status_" style="visibility:hidden;display:none;">
|
||||||
|
<h3><a href="#" id="stream_title_"></a></h3>
|
||||||
|
<div>
|
||||||
|
<div id="button_stream_stop_" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Stop") ?>"><span class="ui-icon ui-icon-stop"></span></div>
|
||||||
|
<div id="button_stream_play_" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Play") ?>"><span class="ui-icon ui-icon-play"></span></div>
|
||||||
|
<div id="button_stream_loop_" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Loop") ?>"><span class="ui-icon ui-icon-refresh"></span></div>
|
||||||
|
<div id="button_stream_delete_" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Remove Stream") ?>"><span class="ui-icon ui-icon-trash"></span></div>
|
||||||
|
<div>Title: <span id="stream_file_"></span></div>
|
||||||
|
<div style="width: 260px; margin: 5px 0px 10px 0px;">
|
||||||
|
<div id="stream_pos_"></div>
|
||||||
|
<?vlc gettext("Time:") ?> <span id="stream_current_time_">00:00:00</span> / <span id="stream_total_time_">00:00:00</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="window_streams" title="<?vlc gettext("Manage Streams") ?>">
|
||||||
|
<div id="button_create_stream" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Create New Stream") ?>" opendialog="window_create_stream"><span class="ui-icon ui-icon-plus"></span></div>
|
||||||
|
<div id="button_create_mosaic" class="button icon ui-widget ui-state-default" title="<?vlc gettext("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="<?vlc gettext("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="<?vlc gettext("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="<?vlc gettext("Refresh Streams") ?>"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></div>
|
||||||
|
<div id="stream_info">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="window_stream_config" title="<?vlc gettext("Stream Input Configuration") ?>">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><?vlc gettext("Protocol") ?></td>
|
||||||
|
<td><input type="text" name="stream_protocol" id="stream_protocol" value="http" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?vlc gettext("Host") ?></td>
|
||||||
|
<td><input type="text" name="stream_host" id="stream_host" value="" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?vlc gettext("Port") ?></td>
|
||||||
|
<td><input type="text" name="stream_port" id="stream_port" value="8081" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><?vlc gettext("File") ?></td>
|
||||||
|
<td><input type="text" name="stream_file" id="stream_file" value="stream.flv" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 942 B |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 606 B |
@ -0,0 +1,313 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< index.html: VLC media player web interface - VLM
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2014 VLC authors and VideoLAN
|
||||||
|
<
|
||||||
|
< 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title><?vlc gettext("VLC media player - Web Interface") ?></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<meta name="referrer" content="no-referrer" />
|
||||||
|
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
|
||||||
|
<script type="text/javascript" src="js/common.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
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="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||||
|
<script type="text/javascript" src="js/ui.js"></script>
|
||||||
|
<script type="text/javascript" src="js/controllers.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
var pollStatus = true;
|
||||||
|
$(function(){
|
||||||
|
$('.button').hover(function(){$(this).addClass('ui-state-hover')},function(){$(this).removeClass('ui-state-hover')});
|
||||||
|
$('#buttonPlayList').click(function(){
|
||||||
|
$('#libraryContainer').animate({
|
||||||
|
height: 'toggle'
|
||||||
|
});
|
||||||
|
$('#buttonszone1').animate({
|
||||||
|
width: 'toggle'
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonViewer').click(function(){
|
||||||
|
$('#viewContainer').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');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonPrev').mousedown(function(){
|
||||||
|
intv = 1;
|
||||||
|
ccmd = 'prev';
|
||||||
|
setIntv();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonPrev').mouseup(function(){
|
||||||
|
if(intv<=5){
|
||||||
|
sendCommand({'command':'pl_previous'});
|
||||||
|
}
|
||||||
|
intv = 0;
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonNext').mousedown(function(){
|
||||||
|
intv = 1;
|
||||||
|
ccmd = 'next';
|
||||||
|
setIntv();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonNext').mouseup(function(){
|
||||||
|
if(intv<=5){
|
||||||
|
sendCommand({'command':'pl_next'});
|
||||||
|
}
|
||||||
|
intv = 0;
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonPlEmpty').click(function(){
|
||||||
|
sendCommand({'command':'pl_empty'})
|
||||||
|
updatePlayList(true);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonLoop').click(function(){
|
||||||
|
sendCommand({'command':'pl_loop'});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonRepeat').click(function(){
|
||||||
|
sendCommand({'command':'pl_repeat'});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonShuffle').click(function(){
|
||||||
|
sendCommand({'command':'pl_random'});
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
$('#buttonRefresh').click(function(){
|
||||||
|
updatePlayList(true);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonPlPlay').click(function(){
|
||||||
|
sendCommand({
|
||||||
|
'command': 'pl_play',
|
||||||
|
'id':$('.jstree-clicked','#libraryTree').first().parents().first().attr('id').substr(5)
|
||||||
|
})
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonPlAdd').click(function(){
|
||||||
|
$('.jstree-clicked','#libraryTree').each(function(){
|
||||||
|
if($(this).parents().first().attr('uri')){
|
||||||
|
sendCommand({
|
||||||
|
'command':'in_enqueue',
|
||||||
|
'input' : $(this).parents().first().attr('uri')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
$('#libraryTree').jstree('deselect_all');
|
||||||
|
setTimeout(function(){updatePlayList(true);},1000);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonStreams, #buttonStreams2').click(function(){
|
||||||
|
updateStreams();
|
||||||
|
$('#window_streams').dialog('open');
|
||||||
|
});
|
||||||
|
$('#buttonSout').click(function(){
|
||||||
|
if(current_que=='main'){
|
||||||
|
$('#windowStreamConfirm').dialog('open');
|
||||||
|
}else{
|
||||||
|
$('#player').empty();
|
||||||
|
current_que = 'main';
|
||||||
|
sendVLMCmd('del Current');
|
||||||
|
updateStatus();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#qrCodeConfirm').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width:600,
|
||||||
|
modal: true,
|
||||||
|
buttons:{
|
||||||
|
"<?vlc gettext("Yes") ?>":function(){
|
||||||
|
$(this).dialog('close');
|
||||||
|
var urlimg = $('#mobileintflink').prop('href');
|
||||||
|
var codeimg = $('<img width="350" height="350" alt="qrcode"/>');
|
||||||
|
codeimg.attr('src', 'https://chart.apis.google.com/chart?cht=qr&chs=350x350&chld=L&choe=UTF-8&chl=' + encodeURIComponent(urlimg));
|
||||||
|
codeimg.dialog({width: 350, height: 350, title: "<?vlc gettext("QR Code") ?>"});
|
||||||
|
},
|
||||||
|
"<?vlc gettext("No") ?>":function(){
|
||||||
|
$(this).dialog('close');
|
||||||
|
window.location = $('#mobileintflink').attr('href');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#windowStreamConfirm').dialog({
|
||||||
|
autoOpen: false,
|
||||||
|
width:600,
|
||||||
|
modal: true,
|
||||||
|
buttons:{
|
||||||
|
"<?vlc gettext("Yes") ?>":function(){
|
||||||
|
var file = $('[current="current"]','#libraryTree').length>0 ? $('[current="current"]','#libraryTree').first().attr('uri') : ($('.jstree-clicked','#libraryTree').length>0 ? $('.jstree-clicked','#libraryTree').first().parents().first().attr('uri') : ($('#plid_'+current_playlist_id).attr('uri') ? $('#plid_'+current_playlist_id).attr('uri') : 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=avformat{{mux=flv}},dst=0.0.0.0:'+$('#stream_port').val()+'/'+$('#stream_file').val()+'}';
|
||||||
|
sendVLMCmd('del Current;'+defaultStream+';control Current play');
|
||||||
|
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
|
||||||
|
current_que = 'stream';
|
||||||
|
updateStreams();
|
||||||
|
}
|
||||||
|
$(this).dialog('close');
|
||||||
|
},
|
||||||
|
"<?vlc gettext("No") ?>":function(){
|
||||||
|
$(this).dialog('close');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#viewContainer').animate({height: 'toggle'});
|
||||||
|
});
|
||||||
|
/* delay script loading so we won't block if we have no net access */
|
||||||
|
$.getScript('https://releases.flowplayer.org/js/flowplayer-3.2.6.min.js', function(data, textStatus){
|
||||||
|
$('#player').empty();
|
||||||
|
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||||
|
/* .getScript only handles success() */
|
||||||
|
});
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body id="regular_layout">
|
||||||
|
<div class="centered">
|
||||||
|
<div id="mainContainer" class="centered">
|
||||||
|
<div id="controlContainer" class="ui-widget">
|
||||||
|
<div id="controlTable" class="ui-widget-content">
|
||||||
|
<ul id="controlButtons">
|
||||||
|
<li id="buttonPrev" class="button48 ui-corner-all" title="<?vlc gettext("Previous") ?>"></li>
|
||||||
|
<li id="buttonPlay" class="button48 ui-corner-all paused" title="<?vlc gettext("Play") ?>"></li>
|
||||||
|
<li id="buttonNext" class="button48 ui-corner-all" title="<?vlc gettext("Next") ?>"></li>
|
||||||
|
<li id="buttonOpen" class="button48 ui-corner-all" title="<?vlc gettext("Open Media") ?>"></li>
|
||||||
|
<li id="buttonStop" class="button48 ui-corner-all" title="<?vlc gettext("Stop") ?>"></li>
|
||||||
|
<li id="buttonFull" class="button48 ui-corner-all" title="<?vlc gettext("Full Screen") ?>"></li>
|
||||||
|
<li id="buttonSout" class="button48 ui-corner-all" title="<?vlc gettext("Easy Stream") ?>"></li>
|
||||||
|
</ul>
|
||||||
|
<ul id="buttonszone2" class="buttonszone">
|
||||||
|
<li id="buttonPlayList" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Hide / Show Library") ?>"><span class="ui-icon ui-icon-note"></span><?vlc gettext("Hide / Show Library") ?></li>
|
||||||
|
<li id="buttonViewer" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Hide / Show Viewer") ?>"><span class="ui-icon ui-icon-video"></span><?vlc gettext("Hide / Show Viewer") ?></li>
|
||||||
|
<li id="buttonStreams" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Manage Streams") ?>"><span class="ui-icon ui-icon-script"></span><?vlc gettext("Manage Streams") ?></li>
|
||||||
|
<li id="buttonOffsets" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Track Synchronisation") ?>"><span class="ui-icon ui-icon-transfer-e-w"></span><?vlc gettext("Track Synchronisation") ?></li>
|
||||||
|
<li id="buttonEqualizer" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Equalizer") ?>"><span class="ui-icon ui-icon-signal"></span><?vlc gettext("Equalizer") ?></li>
|
||||||
|
<li id="buttonBatch" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("VLM Batch Commands") ?>"><span class="ui-icon ui-icon-suitcase"></span><?vlc gettext("VLM Batch Commands") ?></li>
|
||||||
|
</ul>
|
||||||
|
<div id="volumesliderzone">
|
||||||
|
<div id="volumeSlider" title="Volume"><img src="images/speaker-32.png" class="ui-slider-handle" alt="volume"/></div>
|
||||||
|
<div id="currentVolume" class="dynamic">50%</div>
|
||||||
|
</div>
|
||||||
|
<div id="artszone">
|
||||||
|
<img id="albumArt" src="/art" width="141px" height="130px" alt="Album Art"/>
|
||||||
|
</div>
|
||||||
|
<div id="mediaTitle" class="dynamic"></div>
|
||||||
|
<div id="seekContainer">
|
||||||
|
<div id="seekSlider" title="<?vlc gettext("Seek Time") ?>"></div>
|
||||||
|
<div id="currentTime" class="dynamic">00:00:00</div>
|
||||||
|
<div id="totalTime" class="dynamic">00:00:00</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="libraryContainer" class="ui-widget">
|
||||||
|
<ul id="buttonszone1" align="left" class="buttonszone ui-widget-content" style="overflow:hidden; white-space: nowrap;">
|
||||||
|
<li id="buttonShuffle" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Shuffle") ?>"><span class="ui-icon ui-icon-shuffle"></span><?vlc gettext("Shuffle") ?></li>
|
||||||
|
<li id="buttonLoop" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Loop") ?>"><span class="ui-icon ui-icon-refresh"></span><?vlc gettext("Loop") ?></li>
|
||||||
|
<li id="buttonRepeat" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Repeat") ?>"><span class="ui-icon ui-icon-arrowreturnthick-1-w"></span><?vlc gettext("Repeat") ?></li>
|
||||||
|
<li id="buttonPlEmpty" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Empty Playlist") ?>"><span class="ui-icon ui-icon-trash"></span><?vlc gettext("Empty Playlist") ?></li>
|
||||||
|
<li id="buttonPlAdd" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Queue Selected") ?>"><span class="ui-icon ui-icon-plus"></span><?vlc gettext("Queue Selected") ?></li>
|
||||||
|
<li id="buttonPlPlay" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Play Selected") ?>"><span class="ui-icon ui-icon-play"></span><?vlc gettext("Play Selected") ?></li>
|
||||||
|
<li id="buttonRefresh" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Refresh List") ?>"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span><?vlc gettext("Refresh List") ?></li>
|
||||||
|
</ul>
|
||||||
|
<div id="libraryTree" class="ui-widget-content"></div>
|
||||||
|
</div>
|
||||||
|
<div id="viewContainer" class="ui-widget">
|
||||||
|
<div id="mediaViewer" class="ui-widget-content">
|
||||||
|
<div href="http://localhost:8081/stream.flv" style="display:block; width:100%" id="player">
|
||||||
|
<p><?vlc gettext("Loading flowplayer...") ?><br/><?vlc gettext("If nothing appears, check your internet connection.") ?></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
VLC <?vlc print(vlc.misc.version() .. ' - Lua Web Interface - <a id="mobileintflink" href="mobile.html">Mobile Interface</a> - ' .. vlc.misc.copyright()) ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="qrCodeConfirm" title="<?vlc gettext("Generate QR Code") ?>">
|
||||||
|
<p>
|
||||||
|
<?vlc gettext("VLC can display a QR code linking to the mobile version of the web interface; the web address of the web interface of your VLC media player instance will be transmitted over the internet to the Google Image Charts web service to generate this QR code.") ?>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<?vlc gettext("Do you want to go ahead with this?") ?>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div id="windowStreamConfirm" title="<?vlc gettext("Confirm Stream Settings") ?>">
|
||||||
|
<p>
|
||||||
|
<?vlc gettext("By creating a stream, the <i>Main Controls</i> will operate the stream instead of the main interface.") ?>
|
||||||
|
<?vlc gettext("The stream will be created using default settings, for more advanced configuration, or to modify the default settings, select the button to the right: <i>Manage Streams</i>") ?>
|
||||||
|
<span id="buttonStreams2" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Manage Streams") ?>"><span class="ui-icon ui-icon-script"></span></span>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<?vlc gettext("Once the stream is created, the <i>Media Viewer</i> window will display the stream.") ?>
|
||||||
|
<?vlc gettext("Volume will be controlled by the player, and not the <i>Main Controls</i>.") ?>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<?vlc gettext("The current playing item will be streamed. If there is no currently playing item, the first selected item from the <i>Library</i> will be the subject of the stream.") ?>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<?vlc gettext("To stop the stream and resume normal controls, click the <i>Open Stream</i> button again.") ?>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<?vlc gettext("Are you sure you wish to create the stream?") ?>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<?vlc
|
||||||
|
current_page = "index"
|
||||||
|
|
||||||
|
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>
|
@ -0,0 +1,93 @@
|
|||||||
|
var intv = 0;
|
||||||
|
var ccmd = "";
|
||||||
|
var video_types = [
|
||||||
|
"asf", "avi", "bik", "bin", "divx", "drc", "dv", "f4v", "flv", "gxf", "iso",
|
||||||
|
"m1v", "m2v", "m2t", "m2ts", "m4v", "mkv", "mov",
|
||||||
|
"mp2", "mp4", "mpeg", "mpeg1",
|
||||||
|
"mpeg2", "mpeg4", "mpg", "mts", "mtv", "mxf", "mxg", "nuv",
|
||||||
|
"ogg", "ogm", "ogv", "ogx", "ps",
|
||||||
|
"rec", "rm", "rmvb", "rpl", "thp", "ts", "txd", "vob", "wmv", "xesc" ];
|
||||||
|
var audio_types = [
|
||||||
|
"3ga", "a52", "aac", "ac3", "ape", "awb", "dts", "flac", "it",
|
||||||
|
"m4a", "m4p", "mka", "mlp", "mod", "mp1", "mp2", "mp3",
|
||||||
|
"oga", "ogg", "oma", "s3m", "spx", "thd", "tta",
|
||||||
|
"wav", "wma", "wv", "xm"
|
||||||
|
];
|
||||||
|
var playlist_types = [
|
||||||
|
"asx", "b4s", "cue", "ifo", "m3u", "m3u8", "pls", "ram", "rar",
|
||||||
|
"sdp", "vlc", "xspf", "zip", "conf"
|
||||||
|
];
|
||||||
|
|
||||||
|
var stream_server = window.location.hostname;
|
||||||
|
|
||||||
|
function format_time(s) {
|
||||||
|
var hours = Math.floor(s / 3600);
|
||||||
|
var minutes = Math.floor((s / 60) % 60);
|
||||||
|
var seconds = Math.floor(s % 60);
|
||||||
|
hours = hours < 10 ? "0" + hours : hours;
|
||||||
|
minutes = minutes < 10 ? "0" + minutes : minutes;
|
||||||
|
seconds = seconds < 10 ? "0" + seconds : seconds;
|
||||||
|
return hours + ":" + minutes + ":" + seconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
function toFloat(text) {
|
||||||
|
return parseFloat(text.replace(',', '.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function setIntv() {
|
||||||
|
if (intv > 0) {
|
||||||
|
intv++;
|
||||||
|
setTimeout(setIntv, 500);
|
||||||
|
} else {
|
||||||
|
intv = 0;
|
||||||
|
}
|
||||||
|
if (intv > 5) {
|
||||||
|
var nt = 0;
|
||||||
|
switch (ccmd) {
|
||||||
|
case 'prev':
|
||||||
|
nt = Math.max(0, $('#seekSlider').slider('value') - 10);
|
||||||
|
break;
|
||||||
|
case 'next':
|
||||||
|
nt = Math.max(0, $('#seekSlider').slider('value') + 10);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (current_que) {
|
||||||
|
case 'main':
|
||||||
|
sendCommand({
|
||||||
|
'command': 'seek',
|
||||||
|
'val': Math.round((nt / 100) * $('#seekSlider').attr('totalLength')),
|
||||||
|
plreload: false
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'stream':
|
||||||
|
sendVLMCmd('control Current seek ' + nt);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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 = "Other-48.png";
|
||||||
|
if( type == "dir" && name == '..' )
|
||||||
|
icon = "Back-48.png";
|
||||||
|
else if( type == 'dir' )
|
||||||
|
icon = "Folder-48.png";
|
||||||
|
else if( $.inArray(ext, video_types) != -1 )
|
||||||
|
icon = "Video-48.png";
|
||||||
|
else if( $.inArray(ext, audio_types) != -1 )
|
||||||
|
icon = "Audio-48.png";
|
||||||
|
else if( $.inArray(ext, playlist_types) != -1 )
|
||||||
|
// TODO: Playlist-48.png
|
||||||
|
icon = "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;
|
||||||
|
}
|
@ -0,0 +1,532 @@
|
|||||||
|
var currentArt = null;
|
||||||
|
var current_que = 'main';
|
||||||
|
var current_playlist_id = -1;
|
||||||
|
var previous_playlist_id = -1;
|
||||||
|
var seek_sec = 0;
|
||||||
|
|
||||||
|
function updateArt(url) {
|
||||||
|
$('#albumArt').fadeOut(500, function () {
|
||||||
|
$(this).addClass('hidden').removeAttr('height').removeAttr('width').attr('src', url);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateStatus() {
|
||||||
|
$.ajax({
|
||||||
|
url: 'requests/status.xml',
|
||||||
|
success: function (data, status, jqXHR) {
|
||||||
|
if (current_que == 'main') {
|
||||||
|
$('.dynamic').empty();
|
||||||
|
$('#mediaTitle').append($('[name="filename"]', data).text());
|
||||||
|
$('#totalTime').append(format_time($('length', data).text()));
|
||||||
|
$('#currentTime').append(format_time($('time', data).text()));
|
||||||
|
if (!$('#seekSlider').data('clicked')) {
|
||||||
|
$('#seekSlider').slider({
|
||||||
|
value: toFloat($('position', data).text()) * 100
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$('#currentVolume').append(Math.round($('volume', data).text() / 2.56) + '%');
|
||||||
|
/* Don't interfere with the user's action */
|
||||||
|
if (!$('#volumeSlider').data('clicked')) {
|
||||||
|
$('#volumeSlider').slider({
|
||||||
|
value: ($('volume', data).text() / 5.12)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$('#rateSlider').slider({
|
||||||
|
value: ($('rate', data).text())
|
||||||
|
});
|
||||||
|
$('#currentRate').append(Math.round($('rate', data).text() * 100) / 100 + 'x');
|
||||||
|
$('#audioSlider').slider({
|
||||||
|
value: ($('audiodelay', data).text())
|
||||||
|
});
|
||||||
|
$('#currentAudioDelay').append(Math.round($('audiodelay', data).text() * 100) / 100 + 's');
|
||||||
|
$('#subtitleSlider').slider({
|
||||||
|
value: ($('subtitledelay', data).text())
|
||||||
|
});
|
||||||
|
$('#currentSubtitleDelay').append(Math.round($('subtitledelay', data).text() * 100) / 100 + 's');
|
||||||
|
$('#seekSlider').attr('totalLength', $('length', data).text());
|
||||||
|
$('#buttonPlay').attr('state', $('state', data).text()).attr('mrl', $('[name="filename"]', data).text());
|
||||||
|
if ($('state', data).text() == 'playing') {
|
||||||
|
$('#buttonPlay').removeClass('paused').addClass('playing');
|
||||||
|
} else {
|
||||||
|
$('#buttonPlay').removeClass('playing').addClass('paused');
|
||||||
|
}
|
||||||
|
if ($('random', data).text() == 'true') {
|
||||||
|
$('#buttonShuffle').removeClass('ui-state-default').addClass('ui-state-active');
|
||||||
|
} else {
|
||||||
|
$('#buttonShuffle').addClass('ui-state-default').removeClass('ui-state-active');
|
||||||
|
}
|
||||||
|
if ($('loop', data).text() == 'true') {
|
||||||
|
$('#buttonLoop').removeClass('ui-state-default').addClass('ui-state-active');
|
||||||
|
} else {
|
||||||
|
$('#buttonLoop').addClass('ui-state-default').removeClass('ui-state-active');
|
||||||
|
}
|
||||||
|
if ($('repeat', data).text() == 'true') {
|
||||||
|
$('#buttonRepeat').removeClass('ui-state-default').addClass('ui-state-active');
|
||||||
|
} else {
|
||||||
|
$('#buttonRepeat').addClass('ui-state-default').removeClass('ui-state-active');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($('[name="artwork_url"]', data).text() != currentArt && $('[name="artwork_url"]', data).text() != "") {
|
||||||
|
var tmp = new Date();
|
||||||
|
currentArt = $('[name="artwork_url"]', data).text();
|
||||||
|
updateArt('/art?' + tmp.getTime());
|
||||||
|
} else if ($('[name="artwork_url"]', data).text() == "" && currentArt != 'images/vlc-48.png') {
|
||||||
|
currentArt = 'images/vlc-48.png';
|
||||||
|
updateArt(currentArt);
|
||||||
|
}
|
||||||
|
|
||||||
|
current_playlist_id = parseInt($('currentplid', data).text());
|
||||||
|
if (previous_playlist_id != current_playlist_id) {
|
||||||
|
updatePlayList();
|
||||||
|
previous_playlist_id = current_playlist_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
seek_sec = parseInt($('seek_sec', data).text());
|
||||||
|
|
||||||
|
if (pollStatus) {
|
||||||
|
setTimeout(updateStatus, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
$('band', data).each(function () {
|
||||||
|
var id = $(this).attr('id');
|
||||||
|
var value = $(this).text() ? $(this).text() : 0;
|
||||||
|
var freq = ["60 Hz","170 Hz", "310 Hz", "600 Hz", "1 kHz","3 kHz", "6 kHz", "12 kHz" , "14 kHz" , "16 kHz" ];
|
||||||
|
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[id] + '</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');
|
||||||
|
sendCommand({
|
||||||
|
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(force_refresh) {
|
||||||
|
if (force_refresh) {
|
||||||
|
//refresh playlist..
|
||||||
|
$('#libraryTree').jstree('refresh', -1);
|
||||||
|
} else {
|
||||||
|
//iterate through playlist..
|
||||||
|
var match = false;
|
||||||
|
$('.jstree-leaf').each(function(){
|
||||||
|
var id = $(this).attr('id');
|
||||||
|
if (id != null && id.substr(0,5) == 'plid_') {
|
||||||
|
if ( id.substr(5) == current_playlist_id ) {
|
||||||
|
$(this).addClass('ui-state-highlight');
|
||||||
|
$(this).attr('current', 'current');
|
||||||
|
this.scrollIntoView(true);
|
||||||
|
match = true;
|
||||||
|
} else {
|
||||||
|
$(this).removeClass('ui-state-highlight');
|
||||||
|
$(this).removeAttr('current');
|
||||||
|
}
|
||||||
|
if ($(this).children('a').size() > 0) {
|
||||||
|
$($(this).children('a')[0]).removeClass('ui-state-active');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//local title wasn't found - refresh playlist..
|
||||||
|
if (!match) updatePlayList(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (params.plreload === false) {
|
||||||
|
$.ajax({
|
||||||
|
url: 'requests/status.xml',
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function browse(dir) {
|
||||||
|
dir = dir == undefined ? 'file://~' : dir;
|
||||||
|
$.ajax({
|
||||||
|
url: 'requests/browse.xml',
|
||||||
|
data: 'uri=' + 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 () {
|
||||||
|
var ext = $(this).attr('name').substr($(this).attr('name').lastIndexOf('.') + 1).toLowerCase();
|
||||||
|
if ($(this).attr('type') == 'dir' || $.inArray(ext, video_types) != -1 || $.inArray(ext, audio_types) != -1 || $.inArray(ext, playlist_types) != -1) {
|
||||||
|
$('#browse_elements').append(createElementLi($(this).attr('name'), $(this).attr('type'), $(this).attr('uri'), ext));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('[opendir]').dblclick(function () {
|
||||||
|
browse($(this).attr('opendir'));
|
||||||
|
});
|
||||||
|
$('[openfile]').dblclick(function () {
|
||||||
|
switch (tgt) {
|
||||||
|
case '#stream_input':
|
||||||
|
$(browse_target).val($(this).attr('openfile'));
|
||||||
|
break;
|
||||||
|
case '#mosaic_open':
|
||||||
|
$('li', browse_target).remove();
|
||||||
|
$(browse_target).append(this);
|
||||||
|
$(this).css({
|
||||||
|
'margin-left': -40,
|
||||||
|
'margin-top': -46,
|
||||||
|
'float': 'left'
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case '#mobile':
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sendCommand('command=in_play&input=' + encodeURIComponent($(this).attr('openfile')));
|
||||||
|
updatePlayList(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$('#window_browse').dialog('close');
|
||||||
|
});
|
||||||
|
$('[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=' + 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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateStreams() {
|
||||||
|
$.ajax({
|
||||||
|
url: 'requests/vlm.xml',
|
||||||
|
success: function (data, status, jqXHR) {
|
||||||
|
$('#stream_info').accordion("destroy");
|
||||||
|
$('#stream_info').empty();
|
||||||
|
$('broadcast', data).each(function () {
|
||||||
|
var stream_div = $('#stream_status_').clone();
|
||||||
|
var name = $(this).attr('name');
|
||||||
|
var loop = $(this).attr('loop') == 'yes';
|
||||||
|
var playing = $('instance', $(this)).attr('state') == 'playing';
|
||||||
|
var file = $('input', $(this)).text();
|
||||||
|
var output = $('output', $(this)).text();
|
||||||
|
var time = isNaN(Math.round($('instance', $(this)).attr('time') / 1000000)) ? 0 : Math.round($('instance', $(this)).attr('time') / 1000000);
|
||||||
|
var length = isNaN(Math.round($('instance', $(this)).attr('length') / 1000000)) ? 0 : Math.round($('instance', $(this)).attr('length') / 1000000);
|
||||||
|
$('[id]', stream_div).each(function () {
|
||||||
|
$(this).attr('id', $(this).attr('id') + name);
|
||||||
|
});
|
||||||
|
$(stream_div).attr('id', $(stream_div).attr('id') + name);
|
||||||
|
$('#stream_title_' + name, stream_div).append(name);
|
||||||
|
$('#stream_file_' + name, stream_div).append(file);
|
||||||
|
$('#stream_pos_' + name, stream_div).slider({
|
||||||
|
value: 0,
|
||||||
|
range: "min",
|
||||||
|
min: 0,
|
||||||
|
slide: function (event, ui) {
|
||||||
|
$("#stream_current_time_" + name, stream_div).empty();
|
||||||
|
$("#stream_current_time_" + name, stream_div).append(format_time(ui.value));
|
||||||
|
$("#stream_total_time_" + name, stream_div).empty();
|
||||||
|
$("#stream_total_time_" + name, stream_div).append(format_time($('#stream_pos_' + name, stream_div).slider('option', 'max')));
|
||||||
|
sendVLMCmd('control ' + name + ' seek ' + Math.round(ui.value / $('#stream_pos_' + name, stream_div).slider('option', 'max') * 100));
|
||||||
|
},
|
||||||
|
change: function (event, ui) {
|
||||||
|
$("#stream_current_time_" + name, stream_div).empty();
|
||||||
|
$("#stream_current_time_" + name, stream_div).append(format_time(ui.value));
|
||||||
|
$("#stream_total_time_" + name, stream_div).empty();
|
||||||
|
$("#stream_total_time_" + name, stream_div).append(format_time($('#stream_pos_' + name, stream_div).slider('option', 'max')));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#button_stream_stop_' + name, stream_div).click(function () {
|
||||||
|
sendVLMCmd('control ' + name + ' stop');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#button_stream_play_' + name, stream_div).click(function () {
|
||||||
|
if ($('span', this).hasClass('ui-icon-pause')) {
|
||||||
|
sendVLMCmd('control ' + name + ' pause');
|
||||||
|
} else {
|
||||||
|
sendVLMCmd('control ' + name + ' play');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#button_stream_loop_' + name, stream_div).click(function () {
|
||||||
|
if (loop) {
|
||||||
|
sendVLMCmd('setup ' + name + ' unloop');
|
||||||
|
} else {
|
||||||
|
sendVLMCmd('setup ' + name + ' loop');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#button_stream_delete_' + name, stream_div).click(function () {
|
||||||
|
sendVLMCmd('del ' + name);
|
||||||
|
});
|
||||||
|
$('#stream_pos_' + name, stream_div).slider({
|
||||||
|
max: length,
|
||||||
|
value: time
|
||||||
|
});
|
||||||
|
if (playing) {
|
||||||
|
$('span', $('#button_stream_play_' + name, stream_div)).removeClass('ui-icon-play');
|
||||||
|
$('span', $('#button_stream_play_' + name, stream_div)).addClass('ui-icon-pause');
|
||||||
|
}
|
||||||
|
if (loop) {
|
||||||
|
$('#button_stream_loop_' + name, stream_div).addClass('ui-state-active');
|
||||||
|
}
|
||||||
|
$(stream_div).css({
|
||||||
|
'visibility': '',
|
||||||
|
'display': ''
|
||||||
|
});
|
||||||
|
$('#stream_info').append(stream_div);
|
||||||
|
|
||||||
|
});
|
||||||
|
$('.button').hover(
|
||||||
|
|
||||||
|
function () {
|
||||||
|
$(this).addClass('ui-state-hover');
|
||||||
|
}, function () {
|
||||||
|
$(this).removeClass('ui-state-hover');
|
||||||
|
});
|
||||||
|
$('#stream_info').accordion({
|
||||||
|
header: "h3",
|
||||||
|
collapsible: true,
|
||||||
|
autoHeight: true
|
||||||
|
});
|
||||||
|
if (current_que == 'stream') {
|
||||||
|
$('.dynamic').empty();
|
||||||
|
$('#mediaTitle').append($('[name="Current"] input', data).text());
|
||||||
|
$('#totalTime').append(format_time(isNaN($('[name="Current"] instance', data).attr('length')) ? 0 : $('[name="Current"] instance', data).attr('length') / 1000000));
|
||||||
|
$('#currentTime').append(format_time(isNaN($('[name="Current"] instance', data).attr('time')) ? 0 : $('[name="Current"] instance', data).attr('time') / 1000000));
|
||||||
|
$('#seekSlider').slider({
|
||||||
|
value: (($('[name="Current"] instance', data).attr('time') / 1000000) / ($('[name="Current"] instance', data).attr('length') / 1000000) * 100)
|
||||||
|
});
|
||||||
|
$('#seekSlider').attr('totalLength', $('[name="Current"] instance', data).attr('length') / 1000000);
|
||||||
|
$('#buttonPlay').attr('state', $('[name="Current"] instance', data).length > 0 ? $('[name="Current"] instance', data).attr('state') : 'stopped');
|
||||||
|
if ($('[name="Current"] instance', data).attr('state') == 'playing') {
|
||||||
|
$('#buttonPlay').removeClass('paused');
|
||||||
|
$('#buttonPlay').addClass('playing');
|
||||||
|
} else {
|
||||||
|
$('#buttonPlay').removeClass('playing');
|
||||||
|
$('#buttonPlay').addClass('paused');
|
||||||
|
}
|
||||||
|
setTimeout(updateStreams, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateEQ() {
|
||||||
|
$.ajax({
|
||||||
|
url: 'requests/status.xml',
|
||||||
|
success: function (data, status, jqXHR) {
|
||||||
|
$('band', data).each(function () {
|
||||||
|
var freq = ["60 Hz","170 Hz", "310 Hz", "600 Hz", "1 kHz","3 kHz", "6 kHz", "12 kHz" , "14 kHz" , "16 kHz" ];
|
||||||
|
var id = $(this).attr('id');
|
||||||
|
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[id] + '</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, 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),
|
||||||
|
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, append) {
|
||||||
|
var commands = command.split(';');
|
||||||
|
$.ajax({
|
||||||
|
url: 'requests/vlm_cmd.xml',
|
||||||
|
data: 'command=' + encodeURIComponent(commands.shift()),
|
||||||
|
success: function (data, status, jqXHR) {
|
||||||
|
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/status.xml',
|
||||||
|
data: params,
|
||||||
|
success: function (data, status, jqXHR) {
|
||||||
|
updateEQ();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
$('#albumArt').load(function () {
|
||||||
|
var width = $(this).width();
|
||||||
|
var height = $(this).height();
|
||||||
|
var max = Math.max(width, height);
|
||||||
|
if (max > 150) {
|
||||||
|
var ratio = 150 / max;
|
||||||
|
width = Math.floor(width * ratio);
|
||||||
|
height = Math.floor(height * ratio);
|
||||||
|
}
|
||||||
|
$(this).attr('width', width).attr('height', height).css('margin-left', Math.floor((150 - width) / 2)).css('margin-top', Math.floor((150 - height) / 2)).removeClass('hidden').fadeIn();
|
||||||
|
});
|
||||||
|
$('#libraryTree').jstree({
|
||||||
|
"xml_data": {
|
||||||
|
"ajax": {
|
||||||
|
"url": "requests/playlist_jstree.xml"
|
||||||
|
},
|
||||||
|
"xsl": "nest"
|
||||||
|
},
|
||||||
|
"themeroller": {
|
||||||
|
"item_leaf": "ui-icon-video"
|
||||||
|
},
|
||||||
|
"core": {
|
||||||
|
"initially_open": ["plid_1", "plid_2", "plid_3"]
|
||||||
|
},
|
||||||
|
"plugins": ["xml_data", "ui", "themeroller"]
|
||||||
|
}).bind("loaded.jstree", function (event, data) {
|
||||||
|
$('[current]', '[id^="plid_"]').each(function () {
|
||||||
|
$(this).addClass('ui-state-highlight');
|
||||||
|
current_playlist_id = $(this).attr('id').substr(5);
|
||||||
|
});
|
||||||
|
}).bind("refresh.jstree", function (event, data) {
|
||||||
|
$('[current]', '[id^="plid_"]').each(function () {
|
||||||
|
$(this).addClass('ui-state-highlight');
|
||||||
|
current_playlist_id = $(this).attr('id').substr(5);
|
||||||
|
});
|
||||||
|
}).delegate("#plid_0 li.jstree-leaf a", "click", function (event, data) {
|
||||||
|
event.preventDefault();
|
||||||
|
current_playlist_id = $(this).parent().attr('id').substr(5);
|
||||||
|
sendCommand('command=pl_play&id=' + current_playlist_id);
|
||||||
|
});
|
||||||
|
updateStatus();
|
||||||
|
updateStreams();
|
||||||
|
updateEQ();
|
||||||
|
});
|
@ -0,0 +1,115 @@
|
|||||||
|
$(function () {
|
||||||
|
$("#seekSlider").slider({
|
||||||
|
range: "min",
|
||||||
|
value: 0,
|
||||||
|
min: 0,
|
||||||
|
max: 100,
|
||||||
|
start: function (event, ui) {
|
||||||
|
$("#seekSlider").data( 'clicked', true );
|
||||||
|
},
|
||||||
|
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': (ui.value) + '%'
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'stream':
|
||||||
|
sendVLMCmd('control Current seek ' + ui.value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$("#seekSlider").data( 'clicked', false );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#volumeSlider").slider({
|
||||||
|
range: "min",
|
||||||
|
value: 50,
|
||||||
|
min: 0,
|
||||||
|
max: 100,
|
||||||
|
start: function (event, ui) {
|
||||||
|
$("#volumeSlider").data( 'clicked', true );
|
||||||
|
},
|
||||||
|
stop: function (event, ui) {
|
||||||
|
$("#currentVolume").empty().append(ui.value * 2 + "%");
|
||||||
|
sendCommand({
|
||||||
|
'command': 'volume',
|
||||||
|
'val': Math.round(ui.value * 5.12)
|
||||||
|
})
|
||||||
|
$("#volumeSlider").data( 'clicked', false );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
/* To ensure that updateStatus() doesn't interfere while the user
|
||||||
|
* slides the controls. */
|
||||||
|
$("#seekSlider").data( 'clicked', false );
|
||||||
|
$("#volumeSlider").data( 'clicked', false );
|
||||||
|
$('#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_playlist_id;
|
||||||
|
sendCommand({
|
||||||
|
'command': 'pl_play',
|
||||||
|
'id': id
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'stream':
|
||||||
|
sendVLMCmd('control Current play');
|
||||||
|
flowplayer("player", "https://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);
|
||||||
|
$('#mobileintflink').click(function () {
|
||||||
|
if ( ( window.location.hostname == 'localhost' )
|
||||||
|
|| ( window.location.hostname == '127.0.0.1' )
|
||||||
|
|| ( window.location.hostname == '[::1]' ) )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
$('#qrCodeConfirm').dialog('open');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.buttonszone').each(function(i){
|
||||||
|
$(this).mouseover(function(){
|
||||||
|
$(this).addClass('buttonszone_active');
|
||||||
|
}).mouseleave(function () {
|
||||||
|
$(this).removeClass('buttonszone_active');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
@ -0,0 +1,112 @@
|
|||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< mobile.html: VLC media player web interface - VLM
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2014 VLC authors and VideoLAN
|
||||||
|
<
|
||||||
|
< 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>VLC media player - Web Interface</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<meta name="referrer" content="no-referrer" />
|
||||||
|
<meta name="viewport" content="initial-scale=1.0" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
|
||||||
|
<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/mobile.css" rel="stylesheet" />
|
||||||
|
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||||
|
<script type="text/javascript" src="https://releases.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/controllers.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=avformat{{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;
|
||||||
|
});
|
||||||
|
$('#buttonRewd').click(function(){
|
||||||
|
sendCommand({'command': 'seek', 'val': '-' + seek_sec.toString() + 'S'});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#buttonFwrd').click(function(){
|
||||||
|
sendCommand({'command': 'seek', 'val': '+' + seek_sec.toString() + 'S'});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="content" class="centered">
|
||||||
|
<div id="art">
|
||||||
|
<img id="albumArt" src="/art" />
|
||||||
|
</div>
|
||||||
|
<div style="width:100%"><div id="mediaTitle" class="dynamic centered"></div></div>
|
||||||
|
<div id="play_controls">
|
||||||
|
<div id="buttons">
|
||||||
|
<div id="buttonPrev" class="button48 ui-corner-all" title="Previous">
|
||||||
|
</div><div id="buttonRewd" class="button48 ui-corner-all" title="Rewind">
|
||||||
|
</div><div id="buttonPlay" class="button48 ui-corner-all paused" title="Play">
|
||||||
|
</div><div id="buttonStop" class="button48 ui-corner-all" title="Stop">
|
||||||
|
</div><div id="buttonFwrd" class="button48 ui-corner-all" title="Forward">
|
||||||
|
</div><div id="buttonNext" class="button48 ui-corner-all" title="Next"></div>
|
||||||
|
</div>
|
||||||
|
<div id="seekSlider" title="Seek Time" style="font-size:15px;"></div>
|
||||||
|
<div id="currentTime" class="dynamic">00:00:00</div>
|
||||||
|
<div id="totalTime" class="dynamic">00:00:00</div>
|
||||||
|
</div>
|
||||||
|
<div id="controls">
|
||||||
|
<div id="buttons">
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
<div id="volumeSlider" title="Volume" style="font-size:15px;">
|
||||||
|
<img src="images/speaker-32.png" class="ui-slider-handle" alt="volume"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?vlc
|
||||||
|
|
||||||
|
dialogs("stream_config_window.html");
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,53 @@
|
|||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< mobile_browse.html: VLC media player web interface - VLM
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2014 VLC authors and VideoLAN
|
||||||
|
<
|
||||||
|
< 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title><?vlc gettext("VLC media player - Web Interface") ?></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<meta name="referrer" content="no-referrer" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<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="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||||
|
<script type="text/javascript" src="js/controllers.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var pollStatus = false;
|
||||||
|
var browse_target = '#mobile';
|
||||||
|
$(function(){
|
||||||
|
browse();
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="window_browse" title="<?vlc gettext("Media Browser") ?>">
|
||||||
|
<div>
|
||||||
|
<ol id='browse_elements' selectable="selectable">
|
||||||
|
<li><?vlc gettext("Play List") ?></li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,69 @@
|
|||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< mobile_equalizer.html: VLC media player web interface - VLM
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2006 the VideoLAN team
|
||||||
|
<
|
||||||
|
< 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title><?vlc gettext("VLC media player - Web Interface") ?></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<meta name="referrer" content="no-referrer" />
|
||||||
|
<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="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||||
|
<script type="text/javascript" src="js/controllers.js"></script>
|
||||||
|
<script 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="<?vlc gettext("Graphical Equalizer") ?>">
|
||||||
|
<div style="margin: 5px 5px 5px 5px;">
|
||||||
|
<div><?vlc gettext("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>
|
@ -0,0 +1,56 @@
|
|||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< mobile_view.html: VLC media player web interface - VLM
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2014 VLC authors and VideoLAN
|
||||||
|
<
|
||||||
|
< 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title><?vlc gettext("VLC media player - Web Interface") ?></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<meta name="referrer" content="no-referrer" />
|
||||||
|
<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="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||||
|
<script type="text/javascript" src="js/controllers.js"></script>
|
||||||
|
<script type="text/javascript" src="js/ui.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var pollStatus = false;
|
||||||
|
/* delay script loading so we won't block if we have no net access */
|
||||||
|
$.getScript('https://releases.flowplayer.org/js/flowplayer-3.2.6.min.js', function(data, textStatus){
|
||||||
|
$('#player').empty();
|
||||||
|
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
|
||||||
|
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||||
|
/* .getScript only handles success() */
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="player" style="width:100%;height:100%">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<?vlc
|
||||||
|
dialogs("stream_config_window.html");
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,206 @@
|
|||||||
|
|
||||||
|
This file describes commands available through the requests/ file:
|
||||||
|
|
||||||
|
Lines starting with < describe what the page sends back
|
||||||
|
Lines starting with > describe what you can send to the page
|
||||||
|
|
||||||
|
All parameters need to be URL encoded.
|
||||||
|
Examples:
|
||||||
|
# -> %23
|
||||||
|
% -> %25
|
||||||
|
+ -> %2B
|
||||||
|
space -> +
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
Deprecation Notice:
|
||||||
|
---
|
||||||
|
The entire interface is moving to using <MRL> for input and output parameters and attributes
|
||||||
|
pl_play and in_enqueue previously accepted paths. This is still supported, but from 1.3 <MRL> will be required
|
||||||
|
where path attributes are provided in output, these should be ignored in favour of uri attributes
|
||||||
|
path support is scheduled to be removed entirely from 1.3
|
||||||
|
---
|
||||||
|
|
||||||
|
<root> (/)
|
||||||
|
===========
|
||||||
|
|
||||||
|
|
||||||
|
> Get album art for current input:
|
||||||
|
/art (NB: not /requests/art)
|
||||||
|
|
||||||
|
> Get album art for any playlist input (available from API version 3):
|
||||||
|
/art?item=123 (NB: not /requests/art)
|
||||||
|
|
||||||
|
|
||||||
|
status.xml or status.json
|
||||||
|
===========
|
||||||
|
|
||||||
|
|
||||||
|
< Get VLC status information, current item info and meta.
|
||||||
|
< Get VLC version, and http api version
|
||||||
|
|
||||||
|
> add <uri> to playlist and start playback:
|
||||||
|
?command=in_play&input=<uri>&option=<option>
|
||||||
|
the option field is optional, and can have the values:
|
||||||
|
noaudio
|
||||||
|
novideo
|
||||||
|
|
||||||
|
> add <uri> to playlist:
|
||||||
|
?command=in_enqueue&input=<uri>
|
||||||
|
|
||||||
|
> add subtitle to currently playing file
|
||||||
|
?command=addsubtitle&val=<uri>
|
||||||
|
|
||||||
|
> play playlist item <id>. If <id> is omitted, play last active item:
|
||||||
|
?command=pl_play&id=<id>
|
||||||
|
|
||||||
|
> toggle pause. If current state was 'stop', play item <id>, if no <id> specified, play current item. If no current item, play 1st item in the playlist:
|
||||||
|
?command=pl_pause&id=<id>
|
||||||
|
|
||||||
|
> resume playback if paused, else do nothing
|
||||||
|
?command=pl_forceresume
|
||||||
|
|
||||||
|
> pause playback, do nothing if already paused
|
||||||
|
?command=pl_forcepause
|
||||||
|
|
||||||
|
> stop playback:
|
||||||
|
?command=pl_stop
|
||||||
|
|
||||||
|
> jump to next item:
|
||||||
|
?command=pl_next
|
||||||
|
|
||||||
|
> jump to previous item:
|
||||||
|
?command=pl_previous
|
||||||
|
|
||||||
|
> delete item <id> from playlist:
|
||||||
|
?command=pl_delete&id=<id>
|
||||||
|
NOTA BENE: pl_delete is completly UNSUPPORTED
|
||||||
|
|
||||||
|
> empty playlist:
|
||||||
|
?command=pl_empty
|
||||||
|
|
||||||
|
> set audio delay
|
||||||
|
?command=audiodelay&val=<delayinseconds>
|
||||||
|
|
||||||
|
> set subtitle delay
|
||||||
|
?command=subdelay&val=<delayinseconds>
|
||||||
|
|
||||||
|
> set playback rate. must be > 0
|
||||||
|
?command=rate&val=<newplaybackrate>
|
||||||
|
|
||||||
|
> set aspect ratio. Must be one of the following values. Any other value will reset aspect ratio to default
|
||||||
|
?command=aspectratio&val=<newratio>
|
||||||
|
Valid aspect ratio values: 1:1 , 4:3 , 5:4 , 16:9 , 16:10 , 221:100 , 235:100 , 239:100
|
||||||
|
|
||||||
|
> sort playlist using sort mode <val> and order <id>:
|
||||||
|
?command=pl_sort&id=<id>&val=<val>
|
||||||
|
If id=0 then items will be sorted in normal order, if id=1 they will be
|
||||||
|
sorted in reverse order
|
||||||
|
A non exhaustive list of sort modes:
|
||||||
|
0 Id
|
||||||
|
1 Name
|
||||||
|
3 Author
|
||||||
|
5 Random
|
||||||
|
7 Track number
|
||||||
|
|
||||||
|
> toggle random playback:
|
||||||
|
?command=pl_random
|
||||||
|
|
||||||
|
> toggle loop:
|
||||||
|
?command=pl_loop
|
||||||
|
|
||||||
|
> toggle repeat:
|
||||||
|
?command=pl_repeat
|
||||||
|
|
||||||
|
> toggle enable service discovery module <val>:
|
||||||
|
?command=pl_sd&val=<val>
|
||||||
|
Typical values are:
|
||||||
|
sap
|
||||||
|
shoutcast
|
||||||
|
podcast
|
||||||
|
hal
|
||||||
|
|
||||||
|
> toggle fullscreen:
|
||||||
|
?command=fullscreen
|
||||||
|
|
||||||
|
> set volume level to <val> (can be absolute integer, percent or +/- relative value):
|
||||||
|
?command=volume&val=<val>
|
||||||
|
Allowed values are of the form:
|
||||||
|
+<int>, -<int>, <int> or <int>%
|
||||||
|
|
||||||
|
> seek to <val>:
|
||||||
|
?command=seek&val=<val>
|
||||||
|
Allowed values are of the form:
|
||||||
|
[+ or -][<int><H or h>:][<int><M or m or '>:][<int><nothing or S or s or ">]
|
||||||
|
or [+ or -]<int>%
|
||||||
|
(value between [ ] are optional, value between < > are mandatory)
|
||||||
|
examples:
|
||||||
|
1000 -> seek to the 1000th second
|
||||||
|
+1H:2M -> seek 1 hour and 2 minutes forward
|
||||||
|
-10% -> seek 10% back
|
||||||
|
|
||||||
|
>command=preamp&val=<val in dB>
|
||||||
|
sets the preamp value, must be >=-20 and <=20
|
||||||
|
|
||||||
|
>command=equalizer&band=<band>&val=<gain in dB, must be >=-20 and <=20)
|
||||||
|
set the gain for a specific band
|
||||||
|
|
||||||
|
>command=enableeq&val=<0 or 1>
|
||||||
|
0 -- disables the equalizer
|
||||||
|
1 -- enables the equalizer
|
||||||
|
|
||||||
|
>command=setpreset&val=<presetid>
|
||||||
|
set the equalizer preset as per the id specified
|
||||||
|
|
||||||
|
<Displays the equalizer band gains.
|
||||||
|
Band 0: 60 Hz, 1: 170 Hz, 2: 310 Hz, 3: 600 Hz, 4: 1 kHz,
|
||||||
|
5: 3 kHz, 6: 6 kHz, 7: 12 kHz , 8: 14 kHz , 9: 16 kHz
|
||||||
|
|
||||||
|
<Display the list of presets available for the equalizer
|
||||||
|
|
||||||
|
---
|
||||||
|
Commands available from API version 2
|
||||||
|
---
|
||||||
|
|
||||||
|
> select the title
|
||||||
|
?command=title&val=<val>
|
||||||
|
|
||||||
|
> select the chapter
|
||||||
|
?command=title&val=<val>
|
||||||
|
|
||||||
|
> select the audio track (use the number from the stream)
|
||||||
|
?command=audio_track&val=<val>
|
||||||
|
|
||||||
|
> select the video track (use the number from the stream)
|
||||||
|
?command=video_track&val=<val>
|
||||||
|
|
||||||
|
> select the sibtitle track (use the number from the stream)
|
||||||
|
?command=subtitle_track&val=<val>
|
||||||
|
|
||||||
|
playlist.xml or playlist.json:
|
||||||
|
=============
|
||||||
|
< get the full playlist tree
|
||||||
|
|
||||||
|
NB: playlist_jstree.xml is used for the internal web client. It should not be relied upon by external remotes.
|
||||||
|
It may be removed without notice.
|
||||||
|
|
||||||
|
browse.xml or browse.json:
|
||||||
|
===========
|
||||||
|
|
||||||
|
< ?dir=<uri>
|
||||||
|
> get file list from uri. At the moment, only local file uris are supported
|
||||||
|
|
||||||
|
NB: uri is the preferred parameter. Dir is deprecated and may be removed in a future release.
|
||||||
|
< ?dir=<dir>
|
||||||
|
> get <dir>'s filelist
|
||||||
|
|
||||||
|
vlm.xml:
|
||||||
|
========
|
||||||
|
< get the full list of VLM elements
|
||||||
|
|
||||||
|
vlm_cmd.xml:
|
||||||
|
============
|
||||||
|
< execute VLM command <cmd>
|
||||||
|
?command=<cmd>
|
||||||
|
> get the error message from <cmd>
|
||||||
|
|
@ -0,0 +1,38 @@
|
|||||||
|
<?vlc --[[
|
||||||
|
vim:syntax=lua
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< status.xml: VLC media player web interface
|
||||||
|
< this should mirror the content and function of status.json
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2009 the VideoLAN team
|
||||||
|
<
|
||||||
|
< Authors: Rob Jonson <rob -at- hobbyistsoftware -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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
]]?>
|
||||||
|
<?vlc
|
||||||
|
|
||||||
|
--package.loaded.httprequests = nil --uncomment to debug changes
|
||||||
|
local httprequests = require "httprequests"
|
||||||
|
|
||||||
|
httprequests.processcommands()
|
||||||
|
|
||||||
|
local browseTable=httprequests.getbrowsetable()
|
||||||
|
|
||||||
|
httprequests.printTableAsJson(browseTable)
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<?vlc --[[
|
||||||
|
vim:syntax=lua
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< browse.xml: VLC media player web interface
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2006 the VideoLAN team
|
||||||
|
<
|
||||||
|
< 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.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
]] ?>
|
||||||
|
|
||||||
|
<?vlc
|
||||||
|
|
||||||
|
--package.loaded.httprequests = nil --uncomment to debug changes
|
||||||
|
local httprequests = require "httprequests"
|
||||||
|
|
||||||
|
httprequests.processcommands()
|
||||||
|
|
||||||
|
local browseTable=httprequests.getbrowsetable()
|
||||||
|
|
||||||
|
print('<root>\n')
|
||||||
|
|
||||||
|
--httprequests.printTableAsJson(browseTable.element._array,0)
|
||||||
|
|
||||||
|
|
||||||
|
for i,e in ipairs(browseTable.element._array) do
|
||||||
|
print('\n<element ')
|
||||||
|
|
||||||
|
for k,v in pairs(e) do
|
||||||
|
print(" "..httprequests.xmlString(k).."='"..httprequests.xmlString(v).."'")
|
||||||
|
end
|
||||||
|
|
||||||
|
print('/>')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
print('\n</root>')
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
<?vlc --[[
|
||||||
|
vim:syntax=lua
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< playlist.json: VLC media player web interface
|
||||||
|
< this should mirror the content of playlist.xml
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2006 the VideoLAN team
|
||||||
|
<
|
||||||
|
< Authors: Rob Jonson <rob -at- hobbyistsoftware -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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
]] ?>
|
||||||
|
<?vlc
|
||||||
|
|
||||||
|
--package.loaded.httprequests = nil --uncomment to debug changes
|
||||||
|
local httprequests = require "httprequests"
|
||||||
|
|
||||||
|
httprequests.processcommands()
|
||||||
|
|
||||||
|
httprequests.printTableAsJson(httprequests.playlisttable())
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,91 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<?vlc --[[
|
||||||
|
vim:syntax=lua
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< playlist.xml: VLC media player web interface
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2006 the VideoLAN team
|
||||||
|
<
|
||||||
|
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
|
||||||
|
< Authors: Rob Jonson <rob -at- hobbyistsoftware -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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
]] ?>
|
||||||
|
|
||||||
|
<?vlc
|
||||||
|
|
||||||
|
--package.loaded.httprequests = nil --uncomment to debug changes
|
||||||
|
local httprequests = require "httprequests"
|
||||||
|
|
||||||
|
local printleaf = function(item)
|
||||||
|
print ("\n<leaf")
|
||||||
|
|
||||||
|
for k,v in pairs(item) do
|
||||||
|
|
||||||
|
if (k~="type") then
|
||||||
|
print(" "..httprequests.xmlString(k).."=\""..httprequests.xmlString(v).."\"")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
print ("/>")
|
||||||
|
end
|
||||||
|
|
||||||
|
local printnode = function(item)
|
||||||
|
local children=NULL
|
||||||
|
|
||||||
|
print ("\n<node")
|
||||||
|
|
||||||
|
for k,v in pairs(item) do
|
||||||
|
|
||||||
|
if (k=="type") then
|
||||||
|
|
||||||
|
elseif (k=="children") then
|
||||||
|
children=v._array
|
||||||
|
else
|
||||||
|
print(" "..httprequests.xmlString(k).."=\""..httprequests.xmlString(v).."\"")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
print (">")
|
||||||
|
|
||||||
|
return children
|
||||||
|
end
|
||||||
|
|
||||||
|
printitem = function(item)
|
||||||
|
local children=NULL
|
||||||
|
|
||||||
|
if item.type=="node" then
|
||||||
|
children=printnode(item)
|
||||||
|
if (children) then
|
||||||
|
for i,v in ipairs(children) do
|
||||||
|
printitem(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
print ("</node>")
|
||||||
|
else
|
||||||
|
printleaf(item)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
httprequests.processcommands()
|
||||||
|
|
||||||
|
local pt=httprequests.playlisttable()
|
||||||
|
|
||||||
|
printitem(pt)
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<?vlc --[[
|
||||||
|
vim:syntax=lua
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< playlist.xml: VLC media player web interface
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2006 the VideoLAN team
|
||||||
|
<
|
||||||
|
< 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 "")
|
||||||
|
name = 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 "")
|
||||||
|
name = name or ""
|
||||||
|
local current_item_id = vlc.playlist.current()
|
||||||
|
local current = ""
|
||||||
|
-- Is the item the one currently played
|
||||||
|
if(current_item_id ~= nil) then
|
||||||
|
if(current_item_id == item.id) 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>
|
@ -0,0 +1,37 @@
|
|||||||
|
<?vlc --[[
|
||||||
|
vim:syntax=lua
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< status.xml: VLC media player web interface
|
||||||
|
< this should mirror the content and function of status.json
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2009 the VideoLAN team
|
||||||
|
<
|
||||||
|
< Authors: Rob Jonson <rob -at- hobbyistsoftware -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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
]]?>
|
||||||
|
<?vlc
|
||||||
|
|
||||||
|
--package.loaded.httprequests = nil --uncomment to debug changes
|
||||||
|
local httprequests = require "httprequests"
|
||||||
|
|
||||||
|
httprequests.processcommands()
|
||||||
|
|
||||||
|
local statusTable=httprequests.getstatus(true)
|
||||||
|
|
||||||
|
httprequests.printTableAsJson(statusTable)
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<?vlc --[[
|
||||||
|
vim:syntax=lua
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< status.xml: VLC media player web interface
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2009 the VideoLAN team
|
||||||
|
<
|
||||||
|
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
|
||||||
|
< Rob Jonson <rob -at- hobbyistsoftware -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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
]]?>
|
||||||
|
|
||||||
|
<?vlc
|
||||||
|
|
||||||
|
--package.loaded.httprequests = nil --uncomment to debug changes
|
||||||
|
local httprequests = require "httprequests"
|
||||||
|
|
||||||
|
httprequests.processcommands()
|
||||||
|
|
||||||
|
local statusTable=httprequests.getstatus(false)
|
||||||
|
|
||||||
|
print('<root>\n')
|
||||||
|
httprequests.printTableAsXml(statusTable,0)
|
||||||
|
|
||||||
|
local item = vlc.input.item()
|
||||||
|
|
||||||
|
--data in the information section is presented in a non-standard way to keep compatibility.
|
||||||
|
|
||||||
|
?>
|
||||||
|
<information>
|
||||||
|
<category name="meta">
|
||||||
|
<?vlc
|
||||||
|
if item then
|
||||||
|
local metas = item:metas()
|
||||||
|
for k,v in pairs(metas) do
|
||||||
|
local metadataContent = vlc.strings.convert_xml_special_chars( httprequests.xmlString(v) )
|
||||||
|
print("<info name='"..httprequests.xmlString(k).."'>"..metadataContent.."</info>")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
?>
|
||||||
|
</category>
|
||||||
|
<?vlc
|
||||||
|
if item then
|
||||||
|
local info = item:info()
|
||||||
|
for k, v in pairs(info) do
|
||||||
|
print("<category name='"..httprequests.xmlString(k).."'>")
|
||||||
|
for k2, v2 in pairs(v) do
|
||||||
|
print("<info name='"..httprequests.xmlString(k2).."'>"..httprequests.xmlString(v2).."</info>")
|
||||||
|
end
|
||||||
|
print("</category>")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
?>
|
||||||
|
</information>
|
||||||
|
<stats>
|
||||||
|
<?vlc
|
||||||
|
if item then
|
||||||
|
local stats = item:stats()
|
||||||
|
for k,v in pairs(stats) do
|
||||||
|
local tag = string.gsub(k,"_","")
|
||||||
|
print("<"..httprequests.xmlString(tag)..">"..httprequests.xmlString(v).."</"..httprequests.xmlString(tag)..">\n")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
?>
|
||||||
|
</stats>
|
||||||
|
</root>
|
@ -0,0 +1,149 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<?vlc --[[
|
||||||
|
vim:syntax=lua
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< vlm.xml: VLC media player web interface
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2006 the VideoLAN team
|
||||||
|
<
|
||||||
|
< 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.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
]]
|
||||||
|
|
||||||
|
local function insert_children(c,t)
|
||||||
|
if c.children then
|
||||||
|
for _, d in ipairs(c.children) do
|
||||||
|
table.insert(t,d.value or d.name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function print_table(name,t)
|
||||||
|
print("<"..name.."s>")
|
||||||
|
if #t ~= 0 then
|
||||||
|
for _,v in ipairs(t) do
|
||||||
|
print("<"..name..">")
|
||||||
|
print(vlc.strings.convert_xml_special_chars(v))
|
||||||
|
print("</"..name..">")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
print("</"..name.."s>")
|
||||||
|
end
|
||||||
|
local function print_media(m)
|
||||||
|
local name = m.name
|
||||||
|
local type_, enabled, output
|
||||||
|
local loop = ""
|
||||||
|
local inputs = {}
|
||||||
|
local options = {}
|
||||||
|
local instances = {}
|
||||||
|
for _,c in ipairs(m.children) do
|
||||||
|
if c.name=="type" then
|
||||||
|
type_ = c.value
|
||||||
|
elseif c.name=="enabled" then
|
||||||
|
enabled = c.value
|
||||||
|
elseif c.name=="loop" then
|
||||||
|
loop = c.value
|
||||||
|
elseif c.name=="output" then
|
||||||
|
output = c.value
|
||||||
|
elseif c.name=="inputs" then
|
||||||
|
insert_children(c,inputs)
|
||||||
|
elseif c.name=="options" then
|
||||||
|
insert_children(c,options)
|
||||||
|
elseif c.name=="instances" then
|
||||||
|
if c.children then
|
||||||
|
for _, d in ipairs(c.children) do
|
||||||
|
local instance = "<instance "
|
||||||
|
for _,e in ipairs(d.children) do
|
||||||
|
instance = instance .. vlc.strings.convert_xml_special_chars(e.name) .. "=\"" .. vlc.strings.convert_xml_special_chars(e.value) .. "\" "
|
||||||
|
end
|
||||||
|
instance = instance .. "/>"
|
||||||
|
table.insert(instances,instance)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
print("<"..type_.." name=\""..vlc.strings.convert_xml_special_chars(name).."\" enabled=\""..vlc.strings.convert_xml_special_chars(enabled).."\" loop=\""..vlc.strings.convert_xml_special_chars(loop).."\">\n")
|
||||||
|
print("<output>"..vlc.strings.convert_xml_special_chars(output).."</output>\n")
|
||||||
|
print_table("input",inputs)
|
||||||
|
print_table("option",options)
|
||||||
|
print "<instances>\n"
|
||||||
|
if #instances ~= 0 then
|
||||||
|
print(table.concat(instances))
|
||||||
|
end
|
||||||
|
print "</instances>\n"
|
||||||
|
print("</"..type_..">\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function print_schedule(m)
|
||||||
|
local name = m.name
|
||||||
|
local enabled, date, period, repeat_ = "", "", "", ""
|
||||||
|
local commands = {}
|
||||||
|
for _,c in ipairs(m.children) do
|
||||||
|
if c.name=="enabled" then
|
||||||
|
enabled = c.value
|
||||||
|
elseif c.name=="date" then
|
||||||
|
date = c.value
|
||||||
|
elseif c.name=="period" then
|
||||||
|
period = c.value
|
||||||
|
elseif c.name=="repeat" then
|
||||||
|
repeat_ = c.value
|
||||||
|
elseif c.name=="commands" then
|
||||||
|
insert_children(c,commands)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
print("<schedule name=\""..vlc.strings.convert_xml_special_chars(name).."\" enabled=\""..vlc.strings.convert_xml_special_chars(enabled).."\" period=\""..vlc.strings.convert_xml_special_chars(period).."\" repeat=\""..vlc.strings.convert_xml_special_chars(repeat_).."\">\n")
|
||||||
|
print_table("command",commands)
|
||||||
|
print("</schedule>\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function print_xml(m)
|
||||||
|
print "<vlm>"
|
||||||
|
if m then
|
||||||
|
for _, c in ipairs(m.children) do
|
||||||
|
if c.name=="media" and c.children then
|
||||||
|
for _, d in ipairs(c.children) do
|
||||||
|
print_media(d)
|
||||||
|
end
|
||||||
|
elseif c.name=="schedule" and c.children then
|
||||||
|
for _, d in ipairs(c.children) do
|
||||||
|
print_schedule(d)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
print "oops"
|
||||||
|
end
|
||||||
|
print "</vlm>"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function print_msg(m)
|
||||||
|
if not m then return end
|
||||||
|
print("<"..m.name..">\n")
|
||||||
|
if m.children then
|
||||||
|
for _, child in ipairs(m.children) do
|
||||||
|
print_msg(child)
|
||||||
|
end
|
||||||
|
elseif m.value then
|
||||||
|
print(m.value)
|
||||||
|
end
|
||||||
|
print("</"..m.name..">\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
local msg = vlm:execute_command("show")
|
||||||
|
print_xml(msg)
|
||||||
|
--print_msg(msg)
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<?vlc --[[
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< vlm_cmd.xml: VLC media player web interface
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2006 the VideoLAN team
|
||||||
|
<
|
||||||
|
< 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.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
]]?>
|
||||||
|
<vlm><error><?vlc
|
||||||
|
if _GET["command"] then
|
||||||
|
local msg = vlm:execute_command(_GET["command"])
|
||||||
|
if msg.value then
|
||||||
|
print(msg.name,":",vlc.strings.convert_xml_special_chars(msg.value))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
?>No command<?vlc
|
||||||
|
end
|
||||||
|
?></error>
|
||||||
|
</vlm>
|
@ -0,0 +1,82 @@
|
|||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< view.html: VLC media player web interface - VLM
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2014 VLC authors and VideoLAN
|
||||||
|
<
|
||||||
|
< 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title><?vlc gettext("VLC media player - Flash Viewer") ?></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<meta name="referrer" content="no-referrer" />
|
||||||
|
<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="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
|
||||||
|
<script type="text/javascript" src="https://releases.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
$(function(){
|
||||||
|
$('#window_stream').resizable({
|
||||||
|
minHeight: 300,
|
||||||
|
minWidth: 400,
|
||||||
|
resize:function(event,ui){
|
||||||
|
$('#player').css({
|
||||||
|
'width':ui.size.width-80,
|
||||||
|
'height':ui.size.height-100
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#button_stream_config').click(function(){
|
||||||
|
$('#window_stream_config').dialog('open');
|
||||||
|
});
|
||||||
|
$('#player').empty();
|
||||||
|
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
|
||||||
|
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||||
|
});
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
#window_stream { width: 800px; height: 600px; padding: 0.5em; }
|
||||||
|
#window_stream h3 { text-align: left; margin: 0; font-weight: normal; font-size: 12px }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="window_stream" class="ui-widget-content">
|
||||||
|
<h3 class="ui-widget-header"><?vlc gettext("Streaming Output") ?></h3>
|
||||||
|
<div class="ui-widget-content">
|
||||||
|
<div id="button_stream_config" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Configure") ?>" opendialog="window_stream_config"><span class="ui-icon ui-icon-wrench"></span></div>
|
||||||
|
<div align="center">
|
||||||
|
<div href="http://localhost:8081/stream.flv" style="display:block;width:720px;height:500px" id="player"></div>
|
||||||
|
</div>
|
||||||
|
<div> </div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<?vlc print(vlc.misc.version() .. " - Lua Web Interface - " .. vlc.misc.copyright()) ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?vlc
|
||||||
|
|
||||||
|
dialogs("stream_config_window.html");
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,47 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< vlm.html: VLC media player web interface - VLM
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||||
|
< Copyright (C) 2005-2014 VLC authors and VideoLAN
|
||||||
|
<
|
||||||
|
< 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.
|
||||||
|
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>VLC media player - Web Interface - VLM</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="referrer" content="no-referrer" />
|
||||||
|
<link href="old/style.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script type="text/javascript" src="old/js/functions.js"></script>
|
||||||
|
<script type="text/javascript" src="old/js/vlm.js"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body onload="vlm_get_elements();">
|
||||||
|
|
||||||
|
<?vlc
|
||||||
|
current_page = "vlm"
|
||||||
|
|
||||||
|
dialogs("old/browse","old/input","old/sout","old/vlm","old/footer")
|
||||||
|
?>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,12 @@
|
|||||||
|
## <pre>
|
||||||
|
##
|
||||||
|
## <a href="vlm.html">VLM HTTP interface</a>
|
||||||
|
## This file can be loaded as is in VLM.
|
||||||
|
## Comments starting with "##" were added by the HTTP interface.
|
||||||
|
## You can remove them if you want to.
|
||||||
|
##
|
||||||
|
<?vlc print(vlc.vlm.execute_command(vlm,"export").value) ?>
|
||||||
|
|
||||||
|
##
|
||||||
|
## end of export
|
||||||
|
## </pre>
|