diff g23m/condat/ms/src/bmi/MmiCameraTest.c @ 0:509db1a7b7b8

initial import: leo2moko-r1
author Space Falcon <falcon@ivan.Harhan.ORG>
date Mon, 01 Jun 2015 03:24:05 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/g23m/condat/ms/src/bmi/MmiCameraTest.c	Mon Jun 01 03:24:05 2015 +0000
@@ -0,0 +1,1487 @@
+/*******************************************************************************
+
+          CONDAT (UK)
+
+********************************************************************************
+
+ This software product is the property of Condat (UK) Ltd and may not be
+ disclosed to any third party without the express permission of the owner.
+
+********************************************************************************
+
+ $Project name: Basic MMI
+ $Project code: BMI (6349)
+ $Module:   CAMERATEST
+ $File:       MmiCameraTest.c
+ $Revision:   1.0
+ $Author:   Texas Instruments France
+ $Date:       25/06/04
+
+********************************************************************************
+
+ Description:
+
+    This module provides the Camera functionality.
+
+********************************************************************************
+ $History: MmiCameraTest.c
+ 
+ 	Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg
+	Description: Locosto: MIgration to New LCD APIs
+	Solution: Migrated to New APIs by replacing the old driver APIs with
+	corresponding New LCD APIs
+
+	Aug 22 2005, xpradipg - LOCOSTO-ENH-31154
+ 	Description:	Application to test camera
+ 	Solution:	Implemented the camera application with following functionalities
+ 			preview, snapshot and image saving.
+ 			
+  25/06/04 Texas Instruments France original version
+
+ $End
+
+*******************************************************************************/
+
+
+
+
+/*******************************************************************************
+
+                                Include files
+
+*******************************************************************************/
+#define ENTITY_MFW
+/* includes */
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "typedefs.h"
+#include "vsi.h"
+#include "pei.h"
+#include "custom.h"
+
+#if defined (NEW_FRAME)
+
+#include "typedefs.h"
+#include "vsi.h"
+#include "pei.h"
+#include "custom.h"
+#include "prim.h"
+
+#else
+
+#include "STDDEFS.H"
+#include "custom.h"
+#include "gsm.h"
+#include "vsi.h"
+
+#endif
+
+#include "message.h" /* included for aci_cmh.h .... */
+#include "aci_cmh.h" /* included for mfw_sat.h, included for MmiDummy.h, included for MmiMenu.h */
+
+#include "mfw_mfw.h"
+#include "mfw_win.h"
+#include "mfw_icn.h"	/* included for mfw_mnu.h */
+#include "mfw_mnu.h"
+#include "mfw_tim.h"
+#include "mfw_kbd.h"
+#include "mfw_sat.h" /* included for MmiDummy.h, included for MmiMenu.h */
+#include "mfw_cm.h" 
+#include "mfw_cam.h"
+#include "MmiBlkLangDB.h"
+#include "mmiColours.h"
+#include "MmiDialogs.h"
+
+#include "MmiDummy.h" /* included for MmiMenu.h */
+#include "MmiLists.h"
+#include "MmiMenu.h"
+#include "MmiSoftKeys.h"
+#include "AUIEditor.h"
+#include "MmiMain.h"
+#include "Mmiicons.h"
+#include "MmiCameraTest.h"
+#include "MmiWindow.h"
+#include "MmiCall.h"
+
+#include "r2d/r2d.h"
+
+/*******************************************************************************
+
+                                internal data
+
+*******************************************************************************/
+//Events for window
+#define CT_INIT 0
+#define CT_RETURN 1
+#define CT_RESUME 2
+
+//Events for editor
+#define CT_EDITOR_CANCEL 2
+#define CT_EDITOR_SELECT 3
+
+//Dialog Screen timeout
+#define CT_INFO_SCRN_TIMEOUT  1000
+//Default Filename of the Jpeg file to be saved.
+#define CT_DEFAULT_FILENAME "Snapshot"
+#define CT_FILENAME_EDITOR_INPUT_LEN 45 
+
+/*
+ * Structures
+ */
+
+/*camera window structure*/
+typedef struct{
+	T_MMI_CONTROL	mmi_control;
+	MfwHnd			win;
+	MfwHnd			mfwwin;	
+	T_MFW_HND			optwin;	
+	T_MFW_HND			infowin;	
+	MfwHnd			parent;
+	MfwHnd          kbd;
+	MfwIcnAttr      ct_bitmap;
+	SHORT           id;
+}	T_MMI_CT_Win_data;
+
+typedef struct
+{
+    /* administrative data */
+
+    T_MMI_CONTROL   mmi_control;
+    T_MFW_HND       win;
+    SHORT           id;
+    T_MFW_HND       parent;
+    /* associated handlers */
+    T_MFW_HND       kbd;
+    T_MFW_HND       kbd_long;
+    T_MFW_HND       menu;
+
+} T_MMI_CT_Opt_data;
+
+/*editor data structure*/
+typedef struct{
+	T_MMI_CONTROL	mmi_control;
+	MfwHnd			win;
+	MfwHnd			ct_win_editor;
+	UBYTE			ct_buffer[CT_FILE_NAME_LENGTH+1];
+}	T_CT_Editor_Data;
+
+//Camera Option Menu Items
+static const MfwMnuItem Mmi_camera_OPTItems [] =
+{
+	{0,0,0,(char *)TxtQuality,0,(MenuFunc)M_exeQuality,item_flag_none},
+	//{0,0,0,(char *)TxtColour,0,(MenuFunc)M_exeColor,item_flag_none},	
+	//{0,0,0,(char *)TxtDigiZoom,0,(MenuFunc)M_exeZoom,item_flag_none},	
+	{0,0,0,(char *)TxtFilename,0,(MenuFunc)mmi_camera_edit_filename,item_flag_none}	
+};
+
+//Camera Option menu Atrributes
+static const MfwMnuAttr Mmi_camera_OPTAttrib =
+{
+    &SmsSend_R_OPTArea,
+    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
+    -1,                                 /* use default font         */
+    (MfwMnuItem*)Mmi_camera_OPTItems,                      /* with these items         */
+    sizeof(Mmi_camera_OPTItems)/sizeof(MfwMnuItem), /* number of items     */
+    COLOUR_LIST_SMS,	TxtNull, NULL, MNUATTRSPARE
+
+};
+//Variable to track the different Camera states.
+extern UBYTE camera_state;
+//Window Handler for Option window.
+T_MFW_HND optwin;
+//Variable to track active Call 
+extern T_call call_data;
+//Default filename for captured image
+char new_filename[CT_FILE_NAME_LENGTH] = CT_DEFAULT_FILENAME;
+UBYTE IsCamInit = FALSE; //Variable to initialise Camil only once.
+T_MFW_HND digwin1 = NULL; //Window handler for Info Dialog.
+/*******************************************************************************
+
+                                Local prototypes
+
+*******************************************************************************/
+int mmi_camera_test_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
+T_MFW_HND mmi_camera_test_win_create(T_MFW_HND parent);
+static int mmi_camera_test_opt_kbd_cb (MfwEvt e, MfwKbd *k);
+static int mmi_camera_test_opt_mnu_cb (MfwEvt e, MfwMnu *m);
+void mmi_camera_test_opt_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
+int mmi_camera_test_opt_win_cb (MfwEvt evt, MfwHnd win);
+static int mmi_camera_test_kbd_cntrl (MfwEvt e, MfwKbd *k);
+static void mmi_camera_test_opt_destroy(MfwHnd own_window);
+void mmi_camera_test_update_softkeys (int lsk, int rsk);
+T_MFW_HND mmi_camera_editor_create(T_MFW_HND parent);
+
+/*******************************************************************************
+
+ $Function:     mmi_camera_test_show_info
+
+ $Description: 	Displays the dialog box
+
+ $Returns: 		Dialog window
+
+ $Arguments:		parent -parent window for dialog
+ 				str1- String to be displayed in dialog
+ 				str2 -String to be displayed in dialog
+ 				callback- Callback function
+
+*******************************************************************************/
+static MfwHnd mmi_camera_test_show_info(T_MFW_HND parent, int str1, int str2, T_VOID_FUNC callback)
+{
+	T_DISPLAY_DATA display_info;
+	T_MFW_HND win;
+
+      TRACE_EVENT ("mmi_camera_test_show_info()");
+
+	/*
+	** Create a timed dialog to display the Message .
+	*/
+	dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, str1, str2, COLOUR_STATUS);
+	dlg_initDisplayData_events( &display_info, callback, THREE_SECS, KEY_LEFT | KEY_CLEAR | KEY_HUP/*0*/);
+
+	win = info_dialog(parent, &display_info);
+	dspl_Enable(1);
+	return win;
+}
+
+/*******************************************************************************
+
+ $Function:    		 mmi_camera_test_show_saving_info
+
+ $Description: 	Displays the Saving dialog box
+
+ $Returns: 		Dialog window
+
+ $Arguments:		parent -parent window for dialog
+ 				callback- Callback function
+
+*******************************************************************************/
+
+static MfwHnd mmi_camera_test_show_saving_info(T_MFW_HND parent, T_VOID_FUNC callback)
+{
+	T_DISPLAY_DATA display_info;
+	T_MFW_HND win;
+      TRACE_EVENT ("mmi_camera_test_show_saving_info()");
+
+	dspl_Clear(0,0,SCREEN_SIZE_X-1,SCREEN_SIZE_Y-1 );
+	dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtSnapSaving,TxtNull, COLOUR_STATUS);
+	dlg_initDisplayData_events( &display_info, callback, FOREVER, KEY_LEFT | KEY_CLEAR | KEY_HUP/*0*/);
+	win = info_dialog(parent, &display_info);
+//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg
+//replaced the flag with the function call, to migrate to the new Lcd APIs
+	dspl_control(DSPL_ACCESS_ENABLE);
+	dspl_Enable(1);
+	return win;
+}
+/*******************************************************************************
+
+ $Function:		mmi_camera_test_win_cntrl
+
+ $Description:		This is the dialog control function for the Camera Window. It
+ 				receives the signals from the MFW and determines what action, if any, to take.
+
+ $Returns:		None
+
+ $Arguments:		win :		The pointer to the window handler, so the function can reference the
+							dynamic user data, if any.
+ 				event :		The incoming event
+ 				value :		Generic incoming Parameter, it will be 'event' dependant
+ 				parameter :	Generic incoming Parameter, it will be 'event' dependant
+
+*******************************************************************************/
+int mmi_camera_test_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+{
+	T_MFW_WIN			* win_data = ((T_MFW_HDR *) win)->data;
+	T_MMI_CT_Win_data * data = (T_MMI_CT_Win_data *)win_data->user;
+
+	TRACE_EVENT ("mmi_camera_test_exec_cb()");
+	switch (event)
+	{
+	case CT_INIT:
+		TRACE_EVENT(">> mmi_camera_test_exec_cb(), CT_INIT ");
+		 camera_state = CAMERA_STATE_VIEWFINDER;
+		 //Create keyboard handler
+        	data->kbd = kbd_create (data->win,KEY_ALL,(T_MFW_CB)mmi_camera_test_kbd_cntrl);
+		winShow(data->win);
+		break;
+
+	case CT_RESUME:
+		break;
+
+	case CT_RETURN:
+		TRACE_EVENT(">> mmi_camera_test_exec_cb(), CT_RETURN ");
+		winShow(data->win);
+	  break;
+	default:
+		TRACE_EVENT(">> mmi_camera_test_exec_cb(), default ");
+	   
+	}
+	 return MFW_EVENT_CONSUMED;
+}
+
+
+/*******************************************************************************
+
+ $Function:     mmi_camera_dialog_cb
+
+ $Description: Callback for Dialog 
+
+ $Returns:None
+
+ $Arguments: 		win  - Window Handler
+ 				identifier - Identifier
+ 				reason 	-
+
+*******************************************************************************/
+void mmi_camera_dialog_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
+{
+  TRACE_FUNCTION ("mmi_camera_dialog_cb()");
+
+      switch (reason)
+      {
+        case INFO_TIMEOUT:
+          /* no break; */
+        case INFO_KCD_HUP:
+          /* no break; */
+        case INFO_KCD_LEFT:
+          /* no break; */
+        case INFO_KCD_RIGHT:
+          /* no break; */
+        case INFO_KCD_CLEAR:
+		if( digwin1)
+			dialog_info_destroy(digwin1);
+		digwin1 = NULL;
+		mmi_camera_test_update_softkeys(TxtSoftOptions,TxtSoftBack);
+		rvf_delay(40);
+//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg
+//replaced the flag with the function call, to migrate to the new Lcd APIs
+		dspl_control(DSPL_ACCESS_DISABLE);
+            	mfw_cam_set_viewfinder_mode();
+		break;
+      }
+}
+
+/*******************************************************************************
+
+ $Function:     mmi_camera_saving_info_cb
+
+ $Description: Callback for Dialog 
+
+ $Returns:None
+
+ $Arguments: 		win  - Window Handler
+ 				identifier - Identifier
+ 				reason 	-
+
+*******************************************************************************/
+void mmi_camera_saving_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
+{
+}
+
+/*******************************************************************************
+
+ $Function:		mmi_camera_test_kbd_cntrl
+
+ $Description:		Keyboard event handler for camera window
+
+ $Returns:		status int
+
+ $Arguments:		e		- window handle event
+ 				k		- keyboard control block
+*******************************************************************************/
+static int mmi_camera_test_kbd_cntrl (MfwEvt e, MfwKbd *k)
+{
+	T_MFW_HND	win  = mfwParent(mfw_header());
+	T_MFW_WIN			* win_data = ((T_MFW_HDR *) win)->data;
+	T_MMI_CT_Win_data * data = (T_MMI_CT_Win_data *)win_data->user;
+    
+    TRACE_EVENT  ("mmi_camera_test_kbd_cntrl()");
+	switch (k->code)
+	{
+
+		case KCD_LEFT:
+
+			 TRACE_EVENT  ("mmi_camera_test_kbd_cntrl() KCD_LEFT");
+			switch (camera_state)
+		    	{
+				case CAMERA_STATE_SNAPSHOT:
+					TRACE_EVENT  ("mmi_camera_test_kbd_cntrl()-CAMERA_STATE_SNAPSHOT");
+	       	    		//call MFW function to save snapshot
+					camera_state = CAMERA_STATE_SAVE;
+	       	    		if(mfw_cam_save_snapshot() == MFW_CAM_FAILED)	
+					{
+							//Display the error message
+							mmi_camera_test_show_info(win, TxtFailed, TxtNull, (T_VOID_FUNC)mmi_camera_dialog_cb);	
+							break;
+					}
+					//Display the Saving Dialog box	
+					digwin1 = mmi_camera_test_show_saving_info(win,(T_VOID_FUNC)mmi_camera_saving_info_cb);				
+					
+				break;
+
+				case CAMERA_STATE_VIEWFINDER:
+				TRACE_EVENT  ("mmi_camera_test_kbd_cntrl()-CAMERA_STATE_VIEWFINDER");
+			    		if(data)
+			    		{
+						//Disable sensor and display the Options window.
+						mfw_cam_disable_sensor();
+						rvf_delay(40); 		//Since MMI is not waiting the callback of disable camera, a delay is given.
+					//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg
+					//replaced the flag with the function call, to migrate to the new Lcd APIs
+						dspl_control(DSPL_ACCESS_ENABLE);
+						camera_state = CAMERA_STATE_CONFIGURE;
+						mmi_camera_test_opt_start(data->win,(MfwMnuAttr*)&Mmi_camera_OPTAttrib);
+					}
+					break;
+
+				case CAMERA_STATE_SAVE:
+					TRACE_EVENT  ("mmi_camera_test_kbd_cntrl()-CAMERA_STATE_SAVE");
+					mmi_camera_test_update_softkeys(TxtSoftOptions,TxtSoftBack);
+					mfw_cam_set_viewfinder_mode();
+					break;
+			   }
+     	       break;
+		case KCD_MNUSELECT:
+			switch (camera_state)
+			{
+				case CAMERA_STATE_VIEWFINDER:
+					TRACE_EVENT  ("mmi_camera_test_kbd_cntrl()-CAMERA_STATE_SNAPSHOT");
+					camera_state = CAMERA_STATE_SNAPSHOT;
+					//Take the Snapshot 
+					mfw_cam_take_snapshot();
+					//Display the softkeys for Snapshot
+					mmi_camera_test_update_softkeys(TxtSoftSnapSave,TxtSoftBack);
+					rvf_delay(40);
+				//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg
+				//replaced the flag with the function call, to migrate to the new Lcd APIs
+					dspl_control(DSPL_ACCESS_DISABLE);
+					break;
+		    }
+		   break;
+		case KCD_RIGHT:
+		case KCD_HUP:
+            	    TRACE_EVENT  ("mmi_camera_test_kbd_cntrl() Back");
+			switch (camera_state)
+		   	 {
+				case CAMERA_STATE_SNAPSHOT:					
+					TRACE_EVENT  ("mmi_camera_test_kbd_cntrl()-mfw_cam_set_viewfinder_mode snapshot");
+					camera_state = CAMERA_STATE_VIEWFINDER;
+					//Goback to the Viewfinder Mode
+					mmi_camera_test_update_softkeys(TxtSoftOptions,TxtSoftBack);
+					rvf_delay(40);
+					mfw_cam_set_viewfinder_mode();
+					break;
+
+				case CAMERA_STATE_SAVE:
+					TRACE_EVENT  ("mmi_camera_test_kbd_cntrl()-mfw_cam_set_viewfinder_mode save");
+					camera_state = CAMERA_STATE_VIEWFINDER;
+					//Goback to the Viewfinder Mode
+					mmi_camera_test_update_softkeys(TxtSoftOptions,TxtSoftBack);
+					mfw_cam_set_viewfinder_mode();
+				break;
+
+				case CAMERA_STATE_VIEWFINDER:	
+					TRACE_EVENT  ("mmi_camera_test_kbd_cntrl()-CAMERA_STATE_VIEWFINDER");
+					//Disable the Camera and goto the Application Menu
+					mfw_cam_disable_sensor();
+					rvf_delay(100);
+					camera_state = CAMERA_STATE_IDLE;
+				//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg
+				//replaced the flag with the function call, to migrate to the new Lcd APIs
+					dspl_control(DSPL_ACCESS_ENABLE);
+					if(data->win != NULL)
+					{
+					      winDelete (data->win);
+		       	          	mfwFree((void *)data, sizeof (T_MMI_CT_Win_data));
+					}
+				break;
+
+		    }
+	      break;
+
+		default:
+			
+			break;
+	}
+	return MFW_EVENT_CONSUMED;
+}
+
+
+/*******************************************************************************
+
+ $Function:		mmi_camera_test_win_cb
+
+ $Description:		This function is the windows callback function for the mmi camera Root window.
+ 				It has no display.
+
+ $Returns:		MFW_EVENT_CONSUMED 
+
+ $Arguments:		event		- window handle event
+ 				win			- Camera window
+
+*******************************************************************************/
+int mmi_camera_test_win_cb (MfwEvt evt, MfwHnd win)
+{
+	T_MFW_WIN	*win_data = ((T_MFW_HDR *)win)->data;
+	T_MMI_CT_Win_data	*data = (T_MMI_CT_Win_data *)win_data->user;
+
+	TRACE_EVENT("mmi_camera_test_win_cb()");
+	switch (evt)
+	{
+	case MfwWinVisible:  /* window is visible  */	    
+
+		TRACE_EVENT("mmi_camera_test_win_cb()---MfwWinVisible");
+       	if(camera_state == CAMERA_STATE_IDLE || camera_state == CAMERA_STATE_VIEWFINDER )
+               	{
+         
+				mmi_camera_test_update_softkeys(TxtSoftOptions,TxtSoftBack);
+				rvf_delay(40);
+				mfw_cam_launch_viewfinder_dma();
+               	}
+		break;
+
+	// Post the SUSPEND event
+	case MfwWinSuspend:  /* window is suspended  */
+
+		TRACE_EVENT("mmi_camera_test_win_cb()-suspend");
+		break;
+
+	// Post the RESUME event
+	case MfwWinResume: 	/* window is resumed */
+		TRACE_EVENT("mmi_camera_test_win_cb()-resume");
+		camera_state = CAMERA_STATE_VIEWFINDER;
+		break;
+
+	case MfwWinFocussed: /* input focus / selected   */	
+		TRACE_EVENT("mmi_camera_test_win_cb()-MfwWinFocussed");
+	case MfwWinDelete:   /* window will be deleted   */        
+			default:
+	return MFW_EVENT_REJECTED;
+	}
+	return MFW_EVENT_CONSUMED;
+}
+
+
+
+/*******************************************************************************
+
+ $Function:		mmi_camera_test_win_create
+
+ $Description:		This function performs the necessary steps to create the a window to handle the
+ 				viewfinder related softkeys and the viewfinder bitmaps. It will be removed, 
+ 				or rather remove itself on returning the data to the Mfw.
+
+ $Returns:		T_MFW_HND : Window Handle to the New Window, Null if failed.
+
+ $Arguments:		parent : pointer to the parent window.
+ 
+*******************************************************************************/
+T_MFW_HND mmi_camera_test_win_create(T_MFW_HND parent)
+{
+	T_MMI_CT_Win_data *data;
+	T_MFW_WIN * win;
+
+    TRACE_EVENT ("mmi_camera_test_win_create()");
+
+	data = (T_MMI_CT_Win_data *)mfwAlloc((U16)sizeof(T_MMI_CT_Win_data));
+
+	data->win = winCreate(parent, 0, E_WIN_VISIBLE|MfwWinSuspend|MfwWinResume, mmi_camera_test_win_cb);
+
+	if (data->win == NULL)
+		{
+	    	/*
+	    	** Failed to start : Free Memory, and exit
+		    */
+	    	mfwFree((U8 *)data, (U16)sizeof(T_MMI_CT_Win_data));
+		data = NULL;
+	    	return data;
+		}
+    	else
+		{
+	
+       	    /*
+	    	** Setup the Dialog control functions
+		    */
+		data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_camera_test_exec_cb;
+		    data->mmi_control.data = data;
+		    win = ((T_MFW_HDR *)data->win)->data;
+	    	win->user = (void *)data;
+		    //initialize bitmap data
+	        data->ct_bitmap.area.px 	= 	0;
+		    data->ct_bitmap.area.py 	= 	0;
+	    	data->ct_bitmap.area.sx 	=   175;
+		    data->ct_bitmap.area.sy 	=   220;
+	        data->ct_bitmap.icnType = BMP_FORMAT_16BIT_LCD_COLOUR;
+		    data->ct_bitmap.iconCol = COLOUR_ICON_XX;		 
+                 scrDrawFilledRect ( data->ct_bitmap.area.px, data->ct_bitmap.area.py, data->ct_bitmap.area.sx, data->ct_bitmap.area.sy, dspl_GetBgdColour() );
+	    //define softkeys
+	    displaySoftKeys(TxtSoftOptions,TxtSoftBack);
+          dspl_Enable(1);
+	  if(IsCamInit == FALSE)
+		{
+			TRACE_EVENT("Initialising Camil");
+			 mfw_cam_init();
+			 IsCamInit = TRUE;
+		}
+		}
+	
+	return data->win;
+
+}
+
+/*******************************************************************************
+
+ $Function:     mmi_camera_test_start
+
+ $Description:  create a new camera dialog
+ 				
+ $Returns:    Dialogue info win
+
+ $Arguments:  parent win, display info
+
+*******************************************************************************/
+T_MFW_HND mmi_camera_test_start (T_MFW_HND  parent_win)
+{
+  T_MFW_HND win;
+	TRACE_FUNCTION("mmi_camera_test_start()");
+	
+    win = mmi_camera_test_win_create(parent_win);
+   if (win NEQ NULL)
+        {
+	    SEND_EVENT (win, CT_INIT, NULL, NULL);
+	}
+
+   return win;
+}
+
+/*******************************************************************************
+
+ $Function:     mmi_camera_test_launch_view_finder
+
+ $Description:  	Create the window which is going to have
+ 				 the viewfinder bitmaps displayed on top of it.
+
+ $Returns:		Always returns MFW_EVENT_CONSUMED (1)
+
+ $Arguments:		m : pointer to the mnu data for the menu which caused this function to be called.
+ 				i   : pointer to the item data from the menu.
+
+*******************************************************************************/
+GLOBAL int  mmi_camera_test_launch_view_finder (MfwMnu* m, MfwMnuItem* i)
+			{
+
+   T_MFW_HND win = mfw_parent(mfw_header());
+
+   TRACE_EVENT("mmi_camera_test_launch_view_finder()");
+   mmi_camera_test_start(win);
+
+	return MFW_EVENT_CONSUMED;
+}
+
+
+/*******************************************************************************
+
+ $Function:    	mmi_camera_test_opt_start
+
+ $Description:		called when the user press  the Option menu in Camera Window
+ 				
+ $Returns:		T_MFW_HND : Window Handle to the New Window, Null if failed.
+
+ $Arguments:	parent_window -parent window handle
+ 				menuAttr - Menu attributes.
+
+*******************************************************************************/
+
+T_MFW_HND mmi_camera_test_opt_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr)
+{
+    T_MFW_HND win;
+
+    TRACE_FUNCTION ("mmi_camera_test_opt_start()");
+
+    optwin = (T_MFW_HND)mmi_camera_test_opt_create (parent_window);
+
+    if (optwin NEQ NULL)
+        {
+	    SEND_EVENT (optwin, CT_INIT, NULL, (void *)menuAttr);
+	}
+    return win;
+	}
+
+/*******************************************************************************
+
+ $Function:		mmi_camera_test_opt_win_create
+
+ $Description:		This function performs the necessary steps to create the a window .
+
+ $Returns:		T_MFW_HND : Window Handle to the New Window, Null if failed.
+
+ $Arguments:		parent : pointer to the parent window.
+
+*******************************************************************************/
+T_MFW_HND mmi_camera_test_opt_create(T_MFW_HND parent)
+		{
+	 T_MMI_CT_Opt_data      * data = (T_MMI_CT_Opt_data *)ALLOC_MEMORY (sizeof (T_MMI_CT_Opt_data));
+    T_MFW_WIN  * win;
+
+    TRACE_FUNCTION ("mmi_camera_test_opt_create()");
+
+	    	/*
+     * Create window handler
+		    */
+
+    data->win = 
+	win_create (parent, 0, E_WIN_VISIBLE, (T_MFW_CB)mmi_camera_test_opt_win_cb);
+    if (data->win EQ NULL)
+				{
+	    return NULL;
+	}
+       	    /*
+     * connect the dialog data to the MFW-window
+		    */
+
+    data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_camera_test_opt_exec_cb;
+		    data->mmi_control.data = data;
+		    win = ((T_MFW_HDR *)data->win)->data;
+	    	win->user = (void *)data;
+    data->parent             = parent;
+
+		    /*
+     * return window handle
+		    */
+	
+    return data->win;
+	}
+
+/*******************************************************************************
+
+ $Function:		mmi_camera_test_opt_win_cb
+
+ $Description:		This function is the windows callback function for the mmi camera option window.
+
+ $Returns:		MFW_EVENT_CONSUMED 
+
+ $Arguments:		event		- window handle event
+ 				win			- Camera window
+
+*******************************************************************************/
+int mmi_camera_test_opt_win_cb (MfwEvt evt, MfwHnd win)
+{
+   TRACE_EVENT("mmi_camera_test_opt_win_cb()");
+    switch (evt)
+				{
+        case MfwWinVisible:  /* window is visible  */
+	    displaySoftKeys(TxtSoftSelect,TxtSoftBack);
+	    break;
+	case MfwWinFocussed: /* input focus / selected   */
+	case MfwWinDelete:   /* window will be deleted   */
+        default:
+	    return MFW_EVENT_REJECTED;
+				}
+    return MFW_EVENT_CONSUMED;
+
+		    }
+
+/*******************************************************************************
+
+ $Function:		mmi_camera_test_opt_exec_cb
+
+ $Description:		This is the dialog control function for the Camera Option Window. It
+ 				receives the signals from the MFW and determines what action, if any, to take.
+
+ $Returns:		None
+
+ $Arguments:		win :		The pointer to the window handler, so the function can reference the
+							dynamic user data, if any.
+ 				event :		The incoming event
+ 				value :		Generic incoming Parameter, it will be 'event' dependant
+ 				parameter :	Generic incoming Parameter, it will be 'event' dependant
+
+*******************************************************************************/
+void mmi_camera_test_opt_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+{
+    T_MFW_WIN        * win_data = ((T_MFW_HDR *) win)->data;
+    T_MMI_CT_Opt_data  * data     = (T_MMI_CT_Opt_data *)win_data->user;
+     TRACE_FUNCTION ("mmi_camera_test_opt_exec_cb()");
+    switch (event)
+			   {
+	case CT_INIT:
+		TRACE_EVENT(">> mmi_camera_test_opt_exec_cb(), CT_INIT ");
+		/* initialization of administrative data */
+		data->id = value;
+
+			data->kbd =      kbdCreate(data->win,KEY_ALL,         (MfwCb)mmi_camera_test_opt_kbd_cb);
+			data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)mmi_camera_test_opt_kbd_cb);
+			data->menu =     mnuCreate(data->win,(MfwMnuAttr *)&Mmi_camera_OPTAttrib, E_MNU_ESCAPE, (MfwCb)mmi_camera_test_opt_mnu_cb);
+			mnuLang(data->menu,mainMmiLng);
+
+			/* put the (new) dialog window on top of the window stack */
+			mnuUnhide(data->menu);
+			winShow(data->win);
+			break;
+
+	case CT_RETURN:
+		TRACE_EVENT(">> mmi_camera_test_opt_exec_cb(), CT_RETURN ");
+		mmi_camera_test_opt_destroy(optwin);
+		mmi_camera_test_update_softkeys(TxtSoftOptions,TxtSoftBack);
+ 		mfw_cam_launch_viewfinder_dma();
+	      break;
+
+		default:
+	    return;
+	}
+}
+
+/*******************************************************************************
+
+ $Function:    	mmi_camera_test_opt_kbd_cb
+
+ $Description:		Keyboard event handler for camera  Option window
+
+ $Returns:		execution status
+
+ $Arguments:	e - event id
+ 				k - keyboard info
+*******************************************************************************/
+ 
+static int mmi_camera_test_opt_kbd_cb (MfwEvt e, MfwKbd *k)
+ {
+    T_MFW_HND    win  = mfwParent(mfw_header());
+    T_MFW_WIN  * win_data = ((T_MFW_HDR *)win)->data;
+    T_MMI_CT_Opt_data      * data = (T_MMI_CT_Opt_data *)win_data->user;
+
+    TRACE_FUNCTION ("mmi_camera_test_opt_kbd_cb()");
+
+    if (e & KEY_LONG)
+	{
+	    switch (k->code)
+		{
+		case KCD_HUP: /* back to previous menu */
+		    mnuEscape(data->menu);
+		    break;
+		case KCD_RIGHT: /* Power Down */
+		    return MFW_EVENT_REJECTED; /* handled by idle */
+		default: /* no response to all other keys */
+		    return MFW_EVENT_CONSUMED;
+		}
+	}
+    else
+	{
+	switch (k->code)
+	{
+		case KCD_MNUUP: /* highlight previous entry */
+		    mnuUp(data->menu);
+		    break;
+		case KCD_MNUDOWN: /* highlight next entry */
+		    mnuDown(data->menu);
+		    break;
+		case KCD_MNUSELECT:
+		case KCD_LEFT: /* activate this entry */
+		    mnuSelect(data->menu);
+		    break;
+		case KCD_HUP: /* back to previous menu */
+		case KCD_RIGHT: /* back to previous menu */
+		    mnuEscape(data->menu);
+				break;
+		default: /* no response to all other keys */
+		    return MFW_EVENT_CONSUMED;
+		}
+	}
+	return MFW_EVENT_CONSUMED;
+}
+
+/*******************************************************************************
+
+ $Function:    	mmi_camera_test_opt_mnu_cb
+
+ $Description:	Menu callback function for the Option window
+
+ $Returns:		Execution status
+
+ $Arguments:	e - event id
+ 				m - menu handle
+*******************************************************************************/
+
+static int mmi_camera_test_opt_mnu_cb (MfwEvt e, MfwMnu *m)
+{
+    T_MFW_HND    win  = mfwParent(mfw_header());
+    T_MFW_WIN  * win_data = ((T_MFW_HDR *)win)->data;
+    T_MMI_CT_Opt_data      * data = (T_MMI_CT_Opt_data *)win_data->user;
+  
+    TRACE_FUNCTION ("mmi_camera_test_opt_mnu_cb()");
+
+    switch (e)
+	{
+	case E_MNU_ESCAPE: /* back to previous menu */
+		TRACE_EVENT("E_MNU_ESCAPE");
+		SEND_EVENT (optwin, CT_RETURN, data->id, NULL);
+		camera_state = CAMERA_STATE_VIEWFINDER;
+			break;
+	default: /* in mnuCreate() only E_MNU_ESCAPE has been enabled! */
+	    return MFW_EVENT_REJECTED;
+	}
+	return MFW_EVENT_CONSUMED;
+}
+
+/*******************************************************************************
+
+ $Function:    	mmi_camera_test_opt_destroy
+
+ $Description:		Destroy the Camera Option window
+ 				
+ $Returns:		mfw window handle
+
+ $Arguments:	own_window - current window
+
+*******************************************************************************/
+
+static void mmi_camera_test_opt_destroy(MfwHnd own_window)
+{
+    T_MFW_WIN * win_data;
+    T_MMI_CT_Opt_data     * data;
+
+    TRACE_FUNCTION ("mmi_camera_test_opt_destroy()");
+
+    if (own_window)
+	{
+	    win_data = ((T_MFW_HDR *)own_window)->data;
+	    data = (T_MMI_CT_Opt_data *)win_data->user;
+
+	    if (data)
+		{
+
+		   /*
+		** Failed to start : Free Memory, and exit
+		*/
+
+		if(data->kbd != NULL)
+				{
+		           kbdDelete (data->kbd);
+				}
+
+		if(data->kbd_long!= NULL)
+				{
+		   kbdDelete (data->kbd_long);
+				}
+
+		if(data->menu!= NULL)
+      		{
+		   mnuDelete(data->menu);
+		    }
+
+		     // Delete WIN handler
+		     
+			   win_delete (data->win);
+
+		     // Free Memory
+		  
+		    FREE_MEMORY ((void *)data, sizeof (T_MMI_CT_Opt_data));
+	}
+	else
+			   {
+		    TRACE_EVENT ("mmi_camera_test_opt_destroy() called twice");
+               }
+		    }
+}
+
+/*******************************************************************************
+
+ $Function:     		mmi_camera_test_set_quality
+
+ $Description:  	Set the Quality factor for the image to be saved.
+
+ $Returns:		Always returns MFW_EVENT_CONSUMED (1)
+
+ $Arguments:		m : pointer to the mnu data for the menu which caused this function to be called.
+ 				i   : pointer to the item data from the menu.
+
+*******************************************************************************/
+GLOBAL int mmi_camera_test_set_quality (MfwMnu* m, MfwMnuItem* i)
+{
+   int txtId = TxtStandard;
+   UBYTE qfactor;
+	TRACE_FUNCTION ("mmi_camera_test_set_quality()");
+ switch (m->lCursor[m->level])
+	{
+	case 0:
+		txtId = TxtEconomy;
+		qfactor = QUALITY_ECONOMY;
+
+		break;
+	case 1:
+		txtId = TxtStandard;
+		qfactor = QUALITY_STANDARD;
+		break;
+	case 2:
+		txtId = TxtHigh;
+		qfactor = QUALITY_HIGH;
+		break;
+		
+		default:
+		txtId = TxtStandard;
+		qfactor = QUALITY_STANDARD;
+		break;
+
+	}
+	//Set the Quality Factor.
+ mfw_cam_set_quality_factor(qfactor);
+	//Display the dialgbox to the user.
+ mmi_camera_test_show_info(0, txtId,TxtNull,NULL);
+	return MFW_EVENT_CONSUMED;
+}
+
+/*******************************************************************************
+
+ $Function:     		mmi_camera_test_set_color
+
+ $Description:  	Set the Color for the Viewfinder
+
+ $Returns:		 Always returns MFW_EVENT_CONSUMED (1)
+
+ $Arguments:		m : pointer to the mnu data for the menu which caused this function to be called.
+ 				i   : pointer to the item data from the menu.
+
+*******************************************************************************/
+GLOBAL int mmi_camera_test_set_color (MfwMnu* m, MfwMnuItem* i)
+{
+   int txtId;
+   UBYTE blackandwhite;
+	TRACE_FUNCTION ("mmi_camera_test_set_color()");
+ switch (m->lCursor[m->level])
+		{
+	case 0:
+		txtId = TxtColor;
+		blackandwhite = FALSE;
+		break;
+	case 1:
+		txtId = TxtSepia;
+		blackandwhite = FALSE;
+		break;
+	case 2:
+		txtId = TxtBlackandWhite;
+		blackandwhite = TRUE;
+		break;
+	case 3:
+		txtId = TxtNegative;
+		blackandwhite = FALSE;
+		break;
+
+		}
+mfw_cam_set_viewfinder_param_color(blackandwhite);
+ mmi_camera_test_show_info(0, txtId,TxtNull,NULL);
+	return   MFW_EVENT_CONSUMED;
+}
+
+
+/*******************************************************************************
+
+  $Function:	  M_exeQuality
+
+  $Description:	  This function is called when the user press "Quality"  in the
+				  Camera Options screen.This function creates and displays the 
+				  Quality menu in  the option screen.
+
+  $Returns:		  Execution status
+
+  $Arguments:	  m - menu handler
+				  i - Menu item selected
+ 
+*******************************************************************************/
+
+ int M_exeQuality(MfwMnu* m, MfwMnuItem* i)
+{
+
+    T_MFW_HND       win  = mfwParent(mfw_header());
+    T_MFW_WIN     * win_data = ((T_MFW_HDR *)win)->data;
+    T_MMI_CT_Opt_data * data = (T_MMI_CT_Opt_data *)win_data->user;
+	TRACE_FUNCTION("M_exeQuality");
+
+	bookMenuStart(data->win, qualityMenuAttributes(),0);
+	return   MFW_EVENT_CONSUMED;
+
+}
+
+/*******************************************************************************
+
+  $Function:	  M_exeColor
+
+  $Description:	  This function is called when the user press "Color"  in the
+				  Camera Options screen.This function creates and displays the 
+				  Color menu in  the option screen.
+
+  $Returns:		  Execution status
+
+  $Arguments:	  m - menu handler
+				  i - Menu item selected
+
+*******************************************************************************/
+	
+ int M_exeColor(MfwMnu* m, MfwMnuItem* i)
+	{
+    T_MFW_HND       win  = mfwParent(mfw_header());
+    T_MFW_WIN     * win_data = ((T_MFW_HDR *)win)->data;
+    T_MMI_CT_Opt_data * data = (T_MMI_CT_Opt_data *)win_data->user;
+	TRACE_FUNCTION("M_exeColor");
+
+	bookMenuStart(data->win, colorMenuAttributes(),0);
+	return MFW_EVENT_CONSUMED;
+}
+
+/*******************************************************************************
+
+  $Function:	  M_exeZoom
+
+  $Description:	  This function is called when the user press "Zoom"  in the
+				  Camera Options screen.This function creates and displays the 
+				  Zoom menu in  the option screen.
+	
+  $Returns:		  Execution status
+	  
+  $Arguments:	  m - menu handler
+				  i - Menu item selected
+		
+*******************************************************************************/
+
+ int M_exeZoom(MfwMnu* m, MfwMnuItem* i)
+{
+	int txtId = TxtDigiZoom;
+	TRACE_FUNCTION("M_exeZoom");
+	mfw_cam_set_viewfinder_param_zoom(TRUE);
+	mmi_camera_test_show_info(0, txtId,TxtNull,NULL);
+	return   MFW_EVENT_CONSUMED;
+}
+
+/*******************************************************************************
+
+ $Function:		mmi_filename_editor_cb
+
+ $Description:		This function provides the callback functionality to the editor to rename the
+ 				default jpeg filename.
+
+ $Returns:		None
+
+ $Arguments:	
+
+*******************************************************************************/
+static void mmi_filename_editor_cb(T_MFW_HND win, USHORT identifier, SHORT reason)
+{
+	T_MFW_WIN		* win_data = ((T_MFW_HDR *) win)->data;
+	T_CT_Editor_Data* dev_name_data = (T_CT_Editor_Data *)win_data->user;
+	UBYTE			* editor_buffer = NULL;
+	SHORT			max_edit_size = 0;
+	T_MFW_HND		editor_win;
+	T_MFW_HND		parent;
+
+    TRACE_FUNCTION ("mmi_filename_editor_cb()");
+
+		editor_buffer = dev_name_data->ct_buffer;
+		max_edit_size =CT_FILENAME_EDITOR_INPUT_LEN;
+		editor_win = dev_name_data->ct_win_editor;
+		parent = dev_name_data->win;
+
+	switch (reason)
+	{
+		case INFO_KCD_LEFT:
+		{	
+			/*
+			** If there is no string entered, treat this as if it was a "Cancel"
+			*/
+			if (editor_buffer[0] == NULL)
+			{
+				/*
+				** Send a "Cancel" to the  window
+				*/
+				SEND_EVENT(parent, CT_EDITOR_CANCEL, identifier, NULL);
+			}
+			else
+	{
+				//If the file extn is not jpg, send cancel event
+					/*
+					** Send a "Select" to the  window
+					*/
+					SEND_EVENT(parent, CT_EDITOR_SELECT, identifier, NULL);
+			}
+		}
+			break;
+
+		case INFO_KCD_RIGHT:
+			if (strlen((char *)editor_buffer) == NULL)
+			{
+
+				/*
+				** Send a "Cancel" to the  window
+				*/
+				SEND_EVENT(parent, CT_EDITOR_CANCEL, identifier, NULL);
+	}
+			break;
+
+		case INFO_KCD_HUP:
+			/*
+			** Set the buffer to NULLS
+			*/
+			memset(editor_buffer, 0x00, max_edit_size);
+
+			/*
+			** Send a "Cancel" to the   window
+			*/
+			SEND_EVENT(parent, CT_EDITOR_CANCEL, identifier, NULL);
+			break;
+
+		default:
+			/* otherwise no action to be performed
+			*/
+			break;
+	}
+}
+
+
+/*******************************************************************************
+
+ $Function:		mmi_camera_test_update_softkeys
+
+ $Description:		This function updates only the softkeys region.
+ 				
+ $Returns:		None
+
+ $Arguments:		None
+
+*******************************************************************************/
+void mmi_camera_test_update_softkeys (int lsk, int rsk)
+{
+	TRACE_EVENT("mmi_camera_test_update_softkeys");
+	dspl_SetBgdColour(COL_White);
+	dspl_ClearAll();
+	displaySoftKeys(lsk,rsk);
+//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg
+//replaced the flag with the function call, to migrate to the new Lcd APIs
+	dspl_control(DSPL_ACCESS_ENABLE);
+	dspl_Enable(1);
+}
+
+/*******************************************************************************
+
+ $Function:    	mmi_camera_editor_destroy
+
+ $Description:	Destroy the  filename editor window
+
+ $Returns:		mfw window handle
+
+ $Arguments:	own_window - current window
+
+*******************************************************************************/
+MfwRes mmi_camera_editor_destroy(T_MFW_HND win)
+	{
+	T_MFW_WIN * win_data;
+	T_CT_Editor_Data * data;
+			
+	TRACE_FUNCTION ("mmi_camera_editor_destroy");
+	if (win == NULL)
+		return MfwResIllHnd;
+
+	win_data = ((T_MFW_HDR *) win)->data;
+	data = (T_CT_Editor_Data *)win_data->user;
+
+		/*
+	** Destroy the Window
+		*/
+	win_delete(data->win);
+
+       	/*
+	** Free the dynamically allocated memory
+		*/
+	mfwFree((U8 *)data, (U16)sizeof(T_CT_Editor_Data));
+
+	return MfwResOk;
+}
+
+/*******************************************************************************
+
+ $Function:    	mmi_camera_editor_cntrl
+
+ $Description:	Exec callback function for the edit filename window
+
+ $Returns:		none
+
+ $Arguments:	win - current window
+ 				event - event id
+ 				value - unique id
+ 				parameter - optional data.
+ 			
+*******************************************************************************/
+void mmi_camera_editor_cntrl (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+		{
+	T_MFW_WIN			* win_data = ((T_MFW_HDR *) win)->data;
+	T_CT_Editor_Data * data = (T_CT_Editor_Data *)win_data->user;
+	T_AUI_EDITOR_DATA	editor_data;
+
+	TRACE_FUNCTION ("mmi_camera_editor_cntrl");
+	
+	switch (event)
+		{
+		case CT_INIT:
+#ifdef NEW_EDITOR
+                      //Clear the editor buffer
+			memset(&editor_data,'\0',sizeof(editor_data));
+			// copy the default name in the editor buffer
+			strcpy((char *)data->ct_buffer,CT_DEFAULT_FILENAME);
+			
+			/*
+			** Initialise the editor
+			*/
+			AUI_edit_SetDefault(&editor_data);
+			AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, data->ct_buffer, CT_FILE_NAME_LENGTH);
+			AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtDelete, TxtFilename, NULL);
+			AUI_edit_SetAltTextStr(&editor_data, 1, TxtNull, TRUE, TxtSoftBack);
+			AUI_edit_SetEvents(&editor_data, 0, TRUE, FOREVER, (T_AUI_EDIT_CB)mmi_filename_editor_cb);
+			data->ct_win_editor = AUI_edit_Start(data->win, &editor_data);
+#endif
+			break;
+
+		case CT_EDITOR_CANCEL:
+			/*
+			** The editor will be destroyed. Reset the Window handler
+			*/
+			data->ct_win_editor = NULL;
+
+			/*
+			** Destroy the editor Window
+			*/
+			TRACE_FUNCTION ("mmi_camera_editor_cntrl CT_EDITOR_CANCEL");
+			mmi_camera_editor_destroy(data->win);
+			SEND_EVENT (optwin, CT_RETURN, NULL, NULL);
+		       camera_state = CAMERA_STATE_VIEWFINDER;
+			break;
+
+		case CT_EDITOR_SELECT:
+			//copy the file name from the editor
+			strcpy(new_filename,(char *)data->ct_buffer);
+			mmi_camera_editor_destroy(data->win);
+			SEND_EVENT (optwin, CT_RETURN, NULL, NULL);
+			camera_state = CAMERA_STATE_VIEWFINDER;
+			break;
+
+		default:
+			TRACE_FUNCTION ("mmi_camera_editor_cntrl(), Unexpected Event!"); 
+			break;
+	}
+
+
+}
+
+/*******************************************************************************
+
+ $Function:     mmi_camera_edit_filename
+
+ $Description:  	This function is called when the user press Filename in the option menu .
+
+ $Returns:    Execution status
+
+ $Arguments:  m - menu handler
+        i - Menu item selected
+
+*******************************************************************************/
+GLOBAL int mmi_camera_edit_filename(MfwMnu* m, MfwMnuItem* i)
+{
+	T_MFW_HND win = mfw_parent(mfw_header());
+	T_MFW_WIN		* win_data = ((T_MFW_HDR *) win)->data;
+	T_CT_Editor_Data * data = (T_CT_Editor_Data *)(win_data->user);
+
+    TRACE_FUNCTION ("mmi_camera_edit_filename()");
+
+	data->ct_win_editor = (MfwHnd)mmi_camera_editor_create(win);
+
+	if (data->ct_win_editor != NULL)
+	{
+	    SEND_EVENT(data->ct_win_editor, CT_INIT, 0, NULL);
+	}
+	else
+	{
+	    TRACE_FUNCTION ("mmi_camera_edit_filename() : Unable to create Editor Win!");
+	}
+	return MFW_EVENT_CONSUMED;
+}
+
+/*******************************************************************************
+
+ $Function:    	mmi_camera_editor_create
+
+ $Description:		Create a window for editing the image file name to be saved.
+
+ $Returns:		window handle
+
+ $Arguments:	parent - parent window.
+
+*******************************************************************************/
+
+
+T_MFW_HND mmi_camera_editor_create(T_MFW_HND parent)
+{
+	T_CT_Editor_Data *data;
+	T_MFW_WIN * win;
+
+	TRACE_FUNCTION ("mmi_camera_editor_create");
+
+	data = (T_CT_Editor_Data *)mfwAlloc((U16)sizeof(T_CT_Editor_Data));
+
+	if (data == NULL)
+		return data;
+
+	data->win = winCreate(parent, 0, E_WIN_VISIBLE, NULL);
+
+	if (data->win == NULL)
+	{
+		/*
+		** Failed to start : Free Memory, and exit
+		*/
+		mfwFree((U8 *)data, (U16)sizeof(T_CT_Editor_Data));
+		data = NULL;
+		return data;
+	}
+	else
+	{
+		/*
+		** Setup the Dialog control functions
+		*/
+		data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_camera_editor_cntrl;
+		data->mmi_control.data = data;
+
+		win = ((T_MFW_HDR *)data->win)->data;
+		win->user = (void *)data;
+}
+
+	return data->win;
+
+}
+
+/*******************************************************************************
+
+ $Function:    	display_saved_image
+
+ $Description:	Displays the Dialog to show the status of save image
+
+ $Returns:		None
+
+ $Arguments:	res - Status of Save Image
+
+*******************************************************************************/
+
+ void display_saved_image(BOOL res)
+ 	{
+
+		if(call_data.win)
+		{
+			dialog_info_destroy(digwin1);
+			digwin1 = NULL;
+			return;
+		}
+	//Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg
+	//replaced the flag with the function call, to migrate to the new Lcd APIs
+		dspl_control(DSPL_ACCESS_ENABLE);
+		dspl_Clear(0,0,SCREEN_SIZE_X-1,SCREEN_SIZE_Y-1 );
+		if( res)
+			mmi_camera_test_show_info(digwin1, TxtSaved, TxtNull,(T_VOID_FUNC) mmi_camera_dialog_cb);	
+		else
+			mmi_camera_test_show_info(digwin1, TxtFailed, TxtNull,(T_VOID_FUNC) mmi_camera_dialog_cb);
+ 	}
+
+