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

📄 timesearchdlg.cpp

📁 一个完整的数字硬盘录像机系统软件
💻 CPP
字号:
// TimeSearchDlg.cpp : implementation file
//

#include "stdafx.h"
#include "gtmpeg.h"
#include "TimeSearchDlg.h"
#include "GtMpegWnd.h"
#include "PlayList.h"
#include "FileSortDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
CTimeSearchDlg::CTimeSearchDlg(CGtMpegWnd* pParent /*=NULL*/)
	: CDialog(CTimeSearchDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTimeSearchDlg)
	m_Date = COleDateTime::GetCurrentTime();
	//}}AFX_DATA_INIT
    m_pParentWnd=pParent;
}
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
void CTimeSearchDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTimeSearchDlg)
	DDX_Control(pDX, IDC_RECORD_DATE, m_cRecordDate);
	DDX_Control(pDX, IDC_CHANNEL_BOX, m_cChannelBox);
	DDX_DateTimeCtrl(pDX, IDC_RECORD_DATE, m_Date);
	//}}AFX_DATA_MAP
	DDX_Control(pDX, IDC_TIME_GRID, m_cTimeGrid);
}
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CTimeSearchDlg, CDialog)
	//{{AFX_MSG_MAP(CTimeSearchDlg)
	ON_CBN_CLOSEUP(IDC_CHANNEL_BOX, OnCloseupChannelBox)
	ON_NOTIFY(DTN_CLOSEUP, IDC_RECORD_DATE, OnCloseupRecordDate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
BOOL CTimeSearchDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	for(DWORD i=0;i<g_dwNumberOfSlots;i++)
	{
	    CString sTxt;
		sTxt.Format("频道%d",i+1);
		m_cChannelBox.AddString(sTxt);
	}
	m_nChannel=0;
    m_cChannelBox.SetCurSel(m_nChannel);
	CheckfileValid(GetAppPath()+"mpeg");
	return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
void CTimeSearchDlg::OnOK() 
{
	//m_pParentWnd
	BOOL bSection=FALSE;
	m_cRecordDate.GetTime(m_Date);
	CString sDate;
	CPlayList *pList;
	sDate=m_Date.Format("%Y%m%d");
	g_pDevice[m_nChannel]->m_arPlayList.SetSize(0);
	g_pDevice[m_nChannel]->m_arFileName.SetSize(0);
    for(int i=1;i<m_cTimeGrid.m_nRows;i++)
	{
	   for(int j=1;j<m_cTimeGrid.m_nCols;j++)
	   {
	       switch(m_cTimeGrid.GetCellStates(i,j))
		   {
		      case GVIS_NOSELECTED:
				                  if(bSection)
								  {
								    pList=g_pDevice[m_nChannel]->m_arPlayList.GetAt(g_pDevice[m_nChannel]->m_arPlayList.GetSize()-1);
									int nEndRow=i-1,nEndCol=j-1;
									if(j==1)
									{
									   nEndRow--;
									   nEndCol=59;//m_cTimeGrid.m_nCols-1;
									}
									pList->m_sEndTime.Format("%02d:%02d",nEndRow,nEndCol-1);
									bSection=FALSE;
								  }
			                      break;
		      case GVIS_SELECTED:
                                 if(!bSection)
								 {
								   pList=new CPlayList;
								   g_pDevice[m_nChannel]->m_arPlayList.Add(pList);
								   pList->m_nChannel=m_nChannel;
								   pList->m_sPlayDate=sDate;
								   pList->m_sStartTime.Format("%02d:%02d",i-1,j-1);
								   bSection=TRUE;
								 }
			                     break;
		   }
	   }
	}
    if(!g_pDevice[m_nChannel]->EnablePlayFile(sDate,GetAppPath()+"Mpeg",g_pDevice[m_nChannel]->m_arFileName)==FALSE)
	{
	}
#ifdef _DEBUG
     CFileSortDlg dlg(m_nChannel);
	 if(dlg.DoModal()==IDCANCEL)
	    return;
#endif
	if(!g_pDevice[m_nChannel]->CheckPlayFile())
	{
	   MessageBox("所选择的时间段没有进行录像,请重新选择!");
	   return;
	}
	CDialog::OnOK();
}
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
void CTimeSearchDlg::OnCloseupChannelBox() 
{
   int nIndex=m_cChannelBox.GetCurSel();
   if(nIndex!=m_nChannel)
   {
      m_nChannel=nIndex;
	  CheckfileValid(GetAppPath()+"mpeg");
	  SetFocus();
   }
}
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
BOOL CTimeSearchDlg::CheckfileValid(CString sPath)
{
   	m_cTimeGrid.SetNoValid();
	m_cRecordDate.GetTime(m_Date);
	CString sDate;
	sDate=m_Date.Format("%Y%m%d");
	CFileFind PlayFile;
	CString sFind;
	sFind.Format("%02d-%s",m_nChannel+1,sDate);
	sFind+="*.mpg";
	sFind=sPath+"\\"+sFind;
	BOOL bFind=PlayFile.FindFile(sFind);
	if(bFind)
	{
		while(bFind)
		{
		   bFind=PlayFile.FindNextFile();
		   CString sTmp=PlayFile.GetFileTitle();
		   CString sHour,sMinute,sEndHour,sEndMinute,sTmp1;
           sHour=sTmp.Mid(11,2);
           sMinute=sTmp.Mid(13,2);
		   CTime LastTime;
		   PlayFile.GetLastWriteTime(LastTime);
		   sEndHour=LastTime.Format("%H");
		   sEndMinute=LastTime.Format("%M");
		   if(sHour<sEndHour)
		   {
			  for(int i=StringToInt(sHour)+1;i<StringToInt(sEndHour)+1;i++)
			  {
				  for(int j=StringToInt(sMinute)+1;j<=60;j++)
				  {
					 m_cTimeGrid.SetValidCell(i,j);
					 m_cTimeGrid.RedrawCell(i,j);
				  }
				  for(j=0;j<=StringToInt(sEndMinute)+1;j++)
				  {
					 m_cTimeGrid.SetValidCell(i+1,j);
					 m_cTimeGrid.RedrawCell(i+1,j);
				  }
			  }
		   }
		   else
		   {
		      for(int j=StringToInt(sMinute)+1;j<=StringToInt(sEndMinute)+1;j++)
			  {
			     m_cTimeGrid.SetValidCell(StringToInt(sHour)+1,j);
				 m_cTimeGrid.RedrawCell(StringToInt(sHour)+1,j);

			  }
		   }
		   if(!bFind)
			   return TRUE;
		}
	}
	return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
void CTimeSearchDlg::OnCloseupRecordDate(NMHDR* pNMHDR, LRESULT* pResult) 
{
	CheckfileValid(GetAppPath()+"mpeg");
	*pResult = 0;
}

⌨️ 快捷键说明

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