PECengine/JanitorPlugin2/Src/CPEngListObserver.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/JanitorPlugin2/Src/CPEngListObserver.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,190 @@
+/*
+* Copyright (c) 2005 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:  Contact Database observer
+*
+*/
+
+
+
+#ifndef __CPENGLISTOBSERVER_H__
+#define __CPENGLISTOBSERVER_H__
+
+//  INCLUDES
+#include <e32base.h>
+#include <MPEngContactListObserver2.h>
+
+
+// FORWARD DECLARATIONS
+
+class MPEngContactMapper;
+class CPEngNWSessionSlotID2;
+class CContactIdArray;
+class CPEngContactListStore2;
+class CPEngContactListNotifier2;
+class MPEngContactList2;
+class MPEngContactItem;
+
+// CLASS DECLARATION
+/**
+ *  Contact List observer
+ *  Observes contact list changes changes in given session slot
+ *
+ *  @lib PEngJanitor2
+ *  @since 3.0
+ */
+NONSHARABLE_CLASS( CPEngListObserver )
+        : public CBase,
+        public MPEngContactListObserver2
+    {
+public:  // Constructors and destructor
+
+    /**
+    * Two-phased constructor.
+    */
+    static CPEngListObserver* NewLC(
+        MPEngContactMapper& aMapper,
+        const CPEngNWSessionSlotID2& aSessionId );
+
+    /**
+    * Destructor.
+    */
+    virtual ~CPEngListObserver();
+
+public: // Function from MPEngContactListObserver2
+    /**
+     * Contact list change handler.
+     *
+     * @see <MPEngContactListObserver2.h>
+     * @since 3.0
+     */
+    void HandleContactListChangeL(
+        CPEngContactListNotifier2& aNotifier,
+        const TDesC& aContactListName );
+
+
+    /**
+     * Notification failure handler.
+     *
+     * @see <MPEngContactListObserver2.h>
+     * @since 3.0
+     */
+    void HandleContactListError(
+        TInt aError,
+        CPEngContactListNotifier2& aNotifier );
+
+public: // new public function
+
+    /*
+     * Update mapping for given WV Id
+     *
+     * @since 3.0
+     * @param aWVId
+     * @param aContactIds
+     */
+    void UpdateMappingL( const TDesC& aWVId,
+                         const CContactIdArray* aContactIds );
+
+
+    /**
+     *  Do full re-mapping of all contact list
+     *  Called when contact db done unspecified change
+     *
+     *  @since 3.0
+     */
+    void ReMappAllContactsL();
+
+
+    /**
+     *  Session slot Id
+     *
+     *  @since 3.0
+     *  @return session slot id
+     */
+    const CPEngNWSessionSlotID2& SessionId() const;
+
+private:
+    /**
+     *  Build list of supported contact lists
+     *
+     *  @since 3.0
+     */
+    void RefreshSupportedListsL();
+
+    /**
+     *  Find Contact list
+     *
+     *  @since 3.0
+     *  @param aContactList contact list name
+     *  @return contact list model
+     */
+    MPEngContactList2& ContactListL( const TDesC& aContactList );
+
+    /**
+     *  Remap whole contact list
+     *
+     *  @since 3.0
+     *  @param aContactList contact list name
+     *  @param aForceUpdate force update flag
+     */
+    void RemapContactListL( MPEngContactList2& aContactList,
+                            TBool aForceUpdate = EFalse );
+
+
+    /**
+     *  Remap one Contact Item with given contact db ids
+     *
+     *  @since 3.0
+     *  @param aContactItem contact item to store mapping
+     *  @param aContactIds contact db ids array
+     */
+    void RemapContactItemL( MPEngContactItem& aContactItem,
+                            const CContactIdArray* aContactIds );
+
+
+private:
+
+    /**
+    * C++ default constructor.
+    */
+    CPEngListObserver( MPEngContactMapper& aMapper );
+
+    /**
+    * By default Symbian 2nd phase constructor is private.
+    */
+    void ConstructL( const CPEngNWSessionSlotID2& aSessionId );
+
+
+private:    // Data
+
+    /// REF: Janitor observer, not owned
+    MPEngContactMapper& 				iContactMapper;
+
+    /// OWN: Session slot id
+    CPEngNWSessionSlotID2*				iSessionId;
+
+    /// OWN: Contact list store
+    CPEngContactListStore2*				iListStore;
+
+    /// OWN: contact list notifier
+    CPEngContactListNotifier2*			iListNotifier;
+
+    /// REF: list of supported contact lists
+    RPointerArray<MPEngContactList2>	iContactLists;
+
+
+    };
+
+#endif      // __CPENGLISTOBSERVER_H__
+
+// End of File