private void TrackItem_MouseMove(object sender, MouseEventArgs e) { try { var position = e.GetPosition(null); var offset = trackItemDragStartPoint - position; if (e.LeftButton == MouseButtonState.Pressed && Math.Abs(offset.X) > SystemParameters.MinimumHorizontalDragDistance && Math.Abs(offset.Y) > SystemParameters.MinimumVerticalDragDistance) { var track = SelectedTrack; if (track != null && track != trackToDrag) { trackToDrag = track; var data = new DataObject("Track", track); DragDrop.DoDragDrop(mediaList, data, DragDropEffects.Copy); log.Debug("TrackItem_MouseMove: DoDragDrop"); } } } catch (Exception ex) { log.Error("TrackItem_MouseMove", ex); } }
public void CacheTrack(IOldTrack track) { try { var fileName = System.IO.Path.Combine(cachePath, track.Id.ToString().Replace("-", string.Empty)); //TODO: Get mime type from feed // We should not assume the file will always be an MP3 - e.g video podcasts if (track.Path.EndsWith(extensionMp3)) { var index = track.Path.LastIndexOf(extensionMp3); var extension = track.Path.Substring(index, track.Path.Length - index); fileName += extension; } else { fileName += extensionMp3; } var request = System.Net.HttpWebRequest.Create(track.Path); using (var stream = request.GetResponse().GetResponseStream()) { stream.SaveToFile(fileName); cachedFiles.Add(track.Id, fileName); track.CachePath = fileName; } } catch (Exception ex) { log.Error("TrackController.CacheTrack", ex); } }
public void SaveTag(IOldTrack track) { var path = !string.IsNullOrEmpty(track.CachePath) ? track.CachePath : track.Path; if (new Uri(path).IsFile) { var file = GetFile(path); if (file.Tag != null) { if (!string.IsNullOrEmpty(track.Title)) file.Tag.Title = track.Title; if (!string.IsNullOrEmpty(track.Album)) file.Tag.Album = track.Album; file.Tag.Track = track.TrackNumber; file.Tag.Disc = track.DiscNumber; if (!string.IsNullOrEmpty(track.Artist)) file.Tag.Performers = track.Artist.Split(',', ';'); if (!string.IsNullOrEmpty(track.Genre)) file.Tag.Genres = track.Genre.Split(',', ';'); file.Tag.Year = Convert.ToUInt32(track.ReleaseYear); file.Save(); } } }
public void AddPicture(IOldTrack track, IPicture picture) { var file = GetFile(track.Path); var existingPictures = file.Tag.Pictures; if (existingPictures == null || existingPictures.Length == 0) { file.Tag.Pictures = new IPicture[1] { picture }; file.Save(); track.ImageData = picture.Data; } else { var pictures = new IPicture[existingPictures.Length + 1]; pictures[0] = picture; for (var i = 1; i < pictures.Length; i++) { pictures[i] = existingPictures[i]; } file.Tag.Pictures = pictures; file.Save(); track.ImageData = picture.Data; } }
private void AddPlaylistItem(ISource source, IOldTrack track) { var item = sourceController.GetPlaylistItem(source, track); sourceController.Save(item); source.AddChild(item); source.IsExpanded = true; item.IsSelected = true; }
public void SetNowPlaying(IOldTrack track) { playbackController.Load(track); NowPlayingMarquee.Dispatcher.Invoke((Action) delegate() { NowPlayingMarquee.DataContext = playbackController.CurrentTrack; NowPlayingMarquee.Visibility = playbackController.CurrentTrack != null ? Visibility.Visible : Visibility.Collapsed; }); }
public void Reset() { if (currentTrack != null) { currentTrack.PlaybackStatus = null; } Stop(); currentTrack = null; }
public void LoadPicture(IOldTrack track) { var path = !string.IsNullOrEmpty(track.CachePath) ? track.CachePath : track.Path; if (!string.IsNullOrEmpty(path) && System.IO.File.Exists(path)) { var file = GetFile(path); if (file != null && file.Tag != null && file.Tag.Pictures.Length > 0) { track.ImageData = file.Tag.Pictures[0].Data; } } }
public ISource GetPlaylistItem(ISource parent, IOldTrack track) { return(new PlaylistItemSource() { Parent = parent, Path = track.Path, ImagePath = track.ImagePath, ImageData = track.ImageData, Name = string.Format("{0} by {1}", track.Title ?? "Untitled", track.Artist ?? "Unknown Artist"), Number = parent.Children.Count() + 1 }); }
public void Load(IOldTrack track) { if (track == null) { throw new ArgumentNullException("track"); } if (currentTrack != null) { currentTrack.PlaybackStatus = null; } currentTrack = track; hasSeek = false; currentTrack.PlaybackStatus = "Now Playing"; }
public void AddPicture(IOldTrack track, IPicture picture) { var file = GetFile(track.Path); var existingPictures = file.Tag.Pictures; if (existingPictures == null || existingPictures.Length == 0) { file.Tag.Pictures = new IPicture[1] { picture }; file.Save(); track.ImageData = picture.Data; } else { var pictures = new IPicture[existingPictures.Length + 1]; pictures[0] = picture; for (var i = 1; i < pictures.Length; i++) pictures[i] = existingPictures[i]; file.Tag.Pictures = pictures; file.Save(); track.ImageData = picture.Data; } }
public void SaveTag(IOldTrack track) { var path = !string.IsNullOrEmpty(track.CachePath) ? track.CachePath : track.Path; if (new Uri(path).IsFile) { var file = GetFile(path); if (file.Tag != null) { if (!string.IsNullOrEmpty(track.Title)) { file.Tag.Title = track.Title; } if (!string.IsNullOrEmpty(track.Album)) { file.Tag.Album = track.Album; } file.Tag.Track = track.TrackNumber; file.Tag.Disc = track.DiscNumber; if (!string.IsNullOrEmpty(track.Artist)) { file.Tag.Performers = track.Artist.Split(',', ';'); } if (!string.IsNullOrEmpty(track.Genre)) { file.Tag.Genres = track.Genre.Split(',', ';'); } file.Tag.Year = Convert.ToUInt32(track.ReleaseYear); file.Save(); } } }
public void AddPicture(IOldTrack track, string path) { var picture = new TagLib.Picture(path); AddPicture(track, picture); }
public void AddTrack(IOldTrack track) { boundTracks.Add(track); }
public int IndexOf(IOldTrack track) { return boundTracks.IndexOf(track); }
public void Save(IOldTrack record) { repository.Save(record); }
public int IndexOf(IOldTrack track) { return(boundTracks.IndexOf(track)); }
public void SetNowPlaying(IOldTrack track) { playbackController.Load(track); NowPlayingMarquee.Dispatcher.Invoke((Action)delegate() { NowPlayingMarquee.DataContext = playbackController.CurrentTrack; NowPlayingMarquee.Visibility = playbackController.CurrentTrack != null ? Visibility.Visible : Visibility.Collapsed; }); }
public void Load(IOldTrack track) { if (track == null) throw new ArgumentNullException("track"); if (currentTrack != null) { currentTrack.PlaybackStatus = null; } currentTrack = track; hasSeek = false; currentTrack.PlaybackStatus = "Now Playing"; }