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

📄 setparam.c

📁 本程序是使用CDMA450模块开发的一个无线公话完整程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -