VirtualBox

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


Ignore:
Timestamp:
Jul 28, 2021 2:18:54 PM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9996. Fixing medium format and variant connections

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp

    r90352 r90370  
    31583158    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
    31593159    windowManager().registerNewParent(pWizard, pDialogParent);
    3160     pWizard->prepare();
    31613160    pWizard->exec();
    31623161    delete pWizard;
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.cpp

    r90362 r90370  
    298298        uCapabilities |= capabilities[i];
    299299
    300     bool fIsCreateDynamicPossible = uCapabilities & KMediumFormatCapabilities_CreateDynamic;
    301     bool fIsCreateFixedPossible = uCapabilities & KMediumFormatCapabilities_CreateFixed;
    302     bool fIsCreateSplitPossible = uCapabilities & KMediumFormatCapabilities_CreateSplit2G;
     300    bool m_fIsCreateDynamicPossible = uCapabilities & KMediumFormatCapabilities_CreateDynamic;
     301    bool m_fIsCreateFixedPossible = uCapabilities & KMediumFormatCapabilities_CreateFixed;
     302    bool m_fIsCreateSplitPossible = uCapabilities & KMediumFormatCapabilities_CreateSplit2G;
    303303    if (m_pFixedCheckBox)
    304304    {
    305         if (!fIsCreateDynamicPossible)
     305        if (!m_fIsCreateDynamicPossible)
    306306        {
    307307            m_pFixedCheckBox->setChecked(true);
    308308            m_pFixedCheckBox->setEnabled(false);
    309309        }
    310         if (!fIsCreateFixedPossible)
     310        if (!m_fIsCreateFixedPossible)
    311311        {
    312312            m_pFixedCheckBox->setChecked(false);
     
    315315    }
    316316    if (m_pFixedCheckBox)
    317         m_pFixedCheckBox->setHidden(!fIsCreateFixedPossible);
     317        m_pFixedCheckBox->setHidden(!m_fIsCreateFixedPossible);
    318318    if (m_pSplitBox)
    319         m_pSplitBox->setHidden(!fIsCreateSplitPossible);
    320 }
    321 
    322 void UIDiskVariantGroupBox::updateMediumVariantWidgetsAfterFormatChange(const CMediumFormat &mediumFormat)
    323 {
    324     /* Enable/disable widgets: */
     319        m_pSplitBox->setHidden(!m_fIsCreateSplitPossible);
     320}
     321
     322void UIDiskVariantGroupBox::updateMediumVariantWidgetsAfterFormatChange(const CMediumFormat &mediumFormat,
     323                                                                        bool fHideDisabled /* = false */)
     324{
    325325    ULONG uCapabilities = 0;
    326326    QVector<KMediumFormatCapabilities> capabilities;
     
    329329        uCapabilities |= capabilities[i];
    330330
    331     bool fIsCreateDynamicPossible = uCapabilities & KMediumFormatCapabilities_CreateDynamic;
    332     bool fIsCreateFixedPossible = uCapabilities & KMediumFormatCapabilities_CreateFixed;
    333     bool fIsCreateSplitPossible = uCapabilities & KMediumFormatCapabilities_CreateSplit2G;
     331    m_fIsCreateDynamicPossible = uCapabilities & KMediumFormatCapabilities_CreateDynamic;
     332    m_fIsCreateFixedPossible = uCapabilities & KMediumFormatCapabilities_CreateFixed;
     333    m_fIsCreateSplitPossible = uCapabilities & KMediumFormatCapabilities_CreateSplit2G;
    334334
    335335    if (m_pFixedCheckBox)
    336336    {
    337         m_pFixedCheckBox->setEnabled(fIsCreateDynamicPossible || fIsCreateFixedPossible);
    338         if (!fIsCreateDynamicPossible)
     337        m_pFixedCheckBox->setEnabled(m_fIsCreateDynamicPossible || m_fIsCreateFixedPossible);
     338        if (!m_fIsCreateDynamicPossible)
    339339            m_pFixedCheckBox->setChecked(true);
    340         if (!fIsCreateFixedPossible)
     340        if (!m_fIsCreateFixedPossible)
    341341            m_pFixedCheckBox->setChecked(false);
    342342    }
    343     m_pSplitBox->setEnabled(fIsCreateSplitPossible);
     343    m_pSplitBox->setEnabled(m_fIsCreateSplitPossible);
     344
     345    if (fHideDisabled)
     346    {
     347        m_pFixedCheckBox->setHidden(!m_pFixedCheckBox->isEnabled());
     348        m_pSplitBox->setHidden(!m_pSplitBox->isEnabled());
     349    }
    344350    emit sigMediumVariantChanged(mediumVariant());
    345351}
     
    349355    /* Make sure medium variant is correct: */
    350356    return mediumVariant() != (qulonglong)KMediumVariant_Max;
     357}
     358
     359bool UIDiskVariantGroupBox::isCreateDynamicPossible() const
     360{
     361    return m_fIsCreateDynamicPossible;
     362}
     363
     364bool UIDiskVariantGroupBox::isCreateFixedPossible() const
     365{
     366    return m_fIsCreateFixedPossible;
     367}
     368
     369bool UIDiskVariantGroupBox::isCreateSplitPossible() const
     370{
     371    return m_fIsCreateSplitPossible;
    351372}
    352373
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.h

    r90362 r90370  
    105105
    106106    UIDiskVariantGroupBox(bool fExpertMode, QWidget *pParent = 0);
    107     void updateMediumVariantWidgetsAfterFormatChange(const CMediumFormat &mediumFormat);
     107    void updateMediumVariantWidgetsAfterFormatChange(const CMediumFormat &mediumFormat, bool fHideDisabled = false);
    108108    qulonglong mediumVariant() const;
    109109    void setMediumVariant(qulonglong uMediumVariant);
    110110    void setWidgetVisibility(CMediumFormat &mediumFormat);
    111111    bool isComplete() const;
     112
     113    bool isCreateDynamicPossible() const;
     114    bool isCreateFixedPossible() const;
     115    bool isCreateSplitPossible() const;
    112116
    113117private slots:
     
    122126    QCheckBox *m_pFixedCheckBox;
    123127    QCheckBox *m_pSplitBox;
     128    bool m_fIsCreateDynamicPossible;
     129    bool m_fIsCreateFixedPossible;
     130    bool m_fIsCreateSplitPossible;
    124131};
    125132
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.cpp

    r90362 r90370  
    5454}
    5555
     56qulonglong UIWizardNewVD::mediumVariant() const
     57{
     58    return m_uMediumVariant;
     59}
     60
     61void UIWizardNewVD::setMediumVariant(qulonglong uMediumVariant)
     62{
     63    m_uMediumVariant = uMediumVariant;
     64}
     65
     66const CMediumFormat &UIWizardNewVD::mediumFormat()
     67{
     68    return m_comMediumFormat;
     69}
     70
     71void UIWizardNewVD::setMediumFormat(const CMediumFormat &mediumFormat)
     72{
     73    m_comMediumFormat = mediumFormat;
     74}
     75
     76const QString &UIWizardNewVD::mediumPath() const
     77{
     78    return m_strMediumPath;
     79}
     80
     81void UIWizardNewVD::setMediumPath(const QString &strMediumPath)
     82{
     83    m_strMediumPath = strMediumPath;
     84}
     85
     86qulonglong UIWizardNewVD::mediumSize() const
     87{
     88    return m_uMediumSize;
     89}
     90
     91void UIWizardNewVD::setMediumSize(qulonglong uMediumSize)
     92{
     93    m_uMediumSize = uMediumSize;
     94}
     95
    5696void UIWizardNewVD::populatePages()
    5797{
     
    68108
    69109        // {
    70         //     //addPage(new UIWizardNewVMPageExpert);
     110        //     //addPage(new UIWizardNewVDPageExpert);
    71111        //     break;
    72112        // }
     
    127167    setWindowTitle(tr("Create Virtual Hard Disk"));
    128168}
    129 
    130 void UIWizardNewVD::prepare()
    131 {
    132     // /* Create corresponding pages: */
    133     // switch (mode())
    134     // {
    135     //     case WizardMode_Basic:
    136     //     {
    137     //         setPage(Page1, new UIWizardNewVDPageFileType);
    138     //         setPage(Page2, new UIWizardNewVDPageVariant);
    139     //         setPage(Page3, new UIWizardNewVDPageSizeLocation(m_strDefaultName, m_strDefaultPath, m_uDefaultSize));
    140     //         break;
    141     //     }
    142     //     case WizardMode_Expert:
    143     //     {
    144     //         setPage(PageExpert, new UIWizardNewVDPageExpert(m_strDefaultName, m_strDefaultPath, m_uDefaultSize));
    145     //         break;
    146     //     }
    147     //     default:
    148     //     {
    149     //         AssertMsgFailed(("Invalid mode: %d", mode()));
    150     //         break;
    151     //     }
    152     // }
    153 
    154 }
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.h

    r90356 r90370  
    2828#include "COMEnums.h"
    2929#include "CMedium.h"
     30#include "CMediumFormat.h"
     31
     32#define newVDWizardPropertySet(functionName, value)                      \
     33    do                                                                   \
     34    {                                                                    \
     35        UIWizardNewVD *pWizard = qobject_cast<UIWizardNewVD*>(wizard()); \
     36        if (pWizard)                                                     \
     37            pWizard->set##functionName(value);                           \
     38    }                                                                    \
     39    while(0)
    3040
    3141/* New Virtual Hard Drive wizard: */
     
    3646public:
    3747
    38     /* Page IDs: */
    39     enum
    40     {
    41         Page1,
    42         Page2,
    43         Page3
    44     };
    45 
    46     /* Page IDs: */
    47     enum
    48     {
    49         PageExpert
    50     };
    51 
    52     /* Constructor: */
    5348    UIWizardNewVD(QWidget *pParent,
    5449                  const QString &strDefaultName, const QString &strDefaultPath,
    55                   qulonglong uDefaultSize,
    56                   WizardMode mode = WizardMode_Auto);
     50                  qulonglong uDefaultSize, WizardMode mode = WizardMode_Auto);
    5751
    58     /* Pages related stuff: */
    59     void prepare();
     52
     53    qulonglong mediumVariant() const;
     54    void setMediumVariant(qulonglong uMediumVariant);
     55
     56    const CMediumFormat &mediumFormat();
     57    void setMediumFormat(const CMediumFormat &mediumFormat);
     58
     59    const QString &mediumPath() const;
     60    void setMediumPath(const QString &strMediumPath);
     61
     62    qulonglong mediumSize() const;
     63    void setMediumSize(qulonglong mediumSize);
    6064
    6165protected:
     
    7175    void retranslateUi();
    7276
    73     /* Variables: */
     77    qulonglong m_uMediumVariant;
     78    CMediumFormat m_comMediumFormat;
     79    QString m_strMediumPath;
     80    qulonglong m_uMediumSize;
     81
     82
    7483    QString     m_strDefaultName;
    7584    QString     m_strDefaultPath;
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageFileType.cpp

    r90356 r90370  
    3333#include "CSystemProperties.h"
    3434
    35 // UIWizardNewVDPageBaseFileType::UIWizardNewVDPageBaseFileType()
    36 //     : m_pFormatButtonGroup(0)
    37 // {
    38 // }
    39 
    40 // void UIWizardNewVDPageBaseFileType::addFormatButton(QWidget *pParent, QVBoxLayout *pFormatLayout, CMediumFormat medFormat, bool fPreferred /* = false */)
    41 // {
    42 //     /* Check that medium format supports creation: */
    43 //     ULONG uFormatCapabilities = 0;
    44 //     QVector<KMediumFormatCapabilities> capabilities;
    45 //     capabilities = medFormat.GetCapabilities();
    46 //     for (int i = 0; i < capabilities.size(); i++)
    47 //         uFormatCapabilities |= capabilities[i];
    48 
    49 //     if (!(uFormatCapabilities & KMediumFormatCapabilities_CreateFixed ||
    50 //           uFormatCapabilities & KMediumFormatCapabilities_CreateDynamic))
    51 //         return;
    52 
    53 //     /* Check that medium format supports creation of virtual hard-disks: */
    54 //     QVector<QString> fileExtensions;
    55 //     QVector<KDeviceType> deviceTypes;
    56 //     medFormat.DescribeFileExtensions(fileExtensions, deviceTypes);
    57 //     if (!deviceTypes.contains(KDeviceType_HardDisk))
    58 //         return;
    59 
    60 //     /* Create/add corresponding radio-button: */
    61 //     QRadioButton *pFormatButton = new QRadioButton(pParent);
    62 //     AssertPtrReturnVoid(pFormatButton);
    63 //     {
    64 //         /* Make the preferred button font bold: */
    65 //         if (fPreferred)
    66 //         {
    67 //             QFont font = pFormatButton->font();
    68 //             font.setBold(true);
    69 //             pFormatButton->setFont(font);
    70 //         }
    71 //         pFormatLayout->addWidget(pFormatButton);
    72 //         m_formats << medFormat;
    73 //         m_formatNames << medFormat.GetName();
    74 //         m_pFormatButtonGroup->addButton(pFormatButton, m_formatNames.size() - 1);
    75 //         m_formatExtensions << UIWizardNewVDPageBaseSizeLocation::defaultExtension(medFormat);
    76 //     }
    77 // }
    78 
    79 
    80 // CMediumFormat UIWizardNewVDPageBaseFileType::mediumFormat() const
    81 // {
    82 //     return m_pFormatButtonGroup && m_pFormatButtonGroup->checkedButton() ? m_formats[m_pFormatButtonGroup->checkedId()] : CMediumFormat();
    83 // }
    84 
    8535// void UIWizardNewVDPageBaseFileType::setMediumFormat(const CMediumFormat &mediumFormat)
    8636// {
     
    9343// }
    9444
    95 // void UIWizardNewVDPageBaseFileType::retranslateWidgets()
    96 // {
    97 //     if (m_pFormatButtonGroup)
    98 //     {
    99 //         QList<QAbstractButton*> buttons = m_pFormatButtonGroup->buttons();
    100 //         for (int i = 0; i < buttons.size(); ++i)
    101 //         {
    102 //             QAbstractButton *pButton = buttons[i];
    103 //             UIMediumFormat enmFormat = gpConverter->fromInternalString<UIMediumFormat>(m_formatNames[m_pFormatButtonGroup->id(pButton)]);
    104 //             pButton->setText(gpConverter->toString(enmFormat));
    105 //         }
    106 //     }
    107 // }
    10845
    10946UIWizardNewVDPageFileType::UIWizardNewVDPageFileType()
     
    13370
    13471    pMainLayout->addStretch();
     72    connect(m_pFormatButtonGroup, &UIDiskFormatsGroupBox::sigMediumFormatChanged,
     73            this, &UIWizardNewVDPageFileType::sltMediumFormatChanged);
    13574    retranslateUi();
     75}
     76
     77void UIWizardNewVDPageFileType::sltMediumFormatChanged()
     78{
     79    AssertReturnVoid(m_pFormatButtonGroup);
     80    newVDWizardPropertySet(MediumFormat, m_pFormatButtonGroup->mediumFormat());
    13681}
    13782
     
    14792void UIWizardNewVDPageFileType::initializePage()
    14893{
    149     /* Translate page: */
    15094    retranslateUi();
     95    if (m_pFormatButtonGroup)
     96        newVDWizardPropertySet(MediumFormat, m_pFormatButtonGroup->mediumFormat());
    15197}
    15298
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageFileType.h

    r90356 r90370  
    3838namespace UIWizardNewVDFileType
    3939{
    40 //     void addFormatButton(QWidget *pParent, QVBoxLayout *pFormatsLayout, CMediumFormat medFormat, bool fPreferred = false);
    41 
    42    // QWidget *createFormatButtonGroup(QButtonGroup *&pFormatButtonGroup, bool fExperMode);
    4340
    4441//     CMediumFormat mediumFormat() const;
     
    6360    UIWizardNewVDPageFileType();
    6461
     62private slots:
     63
     64    void sltMediumFormatChanged();
     65
    6566private:
    6667
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageVariant.cpp

    r90362 r90370  
    9292
    9393
    94 // }
    95 
    96 // void UIWizardNewVDPageBaseVariant::setWidgetVisibility(CMediumFormat &mediumFormat)
    97 // {
    98 //     ULONG uCapabilities = 0;
    99 //     QVector<KMediumFormatCapabilities> capabilities;
    100 //     capabilities = mediumFormat.GetCapabilities();
    101 //     for (int i = 0; i < capabilities.size(); i++)
    102 //         uCapabilities |= capabilities[i];
    103 
    104 //     bool fIsCreateDynamicPossible = uCapabilities & KMediumFormatCapabilities_CreateDynamic;
    105 //     bool fIsCreateFixedPossible = uCapabilities & KMediumFormatCapabilities_CreateFixed;
    106 //     bool fIsCreateSplitPossible = uCapabilities & KMediumFormatCapabilities_CreateSplit2G;
    107 //     if (m_pFixedCheckBox)
    108 //     {
    109 //         if (!fIsCreateDynamicPossible)
    110 //         {
    111 //             m_pFixedCheckBox->setChecked(true);
    112 //             m_pFixedCheckBox->setEnabled(false);
    113 //         }
    114 //         if (!fIsCreateFixedPossible)
    115 //         {
    116 //             m_pFixedCheckBox->setChecked(false);
    117 //             m_pFixedCheckBox->setEnabled(false);
    118 //         }
    119 //     }
    120 //     if (m_pDynamicLabel)
    121 //         m_pDynamicLabel->setHidden(!fIsCreateDynamicPossible);
    122 //     if (m_pFixedLabel)
    123 //         m_pFixedLabel->setHidden(!fIsCreateFixedPossible);
    124 //     if (m_pFixedCheckBox)
    125 //         m_pFixedCheckBox->setHidden(!fIsCreateFixedPossible);
    126 //     if (m_pSplitLabel)
    127 //         m_pSplitLabel->setHidden(!fIsCreateSplitPossible);
    128 //     if (m_pSplitBox)
    129 //         m_pSplitBox->setHidden(!fIsCreateSplitPossible);
    13094// }
    13195
     
    225189void UIWizardNewVDPageVariant::initializePage()
    226190{
    227     // retranslateUi();
    228     // CMediumFormat mediumFormat = field("mediumFormat").value<CMediumFormat>();
    229     // setWidgetVisibility(mediumFormat);
     191    retranslateUi();
     192    UIWizardNewVD *pWizard = qobject_cast<UIWizardNewVD*>(wizard());
     193    AssertReturnVoid(pWizard);
     194    setWidgetVisibility(pWizard->mediumFormat());
    230195}
    231196
     
    235200    return true;
    236201}
     202
     203
     204void UIWizardNewVDPageVariant::setWidgetVisibility(const CMediumFormat &mediumFormat)
     205{
     206    AssertReturnVoid(m_pVariantGroupBox);
     207
     208    m_pVariantGroupBox->updateMediumVariantWidgetsAfterFormatChange(mediumFormat, true /* hide disabled widgets*/);
     209
     210    if (m_pDynamicLabel)
     211        m_pDynamicLabel->setHidden(!m_pVariantGroupBox->isCreateDynamicPossible());
     212    if (m_pFixedLabel)
     213        m_pFixedLabel->setHidden(!m_pVariantGroupBox->isCreateFixedPossible());
     214    if (m_pSplitLabel)
     215        m_pSplitLabel->setHidden(!m_pVariantGroupBox->isCreateSplitPossible());
     216}
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageVariant.h

    r90356 r90370  
    6464    bool isComplete() const;
    6565    void prepare();
     66    void setWidgetVisibility(const CMediumFormat &mediumFormat);
    6667
    6768    QIRichTextLabel *m_pDescriptionLabel;
     
    7273};
    7374
    74 
    7575#endif /* !FEQT_INCLUDED_SRC_wizards_newvd_UIWizardNewVDPageVariant_h */
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