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

📄 mmimmssetting.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 4 页
字号:
        break;
    case MfwWinFocussed: /* input focus / selected   */
    case MfwWinDelete:   /* window will be deleted   */
    default:
        return MFW_EVENT_REJECTED;
    }
    return MFW_EVENT_CONSUMED;
}

//设置列表
int MMS_Cur_Settings_List(MfwMnu* m, MfwMnuItem* i)
{
   T_MFW_HND    win  = mfwParent(mfw_header());
   MMS_TRACE_FUNCTION("MMS_Cur_Settings_List");
   MMS_All_Settings_List_start(win,CUR_SETTINGS); 
}

int MMS_All_Settings_List(MfwMnu* m, MfwMnuItem* i)
{
	T_MFW_HND    win  = mfwParent(mfw_header());
	MMS_TRACE_FUNCTION("MMS_All_Settings_List");
	MMS_All_Settings_List_start(win,ALL_SETTINGS); 
}

T_MFW_HND MMS_All_Settings_List_start (T_MFW_HND parent , SETTINGS_MENU_ID menuID)
{
	T_MFW_HND win;
    win = MMS_All_Settings_List_create(parent, menuID);
	MMS_TRACE_FUNCTION("MMS_All_Settings_List_start");
    if( win NEQ NULL )
    {
		SEND_EVENT (win, E_INIT, menuID, NULL);
    }
    return win;
}

T_MFW_HND MMS_All_Settings_List_create (T_MFW_HND parent_window, SETTINGS_MENU_ID menuID)
{
	T_MMS_ALL_SETTINGS_LIST * data = (T_MMS_ALL_SETTINGS_LIST *)ALLOC_MEMORY (sizeof (T_MMS_ALL_SETTINGS_LIST));
    T_MFW_WIN  * win;
	MMS_TRACE_FUNCTION("MMS_All_Settings_List_create");
    data->win =win_create (parent_window, 0, E_WIN_VISIBLE, NULL);
    if( data->win EQ NULL )
    {
        return NULL;
    }
	
	if(menuID == CUR_SETTINGS)
	{
        MMS_Set_CurSetList_WHnd(data->win);
	}
	else if(menuID == ALL_SETTINGS)
	{
        MMS_Set_AllSetList_WHnd(data->win);
	}

    data->mmi_control.dialog = (T_DIALOG_FUNC)MMS_All_Settings_List_dialog;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent             = parent_window;
	
    winShow(data->win);
    return data->win;
}

void      MMS_All_Settings_List_dialog (T_MFW_HND win, USHORT event, USHORT value, void * parameter)
{
	T_MFW_WIN         * win_data = ((T_MFW_HDR *) win)->data;
    T_MMS_ALL_SETTINGS_LIST    * data = (T_MMS_ALL_SETTINGS_LIST *)win_data->user;
    T_MFW_HND         * parent=data->parent;
	MMS_TRACE_FUNCTION("MMS_All_Settings_List_dialog");
    switch( event )
    {
    case E_INIT:
		/* initialization of the dialog data */
		data->list_menu_data.ListPosition   = iSettingsItemIndex+1;/* True cursor position in list menu. */
		data->list_menu_data.CursorPosition = iSettingsItemIndex;/* Cursor position in list snapshot.  */
		data->list_menu_data.Font           = 0;
		data->list_menu_data.LeftSoftKey    = TxtSoftSelect;
		data->list_menu_data.RightSoftKey   = TxtSoftBack;
		data->list_menu_data.KeyEvents      = KEY_RIGHT|KEY_LEFT |KEY_OK | KEY_MNUUP | KEY_MNUDOWN|KEY_HUP;
		data->list_menu_data.Reason         = 0;
		data->list_menu_data.Strings        = TRUE; 
		data->list_menu_data.Attr           = &MMS_All_Settings_List_Attrib;
		data->list_menu_data.autoDestroy    = TRUE;

		data->menuID = value;
		
		MMS_All_Settings_List_listmenu_create(data);
		break;
		
	case E_RETURN: 
    case E_EXIT: 
    case E_BACK:  
		MMS_All_Settings_List_destroy(data->win);
		SEND_EVENT (parent, event, 0, NULL); /* forward event to parent */
        break;		
    default:
        return;
    }
}

void      MMS_All_Settings_List_listmenu_create (T_MMS_ALL_SETTINGS_LIST *data)
{
	int i = 0;
    T_MFW_HND         * parent=data->parent;
    MMS_TRACE_FUNCTION("MMS_All_Settings_List_listmenu_create");
	data->list_menu_data.ListMenuFlag=1;//for display the title
	if(data->menuID == CUR_SETTINGS)
	{ 	
		data->list_menu_data.autoDestroy = TRUE;
		data->list_menu_data.ListMenuHeadStr=(char *) MmiRsrcGetText(TxtMMSCurSettings);
		data->list_menu_data.List = (MfwMnuItem *)ALLOC_MEMORY (MMS_SETTINGS_SUM * sizeof (MfwMnuItem));
		for(i = 0; i < MMS_SETTINGS_SUM; i++)
		{
			data->list_menu_data.List[i].icon = (MfwIcnAttr*)&situationIcon;   ///textlistIcon;
			data->list_menu_data.List[i].exta = 0;
			data->list_menu_data.List[i].edit = 0;
			data->list_menu_data.List[i].menu = 0;
			if(i == 0)
			   data->list_menu_data.List[i].func = MMS_Setting_Group1; 
			else if(i == 1)
               data->list_menu_data.List[i].func = MMS_Setting_Group2; 
			else if(i == 2)
			   data->list_menu_data.List[i].func = MMS_Setting_Group3; 
			else if(i == 3)
			   data->list_menu_data.List[i].func = MMS_Setting_Group4; 
			else if(i == 4)
			   data->list_menu_data.List[i].func = MMS_Setting_Group5; 
			
			data->list_menu_data.List[i].flagFunc = MMS_Setting_flagFunc;	
			data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY ( MMS_SETTINGS_GROUPNAME_LEN +1);	
			
			if( mmsSettings.allSettings[i].strName[0] == 0x00)
			{
				char tempName[4];
				sprintf(tempName,"%d",i+1);
				wstrcpy(data->list_menu_data.List[i].str,(char *) MmiRsrcGetText(TxtMMSAllSettings));
                wstrcat(data->list_menu_data.List[i].str,tempName);
			}
			else
				wstrcpy(data->list_menu_data.List[i].str ,(char *) mmsSettings.allSettings[i].strName);	
		}
	}
	else if(data->menuID == ALL_SETTINGS)
	{
		data->list_menu_data.autoDestroy = TRUE;
		data->list_menu_data.ListMenuHeadStr=(char *) MmiRsrcGetText(TxtMMSAllSettings);	
		data->list_menu_data.List = (MfwMnuItem *)ALLOC_MEMORY (MMS_SETTINGS_SUM * sizeof (MfwMnuItem));
		for(i = 0; i < MMS_SETTINGS_SUM; i++)
		{
			data->list_menu_data.List[i].icon = (MfwIcnAttr*)&colist;   ///textlistIcon;
			data->list_menu_data.List[i].exta = 0;
			data->list_menu_data.List[i].edit = 0;
			data->list_menu_data.List[i].menu = 0;
			data->list_menu_data.List[i].func = 0; 
			data->list_menu_data.List[i].flagFunc = item_flag_none;	
			data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY ( MMS_SETTINGS_GROUPNAME_LEN +1);	
			if( mmsSettings.allSettings[i].strName[0] == 0x00)
			{
				char tempName[4];
				sprintf(tempName,"%d",i+1);
				wstrcpy(data->list_menu_data.List[i].str,(char *) MmiRsrcGetText(TxtMMSAllSettings));
                wstrcat(data->list_menu_data.List[i].str,tempName);
			}
			else
			   wstrcpy(data->list_menu_data.List[i].str ,(char *) mmsSettings.allSettings[i].strName);
		}
    }
	
	data->list_menu_data.SnapshotSize   = MMS_SETTINGS_SUM; /* Number of list entries to view. */
	data->list_menu_data.ListLength = MMS_SETTINGS_SUM; 
	listDisplayListMenu(data->win, &data->list_menu_data, (ListCbFunc)MMS_All_Settings_List_listmenu_cb,0);
}

void      MMS_All_Settings_List_listmenu_cb (T_MFW_HND * win, ListMenuData * ListData)
{
#if 0
	extern void flash_MMSSettingsInfo();	
#endif 
	T_MFW_WIN         * win_data = ((T_MFW_HDR *)win)->data;
    T_MMS_ALL_SETTINGS_LIST    * data   = (T_MMS_ALL_SETTINGS_LIST *)win_data->user;
    T_MFW_WIN         * parent= data->parent;
	P_MMS mms = getMMS();
    MMS_TRACE_FUNCTION("MMS_All_Settings_List_listmenu_cb");
	switch( ListData->Reason )
	{
	case LISTS_REASON_OK:
	case LISTS_REASON_SELECT:
		iSettingsItemIndex=ListData->ListPosition;
		if(CUR_SETTINGS == data->menuID) 
		{
#if 0
			mmsSettings.curSettingsIndex = iSettingsItemIndex;
			flash_MMSSettingswrite();
			flash_MMSSettingsInfo();
#endif
		}
		else if(ALL_SETTINGS == data->menuID)
		{
			MMS_Settings_Opt_start(data->win , (MfwMnuAttr *)MMSAllSettingsMenuAttributes());  
		}		
		break;
		
	case LISTS_REASON_BACK: 
		MMS_All_Settings_List_destroy(data->win);
		SEND_EVENT (parent, E_BACK, 0, NULL);
		break;
		
	case LISTS_REASON_HANGUP:
	/*	if(mms->manager)
		{
			MMS_Codec_Destory();
			manager_on_destroy();
			mms->manager  = NULL;
		}*/
		
		if( returntoidle(0) )
			break;
		break;
		
	default:
		break;
	}
	return;
}

static void      MMS_All_Settings_List_destroy (T_MFW_HND window)
{
	T_MFW_WIN          * win_data;
    T_MMS_ALL_SETTINGS_LIST     * data;
    USHORT i;
	MMS_TRACE_FUNCTION("MMS_All_Settings_List_destroy");
    if( window )
    {
        win_data = ((T_MFW_HDR *)window)->data;
        data = (T_MMS_ALL_SETTINGS_LIST *)win_data->user;
		
        if( data )
        {
			if(data->menuID == CUR_SETTINGS)
			{
				MMS_Set_CurSetList_WHnd(NULL);
			}
			else if(data->menuID == ALL_SETTINGS)
			{
				MMS_Set_AllSetList_WHnd(NULL);
			}

            win_delete (data->win);
			data->win =  NULL;
            for( i = 0; i < MMS_SETTINGS_SUM; i++ )
                FREE_MEMORY( (void *)(data->list_menu_data.List[i].str), MMS_SETTINGS_GROUPNAME_LEN +1);
            FREE_MEMORY ((void *)data->list_menu_data.List, MMS_SETTINGS_SUM* sizeof (MfwMnuItem)); 
            FREE_MEMORY ((void *)data, sizeof (T_MMS_ALL_SETTINGS_LIST));
			iSettingsItemIndex = 0;
        }
        else
        {
            TRACE_EVENT ("MMS_All_Settings_destroy called twice");
        }
    }
}

//设置的选项菜单
static T_MFW_HND MMS_Settings_Opt_start(MfwHnd parent_window , MfwMnuAttr *menuAttr)
{
	T_MFW_HND win;	
	MMS_TRACE_FUNCTION("MMS_Settings_Opt_start");
    win = MMS_Settings_Opt_create (parent_window);	
    if( win NEQ NULL )
    {
        SEND_EVENT (win, E_INIT, NULL, (void *)menuAttr);
    }
    return win;
}

static T_MFW_HND MMS_Settings_Opt_create(T_MFW_HND parent_window)
{
	T_MMS_SETTINGS_OPT      * data = (T_MMS_SETTINGS_OPT *)ALLOC_MEMORY (sizeof (T_MMS_SETTINGS_OPT));
    T_MFW_WIN  * win;
	MMS_TRACE_FUNCTION("MMS_Settings_Opt_create");
    data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)MMS_Settings_Opt_win_cb);
    if( data->win EQ NULL )
    {
        return NULL;
    }
	
    data->mmi_control.dialog = (T_DIALOG_FUNC)MMS_Settings_Opt_dialog;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent             = parent_window;
	
    return data->win;
}

static void      MMS_Settings_Opt_destroy(T_MFW_HND win)
{
	T_MFW_WIN              * win_data;
    T_MMS_SETTINGS_OPT     * data;
	P_MMS mms = getMMS();
	MMS_TRACE_FUNCTION("MMS_Settings_Opt_destroy");
    if(win)
    {
        win_data = ((T_MFW_HDR *)win)->data;
        data = (T_MMS_SETTINGS_OPT *)win_data->user;
		
        if( data )
        {
			if(data->kbd)
			{
				kbd_delete(data->kbd);
				data->kbd = NULL;
			}

			if(data->kbd_long)
			{
				kbd_delete(data->kbd_long);
				data->kbd_long = NULL;
			}

			if(data->menu)
			{
				mnuDelete(data->menu);
				data->menu = NULL;
			}
            win_delete (data->win);
			data->win = NULL;
            FREE_MEMORY ((void *)data, sizeof (T_MMS_SETTINGS_OPT));
        }
        else
        {
            MMS_TRACE_EVENT((" "));
        }
    }
}

static void      MMS_Settings_Opt_dialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
	T_MFW_WIN        * win_data = ((T_MFW_HDR *) win)->data;
    T_MMS_SETTINGS_OPT  * data     = (T_MMS_SETTINGS_OPT *)win_data->user;
    T_MFW_HDR    * parent      =  data->parent;
	
    char * title;
	MMS_TRACE_FUNCTION("MMS_Settings_Opt_dialog");
    switch( event )
    {
    case E_INIT:
        /* initialization of administrative data */     
        data->kbd =      kbdCreate(data->win,KEY_ALL,         (MfwCb)MMS_Settings_Opt_kbd_cb);
        data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)MMS_Settings_Opt_kbd_cb);
        title = (char *) MmiRsrcGetText(TxtMMSAllSettings); 
		
        data->menu = mnuListCreate(data->win,(MfwMnuAttr*)parameter, E_MNU_ESCAPE, (MfwCb)MMS_Settings_Opt_mnu_cb,title);
        mnuLang(data->menu,mainMmiLng);
        /* put the (new) dialog window on top of the window stack */
        mnuUnhide(data->menu);
        winShow(win);
        break;
		
	case E_RETURN: 
    case E_EXIT: 
    case E_BACK:
		//SEND_EVENT (parent, E_BACK, 0, NULL); 
		break;
	case E_ABORT:
		MMS_Settings_Opt_destroy(data->win);
        SEND_EVENT (parent, event, 0, NULL); 
		break;
    default:
        return;
    }
}

static int       MMS_Settings_Opt_kbd_cb(MfwEvt e, MfwKbd *k)
{
	T_MFW_HND    win  = mfwParent(mfw_header());
    T_MFW_WIN  * win_data = ((T_MFW_HDR *)win)->data;
    T_MMS_SETTINGS_OPT      * data = (T_MMS_SETTINGS_OPT *)win_data->user;
	P_MMS  mms = getMMS();
	MMS_TRACE_FUNCTION("MMS_Settings_Opt_kbd_cb");
    if( e & KEY_LONG )
    {
        switch( k->code )
        {
        case KCD_HUP: /* back to previous menu */
	/*		if(mms->manager)
			{
				MMS_Codec_Destory();
				manager_on_destroy();
				mms->manager = NULL;			
			}*/
			
            returntoidle(0);
            break;
        case KCD_RIGHT: 
            return MFW_EVENT_REJECTED; /* handled by idle */
        default: /* no response to all other keys */
            return MFW_EVENT_CONSUMED;
        }
    }
    else
    {
        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:
            mnuSelect(data->menu);
            break;
        case KCD_HUP: /* back to previous menu */
		/*	if(mms->manager)
			{
				MMS_Codec_Destory();
				manager_on_destroy();
				mms->manager = NULL;

⌨️ 快捷键说明

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