Changeset 43594 in vbox
- Timestamp:
- Oct 10, 2012 1:58:48 PM (12 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp
r43577 r43594 153 153 } 154 154 155 /* static */ 156 void UIGChooserItemMachine::enumerateMachineItems(const QList<UIGChooserItem*> &il, 157 QList<UIGChooserItemMachine*> &ol, 158 int iEnumerationFlags /* = 0 */) 159 { 160 /* Enumerate all the passed items: */ 161 foreach (UIGChooserItem *pItem, il) 162 { 163 /* If that is machine-item: */ 164 if (pItem->type() == UIGChooserItemType_Machine) 165 { 166 /* Get the iterated machine-item: */ 167 UIGChooserItemMachine *pMachineItem = pItem->toMachineItem(); 168 /* Skip if this item is already enumerated but we need unique: */ 169 if ((iEnumerationFlags & UIGChooserItemMachineEnumerationFlag_Unique) && 170 contains(ol, pMachineItem)) 171 continue; 172 /* Skip if ths item is accessible and we no need it: */ 173 if ((iEnumerationFlags & UIGChooserItemMachineEnumerationFlag_Inaccessible) && 174 pMachineItem->accessible()) 175 continue; 176 /* Add it: */ 177 ol << pMachineItem; 178 } 179 /* If that is group-item: */ 180 else if (pItem->type() == UIGChooserItemType_Group) 181 { 182 /* Enumerate all the machine-items recursively: */ 183 enumerateMachineItems(pItem->items(UIGChooserItemType_Machine), ol, iEnumerationFlags); 184 /* Enumerate all the group-items recursively: */ 185 enumerateMachineItems(pItem->items(UIGChooserItemType_Group), ol, iEnumerationFlags); 186 } 187 } 188 } 189 155 190 QVariant UIGChooserItemMachine::data(int iKey) const 156 191 { … … 869 904 } 870 905 906 /* static */ 907 bool UIGChooserItemMachine::contains(const QList<UIGChooserItemMachine*> &list, UIGChooserItemMachine *pItem) 908 { 909 /* Check if passed list contains passed machine-item id: */ 910 foreach (UIGChooserItemMachine *pIteratedItem, list) 911 if (pIteratedItem->id() == pItem->id()) 912 return true; 913 return false; 914 } 915 -
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h
r43577 r43594 24 24 #include "UIGChooserItem.h" 25 25 26 /* Other VBox includes: */ 27 #include <iprt/cdefs.h> 28 26 29 /* Forward declarations: */ 27 30 class CMachine; 28 31 class UIGraphicsToolBar; 29 32 class UIGraphicsZoomButton; 33 34 /* Machine-item enumeration flags: */ 35 enum UIGChooserItemMachineEnumerationFlag 36 { 37 UIGChooserItemMachineEnumerationFlag_Unique = RT_BIT(0), 38 UIGChooserItemMachineEnumerationFlag_Inaccessible = RT_BIT(1) 39 }; 30 40 31 41 /* Graphics machine item … … 56 66 /* API: Update stuff: */ 57 67 void updateToolTip(); 68 69 /* API: Machine-item enumeration stuff: */ 70 static void enumerateMachineItems(const QList<UIGChooserItem*> &il, 71 QList<UIGChooserItemMachine*> &ol, 72 int iEnumerationFlags = 0); 58 73 59 74 private: … … 139 154 void prepare(); 140 155 156 /* Helper: Machine-item enumeration stuff: */ 157 static bool contains(const QList<UIGChooserItemMachine*> &list, 158 UIGChooserItemMachine *pItem); 159 141 160 /* Variables: */ 142 161 UIGraphicsToolBar *m_pToolBar; -
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
r43593 r43594 210 210 QList<UIVMItem*> UIGChooserModel::currentMachineItems() const 211 211 { 212 /* Populate list of selected machine-items: */ 213 QList<UIVMItem*> currentMachineItemList; 214 enumerateCurrentItems(currentItems(), currentMachineItemList); 215 return currentMachineItemList; 212 /* Gather list of current unique machine-items: */ 213 QList<UIGChooserItemMachine*> currentMachineItemList; 214 UIGChooserItemMachine::enumerateMachineItems(currentItems(), currentMachineItemList, 215 UIGChooserItemMachineEnumerationFlag_Unique); 216 217 /* Reintegrate machine-items into valid format: */ 218 QList<UIVMItem*> currentMachineList; 219 foreach (UIGChooserItemMachine *pItem, currentMachineItemList) 220 currentMachineList << pItem; 221 return currentMachineList; 216 222 } 217 223 … … 914 920 return; 915 921 916 /* Gather list of chosen inaccessible VMs: */ 917 QList<UIGChooserItem*> inaccessibleItems; 918 enumerateInaccessibleItems(currentItems(), inaccessibleItems); 919 920 /* For each inaccessible item: */ 922 /* Gather list of current unique inaccessible machine-items: */ 923 QList<UIGChooserItemMachine*> inaccessibleMachineItemList; 924 UIGChooserItemMachine::enumerateMachineItems(currentItems(), inaccessibleMachineItemList, 925 UIGChooserItemMachineEnumerationFlag_Unique | UIGChooserItemMachineEnumerationFlag_Inaccessible); 926 927 /* For each machine-item: */ 921 928 UIGChooserItem *pSelectedItem = 0; 922 foreach (UIGChooserItem *pItem, inaccessibleItems) 923 if (UIGChooserItemMachine *pMachineItem = pItem->toMachineItem()) 929 foreach (UIGChooserItemMachine *pItem, inaccessibleMachineItemList) 930 { 931 /* Recache: */ 932 pItem->recache(); 933 /* Become accessible? */ 934 if (pItem->accessible()) 924 935 { 925 /* Recache: */ 926 pMachineItem->recache(); 927 /* Become accessible? */ 928 if (pMachineItem->accessible()) 929 { 930 /* Machine name: */ 931 QString strMachineName = pMachineItem->name(); 932 /* We should reload this machine: */ 933 sltReloadMachine(pMachineItem->id()); 934 /* Select first of reloaded items: */ 935 if (!pSelectedItem) 936 pSelectedItem = findMachineItem(strMachineName, mainRoot()); 937 } 936 /* Machine name: */ 937 QString strMachineName = pItem->name(); 938 /* We should reload this machine: */ 939 sltReloadMachine(pItem->id()); 940 /* Select first of reloaded items: */ 941 if (!pSelectedItem) 942 pSelectedItem = findMachineItem(strMachineName, mainRoot()); 938 943 } 944 } 945 939 946 /* Some item to be selected? */ 940 947 if (pSelectedItem) … … 952 959 953 960 /* Enumerate all the selected machine-items: */ 954 QList<UIGChooserItem*> selectedMachineItemList = gatherMachineItems(currentItems()); 961 QList<UIGChooserItemMachine*> selectedMachineItemList; 962 UIGChooserItemMachine::enumerateMachineItems(currentItems(), selectedMachineItemList); 955 963 /* Enumerate all the existing machine-items: */ 956 QList<UIGChooserItem*> existingMachineItemList = gatherMachineItems(mainRoot()->items()); 964 QList<UIGChooserItemMachine*> existingMachineItemList; 965 UIGChooserItemMachine::enumerateMachineItems(mainRoot()->items(), existingMachineItemList); 957 966 958 967 /* Prepare maps: */ … … 1377 1386 } 1378 1387 1379 void UIGChooserModel::enumerateCurrentItems(const QList<UIGChooserItem*> &il, QList<UIVMItem*> &ol) const1380 {1381 /* Enumerate all the passed items: */1382 foreach (UIGChooserItem *pItem, il)1383 {1384 /* If item is machine, add if missed: */1385 if (pItem->type() == UIGChooserItemType_Machine)1386 {1387 if (UIGChooserItemMachine *pMachineItem = pItem->toMachineItem())1388 if (!contains(ol, pMachineItem))1389 ol << pMachineItem;1390 }1391 /* If item is group: */1392 else if (pItem->type() == UIGChooserItemType_Group)1393 {1394 /* Enumerate all the machine items recursively: */1395 enumerateCurrentItems(pItem->items(UIGChooserItemType_Machine), ol);1396 /* Enumerate all the group items recursively: */1397 enumerateCurrentItems(pItem->items(UIGChooserItemType_Group), ol);1398 }1399 }1400 }1401 1402 bool UIGChooserModel::contains(const QList<UIVMItem*> &list, UIVMItem *pItem) const1403 {1404 /* Check if passed list contains passed item: */1405 foreach (UIVMItem *pIteratedItem, list)1406 if (pIteratedItem->id() == pItem->id())1407 return true;1408 return false;1409 }1410 1411 1388 void UIGChooserModel::clearRealFocus() 1412 1389 { … … 1495 1472 /* Nothing found? */ 1496 1473 return 0; 1497 }1498 1499 QList<UIGChooserItem*> UIGChooserModel::gatherMachineItems(const QList<UIGChooserItem*> &selectedItems) const1500 {1501 QList<UIGChooserItem*> machineItems;1502 foreach (UIGChooserItem *pItem, selectedItems)1503 {1504 if (pItem->type() == UIGChooserItemType_Machine)1505 machineItems << pItem;1506 if (pItem->type() == UIGChooserItemType_Group)1507 machineItems << gatherMachineItems(pItem->items());1508 }1509 return machineItems;1510 }1511 1512 void UIGChooserModel::enumerateInaccessibleItems(const QList<UIGChooserItem*> &il, QList<UIGChooserItem*> &ol) const1513 {1514 /* Enumerate all the passed items: */1515 foreach (UIGChooserItem *pItem, il)1516 {1517 /* If item is inaccessible machine: */1518 if (pItem->type() == UIGChooserItemType_Machine)1519 {1520 if (UIGChooserItemMachine *pMachineItem = pItem->toMachineItem())1521 if (!pMachineItem->accessible() && !contains(ol, pItem))1522 ol << pMachineItem;1523 }1524 /* If item is group: */1525 else if (pItem->type() == UIGChooserItemType_Group)1526 {1527 /* Enumerate all the machine items recursively: */1528 enumerateInaccessibleItems(pItem->items(UIGChooserItemType_Machine), ol);1529 /* Enumerate all the group items recursively: */1530 enumerateInaccessibleItems(pItem->items(UIGChooserItemType_Group), ol);1531 }1532 }1533 }1534 1535 bool UIGChooserModel::contains(const QList<UIGChooserItem*> &il, UIGChooserItem *pLookupItem) const1536 {1537 /* We assume passed list contains only machine items: */1538 foreach (UIGChooserItem *pItem, il)1539 if (UIGChooserItemMachine *pMachineItem = pItem->toMachineItem())1540 if (pMachineItem->id() == pLookupItem->toMachineItem()->id())1541 return true;1542 return false;1543 1474 } 1544 1475 … … 1598 1529 } 1599 1530 1600 void UIGChooserModel::removeMachineItems(const QStringList &names, QList<UIGChooserItem *> &selectedItems)1531 void UIGChooserModel::removeMachineItems(const QStringList &names, QList<UIGChooserItemMachine*> &items) 1601 1532 { 1602 1533 /* Show machine-items remove dialog: */ … … 1606 1537 1607 1538 /* Remove all the required items: */ 1608 foreach (UIGChooserItem *pItem, selectedItems)1539 foreach (UIGChooserItem *pItem, items) 1609 1540 if (names.contains(pItem->name())) 1610 1541 delete pItem; -
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h
r43593 r43594 240 240 /* Helpers: Current-item stuff: */ 241 241 UIGChooserItemMachine* firstMachineItem(const QList<UIGChooserItem*> &list) const; 242 void enumerateCurrentItems(const QList<UIGChooserItem*> &il, QList<UIVMItem*> &ol) const;243 bool contains(const QList<UIVMItem*> &list, UIVMItem *pItem) const;244 242 245 243 /* Helper: Focus-item stuff: */ … … 255 253 /* Helpers: Machine-item stuff: */ 256 254 UIGChooserItem* findMachineItem(const QString &strName, UIGChooserItem *pParent); 257 QList<UIGChooserItem*> gatherMachineItems(const QList<UIGChooserItem*> &selectedItems) const;258 void enumerateInaccessibleItems(const QList<UIGChooserItem*> &il, QList<UIGChooserItem*> &ol) const;259 bool contains(const QList<UIGChooserItem*> &il, UIGChooserItem *pLookupItem) const;260 255 void sortItems(UIGChooserItem *pParent, bool fRecursively = false); 261 256 void updateMachineItems(const QString &strId, UIGChooserItem *pParent); 262 257 void removeMachineItems(const QString &strId, UIGChooserItem *pParent); 263 void removeMachineItems(const QStringList &names, QList<UIGChooserItem *> &selectedItems);258 void removeMachineItems(const QStringList &names, QList<UIGChooserItemMachine*> &selectedItems); 264 259 void unregisterMachines(const QStringList &ids); 265 260
Note:
See TracChangeset
for help on using the changeset viewer.