Changeset 1381 in vbox
- Timestamp:
- Mar 9, 2007 4:20:08 PM (18 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h
r1370 r1381 338 338 bool startMachine (const QUuid &id); 339 339 340 void addMediaToList (const CUnknown&, VBoxDefs::DiskType); 341 340 342 void startEnumeratingMedia(); 341 343 -
trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp
r1370 r1381 1147 1147 1148 1148 /** 1149 * Appends media_list with passed disk & it's children 1150 */ 1151 void VBoxGlobal::addMediaToList (const CUnknown &aDisk, 1152 VBoxDefs::DiskType aType) 1153 { 1154 VBoxMedia media (aDisk, aType, VBoxMedia::Unknown); 1155 media_list += media; 1156 /* appending all vdi children */ 1157 if (aType == VBoxDefs::HD) 1158 { 1159 CHardDisk hd = aDisk; 1160 CHardDiskEnumerator enumerator = hd.GetChildren().Enumerate(); 1161 while (enumerator.HasMore()) 1162 { 1163 CHardDisk subHd = enumerator.GetNext(); 1164 addMediaToList (CUnknown (subHd), VBoxDefs::HD); 1165 } 1166 } 1167 } 1168 1169 /** 1149 1170 * Starts a thread that asynchronously enumerates all currently registered 1150 1171 * media, checks for its accessibility and posts VBoxEnumerateMediaEvent … … 1168 1189 return; 1169 1190 1170 /* composes a list of all currently known media */1191 /* composes a list of all currently known media & their children */ 1171 1192 media_list.clear(); 1172 1193 { 1173 1194 CHardDiskEnumerator enHD = vbox.GetHardDisks().Enumerate(); 1174 1195 while (enHD.HasMore()) 1175 { 1176 CHardDisk hd = enHD.GetNext(); 1177 media_list += VBoxMedia (CUnknown (hd), VBoxDefs::HD, VBoxMedia::Unknown); 1178 } 1196 addMediaToList (CUnknown (enHD.GetNext()), VBoxDefs::HD); 1197 1179 1198 CDVDImageEnumerator enCD = vbox.GetDVDImages().Enumerate(); 1180 1199 while (enCD.HasMore()) 1181 { 1182 CDVDImage cd = enCD.GetNext(); 1183 media_list += VBoxMedia (CUnknown (cd), VBoxDefs::CD, VBoxMedia::Unknown); 1184 } 1200 addMediaToList (CUnknown (enCD.GetNext()), VBoxDefs::CD); 1201 1185 1202 CFloppyImageEnumerator enFD = vbox.GetFloppyImages().Enumerate(); 1186 1203 while (enFD.HasMore()) 1187 { 1188 CFloppyImage fd = enFD.GetNext(); 1189 media_list += VBoxMedia (CUnknown (fd), VBoxDefs::FD, VBoxMedia::Unknown); 1190 } 1204 addMediaToList (CUnknown (enFD.GetNext()), VBoxDefs::FD); 1191 1205 } 1192 1206 … … 1220 1234 CHardDisk hd = media.disk; 1221 1235 media.status = 1222 hd.GetA llAccessible() == TRUE ? VBoxMedia::Ok :1236 hd.GetAccessible() == TRUE ? VBoxMedia::Ok : 1223 1237 hd.isOk() ? VBoxMedia::Inaccessible : 1224 1238 VBoxMedia::Error; -
trunk/src/VBox/Frontends/VirtualBox/src/VBoxMediaComboBox.cpp
r868 r1381 137 137 { 138 138 case VBoxDefs::HD: 139 processHdMedia (aMedia); 139 { 140 /* ignoring non-root disks */ 141 CHardDisk hd = aMedia.disk; 142 if (hd.GetParent().isNull()) 143 processHdMedia (aMedia); 140 144 break; 145 } 141 146 case VBoxDefs::CD: 142 147 processCdMedia (aMedia); -
trunk/src/VBox/Frontends/VirtualBox/ui/VBoxDiskImageManagerDlg.ui
r1298 r1381 617 617 <function access="private">updateCdItem( DiskImageItem*, const VBoxMedia & )</function> 618 618 <function access="private">updateFdItem( DiskImageItem*, const VBoxMedia & )</function> 619 <function access="private" returnType="DiskImageItem*">createHdItem( QListView*, DiskImageItem*, const VBoxMedia & )</function> 620 <function access="private" returnType="DiskImageItem*">createCdItem( QListView*, DiskImageItem*, const VBoxMedia & )</function> 621 <function access="private" returnType="DiskImageItem*">createFdItem( QListView*, DiskImageItem*, const VBoxMedia & )</function> 622 <function access="private">createHdChildren( DiskImageItem*, const VBoxMedia & )</function> 619 <function access="private" returnType="DiskImageItem*">createHdItem( QListView*, const VBoxMedia & )</function> 620 <function access="private" returnType="DiskImageItem*">createCdItem( QListView*, const VBoxMedia & )</function> 621 <function access="private" returnType="DiskImageItem*">createFdItem( QListView*, const VBoxMedia & )</function> 623 622 <function access="protected">showEvent( QShowEvent * )</function> 624 623 <function access="protected">resizeEvent( QResizeEvent* )</function> -
trunk/src/VBox/Frontends/VirtualBox/ui/VBoxDiskImageManagerDlg.ui.h
r1351 r1381 35 35 public: 36 36 37 enum { TypeId = 1001 }; 38 37 39 DiskImageItem (DiskImageItem *parent) : 38 40 QListViewItem (parent), mStatus (VBoxMedia::Unknown) {} … … 90 92 } 91 93 92 int rtti() const { return 1001; }94 int rtti() const { return TypeId; } 93 95 94 96 int compare (QListViewItem *aItem, int aColumn, bool aAscending) const … … 110 112 { 111 113 return (QListViewItem::nextSibling() && 112 QListViewItem::nextSibling()->rtti() == 1001) ?114 QListViewItem::nextSibling()->rtti() == DiskImageItem::TypeId) ? 113 115 static_cast<DiskImageItem*> (QListViewItem::nextSibling()) : 0; 114 116 } … … 140 142 141 143 VBoxMedia::Status mStatus; 144 }; 145 146 147 class DiskImageItemIterator : public QListViewItemIterator 148 { 149 public: 150 151 DiskImageItemIterator (QListView* aList) 152 : QListViewItemIterator (aList) {} 153 154 DiskImageItem* operator*() 155 { 156 QListViewItem *item = QListViewItemIterator::operator*(); 157 return item && item->rtti() == DiskImageItem::TypeId ? 158 static_cast<DiskImageItem*> (item) : 0; 159 } 160 161 DiskImageItemIterator& operator++() 162 { 163 return (DiskImageItemIterator&) QListViewItemIterator::operator++(); 164 } 142 165 }; 143 166 … … 464 487 switch (aItem->rtti()) 465 488 { 466 case 1001:489 case DiskImageItem::TypeId: 467 490 tip = static_cast<DiskImageItem*> (aItem)->getToolTip(); 468 491 break; … … 768 791 DiskImageItem *item = 0; 769 792 770 if (aList) 793 if (aRoot) 794 item = new DiskImageItem (aRoot); 795 else if (aList) 771 796 item = new DiskImageItem (aList); 772 else if (aRoot)773 item = new DiskImageItem (aRoot);774 797 else 775 798 Assert (0); … … 1058 1081 const VBoxMedia &aMedia) 1059 1082 { 1083 if (!aItem) return; 1060 1084 CHardDisk hd = aMedia.disk; 1061 1085 VBoxMedia::Status status = aMedia.status; … … 1105 1129 const VBoxMedia &aMedia) 1106 1130 { 1131 if (!aItem) return; 1107 1132 CDVDImage cd = aMedia.disk; 1108 1133 VBoxMedia::Status status = aMedia.status; … … 1130 1155 const VBoxMedia &aMedia) 1131 1156 { 1157 if (!aItem) return; 1132 1158 CFloppyImage fd = aMedia.disk; 1133 1159 VBoxMedia::Status status = aMedia.status; … … 1153 1179 1154 1180 1155 DiskImageItem* VBoxDiskImageManagerDlg::createHdItem (QListView *aList, 1156 DiskImageItem *aRoot, 1181 DiskImageItem* VBoxDiskImageManagerDlg::createHdItem (QListView *aList, 1157 1182 const VBoxMedia &aMedia) 1158 1183 { 1159 DiskImageItem *item = createImageNode (aList, aRoot); 1184 CHardDisk hd = aMedia.disk; 1185 QUuid rootId = hd.GetParent().isNull() ? QUuid() : hd.GetParent().GetId(); 1186 DiskImageItem *root = searchItem (aList, rootId); 1187 DiskImageItem *item = createImageNode (aList, root); 1160 1188 updateHdItem (item, aMedia); 1161 createHdChildren (item, aMedia);1162 1189 return item; 1163 1190 } 1164 1191 1165 DiskImageItem* VBoxDiskImageManagerDlg::createCdItem (QListView *aList, 1166 DiskImageItem *aRoot, 1192 DiskImageItem* VBoxDiskImageManagerDlg::createCdItem (QListView *aList, 1167 1193 const VBoxMedia &aMedia) 1168 1194 { 1169 DiskImageItem *item = createImageNode (aList, aRoot);1195 DiskImageItem *item = createImageNode (aList, 0); 1170 1196 updateCdItem (item, aMedia); 1171 1197 return item; 1172 1198 } 1173 1199 1174 DiskImageItem* VBoxDiskImageManagerDlg::createFdItem (QListView *aList, 1175 DiskImageItem *aRoot, 1200 DiskImageItem* VBoxDiskImageManagerDlg::createFdItem (QListView *aList, 1176 1201 const VBoxMedia &aMedia) 1177 1202 { 1178 DiskImageItem *item = createImageNode (aList, aRoot);1203 DiskImageItem *item = createImageNode (aList, 0); 1179 1204 updateFdItem (item, aMedia); 1180 1205 return item; 1181 }1182 1183 void VBoxDiskImageManagerDlg::createHdChildren (DiskImageItem *aRoot,1184 const VBoxMedia &aMedia)1185 {1186 CHardDisk hd = aMedia.disk;1187 CHardDiskEnumerator enumerator = hd.GetChildren().Enumerate();1188 while (enumerator.HasMore())1189 {1190 CHardDisk subHd = enumerator.GetNext();1191 VBoxMedia::Status status =1192 subHd.GetAccessible() == TRUE ? VBoxMedia::Ok :1193 subHd.isOk() ? VBoxMedia::Inaccessible :1194 VBoxMedia::Error;1195 createHdItem (0, aRoot, VBoxMedia (CUnknown (subHd), VBoxDefs::HD, status));1196 }1197 1206 } 1198 1207 … … 1222 1231 const QUuid &aId) 1223 1232 { 1224 DiskImageItem *item = 0, *iterator = 0; 1225 if (aList->firstChild() && aList->firstChild()->rtti() == 1001) 1226 iterator = static_cast<DiskImageItem*>(aList->firstChild()); 1227 while (iterator) 1228 { 1229 if (iterator->getUuid() == aId) 1230 item = iterator; 1231 iterator = iterator->nextSibling(); 1232 } 1233 return item; 1233 if (aId.isNull()) return 0; 1234 DiskImageItemIterator iterator (aList); 1235 while (*iterator) 1236 { 1237 if ((*iterator)->getUuid() == aId) 1238 return *iterator; 1239 ++iterator; 1240 } 1241 return 0; 1234 1242 } 1235 1243 … … 1383 1391 { 1384 1392 case VBoxDefs::HD: 1385 item = createHdItem (hdsView, 0,aMedia);1393 item = createHdItem (hdsView, aMedia); 1386 1394 if (item->getUuid() == hdSelectedId) 1387 1395 { … … 1391 1399 break; 1392 1400 case VBoxDefs::CD: 1393 item = createCdItem (cdsView, 0,aMedia);1401 item = createCdItem (cdsView, aMedia); 1394 1402 if (item->getUuid() == cdSelectedId) 1395 1403 { … … 1399 1407 break; 1400 1408 case VBoxDefs::FD: 1401 item = createFdItem (fdsView, 0,aMedia);1409 item = createFdItem (fdsView, aMedia); 1402 1410 if (item->getUuid() == fdSelectedId) 1403 1411 { … … 1432 1440 CHardDisk hd = aMedia.disk; 1433 1441 item = searchItem (hdsView, hd.GetId()); 1434 if (item) 1435 updateHdItem (item, aMedia); 1442 updateHdItem (item, aMedia); 1436 1443 break; 1437 1444 } … … 1440 1447 CDVDImage cd = aMedia.disk; 1441 1448 item = searchItem (cdsView, cd.GetId()); 1442 if (item) 1443 updateCdItem (item, aMedia); 1449 updateCdItem (item, aMedia); 1444 1450 break; 1445 1451 } … … 1448 1454 CFloppyImage fd = aMedia.disk; 1449 1455 item = searchItem (fdsView, fd.GetId()); 1450 if (item) 1451 updateFdItem (item, aMedia); 1456 updateFdItem (item, aMedia); 1452 1457 break; 1453 1458 } … … 1531 1536 1532 1537 item = hdsView->currentItem(); 1533 di = (item && item->rtti() == 1001) ? static_cast <DiskImageItem *> (item) : 0; 1538 di = (item && item->rtti() == DiskImageItem::TypeId) ? 1539 static_cast <DiskImageItem *> (item) : 0; 1534 1540 hdSelectedId = di ? di->getUuid() : QString::null; 1535 1541 1536 1542 item = cdsView->currentItem(); 1537 di = (item && item->rtti() == 1001) ? static_cast <DiskImageItem *> (item) : 0; 1543 di = (item && item->rtti() == DiskImageItem::TypeId) ? 1544 static_cast <DiskImageItem *> (item) : 0; 1538 1545 cdSelectedId = di ? di->getUuid() : QString::null; 1539 1546 1540 1547 item = fdsView->currentItem(); 1541 di = (item && item->rtti() == 1001) ? static_cast <DiskImageItem *> (item) : 0; 1548 di = (item && item->rtti() == DiskImageItem::TypeId) ? 1549 static_cast <DiskImageItem *> (item) : 0; 1542 1550 fdSelectedId = di ? di->getUuid() : QString::null; 1543 1551 … … 1656 1664 void VBoxDiskImageManagerDlg::processCurrentChanged (QListViewItem *aItem) 1657 1665 { 1658 DiskImageItem *item = aItem && aItem->rtti() == 1001?1666 DiskImageItem *item = aItem && aItem->rtti() == DiskImageItem::TypeId ? 1659 1667 static_cast<DiskImageItem*> (aItem) : 0; 1660 1668 … … 1749 1757 QListView *currentList = getCurrentListView(); 1750 1758 DiskImageItem *item = 1751 currentList->currentItem() && currentList->currentItem()->rtti() == 1001 ? 1759 currentList->currentItem() && 1760 currentList->currentItem()->rtti() == DiskImageItem::TypeId ? 1752 1761 static_cast <DiskImageItem*> (currentList->currentItem()) : 0; 1753 1762 … … 1806 1815 QListView *currentList = getCurrentListView(); 1807 1816 DiskImageItem *item = 1808 currentList->currentItem() && currentList->currentItem()->rtti() == 1001 ? 1817 currentList->currentItem() && 1818 currentList->currentItem()->rtti() == DiskImageItem::TypeId ? 1809 1819 static_cast<DiskImageItem*> (currentList->currentItem()) : 0; 1810 1820 AssertMsg (item, ("Current item must not be null")); … … 1863 1873 QListView *currentList = getCurrentListView(); 1864 1874 DiskImageItem *item = 1865 currentList->currentItem() && currentList->currentItem()->rtti() == 1001 ? 1875 currentList->currentItem() && 1876 currentList->currentItem()->rtti() == DiskImageItem::TypeId ? 1866 1877 static_cast<DiskImageItem*> (currentList->currentItem()) : 0; 1867 1878 AssertMsg (item, ("Current item must not be null")); … … 1996 2007 QUuid uuid; 1997 2008 1998 if ( 1999 currentList->selectedItem()->rtti() == 1001)2009 if (currentList->selectedItem() && 2010 currentList->selectedItem()->rtti() == DiskImageItem::TypeId) 2000 2011 uuid = QUuid (static_cast<DiskImageItem *>(currentList->selectedItem()) 2001 2012 ->getUuid()); … … 2010 2021 QString path; 2011 2022 2012 if ( currentList->selectedItem() && currentList->selectedItem()->rtti() == 1001 ) 2023 if (currentList->selectedItem() && 2024 currentList->selectedItem()->rtti() == DiskImageItem::TypeId ) 2013 2025 path = static_cast<DiskImageItem*> (currentList->selectedItem()) 2014 2026 ->getPath().stripWhiteSpace();
Note:
See TracChangeset
for help on using the changeset viewer.