⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmimain.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
 $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 + -