VirtualBox

Changeset 90854 in vbox for trunk/src


Ignore:
Timestamp:
Aug 24, 2021 5:34:35 PM (3 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9996. Handling medium format change a bit better in term of medium variant widgets.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/wizards
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageExpert.cpp

    r90827 r90854  
    3434    , m_pVariantGroupBox(0)
    3535    , m_pMediumSizePathGroupBox(0)
    36 
     36    , m_enmDeviceType(enmDeviceType)
    3737{
    3838    prepare(enmDeviceType, uSourceDiskLogicaSize);
     
    7777    if (cloneWizard() && m_pFormatGroupBox)
    7878        cloneWizard()->setMediumFormat(m_pFormatGroupBox->mediumFormat());
     79    updateDiskWidgetsAfterMediumFormatChange();
    7980    emit completeChanged();
    8081}
     
    134135
    135136    pWizard->setMediumVariant(m_pVariantGroupBox->mediumVariant());
    136     m_pVariantGroupBox->setWidgetVisibility(pWizard->mediumFormat());
     137    m_pVariantGroupBox->updateMediumVariantWidgetsAfterFormatChange(pWizard->mediumFormat());
    137138
    138139    /* Initialize medium size widget and wizard's medium size parameter: */
     
    188189    return qobject_cast<UIWizardCloneVD*>(wizard());
    189190}
     191
     192void UIWizardCloneVDPageExpert::updateDiskWidgetsAfterMediumFormatChange()
     193{
     194    UIWizardCloneVD *pWizard = qobject_cast<UIWizardCloneVD*>(wizard());
     195    AssertReturnVoid(pWizard && m_pVariantGroupBox && m_pMediumSizePathGroupBox && m_pFormatGroupBox);
     196    const CMediumFormat &comMediumFormat = pWizard->mediumFormat();
     197    AssertReturnVoid(!comMediumFormat.isNull());
     198
     199    m_pVariantGroupBox->blockSignals(true);
     200    m_pVariantGroupBox->updateMediumVariantWidgetsAfterFormatChange(comMediumFormat);
     201    m_pVariantGroupBox->blockSignals(false);
     202
     203    m_pMediumSizePathGroupBox->blockSignals(true);
     204    m_pMediumSizePathGroupBox->updateMediumPath(comMediumFormat, m_pFormatGroupBox->formatExtensions(), m_enmDeviceType);
     205    m_pMediumSizePathGroupBox->blockSignals(false);
     206    /* Update the wizard parameters explicitly since we blocked th signals: */
     207    pWizard->setMediumPath(m_pMediumSizePathGroupBox->mediumPath());
     208    pWizard->setMediumVariant(m_pVariantGroupBox->mediumVariant());
     209}
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageExpert.h

    r90827 r90854  
    7676    void setTargetLocation();
    7777    UIWizardCloneVD *cloneWizard();
     78    void updateDiskWidgetsAfterMediumFormatChange();
    7879
    7980    UIDiskFormatsGroupBox *m_pFormatGroupBox;
    8081    UIDiskVariantGroupBox *m_pVariantGroupBox;
    8182    UIMediumSizeAndPathGroupBox *m_pMediumSizePathGroupBox;
     83    KDeviceType m_enmDeviceType;
    8284};
    8385
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageVariant.cpp

    r90827 r90854  
    116116    AssertReturnVoid(m_pVariantGroupBox);
    117117
    118     m_pVariantGroupBox->updateMediumVariantWidgetsAfterFormatChange(mediumFormat, true /* hide disabled widgets*/);
     118    m_pVariantGroupBox->updateMediumVariantWidgetsAfterFormatChange(mediumFormat);
    119119
    120120    if (m_pDynamicLabel)
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.cpp

    r90800 r90854  
    350350    {
    351351        m_pSplitBox->setText(tr("&Split into files of less than 2GB"));
    352         m_pSplitBox->setToolTip(tr("&When checked the virtual disk file will be splitted into 2GB parts in the host storage."));
     352        m_pSplitBox->setToolTip(tr("<p>Possible only for some hard disk file types. When checked the virtual disk file will "
     353                                   "be splitted into 2GB parts in the host storage.</p>"));
    353354    }
    354355}
     
    386387}
    387388
    388 void UIDiskVariantGroupBox::setWidgetVisibility(const CMediumFormat &mediumFormat)
    389 {
     389void UIDiskVariantGroupBox::updateMediumVariantWidgetsAfterFormatChange(const CMediumFormat &mediumFormat)
     390{
     391    AssertReturnVoid(m_pFixedCheckBox && m_pSplitBox);
    390392    ULONG uCapabilities = 0;
    391393    QVector<KMediumFormatCapabilities> capabilities;
     
    394396        uCapabilities |= capabilities[i];
    395397
    396     bool m_fIsCreateDynamicPossible = uCapabilities & KMediumFormatCapabilities_CreateDynamic;
    397     bool m_fIsCreateFixedPossible = uCapabilities & KMediumFormatCapabilities_CreateFixed;
    398     bool m_fIsCreateSplitPossible = uCapabilities & KMediumFormatCapabilities_CreateSplit2G;
    399     if (m_pFixedCheckBox)
    400     {
    401         if (!m_fIsCreateDynamicPossible)
    402         {
    403             m_pFixedCheckBox->setChecked(true);
    404             m_pFixedCheckBox->setEnabled(false);
    405         }
    406         if (!m_fIsCreateFixedPossible)
    407         {
    408             m_pFixedCheckBox->setChecked(false);
    409             m_pFixedCheckBox->setEnabled(false);
    410         }
    411     }
    412     if (m_pFixedCheckBox)
    413         m_pFixedCheckBox->setHidden(!m_fIsCreateFixedPossible);
    414     if (m_pSplitBox)
    415     {
    416         m_pSplitBox->setHidden(!m_fIsCreateSplitPossible);
    417         if (!m_fIsCreateSplitPossible)
    418             m_pSplitBox->setChecked(false);
    419     }
    420 }
    421 
    422 void UIDiskVariantGroupBox::updateMediumVariantWidgetsAfterFormatChange(const CMediumFormat &mediumFormat,
    423                                                                         bool fHideDisabled /* = false */)
    424 {
    425     ULONG uCapabilities = 0;
    426     QVector<KMediumFormatCapabilities> capabilities;
    427     capabilities = mediumFormat.GetCapabilities();
    428     for (int i = 0; i < capabilities.size(); i++)
    429         uCapabilities |= capabilities[i];
    430 
    431398    m_fIsCreateDynamicPossible = uCapabilities & KMediumFormatCapabilities_CreateDynamic;
    432399    m_fIsCreateFixedPossible = uCapabilities & KMediumFormatCapabilities_CreateFixed;
    433400    m_fIsCreateSplitPossible = uCapabilities & KMediumFormatCapabilities_CreateSplit2G;
    434401
    435     if (m_pFixedCheckBox)
    436     {
    437         m_pFixedCheckBox->setEnabled(m_fIsCreateDynamicPossible || m_fIsCreateFixedPossible);
    438         if (!m_fIsCreateDynamicPossible)
    439             m_pFixedCheckBox->setChecked(true);
    440         if (!m_fIsCreateFixedPossible)
    441             m_pFixedCheckBox->setChecked(false);
    442     }
     402    m_pFixedCheckBox->setEnabled(true);
     403    if (!m_fIsCreateDynamicPossible)
     404    {
     405        m_pFixedCheckBox->setChecked(true);
     406        m_pFixedCheckBox->setEnabled(false);
     407    }
     408    if (!m_fIsCreateFixedPossible)
     409    {
     410        m_pFixedCheckBox->setChecked(false);
     411        m_pFixedCheckBox->setEnabled(false);
     412    }
     413
    443414    m_pSplitBox->setEnabled(m_fIsCreateSplitPossible);
    444 
    445     if (fHideDisabled)
    446     {
    447         m_pFixedCheckBox->setHidden(!m_pFixedCheckBox->isEnabled());
    448         m_pSplitBox->setHidden(!m_pSplitBox->isEnabled());
    449     }
    450     /* Deselect split box if it is disabled: */
    451     if (!m_pSplitBox->isEnabled())
     415    if (!m_fIsCreateSplitPossible)
    452416        m_pSplitBox->setChecked(false);
    453417    emit sigMediumVariantChanged(mediumVariant());
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.h

    r90800 r90854  
    112112
    113113    UIDiskVariantGroupBox(bool fExpertMode, QWidget *pParent = 0);
    114     void updateMediumVariantWidgetsAfterFormatChange(const CMediumFormat &mediumFormat, bool fHideDisabled = false);
     114    void updateMediumVariantWidgetsAfterFormatChange(const CMediumFormat &mediumFormat);
    115115    qulonglong mediumVariant() const;
    116116    void setMediumVariant(qulonglong uMediumVariant);
    117     void setWidgetVisibility(const CMediumFormat &mediumFormat);
    118117    bool isComplete() const;
    119118
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageVariant.cpp

    r90413 r90854  
    104104    AssertReturnVoid(m_pVariantGroupBox);
    105105
    106     m_pVariantGroupBox->updateMediumVariantWidgetsAfterFormatChange(mediumFormat, true /* hide disabled widgets*/);
     106    m_pVariantGroupBox->updateMediumVariantWidgetsAfterFormatChange(mediumFormat);
    107107
    108108    if (m_pDynamicLabel)
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