FreeCalypso > hg > fc-magnetite
view src/aci2/bmi/mmiBookInputWindow.c @ 685:3fb7384e820d
tpudrv12.h: FCDEV3B goes back to being itself
A while back we had the idea of a FreeCalypso modem family whereby our
current fcdev3b target would some day morph into fcmodem, with multiple
FC modem family products, potentially either triband or quadband, being
firmware-compatible with each other and with our original FCDEV3B. But
in light of the discovery of Tango modules that earlier idea is now being
withdrawn: instead the already existing Tango hw is being adopted into
our FreeCalypso family.
Tango cannot be firmware-compatible with triband OM/FCDEV3B targets
because the original quadband RFFE on Tango modules is wired in TI's
original Leonardo arrangement. Because this Leonardo/Tango way is now
becoming the official FreeCalypso way of driving quadband RFFEs thanks
to the adoption of Tango into our FC family, our earlier idea of
extending FIC's triband RFFE control signals with TSPACT5 no longer makes
much sense - we will probably never produce any new hardware with that
once-proposed arrangement. Therefore, that triband-or-quadband FCFAM
provision is being removed from the code base, and FCDEV3B goes back to
being treated the same way as CONFIG_TARGET_GTAMODEM for RFFE control
purposes.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 24 Sep 2020 21:03:08 +0000 |
parents | 3c2acfa1a72f |
children |
line wrap: on
line source
/******************************************************************************* 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: PhoneBook $File: MmiBookInputWindow.h $Revision: 1.0 $Author: Condat(UK) $Date: 25/10/00 ******************************************************************************** Description: This module provides the functionality for the input window of the phone book module. ******************************************************************************** $History: MmiBookInputWindow.h 25/10/00 Original Condat(UK) BMI version. $End *******************************************************************************/ /******************************************************************************* Include Files *******************************************************************************/ #define ENTITY_MFW /* 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_sys.h" #include "mfw_mfw.h" #include "mfw_win.h" #include "mfw_kbd.h" #include "mfw_lng.h" /* SPR#1428 - SH - New Editor changes */ #ifndef NEW_EDITOR #include "mfw_edt.h" #endif #include "mfw_icn.h" #include "mfw_mnu.h" #include "mfw_tim.h" #include "mfw_sim.h" #include "mfw_cm.h" #include "mfw_nm.h" #include "mfw_phb.h" #include "mfw_mme.h" #include "mfw_sat.h" #include "mfw_sms.h" #include "dspl.h" #include "ksd.h" #include "psa.h" #include "MmiMain.h" #include "MmiBookController.h" #include "MmiDummy.h" #include "MmiDialogs.h" #include "MmiLists.h" #include "MmiMenu.h" #include "mmiCall.h" #include "Mmiicons.h" #include "MmiIdle.h" #include "MmiSoftKeys.h" #include "MmiSounds.h" #include "MmiIdle.h" #include "MmiNetwork.h" #include "mmiSat_i.h" #include "MmiAoc.h" #include "gdi.h" #include "audio.h" #include "cus_aci.h" #include "mfw_ffs.h" #include "MmiTimers.h" #include "MmiBookShared.h" #ifdef EASY_TEXT_ENABLED #include "MmiChineseInput.h" #endif #include "mmiColours.h" /* SPR#1428 - SH - New Editor * This file is obsolete with new editor and should not be compiled */ #ifndef NEW_EDITOR #define NAME 0 #define NUMBER 1 static int DoNextLongPress = FALSE; static UBYTE UPPER_CASE = TRUE; static UBYTE MODE; extern int upCase; /******************************************************************************* Private Methods *******************************************************************************/ /******************************************************************************* $Function: bookInputDialog $Description: Dialog function for the input window $Returns: None $Arguments: win, window handle event, event to be handled value, not used parameter, not used *******************************************************************************/ static void bookInputDialog( T_MFW_HND win, USHORT event, SHORT value, void *parameter ) { T_MFW_WIN *win_data = ((T_MFW_HDR *) win)->data; tBookStandard *data = (tBookStandard *) win_data->user; tInputSpecifics *properties = (tInputSpecifics *) parameter; TRACE_FUNCTION ("bookInputDialog()"); /* Handle the input event, ew only deal with initialise and destroy of the window in here */ switch( event ) { case INPUT_INIT: { /* Initialise the input window */ data->properties.abc = properties->abc; data->properties.text = properties->text; data->properties.edt_attr_input = properties->edt_attr_input; data->properties.left_soft_key = properties->left_soft_key; data->properties.right_soft_key = properties->right_soft_key; data->properties.callback = properties->callback; data->edt = edtCreate( data->win, data->properties.edt_attr_input, 0, 0 ); /* activate our editor, stopping any others before doing so */ editDeactivate(); editActivate( data->edt, properties->abc ); edtChar( data->edt, ecBottom ); /* show the window */ winShow( data->win ); } break; case INPUT_DESTROY: { /* destroy the input window */ bookInputDestroy( win ); } break; } } /******************************************************************************* $Function: bookInputWindowCB $Description: Window event handler $Returns: MFW_CONSUMED for the visible event, MFW_PASSED otherwise $Arguments: e, event, w, window handle *******************************************************************************/ static int bookInputWindowCB( MfwEvt e, MfwWin *w ) { tBookStandard *data = (tBookStandard *) w->user; TRACE_FUNCTION ("bookInputWindowCB()"); /* Handle the visible event, otherwise return MFW_EVENT_PASSED */ switch( e ) { case MfwWinVisible: { /* Window visible */ MmiBookShowDefault(); edtShow( data->edt ); PROMPT( MmiBookMenuArea().px, MmiBookMenuArea().py, 0, data->properties.text ); softKeys_displayId(data->properties.left_soft_key, data->properties.right_soft_key, 0, COLOUR_LIST_SUBMENU); } break; default: { /* unabel to handle event, pass handling of event back up tree */ return MFW_EVENT_PASSED; } } /* if we get here, we have handled the event */ return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookInputKbdCB $Description: Input window keyboard handler $Returns: MFW_EVENT_CONSUMED always, this will pass LEFT, RIGHT and CLEAR events back to the calling window using the installed callback method $Arguments: e, event, k, key handle *******************************************************************************/ static int bookInputKbdCB( MfwEvt e, MfwKbd *k ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ((T_MFW_HDR *) win)->data; tBookStandard *data = (tBookStandard *) win_data->user; TRACE_FUNCTION ("bookInputKbdCB()"); /* make sure the active editor is ours */ if ( activeEditor() != data->edt ) editActivate( data->edt, data->properties.abc ); /* Handle the key press */ switch (k->code) { case KCD_MNUUP: { /* move right */ edtChar( data->edt, ecRight ); } break; case KCD_MNUDOWN: { /* move left */ edtChar( data->edt, ecLeft ); } break; case KCD_MNUSELECT: case KCD_LEFT: { /* select the entry using the parent window callback */ data->properties.callback( data->parent_win, INPUT_LEFT ); } break; case KCD_HUP: { /* get edit control block */ MfwEdt *edt = ( (MfwHdr *) data->edt )->data; data->properties.callback( data->parent_win, INPUT_CLEAR ); } break; case KCD_RIGHT: { MfwEdt *edt = ( (MfwHdr *) data->edt )->data; /* select the entry using the parent windows callback */ //If we have any data input, delete the char before cursor if ( edt->attr->text[0] ) edtChar( data->edt, ecBack ); else { data->properties.callback( data->parent_win, INPUT_RIGHT ); displaySoftKeys_edition (TxtNull, TxtNull ,TxtNull); MODE = NUMBER; } } break; case KCD_HASH: { /* deal with hash key */ edtChar( data->edt, '#' ); } break; case KCD_STAR: { /* deal with star key */ edtChar( data->edt, '*' ); } break; default: { /* default handling for the key being pressed */ /*NM, p015a */ /* it is better to use these two function for different mode*/ if (data->properties.abc EQ TRUE) editEventKey(e, k); /* alpha-mode*/ else edtChar(data->edt ,editControls[k->code]); /*digit -mode*/ edtShow(data->edt); /*p015a end */ } break; } /* always consume the event */ return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookInputKbdLongCB $Description: Keyboard long event handler $Returns: MFW_EVENT_CONSUMED always $Arguments: e, event, k, key handle *******************************************************************************/ static int bookInputKbdLongCB( MfwEvt e, MfwKbd *k ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ((T_MFW_HDR *) win)->data; tBookStandard *data = (tBookStandard *) win_data->user; TRACE_FUNCTION ("bookInputKbdLongCB()"); /* subpress unwanted longpresses (mfw throws more than one long press event for one long press on a key)*/ if ( e & KEY_LONG ) { if ( DoNextLongPress EQ FALSE ) DoNextLongPress = TRUE; else DoNextLongPress = FALSE; } if ( !DoNextLongPress ) return MFW_EVENT_CONSUMED; /* don't do current long press */ /* Handling the long keypress events needs to deal with a number of characters in the input window, not just the normal clear event */ /* if the event is long key clear and the buffer is not empty then clear the buffer. Otherwise if the buffer is empty then destroy the input editor */ switch(k->code) { case KCD_HUP: { MfwEdt *edt; /* get edit control block */ edt = ((MfwHdr *) data->edt)->data; /* if buffer empty then kill the editor window, otherwise clear the buffer */ if ( edt->attr->text[0] ) { char *c_ptr = data->properties.edt_attr_input->text; memset( c_ptr, '\0', strlen( c_ptr ) ); edtReset( data->edt ); edtShow( data->edt ); } else bookInputDestroy( data->win ); } break; case KCD_HASH: edtChar( data->edt, ecBack ); edtChar( data->edt, 'p' ); break; case KCD_0: edtChar( data->edt, ecBack ); edtChar( data->edt, '+' ); break; default: if (MODE EQ NAME) { if (UPPER_CASE EQ FALSE) { TRACE_EVENT("UPPER_CASE EQ FALSE"); UPPER_CASE = TRUE; upCase = FALSE; displaySoftKeys_edition (TxtLowercase, TxtNull ,TxtNull); } else { TRACE_EVENT("UPPER_CASE EQ TRUE"); UPPER_CASE = FALSE; upCase = TRUE; displaySoftKeys_edition (TxtUppercase, TxtNull ,TxtNull); } edtChar(data->edt, ecBack); } break; } /* always handle the event */ return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookInputCreate $Description: Create the input window and asociate it's handlers $Returns: handle of new window, or NULL if failure $Arguments: parent, handle of the parent window *******************************************************************************/ static T_MFW_HND bookInputCreate( MfwHnd parent ) { T_MFW_WIN *parent_win_data = ( (T_MFW_HDR *) parent )->data; tBookStandard *parent_data = (tBookStandard *) parent_win_data->user; T_phbk *phbk = parent_data->phbk; T_MFW_WIN *win_data; tBookStandard *data; TRACE_FUNCTION ("bookInputCreate()"); /* allocate memory for our control block */ if ( ( data = (tBookStandard *) ALLOC_MEMORY( sizeof( tBookStandard ) ) ) == NULL ) return NULL; /* Create the window if we can */ if ( ( data->win = win_create( parent, 0, E_WIN_VISIBLE, (T_MFW_CB) bookInputWindowCB ) ) == NULL ) { FREE_MEMORY( (void *)data, sizeof( tBookStandard ) ); return NULL; } /* Okay, we have created the control block and the window, so we now need to configure the dialog and data pointers */ data->mmi_control.dialog = (T_DIALOG_FUNC) bookInputDialog; data->mmi_control.data = data; win_data = ((T_MFW_HDR *)data->win)->data; win_data->user = (void *) data; data->phbk = phbk; data->parent_win = parent; /* create keyboards and menus for our window */ data->kbd = kbdCreate( data->win, KEY_ALL, (MfwCb) bookInputKbdCB ); data->kbd_long = kbdCreate( data->win, KEY_ALL | KEY_LONG, (MfwCb) bookInputKbdLongCB ); /* And return the handle of the newly created window */ return data->win; } /******************************************************************************* Public Methods *******************************************************************************/ /******************************************************************************* $Function: bookInputStart $Description: Start the input handler $Returns: Handle of newly created window, or NULL if failure $Arguments: parent, parent window handle, properties, input window property control block. *******************************************************************************/ MfwHnd bookInputStart( MfwHnd parent,tInputSpecifics *properties ) { T_MFW_HND win; TRACE_FUNCTION ("bookInputStart()"); /* allocate window, and if successful initialise it */ if ( ( win = bookInputCreate( parent ) ) != NULL ) SEND_EVENT( win, INPUT_INIT, 0, properties ); return win; } /******************************************************************************* $Function: bookInputStartNumberEditor $Description: Start the input handler using default properties $Returns: Handle of newly created window, or NULL if failure $Arguments: parent, parent window handle, buffer, input buffer *******************************************************************************/ MfwHnd bookInputStartNumberEditor( MfwHnd parent, void *buffer ) { T_MFW_HND win = parent; T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; tInputSpecifics DefaultParameters; TRACE_FUNCTION ("bookInputStartNumberEditor()"); MODE = NUMBER; /* Set up the default parameters for the input window */ bookSetEditAttributes( NUMBER_EDITOR, COLOUR_EDITOR_XX, 0, edtCurBar1, 0, (char *) buffer, NUMBER_LENGTH, &Phbk->edt_attr_number ); DefaultParameters.abc = FALSE; DefaultParameters.text = TxtEnterNumber; DefaultParameters.edt_attr_input = &Phbk->edt_attr_number; DefaultParameters.left_soft_key = TxtSoftOK; DefaultParameters.right_soft_key = TxtDelete;//Changed text // dunno if that changes softkey functionality DefaultParameters.callback = bookAddNumberCB; /* allocate window, and if successful initialise it */ return bookInputStart( parent, &DefaultParameters ); } /******************************************************************************* $Function: bookInputStartNameEditor $Description: Start the input handler using default properties $Returns: Handle of newly created window, or NULL if failure $Arguments: parent, parent window handle, buffer, input buffer *******************************************************************************/ MfwHnd bookInputStartNameEditor( MfwHnd parent, void *buffer ) { T_MFW_WIN *win_data = ( (T_MFW_HDR *) parent )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; tInputSpecifics DefaultParameters; MODE = NAME; TRACE_FUNCTION ("bookInputStartNameEditor()"); /* Set up the default parameters for the input window */ /*MC 1957, name strings should use MAX_ALPHA_LEN*/ bookSetEditAttributes( NUMBER_EDITOR, COLOUR_EDITOR_XX, 0, edtCurBar1, 0, (char *) buffer, MAX_ALPHA_LEN, &Phbk->edt_attr_name ); /*SPR 1434*/ /*SPR 1526, changed #ifdef to #if*/ #if defined(CHINESE_MMI) && defined(EASY_TEXT_ENABLED) /*MC, the chinese editor MUST have a unicode string as input*/ /*MC , SPR 1242 merged in from b-sample build*/ if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE) { T_CHINESE_DATA chinese_data; chinese_data.TextString = (char*) Phbk->edt_buf_name; if (chinese_data.TextString[0]== 0)//if, empty string { chinese_data.TextString[0] = 0x80;//give string Unicode tag chinese_data.TextString[1] = 0x7F; } else { char l_name[MAX_ALPHA_LEN]; int ascii_len = strlen(chinese_data.TextString); int i; if (chinese_data.TextString[0]!= 0x80)/*If ASCII string*/ { memset(l_name, '\0', MAX_ALPHA_LEN); l_name[0] = 0x80;//give Unicode tag l_name[1] = 0x7F; /*convert ascii string to unicode*/ { for (i =0; i < (ascii_len); i++) { if ((2+2*i+1)>=MAX_ALPHA_LEN) break; l_name[2+2*i] = 0x00; l_name[2+2*i+1] = chinese_data.TextString[i]; } if ((2+2*i+1)<=MAX_ALPHA_LEN) { l_name[2+2*i] = 0x00; //double null termination l_name[2+2*i+1] = 0x00; } } memcpy(chinese_data.TextString, l_name, MAX_ALPHA_LEN); } } /*MC end*/ chinese_data.Callback = (T_EDIT_CB)bookAddNameCB; chinese_data.Identifier = INPUT_LEFT ; chinese_data.LeftSoftKey = TxtSave; chinese_data.DestroyEditor = TRUE; chinese_data.EditorSize = (USHORT)((MAX_ALPHA_LEN-4)/2);//i.e.8 return chinese_input(parent, &chinese_data); } else #endif { DefaultParameters.abc = TRUE; DefaultParameters.text = TxtEnterName; DefaultParameters.edt_attr_input = &Phbk->edt_attr_name; DefaultParameters.left_soft_key = TxtSoftOK; DefaultParameters.right_soft_key = TxtDelete;//Changed text - MC DefaultParameters.callback = bookAddNameCB; /* allocate window, and if successful initialise it */ return bookInputStart( parent, &DefaultParameters ); } } /******************************************************************************* $Function: bookInputDestroy $Description: Destroy Input Window $Returns: None $Arguments: Handle of window to be destroyed *******************************************************************************/ void bookInputDestroy( MfwHnd window ) { T_MFW_WIN *win = ((T_MFW_HDR *) window)->data; tBookStandard *data = (tBookStandard *) win->user; TRACE_FUNCTION ("bookInputDestroy()"); if (data) { editDeactivate(); winDelete ( data->win ); FREE_MEMORY( (void *) data, sizeof( tBookStandard ) ); } } #endif /* NEW_EDITOR */ /******************************************************************************* End of File *******************************************************************************/