void OnExtensionChanged(object o, ExtensionNodeEventArgs args) { TypeExtensionNode node = (TypeExtensionNode)args.ExtensionNode; INowPlayingProvider provider = (INowPlayingProvider)node.CreateInstance(); provider.TrackChanged += HandleTrackChanged; m_Providers.Add(provider); HandleTrackChanged(provider, EventArgs.Empty); }
void HandleTrackChanged(object sender, EventArgs e) { INowPlayingProvider provider = (INowPlayingProvider)sender; m_IsPlaying = provider.IsPlaying; if (provider.IsPlaying) { if (m_Artist != provider.Artist || m_Title != provider.Title) { m_Artist = provider.Artist; m_Length = provider.Length; m_Rating = provider.Rating; m_Source = provider.Source; m_Title = provider.Title; m_Track = provider.Track; m_Uri = provider.Uri; } else { return; } } else { m_Artist = null; m_Length = null; m_Rating = null; m_Source = null; m_Title = null; m_Track = null; m_Uri = null; } if (TrackChanged != null) { TrackChanged(this, EventArgs.Empty); } }