📄 mainwin.c
字号:
/****************************************************************
** *
** FILE : MainWin.C *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : CCH 2002.1.15 *
****************************************************************/
#include "includes.h"
#include "tools.h"
#include "structs.h"
#include "message.h"
#include "systime.h"
#include "timetask.h"
#include "at_core.h"
#include "public.h"
#include "db_sm.h"
#include "winstack.h"
#include "keyboard.h"
#include "hstctl.h"
#include "screen.h"
#include "prompt.h"
#include "itemmenu.h"
#include "editor.h"
#include "succor.h"
#include "telbook.h"
#include "callman.h"
#include "shortmsg.h"
#include "setgprs.h"
#include "sysset.h"
#include "virphone.h"
#include "handset.h"
#include "mainwin.h"
#if EN_HSTSMON > 0
#include "HstSmon.h" //电召菜单
#endif
#include "Parachk.h" //参数状态查询
#include "DownTimes.h"
#if EN_HANDSET > 0
/*
********************************************************************************
* DEFINE CONFIG PARAMETERS
********************************************************************************
*/
#define PERIOD_WAIT SECOND, 5
#define SIZE_TELEDITBUF 20
/*
********************************************************************************
* DEFINE MODULE VIRIANTS
********************************************************************************
*/
static BOOLEAN KBIsLocked, WaitKEY_Star;
static TMR_TSK *waittmr;
static KEY_STRUCT curkey;
static INT8U asciitime[] = {"18:00:00"};
static INT8U asciidate[] = {"2003.01.01"};
static INT8U TelEditBuf[SIZE_TELEDITBUF];
/*
********************************************************************************
* DEFINE MAINWIN MENU
********************************************************************************
*/
#if EN_HSTSMON > 0
#define ITEMS 8
#else
#define ITEMS 7
#endif
static ITEMMENU_STRUCT *MENU_MAIN_CHILD[] = {&MENU_TELBOOK,
&MENU_SHORTMSG,
&MENU_CALLMAN,
#if EN_HSTSMON > 0
&MENU_GUESTSMON,//电召菜单
#endif
&MENU_SETGPRS,
&MENU_SYSSET,
&MENU_PARACHK, //参数状态查询
&MENU_DOWNTIMES
};
static ITEMMENU_STRUCT MENU_MAIN = {ITEM_FMENU, 0, 0, ITEMS, MENU_MAIN_CHILD};
static void DisplayScreen(void)
{
DATE_STRUCT date;
TIME_STRUCT time;
GetSysTime_Date(&date);
GetSysTime_Time(&time);
FormatYear(asciidate, date.year, date.month, date.day);
FormatTime(asciitime, time.hour, time.minute, time.second);
VTL_ClearScreen();
if (!SIMCardInserted()) {
VTL_ScreenPrintStr(" 请插SIM卡\n");
} else {
VTL_ScreenPrintChar(' ', 3);
VTL_ScreenPrintMem(asciitime, sizeof(asciitime) - 1 - 3);
VTL_ScreenPrint('\n');
}
if (KBIsLocked) {
VTL_ScreenPrintStr(" 按#*开锁");
} else if (SIMCardInserted()) {
if (!(SysTimeValid() && !SysDateValid())) {
VTL_ScreenPrint(' ');
VTL_ScreenPrintMem(asciidate, sizeof(asciidate) - 1);
}
}
OverWriteScreen();
}
static void SuspendProc(void)
{
if (HstCfg.EnableKeyPrompt) {
TurnonKeyPrompt();
} else {
TurnoffKeyPrompt();
}
}
static void ResumeProc(void)
{
OSQPost(HandsetMsgQue, MSG_HANDSET_SIGNAL, 0, 0);
if (HaveUnReadSMRec())
TurnonSMIndicator();
else
TurnoffSMIndicator();
if (!PromptReadMissTel()) {
DisplayScreen();
if (KBIsLocked) TurnoffKeyPrompt();
else TurnonKeyPrompt();
if (!HstCfg.EnableKeyPrompt)
TurnoffKeyPrompt();
}
}
static void InitProc(void)
{
InitHstIndicator();
ResumeProc();
}
static void Handler_KEY_ACK(void)
{
ActivateDialTalkRec();
}
static void Handler_KEY_FCN(void)
{
ActivateItemMenu(&MENU_MAIN);
}
static void Handler_KEY_UP(void)
{
ActivateReadShorMsgMenu();
}
static void Handler_KEY_DOWN(void)
{
ListTB();
}
static void Handler_KEY_SUCCOR(void)
{
if (curkey.attrib & ATTR_REHIT) {
if (curkey.key == KEY_MEDICAL)
StartSuccor(SUCCOR_MEDICAL);
else if (curkey.key == KEY_TROUBLE)
StartSuccor(SUCCOR_TROUBLE);
else if (curkey.key == KEY_INFORM)
StartSuccor(SUCCOR_INFORMATION);
}
}
static void ExitTelEditor(void)
{
INT8U len;
if ((len = GetEditorData(TelEditBuf)) > 0)
ActivateVirPhone_Dial(TRUE, len, TelEditBuf);
}
static EDITOR_STRUCT EditorEntry =
{EDT_REVERSE | EDT_DIGITAL | EDT_PULS, 0, sizeof(TelEditBuf), 0, 0, 1, TelEditBuf, 0, ExitTelEditor, 0, 0, 0, 0, 0};
static void Handler_KEY_DIGITAL(void)
{
TelEditBuf[0] = curkey.key;
CreateEditor(&EditorEntry);
}
static FUNCENTRY_STRUCT Handler_Key_entry[] = {
KEY_FCN, Handler_KEY_FCN,
KEY_ACK, Handler_KEY_ACK,
KEY_UP, Handler_KEY_UP,
KEY_DOWN, Handler_KEY_DOWN,
KEY_MEDICAL, Handler_KEY_SUCCOR,
KEY_TROUBLE, Handler_KEY_SUCCOR,
KEY_INFORM, Handler_KEY_SUCCOR
};
static void HdlKeyProc(void)
{
if (HandsetCurMsg.MsgID == MSG_HANDSET_KEY) {
GetKeyMsg(&curkey);
if (WaitKEY_Star) {
if (curkey.key == '*') {
KBIsLocked = !KBIsLocked;
if (KBIsLocked)
ActivateStringPrompt("键盘已锁!");
else
ActivateStringPrompt("键盘锁已开!");
WaitKEY_Star = FALSE;
return;
} else if (curkey.attrib == ATTR_CHAR) {
WaitKEY_Star = FALSE;
}
}
if (curkey.key == '#') {
WaitKEY_Star = TRUE;
StartTmr(waittmr, PERIOD_WAIT);
}
if (KBIsLocked) return;
if (!FindProcEntry(curkey.key, Handler_Key_entry, sizeof(Handler_Key_entry)/sizeof(Handler_Key_entry[0]))) {
if ((curkey.key >= '0' && curkey.key <= '9') ||
curkey.key == '+' || curkey.key == '*') {
Handler_KEY_DIGITAL();
}
}
} else if (HandsetCurMsg.MsgID == MSG_HANDSET_MINUTE
|| HandsetCurMsg.MsgID == MSG_HANDSET_SIMCARD) {
DisplayScreen();
}
}
static WINSTACKENTRY_STRUCT WinStackEntry = {InitProc, 0, SuspendProc, ResumeProc, HdlKeyProc};
void ActivateMainWin(void)
{
PushWinStack(&WinStackEntry);
}
static void WaitTmrProc(void)
{
StopTmr(waittmr);
WaitKEY_Star = FALSE;
}
void InitMainWin(void)
{
waittmr = CreateTimer(WaitTmrProc, 0);
KBIsLocked = FALSE;
WaitKEY_Star = FALSE;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -