imageeditor/EditorProvider/inc/ImageRotaterProvider.h
changeset 1 edfc90759b9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditor/EditorProvider/inc/ImageRotaterProvider.h	Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description:  
+*
+*/
+
+
+#ifndef IMAGEROTATERPROVIDER_H
+#define IMAGEROTATERPROVIDER_H
+
+// INCLUDES
+#include <AiwServiceIfMenu.h>
+#include <apparc.h>
+#include <ConeResLoader.h> 
+#include "JpegRotatorHelperObserver.h"
+
+
+
+// FORWARD DECLARATIONS
+class CJpegRotatorHelper;
+class MAiwNotifyCallback;
+class TDataType;
+
+/** CRotateProvider
+*
+*   CRotateProvider acts as a service provider of Image Editor in
+*   Series 60 2.8 platform. It implements the base and menu service classes
+*   as an ECom component.
+*	
+*/ 
+class CRotateProvider : public CAiwServiceIfMenu, public MJpegRotatorHelperObserver
+{	
+
+public:
+
+    /** New factory method
+	*
+	*	
+    *	@param -
+	*	@return - pointer to a new instance of CRotateProvider
+    */ 
+	static CRotateProvider * NewL();
+
+    /** Destructor
+	*	
+    *	@param -
+	*	@return - 
+    */ 
+	virtual ~CRotateProvider();
+
+    /** InitialiseL
+    *
+    *   @see CAiwServiceIfBase
+    */ 
+    virtual void InitialiseL (
+		MAiwNotifyCallback &			aFrameworkCallback,
+		const RCriteriaArray &			aInterest
+		);
+
+    /** HandleServiceCmdL
+    *
+    *   @see CAiwServiceIfBase
+    */ 
+    virtual void HandleServiceCmdL (
+        const TInt &                    aCmdId,
+        const CAiwGenericParamList &    aInParamList,
+        CAiwGenericParamList &          aOutParamList,
+        TUint                           aCmdOptions,
+        const MAiwNotifyCallback *      aCallback
+        );
+
+    /** InitializeMenuPaneL
+    *
+    *   @see CAiwServiceIfMenu
+    */ 
+    virtual void InitializeMenuPaneL (
+        CAiwMenuPane &                  aMenuPane,
+        TInt                            aIndex,
+        TInt                            aCascadeId,
+        const CAiwGenericParamList &    aInParamList
+        );
+
+    /** HandleMenuCmdL
+    *
+    *   @see CAiwServiceIfMenu
+    */ 
+    virtual void HandleMenuCmdL (
+        TInt                            aMenuCmdId,
+        const CAiwGenericParamList &	aInParamList,
+        CAiwGenericParamList &          aOutParamList,
+        TUint                           aCmdOptions,
+        const MAiwNotifyCallback *      aCallback
+        );
+
+protected:
+
+    /** Default constructor
+	*	
+    *	@param -
+	*	@return - 
+    */ 
+	CRotateProvider();
+
+    /** 
+    *   @param aInParamList
+    *   @return CDesCArray*
+    */
+	CDesCArray* CheckInputFilesLC ( 
+	    const CAiwGenericParamList &    aInParamList
+		);
+
+    /** 
+    *   @param aOutParamList
+    *   @param aCallback
+    *   @return -
+    */
+	void CheckAiwCallBackL ( 
+	    CAiwGenericParamList &          aOutParamList,
+	    const MAiwNotifyCallback *      aCallback
+		);
+
+    /** 
+    *   @param aFileName
+    *   @param aCmdId
+    *   @return -
+    */
+    void LaunchJpegRotatorL( 
+		const CDesCArray * 	 aInputFileList,
+	    TInt				 aCmdId
+	    );
+
+  /** CheckDRMProtectionL 
+	*
+	*	Checks if file is DRM protected.
+	*
+	*	@param aFileName - file name
+	*	@return - ETrue if protected, otherwise EFalse, 
+	*/
+    TBool CheckDRMProtectionL(const TDesC& aFileName) const;
+
+    /** IsJpeg
+    *
+    *   @param aDataType
+    *   @return  TBool
+    */
+    TBool IsJpeg (const TDataType& aDataType) const;
+
+    /** CheckDiskSpaceL 
+	*
+	*	Checks if there is enough space in the disk (MMC/PhoneMemory).
+	*
+    *   @param aFsSession - file server session
+	*	@param aFileName - file name
+	*	@return - ETrue if enough free memory, otherwise EFalse 
+	*/
+    TBool CheckDiskSpaceL(RFs& aFsSession, const TDesC& aFileName) const;
+
+    /** CheckDiskSpaceL 
+	*
+	*	Checks if there is enough space in the disk (MMC/PhoneMemory).
+	*
+    *   @param aFsSession - file server session
+	*	@param aFileList - list of file names
+	*	@return - ETrue if enough free memory, otherwise EFalse 
+	*/
+    TBool CheckDiskSpaceL(RFs& aFsSession, const CDesCArray* aFileList) const;
+  
+    /** HandleCmdsL
+    *
+    *   Handle menu and service commands
+    *
+    *   @see HandleMenuCmdL
+    *   @see HandleServiceCmdL
+    */ 
+    void HandleCmdsL (
+        TInt                            aMenuCmdId,
+        const CAiwGenericParamList &	aInParamList,
+        CAiwGenericParamList &          aOutParamList,
+        TUint                           aCmdOptions,
+        const MAiwNotifyCallback *      aCallback
+        );
+
+private: // from MJpegRotatorHelperObserver
+
+    /** RotateOperationReadyL
+    *
+    *   @see MJpegRotatorHelperObserver
+    */ 
+	virtual void RotateOperationReadyL (TInt aError);
+
+private:
+
+    TFileName					iResourceFile;
+    RConeResourceLoader			iResLoader;
+   	TBool						iResLoaderOpen;
+   	TBool						iFileServerConnected;
+   	TBool						iUseCallBack;
+   	RFs 						iSharableFS;
+	RFile						iFileHandle;
+
+    const MAiwNotifyCallback*	iCallback;
+    CAiwGenericParamList*		iInParamList;
+    CAiwGenericParamList*		iOutParamList;
+
+    CJpegRotatorHelper*			iJpegRotatorHelper;
+    CDesCArray*					iInputFileList;
+    CDesCArray*					iTargetFileList;
+
+};
+
+
+#endif // EOF EditorServiceProvider.h