diff -r 000000000000 -r 094583676ce7 wvuing/wvuieng/EngSrc/CCAInviteManager.h --- /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& 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 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 iInviteTrackerQueue; + + // Owns + HBufC* iRejectReason; + + // group manager inerface, not owned + MCAGroupManagerInterface* iGroupManager; + }; + +#endif // CCAINVITEMANAGER_H + +// End of File