private void OnExtensionChanged(object o, ExtensionNodeEventArgs args) { var tnode = (TypeExtensionNode)args.ExtensionNode; IArtistListRenderer changed_renderer = null; if (args.Change == ExtensionChange.Add) { lock (renderers) { try { changed_renderer = (IArtistListRenderer)tnode.CreateInstance(); renderers.Add(changed_renderer); node_map [tnode] = changed_renderer; } catch (Exception e) { Log.Error(String.Format("Failed to load ArtistListRenderer extension: {0}", args.Path), e); } } if (changed_renderer != null) { var handler = ArtistListModeAdded; if (handler != null) { handler(changed_renderer); } if (service_manager_startup_finished) { SetRenderer(changed_renderer); } } } else { lock (renderers) { if (node_map.ContainsKey(tnode)) { changed_renderer = node_map [tnode]; node_map.Remove(tnode); renderers.Remove(changed_renderer); if (this.renderer == changed_renderer) { SetRenderer(renderers [0]); } } } if (changed_renderer != null) { var handler = ArtistListModeRemoved; if (handler != null) { handler(changed_renderer); } } } UpdateActions(); }
private void SetRenderer(IArtistListRenderer renderer) { this.renderer = renderer; ArtistListMode.Set(renderer.GetType().FullName); ThreadAssist.ProxyToMain(() => { var handler = ArtistListModeChanged; if (handler != null) { handler(this, new ArtistListModeChangedEventArgs { Renderer = renderer }); } }); }
public ArtistListView() : base() { action_service = ServiceManager.Get <InterfaceActionService> (); renderer = action_service.ArtistListActions.ArtistListRenderer; if (renderer == null) { renderer = new ColumnCellArtistText(); } UpdateRenderer(); ServiceManager.PlayerEngine.ConnectEvent(OnPlayerEvent, PlayerEvent.TrackInfoUpdated); Banshee.Metadata.MetadataService.Instance.ArtworkUpdated += OnArtworkUpdated; action_service.ArtistListActions.ArtistListModeChanged += HandleArtistListModeChanged; }
private void HandleArtistListModeChanged(object sender, ArtistListModeChangedEventArgs args) { this.renderer = args.Renderer; UpdateRenderer(); }