VirtualBox

Changeset 106556 in vbox for trunk/src


Ignore:
Timestamp:
Oct 21, 2024 11:20:06 AM (6 weeks ago)
Author:
vboxsync
Message:

FE/Qt: bugref:10513: Runtime UI / Machine-logic: At VM startup (if selected bridged adapter wasn't found) we should open Network settings dialog the modal way to pause startup for a moment while another adapter being chosen.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp

    r106554 r106556  
    3131#include <QDateTime>
    3232#include <QDir>
     33#include <QEventLoop>
    3334#include <QFileInfo>
    3435#include <QImageWriter>
     
    314315    foreach(UIMachineWindow *pMachineWindow, machineWindows())
    315316        pMachineWindow->sendMachineViewSizeHint();
     317}
     318
     319void UIMachineLogic::openNetworkSettingsDialogTheModalWay()
     320{
     321    /* Open VM settings : Network page: */
     322    openSettingsDialog("#network", QString(), true /* app modal */);
     323    /* Create event loop to listen to VM settings dialog destroy signal: */
     324    QEventLoop loop;
     325    connect(m_settings.value(UIAdvancedSettingsDialog::Type_Machine),
     326            &QObject::destroyed, &loop, &QEventLoop::quit);
     327    /* Execute loop finally: */
     328    loop.exec();
    316329}
    317330
     
    29082921
    29092922void UIMachineLogic::openPreferencesDialog(const QString &strCategory /* = QString() */,
    2910                                            const QString &strControl /* = QString() */)
     2923                                           const QString &strControl /* = QString() */,
     2924                                           bool fAppModal /* = false */)
    29112925{
    29122926    /* Do not process if window(s) missed! */
     
    29202934                                                                                               strCategory,
    29212935                                                                                               strControl);
     2936        if (fAppModal)
     2937            m_settings.value(UIAdvancedSettingsDialog::Type_Machine)->setWindowModality(Qt::ApplicationModal);
    29222938        connect(m_settings.value(UIAdvancedSettingsDialog::Type_Global), &UIAdvancedSettingsDialog::sigClose,
    29232939                this, &UIMachineLogic::sltClosePreferencesDialog);
     
    29352951
    29362952void UIMachineLogic::openSettingsDialog(const QString &strCategory /* = QString() */,
    2937                                         const QString &strControl /* = QString()*/)
     2953                                        const QString &strControl /* = QString()*/,
     2954                                        bool fAppModal /* = false */)
    29382955{
    29392956    /* Do not process if window(s) missed! */
     
    29492966                                                                                                 strCategory,
    29502967                                                                                                 strControl);
     2968        if (fAppModal)
     2969            m_settings.value(UIAdvancedSettingsDialog::Type_Machine)->setWindowModality(Qt::ApplicationModal);
    29512970        connect(m_settings.value(UIAdvancedSettingsDialog::Type_Machine), &UIAdvancedSettingsDialog::sigClose,
    29522971                this, &UIMachineLogic::sltCloseSettingsDialog);
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h

    r106554 r106556  
    108108    virtual void sendMachineWindowsSizeHints();
    109109
    110     /* Wrapper to open Machine settings / Network page: */
    111     void openNetworkSettingsDialog() { sltOpenSettingsDialogNetwork(); }
     110    /** Opens Machine settings / Network page the modal way. */
     111    void openNetworkSettingsDialogTheModalWay();
    112112
    113113#ifdef VBOX_WS_MAC
     
    359359      * @param  fAppModal    Brings whether dialog should be app modal. */
    360360    void openPreferencesDialog(const QString &strCategory = QString(),
    361                                const QString &strControl = QString());
     361                               const QString &strControl = QString(),
     362                               bool fAppModal = false);
    362363
    363364    /** Opens VM settings dialog.
     
    366367      * @param  fAppModal    Brings whether dialog should be app modal. */
    367368    void openSettingsDialog(const QString &strCategory = QString(),
    368                             const QString &strControl = QString());
     369                            const QString &strControl = QString(),
     370                            bool fAppModal = false);
    369371
    370372    /* Helpers: */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp

    r106312 r106556  
    28012801        {
    28022802            if (msgCenter().warnAboutNetworkInterfaceNotFound(machineName(), failedInterfaceNames.join(", ")))
    2803                 machineLogic()->openNetworkSettingsDialog();
     2803                machineLogic()->openNetworkSettingsDialogTheModalWay();
    28042804            else
    28052805            {
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