diff -r 000000000000 -r e686773b3f54 phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CContactStoreDomain.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CContactStoreDomain.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,206 @@ +/* +* Copyright (c) 2004-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Maps a Contact Model databases to a virtual Phonebook contact. +* +*/ + + +#ifndef VPBKCNTMODEL_CCONTACTSTOREDOMAIN_H +#define VPBKCNTMODEL_CCONTACTSTOREDOMAIN_H + + +// INCLUDES +#include +#include +#include "CVPbkContactStoreDomain.h" + + +// FORWARD DECLARATIONS +class TVPbkContactStoreUriPtr; +class CVPbkContactStoreUriArray; +class CVPbkContactStoreList; +class CVPbkContactOperationFactory; +class RSharedDataClient; + +namespace VPbkEngUtils + { + class CTextStore; + } + +namespace VPbkCntModel { + +// FORWARD DECLARATIONS +class CFieldTypeMap; +class CContact; +class CFieldFactory; +class CAsyncContactOperation; + +// CLASS DECLARATIONS + +/** + * Maps a Contact Model databases to a virtual Phonebook contact. + */ +NONSHARABLE_CLASS( CContactStoreDomain ): + public CVPbkContactStoreDomain + { + public: // Constructor and destructor + /** + * Creates a new instance of this class. + * + * @param aURIList List of filename URI of the Contact Model database to map. + * @param aURIDomain URI domain names + * @param aMasterFieldTypeList Master field type list of vpbk. + * @param aFieldTypeMap Field type mapper. Ownership is transferred to + * this object in the end of this function. + * @return A new instance of this class. + */ + static CContactStoreDomain* NewL + (const CVPbkContactStoreUriArray& aURIList, + const TDesC& aURIDomain, + const MVPbkFieldTypeList& aMasterFieldTypeList, + CFieldTypeMap* aFieldTypeMap); + + /** + * Creates a new instance of this class. + * Only for ECom use. + * + * @param aParam ecom paramater. + */ + static CContactStoreDomain* NewL(TAny* aParam); + + ~CContactStoreDomain(); + + public: // New functions + /** + * Returns the field type map to use for mapping Contact Model field + * types to Virtual Phonebook field types. + */ + const CFieldTypeMap& FieldTypeMap() const; + + /** + * Returns the file server session. + */ + RFs& FsSession() const; + + /** + * Returns the master field type list. + */ + const MVPbkFieldTypeList& MasterFieldTypeList() const; + + /** + * Return shared data client. + * @return shared data client pointer or NULL. + */ + RSharedDataClient* SharedDataClient() const; + + public: // from CVPbkContactStoreDomain + const TDesC& UriDomain() const; + void LoadContactStoreL(const TVPbkContactStoreUriPtr& aUri); + MVPbkContactOperation* CreateContactRetrieverL( + const MVPbkContactLink& aLink, + MVPbkSingleContactOperationObserver& aObserver); + MVPbkContactOperation* CreateDeleteContactsOperationL( + const MVPbkContactLinkArray& aContactLinks, + MVPbkBatchOperationObserver& aObserver); + MVPbkContactOperation* CreateCommitContactsOperationL( + const TArray& aContacts, + MVPbkBatchOperationObserver& aObserver); + MVPbkContactOperation* CreateMatchPhoneNumberOperationL( + const TDesC& aPhoneNumber, + TInt aMaxMatchDigits, + MVPbkContactFindObserver& aObserver); + MVPbkContactOperation* CreateFindOperationL( + const TDesC& aSearchString, + const MVPbkFieldTypeList& aFieldTypes, + MVPbkContactFindObserver& aObserver); + MVPbkContactOperation* CreateFindOperationL( + const MDesC16Array& aSearchStrings, + const MVPbkFieldTypeList& aFieldTypes, + MVPbkContactFindFromStoresObserver& aObserver, + const TCallBack& aWordParserCallBack ); + + TAny* ContactOperationFactoryExtension( TUid aExtensionUid ); + + MVPbkContactOperation* CreateFindOperationL( + const MDesC16Array& aSearchStrings, + const MVPbkFieldTypeList& aFieldTypes, + MVPbkContactFindFromStoresObserver& aObserver, + const TCallBack& aWordParserCallBack, + const CDesC16ArrayFlat& aStoreEntriesArray ); + + MVPbkContactOperation* CreateCompressStoresOperationL( + MVPbkBatchOperationObserver& aObserver); + + TInt Count() const; + MVPbkContactStore& At(TInt aIndex) const; + MVPbkContactStore* Find(const TVPbkContactStoreUriPtr& aUri) const; + void OpenAllL(MVPbkContactStoreListObserver& aObserver); + void CloseAll(MVPbkContactStoreListObserver& aObserver); + + private: // Implementation + CContactStoreDomain(const MVPbkFieldTypeList& aMasterFieldTypeList); + void ConstructL(const CVPbkContactStoreUriArray& aURIList, + const TDesC& aURIDomain, + CFieldTypeMap* aFieldTypeMap); + + private: // Data + ///Own: this domains URI domain name + HBufC* iDomainDescriptor; + ///Own: Contact model to VPbk field type mapping + CFieldTypeMap* iFieldTypeMap; + ///Own: list of stores in this domain + CVPbkContactStoreList* iContactStoreList; + ///Own: a factory for creating multioperations + CVPbkContactOperationFactory* iOperationFactory; + ///Ref: Master field type list + const MVPbkFieldTypeList& iMasterFieldTypeList; + ///Own: File server session shared among stores + RFs iFs; + ///Own: Text storage for extension names + VPbkEngUtils::CTextStore* iTextStore; + ///Own: Shared data client + RSharedDataClient* iSharedDataClient; + + }; + + +// INLINE FUNCTIONS + +inline const CFieldTypeMap& CContactStoreDomain::FieldTypeMap() const + { + return *iFieldTypeMap; + } + +inline RFs& CContactStoreDomain::FsSession() const + { + return const_cast(iFs); + } + +inline const MVPbkFieldTypeList& CContactStoreDomain::MasterFieldTypeList() const + { + return iMasterFieldTypeList; + } + +inline RSharedDataClient* CContactStoreDomain::SharedDataClient() const + { + return iSharedDataClient; + } + +} // namespace VPbkCntModel + +#endif // VPBKCNTMODEL_CCONTACTSTOREDOMAIN_H + +//End of file + +