diff --git a/.vs/SoundBoard/v16/.suo b/.vs/SoundBoard/v16/.suo new file mode 100644 index 0000000..4a81323 Binary files /dev/null and b/.vs/SoundBoard/v16/.suo differ diff --git a/SoundBoard.v11.suo b/SoundBoard.v11.suo index 84b5021..4a81323 100644 Binary files a/SoundBoard.v11.suo and b/SoundBoard.v11.suo differ diff --git a/SoundBoard/GenerateRandomPlayList.cs b/SoundBoard/GenerateRandomPlayList.cs new file mode 100644 index 0000000..95fb791 --- /dev/null +++ b/SoundBoard/GenerateRandomPlayList.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SoundBoard +{ + class GenerateRandomPlayList + { + + } +} diff --git a/SoundBoard/Properties/AssemblyInfo.cs b/SoundBoard/Properties/AssemblyInfo.cs index 6d39fad..553382a 100644 --- a/SoundBoard/Properties/AssemblyInfo.cs +++ b/SoundBoard/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.9.0.0")] -[assembly: AssemblyFileVersion("0.9.0.0")] +[assembly: AssemblyVersion("1.5.0.0")] +[assembly: AssemblyFileVersion("1.5.0.0")] diff --git a/SoundBoard/SoundBoard.csproj b/SoundBoard/SoundBoard.csproj index 37e1640..c707641 100644 --- a/SoundBoard/SoundBoard.csproj +++ b/SoundBoard/SoundBoard.csproj @@ -96,6 +96,7 @@ aboutForm.cs + Form diff --git a/SoundBoard/aboutForm.Designer.cs b/SoundBoard/aboutForm.Designer.cs index 6ec8ad7..7f681d1 100644 --- a/SoundBoard/aboutForm.Designer.cs +++ b/SoundBoard/aboutForm.Designer.cs @@ -58,7 +58,7 @@ this.applicationVersionLabel.Name = "applicationVersionLabel"; this.applicationVersionLabel.Size = new System.Drawing.Size(246, 80); this.applicationVersionLabel.TabIndex = 1; - this.applicationVersionLabel.Text = "Dynamic Soundboard \r\n\r\nVersion Beta 0.9.0.0\r\nMP3 sound format supported!"; + this.applicationVersionLabel.Text = "Dynamic Soundboard \r\n\r\nVersion Beta 1.5.0.0\r\nMP3 sound format supported!"; // // lordBalgruufPortrait // diff --git a/SoundBoard/mainForm.Designer.cs b/SoundBoard/mainForm.Designer.cs index aa7d2c9..bdba877 100644 --- a/SoundBoard/mainForm.Designer.cs +++ b/SoundBoard/mainForm.Designer.cs @@ -42,6 +42,7 @@ this.soundboardTabControl = new System.Windows.Forms.TabControl(); this.loopSelectedSoundCheckBox = new System.Windows.Forms.CheckBox(); this.fileSystemWatcherMain = new System.IO.FileSystemWatcher(); + this.label1 = new System.Windows.Forms.Label(); this.mainMenu.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.randomIterationNumericUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcherMain)).BeginInit(); @@ -52,7 +53,8 @@ this.btnRandom.Location = new System.Drawing.Point(7, 545); this.btnRandom.Name = "btnRandom"; this.btnRandom.Size = new System.Drawing.Size(81, 23); - this.btnRandom.TabIndex = 1; + this.btnRandom.TabIndex = 0; + this.btnRandom.TabStop = false; this.btnRandom.Text = "Random"; this.btnRandom.UseVisualStyleBackColor = true; this.btnRandom.Click += new System.EventHandler(this.btnRandom_Click); @@ -132,7 +134,7 @@ 0}); this.randomIterationNumericUpDown.Name = "randomIterationNumericUpDown"; this.randomIterationNumericUpDown.Size = new System.Drawing.Size(58, 20); - this.randomIterationNumericUpDown.TabIndex = 4; + this.randomIterationNumericUpDown.TabIndex = 1; this.randomIterationNumericUpDown.TabStop = false; this.randomIterationNumericUpDown.Value = new decimal(new int[] { 1, @@ -148,6 +150,7 @@ this.soundboardTabControl.SelectedIndex = 0; this.soundboardTabControl.Size = new System.Drawing.Size(425, 506); this.soundboardTabControl.TabIndex = 0; + this.soundboardTabControl.TabStop = false; // // loopSelectedSoundCheckBox // @@ -155,7 +158,8 @@ this.loopSelectedSoundCheckBox.Location = new System.Drawing.Point(158, 549); this.loopSelectedSoundCheckBox.Name = "loopSelectedSoundCheckBox"; this.loopSelectedSoundCheckBox.Size = new System.Drawing.Size(129, 17); - this.loopSelectedSoundCheckBox.TabIndex = 3; + this.loopSelectedSoundCheckBox.TabIndex = 2; + this.loopSelectedSoundCheckBox.TabStop = false; this.loopSelectedSoundCheckBox.Text = "Loop Selected Sound"; this.loopSelectedSoundCheckBox.UseVisualStyleBackColor = true; this.loopSelectedSoundCheckBox.CheckedChanged += new System.EventHandler(this.loopSelectedSoundCheckBox_CheckedChanged); @@ -165,17 +169,28 @@ this.fileSystemWatcherMain.EnableRaisingEvents = true; this.fileSystemWatcherMain.SynchronizingObject = this; // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(294, 548); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(35, 13); + this.label1.TabIndex = 4; + this.label1.Text = "label1"; + // // formMain // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(425, 578); + this.Controls.Add(this.label1); this.Controls.Add(this.loopSelectedSoundCheckBox); this.Controls.Add(this.randomIterationNumericUpDown); this.Controls.Add(this.soundboardTabControl); this.Controls.Add(this.btnRandom); this.Controls.Add(this.mainMenu); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; this.MainMenuStrip = this.mainMenu; this.Name = "formMain"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; @@ -205,6 +220,7 @@ private System.Windows.Forms.ToolStripMenuItem mainMenuHelpAbout; private System.Windows.Forms.CheckBox loopSelectedSoundCheckBox; private System.IO.FileSystemWatcher fileSystemWatcherMain; + public System.Windows.Forms.Label label1; } } diff --git a/SoundBoard/mainForm.cs b/SoundBoard/mainForm.cs index 832aaca..72bc94c 100644 --- a/SoundBoard/mainForm.cs +++ b/SoundBoard/mainForm.cs @@ -1,26 +1,25 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Runtime.InteropServices; using System.Data; using System.Drawing; using System.Linq; using System.Text; -using System.Threading; using System.Windows.Forms; using System.IO; using System.Diagnostics; -using System.Reflection; + namespace SoundBoard { - public partial class formMain : Form + public partial class formMain : Form, IMessageFilter { + private const int WM_KEYDOWN = 0x100; public WMPLib.WindowsMediaPlayer Player = new WMPLib.WindowsMediaPlayer(); public Random randomNum = new Random(); - public ListBox listBoxEntity = new ListBox(); - ProcessStartInfo process = new ProcessStartInfo(); - BackgroundWorker worker = new BackgroundWorker(); - public string _workingDirectory; + public ListView listViewEntity = new ListView(); + public string _workingDirectory = Path.GetDirectoryName(Application.ExecutablePath); public string[] _soundFiles; public string[] _soundDirectories; @@ -31,29 +30,27 @@ namespace SoundBoard private void formMain_Load(object sender, EventArgs e) { - _workingDirectory = Path.GetDirectoryName(Application.ExecutablePath); _soundFiles = Directory.GetFiles(_workingDirectory); + //Build the UI, foreach directory create one TabPage and one ListView object foreach (string sound in _soundFiles) { CreateUITabs("Working Directory", _workingDirectory); } - - _soundDirectories = Directory.GetDirectories(_workingDirectory); + _soundDirectories = Directory.GetDirectories(_workingDirectory, "*", SearchOption.TopDirectoryOnly); foreach (string sounds in _soundDirectories) { CreateUITabs(Path.GetFileName(sounds), sounds); } - worker.WorkerSupportsCancellation = true; - worker.WorkerReportsProgress = true; - fileSystemWatcherMain.Path = _workingDirectory; - fileSystemWatcherMain.IncludeSubdirectories = true; + Application.AddMessageFilter(this); + fileSystemWatcherMain.Path = _workingDirectory; //watch in the application's working directory + fileSystemWatcherMain.IncludeSubdirectories = true; //and watch in the subfolders for changes, but only one layer down from the app's directory fileSystemWatcherMain.Created += new FileSystemEventHandler(fileSystemUpdateDetected); //file or folder created fileSystemWatcherMain.Deleted += new FileSystemEventHandler(fileSystemUpdateDetected); //file or folder moved or deleted fileSystemWatcherMain.Renamed += new RenamedEventHandler(fileSystemUpdateDetected); //for any file changes like file extension changes - soundboardTabControl.SelectedIndexChanged += new EventHandler(CheckForDisabledListBox); //disables ore enables the Show on Disk file menu object - Player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(WMP_PlayStateChange); - //check to see if the listBox is empty on form load + soundboardTabControl.SelectedIndexChanged += new EventHandler(CheckForDisabledListBox); //disables or enables the Show on Disk file menu object + Player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(WMP_PlayStateChange); //eventhandler for the playstate of the Player object + //check to see if the listView is empty on form load if (soundboardTabControl.SelectedTab.Controls[0].Enabled == true) { mainMenuFileShowOnDisk.Enabled = true; @@ -64,10 +61,41 @@ namespace SoundBoard mainMenuFileShowOnDisk.Enabled = false; btnRandom.Enabled = false; } + soundboardTabControl.Select(); } private void WMP_PlayStateChange(int newState) { + //check to see if the random play functions are running + if (btnRandom.Enabled == false) + { + if (Player.playState == WMPLib.WMPPlayState.wmppsTransitioning) + { + //Player is transitioning, so keep the controls disabled + btnRandom.Enabled = false; + loopSelectedSoundCheckBox.Enabled = false; + } + else if (Player.playState == WMPLib.WMPPlayState.wmppsPlaying) + { + //player is still playing the random playlist, keep the controls disbaled + btnRandom.Enabled = false; + loopSelectedSoundCheckBox.Enabled = false; + } + else if (Player.playState == WMPLib.WMPPlayState.wmppsReady) + { + //renable the controls, the Random functions are done + //first check to see if the loop checkBox is checked, if so set the player to "loop" + if (soundboardTabControl.SelectedTab.Controls[0].Enabled == true) + { + btnRandom.Enabled = true; + } + if (loopSelectedSoundCheckBox.Checked == true) + { + Player.settings.setMode("loop", true); + } + loopSelectedSoundCheckBox.Enabled = true; + } + } } private void fileSystemUpdateDetected(object sender, FileSystemEventArgs e) @@ -78,17 +106,16 @@ namespace SoundBoard private void CheckForDisabledListBox(object sender, EventArgs e) { - ListBox listBoxEntity = new ListBox(); try { - listBoxEntity = (ListBox)soundboardTabControl.SelectedTab.Controls[0]; + listViewEntity = (ListView)soundboardTabControl.SelectedTab.Controls[0]; } catch (Exception spam) { return; } - if (listBoxEntity.Enabled == false) + if (listViewEntity.Enabled == false) { mainMenuFileShowOnDisk.Enabled = false; btnRandom.Enabled = false; @@ -107,9 +134,9 @@ namespace SoundBoard foreach (TabPage tabPage in soundboardTabControl.TabPages) { - foreach (ListBox listBox in tabPage.Controls) + foreach (ListView listView in tabPage.Controls) { - listBox.Dispose(); + listView.Dispose(); } tabPage.Dispose(); } @@ -122,7 +149,7 @@ namespace SoundBoard { CreateUITabs(Path.GetFileName(files), files); } - //check to see if the listBox is empty + //check to see if the listView is empty if (soundboardTabControl.SelectedTab.Controls[0].Enabled == true) { mainMenuFileShowOnDisk.Enabled = true; @@ -137,12 +164,14 @@ namespace SoundBoard private void CreateUITabs(string tabName, string directoryPath) { - //add tabs dynamically + //Add tabs dynamically int soundControlHeight = soundboardTabControl.Height; int soundControlWidth = soundboardTabControl.Width; - string[] directoryFiles; //files in the target directory + string[] directoryFiles; //Files in the target directory TabPage tab = new TabPage(); - ListBox localListBox = new ListBox(); + ListView localListView = new ListView(); + string[] columnNames = new string[2]; //Perhaps include a compatibility column to flag files that cause errors? + ListViewItem listItemObject; if (soundboardTabControl.Controls.ContainsKey(tabName.Replace(" ", "") + "Tab")) { @@ -150,38 +179,60 @@ namespace SoundBoard } else { - tab.Text = tabName; //display the folder's full name to the user + //Construct the TabPage and its properties + tab.Text = tabName; //Display the folder's full name to the user tab.Name = tabName.Replace(" ", "") + "Tab"; //create a legal name for the tab's (name) property tab.Height = soundControlHeight; tab.Height = soundControlWidth; soundboardTabControl.Controls.Add(tab); - localListBox.Height = soundControlHeight - 25; - localListBox.Width = soundControlWidth - 5; - localListBox.Name = tabName.Replace(" ", "") + "ListBox"; - tab.Controls.Add(localListBox); - localListBox.Click += new EventHandler((sender, e) => ListBoxOnLeftClick(sender, e, localListBox)); //create event handler for the lsit box and pass the object in + //Construct the ListView and its properties + localListView.Height = soundControlHeight - 25; + localListView.Width = soundControlWidth - 5; + localListView.Name = tabName.Replace(" ", "") + "ListView"; + localListView.FullRowSelect = true; + localListView.MultiSelect = false; + localListView.GridLines = true; + localListView.View = View.Details; + localListView.Activation = ItemActivation.OneClick; + localListView.TabStop = false; + tab.Controls.Add(localListView); + localListView.Columns.Add("File Name", 340, HorizontalAlignment.Left); + localListView.Columns.Add("File Ext", 50, HorizontalAlignment.Left); + localListView.ItemActivate += new EventHandler((sender, e) => ListViewOnLeftClick(sender, e, localListView)); } directoryFiles = Directory.GetFiles(Path.GetFullPath(directoryPath)); - foreach (string files in directoryFiles) + foreach (string file in directoryFiles) { - switch (Path.GetExtension(files))//check to make sure the file is a sound file + switch (Path.GetExtension(file).ToLower()) { - case ".wav": + //Only include sound files in the ListView case ".mp3": - localListBox.Items.Add(Path.GetFileNameWithoutExtension(files)); + case ".wav": + columnNames[0] = Path.GetFileNameWithoutExtension(file); + columnNames[1] = Path.GetExtension(file); + listItemObject = new ListViewItem(columnNames); + localListView.Items.Add(listItemObject); break; default: break; } } - if (localListBox.Items.Count == 0) + if (localListView.Items.Count == 0) { - localListBox.Items.Add("No sound files found in the " + tabName + " directory."); - localListBox.Enabled = false; + if (tab.Name == "WorkingDirectoryTab") + { + localListView.Items.Add("No sound files detected in the application's working directory."); + } + else + { + localListView.Items.Add("No sound files detected in the " + tabName + " directory"); + } + + localListView.Enabled = false; if (soundboardTabControl.SelectedIndex == 0) { mainMenuFileShowOnDisk.Enabled = false; @@ -190,59 +241,59 @@ namespace SoundBoard } } - private void ListBoxOnLeftClick(object sender, EventArgs e, ListBox list) + private void ListViewOnLeftClick(object sender, EventArgs e, ListView listView) { - //check to make sure something is actually selected - if (list.SelectedItem == null) + if (btnRandom.Enabled == false) { + //If the btnRandom button is disabled that means a randomise function is running, so don't interupt it return; } - //get the file's location on disk, double back if it's not a .wav file + string fileName; + string fileExt; string fileLocation; - WMPLib.IWMPPlaylist _playList = Player.playlistCollection.newPlaylist("myPlayList"); //build the playlist object + + fileName = listView.SelectedItems[0].SubItems[0].Text; + fileExt = listView.SelectedItems[0].SubItems[1].Text; + if (soundboardTabControl.SelectedIndex == 0) { - fileLocation = _workingDirectory + "\\" + list.SelectedItem.ToString() + ".wav"; - if (!File.Exists(fileLocation)) + if (File.Exists(_workingDirectory + "\\" + fileName + fileExt)) { - fileLocation = _workingDirectory + "\\" + list.SelectedItem.ToString() + ".mp3"; + fileLocation = _workingDirectory + "\\" + fileName + fileExt; + } + else + { + return; } } else { - fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + list.SelectedItem.ToString() + ".wav"; - if (!File.Exists(fileLocation)) + if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt)) { - fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + list.SelectedItem.ToString() + ".mp3"; + fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt; + } + else + { + return; } } - if (File.Exists(fileLocation))//check for the file's existance - { - PlaySoundFile(fileLocation, list.SelectedItem.ToString()); //if the file exists then play it - } - else - { - MessageBox.Show("The file '" + list.SelectedItem.ToString() + "' couldn't be found.", "File Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void PlayRandomSounds() - { + PlaySoundFile(fileLocation); } private void btnRandom_Click(object sender, EventArgs e) { int iterations = (int)randomIterationNumericUpDown.Value; - listBoxEntity = (ListBox)soundboardTabControl.SelectedTab.Controls[0]; + listViewEntity = (ListView)soundboardTabControl.SelectedTab.Controls[0]; + Player.currentPlaylist.clear(); - if (listBoxEntity.Enabled == false) + //DOuble check to see if the ListView has any items that can be played + if (listViewEntity.Enabled == false) { - //the ListBox is disabled and therefore contains no sounds, so return + //the ListView disabled and therefore contains no sounds, so return return; } - //disable the Random Button and the NumericUpDown box + //disable the Random Button and the loop checkbox btnRandom.Enabled = false; - randomIterationNumericUpDown.Enabled = false; loopSelectedSoundCheckBox.Enabled = false; if (mainMenuPlayAll.Checked == true) @@ -252,101 +303,82 @@ namespace SoundBoard { btnRandom.Enabled = true; } - randomIterationNumericUpDown.Enabled = true; loopSelectedSoundCheckBox.Enabled = true; return; } for (int i = 0; i < iterations; i++) { - string fileLocation; + string fileLocation = ""; + string fileExt; + string fileName; + //Check to see if the selected tab is the working directory's tab if (soundboardTabControl.SelectedIndex == 0) { - listBoxEntity.SelectedIndex = randomNum.Next(listBoxEntity.Items.Count); - if (File.Exists(_workingDirectory + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav")) + listViewEntity.Items[randomNum.Next(listViewEntity.Items.Count)].Selected = true; + fileName = listViewEntity.SelectedItems[0].SubItems[0].Text; + fileExt = listViewEntity.SelectedItems[0].SubItems[1].Text; + + if (File.Exists(_workingDirectory + "\\" + fileName + fileExt)) { - fileLocation = _workingDirectory + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav"; - } - else if (File.Exists(_workingDirectory + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3")) - { - fileLocation = _workingDirectory + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3"; + fileLocation = _workingDirectory + "\\" + fileName + fileExt; } else { - MessageBox.Show("The file '" + listBoxEntity.SelectedItem.ToString() + "' couldn't be found.", "File Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show("The file couldn't be found.", "File Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); if (soundboardTabControl.SelectedTab.Controls[0].Enabled == true) { btnRandom.Enabled = true; } - - randomIterationNumericUpDown.Enabled = true; loopSelectedSoundCheckBox.Enabled = true; + Player.currentPlaylist.clear(); return; } } else { - listBoxEntity.SelectedIndex = randomNum.Next(listBoxEntity.Items.Count); - if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav")) + listViewEntity.Items[randomNum.Next(listViewEntity.Items.Count)].Selected = true; + fileName = listViewEntity.SelectedItems[0].SubItems[0].Text; + fileExt = listViewEntity.SelectedItems[0].SubItems[1].Text; + + if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt)) { - fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav"; - } - else if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3")) - { - fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3"; + fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt; } else { - MessageBox.Show("The file '" + listBoxEntity.SelectedItem.ToString() + "' couldn't be found.", "File Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt, "Not Found"); if (soundboardTabControl.SelectedTab.Controls[0].Enabled == true) { btnRandom.Enabled = true; } - - randomIterationNumericUpDown.Enabled = true; loopSelectedSoundCheckBox.Enabled = true; - return; + Player.currentPlaylist.clear(); + return; } } - //play the sound file - PlaySoundFile(fileLocation, listBoxEntity.SelectedItem.ToString(), false); + //load the player with the randomly chosen sounds + enumeratePlayerPlayList(fileLocation); } - //renable the controls - if (soundboardTabControl.SelectedTab.Controls[0].Enabled == true) - { - btnRandom.Enabled = true; - } - randomIterationNumericUpDown.Enabled = true; - loopSelectedSoundCheckBox.Enabled = true; + //prepare the Player object and play the playlist + btnRandom.Enabled = false; + Player.settings.setMode("loop", false); + PlayPlayList(); } - private void PlaySoundFile(string fileLocation, string fileName, bool willLoop = true) + private void PlaySoundFile(string fileLocation) { + //Set the file to be played's location Player.URL = fileLocation; - + + //Attempt to play the file try { - if (Player.settings.getMode("loop")) - { - if (!willLoop) - { - Player.settings.setMode("loop", false); - Player.controls.play(); - } - else - { - Player.controls.play(); - } - Player.settings.setMode("loop", true); - } - else - { - Player.controls.play(); - } + Player.controls.play(); } catch (InvalidOperationException Ex) { - MessageBox.Show("The file '" + fileName + "' couldn't be played.", "Invalid Sound File", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show("The file couldn't be played.", "Invalid Sound File", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } @@ -360,15 +392,16 @@ namespace SoundBoard else { Player.settings.setMode("loop", false); - Player.close(); } } private void playRandomSoundBothColumns(int iterations) { int tempRandomNumber; - string fileLocation; - listBoxEntity = (ListBox)soundboardTabControl.SelectedTab.Controls[0]; + string fileLocation = ""; + string fileName; + string fileExt; + listViewEntity = (ListView)soundboardTabControl.SelectedTab.Controls[0]; for (int i = 0; i <= iterations; i++) { @@ -379,13 +412,13 @@ namespace SoundBoard soundboardTabControl.SelectedIndex = tempRandomNumber; if (soundboardTabControl.SelectedIndex == 0) { - if (File.Exists(_workingDirectory + "\\" + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav")) + listViewEntity.Items[randomNum.Next(listViewEntity.Items.Count)].Selected = true; + fileName = listViewEntity.SelectedItems[0].SubItems[0].Text; + fileExt = listViewEntity.SelectedItems[0].SubItems[1].Text; + + if (File.Exists(_workingDirectory + "\\" + fileName + fileExt)) { - fileLocation = _workingDirectory + "\\" + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav"; - } - else if (File.Exists(_workingDirectory + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3")) - { - fileLocation = _workingDirectory + "\\" + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3"; + fileLocation = _workingDirectory + "\\" + fileName + fileExt; } else { @@ -394,58 +427,50 @@ namespace SoundBoard } else { - soundboardTabControl.SelectedIndex = tempRandomNumber; - listBoxEntity.SelectedIndex = randomNum.Next(listBoxEntity.Items.Count); - if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav")) + listViewEntity.Items[randomNum.Next(listViewEntity.Items.Count)].Selected = true; + fileName = listViewEntity.SelectedItems[0].SubItems[0].Text; + fileExt = listViewEntity.SelectedItems[0].SubItems[1].Text; + + if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt)) { - fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav"; - } - else if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3")) - { - fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3"; + fileLocation = _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt; } else { return; } } - PlaySoundFile(fileLocation, soundboardTabControl.SelectedTab.Text, false); + enumeratePlayerPlayList(fileLocation); } else { - playRandomSoundBothColumns(iterations); + playRandomSoundBothColumns(iterations - i); } } + PlayPlayList(); } private void mainMenuFileShowOnDisk_Click(object sender, EventArgs e) { - listBoxEntity = (ListBox)soundboardTabControl.SelectedTab.Controls[0]; - if ((String)listBoxEntity.SelectedItem == null) - { - MessageBox.Show("No sound file selected...", soundboardTabControl.SelectedTab.Name, MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } + listViewEntity = (ListView)soundboardTabControl.SelectedTab.Controls[0]; + string fileName; + string fileExt; + + fileName = listViewEntity.SelectedItems[0].SubItems[0].Text; + fileExt = listViewEntity.SelectedItems[0].SubItems[1].Text; + if (soundboardTabControl.SelectedIndex == 0) { - if (File.Exists(_workingDirectory + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav")) + if (File.Exists(_workingDirectory + "\\" + fileName + fileExt)) { - Process.Start("explorer.exe", "/select, " + '"' + _workingDirectory + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav" + '"'); - } - else - { - Process.Start("explorer.exe", "/select, " + '"' + _workingDirectory + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3" + '"'); + Process.Start("explorer.exe", "/select, \"" + _workingDirectory + "\\" + fileName + fileExt + "\""); } } else { - if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav")) + if (File.Exists(_workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt)) { - Process.Start("explorer.exe", "/select, " + '"' + _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".wav" + '"'); - } - else - { - Process.Start("explorer.exe", "/select, " + '"' + _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + listBoxEntity.SelectedItem.ToString() + ".mp3" + '"'); + Process.Start("explorer.exe", "/select, \"" + _workingDirectory + "\\" + soundboardTabControl.SelectedTab.Text + "\\" + fileName + fileExt + "\""); } } } @@ -461,5 +486,29 @@ namespace SoundBoard { Close(); } + + private void enumeratePlayerPlayList(string fileLocation) + { + WMPLib.IWMPMedia playList = Player.newMedia(fileLocation); + Player.currentPlaylist.appendItem(playList); + } + + private void PlayPlayList() + { + Player.controls.play(); + } + //Handles all messages being sent to controls + public bool PreFilterMessage(ref Message m) + { + Keys keyCode = (Keys)(int)m.WParam & Keys.KeyCode; + bool retVal = false; + + if (m.Msg == WM_KEYDOWN) + { + // Handle the keypress + label1.Text = keyCode.ToString(); + } + return retVal; + } } }