diff -r 08008ce8a6df -r bde600d88860 messagingfw/sendas/server/inc/csendassender.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/sendas/server/inc/csendassender.h Fri Jun 04 10:32:16 2010 +0100 @@ -0,0 +1,111 @@ +// Copyright (c) 2004-2009 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: +// + +#ifndef __CSENDASSENDER_H__ +#define __CSENDASSENDER_H__ + +#include +#include + +#if (defined SYMBIAN_USER_PROMPT_SERVICE) +#include +using namespace UserPromptService; +#endif + +class MSendAsSenderObserver; +class CBaseMtm; +class CMsvOperation; +class CMsvEntrySelection; + +/** +Objects of this class are used to track the progress of a send operation. +They are created and owned by CSendAsMessage sub-session objects. + +When a background send is requested, ownership is transferred to the sendas +server. This allows the session to be closed before the background send +operation has completed. + +@internalComponent +@released +*/ +class CSendAsSender : public CActive + { +public: + static CSendAsSender* NewL(MSendAsSenderObserver& aObserver); + virtual ~CSendAsSender(); + // + void SendMessage(); + void SendMessage(const TSecurityInfo& aSecurityInfo, const TUid& aNotifierUid); + +#if (defined SYMBIAN_USER_PROMPT_SERVICE) + void SendMessageL(const RMessage2 aMessage, TBool aHasCapability); +#endif + // + void SetClientMtm(CBaseMtm& aClientMtm); + void ProgressL(TMsvSendOperationProgress& aProgress); + void FinalProgress(TMsvSendOperationProgress& aProgress); +private: + CSendAsSender(MSendAsSenderObserver& aObserver); + void ConstructL(); + // + void SetEntrySelectionL(); + // + void InvokeMoveOperationL(); + void InvokeSendOperationL(); + void InvokeConfirmOperationL(); + // + void DeleteOperation(); + void Complete(TInt aError); + // methods from CActive + virtual void RunL(); + virtual void DoCancel(); + virtual TInt RunError(TInt aError); + +private: + enum TSendAsSenderState + { + ESenderIdle =0, + ESenderStartingConfirmedSend, + ESenderStartingUnconfirmedSend, + ESenderConfirming, + ESenderMoving, + ESenderSending, + ESenderDone, + ESenderAuthoriseSend + }; +private: + MSendAsSenderObserver* iObserver; + TSendAsSenderState iState; + // + RNotifier iNotifier; + TUid iNotifierUid; + HBufC8* iBuffer; + TPckgBuf iNotifierResult; + CBaseMtm* iClientMtm; + CMsvOperation* iOperation; + CMsvEntrySelection* iSelection; + TMsvSendOperationProgress iFinalProgress; + TSecurityInfo iSecurityInfo; + TMsvEntry iEntry; + + /** For interaction with the UPS Server */ +#if (defined SYMBIAN_USER_PROMPT_SERVICE) + RUpsSession iUpsSession; + RUpsSubsession iUpsSubsession; + TUpsDecision iDecision; +#endif + }; + +#endif // __CSENDASSENDER_H__