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

📄 mmimmsnew.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	T_MFW_WIN              * win_data;
    T_MMS_MENU_NEW_LIST_PIC     * data;
	T_DISPLAY_DATA   display_info;
	MMS_TRACE_FUNCTION("MMS_Menu_New_Pic_ShowAffirmWin"); 	
    if(win)
    {
        win_data = ((T_MFW_HDR *)win)->data;
        data = (T_MMS_MENU_NEW_LIST_PIC *)win_data->user;
   		
		dialog_info_init(&display_info);//gdy add
		display_info.LeftSoftKey  = TxtAdd;
		display_info.RightSoftKey = TxtSoftBack;
	//	display_info.TextId2       = TxtCancelAffirm;//TxtCFCancelAffirm;
		display_info.TextId      = '\0';
		display_info.TextString   = '\0';
		display_info.TextString2   = '\0';
		display_info.Time         = FOREVER;
		display_info.iconindex=REMIND_WAP;  
		display_info.Callback     = (T_VOID_FUNC)MMS_Menu_New_Pic_cb;
		display_info.KeyEvents    = KEY_HUP | KEY_LEFT | KEY_RIGHT;

		data->info_win=info_dialog(data->win, &display_info);
	}

}       

static void MMS_Menu_New_Pic_cb(T_MFW_HND win,USHORT identifier, UBYTE reason)
{
	T_MFW_WIN              * win_data=((T_MFW_HDR *)win)->data;
    T_MMS_MENU_NEW_LIST_PIC     * data=(T_MMS_MENU_NEW_LIST_PIC *)win_data->user;
	T_MFW_HND              * parent=data->parent;
    MMS_TRACE_FUNCTION("MMS_Menu_New_Pic_cb"); 
	switch(reason)
	{
		case INFO_KCD_LEFT:
			win_delete (data->info_win);
			SEND_EVENT (win, E_BACK, 0, NULL);
			break;
		case INFO_KCD_RIGHT:
			win_delete (data->info_win);
			SEND_EVENT (win, E_ABORT, 0, NULL);
			break;
		default:
			break;
	}

} 

/**********************************************************************/
/*                       主题或邮件内容填写窗口                       */
/**********************************************************************/
T_MFW_HND MMS_Menu_New_Edit_start(T_MFW_HND parent, int  edtID)
{
    T_MFW_HND win;
    win = MMS_Menu_New_Edit_create(parent);
    MMS_TRACE_FUNCTION("MMS_Menu_New_Edit_start"); 
    if( win NEQ NULL )
    {
		SEND_EVENT (win, E_INIT, edtID, NULL);
    }
    return win;
}


static T_MFW_HND MMS_Menu_New_Edit_create(MfwHnd parent_window)
{	
	T_MMS_MENU_NEW_EDITOR  * data = (T_MMS_MENU_NEW_EDITOR *)ALLOC_MEMORY (sizeof (T_MMS_MENU_NEW_EDITOR));
	T_MFW_WIN  * win;
	MMS_TRACE_FUNCTION("MMS_Menu_New_Edit_create");    	   
	data->win = win_create (parent_window, 0, E_WIN_VISIBLE, NULL);
	if( data->win EQ NULL )
	{
	   return NULL;
	}
	   
	data->mmi_control.dialog = (T_DIALOG_FUNC)MMS_Menu_New_Edit_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;
}

static void MMS_Menu_New_Edit_dialog (T_MFW_HND win, USHORT event, USHORT value, void * parameter)
{  
    T_MFW_WIN                  * win_data = ((T_MFW_HDR *) win)->data;
	T_MMS_MENU_NEW_EDITOR      * data = (T_MMS_MENU_NEW_EDITOR *)win_data->user;
    T_MFW_HDR                  * parent      =  data->parent;
    MMS_TRACE_FUNCTION("MMS_Menu_New_Edit_dialog");  
	switch(event)
	{
	case E_INIT:
		{			
			switch(value)
			{
			case MMS_Menu_New_Edit_Title:  //主题
				data->edtID = MMS_Menu_New_Edit_Title;
				MMS_Menu_New_Edit_LoadEditDefault(&(data->editor_info));
				editor_attr_init_fullscr(&(data->editor_info.editor_attr),1,TxtNewMMSTitle,(char *)frameData.title,MMS_NEW_ITEMLEN_MAX[0],edtCurBar1);
				data->editor_info.mode                 = TEXTINPUT_MODE;     
				data->editor_info.min_enter            = 0; 
				data->editor_info.LeftSoftKey          = TxtConfirm;	
				data->editor_info.edtInPbk             = 0;
				//data->editor_info.AlternateLeftSoftKey = TxtSoftOptions;
				data->editor_info.RightSoftKey         = TxtDelete;
				data->editor_info.Callback             = (T_EDIT_CB)MMS_Menu_New_Edit_edit_cb;
				data->editor_info.destroyEditor        = FALSE;
				data->editor_info.InputMode            = PINYIN_INPUT_MODE;  				
//				data->editor_info.editor_attr.e_size   = 163;
				data->editor                           = text_input(win, &(data->editor_info));//text_input(win, &editor_data);
				break;
			
			case MMS_Menu_New_Edit_Text:   //邮件内容
				data->edtID = MMS_Menu_New_Edit_Text;
				MMS_Menu_New_Edit_LoadEditDefault(&(data->editor_info));
				editor_attr_init_fullscr(&(data->editor_info.editor_attr),1,TxtNewMMSText,(char *)frameData.text,MMS_NEW_ITEMLEN_MAX[3],edtCurBar1);
				data->editor_info.mode                 = TEXTINPUT_MODE;  
				//data->editor_info.Identifier           = SMSSEND_ID_TEXTEDIT ; 
				data->editor_info.min_enter            = 0; 
				data->editor_info.LeftSoftKey          = TxtConfirm;	
				data->editor_info.edtInPbk             = 0;
				//data->editor_info.AlternateLeftSoftKey = TxtSoftOptions;
				data->editor_info.RightSoftKey         = TxtDelete;
				data->editor_info.Callback             = (T_EDIT_CB )MMS_Menu_New_Edit_edit_cb;
				data->editor_info.destroyEditor        = FALSE;
				data->editor_info.InputMode            = PINYIN_INPUT_MODE;  				
//				data->editor_info.editor_attr.e_size   = 163;
				data->editor                           = text_input(win, &(data->editor_info));
				break;
			default:
				return;
			}
		}
		break;
		
	case E_ABORT:
	case E_EXIT: 
		MMS_Menu_New_Edit_destroy(data->win);
        SEND_EVENT (parent, event, 0, NULL); /* forward event to parent */
		break;
	default:
		return;
	}
	return;
}

static void MMS_Menu_New_Edit_edit_cb(T_MFW_HND win, USHORT Identifier, SHORT reason)
{
	T_MFW_WIN           * win_data = ((T_MFW_HDR *) win)->data;
    T_MMS_MENU_NEW_EDITOR  * data     = (T_MMS_MENU_NEW_EDITOR *)win_data->user;
    T_MFW_HDR    * parent      =  data->parent;
    P_MMS mms = getMMS();
    MMS_TRACE_FUNCTION("MMS_Menu_New_Edit_edit_cb");  
	switch( reason )
    {
    case INFO_KCD_ALTERNATELEFT:
    case INFO_KCD_LEFT:
	    MMS_Menu_New_Edit_destroy(data->win);
	    SEND_EVENT (parent, E_EXIT, 0, NULL);
	    break;

    case INFO_KCD_RIGHT:
		SEND_EVENT (win, E_EXIT, 0, NULL);
//		SEND_EVENT (parent, E_EXIT, 0, NULL);
        break;
	case INFO_KCD_HUP:
		if(mms->editor)
		{
			editor_on_destroy();
			mms->editor = NULL;
		}
/*
        if(mms->manager)
		{
			MMS_Codec_Destory();
			manager_on_destroy();
			mms->manager = NULL;
		}*/
/*
		
		if(mms->player)
		{
			player_destrory();
			mms->player = NULL;
		}*/

		iMenuItemIndex = 0;
		iListMenuItemIndex =0;
		returntoidle(0);
		break;

    default:
        break;
    }
	return;
}

static void MMS_Menu_New_Edit_destroy(MfwHnd own_window)
{   
    T_MFW_WIN * win_data;
    T_MMS_MENU_NEW_EDITOR    * data = NULL; 
	P_MMS mms = getMMS();
    pMessage pMsg = NULL;
	MMS_TRACE_FUNCTION("MMS_Menu_New_Edit_destroy");  
    if( own_window )
    {
		win_data = ((T_MFW_HDR *)own_window)->data;
		if( win_data != NULL )
			data = (T_MMS_MENU_NEW_EDITOR *)win_data->user;
		
		if( data->edtID == MMS_Menu_New_Edit_Title )
		{
		   if(mms && mms->editor)
			   pMsg = editor_get_msg();
           msg_set_title(pMsg, (char*)(frameData.title) );
		}
		else if( data->edtID == MMS_Menu_New_Edit_Text)
		{
           editor_text_new( (char*)(frameData.text) );
		}
      		
		if (data)
		{
			if(data->editor != 0)
			{
				text_input_destroy(data->editor);
				data->editor = NULL;
			}		
			win_delete (data->win);
		    /*     
		     * MMS_FREE Memory
		     */
		    FREE_MEMORY ((void *)data, sizeof (T_MMS_MENU_NEW_EDITOR));
		}
	    else
		{
		    MMS_TRACE_EVENT((" "));
		}
	}   
}

static void MMS_Menu_New_Edit_LoadEditDefault(T_EDITOR_DATA *editor_data)
{	
	MMS_TRACE_FUNCTION("MMS_Menu_New_Edit_LoadEditDefault");  
	editor_attr_init(&editor_data->editor_attr, NULL, edtCurNone, 0, 0, 0);
	editor_data->hide				= FALSE;
	editor_data->min_enter			= 1;  
	editor_data->LeftSoftKey		= TxtSoftSelect;
	editor_data->RightSoftKey		= TxtSoftBack;
	editor_data->AlternateLeftSoftKey   = TxtNull;
	editor_data->TextId				= '\0';  
	editor_data->Identifier			=  0; 
	editor_data->TextString			= NULL;  
	editor_data->timeout			= FOREVER; 
	editor_data->mode                = ALPHA_MODE;
	editor_data->Callback			= NULL;
	editor_data->destroyEditor		= TRUE ; 
}


/**********************************************************************/
/*                          右软键显示菜单窗口                        */
/**********************************************************************/

static T_MFW_HND MMS_New_List_Right_start(MfwHnd parent_window , MfwMnuAttr *menuAttr)
{
    T_MFW_HND win;	
	MMS_TRACE_FUNCTION("MMS_New_List_Right_start");  
    win = MMS_New_List_Right_create (parent_window);	
    if( win NEQ NULL )
    {
        SEND_EVENT (win, E_INIT, NULL, (void *)menuAttr);
    }
    return win;
}

static T_MFW_HND MMS_New_List_Right_create(T_MFW_HND parent_window)
{
	T_MMS_NEW_LIST_RIGHT      * data = (T_MMS_NEW_LIST_RIGHT *)ALLOC_MEMORY (sizeof (T_MMS_NEW_LIST_RIGHT));
    T_MFW_WIN  * win;
	MMS_TRACE_FUNCTION("MMS_New_List_Right_create");  
    data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)MMS_New_List_Right_win_cb);
    if( data->win EQ NULL )
    {
        return NULL;
    }
  	
    data->mmi_control.dialog = (T_DIALOG_FUNC)MMS_New_List_Right_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_New_List_Right_destroy(T_MFW_HND win)
{
    T_MFW_WIN              * win_data;
    T_MMS_NEW_LIST_RIGHT     * data;

	
	MMS_TRACE_FUNCTION("MMS_New_List_Right_destroy");  
    if(win)
    {
        win_data = ((T_MFW_HDR *)win)->data;
        data = (T_MMS_NEW_LIST_RIGHT *)win_data->user;

        if( data )
        {
            win_delete (data->win);
			MMS_TRACE_EVENT(("before MMS_New_List_Right_destroy"));
            FREE_MEMORY ((void *)data, sizeof (T_MMS_NEW_LIST_RIGHT));
			MMS_TRACE_EVENT(("after MMS_New_List_Right_destroy "));
        }
        else
        {
            MMS_TRACE_EVENT((" "));
        }
    }
}

static void MMS_New_List_Right_dialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
	T_MFW_WIN        * win_data = ((T_MFW_HDR *) win)->data;
    T_MMS_NEW_LIST_RIGHT  * data     = (T_MMS_NEW_LIST_RIGHT *)win_data->user;
    T_MFW_HDR    * parent      =  data->parent;
  
    char * title;
	MMS_TRACE_FUNCTION("MMS_New_List_Right_dialog");  
    switch( event )
    {
    case E_INIT:
        /* initialization of administrative data */       
        data->kbd =      kbdCreate(data->win,KEY_ALL,         (MfwCb)MMS_New_List_Right_kbd_cb);
        data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)MMS_New_List_Right_kbd_cb);
        title = (char *) MmiRsrcGetText(TxtSoftOptions);  // get the editor title text

        data->menu = mnuListCreate(data->win,(MfwMnuAttr*)parameter, E_MNU_ESCAPE, (MfwCb)MMS_New_List_Right_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_BACK:
		MMS_New_List_Right_destroy(data->win);
    	SEND_EVENT (parent, E_BACK, 0, NULL);
		break;

	case E_ABORT:
        MMS_New_List_Right_destroy(data->win);
		SEND_EVENT (parent, E_ABORT, 0, NULL);
		break;
		
    default:
        return;
    }
}

static int MMS_New_List_Right_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_NEW_LIST_RIGHT      * data = (T_MMS_NEW_LIST_RIGHT *)win_data->user;
	P_MMS mms = getMMS();
    MMS_TRACE_FUNCTION("MMS_New_List_Right_kbd_cb");  
    if( e & KEY_LONG )
    {
        switch( k->code )
        {
        case KCD_HUP: /* back to previous menu */
			if(mms->editor)
			{
				editor_on_destroy();
				mms->editor = NULL;
			}
/*
			if(mms->manager)
			{
				MMS_Codec_Destory();
				manager_on_destroy();
				mms->manager = NULL;
			}*/
			iMenuItemIndex = 0;
            returntoidle(0);
            break;
        case KCD_RIGHT:
            return MFW_EVENT_REJECTED; /* handled by idle */
        default: /* no response to all other keys */
            return MFW_EVENT_CONSU

⌨️ 快捷键说明

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