diff src/ui3/bmi/AUISymbol.c @ 420:e8ddbb0837ed

src/ui3: initial import of TCS3/LoCosto BMI & MFW code
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 21 Jan 2018 03:09:00 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ui3/bmi/AUISymbol.c	Sun Jan 21 03:09:00 2018 +0000
@@ -0,0 +1,469 @@
+/*******************************************************************************
+
+					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                                                            
+ $Module:		MMI
+ $File:		    AUISymbol.c
+ $Revision:		1.0                                                       
+                                                                              
+ $Author:		Condat(UK)                                                         
+ $Date:		                                                         
+                                                                               
+********************************************************************************
+                                                                              
+ Description: Symbol screen for AUI editor
+
+  
+
+********************************************************************************
+
+ $History: AUISymbol.c
+
+	Mar 23, 2005  REF: CRR 28490  xnkulkar
+	Description:  Golite- 5-way navigation behaves wrongly while selecting special characters 
+			   in the text editor screen.The background screen goes blank when the special 
+			   characters screen comes up.
+	Solution:   Commented 'dspl_ClearAll()' to make the behaviour consistent with normal variant. 
+
+	   
+ $End
+  // Issue Number : SPR#12817 on 26/03/04 by Deepa M.D.
+
+*******************************************************************************/
+
+/* includes */
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#if defined (NEW_FRAME)
+
+#include "typedefs.h"
+#include "vsi.h"
+#include "pei.h"
+#include "custom.h"
+#include "gsm.h"
+
+#else
+
+#include "STDDEFS.H"
+#include "custom.h"
+#include "gsm.h"
+#include "vsi.h"
+
+#endif
+
+#include "mfw_mfw.h"
+#include "mfw_win.h"
+#include "mfw_kbd.h"
+#include "mfw_tim.h"
+#include "mfw_phb.h"
+#include "mfw_sms.h"
+#include "mfw_ss.h"
+#include "mfw_icn.h"
+#include "mfw_mnu.h"
+#include "mfw_lng.h"
+#include "mfw_sat.h"
+#include "mfw_kbd.h"
+#include "mfw_nm.h"
+#include "mfw_cm.h"
+
+#include "dspl.h"
+
+#include "ksd.h"
+#include "psa.h"
+
+#include "MmiDummy.h"
+#include "MmiMmi.h"
+
+#include "MmiDialogs.h"
+#include "MmiLists.h"
+#include "MmiMenu.h"
+#include "MmiSoftKeys.h"
+#include "MmiIdle.h"
+
+#include "cus_aci.h"
+#include "prim.h"
+#ifndef PCM_2_FFS
+#include "pcm.h"
+#endif
+
+
+#include "mmiColours.h"
+
+#include "ATBCommon.h"
+#include "ATBDisplay.h"
+#include "ATBEditor.h"
+#include "AUIEditor.h"
+
+
+//data structure for punctuation symbols selection screen
+typedef struct
+{
+    T_MMI_CONTROL		mmi_control;
+    T_MFW_HND			parent;
+    T_MFW_HND			win;
+    T_ED_DATA			*editor;
+    T_MFW_HND			kbd;
+
+    T_AUI_EDITOR_DATA	editor_data;
+    USHORT				cursor_position;
+    USHORT	 			output_symbol;
+    USHORT				return_event;
+}
+T_AUI_SYMBOL_INFO;
+
+//events in main editor screen
+typedef enum
+{
+	EDITOR_INIT,
+	EDITOR_DEINIT,
+	EDITOR_UPDATE
+} T_SYMBOL_EVENTS;
+
+/*********************************************************************
+**********************************************************************
+
+DYNAMIC EDITOR WINDOW. DECLARATION
+
+*********************************************************************
+**********************************************************************/
+
+
+/* Local function protoypes */
+
+static T_MFW_HND AUI_symbol_Create (T_MFW_HND  parent);
+static int AUI_symbol_WinCb (T_MFW_EVENT event, T_MFW_WIN * win);
+static int AUI_symbol_KbdCb (T_MFW_EVENT event, T_MFW_KBD *keyboard);
+static void AUI_symbol_ExecCb (T_MFW_HND win, USHORT event, USHORT value, void * symbol);
+
+
+/*******************************************************************************
+
+ $Function:    	AUI_symbol_Destroy
+
+ $Description:	Destroy thesymbol screen
+ 
+ $Returns:		None.
+
+ $Arguments:	window handle
+ 
+*******************************************************************************/
+
+void AUI_symbol_Destroy (T_MFW_HND window)
+{
+    T_MFW_WIN			*win	= ((T_MFW_HDR *)window)->data;
+    T_AUI_SYMBOL_INFO	*data	= (T_AUI_SYMBOL_INFO *)win->user;
+
+    TRACE_FUNCTION ("AUI_symbol_Destroy()");
+
+    /* Send character to editor window */
+    
+	SEND_EVENT (data->parent, data->return_event, (SHORT)data->output_symbol, NULL); 
+    
+    if (data)
+	{   /*SPR 2520, need to destroy ATB editor*/ 
+		ATB_edit_Destroy( data->editor);
+		
+		/* Delete WIN Handler */
+		win_delete (data->win);
+
+        /* Free Memory */
+		FREE_MEMORY ((void *)data, sizeof (T_AUI_SYMBOL_INFO));
+	}
+    else
+    {
+		TRACE_EVENT ("AUI_symbol_Destroy() called twice");
+		return ;
+	}
+}
+
+
+/*******************************************************************************
+
+ $Function:    	AUI_symbol_Start
+
+ $Description:	Starts the symbol screen
+ 
+ $Returns:		handle
+
+ $Arguments:	parent window, editor data
+ 
+*******************************************************************************/
+T_MFW_HND AUI_symbol_Start (T_MFW_HND parent, USHORT return_event)
+{
+    T_MFW_HND win;
+  
+
+    TRACE_FUNCTION ("AUI_symbol_Start()");
+
+    win = AUI_symbol_Create (parent);
+	
+    if (win NEQ NULL)
+	{
+	    SEND_EVENT (win, EDITOR_INIT, return_event, 0);
+	}
+    return win;
+}
+
+
+/*******************************************************************************
+
+ $Function:    	LatinEditorcreate
+
+ $Description:	Creation of a symbol screen
+ 
+ $Returns:		handle of new window
+
+ $Arguments:	parent window
+ 
+*******************************************************************************/
+
+static T_MFW_HND AUI_symbol_Create (T_MFW_HND  parent)
+{
+    T_AUI_SYMBOL_INFO *  data = (T_AUI_SYMBOL_INFO *)ALLOC_MEMORY (sizeof (T_AUI_SYMBOL_INFO));
+    T_MFW_WIN     *  win;
+
+    TRACE_FUNCTION ("AUI_symbol_Create()");
+
+    /* Create window handler */
+
+    data->win = winCreate (parent, 0, E_WIN_VISIBLE, (T_MFW_CB)AUI_symbol_WinCb);
+
+    if (data->win EQ NULL)
+    {
+        return NULL;
+    }
+ 
+     /* Connect the dialog data to the MFW-window */
+
+	data->mmi_control.dialog  = (T_DIALOG_FUNC)AUI_symbol_ExecCb;
+	data->mmi_control.data	= data;
+	data->parent			= parent;
+	win						= ((T_MFW_HDR *)data->win)->data;
+	win->user				= (void *)data;
+    		
+	return data->win;
+}
+
+
+/*******************************************************************************
+
+ $Function:    	AUI_symbol_ExecCb
+
+ $Description:	handles events for symbol window
+ 
+ $Returns:		None.
+
+ $Arguments:	window, event, value, editor data
+ 
+*******************************************************************************/
+
+static void AUI_symbol_ExecCb (T_MFW_HND win, USHORT event, USHORT value, void *parameter)
+{
+    T_MFW_WIN			* win_data		= ((T_MFW_HDR *)win)->data;
+    T_AUI_SYMBOL_INFO	* data			= (T_AUI_SYMBOL_INFO *)win_data->user;
+
+ //   T_MFW_HND			parent_win		= data->parent;   // RAVI
+ //   USHORT				Identifier		= data->editor_data.Identifier;   // RAVI
+ //   T_AUI_EDIT_CB		Callback		= data->editor_data.Callback;  // RAVI
+
+	/* List of symbols */
+	/*SPR 1955, replaced £ sign with our ASCII code for it*/
+	/*SPR2175, added previously un-enterable symbols into symbol table*/
+	static char symStr[] = ". , ? ! : ; - + # * ( ) \' \" _ @ & $ \x9C % / < > = \x8F \x86 \xA5 \xA4 \x2 \x7 \x4 \x9D \xe8 \xE2 \xEF \xEA \xE3 \x5 \xe4 \xe9 \xF0 \x92 \x91 \x01 \xAD \xA8 \x06";
+  
+    TRACE_FUNCTION ("AUI_symbol_ExecCb()");
+
+    switch (event)
+	{
+        case EDITOR_INIT:
+			/* Get the return event that has been passed */
+
+			data->return_event = value;
+			
+            /* Create the keyboard handler */
+            data->kbd	= kbdCreate (data->win, KEY_ALL,(T_MFW_CB)AUI_symbol_KbdCb);
+
+            /* Initialise editor variables */
+            
+        	AUI_edit_SetDefault(&data->editor_data);
+        	AUI_edit_SetDisplay(&data->editor_data, ZONE_MIDDLE_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT);
+			AUI_edit_SetBuffer(&data->editor_data, ATB_DCS_ASCII, (UBYTE *)symStr, strlen(symStr)+1);
+			AUI_edit_SetMode(&data->editor_data, ED_MODE_ALPHA, ED_CURSOR_BLOCK);
+			data->editor  = ATB_edit_Create(&data->editor_data.editor_attr,0);
+            ATB_edit_Init(data->editor);  
+                             
+		   	ATB_edit_Char(data->editor, ctrlTop, TRUE);
+            win_show(data->win);
+			break;
+      
+        case EDITOR_DEINIT:
+			AUI_symbol_Destroy (data->win);   
+            break;
+
+        default:
+            break;
+    }
+}
+
+
+/*******************************************************************************
+
+ $Function:    	AUI_symbol_WinCb
+
+ $Description:	Editor window event handler.
+ 
+ $Returns:		status int
+
+ $Arguments:	event, window
+ 
+*******************************************************************************/
+static int AUI_symbol_WinCb (T_MFW_EVENT event, T_MFW_WIN * win)
+{
+    T_AUI_SYMBOL_INFO * data = (T_AUI_SYMBOL_INFO *)win->user;
+
+	TRACE_FUNCTION ("AUI_symbol__win_cb()");
+
+    if (!data)
+	{
+		return MFW_EVENT_CONSUMED;
+	}
+   
+    switch (event)
+	{
+        case E_WIN_VISIBLE: /* window is visible  */
+            if (win->flags & E_WIN_VISIBLE)
+            {
+// Mar 23, 2005  REF: CRR 28490  xnkulkar
+// Description:  Golite- 5-way navigation behaves wrongly while selecting special characters 
+//			   in the text editor screen.The background screen goes blank when the special 
+//			   characters screen comes up.
+// Solution:   Commented 'dspl_ClearAll()' to make the behaviour consistent with normal variant. 
+//#ifndef COLOURDISPLAY
+                /* Clear Screen */
+//                dspl_ClearAll();
+//#endif
+
+                /* Print the information */
+				ATB_edit_Show(data->editor); 
+			
+			// change by Sasken ( Deepa M D) on March 26th 2004
+			// Issue Number : MMI-SPR-12817
+			// Subject: Wrong softkey in the symbol table.
+			// Bug : While selecting the symbols in the editor 
+			// for the sms write screen, the softkey dispalyed 
+			// was "Options" instead of "Select"
+			// Solution: Commenting the compilation flags COLOURDISPLAY.	
+//#ifndef COLOURDISPLAY
+                /* Print the softkeys */
+				displaySoftKeys(TxtSoftSelect, TxtSoftBack);
+//#endif
+            }
+            break;
+        default:
+            return MFW_EVENT_REJECTED;
+	}
+	return MFW_EVENT_CONSUMED;
+}
+
+
+/*******************************************************************************
+
+ $Function:    	AUI_symbol__kbd_cb
+
+ $Description:	Symbol screen keyboard event handler
+ 
+ $Returns:		None.
+
+ $Arguments:	event, keyborad data
+ 
+*******************************************************************************/
+
+static int AUI_symbol_KbdCb (T_MFW_EVENT event, T_MFW_KBD *keyboard)
+{
+    T_MFW_HND       win        = mfw_parent (mfw_header());
+    T_MFW_WIN     * win_data   = ((T_MFW_HDR *)win)->data;
+    T_AUI_SYMBOL_INFO * data       = (T_AUI_SYMBOL_INFO *)win_data->user;
+
+    TRACE_FUNCTION ("AUI_symbol__kbd_cb()");
+
+    switch (keyboard->code)
+    {
+    /* Use left and right keys in colour display, not up and down */
+    
+#ifdef COLOURDISPLAY
+		case KCD_MNURIGHT: 
+            ATB_edit_Char(data->editor,ctrlRight, FALSE);
+            ATB_edit_Char(data->editor,ctrlRight, TRUE);
+            ATB_edit_Show(data->editor);
+            break;
+
+        case KCD_MNULEFT:
+        	ATB_edit_Char(data->editor,ctrlLeft, FALSE);
+          	ATB_edit_Char(data->editor,ctrlLeft, TRUE);
+        	ATB_edit_Show(data->editor);
+            break;
+
+		case KCD_MNUUP: 
+            ATB_edit_Char(data->editor,ctrlUp, TRUE);
+            ATB_edit_Show(data->editor);
+            break;
+
+        case KCD_MNUDOWN:           
+          	ATB_edit_Char(data->editor,ctrlDown, TRUE);
+        	ATB_edit_Show(data->editor);
+            break;
+#else
+        case KCD_MNUUP: 
+            ATB_edit_Char(data->editor,ctrlRight, FALSE);
+            ATB_edit_Char(data->editor,ctrlRight, TRUE);
+            ATB_edit_Show(data->editor);
+            break;
+
+        case KCD_MNUDOWN:           
+          	ATB_edit_Char(data->editor,ctrlLeft, FALSE);
+          	ATB_edit_Char(data->editor,ctrlLeft, TRUE);
+        	ATB_edit_Show(data->editor);
+            break;
+#endif
+
+#ifdef COLOURDISPLAY
+		case KCD_MNUSELECT:
+#endif
+        case KCD_LEFT:
+			data->output_symbol = ATB_string_GetChar(&data->editor_data.editor_attr.text, data->editor->cursor.pos);
+			AUI_symbol_Destroy(data->win);
+			return MFW_EVENT_CONSUMED;
+//            break;  // RAVI
+
+		case KCD_HUP:
+        case KCD_RIGHT:
+            data->output_symbol = NULL;
+			AUI_symbol_Destroy(data->win);
+			return MFW_EVENT_CONSUMED;
+//            break;  // RAVI
+    }
+
+	/* If we've landed on a space or an end-of-string, move cursor left */
+	
+	if ( ( ATB_edit_GetCursorChar(data->editor, 0)==UNICODE_SPACE
+		|| ATB_edit_GetCursorChar(data->editor, 0)==UNICODE_EOLN )
+		&& data->editor->cursor.pos>0 )
+	{
+			ATB_edit_Char(data->editor, ctrlLeft, TRUE);
+//  Apr 27, 2004        REF: CRR MMI-SPR-12353  Rashmi C N(Sasken) 
+//		When we encounter a white space the coordinates were updated but not the screen, hence an ATB_edit_Show is needed at this point  
+		 ATB_edit_Show(data->editor);		
+	}			
+    return MFW_EVENT_CONSUMED;
+}