Пример #1
0
 private IEnumerable <IFavoritePublicFolder> InternalEnumerateFavorites(FolderTreeDataSection folderTreeDataSection)
 {
     using (IFolder commonViewsFolder = this.InternalBindToCommonViewsFolder())
     {
         using (IQueryResult queryResult = commonViewsFolder.IItemQuery(ItemQueryType.Associated, null, FavoritePublicFoldersManager.FavoriteFolderEntrySortBy, FavoritePublicFoldersManager.FavoriteFolderEntryProperties))
         {
             if (queryResult.SeekToCondition(SeekReference.OriginBeginning, FavoritePublicFoldersManager.ItemClassFilter, SeekToConditionFlags.AllowExtendedFilters))
             {
                 object[][] rowsFetched     = null;
                 bool       shouldContinue  = false;
                 bool       mightBeMoreRows = false;
                 do
                 {
                     rowsFetched = queryResult.GetRows(10000, out mightBeMoreRows);
                     foreach (object[] row in rowsFetched)
                     {
                         IFavoritePublicFolder favoritePublicFolder = null;
                         if (this.TryFetchFavoritePublicFolder(row, (int)folderTreeDataSection, out favoritePublicFolder, out shouldContinue))
                         {
                             yield return(favoritePublicFolder);
                         }
                     }
                 }while (rowsFetched.Length > 0 && shouldContinue);
             }
         }
     }
     yield break;
 }
Пример #2
0
        public static FavoriteFolderEntry Create(MailboxSession session, StoreObjectId folderId, FolderTreeDataType dataType, FavoriteFolderType favoriteFolderType)
        {
            Util.ThrowOnNullArgument(session, "session");
            Util.ThrowOnNullArgument(session, "folderId");
            EnumValidator.ThrowIfInvalid <FolderTreeDataType>(dataType, "dataType");
            EnumValidator.ThrowIfInvalid <FavoriteFolderType>(favoriteFolderType, "favoriteFolderType");
            FolderTreeDataSection groupSection = FavoriteFolderEntry.FavoritesGroupSectionByFolderType[favoriteFolderType];

            byte[] favoritesClassIdValue            = FavoriteFolderEntry.FavoritesClassIdValueByFolderType[favoriteFolderType];
            FavoriteFolderEntry favoriteFolderEntry = ItemBuilder.CreateNewItem <FavoriteFolderEntry>(session, session.GetDefaultFolderId(DefaultFolderType.CommonViews), ItemCreateInfo.FavoriteFolderEntryInfo, CreateMessageType.Associated);

            byte[] favoritesParentGroupClassIdValue           = (FavoriteFolderType.Contact == favoriteFolderType || FavoriteFolderType.Calendar == favoriteFolderType) ? NavigationNodeParentGroup.OtherFoldersClassId.AsBytes : null;
            FolderTreeDataFlags additionalFolderTreeDataFlags = FolderTreeDataFlags.None;

            if (folderId.IsLegacyPublicFolderType())
            {
                additionalFolderTreeDataFlags = FavoriteFolderEntry.PublicFolderTreeDataFlagsByFolderType[favoriteFolderType];
            }
            favoriteFolderEntry.SetPropertiesOfFavoriteFolderEntry(session, folderId, dataType, groupSection, favoritesClassIdValue, favoritesParentGroupClassIdValue, additionalFolderTreeDataFlags);
            return(favoriteFolderEntry);
        }
Пример #3
0
        internal static bool IsTaskSection(IStorePropertyBag row)
        {
            FolderTreeDataSection valueOrDefault = row.GetValueOrDefault <FolderTreeDataSection>(FolderTreeDataSchema.GroupSection, FolderTreeDataSection.None);

            return(valueOrDefault == FolderTreeDataSection.Tasks);
        }
Пример #4
0
 private void SetPropertiesOfFavoriteFolderEntry(MailboxSession session, StoreObjectId folderId, FolderTreeDataType dataType, FolderTreeDataSection groupSection, byte[] favoritesClassIdValue, byte[] favoritesParentGroupClassIdValue, FolderTreeDataFlags additionalFolderTreeDataFlags)
 {
     if (folderId.ObjectType != StoreObjectType.Folder && folderId.ObjectType != StoreObjectType.SearchFolder)
     {
         throw new NotSupportedException("Only folder and search folder types can be added to favorites.");
     }
     this[FolderTreeDataSchema.GroupSection] = groupSection;
     if (favoritesClassIdValue != null)
     {
         this[FolderTreeDataSchema.ClassId] = favoritesClassIdValue;
     }
     if (favoritesParentGroupClassIdValue != null)
     {
         this[FolderTreeDataSchema.ParentGroupClassId] = favoritesParentGroupClassIdValue;
     }
     base.MailboxSession = session;
     this.NodeEntryId    = folderId.ProviderLevelItemId;
     this.StoreEntryId   = Microsoft.Exchange.Data.Storage.StoreEntryId.ToProviderStoreEntryId(session.MailboxOwner, folderId.IsLegacyPublicFolderType());
     if (additionalFolderTreeDataFlags != FolderTreeDataFlags.None)
     {
         base.FolderTreeDataFlags |= additionalFolderTreeDataFlags;
     }
     if (folderId.IsLegacyPublicFolderType())
     {
         byte[] providerLevelItemId = folderId.ProviderLevelItemId;
         providerLevelItemId[0]       = 239;
         providerLevelItemId[20]      = 2;
         this.NavigationNodeRecordKey = providerLevelItemId;
     }
     base.FolderTreeDataType = dataType;
 }