mmimemo.c
来自「是一个手机功能的模拟程序」· C语言 代码 · 共 1,168 行 · 第 1/3 页
C
1,168 行
TRACE_EVENT("LISTS_REASON_SELECT");
position=ListData->ListPosition;
//listsDestroy(data->menu_list_data->win); 2004.4.21 WYJ MI18800000298
memoBrowse_destroy(memo_win); //2004.2.27 WYJ
change_win=MemoChange_create(Parent); //2004.2.27 WYJ
if( change_win NEQ NULL )
SEND_EVENT(change_win, MEMOCHANGE_INIT, 0, 0);
}
}
else if( data->event==MEMOBROWSE_DELETE ) //"逐个删除"
{
if( (ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
|| (ListData->Reason EQ LISTS_REASON_HANGUP) )
{
//listsDestroy(data->menu_list_data->win); 2004.4.21 WYJ MI18800000298
memoBrowse_destroy(memo_win);
}
else if( (ListData->Reason EQ LISTS_REASON_SELECT) || (ListData->Reason EQ LISTS_REASON_OK) ) //xsf add (ListData->Reason EQ LISTS_REASON_OK) 03.10
{
FFS_MemoData.item[ListData->ListPosition].position=0;
memset(FFS_MemoData.item[ListData->ListPosition].text,0,sizeof(MEMO_LEN));
flash_Memowrite();
dialog_info_init(&display_info);
display_info.KeyEvents = KEY_OK | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = TxtSoftBack;
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.TextId2 =TxtDeleted;
display_info.TextId = '\0';
display_info.Time = FOREVER;
display_info.Callback = (T_VOID_FUNC)NULL;//MemoDelete_dialog_cb;
display_info.iconindex = REMIND_COMPLETE;
display_info.Identifier =0;
/*
* Call Info Screen
*/
info_dialog (data->win, &display_info);
positionChange(); //重新排列记录
//listsDestroy(data->menu_list_data->win); 2004.4.21 WYJ MI18800000298
memoBrowse_destroy(memo_win);
}
}
}
/* 删除后对记录的调整 */
void positionChange()
{
int i,j,k=0;
Flash_Memo t;
for( i=9;i>0;i-- )
{
if( !k )
{
k=1; //标志 没有交换的话,就不再做
for( j=0;j<i;j++ )
{
if( (FFS_MemoData.item[j].text[0]==0)&&(FFS_MemoData.item[j+1].text[0]!=0) )
{
memset(&t,0,sizeof(Flash_Memo));
t.position=FFS_MemoData.item[j].position;
FFS_MemoData.item[j].position=FFS_MemoData.item[j+1].position;
FFS_MemoData.item[j+1].position=t.position;
wstrcpy(t.text,FFS_MemoData.item[j].text);
wstrcpy(FFS_MemoData.item[j].text,FFS_MemoData.item[j+1].text);
wstrcpy(FFS_MemoData.item[j+1].text,t.text);
k=0;
}
}
}
}
}
void memoBrowse_destroy(T_MFW_HND own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
memoBrowseData* data = (memoBrowseData*)win->user;
TRACE_EVENT ("memoBrowse_destroy()");
memo_win=NULL;
if( own_window )
{
/*
* Delete WIN Handler
*/
win_delete (own_window);
/*
* Free Memory
*/
FREE_MEMORY((void*)data->menu_list_data->List,data->numberOfRecords*sizeof(T_MFW_MNU_ITEM));
FREE_MEMORY((void*)data->menu_list_data,sizeof(ListMenuData));
FREE_MEMORY ((void *)data, sizeof(memoBrowseData));
}
}
void memoBrowse_destroy1(T_MFW_HND own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
memoBrowseData* data = (memoBrowseData*)win->user;
TRACE_EVENT ("memoBrowse_destroy()");
memo_win=NULL;
if( own_window )
{
/*
* Delete WIN Handler
*/
win_delete (own_window);
/*
* Free Memory
*/
FREE_MEMORY ((void *)data, sizeof(memoBrowseData));
}
}
int memoDeleteAll(MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND parent_win = mfwParent( mfw_header());
T_MFW_HND win = memo_create(parent_win);
TRACE_EVENT("memoDeleteAll");
if( win NEQ NULL )
{
SEND_EVENT (win, MEMO_DELETEALL, 0, 0);
}
return MFW_EVENT_CONSUMED;
}
int memoOnebyone(MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND parent_win = mfwParent( mfw_header());
T_MFW_HND win = memoBrowse_create(parent_win);
TRACE_EVENT("memoOnebyone");
if( win NEQ NULL )
{
SEND_EVENT (win, MEMOBROWSE_DELETE, 0, 0);
}
return MFW_EVENT_CONSUMED;
}
void MemoChange_destroy(T_MFW_HND own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
MemoChangeData* data = (MemoChangeData*)win->user;
TRACE_EVENT ("MemoChange_destroy()");
if( own_window )
{
/*
* Delete WIN Handler
*/
win_delete (own_window);
/*
* Free Memory
*/
flash_Memowrite();
FREE_MEMORY ((void *)data, sizeof (MemoChangeData));
}
}
static T_MFW_HND MemoChange_create(MfwHnd parent_window)
{
T_MFW_WIN * win;
MemoChangeData* data = (MemoChangeData *)ALLOC_MEMORY (sizeof (MemoChangeData ));
TRACE_EVENT("stopwEditor_create");
if( data EQ NULL )
{
return NULL;
}
// Create window handler
data->win = win_create(parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)MemoChange_win_cb);
if( data->win EQ NULL )
{
return NULL;
}
// connect the dialog data to the MFW-window
data->mmi_control.dialog = (T_DIALOG_FUNC)MemoChange_DialogCB;
data->mmi_control.data = data;
win = ((T_MFW_HDR *)data->win)->data;
win->user = (void *)data;
data->parent_win = parent_window;
winShow(win);
return data->win;
}
static void MemoChange_DialogCB (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
MemoChangeData* data = (MemoChangeData *) win_data->user;
switch( event )
{
case MEMOCHANGE_INIT:
MemoChangeSetEditor(win);
data->editor_data.Callback = (T_EDIT_CB)MemoChangeCB;
/* 2003/12/04 sunsj modify for new editor mode */
if( data->editor_data.mode == TEXTINPUT_MODE )
{
data->editor_win = text_input(win, &(data->editor_data));
}
else
{
data->editor_win = editor_start(win, &(data->editor_data));
}
//winShow(win);
break;
case MEMOCHANGE_EXIT:
MemoChange_destroy(win);
break;
}
}
static int MemoChange_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
MemoChangeData* data = (MemoChangeData *)win->user;
T_DISPLAY_DATA display_info;
char str[4];
TRACE_EVENT ("stopwEditor_win_cb()");
if( data EQ 0 )
return 1;
switch( event )
{
case E_WIN_VISIBLE:
if( win->flags & E_WIN_VISIBLE )
{
/*
* Clear Screen
*/
dspl_ClearAll();
}
break;
default:
return 0;
}
return 1;
}
/* 修改记录编辑框的回调函数 */
static void MemoChangeCB( T_MFW_HND win,USHORT Identifier,UBYTE reason)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
MemoChangeData *data = (MemoChangeData *) win_data->user;
T_DISPLAY_DATA display_info;
TRACE_EVENT("MemoCB");
switch( reason )
{
case INFO_KCD_LEFT:
memset(FFS_MemoData.item[position].text,0,MEMO_LEN);
memcpy(FFS_MemoData.item[position].text,data->string,MEMO_LEN);
flash_Memowrite();
dialog_info_init(&display_info);
display_info.KeyEvents = KEY_OK | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = TxtSoftBack;
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.TextId2 =TxtSaved;
display_info.TextId = '\0';
display_info.Time = FOREVER;
display_info.Callback = (T_VOID_FUNC)memo_dialog_cb;
display_info.Identifier = 0;
display_info.iconindex =REMIND_COMPLETE;
/*
* Call Info Screen
*/
info_dialog (data->win, &display_info);
/* 2003/12/04 sunsj modify for new editor mode */
if( data->editor_data.mode == TEXTINPUT_MODE )
{
text_input_destroy(data->editor_win);
}
else
{
editor_destroy(data->editor_win);
}
MemoChange_destroy(win);
//memoBrowse_destroy(memo_win); //2004.2.27 WYJ
break;
case INFO_KCD_RIGHT:
case INFO_KCD_HUP:
/* 2003/12/04 sunsj modify for new editor mode */
if( data->editor_data.mode == TEXTINPUT_MODE )
{
text_input_destroy(data->editor_win);
}
else
{
editor_destroy(data->editor_win);
}
MemoChange_destroy(win);
//memoBrowse_destroy(memo_win); //2004.2.27 WYJ
break;
}
}
void memo_dialog_cb(T_MFW_HND win, USHORT event, UBYTE reason)
{
//MemoIndexInit();
}
void MemoDelete_dialog_cb(T_MFW_HND win, USHORT event, UBYTE reason)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
MemoChangeData * data = (MemoChangeData *) win_data->user;
}
/* 创建"查看"->修改记录的编辑框 */
void MemoChangeSetEditor(T_MFW_HND win)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
MemoChangeData* data = (MemoChangeData *) win_data->user;
TRACE_EVENT("MemoChangeSetEditor");
memset((char*)data->string,0,MEMO_LEN);
memcpy((char*)data->string,(char*)FFS_MemoData.item[position].text,MEMO_LEN);
editor_attr_init_fullscr(&((data->editor_data).editor_attr), 1,TxtChange, (char*)data->string, MEMO_LEN, edtCurBar1);
data->editor_data.hide = FALSE;
data->editor_data.min_enter = 1; // Avoid returning empty strings
data->editor_data.Identifier = 0xFFFF ;
data->editor_data.TextString = NULL;
data->editor_data.timeout = FOREVER; // Avoid returning empty strings
data->editor_data.destroyEditor = TRUE;
data->editor_data.TextId = '\0';
data->editor_data.LeftSoftKey = TxtSoftConfirm;//comfirm
data->editor_data.AlternateLeftSoftKey = TxtNull;
data->editor_data.RightSoftKey = TxtDelete;
data->editor_data.mode = TEXTINPUT_MODE; /* 2003/12/04 sunsj modify */
data->editor_data.InputMode = PINYIN_INPUT_MODE; /* 2003/12/04 sunsj */
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?