VirtualBox

Ignore:
Timestamp:
Dec 12, 2019 2:54:50 PM (5 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9611: UIMachineSettingsNetwork: Get rid of hardcoded network adapter 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.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp

    r82474 r82568  
    367367        case KNetworkAdapterType_Virtio:    return QApplication::translate("UICommon", "Paravirtualized Network (virtio-net)", "NetworkAdapterType");
    368368#endif /* VBOX_WITH_VIRTIO */
     369        case KNetworkAdapterType_Am79C960:  return QApplication::translate("UICommon", "PCnet-ISA (Am79C960)", "NetworkAdapterType");
    369370        default: AssertMsgFailed(("No text for %d", type)); break;
    370371    }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp

    r81422 r82568  
    215215    /* Other variables: */
    216216    int m_iSlot;
     217    KNetworkAdapterType m_enmAdapterType;
    217218    UIPortForwardingDataList m_portForwardingRules;
    218219};
     
    227228    , m_pParent(pParent)
    228229    , m_iSlot(-1)
     230    , m_enmAdapterType(KNetworkAdapterType_Null)
    229231{
    230232    /* Apply UI decorations: */
     
    291293
    292294    /* Load adapter type: */
    293     m_pAdapterTypeCombo->setCurrentIndex(position(m_pAdapterTypeCombo, oldAdapterData.m_adapterType));
     295    m_enmAdapterType = oldAdapterData.m_adapterType;
    294296
    295297    /* Load promiscuous mode type: */
     
    354356
    355357    /* Save adapter type: */
    356     newAdapterData.m_adapterType = (KNetworkAdapterType)m_pAdapterTypeCombo->itemData(m_pAdapterTypeCombo->currentIndex()).toInt();
     358    newAdapterData.m_adapterType = m_pAdapterTypeCombo->currentData().value<KNetworkAdapterType>();
    357359
    358360    /* Save promiscuous mode type: */
     
    675677    /* Adapter type: */
    676678    {
    677         /* Remember the currently selected adapter type: */
    678         int iCurrentAdapter = m_pAdapterTypeCombo->currentIndex();
    679 
    680679        /* Clear the adapter type combo-box: */
    681680        m_pAdapterTypeCombo->clear();
    682681
     682        /* Load currently supported network adapter types: */
     683        CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     684        QVector<KNetworkAdapterType> supportedTypes = comProperties.GetSupportedNetworkAdapterTypes();
     685        /* Take currently requested type into account if it's sane: */
     686        if (!supportedTypes.contains(m_enmAdapterType) && m_enmAdapterType != KNetworkAdapterType_Null)
     687            supportedTypes.prepend(m_enmAdapterType);
     688
    683689        /* Populate adapter types: */
    684690        int iAdapterTypeIndex = 0;
    685         m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_Am79C970A));
    686         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_Am79C970A);
    687         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
    688         ++iAdapterTypeIndex;
    689         m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_Am79C973));
    690         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_Am79C973);
    691         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
    692         ++iAdapterTypeIndex;
    693 #ifdef VBOX_WITH_E1000
    694         m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_I82540EM));
    695         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_I82540EM);
    696         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
    697         ++iAdapterTypeIndex;
    698         m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_I82543GC));
    699         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_I82543GC);
    700         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
    701         ++iAdapterTypeIndex;
    702         m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_I82545EM));
    703         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_I82545EM);
    704         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
    705         ++iAdapterTypeIndex;
    706 #endif /* VBOX_WITH_E1000 */
    707 #ifdef VBOX_WITH_VIRTIO
    708         m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_Virtio));
    709         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_Virtio);
    710         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
    711         ++iAdapterTypeIndex;
    712 #endif /* VBOX_WITH_VIRTIO */
    713 
    714         /* Restore the previously selected adapter type: */
    715         m_pAdapterTypeCombo->setCurrentIndex(iCurrentAdapter == -1 ? 0 : iCurrentAdapter);
     691        foreach (const KNetworkAdapterType &enmType, supportedTypes)
     692        {
     693            m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(enmType));
     694            m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, QVariant::fromValue(enmType));
     695            m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
     696            ++iAdapterTypeIndex;
     697        }
     698
     699        /* Choose requested adapter type: */
     700        const int iIndex = m_pAdapterTypeCombo->findData(m_enmAdapterType);
     701        m_pAdapterTypeCombo->setCurrentIndex(iIndex != -1 ? iIndex : 0);
    716702    }
    717703
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