VirtualBox

Changeset 101591 in vbox


Ignore:
Timestamp:
Oct 25, 2023 1:41:05 PM (18 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
159673
Message:

FE/Qt: bugref:10513: Machine settings / Network page: Reworking prepare/cleanup cascade a bit.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp

    r101529 r101591  
    175175    /** Constructs tab passing @a pParent to the base-class.
    176176      * @param  pParentPage  Holds the parent page reference allowing to access some of API there. */
    177     UIMachineSettingsNetwork(QITabWidget *pParent, UIMachineSettingsNetworkPage *pParentPage);
     177    UIMachineSettingsNetwork(UIEditor *pParent, UIMachineSettingsNetworkPage *pParentPage);
    178178
    179179    /** Loads adapter data from @a adapterCache. */
     
    234234*********************************************************************************************************************************/
    235235
    236 UIMachineSettingsNetwork::UIMachineSettingsNetwork(QITabWidget *pParent, UIMachineSettingsNetworkPage *pParentPage)
     236UIMachineSettingsNetwork::UIMachineSettingsNetwork(UIEditor *pParent, UIMachineSettingsNetworkPage *pParentPage)
    237237    : UIEditor(pParent)
    238238    , m_pParentPage(pParentPage)
     
    564564    if (pLayout)
    565565    {
    566 #ifdef VBOX_WS_MAC
    567             /* On Mac OS X we can do a bit of smoothness: */
    568             int iLeft, iTop, iRight, iBottom;
    569             pLayout->getContentsMargins(&iLeft, &iTop, &iRight, &iBottom);
    570             pLayout->setContentsMargins(iLeft / 2, iTop / 2, iRight / 2, iBottom / 2);
    571 #endif
     566        pLayout->setContentsMargins(0, 0, 0, 0);
    572567
    573568        /* Prepare settings editor: */
     
    726721    {
    727722        /* Get adapter page: */
    728         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iSlot));
     723        UIMachineSettingsNetwork *pTab = m_tabEditors.at(iSlot);
    729724        AssertPtrReturnVoid(pTab);
    730725
     
    760755    {
    761756        /* Get adapter page: */
    762         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iSlot));
     757        UIMachineSettingsNetwork *pTab = m_tabEditors.at(iSlot);
    763758        AssertPtrReturnVoid(pTab);
    764759
     
    793788
    794789    /* Delegate validation to adapter tabs: */
    795     for (int iIndex = 0; iIndex < m_pTabWidget->count(); ++iIndex)
    796     {
    797         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iIndex));
     790    for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot)
     791    {
     792        UIMachineSettingsNetwork *pTab = m_tabEditors.at(iSlot);
    798793        AssertPtrReturn(pTab, false);
    799794        if (!pTab->validate(messages))
     
    813808    for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot)
    814809    {
    815         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iSlot));
     810        UIMachineSettingsNetwork *pTab = m_tabEditors.at(iSlot);
    816811        AssertPtrReturnVoid(pTab);
    817812        m_pTabWidget->setTabText(iSlot, pTab->tabTitle());
     
    833828                                     m_pCache->childCount() > iSlot &&
    834829                                     m_pCache->child(iSlot).base().m_fAdapterEnabled));
    835         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iSlot));
     830        UIMachineSettingsNetwork *pTab = m_tabEditors.at(iSlot);
    836831        AssertPtrReturnVoid(pTab);
    837832        pTab->polishTab();
     
    872867    {
    873868        /* Get the iterated tab: */
    874         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iSlot));
     869        UIMachineSettingsNetwork *pTab = m_tabEditors.at(iSlot);
    875870        AssertPtrReturnVoid(pTab);
    876871
     
    887882    AssertPtrReturnVoid(m_pCache);
    888883
    889     /* Create main layout: */
     884    /* Prepare everything: */
     885    prepareWidgets();
     886
     887    /* Apply language settings: */
     888    retranslateUi();
     889}
     890
     891void UIMachineSettingsNetworkPage::prepareWidgets()
     892{
     893    /* Prepare main layout: */
    890894    QVBoxLayout *pLayoutMain = new QVBoxLayout(this);
    891895    if (pLayoutMain)
    892896    {
    893         /* Creating tab-widget: */
    894         m_pTabWidget = new QITabWidget;
     897        /* Prepare tab-widget: */
     898        m_pTabWidget = new QITabWidget(this);
    895899        if (m_pTabWidget)
    896900        {
     
    904908            /* Create corresponding adapter tabs: */
    905909            for (ulong uSlot = 0; uSlot < uCount; ++uSlot)
    906             {
    907                 /* Create adapter tab: */
    908                 UIMachineSettingsNetwork *pTab = new UIMachineSettingsNetwork(m_pTabWidget, this);
    909                 if (pTab)
    910                 {
    911                     /* Tab connections: */
    912                     connect(pTab, &UIMachineSettingsNetwork::sigAlternativeNameChanged,
    913                             this, &UIMachineSettingsNetworkPage::sltHandleAlternativeNameChange);
    914                     connect(pTab, &UIMachineSettingsNetwork::sigValidityChanged,
    915                             this, &UIMachineSettingsNetworkPage::revalidate);
    916 
    917                     /* Add tab into tab-widget: */
    918                     addEditor(pTab);
    919                     m_pTabWidget->addTab(pTab, pTab->tabTitle());
    920                 }
    921             }
    922 
    923             /* Add tab-widget into layout: */
     910                prepareTab();
     911
    924912            pLayoutMain->addWidget(m_pTabWidget);
    925913        }
    926914    }
     915}
     916
     917void UIMachineSettingsNetworkPage::prepareTab()
     918{
     919    /* Prepare tab: */
     920    UIEditor *pTab = new UIEditor(m_pTabWidget);
     921    if (pTab)
     922    {
     923        /* Prepare tab layout: */
     924        QVBoxLayout *pLayout = new QVBoxLayout(pTab);
     925        if (pLayout)
     926        {
     927#ifdef VBOX_WS_MAC
     928            /* On Mac OS X we can do a bit of smoothness: */
     929            int iLeft, iTop, iRight, iBottom;
     930            pLayout->getContentsMargins(&iLeft, &iTop, &iRight, &iBottom);
     931            pLayout->setContentsMargins(iLeft / 2, iTop / 2, iRight / 2, iBottom / 2);
     932#endif
     933
     934            /* Prepare name and system editor: */
     935            UIMachineSettingsNetwork *pEditor = new UIMachineSettingsNetwork(pTab, this);
     936            if (pEditor)
     937            {
     938                m_tabEditors << pEditor;
     939                prepareConnections(pEditor);
     940                pTab->addEditor(pEditor);
     941                pLayout->addWidget(pEditor);
     942            }
     943
     944            pLayout->addStretch();
     945        }
     946
     947        addEditor(pTab);
     948        m_pTabWidget->addTab(pTab, QString());
     949    }
     950}
     951
     952void UIMachineSettingsNetworkPage::prepareConnections(UIMachineSettingsNetwork *pTabEditor)
     953{
     954    /* Tab connections: */
     955    connect(pTabEditor, &UIMachineSettingsNetwork::sigAlternativeNameChanged,
     956            this, &UIMachineSettingsNetworkPage::sltHandleAlternativeNameChange);
     957    connect(pTabEditor, &UIMachineSettingsNetwork::sigValidityChanged,
     958            this, &UIMachineSettingsNetworkPage::revalidate);
    927959}
    928960
     
    955987    for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot)
    956988    {
    957         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iSlot));
     989        UIMachineSettingsNetwork *pTab = m_tabEditors.at(iSlot);
    958990        AssertPtrReturnVoid(pTab);
    959991        const QString strName = pTab->alternativeName(KNetworkAttachmentType_Internal);
     
    10001032    for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot)
    10011033    {
    1002         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iSlot));
     1034        UIMachineSettingsNetwork *pTab = m_tabEditors.at(iSlot);
    10031035        AssertPtrReturnVoid(pTab);
    10041036        const QString strName = pTab->alternativeName(KNetworkAttachmentType_Generic);
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.h

    r101529 r101591  
    3838/* Forward declarations: */
    3939class QITabWidget;
     40class UIMachineSettingsNetwork;
    4041struct UIDataSettingsMachineNetwork;
    4142struct UIDataSettingsMachineNetworkAdapter;
     
    117118    /** Prepares all. */
    118119    void prepare();
     120    /** Prepares widgets. */
     121    void prepareWidgets();
     122    /** Prepare tab. */
     123    void prepareTab();
     124    /** Prepares connections. */
     125    void prepareConnections(UIMachineSettingsNetwork *pTabEditor);
    119126    /** Cleanups all. */
    120127    void cleanup();
     
    177184    /** Holds the tab-widget instance. */
    178185    QITabWidget *m_pTabWidget;
     186
     187    /** Holds the list of tab editors. */
     188    QList<UIMachineSettingsNetwork*>  m_tabEditors;
    179189};
    180190
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