/** * 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); }
/** * 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); }
public void RegisterUnreadCountProvider(string resType, IUnreadCountProvider provider) { _unreadCountProviders [resType] = provider; }