📄 mmimemo.c
字号:
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_DISPLAY_DATA display_info;
MemoData * data = (MemoData *) win_data->user;
int i;
switch( keyboard->code )
{
case KCD_LEFT:
if( data->event==MEMO_COVER ) //覆盖第一条
{
memset(FFS_MemoData.item[MemoDataIndex.Item[1].position].text,0,MEMO_LEN);
memcpy((char*)FFS_MemoData.item[MemoDataIndex.Item[1].position].text,(char*)data->text,MEMO_LEN);
FFS_MemoData.item[MemoDataIndex.Item[1].position].position=10;
flash_Memowrite();
dialog_info_init(&display_info);
display_info.TextId2 =TxtSaved;
display_info.Time = FOREVER;
display_info.iconindex =REMIND_COMPLETE;
display_info.Callback = (T_VOID_FUNC)memo_dialog_cb;
/*
* Call Info Screen
*/
info_dialog (data->win, &display_info);
}
else if( data->event==MEMO_DELETEALL ) //全部删除
{
FlashMemoDataInitialise();
flash_Memowrite();
//if(!flash_Memowrite())
{
//MemoIndexInit();
dialog_info_init(&display_info);
display_info.KeyEvents = KEY_OK | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = '\0';
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)memo_dialog_cb;
display_info.Identifier = 0;
display_info.iconindex =REMIND_COMPLETE;
/*
* Call Info Screen
*/
info_dialog (data->win, &display_info);
}
}
Memo_destroy(win);
break;
case KCD_RIGHT:
case KCD_HUP:
Memo_destroy(win);
break;
default:
break;
}
return MFW_EVENT_CONSUMED;
}
/* 创建文本框 */
void MemoSetEditor(T_MFW_HND win)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
MemoData* data = (MemoData *) win_data->user;
memset(data->text,0,sizeof(data->text));
editor_attr_init_fullscr(&((data->editor_data).editor_attr), 1,TxtAdd, (char*)data->text, 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 = TxtSoftOK;//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 */
}
/* 编辑框的回调函数 */
static void MemoCB( T_MFW_HND win,USHORT Identifier,UBYTE reason)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
MemoData *data = (MemoData *) win_data->user;
int i=0,j=0;
T_DISPLAY_DATA display_info;
TRACE_EVENT("MemoCB");
switch( reason )
{
case INFO_KCD_LEFT:
//flash_Memoread();
while( (FFS_MemoData.item[i].text[0]!=0)&&(i<10) )
{
if( j<FFS_MemoData.item[i].position )
j=FFS_MemoData.item[i].position;
i++;
}
if( i<10 )
{
TRACE_EVENT("i<10");
memset(FFS_MemoData.item[i].text,0,sizeof(FFS_MemoData.item[i].text));
memcpy((char*)FFS_MemoData.item[i].text,(char*)data->text,MEMO_LEN);
FFS_MemoData.item[i].position=j+1;
flash_Memowrite();
// if(!flash_Memowrite())
{
//MemoIndexInit();
dialog_info_init(&display_info);
display_info.TextId2 =TxtSaved;
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);
//editor_destroy(data->editor_win);
Memo_destroy(win);
}
}
else
{
/* 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);
}
data->editor_win=0;
SEND_EVENT(win, MEMO_COVER, 0, 0);
}
break;
case INFO_KCD_RIGHT:
case INFO_KCD_HUP:
//editor_destroy(data->editor_win);
Memo_destroy(win);
break;
}
}
void Memo_destroy(T_MFW_HND own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
MemoData* data = (MemoData*)win->user;
TRACE_EVENT ("Memo_destroy()");
if( data->editor_win )
{
/* 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);
}
}
if( own_window )
{
/*
* Delete WIN Handler
*/
if( call_data.win&&call_data.win_memo )
{
call_data.win_memo=0;//zy 2003-04-01 if is incall destroy memo
}
win_delete (own_window);
/*
* Free Memory
*/
FREE_MEMORY ((void *)data, sizeof (MemoData));
}
}
int memoBrowse(MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND parent_win = mfwParent( mfw_header());
T_MFW_HND win = memoBrowse_create(parent_win);
TRACE_EVENT("memoBrowse");
if( win NEQ NULL )
{
SEND_EVENT (win, MEMOBROWSE_INIT, 0, 0);
}
return MFW_EVENT_CONSUMED;
}
/* "查看" "逐个删除"窗口创建 */
static T_MFW_HND memoBrowse_create(MfwHnd parent_win)
{
T_MFW_WIN * win;
memoBrowseData* data = (memoBrowseData*)ALLOC_MEMORY (sizeof (memoBrowseData));
TRACE_EVENT("memoBrowse");
if( data EQ NULL )
{
return NULL;
}
// Create window handler
data->win = win_create (parent_win, 0, E_WIN_VISIBLE, (T_MFW_CB)memoBrowse_win_cb);
if( data->win EQ NULL )
{
return NULL;
}
// connect the dialog data to the MFW-window
data->mmi_control.dialog = (T_DIALOG_FUNC)MemoBrowse_DialogCB;
data->mmi_control.data = data;
win = ((T_MFW_HDR *)data->win)->data;
win->user = (void *)data;
data->parent_win = parent_win;
memo_win=data->win;
winShow(data->win);
return data->win;
}
static int memoBrowse_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
memoBrowseData* data = (memoBrowseData *)win->user;
if( data EQ NULL )
return 0;
switch( event )
{
case E_WIN_VISIBLE:
if( win->flags & E_WIN_VISIBLE )
{
/*
* Clear Screen
*/
//dspl_ClearAll(); /*2003/12/12, wangyan modify*/
}
break;
default:
return 0;
}
return 1;
}
/* "查看" "逐个删除"窗口事件处理函数,创建menu_list */
static void MemoBrowse_DialogCB(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ( (T_MFW_HDR *) win )->data;
memoBrowseData * data = (memoBrowseData *) win_data->user;
T_DISPLAY_DATA display_info;
int i;
TRACE_EVENT("MemoBrowse_DialogCB");
data->event=event;
TraceInt(data->event);
switch( event )
{
case MEMOBROWSE_INIT:
case MEMOBROWSE_DELETE:
data->numberOfRecords=0;
for( i=0;i<10;i++ )
{
if( (FFS_MemoData.item[i].text[0]!=0)&&(FFS_MemoData.item[i].position!=0) )
data->numberOfRecords++;
}
TraceInt(data->numberOfRecords);
if( data->numberOfRecords )
{
data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData));
if( data->menu_list_data == 0 )
{
TRACE_EVENT("Failed memory alloc 1 ");
return;
}
data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( data->numberOfRecords * sizeof(T_MFW_MNU_ITEM) );
if( data->menu_list_data->List == 0 )
{
TRACE_EVENT("Failed memory alloc 2");
return;
}
for( i = 0; i < data->numberOfRecords; i++ )
{
if( FFS_MemoData.item[i].text[0]!=0 )
{
memset(string_data.item[i].string,0,13);
memcpy(&string_data.item[i].string,&FFS_MemoData.item[i].text,13);
data->menu_list_data->List[i].icon = GET_ICONATTR(ICON_LISTCOMMON, 0);//&colist; /* 2004/06 sunsj modify for icon manage */
data->menu_list_data->List[i].exta = 0;
data->menu_list_data->List[i].edit = 0;
data->menu_list_data->List[i].menu =0;
data->menu_list_data->List[i].func = NULL;
data->menu_list_data->List[i].str =(char*)string_data.item[i].string;
data->menu_list_data->List[i].flagFunc = item_flag_none;
}
}
if( data->event==MEMOBROWSE_INIT )
{
data->menu_list_data->LeftSoftKey = TxtChange;
data->menu_list_data->ListMenuHeadStr =MmiRsrcGetText(TxtBrowse);
}
else
{
data->menu_list_data->LeftSoftKey = TxtDelete;
data->menu_list_data->ListMenuHeadStr =MmiRsrcGetText(TxtDeleteOnebyOne);
}
data->menu_list_data->ListLength =data->numberOfRecords;
data->menu_list_data->ListPosition = 1;
data->menu_list_data->CursorPosition = 1;
data->menu_list_data->SnapshotSize = data->numberOfRecords;
data->menu_list_data->Font = 0;
data->menu_list_data->RightSoftKey = TxtSoftBack;
data->menu_list_data->KeyEvents = KEY_ALL;
data->menu_list_data->Reason = 0;
data->menu_list_data->Strings = TRUE;
data->menu_list_data->Attr = &memo_menuAttrib;
data->menu_list_data->autoDestroy = TRUE; //2004.4.21 WYJ MI18800000298
data->menu_list_data->ListMenuFlag =1;
listDisplayListMenu(win, data->menu_list_data,(ListCbFunc)MemoList_cb,0);
}
else
{
dialog_info_init(&display_info);
display_info.TextId2 =TxtNorecord;
display_info.Time = FOREVER;
display_info.iconindex =REMIND_NORECORD;
/*
* Call Info Screen
*/
info_dialog (win, &display_info);
memoBrowse_destroy1(win);
}
break;
case MEMOBROWSE_EXIT:
memoBrowse_destroy(win);
break;
}
}
/* "查看" "逐个删除"的菜单回调函数 */
void MemoList_cb(T_MFW_HND Parent, ListMenuData * ListData)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)Parent)->data;
memoBrowseData * data = (memoBrowseData *)win_data->user;
T_MFW_HND win=data->win;
T_MFW_HND change_win;
T_DISPLAY_DATA display_info;
TRACE_EVENT("MemoList_cb");
TraceInt(data->event);
if( data->event==MEMOBROWSE_INIT ) //"查看"
{
if( (ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
|| (ListData->Reason EQ LISTS_REASON_HANGUP) )
{
TRACE_EVENT("LISTS_REASON_BACK");
//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
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -