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

📄 mmimmsnew.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:

static MfwMnuAttr MMS_Receiver_List_Attrib =
{
    0,
	&menuListArea,//&MMS_Receiver_List_Area,
	MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
	-1,                                 /* use default font         */
	NULL,                               /* with these items         */
	0                                   /* number of items     */
};

typedef struct
{
    /* administrative data */	
    T_MMI_CONTROL   mmi_control;
    T_MFW_HND       win;
    T_MFW_HND       parent;	
	
    /* associated handlers */
	
    /* internal data */
    ListMenuData    list_menu_data;	
} T_MMS_RECEIVER_LIST;    

static T_MFW_HND MMS_Receiver_List_start(MfwHnd parent_window );
static T_MFW_HND MMS_Receiver_List_create (T_MFW_HND window);
static void      MMS_Receiver_List_dialog (T_MFW_HND win, USHORT event, USHORT value, void * parameter);
static void      MMS_Receiver_List_listmenu_create (T_MMS_RECEIVER_LIST *data);
static void      MMS_Receiver_List_listmenu_cb (T_MFW_HND * win, ListMenuData * ListData);
static void      MMS_Receiver_List_destroy (T_MFW_HND window);

static void      MMS_Receiver_List_Refresh(MMS_FOLDER_TYPE folderType, Refresh_Action command);

INFO_DIALOG_DATA iddMMSSending = {NULL,NULL};

typedef struct _RECEIVER_LIST_WIN_INFO_
{
	T_MFW_HND  hndRecListWin;
	T_MFW_HND  hndRecList;
}RECEIVER_LIST_WIN_INFO;

RECEIVER_LIST_WIN_INFO gMMSRecvHndInfo={
	NULL,
    NULL
};
#if 0
int       MMS_Sending_dialog_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason);
void             MMS_Sending_End(void);
#endif

//接收者列表选项
typedef struct
{
    /* administrative data */	
    T_MMI_CONTROL   mmi_control;
    T_MFW_HND       win;   
    T_MFW_HND       parent;	
    /* associated handlers */	
    T_MFW_HND       kbd;
    T_MFW_HND       kbd_long;
    T_MFW_HND       menu;
    /* internal data */
}T_MMS_RECEIVER_LIST_OPT; 

static T_MFW_HND MMS_Receiver_List_Opt_start(MfwHnd parent_window , MfwMnuAttr *menuAttr);
static T_MFW_HND MMS_Receiver_List_Opt_create(T_MFW_HND parent_window);
static void MMS_Receiver_List_Opt_destroy(T_MFW_HND win);
static void MMS_Receiver_List_Opt_dialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int MMS_Receiver_List_Opt_kbd_cb(MfwEvt e, MfwKbd *k);
static int MMS_Receiver_List_Opt_mnu_cb ( MfwEvt e, MfwMnu *m );
static int MMS_Receiver_List_Opt_win_cb(MfwEvt e, MfwWin *w);

static int MMS_Receiver_List_Opt_TelNumber(MfwMnu* m, MfwMnuItem* i);
static int MMS_Receiver_List_Opt_Email(MfwMnu* m, MfwMnuItem* i);

static int MMS_Receiver_List_Opt_Delete(MfwMnu* m, MfwMnuItem* i);		
static int MMS_Receiver_List_Opt_Edit(MfwMnu* m, MfwMnuItem* i);

/*talcon delete it*/
//MfwRect MMS_Receiver_List_OPTItems_Area = {0,0,SCREEN_SIZE_X,LINE_HEIGHT*9};
static MfwMnuItem MMS_Receiver_List_OPTItems[] =
{
	{(MfwIcnAttr*)&colist, 0,0, (char *)TxtMMSTelNumber,   0, (MenuFunc)MMS_Receiver_List_Opt_TelNumber,   item_flag_none},		
	{(MfwIcnAttr*)&colist, 0,0, (char *)TxtMMSEmail,   0, (MenuFunc)MMS_Receiver_List_Opt_Email,   item_flag_none},		
};

static MfwMnuAttr MMS_Receiver_List_OPTAttr =
{
    0,
		&menuListArea,//&MMS_Receiver_List_OPTItems_Area,
		MNU_LEFT | MNU_LIST | MNU_CUR_LINE, 
		-1,                                
		MMS_Receiver_List_OPTItems,                    
		sizeof(MMS_Receiver_List_OPTItems)/sizeof(MfwMnuItem) 
}; 


static MfwMnuItem MMS_Receiver_List_OPTItems2[] =
{
	{(MfwIcnAttr*)&colist, 0, 0, (char*)TxtMMSDelete,        0, (MenuFunc)MMS_Receiver_List_Opt_Delete,   item_flag_none},		
	{(MfwIcnAttr*)&colist, 0, 0, (char *)TxtMMSEdit, 0, (MenuFunc)MMS_Receiver_List_Opt_Edit,   item_flag_none},		
};

static MfwMnuAttr MMS_Receiver_List_OPTAttr2 =
{
    0,
		&menuListArea,//&MMS_Receiver_List_OPTItems_Area,
		MNU_LEFT | MNU_LIST | MNU_CUR_LINE, 
		-1,                                
		MMS_Receiver_List_OPTItems2,                    
		sizeof(MMS_Receiver_List_OPTItems2)/sizeof(MfwMnuItem) 
}; 
//接收者编辑窗口
typedef struct
{
    T_MMI_CONTROL   mmi_control;
    T_MFW_HND       win;
    T_MFW_HND       parent;
	RECEIVER_TYPE   edtID;
	
    T_MFW_HND       editor;
    T_EDITOR_DATA   editor_info; 
}T_MMS_RECEIVER_EDITOR;     //主题或内容编辑窗口参数定义 

static T_MFW_HND MMS_Receiver_Edit_start  (MfwHnd parent_window, RECEIVER_TYPE edtID);
static T_MFW_HND MMS_Receiver_Edit_create (T_MFW_HND win);
static void		 MMS_Receiver_Edit_dialog (T_MFW_HND win, USHORT event, USHORT value, void * parameter);
static void		 MMS_Receiver_Edit_edit_cb(T_MFW_HND win, USHORT Identifier, SHORT reason);
static void      MMS_Receiver_Edit_destroy (T_MFW_HND window);
static void      MMS_Receiver_Edit_LoadEditDefault(T_EDITOR_DATA *editor_data);

/***************************************************************/
/*                  多媒体信息窗口                                 */
/***************************************************************/

int MMS_Menu_New(MfwMnu* m, MfwMnuItem* i)
{
/*
	char stringbu[30] = "xiexiaodong hello";
	char stringbu2[30];
	int ret;
	T_FFS_FD fp = MMS_fopen("/mms/xie.txt","w");
	MMS_TRACE_EVENT(("fp= %d",(int)fp));
	if(fp)
	{	
		ret = MMS_fwrite(stringbu, 1, 11,  fp);
		MMS_TRACE_EVENT(("fwrite %d bytes",ret));

		MMS_fclose(fp);
    	fp = MMS_fopen("/mms/xie.txt","r");
		ret = MMS_fread(stringbu2, 1, 5, fp);
		MMS_TRACE_EVENT(("fread %d bytes,the results is %s %d",ret ,stringbu2, (int)fp));
		MMS_fclose(fp);
	}

	MMS_deletefile("temp.txt", "/mms");
	MMS_deletefiles("/mms");*/
//	MMS_Test_Send_Message();   

//	FILE* fp= fopen("c:\mms\dmf.txt","w");

	T_MFW_HND   win = mfwParent(mfwHeader());
	P_MMS		mms = getMMS();	
	MMS_TRACE_FUNCTION("MMS_Menu_New"); 
	if(mms->editor==NULL)
	{	
		mms->editor = editor_on_initialize(EDITOR_INIT_NEW, NULL);
		if(mms->editor==NULL)
		{
			MMS_TRACE_EVENT(("MMS editor initialize error in MMS_Menu_New()"));
			return 0;
		}	
		manager_set_currentfolder(mms->manager->draftfolder);//新建消息后,将会把把消息作为draft folder中的一条,但是MMS库中并没有把当前folder设为draftfolder
	} 
	MMS_Refresh_FrameData(CLEAR);
	
	gCurMMSPos = MMS_NEW;
	MMS_Menu_New_start(win);	 
	return 1;   
}

T_MFW_HND MMS_Menu_New_start(T_MFW_HND parent_window)
{	
	T_MFW_HND      win;
	MMS_TRACE_FUNCTION("MMS_Menu_New_start"); 
	win = MMS_Menu_New_create(parent_window);	   	   
    if( win NEQ NULL )
    {
        SEND_EVENT (win, E_INIT, 0, NULL);
    }
    return win;	
}

T_MFW_HND  MMS_Menu_New_create(T_MFW_HND window)
{
	T_MMS_MENU_NEW * data = (T_MMS_MENU_NEW *)ALLOC_MEMORY (sizeof (T_MMS_MENU_NEW));
    T_MFW_WIN  * win;
	
    MMS_TRACE_FUNCTION("MMS_Menu_New_create"); 
    data->win =win_create (window, 0, 0, NULL);
    if( data->win EQ NULL )
    {
        return NULL;
    }

	MMS_Set_MMSNew_WHnd(data->win);

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

void MMS_Menu_New_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    * data = (T_MMS_MENU_NEW *)win_data->user;
    T_MFW_HND         * parent=data->parent;
	MMS_TRACE_FUNCTION("MMS_Menu_New_dialog"); 
    switch( event )
    {
    case E_INIT:
        /* initialization of the dialog data */
        data->list_menu_data.ListPosition   = iMenuItemIndex+1;/* True cursor position in list menu. */
        data->list_menu_data.CursorPosition = iMenuItemIndex;/* Cursor position in list snapshot.  */
        data->list_menu_data.SnapshotSize   = MMS_Menu_New_Listmenu_Num;/* Number of list entries to view.    */
        data->list_menu_data.Font           = 0;
        data->list_menu_data.LeftSoftKey    = TxtSoftSelect;
        data->list_menu_data.RightSoftKey   = TxtSoftOptions;
        data->list_menu_data.KeyEvents      = KEY_ALL^KEY_CALL;//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_Menu_New_Attrib;
        data->list_menu_data.autoDestroy    = TRUE;

        MMS_Menu_New_listmenu_create(data);
        break;
		
    case E_RETURN: 
    case E_EXIT: 
    case E_BACK: 
		MMS_Menu_New_destroy(data->win);
        MMS_Menu_New_start(parent);
        break;
		
    case E_ABORT:   
		iMenuItemIndex = 0;
        MMS_Menu_New_destroy(data->win);
        SEND_EVENT (parent, E_BACK, 0, NULL); /* forward event to parent */
        break;
    default:
        return;
    }
	return;
}

/*calculate the string length merged by  str1 and str2*/
unsigned int MMS_String_Merge_Len(char *str1, char *str2)
{
	unsigned char *ss1=(unsigned char*)str1;
	unsigned char *ss2=(unsigned char*)str2;
	unsigned int len1=wstrlen((char*)ss1);
	unsigned int len2=wstrlen((char*)ss2);
	
	if (*ss1!=0x80&&*ss2!=0x80)
	{
		return len1+len2+1;
	} 
	else if (*ss1==0x80&&*ss2==0x80)
	{
	    return len1+len2+2;
	}
	else if (*ss1==0x80&&*ss2!=0x80)
	{
		return len1+2*len2+3;
	}
	else if (*ss1!=0x80&&*ss2==0x80)
	{
		return 2*len1+len2+3;
	}
}

void MMS_Menu_New_listmenu_create(T_MMS_MENU_NEW *data)
{
    int i;
	char *strItem = NULL;
	char *strItemEdit = NULL;
	P_MMS mms= getMMS();
	MMS_TRACE_FUNCTION("MMS_Menu_New_listmenu_create"); 
    /* allocate sufficient memory to hold the maximum list of menu items */
    data->list_menu_data.List = (MfwMnuItem *)ALLOC_MEMORY (MMS_Menu_New_Listmenu_Num * sizeof (MfwMnuItem));

    data->list_menu_data.ListMenuFlag=1;//for display the title
    data->list_menu_data.ListMenuHeadStr=(char *) MmiRsrcGetText(TxtMMSNew);
    for( i=0; i < MMS_Menu_New_Listmenu_Num; i++ ) /* Fill Menu List */
    {
        data->list_menu_data.List[i].icon = (MfwIcnAttr*)&colist;
        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;

#if 0
//		data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY ( MMS_NEW_ITEMLEN_MAX[i] );
		if(i == 0)
		{
			data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY ( 2*MMS_NEW_ITEMLEN_MAX[i] + wstrlen(MmiRsrcGetText(TxtNewMMSTitle)) +3);
	    	wstrcpy(data->list_menu_data.List[i].str ,(char *) MmiRsrcGetText(TxtNewMMSTitle));
		}
		else if(i == 1)
		{
			data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY ( 2*MMS_NEW_ITEMLEN_MAX[i] + wstrlen(MmiRsrcGetText(TxtNewMMSPicture)) +3);
			wstrcpy(data->list_menu_data.List[i].str ,(char *) MmiRsrcGetText(TxtNewMMSPicture));
		}
		else if(i == 2)
		{
			data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY ( 2*MMS_NEW_ITEMLEN_MAX[i] + wstrlen(MmiRsrcGetText(TxtNewMMSMusic)) +3);
			wstrcpy(data->list_menu_data.List[i].str ,(char *) MmiRsrcGetText(TxtNewMMSMusic));
		}
		else if(i == 3)
		{
			data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY ( 2*MMS_NEW_ITEMLEN_MAX[i] + wstrlen(MmiRsrcGetText(TxtNewMMSText)) +3 );
			wstrcpy(data->list_menu_data.List[i].str ,(char *) MmiRsrcGetText(TxtNewMMSText));
		}
					
		switch(i)
		{
		case 0:
			strItem =  (char *)editor_get_mmstitle();
			if(strItem && strItem[0] != '\0')
				wstrcat(data->list_menu_data.List[i].str,strItem);			
			break;			
		case 1:
			strItem = (char *)editor_get_imagefilename();
			if( strItem && strItem[0] != '\0')
			{
				if(strstr(strItem,"/"))
				{
				strItem = strrchr(strItem,'/');
				if(strItem)
				{
					strItem +=1;
				wstrcat(data->list_menu_data.List[i].str, strItem);				
				}	
			}
				else
				{
                    wstrcat(data->list_menu_data.List[i].str, strItem);	
				}
			
			}
			break;			
		case 2:			
			strItem = (char *)editor_get_audiofilename();
			if( strItem && strItem[0] != '\0')
			{
				if(strstr(strItem,"/"))
				{
				strItem = strrchr(strItem,'/');
				if(strItem)
				{
					strItem +=1;
				wstrcat(data->list_menu_data.List[i].str, strItem);	
				}	
			}
				else
				{
                    wstrcat(data->list_menu_data.List[i].str, strItem);	
				}
			}
			break;			
		case 3:
			strItem = (char *)editor_get_textstring();
			if(strItem && strItem[0] != '\0')
				wstrcat(data->list_menu_data.List[i].str, strItem);					
			break;
		default:
			break;
		}
#else 
		if(i == 0)
		{
			strItem = MmiRsrcGetText(TxtNewMMSTitle);
			strItemEdit =  (char *)editor_get_mmstitle();
			if(strItemEdit && strItemEdit[0] != '\0')
			{
				data->iItemLen[i] = MMS_String_Merge_Len(strItem, strItemEdit);
				data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY (data->iItemLen[i]);
				wstrcpy(data->list_menu_data.List[i].str ,strItem);
				wstrcat(data->list_menu_data.List[i].str,strItemEdit);

⌨️ 快捷键说明

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