예제 #1
0
LONGLONG CItem::GetProgressRangeDrive() const
{
	LONGLONG total;
	LONGLONG free;
	MyGetDiskFreeSpace(GetPath(), total, free);

	LONGLONG range = total - free;

	ASSERT(range >= 0);
	return range;
}
예제 #2
0
void CItem::CreateFreeSpaceItem()
{
	ASSERT(GetType() == IT_DRIVE);

	UpwardSetUndone();

	LONGLONG total;
	LONGLONG free;
	MyGetDiskFreeSpace(GetPath(), total, free);

	CItem *freespace = new CItem(IT_FREESPACE, GetFreeSpaceItemName());
	freespace->SetSize(free);
	freespace->SetDone();

	AddChild(freespace);
}
예제 #3
0
void CItem::SetDone() 
{ 
	if (m_done)
		return;

	if (GetType() == IT_DRIVE)
	{
		UpdateFreeSpaceItem();

		if (GetDocument()->OptionShowUnknown())
		{
			CItem *unknown = FindUnknownItem();

			LONGLONG total;
			LONGLONG free;
			MyGetDiskFreeSpace(GetPath(), total, free);
			
			LONGLONG unknownspace = total - GetSize();
			if (!GetDocument()->OptionShowFreeSpace())
				unknownspace -= free;

			// For CDs, the GetDiskFreeSpaceEx()-function is not correct.
			if (unknownspace < 0)
			{
				TRACE(_T("GetDiskFreeSpace(%s) incorrect.\n"), GetPath());
				unknownspace = 0;
			}
			unknown->SetSize(unknownspace);

			UpwardAddSize(unknownspace);
		}
	}

	for (int i=0; i < GetChildrenCount(); i++)
		ASSERT(GetChild(i)->IsDone());

	//m_children.FreeExtra(); // Doesn't help much.
	qsort(m_children.GetData(), m_children.GetSize(), sizeof(CItem *), &_compareBySize);

	ZeroMemory(&m_rect, sizeof(m_rect));

	m_done = true;
}
예제 #4
0
void CItem::UpdateFreeSpaceItem()
{
	ASSERT(GetType() == IT_DRIVE);

	if (!GetDocument()->OptionShowFreeSpace())
		return;

	CItem *freeSpaceItem = FindFreeSpaceItem();
	ASSERT(freeSpaceItem != NULL);

	LONGLONG total;
	LONGLONG free;
	MyGetDiskFreeSpace(GetPath(), total, free);

	LONGLONG before = freeSpaceItem->GetSize();
	LONGLONG diff = free - before;

	freeSpaceItem->UpwardAddSize(diff);
	
	ASSERT(freeSpaceItem->GetSize() == free);
}
예제 #5
0
파일: FileSystem.cpp 프로젝트: BIAINC/7Zip
bool MyGetDiskFreeSpace(LPCWSTR rootPathName,
    UInt64 &clusterSize, UInt64 &totalSize, UInt64 &freeSize)
{
  return MyGetDiskFreeSpace(GetSystemString(rootPathName), clusterSize, totalSize, freeSize);
}