VirtualBox

Changeset 78531 in vbox for trunk/src/VBox


Ignore:
Timestamp:
May 15, 2019 1:13:12 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
130575
Message:

FE/Qt: bugref:6247: VM Settings / Storage page: Extend AbstractControllerType with possibility to redefine bus type; recache it's content in that case.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp

    r78521 r78531  
    386386    AssertMsg (mCtrType != KStorageControllerType_Null, ("Wrong Controller Type {%d}!\n", mCtrType));
    387387
    388     for (int i = 0; i < State_MAX; ++ i)
    389     {
    390         mPixmaps << InvalidPixmap;
     388    updateBusInfo();
     389    updateTypeInfo();
     390    updatePixmaps();
     391}
     392
     393KStorageBus AbstractControllerType::busType() const
     394{
     395    return mBusType;
     396}
     397
     398ControllerBusList AbstractControllerType::busTypes() const
     399{
     400    return m_buses;
     401}
     402
     403KStorageControllerType AbstractControllerType::ctrType() const
     404{
     405    return mCtrType;
     406}
     407
     408ControllerTypeList AbstractControllerType::ctrTypes() const
     409{
     410    return m_types;
     411}
     412
     413PixmapType AbstractControllerType::pixmap(ItemState aState) const
     414{
     415    return m_pixmaps.at(aState);
     416}
     417
     418void AbstractControllerType::setCtrBusType(KStorageBus enmCtrBusType)
     419{
     420    mBusType = enmCtrBusType;
     421
     422    updateBusInfo();
     423    updateTypeInfo();
     424    updatePixmaps();
     425}
     426
     427void AbstractControllerType::setCtrType (KStorageControllerType aCtrType)
     428{
     429    mCtrType = aCtrType;
     430}
     431
     432DeviceTypeList AbstractControllerType::deviceTypeList() const
     433{
     434    return vboxGlobal().virtualBox().GetSystemProperties().GetDeviceTypesForStorageBus (mBusType).toList();
     435}
     436
     437void AbstractControllerType::updateBusInfo()
     438{
     439    m_buses.clear();
     440
     441    switch (mBusType)
     442    {
     443        case KStorageBus_IDE:
     444        case KStorageBus_SATA:
     445        case KStorageBus_SCSI:
     446        case KStorageBus_SAS:
     447        case KStorageBus_USB:
     448        case KStorageBus_PCIe:
     449        case KStorageBus_VirtioSCSI:
     450        {
     451            m_buses << KStorageBus_IDE << KStorageBus_SATA << KStorageBus_SCSI << KStorageBus_SAS
     452                    << KStorageBus_USB << KStorageBus_PCIe << KStorageBus_VirtioSCSI;
     453            m_buses.removeAll(mBusType);
     454        }
     455        RT_FALL_THRU();
     456        default:
     457        {
     458            m_buses.prepend(mBusType);
     459            break;
     460        }
     461    }
     462}
     463
     464void AbstractControllerType::updateTypeInfo()
     465{
     466    m_types.clear();
     467
     468    KStorageControllerType enmFirstType = KStorageControllerType_Null;
     469    switch (mBusType)
     470    {
     471        case KStorageBus_IDE:        enmFirstType = KStorageControllerType_PIIX3; break;
     472        case KStorageBus_SATA:       enmFirstType = KStorageControllerType_IntelAhci; break;
     473        case KStorageBus_SCSI:       enmFirstType = KStorageControllerType_LsiLogic; break;
     474        case KStorageBus_Floppy:     enmFirstType = KStorageControllerType_I82078; break;
     475        case KStorageBus_SAS:        enmFirstType = KStorageControllerType_LsiLogicSas; break;
     476        case KStorageBus_USB:        enmFirstType = KStorageControllerType_USB; break;
     477        case KStorageBus_PCIe:       enmFirstType = KStorageControllerType_NVMe; break;
     478        case KStorageBus_VirtioSCSI: enmFirstType = KStorageControllerType_VirtioSCSI; break;
     479        default:                     break;
     480    }
     481    AssertMsg(enmFirstType != KStorageControllerType_Null, ("Invalid item type!\n"));
     482
     483    uint uTypeAmount = 0;
     484    switch (mBusType)
     485    {
     486        case KStorageBus_IDE:        uTypeAmount = 3; break;
     487        case KStorageBus_SATA:       uTypeAmount = 1; break;
     488        case KStorageBus_SCSI:       uTypeAmount = 2; break;
     489        case KStorageBus_Floppy:     uTypeAmount = 1; break;
     490        case KStorageBus_SAS:        uTypeAmount = 1; break;
     491        case KStorageBus_USB:        uTypeAmount = 1; break;
     492        case KStorageBus_PCIe:       uTypeAmount = 1; break;
     493        case KStorageBus_VirtioSCSI: uTypeAmount = 1; break;
     494        default:                     break;
     495    }
     496    AssertMsg(uTypeAmount != 0, ("Invalid item type count!\n"));
     497
     498    for (uint i = enmFirstType; i < enmFirstType + uTypeAmount; ++i)
     499        m_types << static_cast<KStorageControllerType>(i);
     500}
     501
     502void AbstractControllerType::updatePixmaps()
     503{
     504    m_pixmaps.clear();
     505
     506    for (int i = 0; i < State_MAX; ++i)
     507    {
     508        m_pixmaps << InvalidPixmap;
    391509        switch (mBusType)
    392510        {
    393             case KStorageBus_IDE:
    394                 mPixmaps [i] = (PixmapType)(IDEControllerNormal + i);
    395                 break;
    396             case KStorageBus_SATA:
    397                 mPixmaps [i] = (PixmapType)(SATAControllerNormal + i);
    398                 break;
    399             case KStorageBus_SCSI:
    400                 mPixmaps [i] = (PixmapType)(SCSIControllerNormal + i);
    401                 break;
    402             case KStorageBus_Floppy:
    403                 mPixmaps [i] = (PixmapType)(FloppyControllerNormal + i);
    404                 break;
    405             case KStorageBus_SAS:
    406                 mPixmaps [i] = (PixmapType)(SASControllerNormal + i);
    407                 break;
    408             case KStorageBus_USB:
    409                 mPixmaps [i] = (PixmapType)(USBControllerNormal + i);
    410                 break;
    411             case KStorageBus_PCIe:
    412                 mPixmaps [i] = (PixmapType)(NVMeControllerNormal + i);
    413                 break;
    414             case KStorageBus_VirtioSCSI:
    415                 mPixmaps [i] = (PixmapType)(VirtioSCSIControllerNormal + i);
    416                 break;
    417             default:
    418                 break;
    419         }
    420         AssertMsg (mPixmaps [i] != InvalidPixmap, ("Item state pixmap was not set!\n"));
    421     }
    422 }
    423 
    424 KStorageBus AbstractControllerType::busType() const
    425 {
    426     return mBusType;
    427 }
    428 
    429 KStorageControllerType AbstractControllerType::ctrType() const
    430 {
    431     return mCtrType;
    432 }
    433 
    434 ControllerTypeList AbstractControllerType::ctrTypes() const
    435 {
    436     ControllerTypeList result;
    437     for (uint i = firstType(); i < firstType() + typeAmount(); ++i)
    438         result << (KStorageControllerType) i;
    439     return result;
    440 }
    441 
    442 PixmapType AbstractControllerType::pixmap(ItemState aState) const
    443 {
    444     return mPixmaps [aState];
    445 }
    446 
    447 void AbstractControllerType::setCtrType (KStorageControllerType aCtrType)
    448 {
    449     mCtrType = aCtrType;
    450 }
    451 
    452 DeviceTypeList AbstractControllerType::deviceTypeList() const
    453 {
    454     return vboxGlobal().virtualBox().GetSystemProperties().GetDeviceTypesForStorageBus (mBusType).toList();
    455 }
    456 
    457 KStorageControllerType AbstractControllerType::firstType() const
    458 {
    459     switch (mBusType)
    460     {
    461         case KStorageBus_IDE:        return KStorageControllerType_PIIX3;
    462         case KStorageBus_SATA:       return KStorageControllerType_IntelAhci;
    463         case KStorageBus_SCSI:       return KStorageControllerType_LsiLogic;
    464         case KStorageBus_Floppy:     return KStorageControllerType_I82078;
    465         case KStorageBus_SAS:        return KStorageControllerType_LsiLogicSas;
    466         case KStorageBus_USB:        return KStorageControllerType_USB;
    467         case KStorageBus_PCIe:       return KStorageControllerType_NVMe;
    468         case KStorageBus_VirtioSCSI: return KStorageControllerType_VirtioSCSI;
    469         default:                     AssertFailedReturn(KStorageControllerType_Null);
    470     }
    471 }
    472 
    473 uint AbstractControllerType::typeAmount() const
    474 {
    475     switch (mBusType)
    476     {
    477         case KStorageBus_IDE:        return 3;
    478         case KStorageBus_SATA:       return 1;
    479         case KStorageBus_SCSI:       return 2;
    480         case KStorageBus_Floppy:     return 1;
    481         case KStorageBus_SAS:        return 1;
    482         case KStorageBus_USB:        return 1;
    483         case KStorageBus_PCIe:       return 1;
    484         case KStorageBus_VirtioSCSI: return 1;
    485         default:                     AssertFailedReturn(0);
     511            case KStorageBus_IDE:        m_pixmaps[i] = static_cast<PixmapType>(IDEControllerNormal + i); break;
     512            case KStorageBus_SATA:       m_pixmaps[i] = static_cast<PixmapType>(SATAControllerNormal + i); break;
     513            case KStorageBus_SCSI:       m_pixmaps[i] = static_cast<PixmapType>(SCSIControllerNormal + i); break;
     514            case KStorageBus_Floppy:     m_pixmaps[i] = static_cast<PixmapType>(FloppyControllerNormal + i); break;
     515            case KStorageBus_SAS:        m_pixmaps[i] = static_cast<PixmapType>(SASControllerNormal + i); break;
     516            case KStorageBus_USB:        m_pixmaps[i] = static_cast<PixmapType>(USBControllerNormal + i); break;
     517            case KStorageBus_PCIe:       m_pixmaps[i] = static_cast<PixmapType>(NVMeControllerNormal + i); break;
     518            case KStorageBus_VirtioSCSI: m_pixmaps[i] = static_cast<PixmapType>(VirtioSCSIControllerNormal + i); break;
     519            default: break;
     520        }
     521        AssertMsg(m_pixmaps[i] != InvalidPixmap, ("Invalid item state pixmap!\n"));
    486522    }
    487523}
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h

    r78520 r78531  
    5151typedef QList <StorageSlot> SlotsList;
    5252typedef QList <KDeviceType> DeviceTypeList;
     53typedef QList <KStorageBus> ControllerBusList;
    5354typedef QList <KStorageControllerType> ControllerTypeList;
    5455Q_DECLARE_METATYPE (SlotsList);
    5556Q_DECLARE_METATYPE (DeviceTypeList);
     57Q_DECLARE_METATYPE (ControllerBusList);
    5658Q_DECLARE_METATYPE (ControllerTypeList);
    5759
     
    155157
    156158    KStorageBus busType() const;
     159    ControllerBusList busTypes() const;
    157160    KStorageControllerType ctrType() const;
    158161    ControllerTypeList ctrTypes() const;
    159162    PixmapType pixmap(ItemState aState) const;
    160163
     164    void setCtrBusType(KStorageBus enmCtrBusType);
    161165    void setCtrType (KStorageControllerType aCtrType);
    162166
     
    165169private:
    166170
    167     KStorageControllerType firstType() const;
    168     uint typeAmount() const;
     171    void updateBusInfo();
     172    void updateTypeInfo();
     173    void updatePixmaps();
    169174
    170175    KStorageBus mBusType;
    171176    KStorageControllerType mCtrType;
    172     QList<PixmapType> mPixmaps;
     177
     178    ControllerBusList   m_buses;
     179    ControllerTypeList  m_types;
     180    QList<PixmapType>   m_pixmaps;
    173181};
    174182
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