VirtualBox

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


Ignore:
Timestamp:
Feb 5, 2021 10:23:56 AM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9871: Network Manager: Layout rework for NAT network stuff; Mostly that's to split options logically to few related to IPv4 and IPv6.

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

Legend:

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

    r87565 r87622  
    1818/* Qt includes: */
    1919#include <QCheckBox>
     20#include <QFontMetrics>
     21#include <QGroupBox>
    2022#include <QLabel>
    2123#include <QPushButton>
     
    4547    , m_pLabelNetworkName(0)
    4648    , m_pEditorNetworkName(0)
     49    , m_pGroupBoxIPv4(0)
    4750    , m_pLabelNetworkIPv4Prefix(0)
    4851    , m_pEditorNetworkIPv4Prefix(0)
     52    , m_pCheckboxSupportsDHCP(0)
     53    , m_pGroupBoxIPv6(0)
    4954    , m_pLabelNetworkIPv6Prefix(0)
    5055    , m_pEditorNetworkIPv6Prefix(0)
    51     , m_pLabelExtended(0)
    52     , m_pCheckboxSupportsDHCP(0)
    53     , m_pCheckboxSupportsIPv6(0)
    5456    , m_pCheckboxAdvertiseDefaultIPv6Route(0)
    5557    , m_pButtonBoxOptions(0)
     
    151153
    152154    if (m_pLabelNetworkName)
    153         m_pLabelNetworkName->setText(tr("&Name:"));
     155        m_pLabelNetworkName->setText(tr("N&ame:"));
    154156    if (m_pEditorNetworkName)
    155157        m_pEditorNetworkName->setToolTip(tr("Holds the name for this network."));
    156158    if (m_pLabelNetworkIPv4Prefix)
    157         m_pLabelNetworkIPv4Prefix->setText(tr("IPv&4 Prefix:"));
     159        m_pLabelNetworkIPv4Prefix->setText(tr("Pref&ix:"));
    158160    if (m_pEditorNetworkIPv4Prefix)
    159161        m_pEditorNetworkIPv4Prefix->setToolTip(tr("Holds the IPv4 prefix for this network."));
    160162    if (m_pLabelNetworkIPv6Prefix)
    161         m_pLabelNetworkIPv6Prefix->setText(tr("IPv&6 Prefix:"));
     163        m_pLabelNetworkIPv6Prefix->setText(tr("Prefi&x:"));
    162164    if (m_pEditorNetworkIPv6Prefix)
    163165        m_pEditorNetworkIPv6Prefix->setToolTip(tr("Holds the IPv6 prefix for this network."));
    164     if (m_pLabelExtended)
    165         m_pLabelExtended->setText(tr("Extended Features:"));
    166166    if (m_pCheckboxSupportsDHCP)
    167167    {
    168         m_pCheckboxSupportsDHCP->setText(tr("Supports &DHCP"));
     168        m_pCheckboxSupportsDHCP->setText(tr("Enable &DHCP"));
    169169        m_pCheckboxSupportsDHCP->setToolTip(tr("When checked, this network will support DHCP."));
    170170    }
    171     if (m_pCheckboxSupportsIPv6)
    172     {
    173         m_pCheckboxSupportsIPv6->setText(tr("Supports &IPv6"));
    174         m_pCheckboxSupportsIPv6->setToolTip(tr("When checked, this network will support IPv6."));
     171    if (m_pGroupBoxIPv4)
     172        m_pGroupBoxIPv4->setTitle(tr("IPv&4"));
     173    if (m_pGroupBoxIPv6)
     174    {
     175        m_pGroupBoxIPv6->setTitle(tr("IPv&6"));
     176        m_pGroupBoxIPv6->setToolTip(tr("When checked, this network will support IPv6."));
    175177    }
    176178    if (m_pCheckboxAdvertiseDefaultIPv6Route)
     
    212214            setToolTip(tr("Apply Changes (%1)").arg(m_pButtonBoxForwarding->button(QDialogButtonBox::Ok)->shortcut().toString()));
    213215    }
     216
     217    // WORKAROUND:
     218    // Adjust name layout indent:
     219    int iLeft, iTop, iRight, iBottom;
     220    // We assume that IPv4 group-box has the same margin as IPv6 one:
     221    m_pGroupBoxIPv4->layout()->getContentsMargins(&iLeft, &iTop, &iRight, &iBottom);
     222    // We assume that IPv4 label has the same text as IPv6 one:
     223    QFontMetrics fm(m_pLabelNetworkIPv4Prefix->font());
     224    const int iIndent = iLeft + 1 /* group-box frame width */
     225                      + fm.width(m_pLabelNetworkIPv4Prefix->text().remove('&'));
     226    m_pLayoutName->setColumnMinimumWidth(0, iIndent);
    214227}
    215228
     
    241254{
    242255    m_newData.m_fSupportsIPv6 = fChecked;
     256    loadDataForOptions();
    243257    updateButtonStates();
    244258}
     
    341355#endif
    342356
    343             /* Prepare settings widget layout: */
    344             QGridLayout *pLayoutSettings = new QGridLayout;
    345             if (pLayoutSettings)
     357            /* Prepare name widget layout: */
     358            m_pLayoutName = new QGridLayout;
     359            if (m_pLayoutName)
    346360            {
    347                 pLayoutSettings->setContentsMargins(0, 0, 0, 0);
    348                 pLayoutSettings->setColumnStretch(3, 1);
    349 
    350361                /* Prepare network name label: */
    351362                m_pLabelNetworkName = new QLabel(pTabOptions);
     
    353364                {
    354365                    m_pLabelNetworkName->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    355                     pLayoutSettings->addWidget(m_pLabelNetworkName, 0, 0);
     366                    m_pLayoutName->addWidget(m_pLabelNetworkName, 0, 0);
    356367                }
    357368                /* Prepare network name editor: */
     
    364375                            this, &UIDetailsWidgetNATNetwork::sltNetworkNameChanged);
    365376
    366                     pLayoutSettings->addWidget(m_pEditorNetworkName, 0, 1, 1, 3);
    367                 }
    368 
    369                 /* Prepare network IPv4 prefix label: */
    370                 m_pLabelNetworkIPv4Prefix = new QLabel(pTabOptions);
    371                 if (m_pLabelNetworkIPv4Prefix)
    372                 {
    373                     m_pLabelNetworkIPv4Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    374                     pLayoutSettings->addWidget(m_pLabelNetworkIPv4Prefix, 1, 0);
    375                 }
    376                 /* Prepare network IPv4 prefix editor: */
    377                 m_pEditorNetworkIPv4Prefix = new QLineEdit(pTabOptions);
    378                 if (m_pEditorNetworkIPv4Prefix)
    379                 {
     377                    m_pLayoutName->addWidget(m_pEditorNetworkName, 0, 1);
     378                }
     379
     380                pLayoutOptions->addLayout(m_pLayoutName);
     381            }
     382
     383            /* Prepare IPv4 group-box: */
     384            m_pGroupBoxIPv4 = new QGroupBox(pTabOptions);
     385            if (m_pGroupBoxIPv4)
     386            {
     387                /* Prepare settings widget layout: */
     388                QGridLayout *pLayoutSettings = new QGridLayout(m_pGroupBoxIPv4);
     389                if (pLayoutSettings)
     390                {
     391                    pLayoutSettings->setColumnStretch(2, 1);
     392
     393                    /* Prepare network IPv4 prefix label: */
     394                    m_pLabelNetworkIPv4Prefix = new QLabel(pTabOptions);
    380395                    if (m_pLabelNetworkIPv4Prefix)
    381                         m_pLabelNetworkIPv4Prefix->setBuddy(m_pEditorNetworkIPv4Prefix);
    382                     connect(m_pEditorNetworkIPv4Prefix, &QLineEdit::textEdited,
    383                             this, &UIDetailsWidgetNATNetwork::sltNetworkIPv4PrefixChanged);
    384 
    385                     pLayoutSettings->addWidget(m_pEditorNetworkIPv4Prefix, 1, 1, 1, 3);
    386                 }
    387 
    388                 /* Prepare network IPv6 prefix label: */
    389                 m_pLabelNetworkIPv6Prefix = new QLabel(pTabOptions);
    390                 if (m_pLabelNetworkIPv6Prefix)
    391                 {
    392                     m_pLabelNetworkIPv6Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    393                     pLayoutSettings->addWidget(m_pLabelNetworkIPv6Prefix, 2, 0);
    394                 }
    395                 /* Prepare network IPv6 prefix editor: */
    396                 m_pEditorNetworkIPv6Prefix = new QLineEdit(pTabOptions);
    397                 if (m_pEditorNetworkIPv6Prefix)
    398                 {
     396                    {
     397                        m_pLabelNetworkIPv4Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     398                        pLayoutSettings->addWidget(m_pLabelNetworkIPv4Prefix, 1, 0);
     399                    }
     400                    /* Prepare network IPv4 prefix editor: */
     401                    m_pEditorNetworkIPv4Prefix = new QLineEdit(pTabOptions);
     402                    if (m_pEditorNetworkIPv4Prefix)
     403                    {
     404                        if (m_pLabelNetworkIPv4Prefix)
     405                            m_pLabelNetworkIPv4Prefix->setBuddy(m_pEditorNetworkIPv4Prefix);
     406                        connect(m_pEditorNetworkIPv4Prefix, &QLineEdit::textEdited,
     407                                this, &UIDetailsWidgetNATNetwork::sltNetworkIPv4PrefixChanged);
     408
     409                        pLayoutSettings->addWidget(m_pEditorNetworkIPv4Prefix, 1, 1, 1, 2);
     410                    }
     411
     412                    /* Prepare 'supports DHCP' check-box: */
     413                    m_pCheckboxSupportsDHCP = new QCheckBox(pTabOptions);
     414                    if (m_pCheckboxSupportsDHCP)
     415                    {
     416                        connect(m_pCheckboxSupportsDHCP, &QCheckBox::toggled,
     417                                this, &UIDetailsWidgetNATNetwork::sltSupportsDHCPChanged);
     418                        pLayoutSettings->addWidget(m_pCheckboxSupportsDHCP, 2, 1);
     419                    }
     420                }
     421
     422                pLayoutOptions->addWidget(m_pGroupBoxIPv4);
     423            }
     424
     425            /* Prepare IPv6 group-box: */
     426            m_pGroupBoxIPv6 = new QGroupBox(pTabOptions);
     427            if (m_pGroupBoxIPv6)
     428            {
     429                m_pGroupBoxIPv6->setCheckable(true);
     430                connect(m_pGroupBoxIPv6, &QGroupBox::toggled,
     431                        this, &UIDetailsWidgetNATNetwork::sltSupportsIPv6Changed);
     432
     433                /* Prepare settings widget layout: */
     434                QGridLayout *pLayoutSettings = new QGridLayout(m_pGroupBoxIPv6);
     435                if (pLayoutSettings)
     436                {
     437                    pLayoutSettings->setColumnStretch(2, 1);
     438
     439                    /* Prepare network IPv6 prefix label: */
     440                    m_pLabelNetworkIPv6Prefix = new QLabel(pTabOptions);
    399441                    if (m_pLabelNetworkIPv6Prefix)
    400                         m_pLabelNetworkIPv6Prefix->setBuddy(m_pEditorNetworkIPv6Prefix);
    401                     connect(m_pEditorNetworkIPv6Prefix, &QLineEdit::textEdited,
    402                             this, &UIDetailsWidgetNATNetwork::sltNetworkIPv6PrefixChanged);
    403 
    404                     pLayoutSettings->addWidget(m_pEditorNetworkIPv6Prefix, 2, 1, 1, 3);
    405                 }
    406 
    407                 /* Prepare extended label: */
    408                 m_pLabelExtended = new QLabel(pTabOptions);
    409                 if (m_pLabelExtended)
    410                 {
    411                     m_pLabelExtended->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    412                     pLayoutSettings->addWidget(m_pLabelExtended, 3, 0);
    413                 }
    414                 /* Prepare 'supports DHCP' check-box: */
    415                 m_pCheckboxSupportsDHCP = new QCheckBox(pTabOptions);
    416                 if (m_pCheckboxSupportsDHCP)
    417                 {
    418                     connect(m_pCheckboxSupportsDHCP, &QCheckBox::toggled,
    419                             this, &UIDetailsWidgetNATNetwork::sltSupportsDHCPChanged);
    420                     pLayoutSettings->addWidget(m_pCheckboxSupportsDHCP, 3, 1, 1, 2);
    421                 }
    422                 /* Prepare 'supports IPv6' check-box: */
    423                 m_pCheckboxSupportsIPv6 = new QCheckBox(pTabOptions);
    424                 if (m_pCheckboxSupportsIPv6)
    425                 {
    426                     connect(m_pCheckboxSupportsIPv6, &QCheckBox::toggled,
    427                             this, &UIDetailsWidgetNATNetwork::sltSupportsIPv6Changed);
    428                     pLayoutSettings->addWidget(m_pCheckboxSupportsIPv6, 4, 1, 1, 2);
    429                 }
    430                 /* Prepare 'advertise default IPv6 route' check-box: */
    431                 m_pCheckboxAdvertiseDefaultIPv6Route = new QCheckBox(pTabOptions);
    432                 if (m_pCheckboxAdvertiseDefaultIPv6Route)
    433                 {
    434                     connect(m_pCheckboxAdvertiseDefaultIPv6Route, &QCheckBox::toggled,
    435                             this, &UIDetailsWidgetNATNetwork::sltAdvertiseDefaultIPv6RouteChanged);
    436                     pLayoutSettings->addWidget(m_pCheckboxAdvertiseDefaultIPv6Route, 5, 1, 1, 2);
    437                 }
    438 
    439                 pLayoutOptions->addLayout(pLayoutSettings);
     442                    {
     443                        m_pLabelNetworkIPv6Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     444                        pLayoutSettings->addWidget(m_pLabelNetworkIPv6Prefix, 0, 0);
     445                    }
     446                    /* Prepare network IPv6 prefix editor: */
     447                    m_pEditorNetworkIPv6Prefix = new QLineEdit(pTabOptions);
     448                    if (m_pEditorNetworkIPv6Prefix)
     449                    {
     450                        if (m_pLabelNetworkIPv6Prefix)
     451                            m_pLabelNetworkIPv6Prefix->setBuddy(m_pEditorNetworkIPv6Prefix);
     452                        connect(m_pEditorNetworkIPv6Prefix, &QLineEdit::textEdited,
     453                                this, &UIDetailsWidgetNATNetwork::sltNetworkIPv6PrefixChanged);
     454
     455                        pLayoutSettings->addWidget(m_pEditorNetworkIPv6Prefix, 0, 1, 1, 2);
     456                    }
     457
     458                    /* Prepare 'advertise default IPv6 route' check-box: */
     459                    m_pCheckboxAdvertiseDefaultIPv6Route = new QCheckBox(pTabOptions);
     460                    if (m_pCheckboxAdvertiseDefaultIPv6Route)
     461                    {
     462                        connect(m_pCheckboxAdvertiseDefaultIPv6Route, &QCheckBox::toggled,
     463                                this, &UIDetailsWidgetNATNetwork::sltAdvertiseDefaultIPv6RouteChanged);
     464                        pLayoutSettings->addWidget(m_pCheckboxAdvertiseDefaultIPv6Route, 1, 1, 1, 2);
     465                    }
     466                }
     467
     468                pLayoutOptions->addWidget(m_pGroupBoxIPv6);
    440469            }
    441470
     
    526555    /* Check whether network exists and enabled: */
    527556    const bool fIsNetworkExists = m_newData.m_fExists;
     557    const bool fIsIPv6Supported = m_newData.m_fSupportsIPv6;
    528558
    529559    /* Update 'Options' field availability: */
    530560    m_pLabelNetworkName->setEnabled(fIsNetworkExists);
    531561    m_pEditorNetworkName->setEnabled(fIsNetworkExists);
     562    m_pGroupBoxIPv4->setEnabled(fIsNetworkExists);
    532563    m_pLabelNetworkIPv4Prefix->setEnabled(fIsNetworkExists);
    533564    m_pEditorNetworkIPv4Prefix->setEnabled(fIsNetworkExists);
    534     m_pLabelNetworkIPv6Prefix->setEnabled(fIsNetworkExists);
    535     m_pEditorNetworkIPv6Prefix->setEnabled(fIsNetworkExists);
    536     m_pLabelExtended->setEnabled(fIsNetworkExists);
    537565    m_pCheckboxSupportsDHCP->setEnabled(fIsNetworkExists);
    538     m_pCheckboxSupportsIPv6->setEnabled(fIsNetworkExists);
    539     m_pCheckboxAdvertiseDefaultIPv6Route->setEnabled(fIsNetworkExists);
     566    m_pGroupBoxIPv6->setEnabled(fIsNetworkExists);
     567    m_pLabelNetworkIPv6Prefix->setEnabled(fIsNetworkExists && fIsIPv6Supported);
     568    m_pEditorNetworkIPv6Prefix->setEnabled(fIsNetworkExists && fIsIPv6Supported);
     569    m_pCheckboxAdvertiseDefaultIPv6Route->setEnabled(fIsNetworkExists && fIsIPv6Supported);
    540570
    541571    /* Load 'Options' fields: */
    542572    m_pEditorNetworkName->setText(m_newData.m_strName);
    543573    m_pEditorNetworkIPv4Prefix->setText(m_newData.m_strPrefixIPv4);
     574    m_pCheckboxSupportsDHCP->setChecked(m_newData.m_fSupportsDHCP);
     575    m_pGroupBoxIPv6->setChecked(m_newData.m_fSupportsIPv6);
    544576    m_pEditorNetworkIPv6Prefix->setText(m_newData.m_strPrefixIPv6);
    545     m_pCheckboxSupportsDHCP->setChecked(m_newData.m_fSupportsDHCP);
    546     m_pCheckboxSupportsIPv6->setChecked(m_newData.m_fSupportsIPv6);
    547577    m_pCheckboxAdvertiseDefaultIPv6Route->setChecked(m_newData.m_fAdvertiseDefaultIPv6Route);
    548578}
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.h

    r87565 r87622  
    3333class QAbstractButton;
    3434class QCheckBox;
     35class QGridLayout;
     36class QGroupBox;
    3537class QLabel;
    3638class QLineEdit;
     
    209211    /** @name Network variables.
    210212      * @{ */
     213        /** Holds the name layout instance. */
     214        QGridLayout       *m_pLayoutName;
    211215        /** Holds the network name label instance. */
    212216        QLabel            *m_pLabelNetworkName;
    213217        /** Holds the network name editor instance. */
    214218        QLineEdit         *m_pEditorNetworkName;
     219        /** Holds the IPv4 group-box instance. */
     220        QGroupBox         *m_pGroupBoxIPv4;
    215221        /** Holds the network IPv4 prefix label instance. */
    216222        QLabel            *m_pLabelNetworkIPv4Prefix;
    217223        /** Holds the network IPv4 prefix editor instance. */
    218224        QLineEdit         *m_pEditorNetworkIPv4Prefix;
     225        /** Holds the 'supports DHCP' check-box instance. */
     226        QCheckBox         *m_pCheckboxSupportsDHCP;
     227        /** Holds the IPv4 group-box instance. */
     228        QGroupBox         *m_pGroupBoxIPv6;
    219229        /** Holds the network IPv6 prefix label instance. */
    220230        QLabel            *m_pLabelNetworkIPv6Prefix;
    221231        /** Holds the network IPv6 prefix editor instance. */
    222232        QLineEdit         *m_pEditorNetworkIPv6Prefix;
    223         /** Holds the extended label instance. */
    224         QLabel            *m_pLabelExtended;
    225         /** Holds the 'supports DHCP' check-box instance. */
    226         QCheckBox         *m_pCheckboxSupportsDHCP;
    227         /** Holds the 'supports IPv6' check-box instance. */
    228         QCheckBox         *m_pCheckboxSupportsIPv6;
    229233        /** Holds the 'advertise default IPv6 route' check-box instance. */
    230234        QCheckBox         *m_pCheckboxAdvertiseDefaultIPv6Route;
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