예제 #1
0
        private PredicateMatch MatchResourceByLink(IResource res, IPropertyChangeSet cs, int propID)
        {
            LinkChangeType chg = LinkChangeType.None;

            if (cs != null)
            {
                chg = cs.GetLinkChange(propID, _baseResource.Id);
            }
            switch (chg)
            {
            case LinkChangeType.Add:    return(PredicateMatch.Add);

            case LinkChangeType.Delete: return(PredicateMatch.Del);

            default:
                return(res.HasLink(propID, _baseResource)
                        ? PredicateMatch.Match
                        : PredicateMatch.None);
            }
        }
예제 #2
0
파일: UnreadManager.cs 프로젝트: mo5h/omeo
        private void ProcessWorkspaceChange(IResource res, IPropertyChangeSet cs)
        {
            IntHashTable defaultTabMap  = (IntHashTable)_unreadStateTabMap [_tabProvider.GetDefaultTab()];
            IntHashTable specificTabMap = null;
            string       resourceTab    = _tabProvider.GetResourceTab(res);

            if (resourceTab != null)
            {
                specificTabMap = (IntHashTable)_unreadStateTabMap [resourceTab];
            }

            LinkChange[] wsLinkChanges = cs.GetLinkChanges(_workspaceManager.Props.WorkspaceVisible);

            int[] linkTypes = res.GetLinkTypeIds();
            for (int i = 0; i < linkTypes.Length; i++)
            {
                if (IsUnreadCountedLink(linkTypes [i]))
                {
                    IResourceList linkList = res.GetLinksOfType(null, linkTypes [i]);
                    foreach (IResource link in linkList)
                    {
                        if (cs.GetLinkChange(linkTypes [i], link.Id) == LinkChangeType.Add)
                        {
                            continue;
                        }

                        foreach (LinkChange linkChange in wsLinkChanges)
                        {
                            int delta = (linkChange.ChangeType == LinkChangeType.Add) ? 1 : -1;
                            AdjustCounterInState(defaultTabMap, linkChange.TargetId, link, delta);
                            AdjustCounterInState(specificTabMap, linkChange.TargetId, link, delta);
                        }
                    }
                }
            }
        }