コード例 #1
0
        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();
        }
コード例 #2
0
        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
                    });
                }
            });
        }
コード例 #3
0
ファイル: ArtistListView.cs プロジェクト: thoja21/banshee-1
        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;
        }
コード例 #4
0
ファイル: ArtistListView.cs プロジェクト: thoja21/banshee-1
 private void HandleArtistListModeChanged(object sender, ArtistListModeChangedEventArgs args)
 {
     this.renderer = args.Renderer;
     UpdateRenderer();
 }