📄 mmimain.c
字号:
$Function: displayAlignedPrompt
$Description: Display prompt horizontally aligned [left|right|center] in specified row.
$Returns:
$Arguments:
*******************************************************************************/
void displayAlignedPrompt( T_MMI_ALIGN x_alignment, USHORT y_lineNum, UBYTE attrib, int string_id )
{
int stringLength = 0;
USHORT startXPos = 0; // starting X pos for display
dspl_DevCaps deviceCaps;
char *Idtext; //hxl add for get the stringlength
dspl_GetDeviceCaps(&deviceCaps);
//hxl start changed to wstrlen for unicode--------------------------
Idtext=(char*)MmiRsrcGetText( string_id );
/*talcon added*/
if(Idtext == 0)
return;
/* 2003/11/27 sunsj */
//stringLength=wstrBitlen(Idtext); //xsf changed wstrlen to wstrBitlen 2003.01.23
stringLength = get_StringWidth(Idtext);
//if(*Idtext==0x80)
// stringLength-=1; //delete the 0x80
//end of hxl changed-----------------------------------------
switch( x_alignment )
{
case LEFT:
break;
case RIGHT:
/* 2003/11/10 sunsj */
if( (deviceCaps.Width - stringLength) >= 0 )
//if ( (deviceCaps.Width - (stringLength*8))>=0 )
{
/* 2003/11/10 sunsj */
startXPos = (USHORT) deviceCaps.Width - stringLength;
//startXPos = (USHORT) deviceCaps.Width - stringLength*8; //hxl changed to Char Length
}
else
startXPos=0;
break;
case CENTER:
/* 2003/11/10 sunsj */
if( deviceCaps.Width > stringLength )
//if ( deviceCaps.Width>(stringLength*8) )
{
/* 2003/11/10 sunsj */
startXPos = (USHORT) (deviceCaps.Width - stringLength) / 2;
//startXPos = (USHORT) (deviceCaps.Width - stringLength*8) / 2;
}
else
startXPos=0;
break;
#if(MAIN_LCD_SIZE==3)//jhxu720
case CENTER_RIGHT://jhxu720
if( deviceCaps.Width > stringLength )
{
startXPos = (USHORT) (deviceCaps.Width - stringLength) / 2+22;
}
else
startXPos=0;
break;
#endif
}
PROMPT(startXPos, y_lineNum, attrib, string_id );
}
/*******************************************************************************
$Function: mainShutdown
$Description:
$Returns: none.
$Arguments:
*******************************************************************************/
/* added by clrobert */
#ifdef _INNOVATION_EMULATOR_
extern int g_bIsPowerOn;
extern int ModuleKey;
#endif
void mainShutdown(void) ///zym revised
{
TRACE_EVENT("mainShutdown ()");
MmiTrace("mainShutdown");
/* add by clrobert */
#ifdef _INNOVATION_EMULATOR_
ModuleKey = -1;
g_bIsPowerOn = 0;
#endif
/* add end */
#if 1 /* Robert.Chen removed, 2004-05-05 */
if( deregis )
#endif /* Robert.Chen removed */
{
//---------------start: Mobile OFF-------------------
TRACE_FUNCTION(" Mobile OFF");
/* delete the state of mobile on */
globalMobileMode = globalMobileMode & (~GlobalMobileOn);
deregis = FALSE;
timStop(timlowvoltage);//hxl add 0905 for delete the timer-------------
timDelete(timlowvoltage);
//FfsWriteAllEvent();//hxl del for don't write when lowvoltage shutdown, 2003-6-8
FieldTestExit();
BaseWinExit();//hxl add for chargerwin entry 20020905
/* mmiExit();// RM 20-07
SIM_PowerOff();
#ifndef _SIMULATION_
AI_Power(0);
#endif
*///hxl moved it to switchoffmobile() 20020905-------
}
}
/*******************************************************************************
$Function: globalBatteryUpdate
$Description: Update the value of the battery after the MME event
$Returns:
$Arguments:
*******************************************************************************/
int globalBatteryUpdate (U8 value)
{
MmiModuleDel (ModuleBattLow); /* delete the state */
globalBatteryMode = GlobalBatteryGreater5;
switch( value )
{
case 0: /* battery low */
globalBatteryMode = GlobalBatteryLesser5;
/* is just a global status */
MmiModuleSet (ModuleBattLow); /* set the state */
/* reject the SAT command if Battery low */
// if(MmiModule EQ ModuleSAT )
//nm satExec (SatRejectEvent,0); /* */
break;
default:
break;
}
return 0;
}
/*******************************************************************************
$Function: globalSignalUpdate
$Description:Update the value of the fieldstrength after the MME event
$Returns:
$Arguments:
*******************************************************************************/
int globalSignalUpdate (U8 value)
{
UBYTE lastvalue;
// sbh - it looks like the value we receive is the "no. of bars",
// rather than the wider-ranging value expected here
//begin xzy add for signal change 03/03/26
if( globalSignalPicNumber==0 )
{
globalSignalPicNumber = value;
}
else
{
/*2003/12/29,talcon comment for outerIdle*/
//if(idleIsFocussed())
{
GetSignalPicNumber();
}
}
idleEvent(IdleUpdate);//hxl delete for show icon at idle_dialing window
return 0;
}
/*******************************************************************************
$Function: globalFlashBattery
$Description: exit MMI main module
$Returns: none.
$Arguments:
*******************************************************************************/
void globalFlashBattery (void) ///zym revised
{
TRACE_FUNCTION(" globalFlashBattery ");
idleEvent(IdleUpdate);
}
/*******************************************************************************
$Function: editShowHeader
$Description: displays the new character over the cursor
$Returns: none.
$Arguments:
*******************************************************************************/
static void editShowHeader (void)
{
char alphachar;
MfwEdt *edit = ((MfwHdr *) myHandle)->data;
TRACE_EVENT("editShowHeader");
//zgz,2002.7.3 edtCharf(myHandle,ecDel,0); //zgz, del the char at cursor position, cp not be changed.
edtSymbol(myHandle,ecDel);
if( upCase )
alphachar = editAlphaU[editAlphaKey][editAlphaLevel];
else
alphachar = editAlpha[editAlphaKey][editAlphaLevel];
if( !(editAlphaMode && editAlphaKey != KCD_MAX) )
alphachar= ' ';
else if( editHiddenMode ) // SH - in hidden mode...
*(tmpBuf+edit->cp) = alphachar; // store character in buffer
#ifdef NO_ASCIIZ
//zgz, if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE)
//alphachar = alphachar << 8;
#endif
// zgz, 2002.0627 debug for edtSymbol()
//edtCharf(myHandle,alphachar,0);
//edtChar(myHandle,ecLeft);
edtSymbol(myHandle, alphachar);
edtSymbol(myHandle, ecLeft);
}
/*******************************************************************************
$Function: editEventTim
$Description: executes the timer event from the edit component
$Returns: none.
$Arguments:
*******************************************************************************/
static int editEventTim (MfwEvt e, MfwTim *t)
{
char *format = formatHandle; // SH - temporary format template
TRACE_EVENT("editEventTim");
if( !(editAlphaMode || editFormatMode) )
return 1;
// SH - modifications for format mode & hidden mode
if( editFormatMode ) // SH - advance format pointer when
{
if( editHiddenMode )
{
editCharFindNext('*');
TRACE_EVENT("Password entered (format):");
TRACE_EVENT(tmpBuf);
}
else
//editCharFindNext(ecRight);
edtSymbol(myHandle,ecRight);
}
else if( editHiddenMode )
{
edtChar(myHandle,'*');
TRACE_EVENT("Password entered:");
TRACE_EVENT(tmpBuf);
}
// end of modifications
else
//zgz,2002.7.3 edtChar(myHandle,ecRight);
edtSymbol(myHandle,ecRight);
editAlphaLevel = KEY_PAD_MAX-1; //zgz, commented out this line
editAlphaKey = KCD_MAX;
return 1;
}
/*******************************************************************************
$Function: editEventKey
$Description: executes the timer event form the edit component
$Returns: none.
$Arguments:
*******************************************************************************/
int editEventKey (MfwEvt e, MfwKbd *k)
{
// over the editor handle "e" we have now the access to
// the editor buffer "tb". We need it e.g "editCalcMode"
// to check the buffer
MfwEdt *edit = ((MfwHdr *) myHandle)->data;
char *tb = edit->attr->text;
UBYTE ch = '.';
char *format = formatHandle; // SH - temporary format template
char formatchar; // SH - Current format character
char alphachar; // SH - Current multi-tap character
int safetycounter; // SH - Stops searching forever to find compatible character
char test_string[40];
BOOL validCharacter; // SH - flag to indicate whether character is accepted
TRACE_EVENT("editEventKey");
// SH - formatted input mode (for WAP)
if( editFormatMode )
{
sprintf(test_string,"cp: %d, size: %d, formatindex: %d", edit->cp, edit->attr->size, *formatIndex);
TRACE_EVENT(test_string);
if( k->code==KCD_HUP ) // Escape from edit screen
return 0;
if( edit->cp >= (edit->attr->size) ) // If at last character of editor, don't
{
TRACE_EVENT("Last character.");
return 1; // print character
}
formatchar = *(format+*formatIndex);
sprintf(test_string, "formatchar: %c, editAlphaKey: %d, k->code: %d", formatchar, editAlphaKey, k->code);
TRACE_EVENT(test_string);
sprintf(test_string, "editAlphaLevel: %d", editAlphaLevel);
TRACE_EVENT(test_string);
if( formatchar == NULL ) // If we've reached the end of the format string, don't allow input
return 1;
if( (formatchar>'0' && formatchar<='9') || formatchar=='*' ) // Delimiter for format field
{
(*formatIndex)++;
*fieldIndex = 0;
formatchar = *(format+*formatIndex); // Next character is the format for the field
}
// Multi-tap input
// The user presses a different key, meaning the previous character must be entered
if( editAlphaKey != KCD_MAX && editAlphaKey != k->code )
{
timStop(editTim);
alphachar = NULL;
switch( formatchar )
{
case 'X': // Uppercase alphabetic only
case 'A': // Uppercase alphabetic or punctuation
alphachar = editAlphaU[editAlphaKey][editAlphaLevel];
break;
case 'x': // Lowercase alphabetic only
case 'a': // Lowercase alphabetic or punctuation
alphachar = editAlpha[editAlphaKey][editAlphaLevel];
break;
case 'M':
case 'm':
if( upCase )
alphachar = editAlphaU[editAlphaKey][editAlphaLevel];
else
alphachar = editAlpha[editAlphaKey][editAlphaLevel];
break;
}
if( alphachar!=NULL )
{
if( editHiddenMode ) // SH - in hidden mode...
{
*(tmpBuf+edit->cp) = alphachar; // store character in buffer
TRACE_EVENT("Password entered (format):");
TRACE_EVENT(tmpBuf);
alphachar = '*'; // ...and show star
}
editCharFindNext(alphachar); // Add number to buffer & advance cursor
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -