VirtualBox

Changeset 83949 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Apr 23, 2020 2:37:52 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
137503
Message:

FE/Qt: bugref:9653: VirtualBox Manager: Chooser pane: A bit of rework for selection stuff.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp

    r83948 r83949  
    262262}
    263263
     264const QList<UIChooserItem*> &UIChooserModel::selectedItems() const
     265{
     266    return m_selectedItems;
     267}
     268
    264269void UIChooserModel::addToSelectedItems(UIChooserItem *pItem)
    265270{
     
    284289    /* Return first of selected-items, if any: */
    285290    return selectedItems().value(0);
    286 }
    287 
    288 const QList<UIChooserItem*> &UIChooserModel::selectedItems() const
    289 {
    290     return m_selectedItems;
    291291}
    292292
     
    313313        currentMachineList << pItem->cache();
    314314    return currentMachineList;
     315}
     316
     317void UIChooserModel::makeSureAtLeastOneItemSelected()
     318{
     319    if (!firstSelectedItem() && !navigationItems().isEmpty())
     320    {
     321        setSelectedItem(navigationItems().first());
     322        emit sigSelectionInvalidated();
     323    }
    315324}
    316325
     
    686695    {
    687696        /* Remember first selected item definition: */
    688         AssertPtrReturnVoid(firstSelectedItem());
    689         const QString strDefinition = firstSelectedItem()->definition();
     697        const QString strDefinition = firstSelectedItem() ? firstSelectedItem()->definition() : QString();
    690698
    691699        /* Rebuild tree for main root: */
    692700        buildTreeForMainRoot();
    693701
    694         /* Restore selected item: */
    695         setSelectedItem(strDefinition);
     702        /* Restore selection if there was some item before: */
     703        if (!strDefinition.isNull())
     704            setSelectedItem(strDefinition);
     705        /* Else make sure at least one item selected: */
     706        else
     707            makeSureAtLeastOneItemSelected();
    696708    }
    697709    /* New VM registered? */
     
    713725    UIChooserAbstractModel::sltReloadMachine(uId);
    714726
    715     /* Show machine if we should: */
     727    /* Should we show this VM? */
    716728    if (gEDataManager->showMachineInVirtualBoxManagerChooser(uId))
    717729    {
     
    720732
    721733        /* Select newly added item: */
    722         CMachine comMachine = uiCommon().virtualBox().FindMachine(uId.toString());
    723         setSelectedItem(root()->searchForItem(comMachine.GetName(),
    724                                              UIChooserItemSearchFlag_Machine |
    725                                              UIChooserItemSearchFlag_ExactName));
    726     }
     734        setSelectedItem(root()->searchForItem(uId.toString(),
     735                                              UIChooserItemSearchFlag_Machine |
     736                                              UIChooserItemSearchFlag_ExactId));
     737    }
     738    /* Else make sure at least one item selected: */
    727739    else
    728     {
    729         /* Make sure at least one item selected after that: */
    730         if (!firstSelectedItem() && !navigationItems().isEmpty())
    731         {
    732             setSelectedItem(navigationItems().first());
    733             emit sigSelectionInvalidated();
    734         }
    735     }
     740        makeSureAtLeastOneItemSelected();
    736741
    737742    /* Notify listeners about selection change: */
     
    758763    if (!strDefinition.isNull())
    759764        setSelectedItem(strDefinition);
     765    /* Else make sure at least one item selected: */
    760766    else
    761     {
    762         /* Make sure selected-item present, if possible: */
    763         if (!firstSelectedItem() && !navigationItems().isEmpty())
    764         {
    765             setSelectedItem(navigationItems().first());
    766             emit sigSelectionInvalidated();
    767         }
    768         /* Make sure current-item present, if possible: */
    769         else if (!currentItem() && firstSelectedItem())
    770             setCurrentItem(firstSelectedItem());
    771         /* Notify about selected-item change: */
    772         emit sigSelectionChanged();
    773     }
     767        makeSureAtLeastOneItemSelected();
    774768}
    775769#endif /* VBOX_GUI_WITH_CLOUD_VMS */
     
    14071401    /* Load last selected-item (choose first if unable to load): */
    14081402    setSelectedItem(gEDataManager->selectorWindowLastItemChosen());
    1409     if (!firstSelectedItem() && !navigationItems().isEmpty())
    1410     {
    1411         setSelectedItem(navigationItems().first());
    1412         emit sigSelectionInvalidated();
    1413     }
     1403    makeSureAtLeastOneItemSelected();
    14141404}
    14151405
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h

    r83925 r83949  
    135135        void clearSelectedItems();
    136136
     137        /** Returns a list of selected-items. */
     138        const QList<UIChooserItem*> &selectedItems() const;
     139
    137140        /** Adds @a pItem to list of selected. */
    138141        void addToSelectedItems(UIChooserItem *pItem);
     
    142145        /** Returns first selected-item. */
    143146        UIChooserItem *firstSelectedItem() const;
    144         /** Returns a list of selected-items. */
    145         const QList<UIChooserItem*> &selectedItems() const;
    146 
    147147        /** Returns first selected machine item. */
    148148        UIVirtualMachineItem *firstSelectedMachineItem() const;
    149149        /** Returns a list of selected machine items. */
    150150        QList<UIVirtualMachineItem*> selectedMachineItems() const;
     151
     152        /** Makes sure at least one item selected. */
     153        void makeSureAtLeastOneItemSelected();
    151154
    152155        /** Returns whether group item is selected. */
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