imageeditor/inc/ImageEditorUIView.h
changeset 1 edfc90759b9f
child 8 18b321db4884
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditor/inc/ImageEditorUIView.h	Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,732 @@
+/*
+* 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: 
+* Image Editor View class.
+*
+*/
+
+
+
+#ifndef IMAGEEDITORUIVIEW_H
+#define IMAGEEDITORUIVIEW_H
+
+
+// INCLUDES
+#include <coneresloader.h>
+
+#include <aknview.h>
+#include <aknprogressdialog.h> 
+
+#include "bitfield.h"
+#include "commondefs.h"
+
+// CONSTANTS
+
+// UID of view
+const TUid KViewId = {0x00000001};
+
+// FORWARD DECLARATIONS
+class CImageEditorUIContainer;
+class CPluginInfo;
+class CAknWaitDialog;
+class CAknNavigationControlContainer;
+class CAknNavigationDecorator;
+class CAknTitlePane;
+class CSendUi;
+class TSendingCapabilities;
+class CAknInfoPopupNoteController;
+
+#ifdef AIW_SUPPORT
+class CAiwServiceHandler;
+#endif
+
+
+
+/*	CLASS: CImageEditorUIView
+*
+*	View part of Image Editor UI. 
+*
+*/
+class CImageEditorUIView :	public CAknView
+{
+
+public:
+
+/** @name Methods:*/
+//@{
+
+	/*	Default constructor
+	*
+	*   @param
+	*   @return
+	*/
+    IMPORT_C CImageEditorUIView();
+
+	/*	Second phase constructor
+	*
+	*   @param
+	*   @return
+	*/
+	IMPORT_C void ConstructL();
+
+	/*	Destructor	
+	*
+	*   @param
+	*   @return
+	*/
+    IMPORT_C ~CImageEditorUIView();
+
+	/*	Id
+	*
+	*   Returns UID of the view.
+	*
+	*   @param
+	*   @return
+	*	@see CAknView
+	*/
+    IMPORT_C TUid Id() const;
+
+	/*	HandleCommandL
+	*
+	*	Handle view commands.   
+	*
+	*   @param aCommand - command ID
+	*   @return -
+	*	@see CAknView
+	*/
+    IMPORT_C void HandleCommandL (TInt aCommand);
+
+	/*	HandleClientRectChange
+	*
+	*	Handles client rectangle changes.
+	*
+	*   @param -
+	*   @return -
+	*/
+    IMPORT_C void HandleClientRectChange();
+
+	/*	SetImage
+	*
+	*	Set bitmap for preview pane.
+	*
+	*   @param aBitmap - preview bitmap
+	*   @return -
+	*/
+    IMPORT_C void SetImageL (CFbsBitmap * aBitmap);
+
+	/*	SetImageFileName
+	*
+	*	Set image file name
+	*
+	*   @param aFileName - image filename
+	*   @return -
+	*/
+    IMPORT_C void SetImageFileName (const TDesC& aFileName);
+
+    /*	GetContainer
+	*
+	*	Set plug-in control to UI.
+	*
+	*   @param -
+	*   @return - pointer to container control
+	*/
+	IMPORT_C CCoeControl * GetContainer () const;
+
+    /*	ActivatePluginL
+	*
+	*	Activates plug-in UI.
+	*
+	*   @param aControl - plug-in control
+	*   @return -
+	*/
+    IMPORT_C void ActivatePluginL (CCoeControl * aControl);
+
+    /*	ActivateMainViewL
+	*
+	*	Activates main view.
+	*
+	*   @param -
+	*   @return -
+	*/
+    IMPORT_C void ActivateMainViewL();
+
+    /*	GetSelectedPluginInfoL
+	*
+	*	Gets plug-in information of the selected plug-in.
+	*
+	*   @param -
+	*   @return plug-in info
+	*/
+    IMPORT_C CPluginInfo * GetSelectedPluginInfoL ();
+
+	/*	AddPluginUiItemL
+	*
+	*	Adds a new plug-in UI item.
+	*
+	*   @param aPluginInfo - plug-in info class
+	*   @return - 
+	*/
+    IMPORT_C void AddPluginUiItemL (const CPluginInfo * aPluginInfo);
+
+	/*	SetCustomButtonsL
+	*
+	*	Sets custom buttons for the view.
+	*
+	*   @param aResourceID - resource ID for CBA
+	*   @return - 
+	*/
+    IMPORT_C void SetCustomButtonsL (TInt aResourceID) const;
+
+	/*	LaunchSaveChangesQueryL
+	*
+	*	Launches a query dialog "Save changes?" query.
+	*
+	*   @param - 
+	*   @return - !0 if exit, 0 if not exit
+	*/
+    IMPORT_C TInt LaunchSaveChangesQueryL () const;
+
+	/*	LaunchExitWithoutSavingQueryL
+	*
+	*	Launches a query dialog "Exit anyway" if disk is full
+    *   when trying to exit and save - confirmation query.
+	*
+	*   @param - 
+	*   @return - !0 if exit, 0 if not exit
+	*/
+    IMPORT_C TInt LaunchExitWithoutSavingQueryL () const;
+
+	/*	LaunchCancelTextInputQueryL
+	*
+	*	Launches a query dialog "Cancel text input" if screen
+    *   is turned to landscape mode and text input is not available
+	*
+	*   @param - 
+	*   @return - !0 if cancel, 0 otherwise
+	*/
+    IMPORT_C TInt LaunchCancelTextInputQueryL () const;
+
+	/*	LaunchSendQueryL
+	*
+	*	Launches a send list query.
+	*
+	*   @param aCaps - sending capabilities
+    *   @param aFileName - aAttachment
+	*   @return - 
+	*/
+	IMPORT_C void LaunchSendQueryL (
+        const TSendingCapabilities& aCaps,
+        TFileName& aFileName
+        ) const;
+
+	/*	LaunchSendQueryL
+	*
+	*	Launches a send list query.
+	*
+	*   @param aCaps - sending capabilities
+    *   @param aFileHandle - aAttachment
+	*   @return - 
+	*/
+	IMPORT_C void LaunchSendQueryL (
+        const TSendingCapabilities& aCaps,
+        RFile& aFileHandle
+        ) const;
+
+	/*	LaunchSaveWaitDialogL
+	*
+	*	Launches a save wait dialog.
+	*
+	*   @param -	aSelfPtr
+    *				The wait dialog is allocated at this pointer.
+	*				The pointer needs to be valid when the dialog 
+	*				is dismissed and must be a class member.
+	*	@param 		aFinalValue Final value for the process
+	*   @param -	aCallback   The wait dialog callback.
+	*				Pass NULL if no callback is needed.
+	*   @return - 
+	*/
+	IMPORT_C void LaunchSaveWaitDialogL(
+        CAknProgressDialog** aSelfPtr,
+        TInt aFinalValue,
+        MProgressDialogCallback* aCallback
+        ) const;
+
+	/*	LaunchLoadWaitDialogL
+	*
+	*	Launches a load wait dialog.
+	*
+	*   @param -	aSelfPtr
+    *				The wait dialog is allocated at this pointer.
+	*				The pointer needs to be valid when the dialog 
+	*				is dismissed and must be a class member.
+	*   @param -	aCallback
+    *				The wait dialog callback.
+	*				Pass NULL if no callback is needed.
+	*   @return - 
+	*/
+	IMPORT_C void LaunchLoadWaitDialogL(
+        CAknWaitDialog** aSelfPtr,
+        MProgressDialogCallback* aCallback
+        ) const;
+
+	IMPORT_C void LaunchWaitDialog() const;
+
+	IMPORT_C void HideWaitDialog() const;
+
+	/*	ShowInformationNoteL
+	*
+	*	Launches a information note.
+	*
+	*   @param aNoteText - text to be shown
+	*   @return - 
+	*/
+    IMPORT_C void ShowInformationNoteL (const TDesC& aNoteText) const;
+
+	/*	ShowConfirmationNoteL
+	*
+	*	Launches a confirmation note.
+	*
+	*   @param aNoteText - text to be shown
+	*   @return - 
+	*/
+    IMPORT_C void ShowConfirmationNoteL (const TDesC& aNoteText) const;
+
+	/*	SetNaviPaneTextL 
+	*
+	*	Sets navigation pane text.
+	*
+	*   @param aText - navigation pane text 
+	*   @param aLeftNaviPaneScrollButtonVisibile
+	*   @param aRightNaviPaneScrollButtonVisible
+	*   @return - 
+	*/
+	IMPORT_C void SetNaviPaneTextL (
+		const TDesC & aText,
+		TBool aLeftNaviPaneScrollButtonVisibile, 
+		TBool aRightNaviPaneScrollButtonVisible );
+
+	/*	ClearNaviPaneTextL 
+	*
+	*	Clears navigation pane text.
+	*
+	*   @param -
+	*   @return - 
+	*/
+	IMPORT_C void ClearNaviPaneTextL();
+
+    /*	SetTitlePaneTextL 
+	*
+	*	Sets title pane text.
+	*
+	*   @param aText - title pane text 
+	*   @return - 
+	*/
+	IMPORT_C void SetTitlePaneTextL (const TDesC & aText);
+
+    /*	ClearTitlePaneTextL  
+	*
+	*	Clears title pane text.
+	*
+	*   @param -
+	*   @return - 
+	*/
+	IMPORT_C void ClearTitlePaneTextL ();
+
+    /*	SetSoftKey1L
+	*
+	*	Sets soft key 1 command id and text.
+	*
+	*   @param aText - soft key text
+	*   @param aCommand - command id
+	*   @return - 
+	*/
+	IMPORT_C void SetSoftKey1L (
+		const TDesC &	aText,
+		const TInt		aCommand
+		);
+
+    /*	SetSoftKey2L
+	*
+	*	Sets soft key 2 command id and text.
+	*
+	*   @param aText - soft key text
+	*   @param aCommand - command id
+	*   @return - 
+	*/
+	IMPORT_C void SetSoftKey2L (
+		const TDesC &	aText,
+		const TInt		aCommand
+		);
+    
+    /*	SetMiddleSoftKeyL
+	*
+	*	Sets Middle soft key command id and text.
+	*
+	*   @param aText - soft key text
+	*   @param aCommand - command id
+	*   @return - 
+	*/
+	IMPORT_C void SetMiddleSoftKeyL (
+		const TDesC &	aText,
+		const TInt		aCommand
+		);
+
+	/*	SetBusy
+	*
+	*	Sets busy flag. When busy flag is set, no key events are handled.
+	*
+	*   @param -
+	*   @return - 
+	*/
+    IMPORT_C void SetBusy();
+
+	/*	ResetBusy
+	*
+	*	Resets busy flag. When busy flag is reset, key events are handled.
+	*
+	*   @param -
+	*   @return - 
+	*/
+    IMPORT_C void ResetBusy();
+
+	/*	SetUndoFlag
+	*
+	*	Sets undo flag. When undo flag is set to ETrue, Undo item is shown 
+    *   in menu.
+	*
+	*   @param -
+	*   @return - 
+	*/
+    IMPORT_C void SetUndoFlag (const TBool aUndo);
+
+	/*	SetCanSave
+	*
+	*	Sets save flag. When save flag is set, Save item is shown in menu.
+	*
+	*   @param aSave - flag indicating, wheather saving is possible or not.
+	*   @return - 
+	*/
+    IMPORT_C void SetSaveFlag (const TBool aSave);
+
+	/*	SetFullScreen
+	*
+	*	Sets full screen flag. When full screen flag is set, the view is in
+    *   full screen mode. Normal screen item is shown in menu.
+	*
+	*   @param -
+	*   @return - 
+	*/
+    IMPORT_C void SetFullScreen();
+
+	/*	ResetFullScreen
+	*
+	*	Resets full screen flag. When full screen flag is reset, the view is 
+    *   in normal screen mode. Full screen item is shown in menu.
+	*
+	*   @param -
+	*   @return - 
+	*/
+    IMPORT_C void ResetFullScreen();
+
+	/*	SetZoomModeL
+	*
+	*	Sets zoom mode.
+	*
+	*   @param aMode - zoom mode
+	*   @return - 
+	*/
+    IMPORT_C void SetZoomModeL( const TZoomMode& aMode );
+
+    /*	DynInitMenuPaneL
+	*
+	*	Initialize menu items dynamically
+	*
+	*   @param aResourceId - resource ID of menu to be initialized
+	*   @param aMenuPane - run-time presentation of the menu pane
+	*   @return - 
+	*	@see MEikMenuObserver
+	*/
+	IMPORT_C virtual void DynInitMenuPaneL (
+		TInt			aResourceId,
+		CEikMenuPane *	aMenuPane
+		);
+
+	/*	HandleStatusPaneSizeChange
+	*
+	*	Main pane and status pane are partly overlapping. This method 
+    *   handles the status pane changes
+	*
+	*   @param -
+	*   @return -
+	*	@see CAknView
+	*/
+    IMPORT_C void HandleStatusPaneSizeChange();
+
+	/*	UpdateLayoutL
+	*
+	*	Update layout of the view according to screenmode
+	*
+	*   @param aScreenMode - screen mode
+	*   @return -
+	*/
+    IMPORT_C void UpdateLayoutL(TInt aScreenMode) const;
+
+	/*	SetSendAppUi
+	*
+	*	Sets CSendUi pointer
+	*
+	*   @param aSendAppUi - pointer to CSendUi instance
+	*   @return -
+	*/
+    IMPORT_C void SetSendAppUi(CSendUi* aSendAppUi);
+
+	/*	LaunchSaveImageQueryL 
+	*
+	*	Launches a query dialog "Save image:".
+	*
+	*   @param - 
+	*   @return - list query id or -1 if the user selects No
+	*/
+    IMPORT_C TInt LaunchSaveImageQueryL () const;
+    
+    /* GetTouchPanDirections 
+    *
+    *   Can be used to get the x- and y-directional movement changes
+    *   when image is panned with touch.
+    *   
+    *   @since S60 v5.0
+    *   @param - xMovement x-directional change
+    *   @param - yMovement y-directional change
+    *   @return - 
+    */    
+    IMPORT_C void GetTouchPanDirections( TInt& xMovement, TInt& yMovement );
+    
+    /*  InZoomingState()
+    *
+    *   Checks whether an image has been zoomed or not.
+    *
+    *   @param -
+	*   @return ETrue if in zooming state, EFalse otherwise
+    */
+    IMPORT_C TBool InZoomingState();
+    IMPORT_C TBool IsMemoryInCriticalLevel();
+//@}
+
+protected:
+
+/** @name Methods:*/
+//@{
+//@}
+
+	/*	ViewScreenModeCompatible
+	*
+	*	@see CAknView
+	*
+	*/
+    IMPORT_C TBool ViewScreenModeCompatible(TInt aScreenMode);
+
+
+/** @name Members:*/
+//@{
+//@}
+
+private:
+
+/** @name Methods:*/
+//@{
+
+	/*	DoActivateL
+	*
+	*	Called when view is activated.
+	*
+	*   @param aPrevViewId - 
+	*   @param aCustomMessageId -
+	*   @param aCustomMessage -
+	*   @return -
+	*	@see CAknView
+	*/
+    IMPORT_C void DoActivateL (
+		const TVwsViewId &  aPrevViewId,
+		TUid				aCustomMessageId,
+        const TDesC8 &		aCustomMessage
+		);
+
+	/*	DoDeactivate
+	*
+	*   Called when view is deactivated.
+	*
+	*   @param -
+	*   @return -
+	*	@see CAknView
+	*/
+    IMPORT_C void DoDeactivate();
+
+    /*	DimAllL
+	*
+	*	Dims all menu items
+	*
+	*   @param aResourceId - resource ID of menu to be initialized
+	*   @param aMenuPane - run-time presentation of the menu pane
+	*   @return - 
+	*/
+	void DimAllL (
+		TInt			aResourceId,
+		CEikMenuPane &	aMenuPane
+		) const;
+
+    /*	UpdateSoftkeysL 
+	*
+	*	Updates softkeys.
+	*
+	*   @param -
+	*   @return - 
+	*/
+    void UpdateSoftkeysL();
+
+    /*	UpdateNaviPaneL 
+	*
+	*	Updates navi pane text.
+	*
+	*   @param -
+	*   @return - 
+	*/
+    void UpdateNaviPaneL();
+
+    /*	InsertPluginItemsL
+	*
+	*	Inserts plug-in menu items to menu pane.
+	*
+	*   @param aMenuPane - run-time presentation of the menu pane
+	*   @return - 
+	*/
+    void InsertPluginItemsL (CEikMenuPane &	aMenuPane);
+
+    /*	MenuItemPressedL
+	*
+	*	Checks if a plug-in menu item has been pressed.
+	*
+	*   @param aCommand - command id
+	*   @return ETrue if menu item pressed, EFalse otherwise
+	*/
+    TBool MenuItemPressedL (TInt aCommand);
+    
+    /*	AddContainerToStack()
+	*
+	*	Add container to control stack and ensure it is not added twice
+	*
+	*   @param -
+	*   @return - 
+	*/
+	void AddContainerToStack();
+    
+    /*	RemoveContainerFromStack()
+	*
+	*	Remove container from control stack and ensure it is not removed twice
+	*
+	*   @param -
+	*   @return - 
+	*/
+	void RemoveContainerFromStack();
+    
+    /*  HandleZoomModeChangeL()
+    *
+    *   Handle needed operations (CBA buttons, tooltip) 
+    *   after zoom mode change.
+    *
+    *   @param -
+	*   @return -
+    */
+    void HandleZoomModeChangeL();
+    
+    /*  ResolveCaptionNameL
+    *
+    *   Resolves the caption (Media gallery) that should be added to 
+    *   saving note. Leaves if something goes wrong and caption can't be
+    *   resolved.
+    *
+    *   @param aCaption - Caption to be added 
+	*   @return -
+    */
+    void ResolveCaptionNameL( TApaAppCaption& aCaption ) const;
+
+//@}
+
+/** @name Members:*/
+//@{
+	/// UI container control
+    CImageEditorUIContainer *	        iContainer;
+    //  Navigation pane
+    CAknNavigationControlContainer *    iNaviPane;
+    /// Navigation decorator
+    CAknNavigationDecorator *           iNaviDecorator;
+    /// Previous navigation decorator
+    CAknNavigationDecorator *           iPreviousNaviDecorator;
+    /// Title pane
+    CAknTitlePane *                     iTitlePane;
+    /// SendAppUi
+    CSendUi*                            iSendAppUi;
+	/// Resource reader
+	RConeResourceLoader                 iResLoader;
+    /// Resource ID
+	TInt                                iResID;
+	/// Can undo
+	TBool                               iCanUndo;
+	/// Can save
+	TBool                               iCanSave;
+	/// In plug-in
+	TBool                               iInPlugin;
+	/// Are we in full screen mode
+	TBool                               iFullScreen;
+	/// Busy
+    TBool                               iBusy;
+    /// Zoom mode
+	TZoomMode                           iZoomMode;
+	/// Left soft key ID
+	TInt                                iSoftkey1;
+	/// Right soft key ID
+	TInt                                iSoftkey2;
+	/// Middle soft key ID
+	TInt                                iMSK;
+    /// Array of UI items
+    RPointerArray<CPluginInfo>          iArray;
+    /// Selected plug-in UI item index
+    TInt                                iIndex;
+    /// Currently loaded image name
+    TFileName                           iImageFileName;
+    /// Pointer to plug-in control
+    CCoeControl *                       iControl;
+    /// Preview bitmap
+    CFbsBitmap*                         iPreview;
+    /// Selected print menu command
+    TInt                                iSelectedPrintMenuCmd;
+    /// Is container added to stack
+    TBool								iContainerInStack;
+    // Array for zoom popup note texts
+    CDesCArray*                         iZoomTexts;
+    // Popup controller
+	CAknInfoPopupNoteController*        iPopupController;
+	
+#ifdef AIW_SUPPORT
+    /// AIW Service Handler
+    CAiwServiceHandler*                 iServiceHandler;
+#endif
+
+//@}
+
+};
+
+#endif
+
+// End of File