public frmFileInfo(Track Track) : base(Track.ToShortString(), ButtonCreateType.OKOnly) { this.ClientSize = new System.Drawing.Size(550, 400); SPACING = 4; this.KeyPreview = true; btnOK.Text = Localization.Get(UI_Key.File_Info_Done); track = Track; track.Load(); art = new Artwork(); art.CurrentTrack = track; art.Size = new Size(ART_SIZE, ART_SIZE); art.Location = new Point(this.ClientRectangle.Width - ART_SIZE - MARGIN, MARGIN); this.Controls.Add(art); if (track.ConfirmExists) { btnEdit = new QButton(Localization.Get(UI_Key.File_Info_Edit), false, false); btnEdit.ButtonPressed += (s) => { edit(); }; this.Controls.Add(btnEdit); } this.EditFile = false; }
private static bool importM3U(List <Track> Tracks, string relativePath, System.IO.StreamReader sr) { while (!sr.EndOfStream) { string s = sr.ReadLine(); if (s.Contains("#")) { s = s.Substring(0, s.IndexOf('#')); } if (File.Exists(s) && Track.IsValidExtension(Path.GetExtension(s))) { if (!Path.IsPathRooted(s)) { s = Path.Combine(relativePath, s); } if (File.Exists(s)) { Track t = Track.Load(s); if (t != null) { Tracks.Add(t); } } } } return(false); }
private static bool importPLS(List <Track> Tracks, System.IO.StreamReader sr, bool MaxOneURL) { bool urlsFound = false; List <string> lines = new List <string>(); while (!sr.EndOfStream) { lines.Add(sr.ReadLine()); } string noe = lines.FirstOrDefault(l => l.StartsWith("numberofentries=", StringComparison.OrdinalIgnoreCase)); if (noe != null) { int numLines; if (Int32.TryParse(noe.Substring("numberofentries=".Length), out numLines)) { for (int i = 1; i <= numLines; i++) { string prefix = "file" + i.ToString() + "="; string line = lines.FirstOrDefault(l => l.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)); if (line == null) { return(urlsFound); } line = line.Substring(prefix.Length).Trim(); if (line.StartsWith("http://")) { if (!urlsFound || !MaxOneURL) { string prefix2 = "title" + i.ToString() + "="; string line2 = lines.FirstOrDefault(l => l.StartsWith(prefix2, StringComparison.OrdinalIgnoreCase)); if (line2 != null) { Radio.AddStation(line, line2.Substring(prefix2.Length), MaxOneURL); } else { Radio.AddStation(line, String.Empty, MaxOneURL); } urlsFound = true; } } else if (File.Exists(line) && Track.IsValidExtension(Path.GetExtension(line))) { Track t = Track.Load(line); if (t != null) { Tracks.Add(t); } } } } } return(urlsFound); }
public static void AddTracksToList(DirectoryInfo DI, List <Track> Tracks, MessageDelegate ShowMessage) { string adding = Localization.Get(UI_Key.Lib_Adding) + " "; foreach (FileInfo fi in DI.GetFiles()) { Track t = Track.Load(fi.FullName); if (t != null) { Tracks.Add(t); ShowMessage(adding + Tracks.Count.ToString() + ": " + t.ToString()); Lib.DoEvents(); } } foreach (DirectoryInfo di in DI.GetDirectories()) { AddTracksToList(di, Tracks, ShowMessage); } }
public void AddToLibrary(String FilePath) { if (Track == null) { Track = Track.Load(FilePath); } if (Track == null) { this.DownloadStatus = PodcastDownloadStatus.Error; throw new Exception("failed"); } Track.Title = this.Title; Track.Album = Subscription.Name; Track.Genre = this.Subscription.DefaultGenre; Track.RenameFormat = TrackWriter.RenameFormat.AR_AL_TK_TI; TrackWriter.AddToUnsavedTracks(Track); Database.AddToLibrary(Track, true, false); TrackWriter.Start(); }
public static Track Load(string FilePath) { if (!IsValidExtension(Path.GetExtension(FilePath))) { return(null); } if (File.Exists(FilePath)) { Track t = Database.GetTrackWithFilePath(FilePath); if (t == null) { t = new Track(FilePath); t.AddDate = DateTime.Now; if (!t.Load()) { return(null); } } else if (t.FileDate != File.GetLastWriteTime(FilePath)) { if (!t.Load()) { return(null); } } return(t); } else { return(null); } }
private static void addItems() { try { running = true; cancel = false; int itemsLeft; lock (addItemLock) { itemsLeft = itemsToAdd.Count; } while (!cancel && itemsLeft > 0) { ItemToAdd ita; lock (addItemLock) { ita = itemsToAdd[0]; itemsToAdd.RemoveAt(0); } if (Directory.Exists(ita.FilePath)) { List <ItemToAdd> newItems = new List <ItemToAdd>(); DirectoryInfo di = new DirectoryInfo(ita.FilePath); foreach (FileInfo fi in di.GetFiles()) { newItems.Add(new ItemToAdd(fi.FullName, ita.PlaylistTarget, ita.AllowDuplicates)); } foreach (DirectoryInfo ddi in di.GetDirectories()) { newItems.Add(new ItemToAdd(ddi.FullName, ita.PlaylistTarget, ita.AllowDuplicates)); } lock (addItemLock) { itemsToAdd = itemsToAdd.Union(newItems).ToList(); } } else { if (Track.IsValidExtension(Path.GetExtension(ita.FilePath))) { Track tt = Track.Load(ita.FilePath); if (tt != null) { Database.AddLibraryResult alr = Database.AddToLibrary(tt, ita.AllowDuplicates, true); TrackWriter.AddToUnsavedTracks(tt); if (ita.PlaylistTarget.Length > 0) { Database.AddToPlaylist(ita.PlaylistTarget, tt); } switch (alr) { case Database.AddLibraryResult.OK: Controller.ShowMessage("Loading: " + (++addCount).ToString() + " - " + tt.ToString()); break; case Database.AddLibraryResult.UpdateOnly: Controller.ShowMessage("Updating: " + (++addCount).ToString() + " - " + tt.ToString()); break; } if (((addCount < 200) && ((addCount % 10) == 0)) || (addCount % 200 == 0)) { tryCallback(); } } } } lock (addItemLock) { itemsLeft = itemsToAdd.Count; } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } running = false; lock (addItemLock) { if (cancel) { itemsToAdd.Clear(); } } tryCallback(); TrackWriter.Start(); }
private static void start() { running = true; cancel = false; try { if (directories.Count > 0) { Random r = new Random(); IOrderedEnumerable <string> dirs = directories.OrderBy(d => r.Next()); Stack <string> paths = new Stack <string>(dirs); while (paths.Count > 0 && paths.Peek() != null && !cancel) { string s = paths.Pop(); if (Directory.Exists(s)) { foreach (string ss in (Directory.GetDirectories(s)).OrderBy(x => r.Next())) { paths.Push(ss); } foreach (string ss in (Directory.GetFiles(s).Reverse())) { paths.Push(ss); } } else if (File.Exists(s)) { Track t = Track.Load(s); if (t != null) { lock (@lock) { newTracks.Add(t); } Thread.Sleep(100); if (addIfNeeded(30)) { Thread.Sleep(200); } } Thread.Sleep(50); } } while (!cancel && !addIfNeeded(0)) { Thread.Sleep(200); } ; } } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.ToString()); } running = false; if (cancel) { newTracks.Clear(); } else { cancel = true; Clock.DoOnMainThread(sendTracks, 50); // get back to UI thread Clock.DoOnMainThread(Controller.GetInstance().RefreshAll, 500); } resetRestartAlarm(); }