//add bookmode to listview, show one entry per books(albums), playing a different book will start from your last position in that book - so you can play other files/books and come back //playing a file directly always plays from the start assuming its not loaded/prescrubbed //make it a whole other mode, book scrubber by default (also make book scrubber only for current book not for entire library) //should be default mode actually, leave multifiles and junk to the program to handle //controls should affect book mode when in book mode (prev/next book instead of file) public Form1() { InitializeComponent(); chkArtPlaying.Parent = pBoxArt; scrubber.Scrubbed += Scrubber1_Scrubbed; fileList.OrderChanged += fileList_OrderChanged; AudioPlayer.AudioPlaying += AudioPlayer_AudioPlaying; AudioPlayer.AudioCompleted += AudioPlayer_AudioCompleted; try { BassNet.Registration("*****@*****.**", "2X3729121152222"); Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero); //Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_FLOATDSP, true); Dictionary <int, string> loadedPlugIns = Bass.BASS_PluginLoadDirectory(System.IO.Directory.GetCurrentDirectory()); BassFx.LoadMe(); BassMix.LoadMe(); } catch (Exception e) { BASSError er = Bass.BASS_ErrorGetCode(); } string folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "ABPlayer"); if (Directory.Exists(folder)) { string file = Path.Combine(folder, "lastOpen.txt"); if (File.Exists(file)) { using (FileStream fs = new FileStream(file, FileMode.Open)) using (StreamReader sr = new StreamReader(fs)) { int index = Convert.ToInt32(sr.ReadLine()); long ticks = Convert.ToInt64(sr.ReadLine()); List <string> files = new List <string>(); string f = ""; while ((f = sr.ReadLine()) != null) { files.Add(f); } AddFiles(files.ToArray()); if (files.Count > 0) { playingId = index; playing = audioFiles[index]; PlayFile(index, new TimeSpan(ticks) - audioFiles[index].StartTime, true); } } } file = Path.Combine(folder, "settings.txt"); if (File.Exists(file)) { using (FileStream fs = new FileStream(file, FileMode.Open)) using (StreamReader sr = new StreamReader(fs)) { AudioPlayer.Volume = Convert.ToSingle(sr.ReadLine()); UpdateMono(Convert.ToBoolean(sr.ReadLine())); AudioPlayer.Speed = Convert.ToSingle(sr.ReadLine()); } } tBarVol.Value = (int)(AudioPlayer.Volume * 100); lblVol.Text = tBarVol.Value + "%"; speedToolStripMenuItem.Text = "Speed (" + AudioPlayer.Speed + ")"; } }