mobilemessaging/unieditor/application/inc/UniEditorConvertVideoOperation.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/unieditor/application/inc/UniEditorConvertVideoOperation.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2006,2007 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:   CUniEditorConvertVideoOperation class definition.      
+*
+*/
+
+
+
+#ifndef __UNIEDITORCONVERTVIDEOOPERATION_H
+#define __UNIEDITORCONVERTVIDEOOPERATION_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include <msvapi.h>
+
+#include <uniobject.h>
+#include <cmsvattachment.h>
+
+#include "UniEditorOperation.h"
+#include "VideoConversionApi.h"
+
+// FORWARD DECLARATIONS
+
+class CMsgVideoInfo; 
+class CUniEditorDocument;
+class MMsvAttachmentManager;
+class CMsvStore;
+
+// DATA TYPES
+
+// CLASS DECLARATION
+
+/**
+* CUniEditorConvertVideoOperation
+*
+* @since 3.2
+*/
+class CUniEditorConvertVideoOperation : public CUniEditorOperation,
+                                        public MVideoConversionCallback
+    {
+    public: // new operations
+
+        /**
+        * Factory method
+        */
+        static CUniEditorConvertVideoOperation* NewL( 
+            MUniEditorOperationObserver& aObserver,
+            CUniEditorDocument& aDocument,
+            RFs& aFs );
+
+        
+        /**
+        * Returns whether converter is implemented
+        */
+        static TBool IsImplementedL();
+        
+        /**
+        * Start video convert operation
+        *
+        * @param aImageInfo
+        * @param aAttachmentId  Attachment id, if the image is already stored as an attachment
+        *                       KMsvNullIndexEntryId, otherwise.
+        * @param aMessageSize
+        */
+        void Process(         CMsgVideoInfo* aVideoInfo,
+        TMsvAttachmentId aAttachmentId,
+        TInt aMessageSize );
+
+        /**
+        * Destructor
+        */
+        virtual ~CUniEditorConvertVideoOperation();
+        
+        /**
+        * Detaches video info object.
+        */
+        CMsgVideoInfo* DetachVideoInfo();
+        
+        /**
+        * Detaches attachment id
+        */
+        void DetachAttachmentId( TMsvAttachmentId& aAttachmentId );
+
+    protected:
+
+        /**
+        * From CActive.
+        */
+        void RunL();
+
+        /**
+        * From CUniEditorOperation
+        */
+        void DoCancelCleanup();
+
+        /**
+        * From MVideoConversionCallback. Called when
+        * video conversion has been completed by video
+        * conversion plugin
+        */
+        void VideoConversionDone( TInt aStatus );
+
+    private: // new operations
+
+        /**
+        * C++ constructor
+        */
+        CUniEditorConvertVideoOperation( MUniEditorOperationObserver& aObserver,
+                                         CUniEditorDocument& aDocument,
+                                         RFs& aFs );
+
+        /**
+        * 2nd phase constructor.
+        */
+        void ConstructL();
+
+
+        /**
+        * Creates empty attachment
+        */
+        void CreateEmptyAttachmentL();
+
+        /**
+        * Performs processing start
+        */
+        void DoStartProcessL();
+
+        /**
+        * Start resolving
+        */
+        void DoStartResolveL();
+
+        /**
+        * Performs actions when conversion is ready
+        */
+        void DoReady();
+
+        /**
+        * Performs error handling without state change.
+        */
+        void DoErrorWithoutStateChange();
+        
+        /**
+        * Opens file by file name. If it fails with KErrPermissionDenied,
+        * file is searched from message store and opened from there.
+        */
+        RFile OpenFileForReadingL();
+        
+    private: // data
+
+        // assigned to iOperationState in base class
+        enum TUniProcessStates
+            {
+            EUniConvertVidCheck,
+            EUniConvertVidProcess,
+            EUniConvertVidResolve,
+            EUniConvertVidReady,
+            EUniConvertVidError
+            };
+            
+        TInt iTargetSize;    
+            
+        CMsgVideoInfo*              iVideoInfo;
+        TMsvAttachmentId            iAttachmentId;
+        
+        CMsgVideoInfo*              iNewVideoInfo;
+        RFile                       iNewVideoFile;
+        TMsvAttachmentId            iNewAttaId;
+        CMsvStore*                  iEditStore;
+    
+        CVideoConversionPlugin*     iConverter;
+    };
+
+#endif //__UNIEDITORCONVERTVIDEOOPERATION_H