KaraokePC/KaraokePlayer/MainForm.cs
Matt Bruce be8f8a328e refactored to song
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2016-03-21 22:06:56 -05:00

113 lines
4.1 KiB
C#

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<Song> _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<string> files = new List<string>();
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();
}
}
}
}