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

📄 livecontrollerdlg.cpp

📁 视频播放控制器程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -