VirtualBox

Changeset 108122 in vbox


Ignore:
Timestamp:
Feb 9, 2025 5:34:28 PM (12 days ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167421
Message:

FE/Qt: bugref:10814: VBox Manager / Tools pane: Introduce Aux item class and Toggle item type; Handle Toggle item click to show/hide tool item names; This stuff will replace extra-button stuff.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp

    r108083 r108122  
    286286    switch (enmClass)
    287287    {
     288        case UIToolClass_Aux:
     289        {
     290            switch (enmType)
     291            {
     292                case UIToolType_Toggle:
     293                    return true;
     294                default:
     295                    break;
     296            }
     297            break;
     298        }
    288299        case UIToolClass_Global:
    289300        {
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h

    r108083 r108122  
    939939{
    940940    UIToolClass_Invalid,
     941    UIToolClass_Aux,
    941942    UIToolClass_Global,
    942943    UIToolClass_Machine
     
    948949{
    949950    UIToolType_Invalid,
     951    /* Aux types: */
     952    UIToolType_Toggle,
    950953    /* Global types: */
    951954    UIToolType_Home,
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp

    r108121 r108122  
    340340    const QSize viewportSize = scene()->views()[0]->viewport()->size();
    341341    const int iViewportWidth = viewportSize.width();
     342    const int iViewportHeight = viewportSize.height();
     343
     344    /* Start from above: */
    342345    int iVerticalIndent = iMargin;
    343346
    344     /* Layout the children: */
     347    /* Layout normal children: */
    345348    foreach (UIToolsItem *pItem, items())
    346349    {
     350        /* Skip aux children: */
     351        if (pItem->itemClass() == UIToolClass_Aux)
     352            continue;
     353
    347354        /* Make sure item visible: */
    348355        if (!pItem->isVisible())
     
    357364        /* Advance vertical indent: */
    358365        iVerticalIndent += (pItem->minimumHeightHint() + iSpacing);
     366    }
     367
     368    /* Start from bottom: */
     369    iVerticalIndent = iViewportHeight - iMargin;
     370
     371    /* Layout aux children: */
     372    foreach (UIToolsItem *pItem, items())
     373    {
     374        /* Skip normal children: */
     375        if (pItem->itemClass() != UIToolClass_Aux)
     376            continue;
     377
     378        /* Set item position: */
     379        pItem->setPos(iMargin, iVerticalIndent - pItem->minimumHeightHint());
     380        /* Set root-item size: */
     381        pItem->resize(iViewportWidth, pItem->minimumHeightHint());
     382        /* Make sure item is shown: */
     383        pItem->show();
     384        /* Decrease vertical indent: */
     385        iVerticalIndent -= (pItem->minimumHeightHint() + iSpacing);
    359386    }
    360387}
     
    423450                if (pClickedItem)
    424451                {
    425                     /* Do we have extra-button? */
    426                     if (pClickedItem->hasExtraButton())
     452                    /* Handle known item classes: */
     453                    switch (pClickedItem->itemClass())
    427454                    {
    428                         /* Check if clicked place is within extra-button geometry: */
    429                         const QPointF itemPos = pClickedItem->mapFromParent(scenePos);
    430                         if (pClickedItem->extraButtonRect().contains(itemPos.toPoint()))
     455                        case UIToolClass_Aux:
    431456                        {
    432                             /* Handle known button types: */
     457                            /* Handle known item types: */
    433458                            switch (pClickedItem->itemType())
    434459                            {
    435                                 case UIToolType_Home:
     460                                case UIToolType_Toggle:
    436461                                {
    437462                                    /* Toggle the button: */
     
    442467                                    /* Recalculate layout: */
    443468                                    updateLayout();
    444                                     break;
     469                                    return true;
    445470                                }
    446471                                default:
    447472                                    break;
    448473                            }
     474                            break;
    449475                        }
    450                     }
    451 
    452                     /* Make clicked item the current one: */
    453                     if (pClickedItem->isEnabled())
    454                     {
    455                         setCurrentItem(pClickedItem);
    456                         /* Close the widget in popup mode only: */
    457                         if (tools()->isPopup())
    458                             close();
    459                         return true;
     476                        case UIToolClass_Global:
     477                        case UIToolClass_Machine:
     478                        {
     479                            /* Make clicked item the current one: */
     480                            if (pClickedItem->isEnabled())
     481                            {
     482                                setCurrentItem(pClickedItem);
     483                                /* Close the widget in popup mode only: */
     484                                if (tools()->isPopup())
     485                                    close();
     486                                return true;
     487                            }
     488                            break;
     489                        }
     490                        default:
     491                            break;
    460492                    }
    461493                }
     
    490522        {
    491523            case UIToolType_Home:        pItem->setName(tr("Home")); break;
     524            case UIToolType_Toggle:      pItem->setName(QString()); break;
    492525            case UIToolType_Extensions:  pItem->setName(tr("Extensions")); break;
    493526            case UIToolType_Media:       pItem->setName(tr("Media")); break;
     
    536569            m_items << new UIToolsItem(scene(), UIIconPool::iconSet(":/welcome_screen_24px.png",
    537570                                                                    ":/welcome_screen_24px.png"),
    538                                        UIToolClass_Global, UIToolType_Home,
    539                                        !tools()->isPopup() /* extra-button */);
     571                                       UIToolClass_Global, UIToolType_Home);
    540572
    541573#ifdef VBOX_GUI_WITH_ADVANCED_WIDGETS
     
    570602                                                                    ":/resources_monitor_disabled_24px.png"),
    571603                                       UIToolClass_Global, UIToolType_Activities);
     604
     605#ifdef VBOX_GUI_WITH_ADVANCED_WIDGETS
     606            /* Toggle: */
     607            m_items << new UIToolsItem(scene(), UIIconPool::iconSet(":/tools_menu_24px.png",
     608                                                                    ":/tools_menu_24px.png"),
     609                                       UIToolClass_Aux, UIToolType_Toggle);
     610#endif
    572611
    573612            break;
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