// Help UI to get notified using dispatcher asyncronously private void Tracks_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) { //if (task == null || task.Status != TaskStatus.Running) //{ TrackVM[] tracks = (e.NewItems.Cast <TrackVM>()).ToArray(); task = System.Threading.Tasks.Task.Factory.StartNew(() => { for (int i = 0; i < tracks.Length; i++) { TrackVM item = tracks[i]; TracklistProvider.Instance.UpdateTrackTagInfo(item); } }); //} } foreach (PluginVM item in Plugins) { if (item.IsEnabled) { item.Plugin.TracklistUpdated(TracklistProvider.Instance.Tracks.Select(o => o.Location).ToArray()); } } }
void UpdateInfo() { if (task == null || task.Status != TaskStatus.Running) { var container = TinyIoC.TinyIoCContainer.Current; IMessageProvider messageProvider = container.Resolve <IMessageProvider>(Naming.ContainerNSR.MESSAGE_PROVIDER); task = System.Threading.Tasks.Task.Factory.StartNew(() => { for (int i = 0; i < SelectedTracks.Count(); i++) { TrackVM item = SelectedTracks.ElementAt(i); TracklistProvider.Instance.UpdateTrackTagInfo(item); } }).ContinueWith(o => { RootDispatcher.Dispatcher.Invoke(() => { string message = messageProvider.TrackInfoUpdated; if (MessageUpdated != null) { MessageUpdated(this, new MessageEventArgs { Message = message }); } }); }); } }
private void Instance_TrackTagInfoUpdated(TrackVM trackVM, Un4seen.Bass.AddOn.Tags.TAG_INFO tagInfo) { RootDispatcher.Dispatcher.Invoke(new System.Action(() => { System.Diagnostics.Debug.WriteLine("Instance_TrackTagInfoUpdated: " + tagInfo.title); ObservableCollection <TrackVM> tracks = TracklistProvider.Instance.Tracks; int index = tracks.IndexOf(trackVM); if (index >= 0) { tracks[index].Title = tagInfo.title; tracks[index].Artist = tagInfo.artist; tracks[index].Album = tagInfo.album; tracks[index].Length = Un4seen.Bass.Utils.FixTimespan(tagInfo.duration, "MMSS"); } })); }
private void Timer_Tick(object sender, System.EventArgs e) { System.Diagnostics.Debug.WriteLine("Starting track update..."); if (task == null || task.Status != TaskStatus.Running) { TrackVM[] tracks = TracklistProvider.Instance.Tracks.Where(x => x.Location.StartsWith(("http"))).ToArray(); task = System.Threading.Tasks.Task.Factory.StartNew(() => { for (int i = 0; i < tracks.Length; i++) { TrackVM item = tracks[i]; TracklistProvider.Instance.UpdateTrackTagInfo(item); } }); } }
private void Instance_MetaUpdated(Un4seen.Bass.AddOn.Tags.TAG_INFO tagInfo) { RootDispatcher.Dispatcher.Invoke(new System.Action(() => { System.Diagnostics.Debug.WriteLine("Track meta updated"); TrackVM track = TracklistProvider.Instance.GetCurrentTrack(); track.Title = tagInfo.title; track.Album = tagInfo.album; track.Artist = tagInfo.artist; track.Length = Un4seen.Bass.Utils.FixTimespan(tagInfo.duration, "MMSS"); })); foreach (PluginVM item in Plugins) { if (item.IsEnabled) { item.Plugin.RetrieveInfo(TracklistProvider.Instance.GetCurrentTrack().Location, AudioControllerService.Current.ChannelInfo, tagInfo); } } }