phonebookui/Phonebook2/inc/CPbk2StoreManager.h
changeset 0 e686773b3f54
--- /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 <e32base.h>
+#include <MPbk2StoreObservationRegister.h>
+#include <MVPbkContactStoreListObserver.h>
+#include <MPbk2StoreConfigurationObserver.h>
+#include <MPbk2DefaultSavingStoreObserver.h>
+#include <MPbk2StoreValidityInformer.h>
+
+// 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<MVPbkContactStore> iFailedStores;
+        /// Own: An array of store event observers
+        RPointerArray<MVPbkContactStoreObserver> iStoreObservers;
+        /// Ref: Store configuration
+        CPbk2StoreConfiguration& iStoreConfiguration;
+        /// Own: Store compression policy manager
+        MPbk2CompressPolicyManager* iCompressPolicy;
+        /// Ref: list of opened contact stores
+        RPointerArray<MVPbkContactStore> iOpenedStores;
+        /// Own: Indicates whether to act on configuration events
+        TBool iActOnConfigurationEvents;
+    };
+
+#endif // CPBK2STOREMANAGER_H
+
+// End of File