Esempio n. 1
0
 public static NavigationNodeGroup CreateCustomizedGroup(NavigationNodeGroupSection groupSection, string groupSubject)
 {
     if (groupSubject == null)
     {
         throw new ArgumentNullException("groupSubject");
     }
     return(NavigationNodeCollection.CreateCustomizedGroup(groupSection, groupSubject, Guid.NewGuid()));
 }
Esempio n. 2
0
        private void Load(UserContext userContext, MailboxSession session, object[][] rows)
        {
            int num = 0;

            while (num < rows.Length && !NavigationNodeCollection.CheckItemClassAndSection(this.navigationNodeGroupSection, rows[num]))
            {
                num++;
            }
            if (this.IsFavorites)
            {
                base.Clear();
                base.Add(NavigationNodeCollection.CreateFavoritesGroup());
            }
            else
            {
                int num2 = num;
                while (num2 < rows.Length && NavigationNodeCollection.CheckItemClassAndSection(this.navigationNodeGroupSection, rows[num2]))
                {
                    if (NavigationNodeCollection.CheckNodeTypes(rows[num2], new NavigationNodeType[]
                    {
                        NavigationNodeType.Header
                    }))
                    {
                        this.UniquelyAddGroup(new NavigationNodeGroup(rows[num2], NavigationNodeCollection.PropertyMap));
                    }
                    num2++;
                }
            }
            Dictionary <Guid, int> dictionary = new Dictionary <Guid, int>(base.Count);

            for (int i = 0; i < base.Count; i++)
            {
                dictionary.Add(base[i].NavigationNodeGroupClassId, i);
            }
            while (num < rows.Length && NavigationNodeCollection.CheckItemClassAndSection(this.navigationNodeGroupSection, rows[num]))
            {
                if (NavigationNodeCollection.CheckNodeTypes(rows[num], new NavigationNodeType[]
                {
                    NavigationNodeType.NormalFolder,
                    NavigationNodeType.SharedFolder,
                    NavigationNodeType.SmartFolder,
                    NavigationNodeType.GSCalendar
                }))
                {
                    bool includeArchive = this.GroupSection == NavigationNodeGroupSection.First;
                    NavigationNodeFolder navigationNodeFolder = new NavigationNodeFolder(userContext, session, includeArchive, rows[num], NavigationNodeCollection.PropertyMap);
                    if (navigationNodeFolder.IsValid)
                    {
                        int num3 = -1;
                        if (this.IsFavorites)
                        {
                            num3 = 0;
                        }
                        else
                        {
                            Guid guid = navigationNodeFolder.NavigationNodeParentGroupClassId;
                            if (!guid.Equals(Guid.Empty) && dictionary.ContainsKey(guid))
                            {
                                num3 = dictionary[guid];
                            }
                            else
                            {
                                NavigationNodeGroup node = null;
                                if (!guid.Equals(Guid.Empty) && !string.IsNullOrEmpty(navigationNodeFolder.NavigationNodeGroupName))
                                {
                                    node = NavigationNodeCollection.CreateCustomizedGroup(this.navigationNodeGroupSection, navigationNodeFolder.NavigationNodeGroupName, guid);
                                }
                                else
                                {
                                    NavigationNodeGroupType navigationNodeGroupType = NavigationNodeGroupType.OtherFoldersGroup;
                                    switch (navigationNodeFolder.NavigationNodeType)
                                    {
                                    case NavigationNodeType.NormalFolder:
                                        navigationNodeGroupType = NavigationNodeGroupType.MyFoldersGroup;
                                        break;

                                    case NavigationNodeType.SharedFolder:
                                        navigationNodeGroupType = NavigationNodeGroupType.SharedFoldersGroup;
                                        break;
                                    }
                                    guid = NavigationNodeCollection.GetDefaultGroupClassId(navigationNodeGroupType);
                                    if (dictionary.ContainsKey(guid))
                                    {
                                        num3 = dictionary[guid];
                                    }
                                    else
                                    {
                                        node = NavigationNodeCollection.CreateDefaultGroup(navigationNodeGroupType, this.navigationNodeGroupSection);
                                    }
                                }
                                if (num3 < 0)
                                {
                                    base.Add(node);
                                    num3             = base.Count - 1;
                                    dictionary[guid] = num3;
                                }
                            }
                        }
                        this.UniquelyAddFolder(navigationNodeFolder, num3);
                    }
                }
                num++;
            }
            this.serverCollection = new NavigationNodeList <NavigationNodeGroup>();
            base.CopyToList(this.serverCollection);
            foreach (NavigationNodeGroup navigationNodeGroup in this)
            {
                foreach (NavigationNodeFolder navigationNodeFolder2 in navigationNodeGroup.Children)
                {
                    if (navigationNodeFolder2.FolderId != null && !navigationNodeFolder2.IsFlagSet(NavigationNodeFlags.PublicFolderFavorite))
                    {
                        navigationNodeFolder2.FixLegacyDNRelatedFlag(session);
                    }
                }
            }
        }