// DlgConfig.cpp : implementation file
//

#include "stdafx.h"
#include "NetSdkDemo.h"
#include "DlgConfig.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgConfig dialog


CDlgConfig::CDlgConfig(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgConfig::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgConfig)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_clientRect = CRect(0, 0, 0, 0);
}


void CDlgConfig::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgConfig)
	DDX_Control(pDX, IDC_TAB_TYPE, m_tabDlg);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgConfig, CDialog)
	//{{AFX_MSG_MAP(CDlgConfig)
	ON_WM_DESTROY()
	ON_WM_SIZE()
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_TYPE, OnSelchangeTabType)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgConfig message handlers

void CDlgConfig::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}

void CDlgConfig::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}

BOOL CDlgConfig::OnInitDialog() 
{
	CDialog::OnInitDialog();

	m_tabDlg.InsertItem(0, "系统");
	m_tabDlg.InsertItem(1, "时间");
	m_tabDlg.InsertItem(2, "音频");
	m_tabDlg.InsertItem(3, "视频输出");
	m_tabDlg.InsertItem(4, "字符叠加");
	m_tabDlg.InsertItem(5, "视频编码");
	m_tabDlg.InsertItem(6, "流发布");
	m_tabDlg.InsertItem(7, "RTP组播");
	m_tabDlg.InsertItem(8, "视频参数");
	m_tabDlg.InsertItem(9, "网络");
	m_tabDlg.InsertItem(10, "版本");
	
	m_dlgSys.Create(IDD_DLGCFG_SYS,   &m_tabDlg);
	m_dlgTime.Create(IDD_DLGCFG_TIME, &m_tabDlg);
	m_dlgAudio.Create(IDD_DLGCFG_AUDIO, &m_tabDlg);
	m_dlgVout.Create(IDD_DLGCFG_VOUT, &m_tabDlg);
	m_dlgOsd.Create(IDD_DLGCFG_OSD, &m_tabDlg);
	m_dlgEnc.Create(IDD_DLGCFG_ENCODER, &m_tabDlg);
	m_dlgPublish.Create(IDD_DLGCFG_PUBLISH, &m_tabDlg);
	m_dlgRtpCast.Create(IDD_DLGCFG_RTPCAST, &m_tabDlg);
	m_dlgIsp.Create(IDD_DLGCFG_ISP, &m_tabDlg);
	m_dlgNet.Create(IDD_DLGCFG_NET, &m_tabDlg);
	m_dlgUpdate.Create(IDD_DLGCFG_UPDATE, &m_tabDlg);
	m_dlgSys.ShowWindow(SW_SHOW);
	GetClientRect(&m_clientRect);
	AdjustClientRect(m_clientRect);

	m_tabDlg.SetCurSel(0);

	m_dlgSys.GetEnvParam();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgConfig::OnDestroy() 
{
	CDialog::OnDestroy();
}

void CDlgConfig::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	if ((cx ==0 && cy == 0) || 
		(cx == m_clientRect.Width() && cy == m_clientRect.Height())) 
	{
		return;
	}
	else if(m_tabDlg.m_hWnd)
	{
		GetClientRect(&m_clientRect);
		AdjustClientRect(m_clientRect);
		Invalidate();	
	}
}

void CDlgConfig::AdjustClientRect(CRect &rcClient)
{
	CRect rcTemp;
	m_tabDlg.MoveWindow(rcClient);
	m_tabDlg.GetClientRect(&rcTemp);
	//rcTemp = rcClient;
	rcTemp.top += 22;
	rcTemp.left += 2;
	rcTemp.right -= 2;
	rcTemp.bottom -= 2;
	m_dlgSys.MoveWindow(rcTemp);
	m_dlgTime.MoveWindow(rcTemp);
	m_dlgAudio.MoveWindow(rcTemp);
	m_dlgVout.MoveWindow(rcTemp);
	m_dlgOsd.MoveWindow(rcTemp);
	m_dlgEnc.MoveWindow(rcTemp);
	m_dlgPublish.MoveWindow(rcTemp);
	m_dlgRtpCast.MoveWindow(rcTemp);
	m_dlgIsp.MoveWindow(rcTemp);
	m_dlgNet.MoveWindow(rcTemp);
	m_dlgUpdate.MoveWindow(rcTemp);
}

void CDlgConfig::OnSelchangeTabType(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_tabDlg.GetCurSel();
	if(nCurSel == 0)
	{
		m_dlgSys.ShowWindow(SW_SHOW);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);
		m_dlgSys.GetEnvParam();
	}
	else if(nCurSel == 1)
	{
		m_dlgTime.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);
		m_dlgTime.GetEnvParam();
	}
	else if(nCurSel == 2)
	{
		m_dlgAudio.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);
		m_dlgAudio.GetEnvParam();
	}
	else if(nCurSel == 3)
	{
		m_dlgVout.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);
		m_dlgVout.GetEnvParam();
	}
	else if(nCurSel == 4)
	{
		m_dlgOsd.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);
		m_dlgOsd.GetEnvParam();
	}
	else if(nCurSel == 5)
	{
		m_dlgEnc.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);

		m_dlgEnc.GetEnvParam();
	}
	else if(nCurSel == 6)
	{
		m_dlgPublish.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);
		
		m_dlgPublish.GetEnvParam();
	}
	else if(nCurSel == 7)
	{
		m_dlgRtpCast.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);

		m_dlgRtpCast.GetEnvParam();
	}
	else if(nCurSel == 8)
	{
		m_dlgIsp.ShowWindow(SW_SHOW);
		
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);
		m_dlgIsp.GetEnvParam();
	}
	else if(nCurSel == 9)
	{
		m_dlgNet.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgUpdate.ShowWindow(SW_HIDE);
		
		m_dlgNet.GetEnvParam();
	}
	else if(nCurSel == 10)
	{
		m_dlgUpdate.ShowWindow(SW_SHOW);
		m_dlgSys.ShowWindow(SW_HIDE);
		m_dlgTime.ShowWindow(SW_HIDE);
		m_dlgAudio.ShowWindow(SW_HIDE);
		m_dlgVout.ShowWindow(SW_HIDE);
		m_dlgOsd.ShowWindow(SW_HIDE);
		m_dlgEnc.ShowWindow(SW_HIDE);
		m_dlgPublish.ShowWindow(SW_HIDE);
		m_dlgRtpCast.ShowWindow(SW_HIDE);
		m_dlgIsp.ShowWindow(SW_HIDE);
		m_dlgNet.ShowWindow(SW_HIDE);
		
		m_dlgUpdate.GetEnvParam();
	}
	*pResult = 0;
}
