📄 mfunc_chkpb.c
字号:
#include "includes.h"
#include "file.h"
#include "filesys.h"
#include "event.h"
#include "funclcd.h"
#include "funcfontlib.h"
#include "picture.h"
extern INT8U rom usrpri_file[];
extern unsigned char DebugContent[48];
extern OS_MEM *pMemSml;
extern OS_MEM *pMemLge;
extern INT8U rom IdleNumBuf[];
extern INT8U rom IdleNumBufPTR;
extern unsigned char GetPYNode(unsigned char);
extern void Func_SetVoiceCh(INT8U ctl);
extern void Display_SM(unsigned char Y_N);
extern INT8U EnterTextEdit(void);
extern void MenuDisplayKey(INT8U menu);
extern INT8U MFunc_OperateSM(INT16U rom *pItems, INT8U Num);
extern INT8U MFunc_InsertPhoneBookItem(INT16U rom * pName, INT8U NameLen, INT8U rom * pNum, INT8U NumLen, INT8U Group);
extern INT8U MFunc_DeletePhoneBookItem(INT8U Index);
extern INT8U MFunc_SearchItem(INT16U rom * pName);
extern void MFunc_DirectCall(INT8U rom * ptrData, INT8U Len);
extern INT8U MFunc_WaitForInput(INT8U val);
extern INT8U CurMenu;
extern INT8U PrevMenu; //used when exit from MENU_BOOK_END
#define MENU_ROOT 0
extern rom INT16U tmpCurText[160];
extern rom INT16U *CurText;
extern INT8U CurTextLen;
extern rom INT8U CurPhoneNum[24];
extern INT8U CurPhoneNumLen;
extern rom INT16U TextNoRecord[6];
extern void MenuDisplayPhone(INT8U line_no,INT8U len,rom INT8U *ptr);
extern INT8U EnterPhoneEdit(void);
extern INT8U PB_SearchInsertP(INT16U rom * pName, PHONEBOOK * pb);
extern INT16U rom OperPBItem1[];
extern INT16U rom OperPBItem2[];
//#pragma romdata CCODE
//INT16U rom OperPBItem1[] = {0x7f16,0x8f91,0x0000}; //edit
//INT16U rom OperPBItem2[] = {0x5220,0x9664,0x0000}; //delete
//#pragma code MYCODE
INT8U MFunc_CheckPhoneBook(void){
INT8U chrTemp,i,no_record,err,pos,fhdl;
INT8U retval,ret2;
INT8U rom * pMsg;
INT8U rom * pSml;
INT16U tmp;
PHONEBOOK * pbp;
no_record = FALSE;
fhdl = file_open(usrpri_file, (INT8U rom **)(&pbp));
pbp = &(((F_UserPrivate *)pbp)->PhoneBook);
if(pbp->item[pbp->head].next == pbp->tail){
Do_Clear_Screen(2,0,5,127);
(void)app_printf(TextNoRecord,3,2,0);
no_record = TRUE;
}
if(no_record == FALSE){
CurTextLen = 0; //clear the buffer
retval=EnterTextEdit();
if(retval==2){ //user conform the input text (Name)
if(CurTextLen == 0){ //no input
chrTemp = pbp->head;
}
else{
*(CurText+CurTextLen) = 0x0000;
chrTemp = PB_SearchInsertP(CurText, pbp);
}
Display_Menu_Icon(0,&PIC_SELECTION);
Display_Menu_Icon(1,&PIC_RETURN);
}
else
return(retval); //MSG_MENU_CANCEL or Key-C
}
for(;;){
if(no_record == FALSE){
pos = 0;
Do_Clear_Screen(2,0,5,127);
for(i=0;i<3;i++){
tmp = pbp->item[chrTemp].name[0];
if( (tmp== 0x0000) || (tmp >= 0xfe00)){
chrTemp = pbp->item[chrTemp].next;
}
else break;
}
(void)app_printf(pbp->item[chrTemp].name,0,2,0);
CurPhoneNumLen=app_c2a(pbp->item[chrTemp].number,12,CurPhoneNum);
MenuDisplayPhone(4,CurPhoneNumLen,CurPhoneNum);
}
switch(MFunc_WaitForInput(0)){
case 0xff:
return(1);
case KEY_FUNC1:
if(no_record == TRUE) break;
retval = MFunc_OperateSM(OperPBItem1, 2);
if(retval == 0){ //edit
CurPhoneNumLen=app_c2a(pbp->item[chrTemp].number,12,CurPhoneNum);
CurText=tmpCurText;
CurTextLen=0;
for(i=0;i<8;i++){
CurText[i]=pbp->item[chrTemp].name[i];
if(CurText[i]==0x0000) break;
CurTextLen++;
}
ret2=EnterPhoneEdit();
if(ret2==1){
return(1);
}
else if(ret2==2){
(void)MFunc_DeletePhoneBookItem(chrTemp);
chrTemp=MFunc_InsertPhoneBookItem(CurText, CurTextLen, CurPhoneNum, CurPhoneNumLen, 0);
}
Display_Menu_Icon(0,&PIC_SELECTION);
Display_Menu_Icon(1,&PIC_RETURN);
}
else if(retval == 1){ //delete
chrTemp = MFunc_DeletePhoneBookItem(chrTemp);
if(chrTemp == pbp->item[pbp->item[chrTemp].previous].previous){
Do_Clear_Screen(2,0,5,127);
app_printf(TextNoRecord,3,2,0);
no_record = TRUE;
}
}
else if(retval == 0xff){ //exit due to MSG_MENU_CANCEL
return(1);
}
//if "0xfe"(cancel) just break out
break;
case KEY_FUNC2:
case KEY_C:
return(0);
case KEY_UP:
chrTemp = pbp->item[chrTemp].previous;
for(i=0;i<3;i++){
tmp = pbp->item[chrTemp].name[0];
if( (tmp== 0x0000) || (tmp >= 0xfe00)){
chrTemp = pbp->item[chrTemp].previous;
}
else break;
}
break;
case KEY_DOWN:
chrTemp = pbp->item[chrTemp].next;
break;
case KEY_SEND:
if(no_record == TRUE) break;
CurMenu=MENU_ROOT;
MenuDisplayKey(MENU_ROOT);
Do_Clear_Screen(2,0,5,127);
Do_Clear_Screen(6,32,7,95);
MFunc_DirectCall(pbp->item[chrTemp].number, 12);
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -