📄 uifax.c
字号:
/******************************************************************************
* Copyright (c) 2006 Primax Corporation,Ltd. All rights reserved.
*
* Author: Junny Fu
*
* Description:
*
* Revision History:
* Date Author Description
******************************************************************************/
#include "Uifax.h"
#include "Nucleus.h"
#include "Standard.h"
#include "Uilcdnew.h"
#include "Menu.h"
#include "Message.h"
#include "Usbpanel.h"
#include "Uinew.h"
#include "RTC.h"
#include "time.h"
#include "Errorcode.h"
#include "speaker.h"
#include "../fax/faxapi.h"
#include "../fax/faxphonebook.h"
#include "../fax/config.h"
#include "../fax/faxjob.h"
#include "../fax/Oswrap.h"
char *inputflag[2]={":1",":A"};
extern P_MENUDATA gpMenudata;
extern UIMaintain gUIMain;
extern MFPSETTING gMFPSettingNvram;
extern Bool setconfirm;
extern Uint16 min,max,udefault,utemp;
extern Bool newnumber;
extern void *val[89];
extern char firstlinebuf[LINE_BUF_LENGTH];
extern char secondlinebuf[LINE_BUF_LENGTH];
extern char quickfaxbuf[32];
Bool curjump;
Uint8 inputtype;
CHAR_SYMBOL_TABLE chSymTbl[13];
char inputbuf[DIAL_NUMBER_MAX+1];
UI_Panel_Button lastbutton = PANEL_NONE;
PHONEBOOKRECORD phonerecodetemp;
Uint8 presscount;
Uint8 inputindex;
Uint8 curindex;
Uint8 flag;
PHONEBOOK phonebook;
Uint16 phonebookindex;
Uint16 listindex;
Uint8 dialcount = 0;
Uint8 step = 0;
Uint16 ut2;
P_PHONEBOOKRECORD phonelist;
char passcode[4];
char passcodeconf[4];
Bool delperson = FALSE;
sFaxCommJob *waitingCommJob;
RECVFORWARD recvforwardtemp;
extern NU_SEMAPHORE gDateTimeSem;
extern DateTimeSct datetimetmp;
extern DateTimeSct datetime;
extern Uint8 ampm;
extern ErrorState errorstate;
void DlyJobDisp(sFaxCommJob * currentjob, Uint8 index);
void ConvertDateTime2tm(P_DateTimeSct dt, struct tm *p);
void CharSymbolTableInitial(P_CHAR_SYMBOL_TABLE pChSymTbl, Uint8 type)
{
char *charSymbol[13];
Uint8 i;
switch (type)
{
case INPUT_NUM: // numeric
charSymbol[0] = NUM_SYMBOL_0;
charSymbol[1] = NUM_SYMBOL_1;
charSymbol[2] = NUM_SYMBOL_2;
charSymbol[3] = NUM_SYMBOL_3;
charSymbol[4] = NUM_SYMBOL_4;
charSymbol[5] = NUM_SYMBOL_5;
charSymbol[6] = NUM_SYMBOL_6;
charSymbol[7] = NUM_SYMBOL_7;
charSymbol[8] = NUM_SYMBOL_8;
charSymbol[9] = NUM_SYMBOL_9;
charSymbol[10] = NUM_SYMBOL_STAR;
charSymbol[11] = NUM_SYMBOL_SHARP;
charSymbol[12] = NUM_SYMBOL_PAUSE;
break;
case INPUT_CHAR: // letter
charSymbol[0] = CHAR_SYMBOL_0;
charSymbol[1] = CHAR_SYMBOL_1;
charSymbol[2] = CHAR_SYMBOL_2;
charSymbol[3] = CHAR_SYMBOL_3;
charSymbol[4] = CHAR_SYMBOL_4;
charSymbol[5] = CHAR_SYMBOL_5;
charSymbol[6] = CHAR_SYMBOL_6;
charSymbol[7] = CHAR_SYMBOL_7;
charSymbol[8] = CHAR_SYMBOL_8;
charSymbol[9] = CHAR_SYMBOL_9;
charSymbol[10] = CHAR_SYMBOL_STAR;
charSymbol[11] = CHAR_SYMBOL_SHARP;
charSymbol[12] = CHAR_SYMBOL_PAUSE;
break;
}
for (i = 0; i < 13; i++)
{
pChSymTbl->count = strlen(charSymbol[i]);
strcpy(pChSymTbl->ch, charSymbol[i]);
pChSymTbl++;
}
}
void ResetPhoneBook()
{
memset(&phonebook,0,sizeof(phonebook));
}
void FAXUI(Uint8 action)
{
switch(gUIMain.UIstate)
{
case STANDBY:
StandbyMode(action);
break;
case FAX_IDLE:
FaxIdleMode(action);
break;
case FACTORY_MODE:
case MENU:
MenuMode(action);
break;
case SERVICE_MODE:
ServiceMode(action);
break;
case COPY_IDLE:
CopyIdleMode(action);
break;
case QUICKCOPY:
QuickCopy(action);
break;
case QUICKFAX:
QuickFax(action);
break;
default:
break;
}
}
void EditorCursorShow(Uint8 xOffset)
{
LCDCursorPos(xOffset, 1);
}
void EditorCursorPlus()
{
curindex++;
LCDCursorPos(curindex, 1);
}
void EditorCursorMinus()
{
curindex--;
LCDCursorPos(curindex, 1);
}
void EditorCharInput(Uint8 num,P_MAIN_MENU_LIST menu)
{
char* buftemp;
char* buftemp2;
Uint8 inputmax;
if(menu->dispID == DISP_MACHINE_ID)
inputmax = MACHINE_ID_NAME_LENGTH;
else
inputmax = NAME_CHAR_MAX;
if(inputindex<inputmax-1)
{
if(!curjump)
{
if(lastbutton != num)
{
presscount = 0;
inputbuf[inputindex] = chSymTbl[num].ch[presscount];
curjump = TRUE;
}
else
{
if(presscount<chSymTbl[num].count-1)
presscount++;
else
presscount=0;
inputbuf[inputindex] = chSymTbl[num].ch[presscount];
}
}
else
{
if(lastbutton != num)
{
presscount = 0;
inputindex++;
if(curindex <LCD_LINE_MAX-1)
EditorCursorPlus();
}
else
{
if(presscount<chSymTbl[num].count-1)
presscount++;
else
presscount=0;
}
inputbuf[inputindex] = chSymTbl[num].ch[presscount];
}
}
lastbutton = num;
if(inputindex>=LCD_LINE_MAX-1)
buftemp = inputbuf+inputindex-(LCD_LINE_MAX-1);
else
buftemp = inputbuf;
if(menu->dispID == DISP_MACHINE_ID||menu->dispID == DISP_DELAY_FAX)
{
strcpy(buftemp2,GetMsgData(DISP_MYTECS_REPFAX_ID));
sprintf(firstlinebuf,"%s: %s",buftemp2,inputflag[flag]);
}
else
{
strcpy(buftemp2,GetMsgData(DISP_NAME));
sprintf(firstlinebuf,"%s: %s",buftemp2,inputflag[flag]);
}
sprintf(secondlinebuf,"%s",buftemp);
}
void EditorDialInput(Uint8 num,P_MAIN_MENU_LIST menu)
{
char* buftemp;
char* buftemp2;
Uint8 numlimit;
if(menu->dispID == DISP_PREFIX_D)
numlimit = 5;
else if(menu->dispID == DISP_MACHINE_ID)
numlimit = 20;
else
numlimit = DIAL_NUMBER_MAX;
if(inputindex<numlimit)
{
if(curindex <LCD_LINE_MAX-1)
EditorCursorPlus();//curindex++;
inputbuf[inputindex] = chSymTbl[num].ch[presscount];
inputindex++;
if(inputindex>=LCD_LINE_MAX-4-1)
buftemp = inputbuf+inputindex-(LCD_LINE_MAX-4-1);
else
buftemp = inputbuf;
strcpy(firstlinebuf,GetMsgData(menu->dispID));
strcpy(buftemp2,GetMsgData(DISP_TEL));
sprintf(secondlinebuf,"%s=%s",buftemp2,buftemp);
}
}
void EditorDialInput2(Uint8 num)
{
char* buftemp;
char* buftemp3;
if(inputindex<DIAL_NUMBER_MAX)
{
//curindex++;
inputbuf[inputindex] = chSymTbl[num].ch[presscount];
inputindex++;
}
if(inputindex < 25)
buftemp = inputbuf;
else
buftemp = inputbuf + inputindex -24;
strcpy(buftemp3,GetMsgData(DISP_FAX_TO));
sprintf(quickfaxbuf,"%s:%s",buftemp3,buftemp);
}
void EditorDialInput3(Uint8 num)
{
char* buftemp;
char* buftemp2;
Uint8 numlimit;
numlimit = DIAL_NUMBER_MAX;
if(inputindex<numlimit && setconfirm == TRUE)
{
if(curindex <LCD_LINE_MAX-1)
EditorCursorPlus();//curindex++;
inputbuf[inputindex] = chSymTbl[num].ch[presscount];
inputindex++;
if(inputindex>=LCD_LINE_MAX-1)
buftemp = inputbuf+inputindex-(LCD_LINE_MAX-1);
else
buftemp = inputbuf;
strcpy(buftemp2,GetMsgData(DISP_FAX));
sprintf(firstlinebuf,"%s[%d]:",buftemp2,dialcount+1);
strcpy(secondlinebuf,buftemp);
}
}
void EditorDialInput4(Uint8 num)
{
char* buftemp;
char* buftemp2;
Uint8 numlimit;
numlimit = DIAL_NUMBER_MAX;
if(inputindex<numlimit && setconfirm == TRUE)
{
if(curindex <LCD_LINE_MAX-1)
EditorCursorPlus();//curindex++;
inputbuf[inputindex] = chSymTbl[num].ch[presscount];
inputindex++;
if(inputindex>=LCD_LINE_MAX-1)
buftemp = inputbuf+inputindex-(LCD_LINE_MAX-1);
else
buftemp = inputbuf;
strcpy(buftemp2,GetMsgData(DISP_SPD_DIAL_NO));
sprintf(firstlinebuf,"%s%d:",buftemp2,udefault);
strcpy(secondlinebuf,buftemp);
}
}
void FaxIdleMode(Uint8 action)
{
P_MAIN_MENU_LIST currentmenu;
Uint8 AlignL1,AlignL2;
// char * buf;
currentmenu = gpMenudata ->ml + gpMenudata ->mlIndex;
AlignL1 = currentmenu->firstline;
AlignL2 = currentmenu->secondline;
switch(currentmenu->type)
{
case MULTI:
MultiType(action);
break;
case STRING:
StringType(action);
if(currentmenu->pNextMenuList != NULL&¤tmenu->dispID != DISP_RED_ENLARGE)
currentmenu = currentmenu->pNextMenuList;
if(currentmenu->type!= STRING&¤tmenu->type!= MULTI)
{
LCDDisplayClear();
DisplayLCD(0, firstlinebuf, AlignL1,FALSE);
DisplayLCD(1, secondlinebuf, AlignL2,TRUE);
}
break;
case GRAPHIC:
GraphicType(action);
break;
case DIALINPUT:
DialInputType(action);
break;
case CHARACTERINPUT:
CharInputType(action);
break;
case MULTIDIAL:
MultiDialType(action);
break;
case SEARCH:
SearchType(action);
break;
case PHONEBOOKINPUT:
PhoneBookType(action);
break;
case PASSCODE:
PassCodeType(action);
break;
case PERIOD:
PeriodType(action);
break;
case CANCELJOB:
CancelJobType(action);
break;
case REDIAL:
RedialType(action);
break;
case DIALTEST:
DialTestType(action);
break;
/* case JUNK:
JunkType(action);
break;
case CONFIRM:
ConfirmType(action);
break;*/
default:
break;
}
}
void QuickFax(Uint8 action)
{
char *showbuf;
// char *showbuf2;
char *buftemp;
// char buf[42];
P_MAIN_MENU_LIST currentmenu;
Uint8 bufcount;
currentmenu = gpMenudata ->ml + gpMenudata ->mlIndex;
switch(action)
{
case PANEL_ARROWLEFT:
bufcount = strlen(inputbuf);
if(inputindex>0)
{
inputindex--;
//EditorCursorMinus();//curindex--
}
inputbuf[inputindex]=0;
if(inputindex < 25)
showbuf = inputbuf;
else
showbuf = inputbuf + inputindex -24;
strcpy(buftemp,GetMsgData(DISP_FAX_TO));
sprintf(quickfaxbuf,"%s:%s",buftemp,showbuf);
break;
case PANEL_BACK:
// LCDCursorOff();
if(setconfirm == TRUE)
{
setconfirm = FALSE;
}
strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
break;
case PANEL_START:
case PANEL_SELECT:
setconfirm = TRUE;
strcpy(gUIMain.Dialnumber, inputbuf);
memset(inputbuf, 0, sizeof(inputbuf));
UIDoFaxJob(DIRECT_DIAL);
strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
break;
case PANEL_NUM0:
EditorDialInput2(PANEL_NUM0);
break;
case PANEL_NUM1:
EditorDialInput2(PANEL_NUM1);
break;
case PANEL_NUM2:
EditorDialInput2(PANEL_NUM2);
break;
case PANEL_NUM3:
EditorDialInput2(PANEL_NUM3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -