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

📄 vssreporterdlg.cpp

📁 自动化编译工具代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
	ASSERT(pItem != NULL);

	IVSSVersionsPtr objVersions = pItem->GetVersions(0L);

	IUnknownPtr		lpunk = objVersions->_NewEnum();
	IEnumVARIANTPtr ppvobj;
	lpunk.QueryInterface(IID_IEnumVARIANT, (void **)&ppvobj);

	COleDateTime data;
	ULONG fetched;
	do 
	{
		VARIANT st;
		ppvobj->Next(1UL, &st, &fetched);

		REFIID riid = __uuidof(IVSSVersion);
		IVSSVersionPtr objVersion;
		HRESULT hr = st.punkVal->QueryInterface(riid, (void**)&objVersion);

 		COleDateTime dt = objVersion->GetDate();
		if (dt > data)			// GetLastVersion()
			data = dt;
	} while(fetched != 0);

	return data;
}

void CVssreporterDlg::OnClose() 
{
	OnOK();
}

void CVssreporterDlg::OnDestroy() 
{
	CDialog::OnDestroy();
}	

void CVssreporterDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialog::OnSize(nType, cx, cy);

	if (nType != SIZE_MINIMIZED)
	{
		if (m_sizeOrg.cx && m_sizeOrg.cy)
		{
			int nXOffset = cx - m_sizeOrg.cx;
			int nYOffset = cy - m_sizeOrg.cy;
			{
				CDeferWndMove dwm;
				dwm.ResizeCtrl(this, IDC_FILELIST,  nXOffset, nYOffset);
				dwm.OffsetCtrl(this, IDC_EDIT,      nXOffset, nYOffset);
 				dwm.OffsetCtrl(this, IDC_ADDCONFIG, nXOffset, nYOffset);
 				dwm.OffsetCtrl(this, IDC_DELETECONFIG, nXOffset, nYOffset);
				dwm.OffsetCtrl(this, IDC_CONFIG,  0, nYOffset);
				dwm.ResizeCtrl(this, IDC_VSSTREE, 0, nYOffset); 
				dwm.OffsetCtrl(this, IDC_CONFIGLIST, 0, nYOffset);
			}
			{
				CDeferWndMove dwm;
				dwm.ResizeCtrl(this, IDC_CONFIGLIST, nXOffset, 0); 
			}
		}

		m_sizeOrg.cx = cx;
		m_sizeOrg.cy = cy;
	}
}

void CVssreporterDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
 	CDialog::OnGetMinMaxInfo(lpMMI);

 	lpMMI->ptMinTrackSize.x = 640;
 	lpMMI->ptMinTrackSize.y = 480;
}

BOOL CVssreporterDlg::IsVSSRegistered()
{
	IVSSDatabasePtr vssdb;

	try
	{
		vssdb.CreateInstance(L"SourceSafe");
	}
	catch(...)
	{
	}

	return (vssdb != NULL);
}

int CVssreporterDlg::GetFirstSelectedPos(CListCtrl &listc)
{
	POSITION pos = listc.GetFirstSelectedItemPosition();
	if(pos)
		return listc.GetNextSelectedItem(pos);
	return -1;
}

BOOL CVssreporterDlg::IsExistProject(const CString &strVSSPath,
									 const CString &strProjectFile)
{
	ASSERT(!strVSSPath.IsEmpty());
	ASSERT(!strProjectFile.IsEmpty());
	
	CTestProjectsType projects = m_pConfig->GetTestProjects();
	for (int i = 0; i < projects.GetTestProjectCount(); i++)
	{
		CTestProjectType  project  = projects.GetTestProjectAt(i);

		if (0 == strProjectFile.CompareNoCase(CString(project.GetProjectFile()))
		 &&	0 == strVSSPath    .CompareNoCase(CString(project.GetVSSPath())))
			return TRUE;
	}

	return FALSE;
}

void CVssreporterDlg::OnAddconfig() 
{
	const int nFileFirstSelPos = GetFirstSelectedPos(m_lcFiles);
	if (nFileFirstSelPos < 0)
	{
		MessageBox("You must selected a project file in project file list!", "Error", MB_OK | MB_ICONERROR);
		return;
	}

	const CString strProjectFile = m_lcFiles.GetItemText(nFileFirstSelPos, PROJECTNAME);
	if (IsExistProject(m_sCurVSSPrjPath, strProjectFile))
	{
		MessageBox("This project is exist in config file!", "Error", MB_OK | MB_ICONERROR);
		return;
	}

	CDlgProject dlg;
	dlg.m_strProjectFile = strProjectFile;
	dlg.m_strVSSPath     = m_sCurVSSPrjPath;
	dlg.m_strProjectName = GetFileName(m_lcFiles.GetItemText(nFileFirstSelPos
															,PROJECTNAME));
	if (IDOK == dlg.DoModal())
	{
		AddProject(dlg.m_strProjectName
				 , dlg.m_strVSSPath
				 , dlg.m_strProjectFile
				 , dlg.m_strBuildType
				 , dlg.m_strProjectVersion);
	}

}

void CVssreporterDlg::OnDeleteconfig() 
{
	const int nConfigFirstSelPos = GetFirstSelectedPos(m_lcConfigs);
	if (nConfigFirstSelPos < 0)
	{
		MessageBox("You must selected a project file in project file list!", "Error", MB_OK | MB_ICONERROR);
		return;
	}

	const CString strProjectFile = m_lcConfigs.GetItemText(nConfigFirstSelPos, PROJECTFILE);
	const CString strVSSPath	 = m_lcConfigs.GetItemText(nConfigFirstSelPos, VSSPATH);
	ASSERT(IsExistProject(strVSSPath, strProjectFile));

	if (IDYES == MessageBox("Do you want to delete select project config?", "Question", MB_YESNO))
	{
		DelProject(strVSSPath, strProjectFile);
	}
}

void CVssreporterDlg::OnItemclickConfiglist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	
	
	*pResult = 0;
}

void CVssreporterDlg::OnItemclickFilelist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	

	*pResult = 0;
}

void CVssreporterDlg::OnEdit() 
{
	const int nConfigFirstSelPos = GetFirstSelectedPos(m_lcConfigs);
	if (nConfigFirstSelPos < 0)
	{
		MessageBox("You must selected a project file in project file list!", "Error", MB_OK | MB_ICONERROR);
		return;
	}

	const CString strProjectFile = m_lcConfigs.GetItemText(nConfigFirstSelPos, PROJECTFILE);
	const CString strVSSPath	 = m_lcConfigs.GetItemText(nConfigFirstSelPos, VSSPATH);
	ASSERT(IsExistProject(strVSSPath, strProjectFile));

	CDlgProject dlg;
	dlg.m_strProjectFile = strProjectFile;
	dlg.m_strVSSPath     = strVSSPath;
	dlg.m_strProjectName = GetFileName(m_lcConfigs.GetItemText(nConfigFirstSelPos, PROJECTNAME));
	dlg.m_strBuildType	 = m_lcConfigs.GetItemText(nConfigFirstSelPos, BUILDTYPE);
	dlg.m_strProjectVersion	= m_lcConfigs.GetItemText(nConfigFirstSelPos, VCVERSION);
	if (IDOK == dlg.DoModal())
	{
		DelProject(strVSSPath, strProjectFile);

		AddProject(dlg.m_strProjectName
				 , dlg.m_strVSSPath
				 , dlg.m_strProjectFile
				 , dlg.m_strBuildType
				 , dlg.m_strProjectVersion);
	}	
}

void CVssreporterDlg::AddProject(const CString &strProjectName,
								 const CString &strVSSPath,
								 const CString &strProjectFile,
								 const CString &strBuildType,
								 const CString &strVCVersion
								 )
{
	//--------------
	CTestProjectType  project;
	project.AddProjectName(strProjectName);
	project.AddVSSPath(strVSSPath);
	project.AddProjectFile(strProjectFile);
	project.AddBuildType(strBuildType);
	project.AddProjectVersion(strVCVersion);

	CTestProjectsType projects = m_pConfig->GetTestProjects();
	projects.AddTestProject(project);

//-----------------
	m_pConfig->RemoveTestProjects();
	m_pConfig->AddTestProjects(projects);

	m_pConfigXML.Save(m_strXMLConfigFile, *m_pConfig);

	FlashConfigsList();
}

void CVssreporterDlg::DelProject(const CString &strVSSPath,
								 const CString &strProjectFile)
{
	ASSERT(!strVSSPath.IsEmpty());
	ASSERT(!strProjectFile.IsEmpty());

	CTestProjectsType projects = m_pConfig->GetTestProjects();
	for (int i = 0; i < projects.GetTestProjectCount(); i++)
	{
		CTestProjectType prj = projects.GetTestProjectAt(i);

		CString st1 = prj.GetVSSPath();
		CString st2 = prj.GetProjectFile();

		if (0 == strVSSPath	   .CompareNoCase(CString(prj.GetVSSPath())) 
		 && 0 == strProjectFile.CompareNoCase(CString(prj.GetProjectFile())))
		 break;
	}
	ASSERT(i != projects.GetTestProjectCount());
//-----------------
	projects.RemoveTestProjectAt(i);

	m_pConfig->RemoveTestProjects();
	m_pConfig->AddTestProjects(projects);
	m_pConfigXML.Save(m_strXMLConfigFile, *m_pConfig);

	FlashConfigsList();
}

⌨️ 快捷键说明

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