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

📄 mmishortcutmnu.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:
            case TxtRejectCalls:
                GetLJNrecordStart(data->win);
                break;

            case TxtAlarm:
                data->menu_options_win=FunctionMenuStart( data->win, AlarmMenuAttributes(),AlarmEntry); 
                break;

            case TxtTimer:
                tooltimerstart(data->win);
                break;

            case TxtStopwatch:
                data->menu_options_win=FunctionMenuStart(data->win, stopwatchMenuAttributes(),StopwatchEntry);
                break;

            case TxtSchedule:
                calin_start(data->win);         
                break;

            case TxtFunctionSelect:
                data->menu_options_win=FunctionMenuStart( data->win, menuFunctionAttributes(),FunctionSelectEntry); 
                data->Listmnu_pos = 0;
                break;          
            default:
                break;
            }
        }       
        break;

    case LISTS_REASON_BACK:
    case LISTS_REASON_CLEAR:
    case LISTS_REASON_HANGUP:
        {
            listsDestroy(ListData->win);
            /*
            FREE_MEMORY((void *)data->menu_list_data->List, wordstrlen(data->scmenu) *sizeof(T_MFW_MNU_ITEM));
            FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
            data->menu_list_data=NULL;
            ShortCutMnu_destroy(data->win);
            */
            data->Listmnu_pos = 0;  //xsf add to record the position of quick function before exeuting it 12.30  
            SEND_EVENT(data->win, MNU_EXIT, 0, 0);
        }
        break;
        //begin of xsf add data->menu for list menu KCD_1__KCD_9 2003.02.18
    case LISTS_REASON_KCD1:  
    case LISTS_REASON_KCD2:
    case LISTS_REASON_KCD3:
    case LISTS_REASON_KCD4:
    case LISTS_REASON_KCD5:
    case LISTS_REASON_KCD6:
    case LISTS_REASON_KCD7:
    case LISTS_REASON_KCD8:
    case LISTS_REASON_KCD9:
        mnuKeyAction(data->menu,ListData->Reason-20);
        break;
        //end of xsf add data->menu for list menu KCD_1__KCD_9 2003.02.18
    default:
        break;
    }

}


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

 $Function:     ShortCutMnu_destroy

 $Description:  Destroy the  window.

 $Returns:    none

 $Arguments:  own_window- current window
*******************************************************************************/

void ShortCutMnu_destroy(MfwHnd own_window)
{
    T_MFW_WIN  * win_data;
    T_SHORTCUTMNU_INFO     * data;
    U8 numberOfscmenus,index;
    char  msg[100];

    TRACE_EVENT ("ShortCutMnu_destroy()");
    sprintf(msg,"hander:%d",(int *)own_window);
    TRACE_EVENT(msg);


    win_data = ((T_MFW_HDR *)own_window)->data;
    data = (T_SHORTCUTMNU_INFO *)win_data->user;
    //sprintf(msg,"data:%d",(int *)data);
    //TRACE_EVENT(msg);
    //   shortcutmenu_flag=0;

    if(data)
    {
        /*
         * Delete WIN handler
         */
        win_delete (data->win);

        /*
         * Free Memory
         */

        numberOfscmenus=wordstrlen(data->scmenu);
        //sprintf(msg,"destroy:%d",numberOfscmenus);
        //TRACE_EVENT(msg);

        if(data->menu_list_data != NULL)
        {
            TRACE_EVENT("list not empty");
            FREE_MEMORY ((void *)data->menu_list_data->List, numberOfscmenus * sizeof (T_MFW_MNU_ITEM));
            FREE_MEMORY ((void *)data->menu_list_data, sizeof (ListMenuData));
        }

        FREE_MEMORY ((void *)data, sizeof (T_SHORTCUTMNU_INFO));

    }
    else
    {
        TRACE_EVENT ("melody_destroy() called twice");
    }

}
/*******************************************************************************

 $Function:     ShortCutMnu_win_cb

 $Description:  Window callback function for the melody window.

 $Returns:    none

 $Arguments:  w - mfw window handler
        e - mfw event

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



static int ShortCutMnu_win_cb (MfwEvt e, MfwWin *w)   
{
    TRACE_EVENT ("ShortCutMnu_win_cb()");
    switch(e)
    {
    case MfwWinVisible:  /* window is visible  */
        break;
    case MfwWinFocussed: /* input focus / selected   */
    case MfwWinDelete:   /* window will be deleted   */
        break;
    default:
        return MFW_EVENT_PASSED;
    }
    return MFW_EVENT_CONSUMED;
}



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

 $Function:     FunctionMenuStart

 $Description:	tbd
 
 $Returns:		tbd

 $Arguments:	tbd
 
*******************************************************************************/

T_MFW_HND FunctionMenuStart( MfwHnd parent, MfwMnuAttr *menuAttr,SHORT reason )
{
    T_MFW_HND win;

    if(( win = FunctionMenuCreate( parent ) ) != NULL)
        SEND_EVENT( win, FUNCSELECT_INIT,reason, (MfwMnuAttr *) menuAttr );
    return win;
}

static T_MFW_HND FunctionMenuCreate(T_MFW_HND parent)
{

    T_MFW_WIN       *win_data;
    T_SHORTCUTMNU_INFO *data=(T_SHORTCUTMNU_INFO*) ALLOC_MEMORY( sizeof( T_SHORTCUTMNU_INFO) );

    TRACE_EVENT( "FunctionMenuCreate()" );

    /* allocate memory for our control block
    */
    if(data == NULL)
        return NULL;

    /* Create the window if we can
    */

    if(( data->win = win_create( parent, 0, E_WIN_VISIBLE, (T_MFW_CB) FunctionMenuWindowCB ) ) == NULL)
    {
        FREE_MEMORY( (void *)data, sizeof( T_SHORTCUTMNU_INFO ) );
        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) FunctionMenuDialog;
    data->mmi_control.data      = data;
    win_data                    = ((T_MFW_HDR *)data->win)->data;
    win_data->user              = (void *) data;

    data->parent            = parent;

    /* create keyboards and menus for our window
    */
    data->kbd       = kbdCreate  ( data->win, KEY_ALL,            (MfwCb) FunctionMenuKbdCB );

    /* And return the handle of the newly created window
    */
    return data->win;
}


static void FunctionMenuDialog( T_MFW_HND win, USHORT event, SHORT value, void *parameter )
{
    T_MFW_WIN       *win_data   = ((T_MFW_HDR *)win)->data;
    T_SHORTCUTMNU_INFO *data        = (T_SHORTCUTMNU_INFO *) win_data->user;
    MfwMnu          *mnu;
    char * userdefine;//zy Mobile Innovation add for user define the child menu title value
    T_MFW_HND   l_parent=data->parent;

    TRACE_EVENT( "FunctionMenuDialog()" );

    switch(event)
    {
    case FUNCSELECT_INIT:

        if(value==SceneEntry)
        {
            userdefine=(char *)MmiRsrcGetText(TxtScene);
            data->menu = mnuListCreate(data->win, (MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
        }
        else if(value==SmsReadEntry)
        {
            userdefine=(char *)MmiRsrcGetText(TxtReadSms);
            data->menu = mnuListCreate(data->win,(MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
        }
        else if(value==AlarmEntry)
        {
            userdefine=(char *)MmiRsrcGetText(TxtAlarm);
            data->menu = mnuListCreate(data->win, (MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
        }
        else if(value==StopwatchEntry)
        {
            userdefine=(char *)MmiRsrcGetText(TxtStopwatch);
            data->menu = mnuListCreate(data->win, (MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
        }

        else if(value==FunctionSelectEntry)
        {
            userdefine=(char *) MmiRsrcGetText(TxtFunctionSelect);
            data->menu = mnuListCreate( data->win, (MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine  );
        }

        mnuLang( data->menu, mainMmiLng );
        mnuUnhide( data->menu );
        winShow( data->win );           

        break;      

    case FUNCSELECT_EXIT:
        {
            SEND_EVENT(data->parent,MNU_INIT, 0,0);                    
        }
        break;


    default:

        break;
    }
}

void FunctionMenuDestroy( MfwHnd window )
{
    T_MFW_WIN       *win_data   = ((T_MFW_HDR *)window)->data;
    T_SHORTCUTMNU_INFO  *data       = (T_SHORTCUTMNU_INFO *) win_data->user;

    TRACE_EVENT( "FunctionMenuDestroy()" );

    if(data)
    {

        kbdDelete(data->kbd);   
        mnuDelete(data->menu);
        winDelete( data->win );     
        FREE_MEMORY( (void *)data, sizeof( T_SHORTCUTMNU_INFO ) );

    }
    else return;

}


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

 $Function:    	FunctionMenuWindowCB

 $Description:	Menu window handler
 
 $Returns:		MFW_EVENT_CONSUMED if event handled, otherwise
                MFW_EVENT_PASSED

 $Arguments:	e, event, m, window handle
 
*******************************************************************************/

static int FunctionMenuWindowCB( MfwEvt e, MfwWin *w )
{
    T_SHORTCUTMNU_INFO * data = (T_SHORTCUTMNU_INFO *)w->user;
    MfwMnu * mnu;

    UINT32 oldColor,oldFontColor;

    TRACE_EVENT( "FunctionMenuWindowCB()" );

    switch(e)
    {
    case MfwWinVisible:
        {
            dspl_ClearAll();    // sbh - clear screen before update
            mnu = (MfwMnu *) mfwControl( data->menu );
            displaySoftKeys( TxtSoftSelect, TxtSoftBack);
			controlBrowseNew();//2004/07/13 yhf add			
            //JVJE MmiBookShowDefault();
            /*oldColor=dspl_GetBkgColor();
            dspl_SetBkgColor(GetPreDefinedColor(ColorSoftKeyBG));
            oldFontColor=dspl_GetFrgColor();
            dspl_SetFrgColor(GetPreDefinedColor(ColorSoftKeyFont));
            displaySoftKeys( '\0', '\0');
            displaySoftKeys( TxtSoftSelect, TxtSoftBack);
            dspl_SetBkgColor(oldColor);
            dspl_SetFrgColor(oldFontColor);*/
            /*................................end of zy change for softkey 04/08/02....................................*/
        }
        break;

    default:
        {
            /* unknown event, pass it up the tree for handling elsewhere
            */
            return MFW_EVENT_PASSED;
        }
        break;
    }

    /* We got here, event handled, prevent anyone else
       dealing with it
    */
    return MFW_EVENT_CONSUMED;
}


static int FunctionMenuKbdCB( MfwEvt e, MfwKbd *k )
{

    T_MFW_HND       window      = mfwParent( mfw_header() );
    T_MFW_WIN       *win_data   = ((T_MFW_HDR *)window)->data;
    T_SHORTCUTMNU_INFO  *data       = (T_SHORTCUTMNU_INFO *) win_data->user;
    T_MFW_HND       l_parent= data->parent; 


    T_MFW_WIN   * parentwin_data=((T_MFW_HDR *)l_parent)->data;
    T_SHORTCUTMNU_INFO         *parentdata=(T_SHORTCUTMNU_INFO *)parentwin_data->user;
    T_MFW_HND idlewin=parentdata->parent;

    TRACE_EVENT( "FunctionMenuKbdCB()" );

    /* handle the keypress
    */

    switch(k->code)
    {
    case KCD_MNUUP: /* highlight previous entry */
        mnuUp(data->menu);
        break;
    case KCD_MNUDOWN: /* highlight next entry */
        mnuDown(data->menu);
        break;
    case KCD_LEFT: /* activate this entry */
    case KCD_OK:   //xsf add 2003.02.18
        mnuSelect(data->menu);
        // mnuShow(data->menu);
        break;      
    case KCD_HUP: /* back to idle */
        mnuEscape(data->menu);
        returntoidle(0);   //xsf changed 2003.03.18
        break;
    case KCD_POWER:
    case KCD_RIGHT: /* back to previous menu */                 
        mnuEscape(data->menu);     
        break;
    default: /* no response to all other keys */
        break;
    }

    return MFW_EVENT_CONSUMED;
}


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

 $Function:    	FunctionMenuMenuCB

 $Description:	Menu handler for the function menu window
 
 $Returns:		MFW_EVENT_CONSUMED if event handled, otherwise
                MFW_EVENT_PASSED

 $Arguments:	e, event, m, menu handle
 
*******************************************************************************/

static int FunctionMenuMenuCB( MfwEvt e, MfwMnu *m )
{
    T_MFW_HND       window      = mfwParent( mfw_header() );
    T_MFW_WIN       *win_data   = ((T_MFW_HDR *)window)->data;
    T_SHORTCUTMNU_INFO  *data       = (T_SHORTCUTMNU_INFO *) win_data->user;

    TRACE_FUNCTION( "bookMenuMenuCB()" );

    /* We only handle the ESCAPE event in here
    */
    switch(e)
    {
    case E_MNU_ESCAPE:

        /* Escape requested, we need to shut down this window
        */      
        SEND_EVENT(window, FUNCSELECT_EXIT, 0, 0);

        break;

    default:

        /* unknown event, pass it up the tree for handling elsewhere
        */

        return MFW_EVENT_PASSED;
        break;


    }

    /* We got here, event handled, prevent anyone else
       dealing with it
    */
    return MFW_EVENT_CONSUMED;
}





int QuickFunctionSelected(struct MfwMnuTag *m,struct MfwMnuItemTag *mi)   //xsf add 2002.12.29
{

    int i=0,j=0;
    unsigned short temp;

    if(wordstrlen(FFS_flashData.shortcutmenu_buffer))
    {
        /* modified by clrobert  2003-9-28 16:31 */
        /* from */
        /*
         while(strcmp(mi->str,(char *)(FFS_flashData.shortcutmenu_buffer[i]))!=0&&(i<wordstrlen(FFS_flashData.shortcutmenu_buffer)))
             i++;
         */
        /* to */ 
        while(((U16)mi->str != FFS_flashData.shortcutmenu_buffer[i]) && (i < wordstrlen(FFS_flashData.shortcutmenu_buffer)))
            i++;
        /* modified end */ 
        
        if(i==wordstrlen(FFS_flashData.shortcutmenu_buffer))

⌨️ 快捷键说明

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