Пример #1
0
        /**
         * Returns the count of unread resources returned by the specified provider and
         * filtered by the workspace.
         */

        private int GetProviderUnreadCount(IResource res, UnreadState state, IUnreadCountProvider provider)
        {
            IResourceList unreadList = provider.GetResourcesForView(res);

            if (unreadList == Core.ResourceStore.EmptyResourceList)
            {
                return(0);
            }
            if (state != _defaultUnreadState)
            {
                unreadList = unreadList.Intersect(_tabProvider.GetTabFilterList(state.Tab));
                if (state.Workspace != null)
                {
                    unreadList = unreadList.Intersect(_workspaceManager.GetFilterList(state.Workspace));
                }
            }
            return(unreadList.Count);
        }
Пример #2
0
        /**
         * Returns the unread count for the specified state.
         */

        internal int GetCountForState(UnreadState state, IResource res)
        {
            if (state.IsCounterValid(res) || (state != _curUnreadState && !state.IsPersistent))
            {
                return(state.GetCountFromBuffer(res));
            }

            int count;
            IUnreadCountProvider provider = (IUnreadCountProvider)_unreadCountProviders [res.Type];

            if (provider == null)
            {
                count = state.IsPersistent ? res.GetIntProp(_propUnreadCount) :
                        GetUnreadCountFromLinks(res, state);
            }
            else
            {
                count = GetProviderUnreadCount(res, state, provider);
            }
            state.UpdateUnreadCounter(res, count);
            return(count);
        }
Пример #3
0
 public void RegisterUnreadCountProvider(string resType, IUnreadCountProvider provider)
 {
     _unreadCountProviders [resType] = provider;
 }