📄 mmibookphonebook.c
字号:
FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
data->menu_list_data=NULL;
}
key_before=0xff;
cursor_correct=1;
key_index=0;
SearchTotal=search_total;
// delete ourself
data->phbk->CallPhbk_win=0;
ClearCallWindowHandle();
winDelete( data->win );
FREE_MEMORY( (void *) data, sizeof( tBookStandard ) );
}
}
static void show_number()
{
UBYTE old_mode;
UINT32 b_color;
TRACE_EVENT("show_number");
if( showtimer )
{
TRACE_EVENT("we have showtimer");
timStop(showtimer);
timStart(showtimer);
}
if( refresh_flag==1 )
{
TRACE_EVENT("we need refresh");
old_mode=dspl_Enable(0);
b_color=dspl_SetBkgColor(0xF8E0EE);
#if(MAIN_LCD_SIZE==4)
dspl_Clear (0,126,SCREEN_SIZE_X,142);
#elif(MAIN_LCD_SIZE==3)
//dspl_Clear (0,100,SCREEN_SIZE_X,113);
phonebook_search_flag=TRUE;
#endif
dspl_SetBkgColor(b_color);
refresh_flag=0;
dspl_Enable(old_mode);
}
}
static T_MFW_CB showtimer_cb (T_MFW_EVENT event, T_MFW_TIM *tc)
{
MfwHdr *win=(MfwHdr *)mfwParent((MfwHdr *)showtimer);
T_MFW_WIN *win_data=(MfwWin *)(win->data);
tBookStandard *data=(tBookStandard *)(win_data->user);
T_phbk * Phbk = data->phbk;
MfwHdr *mnu_win=data->menu_list_data->win;//yq modified 2003/3/12.(MfwHdr *)mfwParent(mfwFocus);
timStop(showtimer);
refresh_flag=1;
if( winIsFocussed(mnu_win) )
ShowPhoneBookNumber(show_index,NONE);
return 0;
}
static void yq_edtchar(T_MFW_HND edt,unsigned char code)
{
MfwHdr *win=(MfwHdr *)mfwParent((MfwHdr *)edt);
T_MFW_WIN *win_data=(MfwWin *)(win->data);
tBookStandard *data=(tBookStandard *)(win_data->user);
TRACE_EVENT("yq_edtchar");
if( edttimer )
timStop(edttimer);
if( cursor_correct )
{
edtChar(edt,edt_key[code-2][key_index]);
edtChar(edt,ecLeft);
timStart(edttimer);
key_index=0;
}
else
{
if( code==key_before )
{
key_index++;
if( key_index>=wstrlen((char *)edt_key[code-2]) )
key_index=0;
edtChar(edt,ecDel);
edtChar(edt,edt_key[code-2][key_index]);
edtChar(edt,ecLeft);
timStart(edttimer);
}
else
{
edtChar(edt,ecRight);
edtChar(edt,edt_key[code-2][0]);
edtChar(edt,ecLeft);
timStart(edttimer);
key_index=0;
}
}
cursor_correct=0;
key_before=code;
TRACE_EVENT("yq:now the edt buffer:");
TRACE_EVENT((char *)data->edtBuf);
}
static T_MFW_CB edttimer_cb (T_MFW_EVENT event, T_MFW_TIM *tc)
{
MfwHdr *win=(MfwHdr *)mfwParent((MfwHdr *)edttimer);
T_MFW_WIN *win_data=(MfwWin *)(win->data);
tBookStandard *data=(tBookStandard *)(win_data->user);
T_phbk * Phbk = data->phbk;
MfwHdr *mnu_win=data->menu_list_data->win;//yq modified 2003/3/12.(MfwHdr *)mfwParent(mfwFocus);
T_MFW_WIN *mnu_data=(MfwWin *)(mnu_win->data);
ListWinInfo * dataInfo = (ListWinInfo *)mnu_data->user;
TRACE_EVENT("edttimer_cb");
timStop(edttimer);
key_before=0xff;
cursor_correct=1;
key_index=0;
if( winIsFocussed(mnu_win) )
{
ShortCutLocation(dataInfo,(char *)data->edtBuf,Phbk->BufferTable,&(Phbk->BufferIndex),100);
edtChar(data->edt,ecRight);
}
return 0;
}
static void book_callphb_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{
TRACE_FUNCTION ("book_callphb_cb()");
switch( reason )
{
case INFO_TIMEOUT:
case INFO_KCD_RIGHT:
case INFO_KCD_HUP:
case INFO_KCD_LEFT:
{
bookCallPhbDestroy( win );
}
break;
default: break;
}
}
static void bookCallPhbDialog( T_MFW_HND win, USHORT event, SHORT value, void *parameter )
{
T_MFW_WIN *win_data = ((T_MFW_HDR *) win)->data;
tBookStandard *data = (tBookStandard *) win_data->user;
T_phbk *Phbk=data->phbk;
char * titleStr;
int i;
/*2004/04/07,talcon delete
char temp[100];*/
TRACE_EVENT("bookCallPhbDialog");
switch( event )
{
case CALLPHB_INIT:
TRACE_EVENT("callphbdialog Init");
if( PHBKTotal )
{
TRACE_EVENT("has phb");
if( PHBKTotal<=PHONEBOOK_RECORD_PERPAGE )
{
for( i=0;i<PHBKTotal;i++ )
{
/* 2004/06 sunsj modify for picture manage */
memcpy(Dynamic_menu[i].name,l_phb_index[l_phb_sort_index[i].index].name,PHB_name_len);
if( l_phb_index[l_phb_sort_index[i].index].phonebook==NVM_BOOK_SEL )
Dynamic_menu[i].bookicon = *GET_ICONATTR(ICON_NVMBOOK, 0);//nvmbookicon;
else if( l_phb_index[l_phb_sort_index[i].index].phonebook==SIM_BOOK_SEL )
Dynamic_menu[i].bookicon = *GET_ICONATTR(ICON_SIMBOOK, 0);//simbookicon;
}
}
else
{
for( i=0;i<PHONEBOOK_RECORD_PERPAGE;i++ )
{
/* 2004/06 sunsj modify for picture manage */
memcpy(Dynamic_menu[i].name,l_phb_index[l_phb_sort_index[i].index].name,PHB_name_len);
if( l_phb_index[l_phb_sort_index[i].index].phonebook==NVM_BOOK_SEL )
Dynamic_menu[i].bookicon = *GET_ICONATTR(ICON_NVMBOOK, 0);//nvmbookicon;
else if( l_phb_index[l_phb_sort_index[i].index].phonebook==SIM_BOOK_SEL )
Dynamic_menu[i].bookicon = *GET_ICONATTR(ICON_SIMBOOK, 0);//simbookicon;
}
}
Phbk->BufferIndex=0;
search_total=SearchTotal;
SearchTotal=PHBKTotal;
Phbk->BufferTable=GlobalTable;
TRACE_EVENT("all the first memort");
data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData));
if( !data->menu_list_data )
{
TRACE_EVENT("no memoryin");
//destroy the dialog
bookCallPhbDestroy(win);
}
else//alloc memory ok!
{
TRACE_EVENT("all the second memort");
data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( GetFree(SearchTotal) *sizeof(T_MFW_MNU_ITEM) );
if( data->menu_list_data->List!=0 )//alloc_memory ok
{
TRACE_EVENT("all memory alloc ok!");
for( i = 0; i < GetFree(SearchTotal); i++ )
{
data->menu_list_data->List[i].icon =&Dynamic_menu[i].bookicon;
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 *)Dynamic_menu[i].name;
data->menu_list_data->List[i].flagFunc=item_flag_none;
}
data->menu_list_data->ListLength = GetFree(SearchTotal);
data->menu_list_data->SnapshotSize = GetFree(SearchTotal);
data->menu_list_data->Font = 0;
if( data->phbk->EntryType==PhbkFromCall )
data->menu_list_data->LeftSoftKey = TxtSoftCall;
else if( data->phbk->EntryType==PhbkFromSms )
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 = &readName_menuAttrib;
data->menu_list_data->Attr = & readName_fromcall_menuAttrib; /*2003/12/16, wangyan modify call phonebook area*/
data->menu_list_data->autoDestroy = FALSE;
data->menu_list_data->ListMenuFlag =1;
/* glowing: modify TxtSearchName to TxtPhoneSearch */
//titleStr=MmiRsrcGetText(TxtSearchName);
titleStr=MmiRsrcGetText(TxtPhoneSearch);
data->menu_list_data->ListMenuHeadStr=titleStr;
data->menu_list_data->ListPosition = 1;
data->menu_list_data->CursorPosition = 1;
TRACE_EVENT("now we display the menu");
/* 2004/05/26 sunsj modify */
edtShow(data->edt);
edtChar(data->edt,ecBottom);
listDisplayListMenu(win, data->menu_list_data, (ListCbFunc)bookCallPhb_cb,0);
show_index=l_phb_sort_index[Phbk->BufferIndex].index;
refresh_flag=1;
/* 2004/06 sunsj modify for icon manage */
#if(MAIN_LCD_SIZE==4)
dspl_Clear(0,108,SCREEN_SIZE_X,126);
DRAW_ICON_LOCATION(ICON_TEXTINPUT_abc, 0, 110);
#elif(MAIN_LCD_SIZE==3)//Knuth
dspl_Clear(0,72,128,110);
DRAW_ICON_LOCATION(ICON_TEXTINPUT_abc, 0, 72);
#endif
ShowPhoneBookNumber(show_index,NONE);
//edtShow(data->edt);
//edtChar(data->edt,ecBottom);
}
else
{
TRACE_EVENT("second no memory");
FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
//destroy the dialog
bookCallPhbDestroy(win);
}
}
}
else
{
TRACE_EVENT("no phb");
bookShowInformation(win, TxtEmptyList, NULL, (T_VOID_FUNC)book_callphb_cb);
}
break;
}
}
static T_MFW_HND bookCallPhbCreate( MfwHnd parent )
{
T_MFW_WIN *win_data;
tBookStandard *data;
T_MFW_WIN *parent_win_data = ( (T_MFW_HDR *) parent )->data;
T_phbk *Phbk = (T_phbk *)parent_win_data->user;
TRACE_FUNCTION ("bookCallPhbCreate()");
// allocate memory for our control block
if( ( data = (tBookStandard *) ALLOC_MEMORY( sizeof( tBookStandard ) ) ) == NULL )
return NULL;
// Create the window if we can
if( ( data->win = win_create( parent, 0, E_WIN_VISIBLE, NULL) ) == NULL )
{
FREE_MEMORY( (void *) data, sizeof( tBookStandard ) );
return NULL;
}
// Okay, we have created the control block and the window, so
// we now need to configure the dialog and data pointers
data->mmi_control.dialog = (T_DIALOG_FUNC) bookCallPhbDialog;
data->mmi_control.data = data;
win_data = ((T_MFW_HDR *)data->win)->data;
win_data->user = (void *) data;
data->parent_win = parent;
data->phbk=Phbk;
#if(MAIN_LCD_SIZE==3)
bookSetEditAttributes(20,85,32,30,0, 0, edtCurBar1, 0,(char *)data->edtBuf,5,&data->attr);
#elif (MAIN_LCD_SIZE==4)
bookSetEditAttributes(20, 108, 32, 16, 0, 0, edtCurBar1, 0,(char *)data->edtBuf,5,&data->attr);
#endif
data->edt=edtCreate(data->win,&data->attr,0,0);
if( !showtimer )
{
TRACE_EVENT("need create showtimer");
#ifndef FOR_FTA_CTA
showtimer=timCreate(data->win,300,(MfwCb)showtimer_cb);
#endif
}
if( !edttimer )
{
TRACE_EVENT("need create showtimer");
#ifndef FOR_FTA_CTA
edttimer=timCreate(data->win,500,(MfwCb)edttimer_cb);
#endif
}
return data->win;
}
T_MFW_HND bookCallPhbStart( MfwHnd parent)
{
T_MFW_HND win;
TRACE_EVENT("bookCallPhbStart");
if( ( win = bookCallPhbCreate( parent ) ) != NULL )
{
SetCallWindowsHandle(win);
SEND_EVENT( win, CALLPHB_INIT, 0, 0 );
}
return win;
}
//end yq added
void Create_SORT_Table(T_MFW_PHB_INDEX l_phb_index[],int RecordLen)
{
int i,j;
//char temp[100];/*2004/04/07,talcon delete*/
TRACE_EVENT("create_sort_table");
if( PHBKTotal!=0 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -