VirtualBox

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


Ignore:
Timestamp:
Dec 29, 2023 3:50:33 PM (16 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160901
Message:

FE/Qt: Reworking r160898 to make dialog-button-box handling similar to other manager classes, like Cloud Profile/Console or Media/Network managers.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIPaneContainer.cpp

    r102727 r102729  
    2727
    2828/* Qt includes: */
     29#include <QAbstractButton>
    2930#include <QComboBox>
    3031#include <QLabel>
     
    7879    pLayout->addWidget(m_pTabWidget);
    7980
    80     /* Add the button-box: */
    81     QWidget *pContainer = new QWidget;
    82     AssertReturnVoid(pContainer);
    83     pContainer->setVisible(m_enmEmbedTo == EmbedTo_Stack && m_fDetachAllowed);
    84     QHBoxLayout *pSubLayout = new QHBoxLayout(pContainer);
    85     AssertReturnVoid(pSubLayout);
    86     const int iL = qApp->style()->pixelMetric(QStyle::PM_LayoutLeftMargin);
    87     const int iR = qApp->style()->pixelMetric(QStyle::PM_LayoutRightMargin);
    88     const int iB = qApp->style()->pixelMetric(QStyle::PM_LayoutBottomMargin);
    89     pSubLayout->setContentsMargins(iL, 0, iR, iB);
    90     m_pButtonBox = new QIDialogButtonBox;
    91     AssertReturnVoid(m_pButtonBox);
    92     m_pButtonBox->setStandardButtons(QDialogButtonBox::Cancel);
    93     connect(m_pButtonBox->button(QIDialogButtonBox::Cancel), &QPushButton::pressed,
    94             this, &UIPaneContainer::sigDetach);
    95     pSubLayout->addWidget(m_pButtonBox);
    96     pLayout->addWidget(pContainer);
     81    /* If parent embedded into stack: */
     82    if (m_enmEmbedTo == EmbedTo_Stack && m_fDetachAllowed)
     83    {
     84        /* Add the button-box: */
     85        QWidget *pContainer = new QWidget;
     86        AssertReturnVoid(pContainer);
     87        QHBoxLayout *pSubLayout = new QHBoxLayout(pContainer);
     88        AssertReturnVoid(pSubLayout);
     89        const int iL = qApp->style()->pixelMetric(QStyle::PM_LayoutLeftMargin);
     90        const int iR = qApp->style()->pixelMetric(QStyle::PM_LayoutRightMargin);
     91        const int iB = qApp->style()->pixelMetric(QStyle::PM_LayoutBottomMargin);
     92        pSubLayout->setContentsMargins(iL, 0, iR, iB);
     93        m_pButtonBox = new QIDialogButtonBox;
     94        AssertReturnVoid(m_pButtonBox);
     95        m_pButtonBox->setStandardButtons(QDialogButtonBox::Cancel);
     96        connect(m_pButtonBox, &QIDialogButtonBox::clicked, this, &UIPaneContainer::sltHandleButtonBoxClick);
     97        pSubLayout->addWidget(m_pButtonBox);
     98        pLayout->addWidget(pContainer);
     99    }
    97100}
    98101
     
    101104    hide();
    102105    emit sigHidden();
     106}
     107
     108void UIPaneContainer::sltHandleButtonBoxClick(QAbstractButton *pButton)
     109{
     110    /* Make sure button-box exists: */
     111    AssertPtrReturnVoid(m_pButtonBox);
     112
     113    /* Disable buttons first of all: */
     114    m_pButtonBox->button(QDialogButtonBox::Cancel)->setEnabled(false);
     115
     116    /* Compare with known buttons: */
     117    if (pButton == m_pButtonBox->button(QDialogButtonBox::Cancel))
     118        emit sigDetach();
    103119}
    104120
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIPaneContainer.h

    r102727 r102729  
    4141
    4242/* Forward declarations: */
     43class QAbstractButton;
    4344class QHBoxLayout;
    4445class QIDialogButtonBox;
     
    7273    void sltHide();
    7374
     75    void sltHandleButtonBoxClick(QAbstractButton *pButton);
     76
    7477private:
    7578
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