--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/ServerApplication/inc/CPbk2ServerAppStoreManager.h Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,198 @@
+/*
+* 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 server application contact store manager.
+*
+*/
+
+
+#ifndef CPBK2SERVERAPPSTOREMANAGER_H
+#define CPBK2SERVERAPPSTOREMANAGER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <MVPbkContactViewObserver.h>
+#include <VPbkContactView.hrh>
+#include <MVPbkContactStoreObserver.h>
+
+// FORWARD DECLARATIONS
+class CPbk2ServerAppMonitor;
+class CVPbkContactStoreUriArray;
+class MVPbkContactViewBase;
+class CPbk2StoreManager;
+class CVPbkFieldTypeSelector;
+class CVPbkContactManager;
+class MPbk2ServerAppStartupObserver;
+class CPbk2StorePropertyArray;
+class CPbk2SortOrderManager;
+class MVPbkStoreContact;
+class CPbk2StoreConfiguration;
+class CVPbkSortOrderAcquirer;
+class MVPbkContactLinkArray;
+
+// CLASS DECLARATION
+
+/**
+ * Phonebook 2 server application contact store manager.
+ */
+class CPbk2ServerAppStoreManager : public CBase,
+ public MVPbkContactViewObserver,
+ public MVPbkContactStoreObserver
+ {
+ public: // Construction and destruction
+
+ /**
+ * Creates a new instance of this class.
+ *
+ * @param aStoreManager Contact store manager.
+ * @param aContactManager Virtual Phonebook contact manager.
+ * @return A new instance of this class.
+ */
+ static CPbk2ServerAppStoreManager* NewL(
+ CPbk2StoreManager& aStoreManager,
+ CVPbkContactManager& aContactManager );
+
+ /**
+ * Destructor.
+ */
+ ~CPbk2ServerAppStoreManager();
+
+ public: // Interface
+
+ /**
+ * Loads and opens given contact stores.
+ *
+ * @param aStoreUris The URIs of the stores to open.
+ * @param aObserver Start-up observer.
+ * @param aLoadSavingMemoriesAlways If Etrue default saving memory and
+ * backup saving memory are loaded and
+ * opened always.
+ */
+ void LoadAndOpenContactStoresL(
+ CVPbkContactStoreUriArray& aStoreUris,
+ MPbk2ServerAppStartupObserver& aObserver,
+ TBool aLoadSavingMemoriesAlways );
+
+ /**
+ * Builds a contact view to be used in the fetch phase.
+ *
+ * @param aViewType View type, only group and
+ * contacts types are supported.
+ * @param aStoreUris URIs of the stores to include
+ * in the view.
+ * @param aViewFilter Contact view filter.
+ * @param aStoreProperties Phonebook contact store properties.
+ * @param aSortOrderManager Sort order manager.
+ * @param aFlags Contact view flags
+ * @see TVPbkContactViewFlag
+ * @return Contact view.
+ */
+ MVPbkContactViewBase* BuildFetchViewL(
+ TVPbkContactViewType aViewType,
+ const CVPbkContactStoreUriArray& aStoreUris,
+ CVPbkFieldTypeSelector* aViewFilter,
+ CPbk2StorePropertyArray& aStoreProperties,
+ const CPbk2SortOrderManager& aSortOrderManager,
+ const TUint32 aFlags );
+
+ /**
+ * Removes read-only stores from the given store URI list.
+ *
+ * @param aStoreUriArray Store URI array to operate with.
+ * @param aStoreProperties Phonebook store properties.
+ */
+ void RemoveReadOnlyStoreUris(
+ CVPbkContactStoreUriArray& aStoreUriArray,
+ CPbk2StorePropertyArray& aStoreProperties ) const;
+
+ /**
+ * Checks whether the given contact is included in the
+ * current configuration.
+ *
+ * @param aContact The contact to inspect.
+ * @param aStoreConfiguration Phonebook store configuration.
+ * @return ETrue if contact belongs to the configuration.
+ */
+ TBool IsContactIncludedInCurrentConfigurationL(
+ const MVPbkStoreContact& aContact,
+ const CPbk2StoreConfiguration& aStoreConfiguration ) const;
+
+ /**
+ * Checks are given contacts from stores that are available.
+ *
+ * @param aContactLinks Contacts whose stores to inspect.
+ * @return EFalse if any of the store that was
+ * inspected is unavailable.
+ */
+ TBool ContactsAvailableL(
+ const MVPbkContactLinkArray& aContactLinks ) const;
+
+ /**
+ * Returns currently valid stores.
+ *
+ * @return Currently valid stores.
+ */
+ CVPbkContactStoreUriArray* CurrentlyValidStoresL() const;
+
+ private: // From MVPbkContactViewObserver
+ void ContactViewReady(
+ MVPbkContactViewBase& aView );
+ void ContactViewUnavailable(
+ MVPbkContactViewBase& aView );
+ void ContactAddedToView(
+ MVPbkContactViewBase& aView,
+ TInt aIndex,
+ const MVPbkContactLink& aContactLink );
+ void ContactRemovedFromView(
+ MVPbkContactViewBase& aView,
+ TInt aIndex,
+ const MVPbkContactLink& aContactLink );
+ void ContactViewError(
+ MVPbkContactViewBase& aView,
+ TInt aError,
+ TBool aErrorNotified );
+
+ private: // From MVPbkContactStoreObserver
+ void StoreReady(
+ MVPbkContactStore& aContactStore );
+ void StoreUnavailable(
+ MVPbkContactStore& aContactStore,
+ TInt aReason );
+ void HandleStoreEventL(
+ MVPbkContactStore& aContactStore,
+ TVPbkContactStoreEvent aEvent );
+
+ private: // Implementation
+ CPbk2ServerAppStoreManager(
+ CPbk2StoreManager& aStoreManager,
+ CVPbkContactManager& aContactManager );
+ void ConstructL();
+
+ private: // Data
+ /// Ref: Store manager
+ CPbk2StoreManager& iStoreManager;
+ /// Ref: Virtual Phonebook contact manager
+ CVPbkContactManager& iContactManager;
+ /// Own: Server app monitor
+ CPbk2ServerAppMonitor* iMonitor;
+ /// Own: View for fetch names list
+ MVPbkContactViewBase* iFetchView;
+ /// Own: Sort order aquirerer for group extension
+ CVPbkSortOrderAcquirer* iSortOrderAcquirer;
+ /// Ref: list of opened contact stores
+ RPointerArray<MVPbkContactStore> iOpenedStores;
+ };
+
+#endif // CPBK2SERVERAPPSTOREMANAGER_H
+
+// End of File