⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uifax.c

📁 这个是单片机4200的ui程序
💻 C
📖 第 1 页 / 共 5 页
字号:
/******************************************************************************
*         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&&currentmenu->dispID != DISP_RED_ENLARGE)
				currentmenu = currentmenu->pNextMenuList;
			if(currentmenu->type!= STRING&&currentmenu->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 + -