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

📄 menu.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 "Standard.h"
#include "Nucleus.h"
#include "Uifax.h"
#include "Menu.h"
#include "Smfm.h"
#include "Uilcdnew.h"
#include "RTC.h"
#include "Message.h"
#include "Uinew.h"
#include "Bios.h"
#include "UI_Execute.h"  //add by shaohua
#include "speaker.h"

#include "../fax/faxjob.h"
#include "../fax/faxapi.h"
#include "../fax/Oswrap.h"

Uint16 min,max,udefault,utemp;
Bool    newnumber = TRUE;
Bool    modechange = FALSE;
Bool    copyparaerr = FALSE;
DateTimeSct	datetime;
DateTimeSct	datetimetmp;
char    datetimebuf[21];
Uint8   ampm;	//am,0/pm,1
Uint8   monthday[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//leapyear
Uint8   monthday2[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//not leapyear
Uint16    monthdays[] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366};//leapyear
Uint16    monthdays2[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};//not leapyear
Uint16 daysofyear[] = {	0, 366, 	731, 	1096, 	1461,
					  	1827, 	2192, 	2557, 	2922,
						3288,	3653,	4018,	4383,
						4749,	5114,	5479,	5844,
						6210,	6575,	6940,	7305,
						7671,	8036,	8401,	8766,
						9132,	9497,	9862,	10227,
						10593,	10958,	11323,	11688,
						12054,	12419,	12784,	13149,
						13515,	13880,	14245,	14610,
						14976,	15341,	15706,	16071,
						16437,	16802,	17167,	17532,
						17898,	18263,	18628,	18993,
						19359,	19724,	20089,	20454,
						20820,	21185,	21550,	21915,
						22281,	22646,	23011,	23376,
						23742,	24107,	24472,	24837,
						25203,	25568,	25933,	26298,
						26664,	27029,	27394,	27759,
						28125,	28490,	28855,	29220,
						29586,	29951,	30316,	30681,
						31047,	31412,	31777,	32142,
						32508,	32873,	33238,	33603,
						33969,	34334,	34699,	35064,
						35430,	35795,	36160,	36525,
};

FAX_MAINTENANCE	FaxMaintenanceSetting;

#ifdef	NEWPANELDRIVER

char  *diamond[] ={	"\x3C\xB0\xB0\xB0\xB0\xB0\x3E",
					"\x3C\xB1\xB0\xB0\xB0\xB0\x3E",
					"\x3C\xB1\xB1\xB0\xB0\xB0\x3E",
					"\x3C\xB1\xB1\xB1\xB0\xB0\x3E",
					"\x3C\xB1\xB1\xB1\xB1\xB0\x3E",
					"\x3C\xB1\xB1\xB1\xB1\xB1\x3E",
};

char  *diamond2[] = {   	"\x3C\xB0\xB0\xB0\x3E",
						"\x3C\xB1\xB0\xB0\x3E",
						"\x3C\xB1\xB1\xB0\x3E",
						"\x3C\xB1\xB1\xB1\x3E",
};

#else

char  *diamond[] ={	"\x3C\x91\x91\x91\x91\x91\x3E",
					"\x3C\xFF\x91\x91\x91\x91\x3E",
					"\x3C\xFF\xFF\x91\x91\x91\x3E",
					"\x3C\xFF\xFF\xFF\x91\x91\x3E",
					"\x3C\xFF\xFF\xFF\xFF\x91\x3E",
					"\x3C\xFF\xFF\xFF\xFF\xFF\x3E",
};

char  *diamond2[] = {   	"\x3C\x91\x91\x91\x3E",
						"\x3C\xFF\x91\x91\x3E",
						"\x3C\xFF\xFF\x91\x3E",
						"\x3C\xFF\xFF\xFF\x3E",
};

#endif

extern P_MENUDATA		gpMenudata;
extern Bool				setconfirm;
extern UIMaintain			gUIMain;
extern MFPSETTING 		gMFPSettingNvram;
extern Uint8 inputindex;
extern char inputbuf[DIAL_NUMBER_MAX+1];
extern CHAR_SYMBOL_TABLE chSymTbl[13];
extern Uint8 curindex;
extern Uint8 presscount;
extern Uint16 ut2;
extern char firstlinebuf[LINE_BUF_LENGTH];
extern char secondlinebuf[LINE_BUF_LENGTH];
extern char* mesg_eng[];
extern char* mesg_usfrn[];
extern char* mesg_usspn[];
extern char* mesg_uspor[];
extern NU_SEMAPHORE 	gDateTimeSem;
extern Uint8 step;
extern long  UI_EXe_msgQue_id;
extern RECVFORWARD	recvforwardtemp;
extern NU_MAILBOX UI_MailBox;
extern Uint8 copypage;

extern void ConvertDateTime2tm(P_DateTimeSct dt, struct tm *p);


void	*val[] = {	
			&gUIMain.copysetting.Copynumber,	// 0
			&gUIMain.copysetting.Contrast,
			&gUIMain.copysetting.Imagequality,
			&gUIMain.copysetting.Layoutmode,
			&gUIMain.copysetting.Presetratio,
//			&gUIMain.copysetting.COriginalsize,
//			&gUIMain.copysetting.Reduenlarge,
			&gUIMain.copysetting.Zoomratio,	//5

			&gUIMain.scansetting.Scandes,
			&gUIMain.scansetting.Scancolor,
			&gUIMain.scansetting.Scanquality,
			&gUIMain.scansetting.IOriginalsize,

			&gUIMain.papersetting.Papersize,	//10
			&gUIMain.papersetting.Papertype,
//			&gUIMain.papersetting.PaperTray,

			&gUIMain.commonsetting.Language,
			&gUIMain.commonsetting.Alarmvolume,
			&gUIMain.commonsetting.Autocleantime,
			&gUIMain.commonsetting.ClockMode,		//15
			&gUIMain.commonsetting.Powersavertime,
			&gUIMain.commonsetting.Pressvolume,
			&gUIMain.commonsetting.Ringer,
			&gUIMain.commonsetting.country,
			&gUIMain.commonsetting.Speaker,	//20
			&gUIMain.commonsetting.Tonersavermode,
			&gUIMain.commonsetting.zIDName,
			&gUIMain.commonsetting.zIDTelNumber,
			
			&gUIMain.faxsetting.Txresolution,
			&gUIMain.faxsetting.Txcontrast,		//25
			&gUIMain.faxsetting.Onhookdial,
			&gUIMain.faxsetting.Ringtoasw,
			&gUIMain.faxsetting.Receivemode,
			&gUIMain.faxsetting.RedialDly,
			&gUIMain.faxsetting.RedialAtempt,	//30
			&gUIMain.faxsetting.Msgconf,
			&gUIMain.faxsetting.Autoreport,
//			&gUIMain.faxsetting.Discardsize,		
			&gUIMain.faxsetting.TTI,
			&gUIMain.faxsetting.Receivecode,
			&gUIMain.faxsetting.DRPDmode,		//35
			&gUIMain.faxsetting.Recvforward.RecvOnoff,
//			&gUIMain.faxsetting.Tollsave.TollOnoff,
//			&gUIMain.faxsetting.JunkfaxStp.JunkOnoff,	
			&gUIMain.faxsetting.StmpRcvdname,
			&gUIMain.faxsetting.ECMmode,
			&gUIMain.faxsetting.Txspeed,
			&gUIMain.faxsetting.Rcvdisable,	//40
			&gUIMain.faxsetting.Prefixdial,
			
			&gUIMain.faxsetting.SecureRecv,			
			&gUIMain.faxsetting.FTRingtime,
			&gUIMain.faxsetting.Autoreduction,

			&gMFPSettingNvram.Copy.Copynumber,	//45
			&gMFPSettingNvram.Copy.Contrast,
			&gMFPSettingNvram.Copy.Imagequality,
			&gMFPSettingNvram.Copy.Layoutmode,
			&gMFPSettingNvram.Copy.Presetratio,
//			&gMFPSettingNvram.Copy.COriginalsize,
//			&gMFPSettingNvram.Copy.Reduenlarge,
			&gMFPSettingNvram.Copy.Zoomratio,		//50
			&gMFPSettingNvram.Scan.Scandes,
			&gMFPSettingNvram.Scan.Scancolor,
			&gMFPSettingNvram.Scan.Scanquality,
			&gMFPSettingNvram.Scan.IOriginalsize,

			&gMFPSettingNvram.Paper.Papersize,	//55
			&gMFPSettingNvram.Paper.Papertype,
//			&gMFPSettingNvram.Paper.PaperTray,

			&gMFPSettingNvram.Common.Language,
			&gMFPSettingNvram.Common.Alarmvolume,
			&gMFPSettingNvram.Common.Autocleantime,
			&gMFPSettingNvram.Common.ClockMode,		//60
			&gMFPSettingNvram.Common.Powersavertime,
			&gMFPSettingNvram.Common.Pressvolume,
			&gMFPSettingNvram.Common.Ringer,
			//&gMFPSettingNvram.Common.Scanpowerstime,
			&gMFPSettingNvram.Common.country,
			&gMFPSettingNvram.Common.Speaker,	//65
			&gMFPSettingNvram.Common.Tonersavermode,
			&gMFPSettingNvram.Common.zIDName,
			&gMFPSettingNvram.Common.zIDTelNumber,
			
			&gMFPSettingNvram.Fax.Txresolution,
			&gMFPSettingNvram.Fax.Txcontrast,		//70
			&gMFPSettingNvram.Fax.Onhookdial,
			&gMFPSettingNvram.Fax.Ringtoasw,
			&gMFPSettingNvram.Fax.Receivemode,
			&gMFPSettingNvram.Fax.RedialDly,
			&gMFPSettingNvram.Fax.RedialAtempt,		//75
			&gMFPSettingNvram.Fax.Msgconf,
			&gMFPSettingNvram.Fax.Autoreport,	
//			&gMFPSettingNvram.Fax.Discardsize,
			&gMFPSettingNvram.Fax.TTI,
			&gMFPSettingNvram.Fax.Receivecode,
			&gMFPSettingNvram.Fax.DRPDmode,	//80
			&gMFPSettingNvram.Fax.Recvforward.RecvOnoff,
//			&gMFPSettingNvram.Fax.Tollsave.TollOnoff,
//			&gMFPSettingNvram.Fax.JunkfaxStp.JunkOnoff,
			&gMFPSettingNvram.Fax.StmpRcvdname,
			&gMFPSettingNvram.Fax.ECMmode,
			&gMFPSettingNvram.Fax.Txspeed,
			&gMFPSettingNvram.Fax.Rcvdisable,			//85
			&gMFPSettingNvram.Fax.Prefixdial,

			&gMFPSettingNvram.Fax.SecureRecv,
			&gMFPSettingNvram.Fax.FTRingtime,
			&gMFPSettingNvram.Fax.Autoreduction,
			
			&gUIMain.Dialnumber,	//90

			&FaxMaintenanceSetting.Rxlevel,
			&FaxMaintenanceSetting.Txlevel,
			&FaxMaintenanceSetting.CEqualizer,
			&FaxMaintenanceSetting.TrainRetry,
			&FaxMaintenanceSetting.Encoding,	//95
			&FaxMaintenanceSetting.T0Timer,
			&FaxMaintenanceSetting.T1Timer,
			&FaxMaintenanceSetting.T4Timer,
			&FaxMaintenanceSetting.SDetectTime,
			&FaxMaintenanceSetting.CngTDetectTime,	//100
			&FaxMaintenanceSetting.CngCycle,
			&FaxMaintenanceSetting.ToneSoundMon,
			&FaxMaintenanceSetting.StopClearKey,
//			&FaxMaintenanceSetting.RedialInteral,
//			&FaxMaintenanceSetting.Redialing,
			&FaxMaintenanceSetting.OverSeaComm,
			&FaxMaintenanceSetting.MinTimeLength,	//105
//			&FaxMaintenanceSetting.ToneSignalTTL,
			&FaxMaintenanceSetting.MinPauseToneDial,
			&FaxMaintenanceSetting.AttenuatorPRBL,
			&FaxMaintenanceSetting.DTMFlevel,
			&FaxMaintenanceSetting.DTMFDelta,
			&FaxMaintenanceSetting.WaitTime,	//110
			&FaxMaintenanceSetting.TimeOutLength,
			&FaxMaintenanceSetting.BTSetting,
			&FaxMaintenanceSetting.BTFrequency,
			&FaxMaintenanceSetting.BTlevel,
			&FaxMaintenanceSetting.BTCadence,	//115
			&FaxMaintenanceSetting.RTNRate,
			&FaxMaintenanceSetting.V34Modem,
			&FaxMaintenanceSetting.V17Modem,
			&FaxMaintenanceSetting.Equalizer,
			&FaxMaintenanceSetting.VRedialing,	//120
			&FaxMaintenanceSetting.FirstTXSpeed,
			&FaxMaintenanceSetting.SymbolRate
};

void MenuProcess(Uint8 action)
{	
	switch(gUIMain.UIstate)
		{
		case STANDBY:
			StandbyMode(action);
			break;
		case COPY_IDLE:
			CopyIdleMode(action);
			break;
		case SCAN_IDLE:
			ScanIdleMode(action);
			break;
		case FACTORY_MODE:			
		case MENU:
			MenuMode(action);
			break;
		case SERVICE_MODE:			
			ServiceMode(action);
			break;			
		case QUICKCOPY:
			QuickCopy(action);
			break;
		case QUICKFAX:
			QuickFax(action);
			break;
		default:
			break;
		}
}

char * GetMsgData(Uint16 id)
{ 
	if ( (id >= SCAN_APP_NAME_ID) && (id < (SCAN_APP_NAME_ID+MAX_APP_NUMBER)) )
	{
		return gUIMain.scansetting.Scan2PCAPI.ApplicRecord[id-SCAN_APP_NAME_ID].ApplicationName;
	}

	switch(gUIMain.commonsetting.Language)
		{
		case LT_ENGLISH:
			return mesg_eng[id];
			break;
		case LT_FRENCH:
			return mesg_usfrn[id];
			break;
		case LT_SPANISH:
			return mesg_usspn[id];
			break;
//		case LT_PORTUGUESE:
//			return mesg_uspor[id];
//			break;
		default:
			break;
		}
	return NULL;
}

Uint8   GetDateTimeCursorXPos(Uint8 step)
{
    Uint   x;
//	mm/dd/yyyy
    switch (step)
        {
        case 0: x = 0;  break;      //	mm
        case 1: x = 1;  break;      //	mm
        case 2: x = 3;  break;      //	dd
        case 3: x = 4;  break;      //	dd
        case 4: x = 8;  break;      //	yy
        case 5: x = 9;  break;      //	yy
        case 6: x = 16; break;      //	hh
        case 7: x = 17; break;      //	hh
        case 8: x = 19; break;      //	mm
        case 9: x = 20; break;      //	mm
        case 10: x= 22;break;	//	am/pm
        }
    return x;
}

void DateTimeDisplay(DateTimeSct dt)
{
	char monbuf[2],datebuf[2];
	char yearbuf[2],hourbuf[2];
	char minbuf[2];

	monbuf[0] = dt.Month/10 + '0';
	monbuf[1] = dt.Month%10 + '0';

	datebuf[0] = dt.Date/10 + '0';
	datebuf[1] = dt.Date%10 + '0';

	yearbuf[0] = dt.Year/10 + '0';
	yearbuf[1] = dt.Year%10 + '0';
	
	//mm/dd/yyyy
	sprintf(firstlinebuf,"%2.2s/%2.2s/20%2.2s[MDY]",monbuf,datebuf,yearbuf);
	
	minbuf[0] = dt.Minute/10 + '0';
	minbuf[1] = dt.Minute%10 + '0';

	if(gMFPSettingNvram.Common.ClockMode == 1)
		{
		hourbuf[0] = dt.Hour/10 + '0';
		hourbuf[1] = dt.Hour%10 + '0';
		sprintf(secondlinebuf,"%2.2s:%2.2s",hourbuf,minbuf);
		}
	else
		{
		if(ampm == 1)
			{
			hourbuf[0] = (dt.Hour-12)/10 + '0';
			hourbuf[1] = (dt.Hour-12)%10 + '0';
			sprintf(secondlinebuf,"%2.2s:%2.2s(PM)",hourbuf,minbuf);
			}
		else
			{
			hourbuf[0] = (dt.Hour)/10 + '0';
			hourbuf[1] = (dt.Hour)%10 + '0';
			sprintf(secondlinebuf,"%2.2s:%2.2s(AM)",hourbuf,minbuf);
			}
		}
}

void EditorMultiInput(Uint8 num,P_MAIN_MENU_LIST menu)
{
	Uint32 curtime;

	curtime = TaskGetSystemMilliTicks();
	if((curtime - gUIMain.LastPressTime)>2*1000)
		newnumber = TRUE;
	gUIMain.LastPressTime = curtime;

	if(!newnumber)
		{
		udefault = udefault*10 + num;
		if(max<udefault*10)			
			newnumber = TRUE;
		}
	else// if(num!= PANEL_NUM0)
		{
		udefault = num;
		if(max>=udefault*10)
			newnumber = FALSE;
		}
	sprintf(secondlinebuf,"[%d-%d]>%d",menu->item_min,menu->item_max,udefault);
}

void EditorMultiInput2(Uint8 num)
{
	Uint32 curtime;

	if(gUIMain.UIstate == STANDBY)
		{
		if(num == PANEL_NUM0)
			{
			gUIMain.UIstate = QUICKFAX;
			CharSymbolTableInitial(chSymTbl, INPUT_NUM);
			setconfirm= TRUE;
			presscount = 0;
			curindex = 0;
			inputindex = 0;
			EditorDialInput2(num);
			return;
			}
		else
			{
			gUIMain.UIstate = QUICKCOPY;
			modechange = TRUE;
			setconfirm = TRUE;
			gUIMain.LastPressTime = TaskGetSystemMilliTicks();
			}
		}
	else if(gUIMain.UIstate == QUICKCOPY)
		{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -