📄 rightvod.cpp
字号:
m_date.ResetContent();
for( int i=0; i<allnum; i++ )
{
CString str;
TREC_DATE* p;
if(l == OPT_VOD_DATE)
p = &opt1.rec_date[i];
if(l == OPT_VOD_DATE_EXT)
p = &opt3.rec_date[i];
if( p->month == 0 )
continue;
/* 2003-10-17, nodman
* 修正: "2003-42-1"
* 主机传来的日期格式有误
*/
if( p->month > 32 )
{
p->month -= 32;
}
#define FMT_ERR_AND_RETURN {MessageBox(FMTERROR); save_log("date_fmt.log", pdate, sizeof(opt1)); return 0;}
if(!(p->day >= 1 && p->day <= 31)) FMT_ERR_AND_RETURN;
if(!(p->month >= 1 && p->month <= 12)) FMT_ERR_AND_RETURN;
if(!(p->year >= 2000 && p->year < 2100)) FMT_ERR_AND_RETURN;
str.Format(date_format, p->year, p->month, p->day);
// e.g. "2003-08-20"
/* 修正: 2003-10-15
* 不允许有重复的日期
*/
if( m_date.FindString(-1, str) == -1 )
{
int idx = m_date.AddString(str);
/*
byte x[4];
x[0] = p->year - 2000;
x[1] = p->month;
x[2] = p->day;
x[3] = 0;
*/
m_date.SetItemData(idx, i);
}
}
//m_date.SetRedraw();
}
if( l == OPT_VOD_FILE || l == OPT_VOD_FILE_EXT)
{
int filenum = 0;
if(l == OPT_VOD_FILE)
filenum = opt2.num;
if(l == OPT_VOD_FILE_EXT)
filenum = opt4.num;
m_files.SetRedraw(FALSE);
m_files.ResetContent();
for( int i=0; i<filenum; i++ )
{
CString str;
TREC_FILESEG* f ;
if(l == OPT_VOD_FILE)
f = &opt2.rec_fileseg[i];
if(l == OPT_VOD_FILE_EXT)
f = &opt4.rec_fileseg[i];
if( f->bgn_hour < 0 || f->bgn_hour > 23 )
return 0;
if( f->end_hour < 0 || f->bgn_hour > 23 )
return 0;
if( f->bgn_minute < 0 || f->bgn_minute > 59 )
return 0;
if( f->end_minute < 0 || f->end_minute > 59 )
return 0;
if( f->bgn_second < 0 || f->bgn_second > 59 )
return 0;
if( f->end_second < 0 || f->end_second > 59 )
return 0;
str.Format(file_format,
f->bgn_hour, f->bgn_minute, f->bgn_second,
f->end_hour, f->end_minute, f->end_second,
add_comma(f->size));
int idx = m_files.AddString(str);
m_files.SetItemData(idx, i);
}
m_files.SetRedraw();
}
}
UpdateData(w);
return 0;
}
//##ModelId=3F90BAAB01EC
void CRightVOD::OnSelchangeDate()
{
m_files.ResetContent();
UpdateData(true);
GET_ALIAS;
int m_data[4];
TREC_DATE* p;
int idx = m_date.GetCurSel();
if( idx == -1 )
return;
idx = m_date.GetItemData(idx);
int allcount = m_date.GetCount();
if(allcount >= 255)
p = &opt3.rec_date[idx];
else
p = &opt1.rec_date[idx];
byte x[5];
x[0] = p->year - 2000;
x[1] = p->month;
x[2] = p->day;
int index = m_tabctrl.GetCurSel();
switch(index) {
case 0:
x[3] = m_channel;
break;
case 1:
x[3] = m_channel+100;
break;
default: ;
}
if(m_handrec) m_data[0]=1;
else m_data[0]=0;
if(m_timerec) m_data[1]=1;
else m_data[1]=0;
if(m_motionrec) m_data[2]=1;
else m_data[2]=0;
if(m_alarmrec) m_data[3]=1;
else m_data[3]=0;
x[4]=m_data[0]+m_data[1]*2+m_data[2]*4+m_data[3]*8;
get_net_opt_file(alias, x, m_hWnd);
}
//##ModelId=3F90BAAB0110
BOOL CRightVOD::PreTranslateMessage(MSG* msg)
{
if( msg->message == WM_LBUTTONDBLCLK )
{
if( msg->hwnd == m_date.m_hWnd )
OnSelchangeDate();
if( msg->hwnd == m_files.m_hWnd )
OnSelchangeFiles();
}
return baseclass::PreTranslateMessage(msg);
}
//##ModelId=3F90BAAB01E2
void CRightVOD::OnSelchangeFiles()
{
OnPlay();
}
//##ModelId=3F90BAAB0200
void CRightVOD::OnDate()
{
int idx = m_date.GetCurSel();
if( idx == -1 )
return;
idx = m_date.GetItemData(idx);
CString str;
TREC_DATE *p;
int allcount = m_date.GetCount();
if(allcount >= 255)
p = &opt3.rec_date[idx];
else
p = &opt1.rec_date[idx];
str.Format(date_format, p->year, p->month, p->day);
m_startdate.SetText(str);
start_ft.year = p->year-2000;
start_ft.month = p->month;
start_ft.day = p->day;
OnSelchangeDate();
}
//##ModelId=3F90BAAB023D
void CRightVOD::OnFiles()
{
int idx = m_files.GetCurSel();
if( idx == -1 )
return;
idx = m_files.GetItemData(idx);
int allcount = m_files.GetCount();
TREC_FILESEG* pf;
if(allcount >= 255)
pf = &opt4.rec_fileseg[idx];
else
pf = &opt2.rec_fileseg[idx];
m_starttime = CTime(2003, 12, 20, pf->bgn_hour, pf->bgn_minute, pf->bgn_second);
UpdateData(FALSE);
}
//##ModelId=3F90BAAB020A
void CRightVOD::OnPlay()
{
video_channel* p = video_channel::current_sel();
VOD_SPEED vs = get_vod_speed();
if( p->is_video_opened()&& p->is_vod() && vs != VS_PLAYx1)
{
VOD_SPEED vs = VS_PLAYx1;
CRightLogin::the_one()->SendMessage(WM_SET_VOD_SPEED, vs);
UpdateData();
return;
}
GET_ALIAS;
ULONG ip;
USHORT port;
get_addr(alias, ip, port);
ip_port ipp(ip, port);
/*
* 日期:根据用户在Date列表框中的选择
* 时间:根据用户在Files列表框中的选择, 并且可以任意指定
*/
start_ft.channel = m_channel;
start_ft.hour = m_starttime.GetHour();
start_ft.minute = m_starttime.GetMinute();
start_ft.second = m_starttime.GetSecond();
if(!check_popedom(ip, port, m_channel+1, 10)) return;
CRightLogin::the_one()->SendMessage(WM_OPEN_VOD, (WPARAM)&start_ft, (LPARAM)&ipp);
CString m_logfile;
m_logfile.Format(IDS_VOD_RECORDING,alias,m_channel+1);
write_log_file(m_logfile);
}
//##ModelId=3F90BAAB021E
void CRightVOD::OnStop()
{
CRightLogin::the_one()->SendMessage(WM_CLOSE_VOD);
UpdateData();
}
//##ModelId=3F90BAAB0214
void CRightVOD::OnPause()
{
CRightLogin::the_one()->SendMessage(WM_SET_VOD_SPEED, VS_PAUSE);
UpdateData();
}
//##ModelId=3F90BAAB0229
void CRightVOD::OnFf()
{
video_channel* p = video_channel::current_sel();
if( !vod_opened[p->index()] )
return;
VOD_SPEED vs = get_vod_speed();
switch(vs)
{
case VS_FFx1:
vs = VS_FFx2;
break;
case VS_FFx2:
vs = VS_FFx3;
break;
case VS_FFx3:
vs = VS_FFx4;
break;
case VS_FFx4:
vs = VS_FFx1;
break;
case VS_PLAYx1:
default:
vs = VS_FFx1;
break;
}
CRightLogin::the_one()->SendMessage(WM_SET_VOD_SPEED, vs);
UpdateData(true);
}
//##ModelId=3F90BAAB0233
void CRightVOD::OnFb()
{
video_channel* p = video_channel::current_sel();
if( !vod_opened[p->index()] )
return;
VOD_SPEED vs = get_vod_speed();
switch(vs)
{
case VS_FBx1:
vs = VS_FBx2;
break;
case VS_FBx2:
vs = VS_FBx3;
break;
case VS_FBx3:
vs = VS_FBx4;
break;
case VS_FBx4:
vs = VS_FBx1;
break;
default:
vs = VS_FBx1;
break;
}
CRightLogin::the_one()->SendMessage(WM_SET_VOD_SPEED, vs);
UpdateData(true);
}
//##ModelId=3F90BAAB0247
void CRightVOD::OnFrame()
{
CRightLogin::the_one()->PostMessage(WM_SET_VOD_SPEED, VS_FRAME);
}
/*
* 从video_channel传来
*/
//##ModelId=3F90BAAB016A
LRESULT CRightVOD::on_vod_opened(WPARAM w, LPARAM)
{
int m_channel= w;
vod_opened[m_channel] = true;
UpdateData();
return 0;
}
//##ModelId=3F90BAAB0188
LRESULT CRightVOD::on_vod_closed(WPARAM w, LPARAM)
{
int window = (int) w;
vod_opened[window] = false;
UpdateData();
info_balloon(IDS_VOD_END);
return 0;
}
//##ModelId=3F90BAAB0251
void CRightVOD::OnTimer(UINT nIDEvent)
{
baseclass::OnTimer(nIDEvent);
}
ON_LOGGED_OUT(CRightVOD);
//##ModelId=3F90BAAA0321
VOD_SPEED CRightVOD::get_vod_speed()
{
return (VOD_SPEED)CRightLogin::the_one()->SendMessage(WM_GET_VOD_SPEED);
}
//##ModelId=3F90BAAA032B
bool CRightVOD::paused()
{
return get_vod_speed() == VS_PAUSE;
}
//##ModelId=3F90BAAB01A6
LRESULT CRightVOD::on_vod_set_speed(WPARAM, LPARAM)
{
UpdateData();
return 0;
}
void CRightVOD::Onupdatefile()
{
UpdateData(TRUE);
OnSelchangeDate();
}
void CRightVOD::OnSelchangeVod(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_date.ResetContent();
m_files.ResetContent();
PostMessage(WM_COMMAND,IDBTN_REFRESH,NULL);
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -