LONGLONG CItem::GetProgressRangeDrive() const { LONGLONG total; LONGLONG free; MyGetDiskFreeSpace(GetPath(), total, free); LONGLONG range = total - free; ASSERT(range >= 0); return range; }
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); }
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; }
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); }
bool MyGetDiskFreeSpace(LPCWSTR rootPathName, UInt64 &clusterSize, UInt64 &totalSize, UInt64 &freeSize) { return MyGetDiskFreeSpace(GetSystemString(rootPathName), clusterSize, totalSize, freeSize); }