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

📄 rightsched.cpp

📁 实时监控
💻 CPP
字号:
// RightSched.cpp : implementation file
//

#include "stdafx.h"
#include "..\dvrmanager.h"
#include "net.h"
#include "RightSched.h"
#include "../utils/common.h"
#include "../utils/custom_msgs.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRightSched dialog

//##ModelId=3F90BAAC02F2
CRightSched::CRightSched(CWnd* pParent /*=NULL*/)
	: baseclass(CRightSched::IDD, pParent), last_channel(-1)
{
	//{{AFX_DATA_INIT(CRightSched)
	m_channel = -1;
	m_which = -1;
	m_rec_sched = FALSE;
	m_date00 = 0;
	m_date01 = 0;
	m_date10 = 0;
	m_date11 = 0;
	m_enable = 0;
	m_rec_day = 0;
	m_bright = 0 ;
	m_contrast = 0 ;
	m_saturation = 0 ;
	m_hue = 0 ;
	//}}AFX_DATA_INIT

	ZeroMemory(&opt, sizeof(opt));
	ZeroMemory(&opt2, sizeof(opt2));
}


//##ModelId=3F90BAAD00FF
void CRightSched::DoDataExchange(CDataExchange* pDX)
{
	baseclass::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRightSched)
	DDX_Control(pDX, ID_S, m_s);
	DDX_Control(pDX, IDCK_REC_SCHEDULE, m_ck1);
	DDX_Control(pDX, IDRD_SCHED1, m_rd1);
	DDX_Control(pDX, IDRD_SCHED, m_rd2);
	DDX_Control(pDX, IDCB_WHICH, m_cbwhich);
	DDX_Control(pDX, IDCB_REC_DAY, m_cbrecday);
	DDX_Control(pDX, IDCB_CHANNEL, m_cbchannel);
	DDX_Control(pDX, IDBTN_SET, m_btn_set);
	DDX_Control(pDX, IDBTN_REFRESH, m_btn_refresh);
	DDX_Control(pDX, ID_TITLE, m_title);
	DDX_Control(pDX, ID_6, m_6);
	DDX_Control(pDX, ID_2, m_2);
	DDX_Control(pDX, ID_11, m_11);
	DDX_Control(pDX, ID_10, m_10);
	DDX_Control(pDX, ID_9, m_9);
	DDX_Control(pDX, ID_8, m_8);
	DDX_Control(pDX, ID_3, m_3);
	DDX_Control(pDX, ID_1, m_1);
	DDX_Control(pDX, ID_12, m_12) ;
	DDX_Control(pDX, ID_13, m_13) ;
	DDX_Control(pDX, ID_14, m_14) ;
	DDX_Control(pDX, ID_15, m_15) ;
	DDX_Control(pDX, ID_16, m_16) ;
	DDX_Text(pDX, IDED_BRIGHT, m_bright) ;
	DDX_Text(pDX, IDED_CONTRAST, m_contrast) ;
	DDX_Text(pDX, IDED_SATURATION, m_saturation) ;
	DDX_Text(pDX, IDED_HUE, m_hue) ;
	DDX_Control(pDX, IDBTN_SET2, m_btn_set2);
	DDX_Control(pDX, IDBTN_REFRESH2, m_btn_refresh2);
	DDX_CBIndex(pDX, IDCB_CHANNEL, m_channel);
	DDX_CBIndex(pDX, IDCB_WHICH, m_which);
	DDX_Check(pDX, IDCK_REC_SCHEDULE, m_rec_sched);
	DDX_DateTimeCtrl(pDX, IDDATE_00, m_date00);
	DDX_DateTimeCtrl(pDX, IDDATE_01, m_date01);
	DDX_DateTimeCtrl(pDX, IDDATE_10, m_date10);
	DDX_DateTimeCtrl(pDX, IDDATE_11, m_date11);
	DDX_Radio(pDX, IDRD_SCHED, m_enable);
	DDX_CBIndex(pDX, IDCB_REC_DAY, m_rec_day);
	//}}AFX_DATA_MAP

	/*
	 *	当允许/禁止MD时, 更新控件状态
	 */
	bool m_bool;
	if(m_which == -1) m_bool = false;
	else m_bool = true;
	GetDlgItem(IDDATE_00)->EnableWindow(m_rec_sched && m_enable && m_bool);
	GetDlgItem(IDDATE_01)->EnableWindow(m_rec_sched && m_enable && m_bool);
	GetDlgItem(IDDATE_10)->EnableWindow(m_rec_sched && m_enable && m_bool);
	GetDlgItem(IDDATE_11)->EnableWindow(m_rec_sched && m_enable && m_bool);
	GetDlgItem(IDCK_REC_SCHEDULE)->EnableWindow(m_enable);

	if( pDX->m_bSaveAndValidate )
	{
		opt.onoff = (m_enable && m_rec_sched);

		if( !m_enable )
		{
			for( int i=0; i<8; i++ )
			{
				UNSET_DAY(opt, i) ;
			}
			//PostMessage(WM_UPDATE_DATA);
		}
	}
}


BEGIN_MESSAGE_MAP(CRightSched, baseclass)
	//{{AFX_MSG_MAP(CRightSched)
	ON_CBN_SELCHANGE(IDCB_WHICH, OnSelchangeWhich)
	ON_BN_CLICKED(IDBTN_REFRESH, OnRefresh)
	ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
	ON_BN_CLICKED(IDRD_SCHED, OnSched)
	ON_BN_CLICKED(IDCK_REC_SCHEDULE, OnRecSchedule)
	ON_CBN_SELCHANGE(IDCB_REC_DAY, OnSelchangeRecDay)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDDATE_00, OnDatetimechange00)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDDATE_01, OnDatetimechange01)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDDATE_10, OnDatetimechange10)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDDATE_11, OnDatetimechange11)
	ON_BN_CLICKED(IDBTN_SET, OnSet)
	ON_BN_CLICKED(IDRD_SCHED1, OnSched1)
	ON_CBN_SELCHANGE(IDCB_CHANNEL, OnSelchangeChannel)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, OnDeltaposSpin1)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN2, OnDeltaposSpin2)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN3, OnDeltaposSpin3)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN4, OnDeltaposSpin4)
	ON_BN_CLICKED(IDBTN_REFRESH2, OnRefresh2)
	ON_BN_CLICKED(IDBTN_SET2, OnSet2)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_UPDATE_DATA, on_update_data)
	MSG2(NTM_OPT_GET_OK, on_get_ok)
	MSG2(NTM_OPT_SET_OK, on_set_ok)
	MSG2(WM_LOGGED_OUT, on_logged_out)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRightSched message handlers

//##ModelId=3F90BAAD0131
BOOL CRightSched::OnInitDialog() 
{
	baseclass::OnInitDialog();
	
	init_label(m_1).SetFontBold(TRUE);
	init_label(m_3);
	init_label(m_8);
	init_label(m_9);
	init_label(m_10);
	init_label(m_11);
	init_label(m_13);
	init_label(m_14);
	init_label(m_15);
	init_label(m_16);
	
	init_title(m_title);

	fill_combo_week(&m_cbrecday);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

//##ModelId=3F90BAAC0298
CString CRightSched::get_alias()
{
	UpdateData();
	CString alias;
	if( m_which== -1 )
		return alias;

	m_cbwhich.GetLBText(m_which, alias);
	return alias;
}

//void CRightSched::on_get_ok(DWORD ip, USHORT port, NET_OPTIONS no, void* stuff)
MSG3(on_get_ok, CRightSched)
{
	NET_OPTIONS no = (NET_OPTIONS)w ;
	void* stuff = (void*)l ;
	
	if (no == OPT_SCHED)  {
		TREC_SCHEDULEPARA* a = (TREC_SCHEDULEPARA*)stuff ;
		if (a->channel != last_channel)
			return 0 ;
		memcpy(&opt, stuff, sizeof(opt)) ;
		PostMessage(WM_UPDATE_DATA, FALSE) ;
		info_balloon(IDS_SCHED_GET) ;
	}
	if (no == OPT_VIDEOPARA)  {
		TREC_VIDEOPARA* a = (TREC_VIDEOPARA*)stuff ;
		if (a->channel != last_channel)
			return 0 ;
		memcpy(&opt2, stuff, sizeof(opt2)) ;
		PostMessage(WM_UPDATE_DATA, FALSE) ;
		info_balloon(IDS_VIDEOPARA_GET) ;
	}
	return 0 ;
}

//void CRightSched::on_set_ok(DWORD ip, USHORT port, NET_OPTIONS no)
MSG3(on_set_ok, CRightSched)
{
	NET_OPTIONS no = (NET_OPTIONS)w ;
	if(no == OPT_VIDEOPARA)
		info_balloon(IDS_VIDEOPARA_SET);
	else
		info_balloon(IDS_SCHED_SET);
	return 0;
}

//##ModelId=3F90BAAD0113
LRESULT CRightSched::on_update_data(WPARAM w, LPARAM)
{
	if (w == FALSE)	 {
		m_channel = opt.channel ;
		m_enable = opt.onoff ;
		m_rec_sched = IS_DAY_SET(opt, m_rec_day) ;

		if( m_rec_sched )
			put_date();
		else
		{
			for(int i=0; i<7; i++)
			{
				if(IS_DAY_SET(opt, i))
				{
					info_balloon(IDS_SELECT_OTHER_DAY);
					break;
				}
			}
			m_date00 = m_date01 = m_date10 = m_date11 = CTime::GetCurrentTime();
		}

		if (opt2.channel == m_channel)  {
			m_bright = opt2.bright ;
			m_contrast = opt2.contrast ;
			m_saturation = opt2.saturation ;
			m_hue = opt2.hue ;
		}
	}
	UpdateData(w) ;
	return 0;
}

//##ModelId=3F90BAAC02D4
void CRightSched::on_join()
{
	m_cbwhich.ResetContent();
	fill_combo(&m_cbwhich);
	m_cbchannel.EnableWindow(FALSE);
}

//##ModelId=3F90BAAC02D6
void CRightSched::on_leave()
{
	//m_cbwhich.ResetContent();
	//m_cbchannel.ResetContent();
}

//##ModelId=3F90BAAD013C
void CRightSched::OnSelchangeWhich() 
{
	GET_ALIAS;
	fill_combo_chnls(alias, &m_cbchannel);
	m_cbchannel.AddString("ALL");
	m_cbchannel.EnableWindow(!alias.IsEmpty());
	m_channel = 0;
	UpdateData(FALSE);
	OnRefresh() ;
	Sleep(10) ;
	OnRefresh2() ;
}

//##ModelId=3F90BAAD0146
void CRightSched::OnRefresh() 
{
	GET_ALIAS;
	last_channel = m_channel;
	get_net_opt(alias, OPT_SCHED, m_channel, m_hWnd);
}

//##ModelId=3F90BAAD0150
void CRightSched::OnRadio1() 
{
	UpdateData();
}

//##ModelId=3F90BAAD015A
void CRightSched::OnSched() 
{
	UpdateData();	
}

//##ModelId=3F90BAAD0164
void CRightSched::OnRecSchedule() 
{
	UpdateData();
	get_date();
}

//##ModelId=3F90BAAD016E
void CRightSched::OnSelchangeRecDay() 
{
	UpdateData();
	PostMessage(WM_UPDATE_DATA, FALSE);
}

// Dialog -> opt
//##ModelId=3F90BAAC02E8
void CRightSched::get_date()
{
	if(!UpdateData()) return;

	// 如果对某一天不允许MD Sched
	if( !m_rec_sched )
	{
		UNSET_DAY(opt, m_rec_day);
		return;
	}
	
	SEG1_BGN_HOUR(opt, m_rec_day) = m_date00.GetHour();
	SEG1_BGN_MIN(opt, m_rec_day) = m_date00.GetMinute();
	SEG1_END_HOUR(opt, m_rec_day) = m_date01.GetHour();
	SEG1_END_MIN(opt, m_rec_day) = m_date01.GetMinute();
	
	SEG2_BGN_HOUR(opt, m_rec_day) = m_date10.GetHour();
	SEG2_BGN_MIN(opt, m_rec_day) = m_date10.GetMinute();
	SEG2_END_HOUR(opt, m_rec_day) = m_date11.GetHour();
	SEG2_END_MIN(opt, m_rec_day) = m_date11.GetMinute();

	/*
	 *	EVERDAY和其他天数(1-7)不能同时设置
	 */
	if( m_rec_day == 0 )	// EVERYDAY
	{
		for( int i=1; i<8; i++ )
		{
			UNSET_DAY(opt, i);
		}
	}
	else					// OTHER days
	{
		UNSET_DAY(opt, 0);	// clear EVERYDAY flag
	}
}

// opt -> Dialog
//##ModelId=3F90BAAC02E9
void CRightSched::put_date()
{
	m_date00 = SEG1_BGN(opt, m_rec_day);
	m_date01 = SEG1_END(opt, m_rec_day);
	m_date10 = SEG2_BGN(opt, m_rec_day);	
	m_date11 = SEG2_END(opt, m_rec_day);
}

//##ModelId=3F90BAAD0178
void CRightSched::OnDatetimechange00(NMHDR* pNMHDR, LRESULT* pResult) 
{
	get_date();	
	*pResult = 0;
}

//##ModelId=3F90BAAD019F
void CRightSched::OnDatetimechange01(NMHDR* pNMHDR, LRESULT* pResult) 
{
	get_date();	
	*pResult = 0;
}

//##ModelId=3F90BAAD01BD
void CRightSched::OnDatetimechange10(NMHDR* pNMHDR, LRESULT* pResult) 
{
	get_date();
	*pResult = 0;
}

//##ModelId=3F90BAAD01E5
void CRightSched::OnDatetimechange11(NMHDR* pNMHDR, LRESULT* pResult) 
{
	get_date();
	*pResult = 0;
}

//##ModelId=3F90BAAD020D
void CRightSched::OnSet() 
{
	UpdateData();
	GET_ALIAS;

	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);
    if(!check_popedom(ip, port, m_channel+1, 5)) return;

	if(check_sel_channel(ip, port, m_channel)) opt.channel =0xff;
	else opt.channel = m_channel;
	set_net_opt(alias, OPT_SCHED, &opt, m_hWnd);

	CString m_logfile;
    m_logfile.Format(IDS_TIME_RECORD_SETTING,alias,m_channel+1);
    write_log_file(m_logfile);
}

//##ModelId=3F90BAAD0217
void CRightSched::OnSched1() 
{
	UpdateData();	
}

ON_LOGGED_OUT(CRightSched);

void CRightSched::OnSelchangeChannel() 
{
	OnRefresh() ;
	Sleep(10) ;
	OnRefresh2() ;
}

void CRightSched::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	if (pNMUpDown->iDelta < 0)  {
		if (m_bright < 127)  {
			m_bright++ ;  UpdateData(FALSE) ;
		}
	}
	else if (m_bright > 0)  {
		m_bright-- ;  UpdateData(FALSE) ;
	}
	*pResult = 0;
}
void CRightSched::OnDeltaposSpin2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	if (pNMUpDown->iDelta < 0)  {
		if (m_contrast < 127)  {
			m_contrast++ ;  UpdateData(FALSE) ;
		}
	}
	else if (m_contrast > 0)  {
		m_contrast-- ;  UpdateData(FALSE) ;
	}
	*pResult = 0;
}
void CRightSched::OnDeltaposSpin3(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	if (pNMUpDown->iDelta < 0)  {
		if (m_saturation < 127)  {
			m_saturation++ ;  UpdateData(FALSE) ;
		}
	}
	else if (m_saturation > 0)  {
		m_saturation-- ;  UpdateData(FALSE) ;
	}
	*pResult = 0;
}
void CRightSched::OnDeltaposSpin4(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	if (pNMUpDown->iDelta < 0)  {
		if (m_hue < 127)  {
			m_hue++ ;  UpdateData(FALSE) ;
		}
	}
	else if (m_hue > 0)  {
		m_hue-- ;  UpdateData(FALSE) ;
	}
	*pResult = 0;
}

void CRightSched::OnRefresh2()
{
	GET_ALIAS;
	last_channel = m_channel ;
	get_net_opt(alias, OPT_VIDEOPARA, m_channel, m_hWnd) ;
}
void CRightSched::OnSet2()
{
	UpdateData() ;
	
	GET_ALIAS ;

	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);
    if(!check_popedom(ip, port, m_channel+1, 14)) return;

	if(check_sel_channel(ip, port, m_channel)) opt2.channel =0xff;
	else opt2.channel = m_channel;
	if(m_bright>127 || m_contrast>127 || m_saturation>127 || m_hue>127)
	{
		AfxMessageBox(IDS_VEDIO_PARAM_OVER);
		return;
	}

	opt2.bright = m_bright ;
	opt2.contrast = m_contrast ;
	opt2.saturation = m_saturation ;
	opt2.hue = m_hue ;

	set_net_opt(alias, OPT_VIDEOPARA, &opt2, m_hWnd) ;

	CString m_logfile;
    m_logfile.Format(IDS_VIDEO_RECORD_SETTING,alias,m_channel+1);
    write_log_file(m_logfile);
}

⌨️ 快捷键说明

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