using System; using MaterialSkin; using MaterialSkin.Controls; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using Herse.Models; namespace KaraokePlayer { public partial class MainForm : MaterialForm { private readonly MaterialSkinManager _materialSkinManager; private List _fileList; private Song currentSong = null; public MainForm() { InitializeComponent(); karaokeCDGPlayer.setup(true, true); karaokeMP4Player.setup(false, true); karaokeCDGPlayer.songEndedHandler += new KaraokePlayer.KaraokeVideoPlayer.SongEndedEventHandler(this.karaokePlayerSongEnded); karaokeMP4Player.songEndedHandler += new KaraokePlayer.KaraokeVideoPlayer.SongEndedEventHandler(this.karaokePlayerSongEnded); // Initialize MaterialSkinManager _materialSkinManager = MaterialSkinManager.Instance; _materialSkinManager.AddFormToManage(this); //_materialSkinManager.Theme = new DarkTheme(); _materialSkinManager.ColorScheme = new ColorScheme(Primary.Green600, Primary.Green700, Primary.Green200, Accent.Red100, TextShade.WHITE); } private void materialRaisedButton1_Click(object sender, System.EventArgs e) { playSelectedFile(); } private void btnBrowse_Click(object sender, EventArgs e) { if (browseDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var files = GetFiles(browseDialog.SelectedPath, "*.cdg|*.mp4", searchOption: System.IO.SearchOption.AllDirectories); var filtered = files.Where(f => f.Length < 248).ToList(); _fileList = filtered.Select(file => new Song(file)).ToList(); materialListBox1.DataSource = _fileList; materialListBox1.DisplayMember = "FileName"; } } private void materialListBox1_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e) { int index = this.materialListBox1.IndexFromPoint(e.Location); if (index != System.Windows.Forms.ListBox.NoMatches) { playSelectedFile(); } } private void materialSingleLineTextField1_TextChanged(object sender, EventArgs e) { materialListBox1.DataSource = _fileList.Where( file => Regex.IsMatch(file.FullPath, materialSingleLineTextField1.Text, RegexOptions.IgnoreCase)).ToList(); } public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption) { string[] searchPatterns = searchPattern.Split('|'); List files = new List(); foreach (string sp in searchPatterns) files.AddRange(System.IO.Directory.GetFiles(path, sp, searchOption)); files.Sort(); return files.ToArray(); } public void playSelectedFile() { Song file = (Song)materialListBox1.SelectedItem; currentSong = file; if (file.Extension.ToLower() == "cdg") { karaokeCDGPlayer.Play(new Uri(Path.ChangeExtension(file.FullPath, ".mp3"))); karaokeCDGPlayer.Visible = true; karaokeMP4Player.Visible = false; karaokeMP4Player.Stop(); } else { karaokeMP4Player.Play(new Uri(file.FullPath)); karaokeMP4Player.Visible = true; karaokeCDGPlayer.Visible = false; karaokeCDGPlayer.Stop(); } } public void karaokePlayerSongEnded(object sender, EventArgs e) { //here } private void btnStop_Click(object sender, EventArgs e) { if (currentSong == null) return; if (currentSong.Extension.ToLower() == "cdg") { karaokeMP4Player.Stop(); } else { karaokeCDGPlayer.Stop(); } } } }