📄 setparam.c
字号:
#ifdef _MNT_
#include <assert.h>
#else
#define assert(x)
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "datatype.h"
#include "mmalloc.h"
#include "METAWNDO1.H"
#include "paramanage.h"
#include "windows.h"
#include "public.h"
#include "translate.h"
#include "debug_out.h"
#ifdef HARDWARE
#include "configcpu.h"
#include "rtc_time.h"
#include "TempHard.h"
#include "lcdDrive.h"
#endif
#define COMPILE_OK 0
#define COMPILING 1
#if COMPILING
/* 对比度调节 */
typedef struct {
window_t wnd;
progressbar_t prog;
int val;
} contrast_set_t;
static contrast_set_t *gContrastWnd;
static int contrastWndProc(XMSG *msg)
{
int curVol;
switch (msg->message) {
// case MSG_PAINT:
// OnPaintWindow((window_t*)msg->comp);
// break;
case MSG_KEYDOWN:
switch (msg->param1) {
case KEY_UP:
case KEY_DOWN:
XProgressBarKeyHandle(&gContrastWnd->prog, msg->param1);
curVol = XProgressBarGetPos(&gContrastWnd->prog);
//if (curVol != gDevicePara.dev.contrast) {
SetContrast(curVol);
//}
break;
//case KEY_MENU://yu add 1
case KEY_OK://yu add
curVol = XProgressBarGetPos(&gContrastWnd->prog);
gDevicePara.dev.contrast=curVol;
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar("设置成功"),1);//yu add
XPostQuitMessage(&gContrastWnd->wnd);
break;//
case KEY_CANCEL:
//SetContrast(gDevicePara.dev.contrast);
XPostQuitMessage(&gContrastWnd->wnd);
break;
default:
break;
}
break;
default:
XDefaultWindowProc(msg);
break;
}
return 0;
}
//static
int ContrastAdjust(void)
{
rect area;
XMSG msg;
gContrastWnd = (contrast_set_t*)malloc(sizeof(contrast_set_t));
if (NULL == gContrastWnd)
return -1;
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH, LCD_HEIGHT);
XCreateWindow(NULL, &gContrastWnd->wnd, &area, TranslateChar("对比度设置"), contrastWndProc, TRUE);
SetRect(&area, 20-8, 48-6, 108-8, 58-6);//yu SetRect(&area, 20, 48, 108, 58);
XCreateProgressBar(&gContrastWnd->wnd.comp, \
&gContrastWnd->prog, &area, \
0x28, 0x35, 1, PROGRESS_SMOOTH, 8);
// 0x20, 0x35, 2, PROGRESS_SMOOTH, 8);
// 2, 62, 2, PROGRESS_SMOOTH, 8);
XProgressBarSetPos(&gContrastWnd->prog, gDevicePara.dev.contrast);
XShowComponent(&gContrastWnd->wnd.comp);
MoveTo(2, 32);
DrawString((BYTE*)TranslateChar("对比度设置"));
v_WriteLcdBuff();
while (XGetMessage(&msg) != -1)
XDispatchMessage(&msg);
XDestroyWindow(&gContrastWnd->wnd);
SetContrast(gDevicePara.dev.contrast);
free(gContrastWnd);
gContrastWnd = NULL;
return 0;
}
#endif
#if COMPILING
/* 铃声音量调节 */
typedef struct {
window_t wnd;
progressbar_t prog;
int val;
} RingVol_set_t;
static RingVol_set_t *gRingVolWnd;
extern void onPlayStart(int PlayID);
static int RingVolWndProc(XMSG *msg)
{
int curVol;
switch (msg->message) {
// case MSG_PAINT:
// OnPaintWindow((window_t*)msg->comp);
// break;
case MSG_KEYDOWN:
switch (msg->param1) {
case KEY_UP:
case KEY_DOWN:
XProgressBarKeyHandle(&gRingVolWnd->prog, msg->param1);
curVol = XProgressBarGetPos(&gRingVolWnd->prog);
//if (curVol != gDevicePara.dev.RingVol) {
gRunParam.SysRingVol=curVol;
onPlayStart(gDevicePara.dev.ringType);
//}
break;
//case KEY_MENU://yu add 1
case KEY_OK://yu add
curVol = XProgressBarGetPos(&gRingVolWnd->prog);
gDevicePara.dev.RingVol=curVol;
gRunParam.SysRingVol=curVol;
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar("设置成功"),1);//yu add
XPostQuitMessage(&gRingVolWnd->wnd);
break;//
case KEY_CANCEL:
XPostQuitMessage(&gRingVolWnd->wnd);
break;
default:
break;
}
break;
default:
XDefaultWindowProc(msg);
break;
}
return 0;
}
//static
int RingVOlAdjust(void)
{
rect area;
XMSG msg;
gRingVolWnd = (RingVol_set_t*)malloc(sizeof(RingVol_set_t));
if (NULL == gRingVolWnd)
return -1;
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH, LCD_HEIGHT);
XCreateWindow(NULL, &gRingVolWnd->wnd, &area, TranslateChar("铃声音量"), RingVolWndProc, TRUE);
SetRect(&area, 20-8, 48-6, 108-8, 58-6);//yu SetRect(&area, 20, 48, 108, 58);
XCreateProgressBar(&gRingVolWnd->wnd.comp, \
&gRingVolWnd->prog, &area, \
0, 4, 1, PROGRESS_SMOOTH, 8);
// 0x20, 0x35, 2, PROGRESS_SMOOTH, 8);
// 2, 62, 2, PROGRESS_SMOOTH, 8);
XProgressBarSetPos(&gRingVolWnd->prog, gDevicePara.dev.RingVol);
XShowComponent(&gRingVolWnd->wnd.comp);
MoveTo(2, 32);
DrawString((BYTE*)TranslateChar("铃声音量"));
v_WriteLcdBuff();
while (XGetMessage(&msg) != -1)
XDispatchMessage(&msg);
XDestroyWindow(&gRingVolWnd->wnd);
gRunParam.SysRingVol=gDevicePara.dev.RingVol;
free(gRingVolWnd);
gRingVolWnd = NULL;
return 0;
}
#endif
/**************************/
#if 1
#include "calendar.h"
typedef struct {
window_t wnd;
editbox_t ebox[5];
WORD year;
BYTE day;
BYTE mon;
BYTE hour;
BYTE min;
BYTE sec;
BYTE pos;
int res;
} time_set_t;
static time_set_t *gTimeSetWnd;
static void checkValidDays(void)
{
WORD year;
BYTE month, day, days;
year = (WORD)XEditBoxGetValue(&gTimeSetWnd->ebox[0]);
month= (BYTE)XEditBoxGetValue(&gTimeSetWnd->ebox[1]);
day = (BYTE)gTimeSetWnd->ebox[2].max;
days = GetDaysOfMonth(year, month);
if (day != days) {
XEditBoxSetRange(&gTimeSetWnd->ebox[2], 1, days);
// XEditBoxSetValue(&gTimeSetWnd->ebox[2], gTimeSetWnd->ebox[2].cur);
XShowComponent(&gTimeSetWnd->ebox[2].comp);
}
}
static int timeSetProc(XMSG *msg)
{
switch (msg->message) {
case MSG_PAINT:
EraseRect(&msg->comp->rc);
break;
case MSG_KEYDOWN:
switch (msg->param1) {
case KEY_D0:
case KEY_D1:
case KEY_D2:
case KEY_D3:
case KEY_D4:
case KEY_D5:
case KEY_D6:
case KEY_D7:
case KEY_D8:
case KEY_D9:
if (XEditBoxKeyHandle(&gTimeSetWnd->ebox[gTimeSetWnd->pos], msg->param1)) {//显示自己处理反白
gTimeSetWnd->pos++;
gTimeSetWnd->pos %= 5;
checkValidDays();//时间有效性判断
XEditBoxSetActive(&gTimeSetWnd->ebox[gTimeSetWnd->pos], ACTIVED);//更新显示框
XShowComponent(&gTimeSetWnd->ebox[gTimeSetWnd->pos].comp);//显示
v_WriteLcdBuff();//
}
break;
case KEY_MDOWN://yu KEY_UP:
XEditBoxSetActive(&gTimeSetWnd->ebox[gTimeSetWnd->pos], INACTIVED);
XShowComponent(&gTimeSetWnd->ebox[gTimeSetWnd->pos].comp);
if (gTimeSetWnd->pos)
gTimeSetWnd->pos--;
else
gTimeSetWnd->pos = 4;
checkValidDays();
XEditBoxSetActive(&gTimeSetWnd->ebox[gTimeSetWnd->pos], ACTIVED);
XShowComponent(&gTimeSetWnd->ebox[gTimeSetWnd->pos].comp);
v_WriteLcdBuff();
break;
case KEY_MUP://yu KEY_DOWN:
XEditBoxSetActive(&gTimeSetWnd->ebox[gTimeSetWnd->pos], INACTIVED);
XShowComponent(&gTimeSetWnd->ebox[gTimeSetWnd->pos].comp);
gTimeSetWnd->pos++;
gTimeSetWnd->pos %= 5;
checkValidDays();
XEditBoxSetActive(&gTimeSetWnd->ebox[gTimeSetWnd->pos], ACTIVED);
XShowComponent(&gTimeSetWnd->ebox[gTimeSetWnd->pos].comp);
v_WriteLcdBuff();
break;
case KEY_OK:
if(0>XEditBoxSetActive(&gTimeSetWnd->ebox[gTimeSetWnd->pos], INACTIVED))//YU ADD
{
XEditBoxSetActive(&gTimeSetWnd->ebox[gTimeSetWnd->pos], ACTIVED);
XShowComponent(&gTimeSetWnd->ebox[gTimeSetWnd->pos].comp);
v_WriteLcdBuff();
break;
}
gTimeSetWnd->res = 1;
case KEY_CANCEL:
XPostQuitMessage((window_t*)msg->comp);
break;
default:
break;
}
break;
default:
return XDefaultWindowProc(msg);
}
return 0;
}
int timeSetWindow(void)
{
rect area;
DWORD val;
BYTE days;
XMSG msg;
gTimeSetWnd = (time_set_t*)malloc(sizeof(time_set_t));
if (NULL == gTimeSetWnd)
return -1;
gTimeSetWnd->pos = 0;
gTimeSetWnd->res = -1;
#ifdef HARDWARE
gTimeSetWnd->hour = HOUR;
gTimeSetWnd->min = MIN;
gTimeSetWnd->sec = SEC;
gTimeSetWnd->year = YEAR;
gTimeSetWnd->mon = MONTH;
gTimeSetWnd->day = DOM;
#else
val = GetSysTime();
gTimeSetWnd->hour = (BYTE)((val>>16)&0xFF);
gTimeSetWnd->min = (BYTE)((val>>8)&0xFF);
gTimeSetWnd->sec = (BYTE)(val&0xFF);
val = GetSysDate();
gTimeSetWnd->year = (WORD)((val>>16)&0xFFFF);
gTimeSetWnd->mon = (BYTE)((val>>8)&0xFF);
gTimeSetWnd->day = (BYTE)(val&0xFF);
#endif
val = GetDaysOfMonth(gTimeSetWnd->year, gTimeSetWnd->mon);
if (gTimeSetWnd->day > val)
gTimeSetWnd->day = (BYTE)(val&0xFF);
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH, LCD_HEIGHT);
XCreateWindow(NULL, &gTimeSetWnd->wnd, &area, "TIME", timeSetProc, FALSE);
XSetBaseWindow(&gTimeSetWnd->wnd);
//年
SetRect(&area, 8, 15, LCD_WIDTH-1, 30);//yu SetRect(&area, 10, 22, LCD_WIDTH-1, 38);
XCreateEditBox(&gTimeSetWnd->wnd.comp, &gTimeSetWnd->ebox[0], &area, 4, 0);
XEditBoxSetRange(&gTimeSetWnd->ebox[0], WNL_MIN_YEAR, WNL_MAX_YEAR);
XEditBoxSetValue(&gTimeSetWnd->ebox[0], gTimeSetWnd->year);
SetRect(&area, 51, 15, LCD_WIDTH-1, 30);//yu SetRect(&area, 61, 15, LCD_WIDTH-1, 38);
XCreateEditBox(&gTimeSetWnd->wnd.comp, &gTimeSetWnd->ebox[1], &area, 2, 0);
XEditBoxSetRange(&gTimeSetWnd->ebox[1], 1, 12);
XEditBoxSetValue(&gTimeSetWnd->ebox[1], gTimeSetWnd->mon);
SetRect(&area, 80, 15, LCD_WIDTH-1, 30);//yu SetRect(&area, 95, 22, LCD_WIDTH-1, 38);
XCreateEditBox(&gTimeSetWnd->wnd.comp, &gTimeSetWnd->ebox[2], &area, 2, 0);
days = GetDaysOfMonth(gTimeSetWnd->year, gTimeSetWnd->mon);
XEditBoxSetRange(&gTimeSetWnd->ebox[2], 1, days);
XEditBoxSetValue(&gTimeSetWnd->ebox[2], gTimeSetWnd->day);
//---------
SetRect(&area, 30, 40, LCD_WIDTH-1, 55);//yu SetRect(&area, 36, 53, LCD_WIDTH-1, 68);
XCreateEditBox(&gTimeSetWnd->wnd.comp, &gTimeSetWnd->ebox[3], &area, 2, 0);
XEditBoxSetRange(&gTimeSetWnd->ebox[3], 0, 23);
XEditBoxSetValue(&gTimeSetWnd->ebox[3], gTimeSetWnd->hour);
SetRect(&area, 62, 40, LCD_WIDTH-1, 55);//yu SetRect(&area, 70, 53, LCD_WIDTH-1, 68);
XCreateEditBox(&gTimeSetWnd->wnd.comp, &gTimeSetWnd->ebox[4], &area, 2, 0);
XEditBoxSetRange(&gTimeSetWnd->ebox[4], 0, 59);
XEditBoxSetValue(&gTimeSetWnd->ebox[4], gTimeSetWnd->min);
/*
SetRect(&area, 100, 50, LCD_WIDTH-1, 68);
XCreateEditBox(&gTimeSetWnd->wnd.comp, &gTimeSetWnd->ebox[5], &area, 2, 0);
XEditBoxSetRange(&gTimeSetWnd->ebox[5], 0, 59);
XEditBoxSetValue(&gTimeSetWnd->ebox[5], gTimeSetWnd->sec);
*/
XEditBoxSetActive(&gTimeSetWnd->ebox[0], ACTIVED);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -