📄 mmistopwatch.c
字号:
* Free Memory
*/
FREE_MEMORY ((void *)data, sizeof (StopwData));
}
}
/* 加文本框 */
void StopwSetEditor(T_MFW_HND win)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
EditorData* data = (EditorData *) win_data->user;
//editor_attr_init(&((data->editor_data).editor_attr), NULL, edtCurBar1, 0, 0, 0);
memset(temp_data.name,0,sizeof(temp_data.name));
//2004-04-06 Sunny modify.old :TxtNames
editor_attr_init_fullscr(&((data->editor_data).editor_attr), 1,TxtRecordName, (char *)temp_data.name, 14, edtCurBar1);
//editor_attr_init_only(&((data->editor_data).editor_attr),5,40,110,60, 1,TxtNames, (char *)temp_data.name, 20, 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 set default input mode */
}
/* 文本框回调函数 */
static void stopwCB( T_MFW_HND win,USHORT Identifier,UBYTE reason)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
EditorData *data = (EditorData *) win_data->user;
T_MFW_WIN *win_data1 = ((T_MFW_HDR*)stopw_win)->data;
StopwData *data1 = (StopwData *)win_data1->user;
T_DISPLAY_DATA display_info;
TRACE_EVENT("stopwCB");
switch( reason )
{
case INFO_KCD_LEFT:
{
if( !stopwAddOne() )
{
/* 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);
}
dialog_info_init(&display_info);//gdy add
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)stopw_dialog_cb;
display_info.iconindex = REMIND_COMPLETE;
display_info.Identifier =0;
/*
* Call Info Screen
*/
info_dialog (win, &display_info);
// editor_destroy(data->editor_win);
// bookMenuDestroy(data1->menu_options_win);
// stopwatch_destroy(stopw_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);
}
dialog_info_init(&display_info);//gdy add
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 =TxtError;
display_info.TextId = '\0';
display_info.Time = ONE_SECS;
display_info.Callback = (T_VOID_FUNC)stopw_dialog_cb;
display_info.iconindex = REMIND_FAILURE;
display_info.Identifier =0;
/*
* Call Info Screen
*/
info_dialog (win, &display_info);
// editor_destroy(data->editor_win);
//bookMenuDestroy(data1->menu_options_win);
//stopwatch_destroy(stopw_win);
}
}
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);
}
stopwEditor_destroy(win);
break;
default:
break;
}
}
void stopw_dialog_cb(T_MFW_HND win, USHORT event, UBYTE reason)
{
T_MFW_WIN * win_data= ((T_MFW_HDR *) stopw_win )->data;
StopwData* data=(StopwData* )win_data->user;
TRACE_EVENT("stopw_dialog_cb");
stopwEditor_destroy(win);
bookMenuDestroy(data->menu_options_win);
stopwatch_destroy(stopw_win);
}
int dynamicMenu(T_MFW_HND parent_win)
{
T_MFW_HND win = dynamicTitleMenu_create(parent_win);
if( win NEQ NULL )
{
SEND_EVENT(win, DYNAMIC_INIT, 0, 0);
return MFW_EVENT_CONSUMED;
}
}
/* 创建"保存"项的文本对话框 */
static T_MFW_HND stopwEditor_create(MfwHnd parent_window)
{
T_MFW_WIN * win;
EditorData* data = (EditorData *)ALLOC_MEMORY (sizeof (EditorData ));
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)stopwEditor_win_cb);
if( data->win EQ NULL )
{
return NULL;
}
// connect the dialog data to the MFW-window
data->mmi_control.dialog = (T_DIALOG_FUNC)Editor_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 int stopwEditor_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
EditorData* data = (EditorData *)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 Editor_DialogCB (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
EditorData* data = (EditorData *) win_data->user;
switch( event )
{
case STOPWEDITOR_INIT:
StopwSetEditor(win); //给窗口加edit控件
data->editor_data.Callback = (T_EDIT_CB)stopwCB;
/* 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));
}
break;
case STOPWEDITOR_EXIT:
stopwEditor_destroy(win);
break;
}
}
void stopwEditor_destroy(MfwHnd own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
EditorData* data = (EditorData*)win->user;
TRACE_EVENT ("stopwEditor_destroy()");
if( own_window )
{
/*
* Delete WIN Handler
*/
win_delete (own_window);
/*
* Free Memory
*/
FREE_MEMORY ((void *)data, sizeof (EditorData));
}
}
static T_MFW_HND dynamicTitleMenu_create(MfwHnd parent_window)
{
T_MFW_WIN * win;
DynamicTitleData* data = (DynamicTitleData *)ALLOC_MEMORY (sizeof (DynamicTitleData ));
TRACE_EVENT("dynamic_create");
if( data EQ NULL )
{
return NULL;
}
// Create window handler
data->win = win_create(parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)dynamicTitle_win_cb);
if( data->win EQ NULL )
{
return NULL;
}
// connect the dialog data to the MFW-window
data->mmi_control.dialog = (T_DIALOG_FUNC)dynamicTitleMenu_DialogCB;
data->mmi_control.data = data;
win = ((T_MFW_HDR *)data->win)->data;
win->user = (void *)data;
data->parent_win = parent_window;
dynamic_win = data->win;
winShow(win);
return data->win;
}
/* 记录浏览菜单 */
static void dynamicTitleMenu_DialogCB (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
DynamicTitleData* data = (DynamicTitleData *) win_data->user;
//T_MFW_WIN * win_data1 =((T_MFW_HDR *) stopw_win)->data;
//StopwData * data1=(StopwData*)win_data1->user;
T_DISPLAY_DATA display_info;
char tem_str[4];
char* titleStr;
int i;
TRACE_EVENT("dynamicMenu_DialogCB");
data->id=value;
switch( event )
{
case DYNAMIC_INIT:
if( data->id==BROWSE_TITEL )
{
TRACE_EVENT("BROWSE_STOPW");
reset();
data->numberOfRecords=StopwMemoRead();//gdy add 27/08/02
// while(StopwIndex[data->numberOfRecords].flag)
// data->numberOfRecords++;
TRACE_EVENT("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( StopwIndex[i].type )
{
/* 2004/06 sunsj modify for picture manage */
data->menu_list_data->List[i].icon = GET_ICONATTR(ICON_STOPWATCH_CIRCLE, 0);//&circle_bmp;
}
else
{
/* 2004/06 sunsj modify for picture manage */
data->menu_list_data->List[i].icon = GET_ICONATTR(ICON_STOPWATCH_SEPA, 0);//&sepa_bmp;
}
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;
TRACE_EVENT((char*)StopwIndex[i].name);
data->menu_list_data->List[i].str=(char*)StopwIndex[i].name;
TRACE_EVENT(data->menu_list_data->List[i].str);
data->menu_list_data->List[i].flagFunc = item_flag_none;
}
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->LeftSoftKey = TxtSoftSelect;
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 = &stopw_menuAttrib;
data->menu_list_data->autoDestroy = FALSE;
data->menu_list_data->ListMenuFlag =1;
data->menu_list_data->ListMenuHeadStr =MmiRsrcGetText(TxtBrowseRecord);
listDisplayListMenu(win, data->menu_list_data,(ListCbFunc)dynamicTitleList_cb,0);//
}
else
{
dialog_info_init(&display_info);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -