2508271258
撥放器更新至 4.0測試版 軟體版本2.10
This commit is contained in:
parent
2466c8cb6a
commit
2b25b14047
6
NuGet.Config
Normal file
6
NuGet.Config
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<packageSources>
|
||||||
|
<add key="videolan-preview" value="https://f.feedz.io/videolan/preview/nuget/index.json" />
|
||||||
|
</packageSources>
|
||||||
|
</configuration>
|
@ -55,7 +55,7 @@ namespace DualScreenDemo
|
|||||||
private Button musicDownButton;
|
private Button musicDownButton;
|
||||||
private Button micUpButton;
|
private Button micUpButton;
|
||||||
private Button micDownButton;
|
private Button micDownButton;
|
||||||
private Button originalSongButton;
|
public Button originalSongButton;
|
||||||
private Button replayButton;
|
private Button replayButton;
|
||||||
public Button pauseButton;
|
public Button pauseButton;
|
||||||
public Button playButton;
|
public Button playButton;
|
||||||
@ -210,7 +210,7 @@ namespace DualScreenDemo
|
|||||||
private Timer autoRefreshTimer;
|
private Timer autoRefreshTimer;
|
||||||
private Timer timerCountdown;
|
private Timer timerCountdown;
|
||||||
string Rtime;
|
string Rtime;
|
||||||
bool test = true;
|
bool test = false;
|
||||||
//private Label pageNumberLabel; // 添加頁碼標籤
|
//private Label pageNumberLabel; // 添加頁碼標籤
|
||||||
public PrimaryForm()
|
public PrimaryForm()
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ namespace DualScreenDemo
|
|||||||
private static PrimaryForm primaryForm; // 儲存實例的參考
|
private static PrimaryForm primaryForm; // 儲存實例的參考
|
||||||
public static Room room = new Room();
|
public static Room room = new Room();
|
||||||
|
|
||||||
public static string verSion = "Server V2.9 202508221643";
|
public static string verSion = "Server V2.10 202508270919";
|
||||||
|
|
||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
static void Main()
|
||||||
|
@ -1,29 +1,9 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using LibVLCSharp.Shared;
|
using DirectShowLib;
|
||||||
|
using LibVLCSharp;
|
||||||
|
|
||||||
namespace DualScreenDemo.Services
|
namespace DualScreenDemo.Services
|
||||||
{
|
{
|
||||||
public static class ControlExtensions
|
|
||||||
{
|
|
||||||
public static Task InvokeAsync(this Control control, Func<Task> func)
|
|
||||||
{
|
|
||||||
var tcs = new TaskCompletionSource<object>();
|
|
||||||
control.BeginInvoke(new Action(async () =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await func();
|
|
||||||
tcs.SetResult(null);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
tcs.SetException(ex);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
return tcs.Task;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class MediaService : IDisposable
|
public class MediaService : IDisposable
|
||||||
{
|
{
|
||||||
private LibVLC _libVLC;
|
private LibVLC _libVLC;
|
||||||
@ -36,7 +16,7 @@ namespace DualScreenDemo.Services
|
|||||||
Core.Initialize();
|
Core.Initialize();
|
||||||
_libVLC = new LibVLC(
|
_libVLC = new LibVLC(
|
||||||
// "--verbose=-1",
|
// "--verbose=-1",
|
||||||
enableDebugLogs: true,
|
// enableDebugLogs: true,
|
||||||
"--audio-time-stretch",
|
"--audio-time-stretch",
|
||||||
"--vout=automatic",
|
"--vout=automatic",
|
||||||
"--h264-fps=30",
|
"--h264-fps=30",
|
||||||
@ -46,10 +26,10 @@ namespace DualScreenDemo.Services
|
|||||||
"--audio-time-stretch"
|
"--audio-time-stretch"
|
||||||
);
|
);
|
||||||
|
|
||||||
_libVLC.Log += (sender, args) =>
|
// _libVLC.Log += (sender, args) =>
|
||||||
{
|
// {
|
||||||
Console.WriteLine($"[{args.Level}] {args.Message}");
|
// Console.WriteLine($"[{args.Level}] {args.Message}");
|
||||||
};
|
// };
|
||||||
|
|
||||||
_mediaPlayer = new MediaPlayer(_libVLC);
|
_mediaPlayer = new MediaPlayer(_libVLC);
|
||||||
_mediaPlayer.AspectRatio = "16:9";
|
_mediaPlayer.AspectRatio = "16:9";
|
||||||
@ -80,7 +60,7 @@ namespace DualScreenDemo.Services
|
|||||||
|
|
||||||
public bool IsAtEnd()
|
public bool IsAtEnd()
|
||||||
{
|
{
|
||||||
if (_mediaPlayer.State == VLCState.Ended)
|
if (_mediaPlayer.State == VLCState.Stopped)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -97,40 +77,17 @@ namespace DualScreenDemo.Services
|
|||||||
private bool _isTransitioning = false;
|
private bool _isTransitioning = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void LoadMedia(string filePath, int audioTrackIndex = 0)
|
public void LoadMedia(string filePath, int audioTrackIndex = 0)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// _mediaPlayer.Stop();
|
_mediaPlayer.Stop();
|
||||||
_media?.Dispose();
|
_media?.Dispose();
|
||||||
_media = new Media(_libVLC, filePath, FromType.FromPath);
|
_media = new Media(filePath, FromType.FromPath);
|
||||||
_mediaPlayer.Play(addMediaOption(_media, audioTrackIndex));
|
_mediaPlayer.Play(addMediaOption(_media, audioTrackIndex));
|
||||||
_mediaPlayer.Stopped += (s, e) => Console.WriteLine("Player Stopped");
|
_mediaPlayer.Fullscreen=true;
|
||||||
|
_mediaPlayer.Mute = false;
|
||||||
// _mediaPlayer.EndReached += async(s, e) =>
|
// _mediaPlayer.Stopped += (s, e) => Console.WriteLine("Player Stopped");
|
||||||
// {
|
|
||||||
// if (_isTransitioning) return;
|
|
||||||
// _isTransitioning = true;
|
|
||||||
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// await VideoPlayerForm.Instance.InvokeAsync(async () =>
|
|
||||||
// {
|
|
||||||
// await VideoPlayerForm.Instance.PlayNextSong();
|
|
||||||
// await Task.Delay(2000); // Optional delay
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// catch (Exception ex)
|
|
||||||
// {
|
|
||||||
// Console.WriteLine($"Error during transition: {ex.Message}");
|
|
||||||
// }
|
|
||||||
// finally
|
|
||||||
// {
|
|
||||||
// _isTransitioning = false;
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -142,11 +99,13 @@ namespace DualScreenDemo.Services
|
|||||||
private Media addMediaOption(Media media, int audioTrackIndex)
|
private Media addMediaOption(Media media, int audioTrackIndex)
|
||||||
{
|
{
|
||||||
media.AddOption(":avcodec-hw=dxva2");
|
media.AddOption(":avcodec-hw=dxva2");
|
||||||
media.AddOption($":drop-late-frames");
|
media.AddOption(":drop-late-frames");
|
||||||
media.AddOption(":audio-output=directsound");
|
media.AddOption(":audio-output=directsound");
|
||||||
media.AddOption(":network-caching=300");
|
media.AddOption(":network-caching=300");
|
||||||
media.AddOption(":live-caching=300");
|
media.AddOption(":live-caching=300");
|
||||||
media.AddOption(":file-caching=300");
|
media.AddOption(":file-caching=300");
|
||||||
|
media.AddOption(":clock-jitter=0");
|
||||||
|
media.AddOption(":clock-synchro=0");
|
||||||
media.AddOption($":audio-track={audioTrackIndex}");
|
media.AddOption($":audio-track={audioTrackIndex}");
|
||||||
return media;
|
return media;
|
||||||
}
|
}
|
||||||
@ -164,20 +123,20 @@ namespace DualScreenDemo.Services
|
|||||||
|
|
||||||
if (media == null) return result;
|
if (media == null) return result;
|
||||||
|
|
||||||
if (!media.IsParsed)
|
//if (!media.IsParsed)
|
||||||
media.Parse(MediaParseOptions.ParseLocal);
|
// media.Parse(MediaParseOptions.ParseLocal);
|
||||||
|
|
||||||
var tracks = media.Tracks;
|
//var tracks = media.Tracks;
|
||||||
if (tracks == null) return result;
|
// if (tracks == null) return result;
|
||||||
|
|
||||||
foreach (var track in tracks.Where(t => t.TrackType == TrackType.Audio))
|
// foreach (var track in tracks.Where(t => t.TrackType == TrackType.Audio))
|
||||||
{
|
// {
|
||||||
result.Add(new TrackDescription
|
// result.Add(new TrackDescription
|
||||||
{
|
// {
|
||||||
Id = track.Id,
|
// Id = track.Id,
|
||||||
Name = !string.IsNullOrEmpty(track.Language) ? track.Language : $"Audio Track {track.Id}"
|
// Name = !string.IsNullOrEmpty(track.Language) ? track.Language : $"Audio Track {track.Id}"
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,12 +144,12 @@ namespace DualScreenDemo.Services
|
|||||||
{
|
{
|
||||||
var audioTracks = GetAudioTracks();
|
var audioTracks = GetAudioTracks();
|
||||||
if (trackIndex < 0 || trackIndex >= audioTracks.Count) return;
|
if (trackIndex < 0 || trackIndex >= audioTracks.Count) return;
|
||||||
_mediaPlayer.SetAudioTrack(audioTracks[trackIndex].Id);
|
//_mediaPlayer.SetAudioTrack(audioTracks[trackIndex].Id);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Volume
|
#region Volume
|
||||||
public void SetVolume(int volume) => _mediaPlayer.Volume = volume;
|
public void SetVolume(int volume) => _mediaPlayer.SetVolume(volume);
|
||||||
public int GetVolume() => _mediaPlayer.Volume;
|
public int GetVolume() => _mediaPlayer.Volume;
|
||||||
public bool Mute(bool isMuted)
|
public bool Mute(bool isMuted)
|
||||||
{
|
{
|
||||||
|
@ -2,7 +2,8 @@ using System.Runtime.InteropServices;
|
|||||||
using DBObj;
|
using DBObj;
|
||||||
using OverlayFormObj;
|
using OverlayFormObj;
|
||||||
using DualScreenDemo.Services;
|
using DualScreenDemo.Services;
|
||||||
using LibVLCSharp.WinForms;
|
using LibVLCSharp;
|
||||||
|
|
||||||
namespace DualScreenDemo
|
namespace DualScreenDemo
|
||||||
{
|
{
|
||||||
public class VideoPlayerForm : Form
|
public class VideoPlayerForm : Form
|
||||||
@ -348,12 +349,23 @@ namespace DualScreenDemo
|
|||||||
{
|
{
|
||||||
string pathToPlay = song.getFile();
|
string pathToPlay = song.getFile();
|
||||||
_mediaService0.LoadMedia(pathToPlay, 0);
|
_mediaService0.LoadMedia(pathToPlay, 0);
|
||||||
|
_mediaService0.Player.Media.AddOption(":no-audio");
|
||||||
|
_mediaService0.Player.AspectRatio = "8:5";
|
||||||
|
// _mediaService0.Player.Scale = 1.5f;
|
||||||
_mediaService1.LoadMedia(pathToPlay, song.isPublicSong ? 0 : 1);
|
_mediaService1.LoadMedia(pathToPlay, song.isPublicSong ? 0 : 1);
|
||||||
// Play();
|
|
||||||
// Thread.Sleep(100);
|
|
||||||
|
|
||||||
// isVocalRemoved = true;
|
if (song.isPublicSong)
|
||||||
Mute(isMuted);
|
{
|
||||||
|
PrimaryForm.Instance.originalSongButton.Click -= PrimaryForm.Instance.OriginalSongButton_Click;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PrimaryForm.Instance.originalSongButton.Click -= PrimaryForm.Instance.OriginalSongButton_Click;
|
||||||
|
PrimaryForm.Instance.originalSongButton.Click += PrimaryForm.Instance.OriginalSongButton_Click;
|
||||||
|
}
|
||||||
|
isVocalRemoved = true;
|
||||||
|
if (isMuted) { Mute(true); }
|
||||||
|
|
||||||
// 音量處理
|
// 音量處理
|
||||||
SetVolume(100 + song.getBasic().getDbChange());
|
SetVolume(100 + song.getBasic().getDbChange());
|
||||||
Task.Run(() => Thread.Sleep(100));
|
Task.Run(() => Thread.Sleep(100));
|
||||||
@ -365,13 +377,6 @@ namespace DualScreenDemo
|
|||||||
{
|
{
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
Program.WriteLog(ex.ToString());
|
Program.WriteLog(ex.ToString());
|
||||||
Stop();
|
|
||||||
_mediaService0.Dispose();
|
|
||||||
_mediaService1.Dispose();
|
|
||||||
_mediaService0 = new MediaService();
|
|
||||||
_mediaService1 = new MediaService();
|
|
||||||
this.Invoke(VideoPlayerForm_Shown);
|
|
||||||
InitializeAndPlayMedia(song);
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -493,12 +498,13 @@ namespace DualScreenDemo
|
|||||||
{
|
{
|
||||||
if (isMuted)
|
if (isMuted)
|
||||||
{
|
{
|
||||||
_mediaService0.Mute(true);
|
// _mediaService0.Mute(true);
|
||||||
_mediaService1.Mute(true);
|
_mediaService1.Mute(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_ToggleVocalRemoval(isVocalRemoved);
|
// _ToggleVocalRemoval(isVocalRemoved);
|
||||||
|
_mediaService1.Mute(false);
|
||||||
}
|
}
|
||||||
return isMuted;
|
return isMuted;
|
||||||
}
|
}
|
||||||
@ -512,19 +518,27 @@ namespace DualScreenDemo
|
|||||||
{
|
{
|
||||||
return _mediaService1.GetVolume();
|
return _mediaService1.GetVolume();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool isVocalRemoved = true;
|
private bool isVocalRemoved = true;
|
||||||
public void ToggleVocalRemoval()
|
public void ToggleVocalRemoval()
|
||||||
{
|
{
|
||||||
isVocalRemoved = _ToggleVocalRemoval(!isVocalRemoved);
|
if (isVocalRemoved)
|
||||||
|
{
|
||||||
|
|
||||||
|
_mediaService1.Player.Select(TrackType.Audio, "audio/2");
|
||||||
|
|
||||||
|
isVocalRemoved = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_mediaService1.Player.Select(TrackType.Audio, "audio/1,audio/3");
|
||||||
|
// _mediaService1.Player.Select(TrackType.Audio, "audio/3");
|
||||||
|
isVocalRemoved = true;
|
||||||
|
}
|
||||||
|
// isVocalRemoved = _ToggleVocalRemoval(!isVocalRemoved);
|
||||||
OverlayForm.MainForm.ShowTopRightLabelTime(isVocalRemoved ? "無人聲" : "有人聲");
|
OverlayForm.MainForm.ShowTopRightLabelTime(isVocalRemoved ? "無人聲" : "有人聲");
|
||||||
}
|
}
|
||||||
private bool _ToggleVocalRemoval(bool isVocal)
|
|
||||||
{
|
|
||||||
|
|
||||||
_mediaService0.Mute(isVocal);
|
|
||||||
_mediaService1.Mute(!isVocal);
|
|
||||||
return isVocal;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,15 +13,16 @@
|
|||||||
<ApplicationManifest>app.manifest</ApplicationManifest> <!-- 確保這一行引用了 manifest 文件 -->
|
<ApplicationManifest>app.manifest</ApplicationManifest> <!-- 確保這一行引用了 manifest 文件 -->
|
||||||
<UseWindowsForms>true</UseWindowsForms>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
<NoWarn>CS8618,CS8602,CS8622,CS8625,CS8600,CS8603,CS8601,CS8604,CS4014</NoWarn>
|
<NoWarn>CS8618,CS8602,CS8622,CS8625,CS8600,CS8603,CS8601,CS8604,CS4014</NoWarn>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="LibVLCSharp" Version="3.9.4" />
|
<PackageReference Include="LibVLCSharp" Version="4.0.0-alpha-20250825-9139" />
|
||||||
<PackageReference Include="LibVLCSharp.WinForms" Version="3.9.4" />
|
<PackageReference Include="LibVLCSharp.WinForms" Version="4.0.0-alpha-20250825-9139" />
|
||||||
<PackageReference Include="MySqlConnector" Version="2.4.0" />
|
<PackageReference Include="MySqlConnector" Version="2.4.0" />
|
||||||
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.117" />
|
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.117" />
|
||||||
<PackageReference Include="System.IO.Ports" Version="9.0.3" />
|
<PackageReference Include="System.IO.Ports" Version="9.0.3" />
|
||||||
<PackageReference Include="VideoLAN.LibVLC.Windows" Version="3.0.21" />
|
<PackageReference Include="VideoLAN.LibVLC.Windows" Version="4.0.0-alpha-20250825" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="AxInterop.WMPLib">
|
<Reference Include="AxInterop.WMPLib">
|
||||||
|
216
superstar.csproj.user
Normal file
216
superstar.csproj.user
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup />
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="ImagePanel.cs">
|
||||||
|
<SubType>Component</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="OverlayFormObj\OverlayForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="OverlayFormObj\OverlayForm.Helpers.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="OverlayFormObj\OverlayForm.Labels.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\CategorySearch\PrimaryForm.CategorySearch.ChinaSongs.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\CategorySearch\PrimaryForm.CategorySearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\CategorySearch\PrimaryForm.CategorySearch.LoveDuet.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\CategorySearch\PrimaryForm.CategorySearch.MedleyDance.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\CategorySearch\PrimaryForm.CategorySearch.Nineties.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\CategorySearch\PrimaryForm.CategorySearch.NostalgicSongs.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\CategorySearch\PrimaryForm.CategorySearch.TalentShow.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\CategorySearch\PrimaryForm.CategorySearch.VietnameseSongs.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\GroupSearch\PrimaryForm.GroupSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\GroupSearch\PrimaryForm.GroupSearch.GuoYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\GroupSearch\PrimaryForm.GroupSearch.HanYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\GroupSearch\PrimaryForm.GroupSearch.RiYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\GroupSearch\PrimaryForm.GroupSearch.TaiYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\GroupSearch\PrimaryForm.GroupSearch.YingYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\GroupSearch\PrimaryForm.GroupSearch.YueYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\HotSong\PrimaryForm.HotSong.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\HotSong\PrimaryForm.HotSongChinese.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\HotSong\PrimaryForm.HotSongEnglish.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\HotSong\PrimaryForm.HotSongJapanese.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\HotSong\PrimaryForm.HotSongKorean.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\HotSong\PrimaryForm.HotSongMandarinNew.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\HotSong\PrimaryForm.HotSongTaiwanese.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\HotSong\PrimaryForm.HotSongTaiwaneseNew.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\LanguageSearch\PrimaryForm.LanguageSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\LanguageSearch\PrimaryForm.LanguageSearch.GuoYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\LanguageSearch\PrimaryForm.LanguageSearch.HanYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\LanguageSearch\PrimaryForm.LanguageSearch.KeYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\LanguageSearch\PrimaryForm.LanguageSearch.RiYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\LanguageSearch\PrimaryForm.LanguageSearch.TaiYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\LanguageSearch\PrimaryForm.LanguageSearch.YingWen.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\LanguageSearch\PrimaryForm.LanguageSearch.YueYu.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\NewSongAlert\PrimaryForm.NewSongAlert.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\NewSongAlert\PrimaryForm.NewSongAlertCantonese.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\NewSongAlert\PrimaryForm.NewSongAlertChinese.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\NewSongAlert\PrimaryForm.NewSongAlertEnglish.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\NewSongAlert\PrimaryForm.NewSongAlertJapanese.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\NewSongAlert\PrimaryForm.NewSongAlertKorean.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\NewSongAlert\PrimaryForm.NewSongAlertTaiwanese.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.Favorite.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.MultiPagePanel.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.OrderedSongs.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.Promotions.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.PromotionsAndMenuPanel.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.QRCode.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.SequenceManager.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.SoundEffects.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.SQLSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.SyncScreen.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.ToggleLight.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\PrimaryForm.VodScreen.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SingerSearch\PrimaryForm.SingerSearch.BopomofoSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SingerSearch\PrimaryForm.SingerSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SingerSearch\PrimaryForm.SingerSearch.EnglishSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SingerSearch\PrimaryForm.SingerSearch.HandwritingSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SingerSearch\PrimaryForm.SingerSearch.PinyinSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SingerSearch\PrimaryForm.SingerSearch.WordCountSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SongSearch\PrimaryForm.SongSearch.BopomofoSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SongSearch\PrimaryForm.SongSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SongSearch\PrimaryForm.SongSearch.EnglishSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SongSearch\PrimaryForm.SongSearch.HandwritingSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SongSearch\PrimaryForm.SongSearch.NumberSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SongSearch\PrimaryForm.SongSearch.PinyinSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PrimaryFormParts\SongSearch\PrimaryForm.SongSearch.WordCountSearch.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="PromotionsAndMenuPanel.cs">
|
||||||
|
<SubType>Component</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="VideoPlayerForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
Loading…
x
Reference in New Issue
Block a user