VirtualBox

Changeset 93884 in vbox


Ignore:
Timestamp:
Feb 22, 2022 11:17:24 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
150102
Message:

FE/Qt: bugref:6899: VirtualBox Manager / Network Manager / Reworking NAT network details, group-box with embedded check-box isn't accessible through macOS screen-reader engine; To make it simple, reworking it everywhere for consistency.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/networkmanager
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.cpp

    r93115 r93884  
    1919#include <QCheckBox>
    2020#include <QFontMetrics>
    21 #include <QGroupBox>
    2221#include <QLabel>
    2322#include <QPushButton>
     
    4847    , m_pLabelNetworkName(0)
    4948    , m_pEditorNetworkName(0)
    50     , m_pGroupBoxIPv4(0)
    5149    , m_pLabelNetworkIPv4Prefix(0)
    5250    , m_pEditorNetworkIPv4Prefix(0)
    5351    , m_pCheckboxSupportsDHCP(0)
    54     , m_pGroupBoxIPv6(0)
     52    , m_pCheckboxIPv6(0)
    5553    , m_pLabelNetworkIPv6Prefix(0)
    5654    , m_pEditorNetworkIPv6Prefix(0)
     
    158156        m_pEditorNetworkName->setToolTip(tr("Holds the name for this network."));
    159157    if (m_pLabelNetworkIPv4Prefix)
    160         m_pLabelNetworkIPv4Prefix->setText(tr("Pref&ix:"));
     158        m_pLabelNetworkIPv4Prefix->setText(tr("IPv&4 Prefix:"));
    161159    if (m_pEditorNetworkIPv4Prefix)
    162160        m_pEditorNetworkIPv4Prefix->setToolTip(tr("Holds the IPv4 prefix for this network."));
    163161    if (m_pLabelNetworkIPv6Prefix)
    164         m_pLabelNetworkIPv6Prefix->setText(tr("Prefi&x:"));
     162        m_pLabelNetworkIPv6Prefix->setText(tr("IPv&6 Prefix:"));
    165163    if (m_pEditorNetworkIPv6Prefix)
    166164        m_pEditorNetworkIPv6Prefix->setToolTip(tr("Holds the IPv6 prefix for this network."));
     
    170168        m_pCheckboxSupportsDHCP->setToolTip(tr("When checked, this network will support DHCP."));
    171169    }
    172     if (m_pGroupBoxIPv4)
    173         m_pGroupBoxIPv4->setTitle(tr("IPv&4"));
    174     if (m_pGroupBoxIPv6)
    175     {
    176         m_pGroupBoxIPv6->setTitle(tr("IPv&6"));
    177         m_pGroupBoxIPv6->setToolTip(tr("When checked, this network will support IPv6."));
     170    if (m_pCheckboxIPv6)
     171    {
     172        m_pCheckboxIPv6->setText(tr("&Enable IPv6"));
     173        m_pCheckboxIPv6->setToolTip(tr("When checked, this network will support IPv6."));
    178174    }
    179175    if (m_pCheckboxAdvertiseDefaultIPv6Route)
     
    215211            setToolTip(tr("Apply Changes (%1)").arg(m_pButtonBoxForwarding->button(QDialogButtonBox::Ok)->shortcut().toString()));
    216212    }
    217 
    218     // WORKAROUND:
    219     // Adjust name layout indent:
    220     int iLeft, iTop, iRight, iBottom;
    221     // We assume that IPv4 group-box has the same margin as IPv6 one:
    222     m_pGroupBoxIPv4->layout()->getContentsMargins(&iLeft, &iTop, &iRight, &iBottom);
    223     // We assume that IPv4 label has the same text as IPv6 one:
    224     QFontMetrics fm(m_pLabelNetworkIPv4Prefix->font());
    225     const int iIndent = iLeft + 1 /* group-box frame width */
    226                       + fm.width(m_pLabelNetworkIPv4Prefix->text().remove('&'));
    227     m_pLayoutName->setColumnMinimumWidth(0, iIndent);
    228213}
    229214
     
    348333    {
    349334        /* Prepare 'Options' layout: */
    350         QVBoxLayout *pLayoutOptions = new QVBoxLayout(pTabOptions);
     335        QGridLayout *pLayoutOptions = new QGridLayout(pTabOptions);
    351336        if (pLayoutOptions)
    352337        {
     338            pLayoutOptions->setColumnStretch(0, 0);
     339            pLayoutOptions->setColumnStretch(1, 0);
     340            pLayoutOptions->setColumnStretch(2, 1);
     341            pLayoutOptions->setColumnStretch(3, 1);
    353342#ifdef VBOX_WS_MAC
    354343            pLayoutOptions->setSpacing(10);
     
    356345#endif
    357346
    358             /* Prepare name widget layout: */
    359             m_pLayoutName = new QGridLayout;
    360             if (m_pLayoutName)
    361             {
    362                 /* Prepare network name label: */
    363                 m_pLabelNetworkName = new QLabel(pTabOptions);
     347            /* Prepare network name label: */
     348            m_pLabelNetworkName = new QLabel(pTabOptions);
     349            if (m_pLabelNetworkName)
     350            {
     351                m_pLabelNetworkName->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     352                pLayoutOptions->addWidget(m_pLabelNetworkName, 0, 0, 1, 2);
     353            }
     354            /* Prepare network name editor: */
     355            m_pEditorNetworkName = new QLineEdit(pTabOptions);
     356            if (m_pEditorNetworkName)
     357            {
    364358                if (m_pLabelNetworkName)
    365                 {
    366                     m_pLabelNetworkName->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    367                     m_pLayoutName->addWidget(m_pLabelNetworkName, 0, 0);
    368                 }
    369                 /* Prepare network name editor: */
    370                 m_pEditorNetworkName = new QLineEdit(pTabOptions);
    371                 if (m_pEditorNetworkName)
    372                 {
    373                     if (m_pLabelNetworkName)
    374                         m_pLabelNetworkName->setBuddy(m_pEditorNetworkName);
    375                     connect(m_pEditorNetworkName, &QLineEdit::textEdited,
    376                             this, &UIDetailsWidgetNATNetwork::sltNetworkNameChanged);
    377 
    378                     m_pLayoutName->addWidget(m_pEditorNetworkName, 0, 1);
    379                 }
    380 
    381                 pLayoutOptions->addLayout(m_pLayoutName);
    382             }
    383 
    384             /* Prepare IPv4 group-box: */
    385             m_pGroupBoxIPv4 = new QGroupBox(pTabOptions);
    386             if (m_pGroupBoxIPv4)
    387             {
    388                 /* Prepare settings widget layout: */
    389                 QGridLayout *pLayoutSettings = new QGridLayout(m_pGroupBoxIPv4);
    390                 if (pLayoutSettings)
    391                 {
    392                     pLayoutSettings->setColumnStretch(2, 1);
    393 
    394                     /* Prepare network IPv4 prefix label: */
    395                     m_pLabelNetworkIPv4Prefix = new QLabel(pTabOptions);
    396                     if (m_pLabelNetworkIPv4Prefix)
    397                     {
    398                         m_pLabelNetworkIPv4Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    399                         pLayoutSettings->addWidget(m_pLabelNetworkIPv4Prefix, 1, 0);
    400                     }
    401                     /* Prepare network IPv4 prefix editor: */
    402                     m_pEditorNetworkIPv4Prefix = new QLineEdit(pTabOptions);
    403                     if (m_pEditorNetworkIPv4Prefix)
    404                     {
    405                         if (m_pLabelNetworkIPv4Prefix)
    406                             m_pLabelNetworkIPv4Prefix->setBuddy(m_pEditorNetworkIPv4Prefix);
    407                         connect(m_pEditorNetworkIPv4Prefix, &QLineEdit::textEdited,
    408                                 this, &UIDetailsWidgetNATNetwork::sltNetworkIPv4PrefixChanged);
    409 
    410                         pLayoutSettings->addWidget(m_pEditorNetworkIPv4Prefix, 1, 1, 1, 2);
    411                     }
    412 
    413                     /* Prepare 'supports DHCP' check-box: */
    414                     m_pCheckboxSupportsDHCP = new QCheckBox(pTabOptions);
    415                     if (m_pCheckboxSupportsDHCP)
    416                     {
    417                         connect(m_pCheckboxSupportsDHCP, &QCheckBox::toggled,
    418                                 this, &UIDetailsWidgetNATNetwork::sltSupportsDHCPChanged);
    419                         pLayoutSettings->addWidget(m_pCheckboxSupportsDHCP, 2, 1);
    420                     }
    421                 }
    422 
    423                 pLayoutOptions->addWidget(m_pGroupBoxIPv4);
    424             }
    425 
    426             /* Prepare IPv6 group-box: */
    427             m_pGroupBoxIPv6 = new QGroupBox(pTabOptions);
    428             if (m_pGroupBoxIPv6)
    429             {
    430                 m_pGroupBoxIPv6->setCheckable(true);
    431                 connect(m_pGroupBoxIPv6, &QGroupBox::toggled,
     359                    m_pLabelNetworkName->setBuddy(m_pEditorNetworkName);
     360                connect(m_pEditorNetworkName, &QLineEdit::textEdited,
     361                        this, &UIDetailsWidgetNATNetwork::sltNetworkNameChanged);
     362
     363                pLayoutOptions->addWidget(m_pEditorNetworkName, 0, 2, 1, 2);
     364            }
     365
     366            /* Prepare network IPv4 prefix label: */
     367            m_pLabelNetworkIPv4Prefix = new QLabel(pTabOptions);
     368            if (m_pLabelNetworkIPv4Prefix)
     369            {
     370                m_pLabelNetworkIPv4Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     371                pLayoutOptions->addWidget(m_pLabelNetworkIPv4Prefix, 1, 0, 1, 2);
     372            }
     373            /* Prepare network IPv4 prefix editor: */
     374            m_pEditorNetworkIPv4Prefix = new QLineEdit(pTabOptions);
     375            if (m_pEditorNetworkIPv4Prefix)
     376            {
     377                if (m_pLabelNetworkIPv4Prefix)
     378                    m_pLabelNetworkIPv4Prefix->setBuddy(m_pEditorNetworkIPv4Prefix);
     379                connect(m_pEditorNetworkIPv4Prefix, &QLineEdit::textEdited,
     380                        this, &UIDetailsWidgetNATNetwork::sltNetworkIPv4PrefixChanged);
     381
     382                pLayoutOptions->addWidget(m_pEditorNetworkIPv4Prefix, 1, 2, 1, 2);
     383            }
     384            /* Prepare 'supports DHCP' check-box: */
     385            m_pCheckboxSupportsDHCP = new QCheckBox(pTabOptions);
     386            if (m_pCheckboxSupportsDHCP)
     387            {
     388                connect(m_pCheckboxSupportsDHCP, &QCheckBox::toggled,
     389                        this, &UIDetailsWidgetNATNetwork::sltSupportsDHCPChanged);
     390                pLayoutOptions->addWidget(m_pCheckboxSupportsDHCP, 2, 2);
     391            }
     392
     393            /* Prepare IPv6 check-box: */
     394            m_pCheckboxIPv6 = new QCheckBox(pTabOptions);
     395            if (m_pCheckboxIPv6)
     396            {
     397                connect(m_pCheckboxIPv6, &QCheckBox::toggled,
    432398                        this, &UIDetailsWidgetNATNetwork::sltSupportsIPv6Changed);
    433 
    434                 /* Prepare settings widget layout: */
    435                 QGridLayout *pLayoutSettings = new QGridLayout(m_pGroupBoxIPv6);
    436                 if (pLayoutSettings)
    437                 {
    438                     pLayoutSettings->setColumnStretch(2, 1);
    439 
    440                     /* Prepare network IPv6 prefix label: */
    441                     m_pLabelNetworkIPv6Prefix = new QLabel(pTabOptions);
    442                     if (m_pLabelNetworkIPv6Prefix)
    443                     {
    444                         m_pLabelNetworkIPv6Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    445                         pLayoutSettings->addWidget(m_pLabelNetworkIPv6Prefix, 0, 0);
    446                     }
    447                     /* Prepare network IPv6 prefix editor: */
    448                     m_pEditorNetworkIPv6Prefix = new QLineEdit(pTabOptions);
    449                     if (m_pEditorNetworkIPv6Prefix)
    450                     {
    451                         if (m_pLabelNetworkIPv6Prefix)
    452                             m_pLabelNetworkIPv6Prefix->setBuddy(m_pEditorNetworkIPv6Prefix);
    453                         connect(m_pEditorNetworkIPv6Prefix, &QLineEdit::textEdited,
    454                                 this, &UIDetailsWidgetNATNetwork::sltNetworkIPv6PrefixChanged);
    455 
    456                         pLayoutSettings->addWidget(m_pEditorNetworkIPv6Prefix, 0, 1, 1, 2);
    457                     }
    458 
    459                     /* Prepare 'advertise default IPv6 route' check-box: */
    460                     m_pCheckboxAdvertiseDefaultIPv6Route = new QCheckBox(pTabOptions);
    461                     if (m_pCheckboxAdvertiseDefaultIPv6Route)
    462                     {
    463                         connect(m_pCheckboxAdvertiseDefaultIPv6Route, &QCheckBox::toggled,
    464                                 this, &UIDetailsWidgetNATNetwork::sltAdvertiseDefaultIPv6RouteChanged);
    465                         pLayoutSettings->addWidget(m_pCheckboxAdvertiseDefaultIPv6Route, 1, 1, 1, 2);
    466                     }
    467                 }
    468 
    469                 pLayoutOptions->addWidget(m_pGroupBoxIPv6);
     399                pLayoutOptions->addWidget(m_pCheckboxIPv6, 3, 0, 1, 3);
     400            }
     401            /* Prepare shifting spacer: */
     402            QSpacerItem *pSpacer = new QSpacerItem(20, 0, QSizePolicy::Fixed, QSizePolicy::Minimum);
     403            if (pSpacer)
     404                pLayoutOptions->addWidget(m_pLabelNetworkIPv6Prefix, 4, 0);
     405            /* Prepare network IPv6 prefix label: */
     406            m_pLabelNetworkIPv6Prefix = new QLabel(pTabOptions);
     407            if (m_pLabelNetworkIPv6Prefix)
     408            {
     409                m_pLabelNetworkIPv6Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     410                pLayoutOptions->addWidget(m_pLabelNetworkIPv6Prefix, 4, 1);
     411            }
     412            /* Prepare network IPv6 prefix editor: */
     413            m_pEditorNetworkIPv6Prefix = new QLineEdit(pTabOptions);
     414            if (m_pEditorNetworkIPv6Prefix)
     415            {
     416                if (m_pLabelNetworkIPv6Prefix)
     417                    m_pLabelNetworkIPv6Prefix->setBuddy(m_pEditorNetworkIPv6Prefix);
     418                connect(m_pEditorNetworkIPv6Prefix, &QLineEdit::textEdited,
     419                        this, &UIDetailsWidgetNATNetwork::sltNetworkIPv6PrefixChanged);
     420
     421                pLayoutOptions->addWidget(m_pEditorNetworkIPv6Prefix, 4, 2, 1, 2);
     422            }
     423            /* Prepare 'advertise default IPv6 route' check-box: */
     424            m_pCheckboxAdvertiseDefaultIPv6Route = new QCheckBox(pTabOptions);
     425            if (m_pCheckboxAdvertiseDefaultIPv6Route)
     426            {
     427                connect(m_pCheckboxAdvertiseDefaultIPv6Route, &QCheckBox::toggled,
     428                        this, &UIDetailsWidgetNATNetwork::sltAdvertiseDefaultIPv6RouteChanged);
     429                pLayoutOptions->addWidget(m_pCheckboxAdvertiseDefaultIPv6Route, 5, 2);
    470430            }
    471431
     
    480440                    connect(m_pButtonBoxOptions, &QIDialogButtonBox::clicked, this, &UIDetailsWidgetNATNetwork::sltHandleButtonBoxClick);
    481441
    482                     pLayoutOptions->addWidget(m_pButtonBoxOptions);
     442                    pLayoutOptions->addWidget(m_pButtonBoxOptions, 7, 0, 1, 4);
    483443                }
    484444            }
     
    561521    m_pLabelNetworkName->setEnabled(fIsNetworkExists);
    562522    m_pEditorNetworkName->setEnabled(fIsNetworkExists);
    563     m_pGroupBoxIPv4->setEnabled(fIsNetworkExists);
    564523    m_pLabelNetworkIPv4Prefix->setEnabled(fIsNetworkExists);
    565524    m_pEditorNetworkIPv4Prefix->setEnabled(fIsNetworkExists);
    566525    m_pCheckboxSupportsDHCP->setEnabled(fIsNetworkExists);
    567     m_pGroupBoxIPv6->setEnabled(fIsNetworkExists);
     526    m_pCheckboxIPv6->setEnabled(fIsNetworkExists);
    568527    m_pLabelNetworkIPv6Prefix->setEnabled(fIsNetworkExists && fIsIPv6Supported);
    569528    m_pEditorNetworkIPv6Prefix->setEnabled(fIsNetworkExists && fIsIPv6Supported);
     
    574533    m_pEditorNetworkIPv4Prefix->setText(m_newData.m_strPrefixIPv4);
    575534    m_pCheckboxSupportsDHCP->setChecked(m_newData.m_fSupportsDHCP);
    576     m_pGroupBoxIPv6->setChecked(m_newData.m_fSupportsIPv6);
     535    m_pCheckboxIPv6->setChecked(m_newData.m_fSupportsIPv6);
    577536    m_pEditorNetworkIPv6Prefix->setText(m_newData.m_strPrefixIPv6);
    578537    m_pCheckboxAdvertiseDefaultIPv6Route->setChecked(m_newData.m_fAdvertiseDefaultIPv6Route);
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.h

    r93115 r93884  
    3333class QAbstractButton;
    3434class QCheckBox;
    35 class QGridLayout;
    36 class QGroupBox;
    3735class QLabel;
    3836class QLineEdit;
     
    211209    /** @name Network variables.
    212210      * @{ */
    213         /** Holds the name layout instance. */
    214         QGridLayout       *m_pLayoutName;
    215211        /** Holds the network name label instance. */
    216212        QLabel            *m_pLabelNetworkName;
    217213        /** Holds the network name editor instance. */
    218214        QLineEdit         *m_pEditorNetworkName;
    219         /** Holds the IPv4 group-box instance. */
    220         QGroupBox         *m_pGroupBoxIPv4;
    221215        /** Holds the network IPv4 prefix label instance. */
    222216        QLabel            *m_pLabelNetworkIPv4Prefix;
     
    226220        QCheckBox         *m_pCheckboxSupportsDHCP;
    227221        /** Holds the IPv4 group-box instance. */
    228         QGroupBox         *m_pGroupBoxIPv6;
     222        QCheckBox         *m_pCheckboxIPv6;
    229223        /** Holds the network IPv6 prefix label instance. */
    230224        QLabel            *m_pLabelNetworkIPv6Prefix;
Note: See TracChangeset for help on using the changeset viewer.

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