📄 mmimmsnew.c
字号:
}
else
{
data->iItemLen[i] = wstrlen(strItem)+2;
data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY (data->iItemLen[i]);
wstrcpy(data->list_menu_data.List[i].str ,strItem);
}
}
else if(i == 1)
{
strItem = MmiRsrcGetText(TxtNewMMSPicture);
strItemEdit = (char *)editor_get_imagefilename();
if( strItemEdit && strItemEdit[0] != '\0')
{
if(strstr(strItemEdit,"/"))
{
strItemEdit = strrchr(strItemEdit,'/');
if(strItemEdit)
{
strItemEdit +=1;
}
}
else if(strstr(strItemEdit,"\\"))
{
strItemEdit = strrchr(strItemEdit,'\\');
if(strItemEdit)
{
strItemEdit +=1;
}
}
}
if(strItemEdit && strItemEdit[0] != '\0')
{
data->iItemLen[i] = MMS_String_Merge_Len(strItem, strItemEdit);
data->list_menu_data.List[1].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);
}
else
{
data->iItemLen[i] = wstrlen(strItem)+2;
data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY (data->iItemLen[i]);
wstrcpy(data->list_menu_data.List[i].str ,strItem);
}
}
else if(i == 2)
{
strItem = MmiRsrcGetText(TxtNewMMSMusic);
strItemEdit = (char *)editor_get_audiofilename();
if( strItemEdit && strItemEdit[0] != '\0')
{
if(strstr(strItemEdit,"/"))
{
strItemEdit = strrchr(strItemEdit,'/');
if(strItemEdit)
{
strItemEdit +=1;
}
}
else if(strstr(strItemEdit, "\\"))
{
strItemEdit = strrchr(strItemEdit,'\\');
if(strItemEdit)
{
strItemEdit +=1;
}
}
}
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);
}
else
{
data->iItemLen[i] = wstrlen(strItem)+2;
data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY( data->iItemLen[i]);
wstrcpy(data->list_menu_data.List[i].str ,strItem);
}
}
else if(i == 3)
{
strItem = MmiRsrcGetText(TxtNewMMSText);
strItemEdit = (char *)editor_get_textstring();
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);
}
else
{
data->iItemLen[i] = wstrlen(strItem)+2;
data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY (data->iItemLen[i]);
wstrcpy(data->list_menu_data.List[i].str ,strItem);
}
}
#endif
}
//actual number of entries in list menu
data->list_menu_data.ListLength = MMS_Menu_New_Listmenu_Num;
data->list_menu_data.autoDestroy = TRUE;
listDisplayListMenu(data->win, &data->list_menu_data, (ListCbFunc)MMS_Menu_New_listmenu_cb,0);
//added by xie for displaying current slide and the total num of slide
{
char title[10];
unsigned char curSlide = (unsigned char)editor_get_slideindex();
unsigned char slideNum = (unsigned char)editor_get_slidecount();
sprintf(title,"%d/%d",curSlide+1,slideNum);
drawcolorclarity((SCREEN_SIZE_X- get_StringWidth(title))/2,SCREEN_SIZE_Y-dspl_GetFontHeight()-1,title, 0x000000);
}
}
void MMS_Menu_New_listmenu_cb (T_MFW_HND * win, ListMenuData * ListData)
{
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;
P_MMS mms = getMMS();
pMMS_EDocument edoc = NULL;
pMMS_Slide slide = NULL;
MMS_TRACE_FUNCTION("MMS_Menu_New_listmenu_cb");
if(mms->editor)
{
edoc = mms->editor->eDoc;
if(edoc)
slide = edoc->slide_cur;
}
switch( ListData->Reason )
{
case LISTS_REASON_OK:
case LISTS_REASON_SELECT:
iMenuItemIndex = ListData->ListPosition;
if(MMS_Menu_New_Edit_Title == iMenuItemIndex)
{
char *strItem = (char*)editor_get_mmstitle();
memset(frameData.title, 0, sizeof(frameData.title));
if(strItem && strItem[0]!='\0')
wstrcpy(frameData.title , strItem );
MMS_Menu_New_Edit_start(win, iMenuItemIndex);
}
else if(MMS_Menu_New_Edit_Text == iMenuItemIndex)
{
char *strItem = (char*)editor_get_textstring();
memset(frameData.text, 0, sizeof(frameData.text));
if(strItem && strItem[0] != '\0')
wstrcpy(frameData.text, strItem);
MMS_Menu_New_Edit_start(win, iMenuItemIndex);
}
else if(MMS_Menu_New_List_Image == iMenuItemIndex)
{
memset(frameData.imageFileName, 0, sizeof(frameData.imageFileName));
MMS_Menu_New_List_start(win, iMenuItemIndex);
}
else
{
memset(frameData.audioFileName, 0, sizeof(frameData.audioFileName));
MMS_Menu_New_List_start(win, iMenuItemIndex);
}
break;
case LISTS_REASON_BACK: /* back to previous menu */
if(slide)
{
if(slide->image_flag && slide->audio_type)
MMS_New_List_Right_start(win,&MMS_NEW_EDIT_OPTAttr11);
else if(slide->image_flag)
MMS_New_List_Right_start(win,&MMS_NEW_EDIT_OPTAttr10);
else if(slide->audio_type)
MMS_New_List_Right_start(win,&MMS_NEW_EDIT_OPTAttr01);
else
MMS_New_List_Right_start(win,&MMS_NEW_EDIT_OPTAttr00);
}
break;
case LISTS_REASON_HANGUP:
if(mms->editor)
{
editor_on_destroy();
mms->editor = NULL;
}
/*
if(mms->manager)
{
MMS_Codec_Destory();
manager_on_destroy();
mms->manager = NULL;
}*/
iMenuItemIndex = 0;
break;
default:
break;
}
return;
}
void MMS_Menu_New_destroy (T_MFW_HND window)
{
T_MFW_WIN * win_data;
T_MMS_MENU_NEW * data;
USHORT i;
MMS_TRACE_FUNCTION("MMS_Menu_New_destroy");
if( window )
{
win_data = ((T_MFW_HDR *)window)->data;
data = (T_MMS_MENU_NEW *)win_data->user;
if( data )
{
win_delete (data->win);
MMS_Set_MMSNew_WHnd( NULL );
#if 0
FREE_MEMORY( (void *)(data->list_menu_data.List[0].str), 2*MMS_NEW_ITEMLEN_MAX[0] + wstrlen(MmiRsrcGetText(TxtNewMMSTitle)) +3);
FREE_MEMORY( (void *)(data->list_menu_data.List[1].str), 2*MMS_NEW_ITEMLEN_MAX[1] + wstrlen(MmiRsrcGetText(TxtNewMMSPicture)) +3);
FREE_MEMORY( (void *)(data->list_menu_data.List[2].str), 2*MMS_NEW_ITEMLEN_MAX[2] + wstrlen(MmiRsrcGetText(TxtNewMMSMusic)) +3);
FREE_MEMORY( (void *)(data->list_menu_data.List[3].str), 2*MMS_NEW_ITEMLEN_MAX[3] + wstrlen(MmiRsrcGetText(TxtNewMMSText)) +3);
#else
for( i = 0; i < MMS_Menu_New_Listmenu_Num; i++ )
FREE_MEMORY( (void *)(data->list_menu_data.List[i].str), data->iItemLen[i]);
#endif
FREE_MEMORY ((void *)data->list_menu_data.List, MMS_Menu_New_Listmenu_Num* sizeof (MfwMnuItem));
FREE_MEMORY ((void *)data, sizeof (T_MMS_MENU_NEW));
}
else
{
MMS_TRACE_EVENT (("MMS_Menu_New_destroy() called twice"));
}
}
}
/*********************************************************************/
/* 图片或铃声选择窗口 */
/*********************************************************************/
T_MFW_HND MMS_Menu_New_List_start(T_MFW_HND parent, int edtID)
{
T_MFW_HND win;
win = MMS_Menu_New_List_create(parent);
MMS_TRACE_FUNCTION("MMS_Menu_New_List_start");
if( win NEQ NULL )
{
SEND_EVENT (win, E_INIT, edtID, NULL);
}
return win;
}
T_MFW_HND MMS_Menu_New_List_create(MfwHnd parent_window)
{
T_MMS_MENU_NEW_LIST * data = (T_MMS_MENU_NEW_LIST *)ALLOC_MEMORY (sizeof (T_MMS_MENU_NEW_LIST));
T_MFW_WIN * win;
MMS_TRACE_FUNCTION("MMS_Menu_New_List_create");
data->win =win_create (parent_window, 0, E_WIN_VISIBLE, NULL);
if( data->win EQ NULL )
{
return NULL;
}
MMS_Set_MMSImageMusic_WHnd(data->win);//Added by xie 04-07-15
data->mmi_control.dialog = (T_DIALOG_FUNC)MMS_Menu_New_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_Menu_New_List_dialog (T_MFW_HND win, USHORT event, USHORT value, void * parameter)
{
extern MMS_U8 ECC_MidiPlay(MMS_S8 *filename, MMS_U8 loop);
extern MMS_U8 ECC_MidiStop(MMS_S8 *filename);
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_MMS_MENU_NEW_LIST * data = (T_MMS_MENU_NEW_LIST *)win_data->user;
T_MFW_HND * parent=data->parent;
MMS_TRACE_FUNCTION("MMS_Menu_New_List_dialog");
switch( event )
{
case E_INIT:
/* initialization of the dialog data */
data->list_menu_data.ListPosition = iListMenuItemIndex+1;/* True cursor position in list menu. */
data->list_menu_data.CursorPosition = iListMenuItemIndex;/* Cursor position in list snapshot. */
data->list_menu_data.Font = 0;
data->list_menu_data.LeftSoftKey = (value == 1?TxtMMSPreview: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_Menu_New_Attrib;
data->list_menu_data.autoDestroy = TRUE;
data->ListID=value;
MMS_Menu_New_List_listmenu_create(data);
if(2 == data->ListID)
{
char *pTemp = (char*)data->list_menu_data.List[iListMenuItemIndex].str;
wstrcpy(frameData.audioFileName,MMS_MUSIC_FILEPATH);
wstrcat(frameData.audioFileName,"/");
wstrcat(frameData.audioFileName,pTemp);
MMS_TRACE_EVENT(("the audioFilename is%s",frameData.audioFileName));
rvf_delay(10);
if( MMS_File_Type(pTemp,MMS_TYPE_MMF) || MMS_File_Type(pTemp,MMS_TYPE_MIDI))
{
ECC_MidiPlay(frameData.audioFileName,1);
}
}
break;
case E_RETURN:
case E_EXIT:
case E_BACK:
MMS_Menu_New_List_destroy(data->win);
SEND_EVENT (parent, event, 0, NULL); /* forward event to parent */
break;
default:
return;
}
}
void MMS_Menu_New_List_listmenu_create(T_MMS_MENU_NEW_LIST *data)
{
#ifdef _INNOVATION_EMULATOR_
WIN32_FIND_DATA FileData;
HANDLE hSearch;
BOOL fFinished = FALSE;
BOOL isDirectory;
int nfiles = 0;
int i = 0;
T_MFW_HND * parent=data->parent;
char filename[256];
if(parent)
GetCurrentDirectoryA(sizeof(filename),filename);
if(data->ListID == 1)
strcat(filename,"\\filesystem\\mms\\imageFiles\\*.*");
else if(data->ListID == 2)
strcat(filename,"\\filesystem\\mms\\musicFiles\\*.*");
hSearch = FindFirstFileA(filename, &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
fFinished = TRUE;
}
while (!fFinished)
{
if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0x00)
{
if(FileData.cFileName[0] != 0)
{
nfiles ++;
}
}
if (!FindNextFileA(hSearch, &FileData))
{
fFinished = TRUE;
}
}
FindClose(hSearch );
mediaFileNumber = nfiles;
if(nfiles == 0)
{
T_DISPLAY_DATA display_info;
dialog_info_init(&display_info);
display_info.RightSoftKey = TxtSoftBack;
display_info.LeftSoftKey = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
display_info.Time = THREE_SECS;
display_info.KeyEvents = KEY_RIGHT|KEY_LEFT|KEY_CLEAR|KEY_HUP;
display_info.TextId2 = TxtMMSNoImage;
display_info.Identifier = DIALOGS_REASON_NULL;
display_info.iconindex = REMIND_FAILURE;
info_dialog (data->win, &display_info);
SEND_EVENT (data->win, E_BACK, 0, NULL);
return;
}
fFinished = FALSE;
hSearch = FindFirstFileA(filename, &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -