📄 livecontrollerdlg.cpp
字号:
tempLvi.pszText = (char*)(LPCTSTR)(strTemp);
m_ctrScheList.SetItem( &tempLvi );
// Start Time
tempLvi.iSubItem = 4;
strTemp = pSche->m_nStartime.Format("%Y-%m-%d %H:%M");
tempLvi.pszText = (char *)(LPCTSTR)(strTemp);
m_ctrScheList.SetItem( &tempLvi );
// Stop Time
tempLvi.iSubItem = 5;
strTemp = pSche->m_nStoptime.Format("%Y-%m-%d %H:%M");
tempLvi.pszText = (char *)(LPCTSTR)(strTemp);
m_ctrScheList.SetItem( &tempLvi );
m_ctrScheList.SetItem( &tempLvi );
m_ctrScheList.SetItemData( nIndex, pSche->m_nScheID );
}
void CLiveControllerDlg::OnBnAddSche()
{
CAddScheDlg Dlg;
Dlg.m_pDBInterface = &m_DBInterface;
if ( Dlg.DoModal() != IDOK ) {
return;
}
CSchedule *pNewSche = Dlg.GetNewSchedule();
if ( m_DBInterface.AddSchedule(pNewSche) == FALSE )
{
MessageBox( "Add schedule to DataBase error", "Error" );
delete pNewSche;
return;
}
pNewSche->addRef();
m_ScheMap.SetAt( pNewSche->m_nScheID, pNewSche );
// Report Add message to the work server
m_pStreamServer->SendStreamCtrl( OPERATION_ADD, pNewSche->m_nScheID );
// Update the schelist show
UpdateScheList();
}
void CLiveControllerDlg::OnBnViewSche()
{
POSITION pos = m_ctrScheList.GetFirstSelectedItemPosition();
if (pos)
{
int nIndex = m_ctrScheList.GetNextSelectedItem( pos );
DWORD nSelectedScheID = m_ctrScheList.GetItemData(nIndex);
CSchedule *pSche = NULL;
if ( m_ScheMap.Lookup( nSelectedScheID, pSche ) == FALSE ) {
return;
}
m_ViewScheDlg.SetWorkingSche( pSche );
m_ViewScheDlg.m_DBInterface = m_DBInterface;
m_ViewScheDlg.DoModal();
return;
}
}
void CLiveControllerDlg::OnBnUpdSche()
{
POSITION pos = m_ctrScheList.GetFirstSelectedItemPosition();
if (pos)
{
int nIndex = m_ctrScheList.GetNextSelectedItem( pos );
DWORD nSelectedScheID = m_ctrScheList.GetItemData(nIndex);
CSchedule *pSche = NULL;
if ( m_ScheMap.Lookup( nSelectedScheID, pSche ) == FALSE ) {
return;
}
CAddScheDlg Dlg;
Dlg.m_pDBInterface = &m_DBInterface;
Dlg.SetUpdateSche( pSche );
Dlg.DoModal();
return;
}
}
void CLiveControllerDlg::OnBnDelSche()
{
// Confirm the del action
if ( MessageBox( "您确定要进行删除操作吗?", "提示", MB_YESNO ) != IDYES ) {
return;
}
POSITION pos = m_ctrScheList.GetFirstSelectedItemPosition();
int nIndex = 0;
CSchedule *pSche = NULL;
while(pos)
{
nIndex = m_ctrScheList.GetNextSelectedItem( pos );
DWORD nSelectedScheID = m_ctrScheList.GetItemData(nIndex);
if ( m_ScheMap.Lookup( nSelectedScheID, pSche ) == FALSE ) {
continue;
}
// Remove from database
if ( m_DBInterface.RemoveSchedule( nSelectedScheID ) == FALSE )
{
MessageBox( "Error in Operate DataBase" );
return;
}
// Report Del message to the work server
m_pStreamServer->SendStreamCtrl( OPERATION_DEL, nSelectedScheID );
// Remove the sche from the ScheMap
m_ScheMap.RemoveKey( nSelectedScheID );
// Release the sche
pSche->release();
}
// Refresh the Schelist Show
UpdateScheList();
GetDlgItem(IDC_BN_UPD_SCHE)->EnableWindow(FALSE);
GetDlgItem(IDC_BN_VIEW_SCHE)->EnableWindow(FALSE);
GetDlgItem(IDC_BN_DEL_SCHE)->EnableWindow(FALSE);
}
void CLiveControllerDlg::OnClickSchelist(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNmitem = (LPNMITEMACTIVATE)pNMHDR;
UINT nCount = m_ctrScheList.GetSelectedCount();
if ( nCount == 1 ) {
GetDlgItem(IDC_BN_VIEW_SCHE)->EnableWindow(TRUE);
GetDlgItem(IDC_BN_UPD_SCHE)->EnableWindow(TRUE);
}
else {
GetDlgItem(IDC_BN_UPD_SCHE)->EnableWindow(FALSE);
GetDlgItem(IDC_BN_VIEW_SCHE)->EnableWindow(FALSE);
}
if ( nCount > 0 ) {
GetDlgItem(IDC_BN_DEL_SCHE)->EnableWindow(TRUE);
}
else {
GetDlgItem(IDC_BN_DEL_SCHE)->EnableWindow(FALSE);
}
*pResult = 0;
}
void CLiveControllerDlg::OnDblclkSchelist(NMHDR* pNMHDR, LRESULT* pResult)
{
// Show the sche View dlg
OnBnViewSche();
*pResult = 0;
}
void CLiveControllerDlg::OnDestroy()
{
CDialog::OnDestroy();
KillTimer(TID_SCHE_STATE_QUERY);
if ( m_pStreamServer )
{
m_pStreamServer->StopThread();
delete m_pStreamServer;
m_pStreamServer = NULL;
}
}
//////////////////////////////////////////////////////////////////////////
void CLiveControllerDlg::OnRecvSS_Workstate( WPARAM wParam, LPARAM lParam )
{
if ( wParam == NI_CONNECT )
{
if ( lParam == NI_CONNECT_TIMEOUT ) {
m_strStateSS = "连接超时";
m_pStreamServer->SendDevCtrl( DEV_CTRL_QUERY );
}
UpdateData(FALSE);
return;
}
if ( wParam == NI_WORKSTATE )
{
NI_WMsg *pMsg = (NI_WMsg*)lParam;
if ( pMsg == NULL ) {
return;
}
CString strTemp;
if ( pMsg->m_nMsgType == NI_WORKSTATE_TYPE_NORMAL )
{
m_strStateSS = "正常";
}
else
if ( pMsg->m_nMsgType == NI_WORKSTATE_TYPE_STOPED )
{
m_strStateSS = "已停止";
}
else
if ( pMsg->m_nMsgType == NI_WORKSTATE_TYPE_SCHE_START )
{
strTemp.Format( "节目%d启动播放" );
m_strHistorySS = m_strHistorySS + strTemp;
}
else
if ( pMsg->m_nMsgType == NI_WORKSTATE_TYPE_SCHE_STOP )
{
strTemp.Format( "节目%d播放完毕" );
m_strHistorySS = m_strHistorySS + strTemp;
}
else
if ( pMsg->m_nMsgType == NI_WORKSTATE_TYPE_ERROR )
{
m_strStateSS.Format( "错误%d", pMsg->m_dwParam1 );
}
else
if ( pMsg->m_nMsgType == NI_WORKSTATE_TYPE_SCHE_PLAY )
{
CSchedule *pSche = NULL;
if ( m_ScheMap.Lookup(pMsg->m_dwParam1, pSche) && pSche ) {
pSche->m_nCurPlayItem = pMsg->m_dwParam2;
m_ViewScheDlg.RefreshPlayList(pSche->m_nScheID);
}
}
else
if ( pMsg->m_nMsgType == NI_WORKSTATE_TYPE_SCHE_PLAY_OVER )
{
m_strStateSS = "正常";
}
else
if ( pMsg->m_nMsgType == NI_WORKSTATE_TYPE_SCHE_PLAY_ERR )
{
m_strStateSS = "正常";
}
UpdateData(FALSE);
delete pMsg;
return;
}
}
void CLiveControllerDlg::OnBnDetailSs()
{
if ( m_pStreamServer == NULL ) {
return;
}
m_pStreamServer->SendDevCtrl( DEV_CTRL_START );
}
void CLiveControllerDlg::OnTimer(UINT nIDEvent)
{
if ( nIDEvent == TID_SCHE_STATE_QUERY )
{
DWORD nScheID;
CSchedule *pSche = NULL;
POSITION pos = m_ScheMap.GetStartPosition();
while ( pos )
{
m_ScheMap.GetNextAssoc( pos, nScheID, pSche );
// Define if the sche's state has changed
CPlayItem *pPlayItem = NULL;
if ( pSche->CheckScheState() )
{
UpdateScheList( pSche );
m_ViewScheDlg.RefreshScheState(nScheID);
}
}
return;
}
CDialog::OnTimer(nIDEvent);
}
void CLiveControllerDlg::OnExpertInfo()
{
// TODO: Add your command handler code here
CExpertDlg dlg;
dlg.m_pDbinterface = &m_DBInterface;
dlg.DoModal();
}
void CLiveControllerDlg::OnChannel()
{
// TODO: Add your command handler code here
CChannelDlg dlg;
dlg.m_pinterface = &m_DBInterface;
dlg.DoModal();
}
void CLiveControllerDlg::OnWordList()
{
// TODO: Add your command handler code here
CWordListDlg dlg;
dlg.DoModal();
}
void CLiveControllerDlg::OnVideoSource()
{
// TODO: Add your command handler code here
CVideoDlg dlg;
dlg.m_pDBinterface = &m_DBInterface;
dlg.DoModal();
}
void CLiveControllerDlg::OnNameList()
{
// TODO: Add your command handler code here
CNameListDlg dlg;
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -