diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/inc/CPbk2StoreManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/inc/CPbk2StoreManager.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,165 @@ +/* +* Copyright (c) 2005-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: Phonebook 2 store manager. +* +*/ + + +#ifndef CPBK2STOREMANAGER_H +#define CPBK2STOREMANAGER_H + +// INCLUDES +#include +#include +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class CVPbkContactManager; +class MVPbkContactStoreList; +class CPbk2StoreConfiguration; +class MPbk2CompressPolicyManager; + +// CLASS DECLARATION + +/** + * Phonebook 2 store manager. + * The responsibilities of this class are to retrieve and observer the + * device contact store configuration and to open these stores through + * the Virtual Phonebook contact manager. It also manages the + * compression of the contact stores. + */ +class CPbk2StoreManager : public CBase, + public MPbk2StoreObservationRegister, + public MPbk2StoreValidityInformer, + public MVPbkContactStoreListObserver, + public MPbk2StoreConfigurationObserver, + public MPbk2DefaultSavingStoreObserver + { + public: // Constructor and destructor + + /** + * Creates a new instance of this class. + * + * @param aContactManager Virtual Phonebook + * contact manager. + * @param aStoreConfiguration Contact store configuration. + * @param aActOnConfigurationEvents Indicates whether to act on + * configuration events. + * @return A new instance of this class. + */ + IMPORT_C static CPbk2StoreManager* NewL( + CVPbkContactManager& aContactManager, + CPbk2StoreConfiguration& aStoreConfiguration, + TBool aActOnConfigurationEvents ); + + /** + * Destructor. + */ + ~CPbk2StoreManager(); + + public: // Interface + + /** + * Opens all the contact stores that are loaded by + * Virtual Phonebook contact manager. + */ + IMPORT_C void OpenStoresL(); + + /** + * Enables and disables compression. + * + * @param aEnable Indicates whether to enable or + * disable compression. + */ + IMPORT_C void EnableCompression( + TBool aEnable ); + + /** + * Ensures default saving store is loaded + */ + IMPORT_C void EnsureDefaultSavingStoreIncludedL(); + + /** + * Ensures current configuation stores are loaded + */ + IMPORT_C void EnsureCurrentConfigurationStoresIncludedL(); + + public: // From MPbk2ContactStoreObservationRegister + void RegisterStoreEventsL( + const MVPbkContactStoreObserver& aObserver ); + void DeregisterStoreEvents( + const MVPbkContactStoreObserver& aObserver ); + + public: // From MPbk2StoreValidityInformer + CVPbkContactStoreUriArray* CurrentlyValidStoresL() const; + CVPbkContactStoreUriArray* CurrentlyValidShownStoresL() const; + + private: // From MVPbkContactStoreListObserver + void OpenComplete(); + void StoreReady( + MVPbkContactStore& aContactStore ); + void StoreUnavailable( + MVPbkContactStore& aContactStore, + TInt aReason ); + void HandleStoreEventL( + MVPbkContactStore& aContactStore, + TVPbkContactStoreEvent aEvent ); + + private: // From MPbk2StoreConfigurationObserver + void ConfigurationChanged(); + void ConfigurationChangedComplete(); + + private: // From MPbk2DefaultSavingStoreObserver + void SavingStoreChanged(); + + private: // Implementation + CPbk2StoreManager( + CVPbkContactManager& aContactManager, + CPbk2StoreConfiguration& aStoreConfiguration, + TBool aActOnConfigurationEvents ); + void ConstructL(); + void HandleConfigurationChangedL(); + void EnsureCurrentConfigurationLoadedAndOpenL(); + void CloseUnnecessaryStoresL(); + void HandleSavingStoreChangedL(); + TBool IsStoreOpen( + MVPbkContactStore& aContactStore ) const; + void ReplaceStoreL( + MVPbkContactStore& aContactStore ); + + private: // Data + /// Ref: Virtual Phonebook contact manager + CVPbkContactManager& iContactManager; + /// Ref: Contact stores, owned by the manager + MVPbkContactStoreList* iContactStores; + /// Own: An array of stores that failed to open + RPointerArray iFailedStores; + /// Own: An array of store event observers + RPointerArray iStoreObservers; + /// Ref: Store configuration + CPbk2StoreConfiguration& iStoreConfiguration; + /// Own: Store compression policy manager + MPbk2CompressPolicyManager* iCompressPolicy; + /// Ref: list of opened contact stores + RPointerArray iOpenedStores; + /// Own: Indicates whether to act on configuration events + TBool iActOnConfigurationEvents; + }; + +#endif // CPBK2STOREMANAGER_H + +// End of File