// DlgCfgTime.cpp : implementation file
//

#include "stdafx.h"
#include "NetSdkDemo.h"
#include "DlgCfgTime.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgCfgTime dialog


CDlgCfgTime::CDlgCfgTime(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgCfgTime::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgCfgTime)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_bGetParam = FALSE;
}


void CDlgCfgTime::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgCfgTime)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgCfgTime, CDialog)
	//{{AFX_MSG_MAP(CDlgCfgTime)
	ON_BN_CLICKED(IDC_BTN_SYNCTIME, OnBtnSynctime)
	ON_BN_CLICKED(IDC_BTN_SAVE, OnBtnSave)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgCfgTime message handlers
BOOL CDlgCfgTime::GetEnvParam()
{
	int iRet;
	//if(m_bGetParam)
	//	return TRUE;
	iRet = librmconfc_env_get(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_SYSTIME, sizeof(MRCONFC_SYSTIME_CFG), &m_stSysTime);
	if(iRet)
	{
		AfxMessageBox("获得参数失败!");
		return FALSE;
	}
	((CComboBox*)GetDlgItem(IDC_CMB_FORMAT))->SetCurSel(m_stSysTime.nDateFormat);
	((CComboBox*)GetDlgItem(IDC_CMB_SPRPTR))->SetCurSel(m_stSysTime.nDateSprtr);
	((CComboBox*)GetDlgItem(IDC_CMB_HOURTYPE))->SetCurSel(m_stSysTime.nHourType);
	((CComboBox*)GetDlgItem(IDC_CMB_ZONE))->SetCurSel(m_stSysTime.nZone);

	((CButton*)GetDlgItem(IDC_CHK_NTP))->SetCheck(m_stSysTime.stNtp.bEnable);
	SetDlgItemText(IDC_EDT_NTP_URL, m_stSysTime.stNtp.szHostUrl);
	SetDlgItemInt(IDC_EDT_NTP_PORT, m_stSysTime.stNtp.nHostPort);
	SetDlgItemInt(IDC_EDT_NTP_INTERVAL, m_stSysTime.stNtp.nUpdateInterval);
	m_bGetParam = TRUE;
	return TRUE;
}

void CDlgCfgTime::OnBtnSynctime() 
{
	int iRet;
	MR_TIMESET_T stTime;
	time_t nowtime;
	struct tm *timeinfo;

	time( &nowtime );
	timeinfo = localtime( &nowtime );
	stTime.nZone = ((CComboBox*)GetDlgItem(IDC_CMB_ZONE))->GetCurSel();
	stTime.bTimeType = 1;
	stTime.stDateTime.dwYear  = timeinfo->tm_year + 1900;
	stTime.stDateTime.byMonth = timeinfo->tm_mon + 1;
	stTime.stDateTime.byDay   = timeinfo->tm_mday;
	stTime.stDateTime.byHour   = timeinfo->tm_hour;
	stTime.stDateTime.byMinute = timeinfo->tm_min;
	stTime.stDateTime.bySecond = timeinfo->tm_sec;
	iRet = librmconfc_syscontrol(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_CTRLCMD_SETTIME, sizeof(MR_TIMESET_T), &stTime);
	if(iRet)
	{
		AfxMessageBox("同步时间失败!");
	}
}

void CDlgCfgTime::OnBtnSave() 
{
	int iRet;
	if(!m_bGetParam)
		return;
	m_stSysTime.nDateFormat = ((CComboBox*)GetDlgItem(IDC_CMB_FORMAT))->GetCurSel();
	m_stSysTime.nDateSprtr  = ((CComboBox*)GetDlgItem(IDC_CMB_SPRPTR))->GetCurSel();
	m_stSysTime.nHourType   = ((CComboBox*)GetDlgItem(IDC_CMB_HOURTYPE))->GetCurSel();
	m_stSysTime.nZone       = ((CComboBox*)GetDlgItem(IDC_CMB_ZONE))->GetCurSel();
	
	m_stSysTime.stNtp.bEnable = ((CButton*)GetDlgItem(IDC_CHK_NTP))->GetCheck();
	GetDlgItemText(IDC_EDT_NTP_URL, m_stSysTime.stNtp.szHostUrl, sizeof(m_stSysTime.stNtp.szHostUrl));
	m_stSysTime.stNtp.nHostPort = GetDlgItemInt(IDC_EDT_NTP_PORT);
	m_stSysTime.stNtp.nUpdateInterval = GetDlgItemInt(IDC_EDT_NTP_INTERVAL);
	iRet = librmconfc_env_set(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_SYSTIME, sizeof(MRCONFC_SYSTIME_CFG), &m_stSysTime);
	if(iRet)
	{
		AfxMessageBox("保持参数失败!");
	}
}

BOOL CDlgCfgTime::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	int i;
	const char *szZoneList[] = {
		"(GMT) 卡萨布兰卡市,蒙罗维亚,都柏林,爱丁堡,里斯本(葡萄牙首都),伦敦",
		"(GMT+01:00)阿姆斯特丹, 柏林, 伯恩, 罗马, 斯德哥尔摩, 维也纳",
		"(GMT+02:00)雅典, 布加勒斯特, 开罗, 伊斯坦布尔, 明斯克",
		"(GMT+03:00)莫斯科,圣彼得堡,窝瓦河,巴格达,科威特,利雅德",
		"(GMT+03:30)德黑兰",
		"(GMT+04:00)阿布达比, 巴库, 马斯喀特, 第比利斯",
		"(GMT+04:30)喀布尔",
		"(GMT+05:00)凯撒琳镇, 伊斯兰马巴德, 克拉啻港市, 塔什干",
		"(GMT+05:30)新德里",
		"(GMT+05:45)加德满都",
		"(GMT+06:00)亚斯塔蒂, 阿曼蒂, 可伦波, 狄哈卡",
		"(GMT+06:30)仰光",
		"(GMT+07:00)曼谷, 河内, 雅加达",
		"(GMT+08:00)北京, 香港, 新加坡, 台北",
		"(GMT+09:00)汉城, 东京, 亚库次客",
		"(GMT+09:30)爱得莱德, 达尔文",
		"(GMT+10:00)坎培拉, 关岛, 摩尔斯比港, 海蔘威",
		"(GMT+11:00)麦哲伦, 所罗门岛",
		"(GMT+12:00)斐济, 勘查加半岛, 马绍尔群岛, 威尔尼顿",
		"(GMT+13:00)努库阿洛法",
		"(GMT-01:00)亚速尔群岛, 德总角",
		"(GMT-02:00)中部-阿根廷",
		"(GMT-03:00)布宜诺斯艾利斯(阿根廷首都), 乔治城, 巴西利亚",
		"(GMT-03:30)纽芬兰",
		"(GMT-04:00)大西洋标准时间(美国 &amp;加拿大), 卡拉卡斯(委内瑞拉首都), 拉巴斯",
		"(GMT-05:00)东方标准时间(美国 &amp;加拿大), 印第安纳州 (东边)",
		"(GMT-06:00)中元标准时间 (美国 &amp;加拿大),墨西哥,德古斯加巴(洪都拉斯首都)",
		"(GMT-07:00)亚利桑那州, 山脉标准时间 (美国 &amp; 加拿大)",
		"(GMT-08:00)太平洋标准时间 (美国 &amp;加拿大)",
		"(GMT-09:00)阿拉斯加",
		"(GMT-10:00)夏威夷",
		"(GMT-11:00)美国的中西部,萨摩亚",
		"(GMT-12:00)安尼威吐克,瓜加林岛",	
	};
	for(i=0; i<sizeof(szZoneList)/sizeof(const char*); i++)
	{
		((CComboBox*)GetDlgItem(IDC_CMB_ZONE))->AddString(szZoneList[i]);
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
