📄 vssreporterdlg.cpp
字号:
{
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 + -