void CDirstatDoc::OnTreemapZoomin() { // FIXME: Multi-select CItem *p = GetSelection(0); CItem *z = NULL; while(p != GetZoomItem()) { z = p; p = p->GetParent(); } ASSERT(z != NULL); SetZoomItem(z); }
// Starts a refresh of an item. // If the physical item has been deleted, // updates selection, zoom and working item accordingly. // void CDirstatDoc::RefreshItem(CItem *item) { ASSERT(item != NULL); CWaitCursor wc; ClearReselectChildStack(); if (item->IsAncestorOf(GetZoomItem())) SetZoomItem(item); if (item->IsAncestorOf(GetSelection())) { SetSelection(item); UpdateAllViews(NULL, HINT_SELECTIONCHANGED); } SetWorkingItemAncestor(item); CItem *parent= item->GetParent(); if (!item->StartRefresh()) { if (GetZoomItem() == item) SetZoomItem(parent); if (GetSelection() == item) { SetSelection(parent); UpdateAllViews(NULL, HINT_SELECTIONCHANGED); } if (m_workingItem == item) SetWorkingItem(parent); } UpdateAllViews(NULL); }
void CDirstatDoc::OnViewShowunknown() { CArray<CItem *, CItem *> drives; GetDriveItems(drives); if(m_showUnknown) { for(int i = 0; i < drives.GetSize(); i++) { CItem *unknown = drives[i]->FindUnknownItem(); ASSERT(unknown != NULL); // FIXME: Multi-select if(GetSelection(0) == unknown) { SetSelection(unknown->GetParent()); } if(GetZoomItem() == unknown) { m_zoomItem = unknown->GetParent(); } drives[i]->RemoveUnknownItem(); } m_showUnknown = false; } else { for(int i = 0; i < drives.GetSize(); i++) { drives[i]->CreateUnknownItem(); } m_showUnknown = true; } if(drives.GetSize() > 0) { SetWorkingItem(GetRootItem()); } UpdateAllViews(NULL); }
void CDirstatDoc::OnViewShowfreespace() { CArray<CItem *, CItem *> drives; GetDriveItems(drives); if(m_showFreeSpace) { for(int i = 0; i < drives.GetSize(); i++) { CItem *free = drives[i]->FindFreeSpaceItem(); ASSERT(free != NULL); // FIXME: Multi-select if(GetSelection(0) == free) { SetSelection(free->GetParent()); } if(GetZoomItem() == free) { m_zoomItem = free->GetParent(); } drives[i]->RemoveFreeSpaceItem(); } m_showFreeSpace = false; } else { for(int i = 0; i < drives.GetSize(); i++) { drives[i]->CreateFreeSpaceItem(); } m_showFreeSpace = true; } if(drives.GetSize() > 0) { SetWorkingItem(GetRootItem()); } UpdateAllViews(NULL); }
bool CDirstatDoc::IsZoomed() { return GetZoomItem() != GetRootItem(); }
void CDirstatDoc::OnTreemapZoomout() { SetZoomItem(GetZoomItem()->GetParent()); }