📄 mmimmsnew.c
字号:
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 + -