VirtualBox

Changeset 43594 in vbox


Ignore:
Timestamp:
Oct 10, 2012 1:58:48 PM (12 years ago)
Author:
vboxsync
Message:

FE/Qt: VM group feature UI: Moving some item enumeration stuff into corresponding place, reusing it.

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  
    153153}
    154154
     155/* static */
     156void 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
    155190QVariant UIGChooserItemMachine::data(int iKey) const
    156191{
     
    869904}
    870905
     906/* static */
     907bool 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  
    2424#include "UIGChooserItem.h"
    2525
     26/* Other VBox includes: */
     27#include <iprt/cdefs.h>
     28
    2629/* Forward declarations: */
    2730class CMachine;
    2831class UIGraphicsToolBar;
    2932class UIGraphicsZoomButton;
     33
     34/* Machine-item enumeration flags: */
     35enum UIGChooserItemMachineEnumerationFlag
     36{
     37    UIGChooserItemMachineEnumerationFlag_Unique       = RT_BIT(0),
     38    UIGChooserItemMachineEnumerationFlag_Inaccessible = RT_BIT(1)
     39};
    3040
    3141/* Graphics machine item
     
    5666    /* API: Update stuff: */
    5767    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);
    5873
    5974private:
     
    139154    void prepare();
    140155
     156    /* Helper: Machine-item enumeration stuff: */
     157    static bool contains(const QList<UIGChooserItemMachine*> &list,
     158                         UIGChooserItemMachine *pItem);
     159
    141160    /* Variables: */
    142161    UIGraphicsToolBar *m_pToolBar;
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp

    r43593 r43594  
    210210QList<UIVMItem*> UIGChooserModel::currentMachineItems() const
    211211{
    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;
    216222}
    217223
     
    914920        return;
    915921
    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: */
    921928    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())
    924935        {
    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());
    938943        }
     944    }
     945
    939946    /* Some item to be selected? */
    940947    if (pSelectedItem)
     
    952959
    953960    /* Enumerate all the selected machine-items: */
    954     QList<UIGChooserItem*> selectedMachineItemList = gatherMachineItems(currentItems());
     961    QList<UIGChooserItemMachine*> selectedMachineItemList;
     962    UIGChooserItemMachine::enumerateMachineItems(currentItems(), selectedMachineItemList);
    955963    /* Enumerate all the existing machine-items: */
    956     QList<UIGChooserItem*> existingMachineItemList = gatherMachineItems(mainRoot()->items());
     964    QList<UIGChooserItemMachine*> existingMachineItemList;
     965    UIGChooserItemMachine::enumerateMachineItems(mainRoot()->items(), existingMachineItemList);
    957966
    958967    /* Prepare maps: */
     
    13771386}
    13781387
    1379 void UIGChooserModel::enumerateCurrentItems(const QList<UIGChooserItem*> &il, QList<UIVMItem*> &ol) const
    1380 {
    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) const
    1403 {
    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 
    14111388void UIGChooserModel::clearRealFocus()
    14121389{
     
    14951472    /* Nothing found? */
    14961473    return 0;
    1497 }
    1498 
    1499 QList<UIGChooserItem*> UIGChooserModel::gatherMachineItems(const QList<UIGChooserItem*> &selectedItems) const
    1500 {
    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) const
    1513 {
    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) const
    1536 {
    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;
    15431474}
    15441475
     
    15981529}
    15991530
    1600 void UIGChooserModel::removeMachineItems(const QStringList &names, QList<UIGChooserItem*> &selectedItems)
     1531void UIGChooserModel::removeMachineItems(const QStringList &names, QList<UIGChooserItemMachine*> &items)
    16011532{
    16021533    /* Show machine-items remove dialog: */
     
    16061537
    16071538    /* Remove all the required items: */
    1608     foreach (UIGChooserItem *pItem, selectedItems)
     1539    foreach (UIGChooserItem *pItem, items)
    16091540        if (names.contains(pItem->name()))
    16101541            delete pItem;
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h

    r43593 r43594  
    240240    /* Helpers: Current-item stuff: */
    241241    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;
    244242
    245243    /* Helper: Focus-item stuff: */
     
    255253    /* Helpers: Machine-item stuff: */
    256254    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;
    260255    void sortItems(UIGChooserItem *pParent, bool fRecursively = false);
    261256    void updateMachineItems(const QString &strId, UIGChooserItem *pParent);
    262257    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);
    264259    void unregisterMachines(const QStringList &ids);
    265260
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette