VirtualBox

Changeset 82548 in vbox


Ignore:
Timestamp:
Dec 11, 2019 1:54:35 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
135417
Message:

FE/Qt: bugref:9390: UIWizardCloneVMPageBasic2: Get rid of hardcoded clone option types, instead acquire these types through CSystemProperties interface (clone options related to linked clone functionality).

Location:
trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic2.cpp

    r76606 r82548  
    2222
    2323/* GUI includes: */
     24#include "UICommon.h"
    2425#include "UIWizardCloneVMPageBasic2.h"
    2526#include "UIWizardCloneVM.h"
    2627#include "QIRichTextLabel.h"
    2728
     29/* COM includes: */
     30#include "CSystemProperties.h"
     31
    2832
    2933UIWizardCloneVMPage2::UIWizardCloneVMPage2(bool fAdditionalInfo)
    3034    : m_fAdditionalInfo(fAdditionalInfo)
     35    , m_pButtonGroup(0)
     36    , m_pFullCloneRadio(0)
     37    , m_pLinkedCloneRadio(0)
    3138{
    3239}
    3340
    34 bool UIWizardCloneVMPage2::isLinkedClone() const
     41bool UIWizardCloneVMPage2::linkedClone() const
    3542{
    36     return m_pLinkedCloneRadio->isChecked();
     43    return m_pLinkedCloneRadio ? m_pLinkedCloneRadio->isChecked() : false;
    3744}
    3845
    3946UIWizardCloneVMPageBasic2::UIWizardCloneVMPageBasic2(bool fAdditionalInfo)
    4047    : UIWizardCloneVMPage2(fAdditionalInfo)
     48    , m_pLabel(0)
    4149{
    42     /* Create widgets: */
     50    /* Prepare main layout: */
    4351    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
     52    if (pMainLayout)
    4453    {
     54        /* Prepare description label: */
    4555        m_pLabel = new QIRichTextLabel(this);
     56        if (m_pLabel)
     57            pMainLayout->addWidget(m_pLabel);
     58
     59        /* Prepare clone-type options layout: */
    4660        QVBoxLayout *pCloneTypeCntLayout = new QVBoxLayout;
     61        if (pCloneTypeCntLayout)
    4762        {
     63            /* Prepare clone-type options button-group: */
    4864            m_pButtonGroup = new QButtonGroup(this);
     65            if (m_pButtonGroup)
    4966            {
     67                /* Prepare full clone option radio-button: */
    5068                m_pFullCloneRadio = new QRadioButton(this);
     69                if (m_pFullCloneRadio)
    5170                {
    5271                    m_pFullCloneRadio->setChecked(true);
     72                    m_pButtonGroup->addButton(m_pFullCloneRadio);
     73                    pCloneTypeCntLayout->addWidget(m_pFullCloneRadio);
    5374                }
    54                 m_pLinkedCloneRadio = new QRadioButton(this);
    55                 m_pButtonGroup->addButton(m_pFullCloneRadio);
    56                 m_pButtonGroup->addButton(m_pLinkedCloneRadio);
     75
     76                /* Load currently supported clone options: */
     77                CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     78                const QVector<KCloneOptions> supportedOptions = comProperties.GetSupportedCloneOptions();
     79                /* Check whether we support linked clone option at all: */
     80                const bool fSupportedLinkedClone = supportedOptions.contains(KCloneOptions_Link);
     81
     82                /* Prepare linked clone option radio-button: */
     83                if (fSupportedLinkedClone)
     84                {
     85                    m_pLinkedCloneRadio = new QRadioButton(this);
     86                    if (m_pLinkedCloneRadio)
     87                    {
     88                        m_pButtonGroup->addButton(m_pLinkedCloneRadio);
     89                        pCloneTypeCntLayout->addWidget(m_pLinkedCloneRadio);
     90                    }
     91                }
    5792            }
    58             pCloneTypeCntLayout->addWidget(m_pFullCloneRadio);
    59             pCloneTypeCntLayout->addWidget(m_pLinkedCloneRadio);
     93
     94            pMainLayout->addLayout(pCloneTypeCntLayout);
    6095        }
    61         pMainLayout->addWidget(m_pLabel);
    62         pMainLayout->addLayout(pCloneTypeCntLayout);
     96
     97        /* Stretch under buttons: */
    6398        pMainLayout->addStretch();
    6499    }
     
    98133
    99134    m_pFullCloneRadio->setText(UIWizardCloneVM::tr("&Full clone"));
    100     m_pLinkedCloneRadio->setText(UIWizardCloneVM::tr("&Linked clone"));
     135    if (m_pLinkedCloneRadio)
     136        m_pLinkedCloneRadio->setText(UIWizardCloneVM::tr("&Linked clone"));
    101137}
    102138
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic2.h

    r76581 r82548  
    3939
    4040    /* Stuff for 'linkedClone' field: */
    41     bool isLinkedClone() const;
     41    bool linkedClone() const;
    4242
    4343    /* Variables: */
     
    5454{
    5555    Q_OBJECT;
    56     Q_PROPERTY(bool linkedClone READ isLinkedClone);
     56    Q_PROPERTY(bool linkedClone READ linkedClone);
    5757
    5858public:
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageExpert.h

    r76581 r82548  
    3939    Q_PROPERTY(QString cloneName READ cloneName WRITE setCloneName);
    4040    Q_PROPERTY(QString cloneFilePath READ cloneFilePath WRITE setCloneFilePath);
    41     Q_PROPERTY(bool linkedClone READ isLinkedClone);
     41    Q_PROPERTY(bool linkedClone READ linkedClone);
    4242    Q_PROPERTY(KCloneMode cloneMode READ cloneMode WRITE setCloneMode);
    4343    Q_PROPERTY(MACAddressClonePolicy macAddressClonePolicy READ macAddressClonePolicy WRITE setMACAddressClonePolicy);
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