diff -r 6ca72c0fe49a -r a941bc465d9f PECengine/ListLibrary2/ContactListSrc/CPEngContactListManagerBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/ListLibrary2/ContactListSrc/CPEngContactListManagerBase.h Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,367 @@ +/* +* 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 lists manager base +* +*/ + + +#ifndef __CPENGCONTACTLISTMANAGERBASE_H__ +#define __CPENGCONTACTLISTMANAGERBASE_H__ + + +// INCLUDES +#include "CPEngStoreEntry.h" +#include "MPEngContactListSettingsManager.h" +#include +#include + + +// CONSTANTS +_LIT( KPEngContactListManagerSId, "contactlistmanager" ); + + +// FORWARD DECLARATIONS +class MPEngStorageManager; +class CPEngContactListSettings; +class CPEngContactListModBase; +class MPEngListLibFactory; +class CPEngSessionSlotId; + + +// CLASS DECLARATION + +/** + * List manager base class + * Implements base storing features common to list manager + * related classes + * + * @lib PEngListLib2 + * @since 3.0 + */ +NONSHARABLE_CLASS( CPEngContactListManagerBase ): + public CPEngStoreEntry, + public MPEngContactListSettingsManager + { +public: // Two-phased constructors and destructor + + /** + * Destructor. + */ + virtual ~CPEngContactListManagerBase(); + + +protected: // Protected constructors + + /** + * C++ constructor. + */ + CPEngContactListManagerBase( MPEngListLibFactory& aFactory ); + + /** + * Symbian 2nd phase constructor + */ + void ConstructL( const CPEngSessionSlotId& aSessionSlot ); + + + +public: // New public functions + + /** + * Session Id + * @since 3.0 + * @return session Id + */ + const CPEngSessionSlotId& SessionId( ) const; + + /** + * Increase ref count + * + * @since 3.0 + */ + void Open( ); + + + +public: // From MPEngContactListSettingsManager + + + /** + * Get Contact list settings + * @see + */ + CPEngContactListSettings* ContactListSettingsOrNull( + const TDesC& aContactList ); + + + /** + * Add contact list settings observer + * @see + */ + void AddContactListSettingsObserverL( + const MPEngContactListSettingsObserver* aObserver ); + + + /** + * Remove contact list settings observer + * @see + */ + void RemoveContactListSettingsObserver( + const MPEngContactListSettingsObserver* aObserver ); + + + /** + * Remove model from the array of loaded models + * @see + */ + void RemoveModel( CPEngContactListModBase* aModel ); + + + /** + * Get domain of the logged user, + * @see + */ + const TDesC& UserDomain() const; + + + /** + * Store contact list settings + * @see + */ + void StoreSettingsL(); + + + /** + * Size of the storage for Contact list settings + * @see + */ + TInt& StoreSize( ); + + + +public: // Functions from CPEngStoreEntry + + /** + * ExternalizeL provides way to externalize data from store entry. + * @see + */ + void ExternalizeL( RWriteStream& aStream, + TPEngStorageType aStorageType ) const; + + /** + * InternalizeL provides way to internalise data to store entry. + * @see + */ + void InternalizeL( RReadStream& aStream, + TPEngStorageType aStorageType ); + + /** + * This method is used to retrieve ID for storing. + * @see + */ + const TDesC& StorageId() const; + + /** + * This method is used to ask entry size in bytes. + * @see + */ + TUint32 EntrySize() const; + + + +public: //Functions from CPEngStoreEntry / MPEngSIDChangeObserver + + /** + * Handle change of the Storage IDs + * @see + */ + void HandleSIDsChangeL( CPtrCArray& aChangedSIDs ); + + /** + * Called when SIDs notifier fails + * @see + */ + void HandleSIDNotifyError( TInt aError ); + + + +protected: // Contact lists management for derived classes + + /** + * Find contact list settings + * + * @since 3.0 + * @param aContactList contact list name + * @return index in the settings array or KErrNotFound + */ + TInt FindContactListSettings( const TDesC& aContactList ) const; + + +public: // Unit test cases need to use this method, therefore public + /** + * Inserts Contact list settings + * If seetings exist, functions will replace existing with new one + * + * @since 3.1 + * @param aSettings contact list settings to be inserted + */ + void InsertContactListSettingsL( CPEngContactListSettings& aSettings ); + +protected: + + /** + * Delete Contact list settings + * Contact list is deleted from the storage as well + * Contact list settings is deleted as well and + * and contact list models are notified + * + * @since 3.1 + * @param aContactList contact list settings to be deleted + */ + void DeleteContactListSettingsL( const TDesC& aContactList ); + + + /** + * Find default contact list + * + * @since 3.0 + * @return Default contact list Settings or NULL. + */ + CPEngContactListSettings* DefaultCntListSettingsOrNull(); + + + /** + * Load contact list model. If contact list model is + * not yet loaded from store it will be loaded. + * + * If contact list is not synchronized and flag aAnyTime is not + * defined, function leaves with KErrNotReady. + * + * @since 3.0 + * @param aContactList contact list name + * @param aAnyTime flag if contact list synchronization is checked + * @param aReferenceUpdate + * @return contact list model + */ + CPEngContactListModBase& LoadContactListModelL( const TDesC& aContactList, + TBool aReferenceUpdate, + TBool aAnyTime ); + + /** + * Finds contact list model if it is loaded and returns it. + * + * @since 3.0 + * @param aContactList contact list name + * @return contact list model if loaded, or NULL + */ + CPEngContactListModBase* ContactListModelOrNull( const TDesC& aContactList ); + + + /** + * Inserts new contact list model among existing ones. + * @since 3.0 + * @param aModel Contact list model + */ + void InsertContactListModelL( CPEngContactListModBase& aModel ); + + + /** + * Notify contact list observers about change of the settings + * + * @since 3.0 + */ + void NotifyCntLstSettingsObservers(); + + + /** + * Can be overwritten in derived classed, it is called when + * Contact List manager settings is refreshed from store. + * @since 3.0 + */ + virtual void HandleSettingsUpdateL(); + + + + +private: // Private helpers + + /** + * Initializes cached domain name + * + * @since 3.0 + * @param aSessionSlotId session slot id. + */ + inline void InitDomainNameL( const CPEngSessionSlotId& aSessionSlot ); + + + /** + * Creates watcher list related objects. + * + * @since 3.0 + */ + inline void InitWatcherListL(); + + + +protected: // Data used by derived classes + + /// OWN: Access count + TInt iAccessCount; + + /// REF: List library factory + MPEngListLibFactory& iFactory; + + /// OWN: Array of all contact lists settings + RPointerArray iContactListSettings; + + /// OWN: pointer array of the list models + RPointerArray iContactLists; + + /// REF: Contact lists settings observers + RPointerArray iCntLstSettingsObservers; + + /// OWN: Is contact lists environment synchronized + TBool iEnviromentSynchronized; + + /// OWN: Domain to which user is logged in + TPtrC iUserDomain; + + /// OWN: Session Id + CPEngSessionSlotId* iSessionId; + }; + +#endif // __CPENGCONTACTLISTMANAGERBASE_H__ + +// End of File + + + + + + + + + + + + + + + + + + + + + +