VirtualBox

Changeset 82545 in vbox


Ignore:
Timestamp:
Dec 11, 2019 1:10:51 PM (5 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9390: UIWizardCloneVMPageBasic1: Get rid of hardcoded clone option types, instead acquire these types through CSystemProperties interface; Besides that, using more modern Qt approach to cache enum data directly without casting it to int (clone options related to MAC addresses).

File:
1 edited

Legend:

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

    r79365 r82545  
    3232
    3333/* COM includes: */
     34#include "CSystemProperties.h"
    3435#include "CVirtualBox.h"
    3536
     
    103104void UIWizardCloneVMPage1::updateMACAddressClonePolicyComboToolTip()
    104105{
    105     const int iCurrentIndex = m_pMACComboBox->currentIndex();
    106     const QString strCurrentToolTip = m_pMACComboBox->itemData(iCurrentIndex, Qt::ToolTipRole).toString();
    107     AssertMsg(!strCurrentToolTip.isEmpty(), ("Data not found!"));
     106    const QString strCurrentToolTip = m_pMACComboBox->currentData(Qt::ToolTipRole).toString();
     107    AssertMsg(!strCurrentToolTip.isEmpty(), ("Tool-tip data not found!"));
    108108    m_pMACComboBox->setToolTip(strCurrentToolTip);
    109109}
     
    111111MACAddressClonePolicy UIWizardCloneVMPage1::macAddressClonePolicy() const
    112112{
    113     const int iIndex = m_pMACComboBox->currentIndex();
    114     return (MACAddressClonePolicy)m_pMACComboBox->itemData(iIndex).toInt();
     113    return m_pMACComboBox->currentData().value<MACAddressClonePolicy>();
    115114}
    116115
    117116void UIWizardCloneVMPage1::setMACAddressClonePolicy(MACAddressClonePolicy enmMACAddressClonePolicy)
    118117{
    119     const int iIndex = m_pMACComboBox->findData((int)enmMACAddressClonePolicy);
     118    const int iIndex = m_pMACComboBox->findData(enmMACAddressClonePolicy);
    120119    AssertMsg(iIndex != -1, ("Data not found!"));
    121120    m_pMACComboBox->setCurrentIndex(iIndex);
     
    126125    AssertReturnVoid(m_pMACComboBox->count() == 0);
    127126
    128     /* Apply hardcoded policies list: */
    129     for (int i = 0; i < (int)MACAddressClonePolicy_MAX; ++i)
    130     {
    131         m_pMACComboBox->addItem(QString::number(i));
    132         m_pMACComboBox->setItemData(i, i);
    133     }
     127    /* Map known clone options to known MAC address export policies: */
     128    QMap<KCloneOptions, MACAddressClonePolicy> knownOptions;
     129    knownOptions[KCloneOptions_KeepAllMACs] = MACAddressClonePolicy_KeepAllMACs;
     130    knownOptions[KCloneOptions_KeepNATMACs] = MACAddressClonePolicy_KeepNATMACs;
     131
     132    /* Load currently supported clone options: */
     133    CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     134    const QVector<KCloneOptions> supportedOptions = comProperties.GetSupportedCloneOptions();
     135
     136    /* Check which of supported options/policies are known: */
     137    QList<MACAddressClonePolicy> supportedPolicies;
     138    foreach (const KCloneOptions &enmOption, supportedOptions)
     139        if (knownOptions.contains(enmOption))
     140            supportedPolicies << knownOptions.value(enmOption);
     141
     142    /* Add supported policies first: */
     143    foreach (const MACAddressClonePolicy &enmPolicy, supportedPolicies)
     144        m_pMACComboBox->addItem(QString(), QVariant::fromValue(enmPolicy));
     145
     146    /* Add hardcoded policy finally: */
     147    m_pMACComboBox->addItem(QString(), QVariant::fromValue(MACAddressClonePolicy_StripAllMACs));
    134148
    135149    /* Set default: */
    136     setMACAddressClonePolicy(MACAddressClonePolicy_KeepNATMACs);
     150    if (supportedPolicies.contains(MACAddressClonePolicy_KeepNATMACs))
     151        setMACAddressClonePolicy(MACAddressClonePolicy_KeepNATMACs);
     152    else
     153        setMACAddressClonePolicy(MACAddressClonePolicy_StripAllMACs);
    137154}
    138155
     
    297314    /* Translate MAC address policy combo-box: */
    298315    m_pMACComboBoxLabel->setText(UIWizardCloneVM::tr("MAC Address &Policy:"));
    299     m_pMACComboBox->setItemText(MACAddressClonePolicy_KeepAllMACs,
    300                                 UIWizardCloneVM::tr("Include all network adapter MAC addresses"));
    301     m_pMACComboBox->setItemText(MACAddressClonePolicy_KeepNATMACs,
    302                                 UIWizardCloneVM::tr("Include only NAT network adapter MAC addresses"));
    303     m_pMACComboBox->setItemText(MACAddressClonePolicy_StripAllMACs,
    304                                 UIWizardCloneVM::tr("Generate new MAC addresses for all network adapters"));
    305     m_pMACComboBox->setItemData(MACAddressClonePolicy_KeepAllMACs,
    306                                 UIWizardCloneVM::tr("Include all network adapter MAC addresses during cloning."), Qt::ToolTipRole);
    307     m_pMACComboBox->setItemData(MACAddressClonePolicy_KeepNATMACs,
    308                                 UIWizardCloneVM::tr("Include only NAT network adapter MAC addresses during cloning."), Qt::ToolTipRole);
    309     m_pMACComboBox->setItemData(MACAddressClonePolicy_StripAllMACs,
    310                                 UIWizardCloneVM::tr("Generate new MAC addresses for all network adapters during cloning."), Qt::ToolTipRole);
     316    for (int i = 0; i < m_pMACComboBox->count(); ++i)
     317    {
     318        const MACAddressClonePolicy enmPolicy = m_pMACComboBox->itemData(i).value<MACAddressClonePolicy>();
     319        switch (enmPolicy)
     320        {
     321            case MACAddressClonePolicy_KeepAllMACs:
     322            {
     323                m_pMACComboBox->setItemText(i, UIWizardCloneVM::tr("Include all network adapter MAC addresses"));
     324                m_pMACComboBox->setItemData(i, UIWizardCloneVM::tr("Include all network adapter MAC addresses during cloning."), Qt::ToolTipRole);
     325                break;
     326            }
     327            case MACAddressClonePolicy_KeepNATMACs:
     328            {
     329                m_pMACComboBox->setItemText(i, UIWizardCloneVM::tr("Include only NAT network adapter MAC addresses"));
     330                m_pMACComboBox->setItemData(i, UIWizardCloneVM::tr("Include only NAT network adapter MAC addresses during cloning."), Qt::ToolTipRole);
     331                break;
     332            }
     333            case MACAddressClonePolicy_StripAllMACs:
     334            {
     335                m_pMACComboBox->setItemText(i, UIWizardCloneVM::tr("Generate new MAC addresses for all network adapters"));
     336                m_pMACComboBox->setItemData(i, UIWizardCloneVM::tr("Generate new MAC addresses for all network adapters during cloning."), Qt::ToolTipRole);
     337                break;
     338            }
     339            default:
     340                break;
     341        }
     342    }
    311343
    312344    m_pAdditionalOptionsLabel->setText(UIWizardCloneVM::tr("Additional Options:"));
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