diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrattachmentcommandhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrattachmentcommandhandler.h Wed Mar 31 21:08:33 2010 +0300 @@ -0,0 +1,176 @@ +/* +* Copyright (c) 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: MR Attachment field for editor and viewer + * +*/ + + +#ifndef CMRATTACHMENTCOMMANDHANDLER_H +#define CMRATTACHMENTCOMMANDHANDLER_H + +#include +#include + +#include "esmrdef.h" +#include "mcalremoteattachmentoperationobserver.h" + +// Forward declarations +class CCalEntry; +class CESMRRichTextLink; +class CCalRemoteAttachmentApi; +class CCalRemoteAttachmentInfo; +class CDocumentHandler; +class MESMRFieldEventQueue; +class CMRAttachmentCommand; + +/** + * CMRAttachmentCommandHandler is responsible for handling attachment + * related commands. + */ +NONSHARABLE_CLASS( CMRAttachmentCommandHandler ): + public CBase, + public MCalRemoteAttachmentOperationObserver + + { +public: // Construction and destructions + + /** + * Creates and initializes new CMRAttachmentCommandHandler object. + * Ownership is transferred to caller. + * @param aEntry Reference to calendar entry + */ + static CMRAttachmentCommandHandler* NewL( + CCalEntry& aEntry, + MESMRFieldEventQueue& aEventQueue ); + + /** + * C++ destructor + */ + ~CMRAttachmentCommandHandler(); + +public: // Interface + + /** + * Handles attachment related command for currently selected + * attachment link. + * @param aCommandId Defines the command to be executed + * @param aSelectedLink Reference to selected link. + */ + void HandleAttachmentCommandL( + TInt aCommandId, + const CESMRRichTextLink& aSelectedLink ); + + /** + * Tests whether curerntly selected link is remote or not. + * @param aSelectedLink Reference to selected link. + * @return ETrue, if currently selected link is remote attachment + */ + TBool IsRemoteAttachmentL( + const CESMRRichTextLink& aSelectedLink ); + + /** + * Sets remote attachment API information for the command handler. + * @param aRemoteaAttaApi Reference to remote attachment API + * @param aAttachmentInfo Reference to attachment information structure + */ + void SetRemoteAttachmentInformationL( + CCalRemoteAttachmentApi& aRemoteAttaApi, + CCalRemoteAttachmentInfo& aAttachmentInfo ); + + /** + * Handles remote attachment command. + * @param aCommandId Defines the command to be executed + * @param aSelectedLink Reference to selected link. + */ + void HandleRemoteAttachmentCommandL( + TInt aCommandId, + const CESMRRichTextLink& aSelectedLink ); + + /** + * Fetches reference to remote operations + * @return REference to download operation list. + */ + RPointerArray& RemoteOperations(); + + /** + * Returns the current command id in progress. + * @return current command id or 0 + */ + TInt CurrentCommandInProgress() const; + +private: // From MCalRemoteAttachmentOperationObserver + void Progress( + MCalRemoteAttachmentOperation* aOperation, + TInt aPercentageCompleted ); + void OperationCompleted( + MCalRemoteAttachmentOperation* aOperation, + RFile& aAttachment ); + void OperationError( + MCalRemoteAttachmentOperation* aOperation, + TInt aErrorCode ); + +private: // Implementation + CMRAttachmentCommandHandler( + CCalEntry& aEntry, + MESMRFieldEventQueue& aEventQueue ); + void ConstructL(); + TInt ResolveAttachmentIndexL( + const TDesC& aAttachmentLabel ); + TInt CommandIndex( const TDesC& aAttachmentLabel ); + TInt RemoteAttachmentIndexL( + const TDesC& aAttachmentLabel ); + void HandleOperationCompletedL( + MCalRemoteAttachmentOperation* aOperation, + RFile& aAttachment ); + void HandleAttachmentCommandInternalL( + TInt aCommandId, + TInt aAttachmentIndex ); + void UpdateLocalAttachmentL( + const TDesC& aAttachmentLabel, + RFile& aAttachment, + TInt aAttachmentIndex ); + void NotifyProgressL( + const TDesC& aAttachmentLabel, + TInt aPercentageCompleted ); + void HandleRemoteAttachmentCommandInternalL( + TInt aCommandId, + const TDesC& aRemoteAttachmentLabel ); + void HideDownloadIndicatorL(); + void ExecuteCommandL( + TInt aCommandId, + CMRAttachmentCommand& aCommand, + TInt aAttachmentIndex ); + void SaveAllAttachmentsL(); + void SaveNextRemoteAttachmentL(); + +private: // Data + /// Ref: Reference to calendar entry + CCalEntry& iEntry; + /// Ref: Remote attachment API + CCalRemoteAttachmentApi* iRemoteAttachmentApi; + /// Ref: Remote attachment info + CCalRemoteAttachmentInfo* iAttachmentInfo; + /// Own: Download operation + RPointerArray iDownloadOperations; + /// Own: Remote command in progress + TInt iCommandInProgress; + /// Own: Document handler + CDocumentHandler* iDocHandler; + /// Ref: Event queue + MESMRFieldEventQueue& iEventQueue; + }; + +#endif // CMRATTACHMENTCOMMANDHANDLER_H + +// EOF