ccservices/cmsservices/contactpresence/inc/presenceiconinfolistener.h
changeset 0 e686773b3f54
--- /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 <e32std.h>
+#include <e32base.h>
+#include <badesca.h>
+
+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<CPresenceIconInfo> 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
+