diff -r 000000000000 -r e686773b3f54 ccservices/cmsservices/contactpresence/inc/contactstoreaccessor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ccservices/cmsservices/contactpresence/inc/contactstoreaccessor.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,148 @@ +/* +* Copyright (c) 2008 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: Presence in pbonebook +* +*/ + + +#ifndef CONTACTSTOREACCESSOR_H +#define CONTACTSTOREACCESSOR_H + +// INCLUDES +#include +#include +#include +#include +#include + +class TVPbkContactStoreEvent; +class MVPbkContactStore; +class CVPbkContactManager; +class MVPbkContactStoreList; +class CPbk2StoreConfiguration; + +class CPresenceIconInfoListener; + +// CLASS DECLARATION + +/** +* CContactStoreAccessor +* +*/ +NONSHARABLE_CLASS( CContactStoreAccessor ): public CBase, +public MVPbkContactStoreListObserver +{ +public: // Constructors and destructor + + /** + * Destructor. + */ + ~CContactStoreAccessor(); + + /** + * Two-phased constructor. + */ + static CContactStoreAccessor* NewL( CVPbkContactManager* aManager, CPresenceIconInfoListener& aListener ); + +public: // new methods + + void OpenStoresL( TRequestStatus& aStatus ); + + void OpenStoresL( TRequestStatus& aStatus, const TDesC8& aPackedLink ); + + MVPbkContactStoreList* AccessStoreList(); + + CVPbkContactManager* AccessContactManager(); + + void CreateConfigurationL(); + +private: //From MVPbkContactStoreListObserver + + /** + * Called when the opening process is complete, ie. all stores have been reported + * either failed or successful open. + */ + void OpenComplete(); + +private: //From MVPbkContactStoreObserver + + /** + * Called when a contact store is ready to use. + */ + void StoreReady( MVPbkContactStore& aContactStore ); + + /** + * Called when a contact store becomes unavailable. + * Client may inspect the reason of the unavailability and decide whether or not + * it will keep the store opened (ie. listen to the store events). + * @param aContactStore The store that became unavailable. + * @param aReason The reason why the store is unavailable. + * This is one of the system wide error codes. + */ + void StoreUnavailable( MVPbkContactStore& aContactStore, TInt aReason ); + + /** + * Called when changes occur in the contact store. + * @see TVPbkContactStoreEvent + * @param aContactStore The store the event occurred in. + * @param aStoreEvent Event that has occured. + */ + void HandleStoreEventL( MVPbkContactStore& aContactStore, TVPbkContactStoreEvent aStoreEvent ); + +private: + + /** + * Constructor for performing 1st stage construction + */ + CContactStoreAccessor(CPresenceIconInfoListener& aListener); + + /** + * EPOC default constructor for performing 2nd stage construction + */ + void ConstructL( CVPbkContactManager* aManager ); + + void DoCloseStore(); + +private: // data + + TRequestStatus* iClientStatus; + TBool iStoreReady; + MVPbkContactStore* iContactStore; + CVPbkContactManager* iContactManager; + MVPbkContactStoreList* iStoreList; + CPbk2StoreConfiguration* iStoreConfiguration; + + /** + * Whether open request is pending + */ + TBool iOpening; + TBool iGivenManager; + + /** + * Pointer to stack variable to detect the deletion of the heap + * instance. This case takes place if a client + * calls destructor in callback method. + * Own. + */ + TBool* iDestroyedPtr; + + /** + * Listener for contact modifications + */ + CPresenceIconInfoListener& iListener; + +}; + +#endif // CONTACTSTOREACCESSOR_H +