--- /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