mmidialogs.c

来自「是一个手机功能的模拟程序」· C语言 代码 · 共 1,424 行 · 第 1/5 页

C
1,424
字号

    display_info->SoftKeyStrings = TRUE;
    win = dialog_info_create (parent_win);

    if( win NEQ NULL )
    {
        SEND_EVENT (win, DIALOG_INIT, 0, display_info);
    }
    return win;
}


/*******************************************************************************

 $Function:    	dialog_info_create

 $Description:	Creation of an information dialog
 
 $Returns:		Dialogue info win

 $Arguments:	parent win
 
*******************************************************************************/
static T_MFW_HND dialog_info_create (T_MFW_HND parent_win)
{
    T_MFW_WIN     * win_data;
    T_dialog_info *  data = (T_dialog_info *)ALLOC_MEMORY (sizeof (T_dialog_info));

    TRACE_FUNCTION ("dialog_info_create()");

    data->info_win = win_create (parent_win, 0, E_WIN_VISIBLE, (T_MFW_CB)dialog_info_win_cb);

    if( data->info_win EQ 0 )
        return 0;

    /* Create window handler */
    data->mmi_control.dialog   = (T_DIALOG_FUNC)dialog_info;
    data->mmi_control.data     = data;
    data->parent_win           = parent_win;
    win_data                   = ((T_MFW_HDR *)data->info_win)->data;
    win_data->user             = (void *)data;

    /* return window handle */
    return data->info_win;
}


/*******************************************************************************

 $Function:    	dialog_info_destroy

 $Description:	Destruction of an information dialog
 
 $Returns:		void

 $Arguments:	win
 
*******************************************************************************/
void dialog_info_destroy (T_MFW_HND own_window)
{
    T_MFW_WIN     * win  = ((T_MFW_HDR *)own_window)->data;
    T_dialog_info * data = (T_dialog_info *)win->user;


    MMI_TRACE_EVENT(("win_incoming dialog_info_destroy()"));
    if( data )
    {
        /* Exit TIMER & KEYBOARD Handle */

        kbd_delete (data->info_kbd);
        kbd_delete (data->info_kbd_long);

        tim_delete (data->info_tim);

        tim_delete (data->delete_tim_win);
        icnDelete(data->icon);//zy 09/11
        if( data->animation_timer )
            tim_delete(data->animation_timer);
        /* Delete WIN Handler  */
        win_delete (data->info_win);
        /* Free Memory  */
        FREE_MEMORY ((void *)data, sizeof (T_dialog_info));
    }
}


#if 1
//zhaowm 2003.1.28
void dlg_zeroDisplayData( T_DISPLAY_DATA *displayInfo)
{
    if( displayInfo == NULL )
        return;
    displayInfo->LeftSoftKey    = 0;
    displayInfo->RightSoftKey   = 0;
    displayInfo->LSKString      = NULL;
    displayInfo->RSKString      = NULL;
    displayInfo->TextString     = NULL;
    displayInfo->TextString2    = NULL;
    displayInfo->TextString3    = NULL;//zy 02-10
    displayInfo->WrapStrings    = 0;
    displayInfo->TextId         = 0;
    displayInfo->TextId2        = 0;
    displayInfo->TextId3        = 0;//zy 02-10
    displayInfo->SoftKeyStrings = FALSE;
    //	displayInfo->Callback		= NULL;
    //    displayInfo->Time        	= 0;
    //?	displayInfo->Time			= FOREVER;											
    //    displayInfo->KeyEvents   	= 0;
    displayInfo->Identifier     = 0;
    dlg_initDisplayData_events( displayInfo, NULL, 0, 0);

}

void dlg_initDisplayData_TextId( T_DISPLAY_DATA *displayInfo, int lsk, int rsk, int str1, int str2)
{
    if( displayInfo == NULL )
        return;
    dlg_zeroDisplayData(displayInfo);
    displayInfo->LeftSoftKey    = (USHORT)lsk;
    displayInfo->RightSoftKey   = (USHORT)rsk;
    displayInfo->TextId         = str1;
    displayInfo->TextId2        = str2;

}
void dlg_initDisplayData_TextStr( T_DISPLAY_DATA *displayInfo, int lsk, int rsk,char *str1, char *str2)
{
    if( displayInfo == NULL )
        return;
    dlg_zeroDisplayData(displayInfo);
    displayInfo->LeftSoftKey    = (USHORT)lsk;
    displayInfo->RightSoftKey   = (USHORT)rsk;
    displayInfo->TextString     = str1;
    displayInfo->TextString2    = str2;
}

void dlg_initDisplayData_events( T_DISPLAY_DATA *displayInfo, T_VOID_FUNC callback, int timer, T_MFW_EVENT keyEvents)
{
    displayInfo->Callback       = callback;
    displayInfo->Time           = timer;
    displayInfo->KeyEvents      = keyEvents;
}
#endif /*2003/12/13, wangyan delete*/

//
/*******************************************************************************

 $Function:    	dialog_info

 $Description:	Dialog function for information dialog
 
 $Returns:		void

 $Arguments:	win, window handle event, value, parameter

*******************************************************************************/
void dialog_info (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN      * win_data     = ((T_MFW_HDR *)win)->data;
    T_dialog_info  * data         = (T_dialog_info *)win_data->user;
    T_DISPLAY_DATA * display_info = (T_DISPLAY_DATA *)parameter;

    TRACE_FUNCTION ("dialog_info()");

    switch( event )
    {
    case DIALOG_INIT:
        /* Initialize dialog */

        /* Create timer and keyboard handler */
        if( display_info->Identifier==RECTCALLDETAIL )
        {
#ifndef FOR_FTA_CTA	
            data->info_tim = tim_create (win, display_info->Time, (T_MFW_CB)dialog_info_tim_cb);
#endif		

            data->info_kbd = kbd_create (win, KEY_ALL, (T_MFW_CB)dialog_info_kbd_cb);
            data->info_kbd_long = kbd_create(win,KEY_ALL|KEY_LONG,(MfwCb)dialog_info_kbd_long_cb);

            /* Store any other data */
            data->KeyEvents = display_info->KeyEvents;
            data->TextString = display_info->TextString;
            data->LeftSoftKey = display_info->LeftSoftKey;
            data->RightSoftKey = display_info->RightSoftKey;
            data->SoftKeyStrings = display_info->SoftKeyStrings;    // SH - TRUE if using strings rather than IDs
            data->LSKString = display_info->LSKString;      // Text for left soft key
            data->RSKString = display_info->RSKString;      // Text for right soft key
            data->TextId = display_info->TextId;
            data->Identifier = display_info->Identifier;
            data->Callback = display_info->Callback;
            data->TextString2 = display_info->TextString2;
            data->TextId2 = display_info->TextId2;
            data->WrapStrings = display_info->WrapStrings;  //GW-SPR#762
            data->iconIndex =display_info->iconindex;
            data->BackColor =display_info->BackColor;
            data->FontColor =display_info->FontColor;
            data->TextString3 = display_info->TextString3;
            data->TextId3 = display_info->TextId3;
            data->Time = display_info->Time;
            data->animation_timer =0;
#ifndef FOR_FTA_CTA	
            if( display_info->Time NEQ FOREVER )
            {
                tim_start (data->info_tim);
            }
#endif

            win_show (win);
        }
        else
        {
            switch( display_info->iconindex )
            {
            case REMIND_COMPLETE:
                /* 2004/05/17 sunsj modify */
                display_info->Time=200*7;               
                break;
            case REMIND_FAILURE:
            case REMIND_SUCCEED:   
                if( display_info->Time!=FOREVER )
                {
                    display_info->Time=600;
                }
                break;
            case REMIND_NORECORD:
                if( (display_info->Time == FOREVER)&&(display_info->Identifier!=LOW_VOLTAGE_WARNING) )  ///zym modified
                    display_info->Time=800;
                break;
            default:
                break;
            }
            if( (display_info->Identifier==SERVICES_AOC_STATISTICS)||(display_info->Identifier==MMI_TIMER_STATISTICS) )
            {/* 2003/10/22, wangyan, modify call time statistics menu*/
            }
            else
            {
                if( ((display_info->TextId!=0)||(display_info->TextId!='\0'))&&((display_info->TextString!=0)||(display_info->TextString!='\0')) )
                    /* 2003/10/22, wangyan, modify call time statistics menu*/
                    display_info->TextString='\0';//gdy add to advoid displaying two different text in the same place
                if( ((display_info->TextId2!=0)||(display_info->TextId2!='\0'))&&((display_info->TextString2!=0)||(display_info->TextString2!='\0')) )
                    /* 2003/10/22, wangyan, modify call time statistics menu*/
                    display_info->TextString2='\0';//gdy add to advoid displaying two different text in the same place
            }
            if( (display_info->Identifier==StartAnimDialog)||(display_info->Identifier==StartSwitchoffDialog) )
            {
                data->info_tim = tim_create (win, display_info->Time, (T_MFW_CB)dialog_info_tim_cb);
                tim_start (data->info_tim);
            }
#ifndef FOR_FTA_CTA	
            data->info_tim = tim_create (win, display_info->Time, (T_MFW_CB)dialog_info_tim_cb);
#endif
            data->info_kbd = kbd_create (win, KEY_ALL, (T_MFW_CB)dialog_info_kbd_cb);
            data->info_kbd_long = kbd_create(win,KEY_ALL|KEY_LONG,(MfwCb)dialog_info_kbd_long_cb);

            /* Store any other data */
            data->KeyEvents = display_info->KeyEvents;
            data->TextString = display_info->TextString;
            data->LeftSoftKey = display_info->LeftSoftKey;
            data->RightSoftKey = display_info->RightSoftKey;
            data->SoftKeyStrings = display_info->SoftKeyStrings;    // SH - TRUE if using strings rather than IDs
            data->LSKString = display_info->LSKString;      // Text for left soft key
            data->RSKString = display_info->RSKString;      // Text for right soft key
            data->TextId = display_info->TextId;
            data->Identifier = display_info->Identifier;
            data->Callback = display_info->Callback;
            data->TextString2 = display_info->TextString2;
            data->TextId2 = display_info->TextId2;
            data->WrapStrings = display_info->WrapStrings;  //GW-SPR#762
            data->iconIndex =display_info->iconindex;
            data->BackColor =display_info->BackColor;
            data->FontColor =display_info->FontColor;
            data->TextString3 = display_info->TextString3;
            data->TextId3 = display_info->TextId3;
            data->Time = display_info->Time;
            data->animation_timer        =0;
#ifndef FOR_FTA_CTA	
            if( display_info->Time NEQ FOREVER )
            {
                tim_start (data->info_tim);
            }
#endif
            win_show (win);
        }
        break;
    case DIALOG_DESTROY:
        dialog_info_destroy(win);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?