wvuing/wvuieng/EngSrc/CCAInviteManager.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuieng/EngSrc/CCAInviteManager.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,302 @@
+/*
+* Copyright (c) 2003-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:  Handles incoming invitations
+*
+*/
+
+
+#ifndef CCAINVITEMANAGER_H
+#define CCAINVITEMANAGER_H
+
+// INCLUDES
+#include "MCAInvite.h"
+#include "MCAImpsFundClient.h"
+#include "MCAInviteTrackerCallback.h"
+
+// FORWARD DECLARATIONS
+class MCAInviteObserver;
+class CCAInvitationRequest;
+class MCASettings;
+class CCARequestMapper;
+class CCAInviteTracker;
+class MCAStoredGroup;
+class MCAGroupManagerInterface;
+class MCAImpsFactory;
+
+// CLASS DECLARATION
+
+/**
+ *  For invite-handling.
+ *
+ *
+ *  @lib CAEngine.lib
+ *  @since 1.2
+ */
+class CCAInviteManager : public CBase,
+            public MImpsInviteHandler2,
+            public MCAInvite,
+            public MCAInviteTrackerCallback,
+            public MCAInviteReadObserver
+    {
+    public:  // Constructors and destructor
+
+        /**
+         * Two-phased constructor.
+         * @param aImpsFundAPI is the API to the invite services.
+         * @param aSettingsAPI is the AI to the settings side.
+         * @param aRequestMapper is the API to the request mapper.
+         *        Used to provide synchronous waiting.
+         * @param aGroupManager is the API to the group manager.
+         */
+        static CCAInviteManager* NewL(
+            MCAImpsFactory* aIMPSFactory,
+            MCASettings&      aSettingsAPI,
+            CCARequestMapper& aRequestMapper,
+            MCAGroupManagerInterface& aGroupManager );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CCAInviteManager();
+
+    public: // From MCAInviteTrackerCallback
+
+        /**
+         * From MCAInviteTrackerCallBack
+         * @see MCAInviteTrackerCallBack::InviteExpired
+         */
+        void InviteExpiredL( const MCAInvitation* aInvitation );
+
+    public: // From MCAInvite
+
+        /**
+         * From MCAInvite.
+         * @see MCAInvite::AddInviteObserver.
+         */
+        TInt AddInviteObserver( MCAInviteObserver* aObserver );
+
+        /**
+         * From MCAInvite.
+         * @see MCAInvite::RemoveInviteObserver.
+         */
+        void RemoveInviteObserver( MCAInviteObserver* aObserver );
+
+        /**
+         * From MCAInvite.
+         * @see MCAInvite::SendInvitationL.
+         */
+        void SendInvitationL( const CCAInvitationRequest& aInvitation );
+
+        /**
+         * From MCAInvite
+         * @see MCAInvite::PopulateInviteList.
+         */
+        void PopulateInviteList( RPointerArray<MCAInvitation>& aList );
+
+        /**
+         * From MCAInvite
+         * @see MCAInvite::ActiveInvitations.
+         */
+        TInt ActiveInvitations();
+
+        /**
+         * From MCAInvite
+         * @see MCAInvite::RemoveInvitation
+         */
+        void RemoveInvitationL( MCAInvitation* aInvitation );
+
+        /**
+         * From MCAInvite
+         * @see MCAInvite::RejectReasonPtr
+         */
+        HBufC* RejectReasonPtr();
+
+        /**
+         * @see MCAInvite
+         */
+        TInt UnreadInvitesCount() const;
+
+        /**
+         * @see MCAInvite
+         */
+        void ReplyInvitationL( const MCAInvitation* aInvitation,
+                               const TBool aInviteAccepted,
+                               const TDesC& aResponse,
+                               const TDesC& aScreenName );
+
+
+    private: // From MImpsInviteHandler
+
+        /**
+         * @see MImpsInviteHandler::GroupInviteUserRequest.
+         */
+        void HandleGroupInviteL( const TDesC& aInviteID,
+                                 const TDesC& aUserID,
+                                 const TDesC& aScreenName,
+                                 const TDesC& aGroupName,
+                                 const TDesC& aInviteReason,
+                                 const TInt aValidityPeriod,
+                                 TImpsCspIdentifier& aCspId );
+
+        /**
+         * @see MImpsInviteHandler::GroupInviteUserRequest.
+         */
+        void HandleImInviteL( const TDesC& aInviteID,
+                              const TDesC& aUserID,
+                              const TDesC& aInviteReason,
+                              const TInt aValidityPeriod,
+                              TImpsCspIdentifier& aCspId );
+
+        /**
+         * @see MImpsInviteHandler::GroupInviteUserRequest.
+         */
+        void HandleContentInviteL( const TDesC& aInviteID,
+                                   const TDesC& aUserID,
+                                   MDesCArray* aUrlList,
+                                   const TDesC& aInviteReason,
+                                   const TInt aValidityPeriod,
+                                   TImpsCspIdentifier& aCspId );
+
+        /**
+         * @see MImpsInviteHandler::GroupInviteUserRequest.
+         */
+        void HandleInviteResponseL( const TDesC& aInviteID,
+                                    const TBool aAcceptance,
+                                    const TDesC& aUserID,
+                                    const TDesC& aScreenName,
+                                    const TDesC& aGroupName,
+                                    const TDesC& aResponse,
+                                    TImpsCspIdentifier& aCspId );
+
+        /**
+         * @see MImpsInviteHandler::GroupInviteUserRequest.
+         */
+        void HandleInviteCancelL( const TDesC& aInviteID,
+                                  const TDesC& aUserID,
+                                  const TDesC& aScreenName,
+                                  const TDesC& aGroupName,
+                                  const TDesC& aResponse,
+                                  TImpsCspIdentifier& aCspId );
+
+        /**
+         * @see MImpsInviteHandler::GroupInviteUserRequest.
+         */
+        void  HandleCompleteL( TInt aOperationId,
+                               TImpsCspIdentifier& aCspId );
+
+    private:
+
+        /**
+         * @see MCAInviteReadObserver
+         */
+        void HandleInviteReadL() const;
+
+    private:
+
+        /**
+         * By default Symbian OS constructor is private.
+         */
+        void ConstructL();
+
+        /**
+         * C++ default constructor.
+         * @see CCAInviteManager::NewL.
+         */
+        CCAInviteManager(
+            MCAImpsFactory* aIMPSFactory,
+            MCASettings&      aSettingsAPI,
+            CCARequestMapper& aRequestMapper,
+            MCAGroupManagerInterface& aGroupManager );
+
+        /**
+         * Prepares target group for wanted invitee.
+         * @since 1.2
+         * @param aInvitation Invitation
+         */
+        void PrepareGroupForInviteeL( const CCAInvitationRequest& aInvitation );
+
+        /**
+         * Removes invite from invite queue.
+         * @param aInviteId Invite to be removed
+         * @return ETrue if invite was found from queue
+         */
+        TBool RemoveInviteL( const MCAInvitation* aInvitation );
+
+        /**
+         * Finds the invite from invite queue
+         * @param aInviteId Invite to be searched
+         * @return CCAInvitation if found, NULL otherwise
+         */
+        MCAInvitation* FindInvite( const TDesC& aInviteId );
+
+        /**
+         * Creates a CCAInvitation.
+         * @param aInviteID invitation id
+         * @param aUserId WV ID
+         * @param aScreenName screen name
+         * @param aGroupId group id
+         * @param aInviteReason invite reason
+         * @param aValidityPeriod validity period
+         * @return created CCAInvitation.
+         *         The ownership is transferred to caller.
+         */
+        MCAInvitation* CreateInviteRequestL( const TDesC& aInviteID,
+                                             const TDesC& aUserID,
+                                             const TDesC& aScreenName,
+                                             const TDesC& aGroupID,
+                                             const TDesC& aInviteReason,
+                                             const TInt aValidityPeriod );
+
+    private: // Data
+
+        // Number that is used to generate unique ids
+        TInt iInviteIDOrdinal;
+
+        // Doesn't own. Pointers to observers
+        RPointerArray<MCAInviteObserver> iInviteObservers;
+
+        // Doesn't own. Pointer to engine's request mapper
+        CCARequestMapper* iRequestMapper;
+
+        // Reference to settings API
+        MCASettings& iSettingsAPI;
+
+        // not owned
+        MCAImpsFactory* iImpsFactory;
+
+        // Doesn't own. Pointer to wvengine's fundamental API
+        MCAImpsFundClient* iImpsFundAPI;
+
+        // The operation id of current operation
+        TInt iCurrentOpId;
+
+        // Doesn't own.
+        const CCAInvitationRequest* iCurrentInviteRequest;
+
+        // Owns. Last generated invite ID
+        HBufC* iLastInviteId;
+
+        // Owns.
+        RPointerArray<CCAInviteTracker>	iInviteTrackerQueue;
+
+        // Owns
+        HBufC* iRejectReason;
+
+        // group manager inerface, not owned
+        MCAGroupManagerInterface* iGroupManager;
+    };
+
+#endif      // CCAINVITEMANAGER_H
+
+// End of File