diff -r 000000000000 -r 094583676ce7 PECengine/JanitorPlugin2/Src/CPEngListObserver.h --- /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 +#include + + +// 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 + * @since 3.0 + */ + void HandleContactListChangeL( + CPEngContactListNotifier2& aNotifier, + const TDesC& aContactListName ); + + + /** + * Notification failure handler. + * + * @see + * @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 iContactLists; + + + }; + +#endif // __CPENGLISTOBSERVER_H__ + +// End of File