diff -r 000000000000 -r e686773b3f54 ccservices/cmsservices/contactpresence/inc/presenceiconinfolistener.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ccservices/cmsservices/contactpresence/inc/presenceiconinfolistener.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,204 @@ +/* +* 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 PRESENCEICONINFOLISTENER_H +#define PRESENCEICONINFOLISTENER_H + +// INCLUDES +#include +#include +#include + +class MContactPresenceObs; +class MPresenceTrafficLights; +class CContactStoreAccessor; +class CPresenceIconInfo; +class CVPbkContactManager; + +class MVPbkContactLink; + +// CLASS DECLARATION + +/** +* CPresenceIconInfoListener +* +*/ +NONSHARABLE_CLASS( CPresenceIconInfoListener ) : public CActive +{ +public: // Constructors and destructor + + /** + * Destructor. + */ + ~CPresenceIconInfoListener(); + + /** + * Two-phased constructor. + */ + static CPresenceIconInfoListener* NewL( CVPbkContactManager* aManager, MContactPresenceObs& aObs ); + + +public: // New methods + + /** + * Start info subscriotion + * @param aLinkArray packed contact links + */ + void SubscribePresenceInfoL( const MDesC8Array& aLinkArray ); + + /* + * Resubscribe + * @param aLink contact link + */ + void ResubscribePresenceInfoL( MVPbkContactLink* aLink ); + + /** + * Get presence for all services at once + * @param aPackedLink packed contact link + * @param aOpId operation id used in response callback + */ + void GetPresenceInfoL( const TDesC8& aPackedLink, TInt aOpId ); + + /** + * Contact store accessor + * @return contact store + */ + CContactStoreAccessor* ContactStoreAccessor(); + + /** + * Cancel info subscriptions + * @param aLinkArray packed contact links + */ + void CancelSubscribePresenceInfo( const MDesC8Array& aLinkArray ); + + /** + * Cancel info subscriptions + * @param aLink contact link + */ + void CancelSubscribePresenceInfo( MVPbkContactLink* aLink ); + + /** + * Delete all subscription requests + */ + void DeleteAllRequests(); + + void CancelGet( TInt aOpId ); + + +private: + + /** + * Constructor for performing 1st stage construction + */ + CPresenceIconInfoListener( MContactPresenceObs& aObs ); + + /** + * EPOC default constructor for performing 2nd stage construction + */ + void ConstructL( CVPbkContactManager* aContactManager ); + + /** + * Search icon info handler + * @return handler or NULL + */ + CPresenceIconInfo* SearchIconInfo( const TDesC8& aContactLink ); + + /** + * Create icon info handler + * @return handler + */ + CPresenceIconInfo* CreateIconInfoL( + const TDesC8& aContactLink, TBool aIsSubscription, TInt aOpId ); + + /** + * Create or access existing CPresenceIconInfo + */ + CPresenceIconInfo* GetSinglePresenceIconInfoL( + const TDesC8& aContactLink, TBool aIsSubscription, TInt aOpId ); + + /** + * Open contact store + */ + void OpenStoreL(); + + /** + * Open contact store for given link and existing Contact Manager + * @param aPackedLink packed contact link + */ + void OpenStoreL( const TDesC8& aPackedLink ); + + /** + * Start pending subscriptions + */ + void StartPendingsL( ); + + /** + * Send callbacks to all requests + */ + void SendErrorCallbacks( TInt aMyStatus ); + + /* + * Cancel current subscritpion + * @param aLink contact link + * @param aResubscribe if resubscritpion is done + */ + void DoResubscribePresenceInfoL( MVPbkContactLink* aLink, TBool aResubscribe ); + +private: // from CActive + + void RunL(); + + void DoCancel(); + +// data + + MContactPresenceObs& iObs; + + /** + * Queue for info requests + */ + TDblQue iInfoReqList; + + /** + * OWN + */ + MPresenceTrafficLights* iBrandedIcons; + + /** + * Whether contact store is open + */ + TBool iStoreOpen; + + /** + * contact db access + * OWN + */ + CContactStoreAccessor* iStoreAccess; + + /** + * 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; + +}; + +#endif // PRESENCEICONINFOLISTENER_H +