📄 myfolder.cpp
字号:
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "DiskInfo.h"
#include "MyFolder.h"
#include "Common/Useful.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMyFolder::CMyFolder()
{
m_strFolderName = _T("");
m_nFileCount = 0;
m_dFileSize = 0;
m_bSorted = FALSE;
m_nStatus = -1;
m_arraySubFolder.SetSize(0, 10);
}
CMyFolder::~CMyFolder()
{
DeleteAll();
}
BOOL CMyFolder::Add(CMyFolder * pObj)
{
try
{
m_arraySubFolder.Add(pObj);
return TRUE;
}
catch (CMemoryException* e)
{
CString strTemp, strMes;
strTemp.LoadString(IDS_ERR_OUTOFMEM);
strMes.Format(strTemp, 2012);
AfxMessageBox(strMes);
if (pObj !=NULL)
delete pObj;
e->Delete();
return FALSE;
}
}
void CMyFolder::DeleteAll()
{
int nCount = m_arraySubFolder.GetSize();
for (int i = 0; i < nCount; i++)
{
CMyFolder* pObj = (CMyFolder*)(m_arraySubFolder.GetAt(i));
pObj->DeleteAll();
delete pObj;
}
m_arraySubFolder.RemoveAll();
//m_ptarraySubFolder.RemoveAll();
m_bSorted = FALSE;
/*
while (m_listSubFolder.GetHeadPosition()) {
delete m_listSubFolder.RemoveHead();
}*/
m_nFileCount = 0;
m_dFileSize = 0;
m_nStatus = -1;
}
int CMyFolder::GetCount()
{
return m_arraySubFolder.GetSize();
}
CMyFolder* CMyFolder::GetAt(int i)
{
return (CMyFolder*)m_arraySubFolder.GetAt(i); // No check
/*
POSITION pos = m_listSubFolder.FindIndex(i);
if (pos)
return m_listSubFolder.GetAt(pos); // No check
else
return NULL;*/
}
long double CMyFolder::GetFolderSize(BOOL bSubFolder)
{
if (!IsReady())
return 0;
if (IsFile())
return m_dFileSize;
CMyFolder* pFolder;
long double ldSize = m_dFileSize;
if (bSubFolder)
{
int nCount = m_arraySubFolder.GetSize();
for (int i = 0; i < nCount; i++)
{
pFolder = (CMyFolder*)m_arraySubFolder.GetAt(i);
if (!pFolder->IsFile())
ldSize += pFolder->GetFolderSize(bSubFolder);
}
/* POSITION pos = m_listSubFolder.GetHeadPosition();
while( pos != NULL )
{
pFolder = m_listSubFolder.GetNext( pos );
if (!pFolder->IsFile())
ldSize += pFolder->GetFolderSize(bSubFolder);
}*/
}
return ldSize;
}
unsigned long int CMyFolder::GetFolderCount(BOOL bSubFolder, BOOL bRealCount)
{
if (!IsReady())
return 0;
int nCount = m_arraySubFolder.GetSize();
unsigned long int nC = nCount;
if (bRealCount && m_nFileCount!=0 && !(IsFile())) // Exclude the file folder
nC --;
if (bSubFolder)
{
for (int i = 0; i < nCount; i++)
{
nC += ((CMyFolder*)(m_arraySubFolder.GetAt(i)))->
GetFolderCount(bSubFolder);
}
/*
CMyFolder* pFolder;
POSITION pos = m_listSubFolder.GetHeadPosition();
while( pos != NULL )
{
pFolder = m_listSubFolder.GetNext( pos );
nC += pFolder->GetFolderCount(bSubFolder);
}*/
}
return nC;
}
unsigned long int CMyFolder::GetFileCount(BOOL bSubFolder)
{
if (!IsReady())
return 0;
CMyFolder* pFolder;
unsigned long int nC = m_nFileCount;
if (bSubFolder)
{
int nCount = m_arraySubFolder.GetSize();
for (int i = 0; i < nCount; i++)
{
pFolder = (CMyFolder*)m_arraySubFolder.GetAt(i);
if (!pFolder->IsFile())
nC += pFolder->GetFileCount(bSubFolder);
}
/*POSITION pos = m_listSubFolder.GetHeadPosition();
while( pos != NULL )
{
pFolder = m_listSubFolder.GetNext( pos );
if (!pFolder->IsFile())
nC += pFolder->GetFileCount(bSubFolder);
}*/
}
return nC;
}
/*BOOL CMyFolder::GetSubColor(CMyFolder *pSubFolder, COLORREF& color)
{
/*
if (!m_bSorted)
{
if (m_arraySubFolder.GetSize() > 1)
qsort((void*)(m_arraySubFolder.GetData()),
((size_t)m_arraySubFolder.GetSize()),
sizeof(m_arraySubFolder.GetAt(0)),
CDetailDlg::CompareFolderSize);
m_bSorted = TRUE;
}
int nCount = m_arraySubFolder.GetSize();
for (int i = 0; i < nCount; i++)
{
CMyFolder* pFolder = (CMyFolder*)m_arraySubFolder.GetAt(i);
if (pFolder->m_strFolderName == pSubFolder->m_strFolderName &&
pFolder->m_dFileSize == pSubFolder->m_dFileSize)
{
if (m_pChart)
{
m_pChart->GetItemColor(i, color);
return TRUE;
}
}
}
return FALSE;
}*/
CString CMyFolder::GetItemText(int nSubItem)
{
if (nSubItem == 0)
return m_strFolderName;
CString str;
if (nSubItem == 1) // Size
{
FormatByteSize(GetFolderSize(TRUE),str);
return str;
}
if (nSubItem == 2) // Folder
{
str.Format("%d", GetFolderCount(TRUE));
return str;
}
if (nSubItem == 3) // File
{
str.Format("%d", GetFileCount(TRUE));
return str;
}
return CString();
}
BOOL CMyFolder::IsFile()
{
return m_nStatus == 1;
}
BOOL CMyFolder::IsReady()
{
return m_nStatus != -1;
}
void CMyFolder::SetTitle(CString str)
{
int nLenght = str.GetLength();
if (nLenght > 0)
{
m_strFolderName = str.Left(1);
m_strFolderName.MakeUpper();
str = str.Right(nLenght-1);
str.MakeLower();
m_strFolderName += str;
}else
m_strFolderName = "";
}
void CMyFolder::SetReady(int n)
{
/*m_ptarraySubFolder.SetSize(m_listSubFolder.GetCount());
POSITION pos = m_listSubFolder.GetHeadPosition();
int nPos=0;
while( pos != NULL )
{
m_ptarraySubFolder.SetAt(nPos, m_listSubFolder.GetNext( pos ));
nPos ++;
}
//VERIFY(m_ptarraySubFolder.GetSize() == m_listSubFolder.GetCount());
*/
m_nStatus = n;
m_arraySubFolder.FreeExtra();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -