VirtualBox

Changeset 81055 in vbox


Ignore:
Timestamp:
Sep 27, 2019 1:10:38 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133658
Message:

FE/Qt: bugref:9582: VM settings / Storage page: Move private classes to source file, cleanup includes.

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

    r81050 r81055  
    1717
    1818/* Qt includes: */
     19#include <QCommonStyle>
    1920#include <QDrag>
    2021#include <QDragMoveEvent>
    21 #include <QHeaderView>
    22 #include <QItemEditorFactory>
     22#include <QItemDelegate>
    2323#include <QMenu>
    2424#include <QMimeData>
    2525#include <QMouseEvent>
    26 #include <QScrollBar>
    27 #include <QStylePainter>
    28 #include <QTimer>
    29 #include <QCommonStyle>
    30 #include <QMetaProperty>
     26#include <QPainter>
    3127
    3228/* GUI includes: */
    33 #include "QIFileDialog.h"
    34 #include "QIMessageBox.h"
    35 #include "QIWidgetValidator.h"
     29#include "QITreeView.h"
    3630#include "UICommon.h"
     31#include "UIConverter.h"
     32#include "UIErrorString.h"
     33#include "UIExtraDataManager.h"
    3734#include "UIIconPool.h"
    38 #include "UIWizardNewVD.h"
    39 #include "UIErrorString.h"
    4035#include "UIMessageCenter.h"
    4136#include "UIMachineSettingsStorage.h"
     37#include "UIMedium.h"
    4238#include "UIMediumSelector.h"
    43 #include "UIConverter.h"
    44 #include "UIMedium.h"
    45 #include "UIExtraDataManager.h"
    46 #include "UIModalWindowManager.h"
    4739
    4840/* COM includes: */
     41#include "CMediumAttachment.h"
    4942#include "CStorageController.h"
    50 #include "CMediumAttachment.h"
    51 
    52 
    53 QString compressText (const QString &aText)
    54 {
    55     return QString ("<nobr><compact elipsis=\"end\">%1</compact></nobr>").arg (aText);
    56 }
     43
     44/* Defines: */
     45typedef QList <StorageSlot> SlotsList;
     46typedef QList <KDeviceType> DeviceTypeList;
     47typedef QList <KStorageBus> ControllerBusList;
     48typedef QList <KStorageControllerType> ControllerTypeList;
     49Q_DECLARE_METATYPE (SlotsList);
     50Q_DECLARE_METATYPE (DeviceTypeList);
     51Q_DECLARE_METATYPE (ControllerBusList);
     52Q_DECLARE_METATYPE (ControllerTypeList);
     53
     54
     55/** Known item states. */
     56enum ItemState
     57{
     58    State_DefaultItem,
     59    State_CollapsedItem,
     60    State_ExpandedItem,
     61    State_MAX
     62};
     63
     64
     65/** Known pixmap types. */
     66enum PixmapType
     67{
     68    InvalidPixmap,
     69
     70    ControllerAddEn,
     71    ControllerAddDis,
     72    ControllerDelEn,
     73    ControllerDelDis,
     74
     75    AttachmentAddEn,
     76    AttachmentAddDis,
     77    AttachmentDelEn,
     78    AttachmentDelDis,
     79
     80    IDEControllerNormal,
     81    IDEControllerExpand,
     82    IDEControllerCollapse,
     83    SATAControllerNormal,
     84    SATAControllerExpand,
     85    SATAControllerCollapse,
     86    SCSIControllerNormal,
     87    SCSIControllerExpand,
     88    SCSIControllerCollapse,
     89    SASControllerNormal,
     90    SASControllerExpand,
     91    SASControllerCollapse,
     92    USBControllerNormal,
     93    USBControllerExpand,
     94    USBControllerCollapse,
     95    NVMeControllerNormal,
     96    NVMeControllerExpand,
     97    NVMeControllerCollapse,
     98    VirtioSCSIControllerNormal,
     99    VirtioSCSIControllerExpand,
     100    VirtioSCSIControllerCollapse,
     101    FloppyControllerNormal,
     102    FloppyControllerExpand,
     103    FloppyControllerCollapse,
     104
     105    IDEControllerAddEn,
     106    IDEControllerAddDis,
     107    SATAControllerAddEn,
     108    SATAControllerAddDis,
     109    SCSIControllerAddEn,
     110    SCSIControllerAddDis,
     111    SASControllerAddEn,
     112    SASControllerAddDis,
     113    USBControllerAddEn,
     114    USBControllerAddDis,
     115    NVMeControllerAddEn,
     116    NVMeControllerAddDis,
     117    VirtioSCSIControllerAddEn,
     118    VirtioSCSIControllerAddDis,
     119    FloppyControllerAddEn,
     120    FloppyControllerAddDis,
     121
     122    HDAttachmentNormal,
     123    CDAttachmentNormal,
     124    FDAttachmentNormal,
     125
     126    HDAttachmentAddEn,
     127    HDAttachmentAddDis,
     128    CDAttachmentAddEn,
     129    CDAttachmentAddDis,
     130    FDAttachmentAddEn,
     131    FDAttachmentAddDis,
     132
     133    ChooseExistingEn,
     134    ChooseExistingDis,
     135    HDNewEn,
     136    HDNewDis,
     137    CDUnmountEnabled,
     138    CDUnmountDisabled,
     139    FDUnmountEnabled,
     140    FDUnmountDisabled,
     141
     142    MaxIndex
     143};
    57144
    58145
     
    199286UIIconPoolStorageSettings* iconPool() { return UIIconPoolStorageSettings::instance(); }
    200287
     288
     289/* Abstract Item */
     290class AbstractItem : public QITreeViewItem
     291{
     292    Q_OBJECT;
     293
     294public:
     295
     296    enum ItemType
     297    {
     298        Type_InvalidItem    = 0,
     299        Type_RootItem       = 1,
     300        Type_ControllerItem = 2,
     301        Type_AttachmentItem = 3
     302    };
     303
     304    AbstractItem(QITreeView *pParent);
     305    AbstractItem(AbstractItem *pParentItem);
     306    virtual ~AbstractItem();
     307
     308    AbstractItem* parent() const;
     309    QUuid id() const;
     310    QUuid machineId() const;
     311
     312    void setMachineId (const QUuid &uMchineId);
     313
     314    virtual ItemType rtti() const = 0;
     315    virtual AbstractItem* childItem (int aIndex) const = 0;
     316    virtual AbstractItem* childItemById (const QUuid &uId) const = 0;
     317    virtual int posOfChild (AbstractItem *aItem) const = 0;
     318    virtual QString tip() const = 0;
     319    virtual QPixmap pixmap (ItemState aState = State_DefaultItem) = 0;
     320
     321protected:
     322
     323    virtual void addChild (AbstractItem *aItem) = 0;
     324    virtual void delChild (AbstractItem *aItem) = 0;
     325
     326    AbstractItem *m_pParentItem;
     327    QUuid         mId;
     328    QUuid         mMachineId;
     329};
     330Q_DECLARE_METATYPE (AbstractItem::ItemType);
     331
     332
     333/* Root Item */
     334class RootItem : public AbstractItem
     335{
     336    Q_OBJECT;
     337
     338public:
     339
     340    RootItem(QITreeView *pParent);
     341   ~RootItem();
     342
     343    ULONG childCount (KStorageBus aBus) const;
     344
     345private:
     346
     347    ItemType rtti() const;
     348    AbstractItem* childItem (int aIndex) const;
     349    AbstractItem* childItemById (const QUuid &uId) const;
     350    int posOfChild (AbstractItem *aItem) const;
     351    int childCount() const;
     352    QString text() const;
     353    QString tip() const;
     354    QPixmap pixmap (ItemState aState);
     355    void addChild (AbstractItem *aItem);
     356    void delChild (AbstractItem *aItem);
     357
     358    QList <AbstractItem*> mControllers;
     359};
     360
     361
     362/* Controller Item */
     363class ControllerItem : public AbstractItem
     364{
     365    Q_OBJECT;
     366
     367public:
     368
     369    ControllerItem (AbstractItem *aParent, const QString &aName, KStorageBus aBusType,
     370                    KStorageControllerType aControllerType);
     371   ~ControllerItem();
     372
     373    KStorageBus ctrBusType() const;
     374    ControllerBusList ctrBusTypes() const;
     375    QString oldCtrName() const;
     376    QString ctrName() const;
     377    KStorageControllerType ctrType() const;
     378    ControllerTypeList ctrTypes() const;
     379    uint portCount();
     380    uint maxPortCount();
     381    bool ctrUseIoCache() const;
     382
     383    void setCtrBusType(KStorageBus enmCtrBusType);
     384    void setCtrName (const QString &aCtrName);
     385    void setCtrType (KStorageControllerType aCtrType);
     386    void setPortCount (uint aPortCount);
     387    void setCtrUseIoCache (bool aUseIoCache);
     388
     389    SlotsList ctrAllSlots() const;
     390    SlotsList ctrUsedSlots() const;
     391    DeviceTypeList ctrDeviceTypeList() const;
     392
     393    QList<QUuid> attachmentIDs(KDeviceType enmType = KDeviceType_Null) const;
     394
     395    QList<AbstractItem*> attachments() const { return mAttachments; }
     396    void setAttachments(const QList<AbstractItem*> &attachments) { mAttachments = attachments; }
     397
     398private:
     399
     400    ItemType rtti() const;
     401    AbstractItem* childItem (int aIndex) const;
     402    AbstractItem* childItemById (const QUuid &uId) const;
     403    int posOfChild (AbstractItem *aItem) const;
     404    int childCount() const;
     405    QString text() const;
     406    QString tip() const;
     407    QPixmap pixmap (ItemState aState);
     408    void addChild (AbstractItem *aItem);
     409    void delChild (AbstractItem *aItem);
     410
     411    void updateBusInfo();
     412    void updateTypeInfo();
     413    void updatePixmaps();
     414
     415    KStorageBus mBusType;
     416    KStorageControllerType mCtrType;
     417
     418    ControllerBusList m_buses;
     419    ControllerTypeList m_types;
     420    QList<PixmapType> m_pixmaps;
     421
     422    QString mOldCtrName;
     423    QString mCtrName;
     424    uint mPortCount;
     425    bool mUseIoCache;
     426    QList <AbstractItem*> mAttachments;
     427};
     428
     429
     430/* Attachment Item */
     431class AttachmentItem : public AbstractItem
     432{
     433    Q_OBJECT;
     434
     435public:
     436
     437    AttachmentItem (AbstractItem *aParent, KDeviceType aDeviceType);
     438
     439    StorageSlot attSlot() const;
     440    SlotsList attSlots() const;
     441    KDeviceType attDeviceType() const;
     442    DeviceTypeList attDeviceTypes() const;
     443    QUuid attMediumId() const;
     444    bool attIsHostDrive() const;
     445    bool attIsPassthrough() const;
     446    bool attIsTempEject() const;
     447    bool attIsNonRotational() const;
     448    bool attIsHotPluggable() const;
     449
     450    void setAttSlot (const StorageSlot &aAttSlot);
     451    void setAttDevice (KDeviceType aAttDeviceType);
     452    void setAttMediumId (const QUuid &uAttMediumId);
     453    void setAttIsPassthrough (bool aPassthrough);
     454    void setAttIsTempEject (bool aTempEject);
     455    void setAttIsNonRotational (bool aNonRotational);
     456    void setAttIsHotPluggable(bool fIsHotPluggable);
     457
     458    QString attSize() const;
     459    QString attLogicalSize() const;
     460    QString attLocation() const;
     461    QString attFormat() const;
     462    QString attDetails() const;
     463    QString attUsage() const;
     464    QString attEncryptionPasswordID() const;
     465
     466private:
     467
     468    void cache();
     469
     470    ItemType rtti() const;
     471    AbstractItem* childItem (int aIndex) const;
     472    AbstractItem* childItemById (const QUuid &uId) const;
     473    int posOfChild (AbstractItem *aItem) const;
     474    int childCount() const;
     475    QString text() const;
     476    QString tip() const;
     477    QPixmap pixmap (ItemState aState);
     478    void addChild (AbstractItem *aItem);
     479    void delChild (AbstractItem *aItem);
     480
     481    KDeviceType mAttDeviceType;
     482
     483    StorageSlot mAttSlot;
     484    QUuid mAttMediumId;
     485    bool mAttIsHostDrive;
     486    bool mAttIsPassthrough;
     487    bool mAttIsTempEject;
     488    bool mAttIsNonRotational;
     489    bool m_fIsHotPluggable;
     490
     491    QString mAttName;
     492    QString mAttTip;
     493    QPixmap mAttPixmap;
     494
     495    QString mAttSize;
     496    QString mAttLogicalSize;
     497    QString mAttLocation;
     498    QString mAttFormat;
     499    QString mAttDetails;
     500    QString mAttUsage;
     501    QString m_strAttEncryptionPasswordID;
     502};
     503
     504
     505/* Storage Model */
     506class StorageModel : public QAbstractItemModel
     507{
     508    Q_OBJECT;
     509
     510public:
     511
     512    enum DataRole
     513    {
     514        R_ItemId = Qt::UserRole + 1,
     515        R_ItemPixmap,
     516        R_ItemPixmapRect,
     517        R_ItemName,
     518        R_ItemNamePoint,
     519        R_ItemType,
     520        R_IsController,
     521        R_IsAttachment,
     522
     523        R_ToolTipType,
     524        R_IsMoreIDEControllersPossible,
     525        R_IsMoreSATAControllersPossible,
     526        R_IsMoreSCSIControllersPossible,
     527        R_IsMoreFloppyControllersPossible,
     528        R_IsMoreSASControllersPossible,
     529        R_IsMoreUSBControllersPossible,
     530        R_IsMoreNVMeControllersPossible,
     531        R_IsMoreVirtioSCSIControllersPossible,
     532        R_IsMoreAttachmentsPossible,
     533
     534        R_CtrOldName,
     535        R_CtrName,
     536        R_CtrType,
     537        R_CtrTypes,
     538        R_CtrDevices,
     539        R_CtrBusType,
     540        R_CtrBusTypes,
     541        R_CtrPortCount,
     542        R_CtrMaxPortCount,
     543        R_CtrIoCache,
     544
     545        R_AttSlot,
     546        R_AttSlots,
     547        R_AttDevice,
     548        R_AttMediumId,
     549        R_AttIsShowDiffs,
     550        R_AttIsHostDrive,
     551        R_AttIsPassthrough,
     552        R_AttIsTempEject,
     553        R_AttIsNonRotational,
     554        R_AttIsHotPluggable,
     555        R_AttSize,
     556        R_AttLogicalSize,
     557        R_AttLocation,
     558        R_AttFormat,
     559        R_AttDetails,
     560        R_AttUsage,
     561        R_AttEncryptionPasswordID,
     562
     563        R_Margin,
     564        R_Spacing,
     565        R_IconSize,
     566
     567        R_HDPixmapEn,
     568        R_CDPixmapEn,
     569        R_FDPixmapEn,
     570
     571        R_HDPixmapAddEn,
     572        R_HDPixmapAddDis,
     573        R_CDPixmapAddEn,
     574        R_CDPixmapAddDis,
     575        R_FDPixmapAddEn,
     576        R_FDPixmapAddDis,
     577        R_HDPixmapRect,
     578        R_CDPixmapRect,
     579        R_FDPixmapRect
     580    };
     581
     582    enum ToolTipType
     583    {
     584        DefaultToolTip  = 0,
     585        ExpanderToolTip = 1,
     586        HDAdderToolTip  = 2,
     587        CDAdderToolTip  = 3,
     588        FDAdderToolTip  = 4
     589    };
     590
     591    StorageModel(QITreeView *pParent);
     592   ~StorageModel();
     593
     594    int rowCount (const QModelIndex &aParent = QModelIndex()) const;
     595    int columnCount (const QModelIndex &aParent = QModelIndex()) const;
     596
     597    QModelIndex root() const;
     598    QModelIndex index (int aRow, int aColumn, const QModelIndex &aParent = QModelIndex()) const;
     599    QModelIndex parent (const QModelIndex &aIndex) const;
     600
     601    QVariant data (const QModelIndex &aIndex, int aRole) const;
     602    bool setData (const QModelIndex &aIndex, const QVariant &aValue, int aRole);
     603
     604    QModelIndex addController (const QString &aCtrName, KStorageBus aBusType, KStorageControllerType aCtrType);
     605    void delController (const QUuid &uCtrId);
     606
     607    QModelIndex addAttachment (const QUuid &uCtrId, KDeviceType aDeviceType, const QUuid &uMediumId);
     608    void delAttachment (const QUuid &uCtrId, const QUuid &uAttId);
     609    /** Moves attachment determined by @a uAttId
     610      * from controller determined by @a uCtrOldId to one determined by @a uCtrNewId. */
     611    void moveAttachment(const QUuid &uAttId, const QUuid &uCtrOldId, const QUuid &uCtrNewId);
     612
     613    void setMachineId (const QUuid &uMachineId);
     614
     615    void sort(int iColumn = 0, Qt::SortOrder order = Qt::AscendingOrder);
     616    QModelIndex attachmentBySlot(QModelIndex controllerIndex, StorageSlot attachmentStorageSlot);
     617
     618    KChipsetType chipsetType() const;
     619    void setChipsetType(KChipsetType type);
     620
     621    /** Defines configuration access level. */
     622    void setConfigurationAccessLevel(ConfigurationAccessLevel newConfigurationAccessLevel);
     623
     624    void clear();
     625
     626    QMap<KStorageBus, int> currentControllerTypes() const;
     627    QMap<KStorageBus, int> maximumControllerTypes() const;
     628
     629private:
     630
     631    Qt::ItemFlags flags (const QModelIndex &aIndex) const;
     632
     633    AbstractItem *mRootItem;
     634
     635    QPixmap mPlusPixmapEn;
     636    QPixmap mPlusPixmapDis;
     637
     638    QPixmap mMinusPixmapEn;
     639    QPixmap mMinusPixmapDis;
     640
     641    ToolTipType mToolTipType;
     642
     643    KChipsetType m_chipsetType;
     644
     645    /** Holds configuration access level. */
     646    ConfigurationAccessLevel m_configurationAccessLevel;
     647};
     648Q_DECLARE_METATYPE (StorageModel::ToolTipType);
     649
     650
     651/* Storage Delegate */
     652class StorageDelegate : public QItemDelegate
     653{
     654    Q_OBJECT;
     655
     656public:
     657
     658    StorageDelegate (QObject *aParent);
     659
     660private:
     661
     662    void paint (QPainter *aPainter, const QStyleOptionViewItem &aOption, const QModelIndex &aIndex) const;
     663};
     664
     665
     666/**
     667 * UI Medium ID Holder.
     668 * Used for compliance with other storage page widgets
     669 * which caching and holding corresponding information.
     670 */
     671class UIMediumIDHolder : public QObject
     672{
     673    Q_OBJECT;
     674
     675public:
     676
     677    UIMediumIDHolder(QWidget *pParent) : QObject(pParent) {}
     678
     679    QUuid id() const { return m_uId; }
     680    void setId(const QUuid &uId) { m_uId = uId; emit sigChanged(); }
     681
     682    UIMediumDeviceType type() const { return m_type; }
     683    void setType(UIMediumDeviceType type) { m_type = type; }
     684
     685    bool isNull() const { return m_uId == UIMedium().id(); }
     686
     687signals:
     688
     689    void sigChanged();
     690
     691private:
     692
     693    QUuid m_uId;
     694    UIMediumDeviceType m_type;
     695};
     696
     697
     698QString compressText (const QString &aText)
     699{
     700    return QString ("<nobr><compact elipsis=\"end\">%1</compact></nobr>").arg (aText);
     701}
     702
     703
     704/*********************************************************************************************************************************
     705*   Class UIIconPoolStorageSettings implementation.                                                                              *
     706*********************************************************************************************************************************/
    201707
    202708/* static */
     
    381887
    382888
    383 /* Abstract Item */
     889/*********************************************************************************************************************************
     890*   Class AbstractItem implementation.                                                                                           *
     891*********************************************************************************************************************************/
     892
    384893AbstractItem::AbstractItem(QITreeView *pParent)
    385894    : QITreeViewItem(pParent)
     
    427936
    428937
    429 /* Root Item */
     938/*********************************************************************************************************************************
     939*   Class RootItem implementation.                                                                                               *
     940*********************************************************************************************************************************/
     941
    430942RootItem::RootItem(QITreeView *pParent)
    431943    : AbstractItem(pParent)
     
    5051017
    5061018
    507 /* Controller Item */
     1019/*********************************************************************************************************************************
     1020*   Class ControllerItem implementation.                                                                                         *
     1021*********************************************************************************************************************************/
     1022
    5081023ControllerItem::ControllerItem (AbstractItem *aParent, const QString &aName,
    5091024                                KStorageBus aBusType, KStorageControllerType aControllerType)
     
    8001315
    8011316
    802 /* Attachment Item */
     1317/*********************************************************************************************************************************
     1318*   Class AttachmentItem implementation.                                                                                         *
     1319*********************************************************************************************************************************/
     1320
    8031321AttachmentItem::AttachmentItem (AbstractItem *aParent, KDeviceType aDeviceType)
    8041322    : AbstractItem (aParent)
     
    10651583
    10661584
    1067 /* Storage model */
     1585/*********************************************************************************************************************************
     1586*   Class StorageModel implementation.                                                                                           *
     1587*********************************************************************************************************************************/
     1588
    10681589StorageModel::StorageModel(QITreeView *pParent)
    10691590    : QAbstractItemModel(pParent)
     
    20292550
    20302551
    2031 /* Storage Delegate */
     2552/*********************************************************************************************************************************
     2553*   Class StorageDelegate implementation.                                                                                        *
     2554*********************************************************************************************************************************/
     2555
    20322556StorageDelegate::StorageDelegate (QObject *aParent)
    20332557    : QItemDelegate (aParent)
     
    21372661
    21382662
    2139 /**
    2140  * UI Medium ID Holder.
    2141  * Used for compliance with other storage page widgets
    2142  * which caching and holding corresponding information.
    2143  */
    2144 class UIMediumIDHolder : public QObject
    2145 {
    2146     Q_OBJECT;
    2147 
    2148 public:
    2149 
    2150     UIMediumIDHolder(QWidget *pParent) : QObject(pParent) {}
    2151 
    2152     QUuid id() const { return m_uId; }
    2153     void setId(const QUuid &uId) { m_uId = uId; emit sigChanged(); }
    2154 
    2155     UIMediumDeviceType type() const { return m_type; }
    2156     void setType(UIMediumDeviceType type) { m_type = type; }
    2157 
    2158     bool isNull() const { return m_uId == UIMedium().id(); }
    2159 
    2160 signals:
    2161 
    2162     void sigChanged();
    2163 
    2164 private:
    2165 
    2166     QUuid m_uId;
    2167     UIMediumDeviceType m_type;
    2168 };
    2169 
     2663/*********************************************************************************************************************************
     2664*   Class UIMachineSettingsStorage implementation.                                                                               *
     2665*********************************************************************************************************************************/
    21702666
    21712667/* static */
     
    46785174}
    46795175
     5176
    46805177# include "UIMachineSettingsStorage.moc"
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h

    r81054 r81055  
    2222#endif
    2323
    24 /* Qt includes: */
    25 #include <QItemDelegate>
    26 #include <QPointer>
    27 
    2824/* GUI includes: */
    29 #include "QITreeView.h"
    30 #include "UIDefs.h"
    3125#include "UIMediumDefs.h"
    3226#include "UISettingsPage.h"
     
    3428
    3529/* Forward declarations: */
    36 class AttachmentItem;
    37 class ControllerItem;
     30class QITreeView;
     31class StorageModel;
    3832class UIMediumIDHolder;
    3933struct UIDataSettingsMachineStorage;
     
    4337typedef UISettingsCachePool<UIDataSettingsMachineStorageController, UISettingsCacheMachineStorageAttachment> UISettingsCacheMachineStorageController;
    4438typedef UISettingsCachePool<UIDataSettingsMachineStorage, UISettingsCacheMachineStorageController> UISettingsCacheMachineStorage;
    45 
    46 /* Internal Types */
    47 typedef QList <StorageSlot> SlotsList;
    48 typedef QList <KDeviceType> DeviceTypeList;
    49 typedef QList <KStorageBus> ControllerBusList;
    50 typedef QList <KStorageControllerType> ControllerTypeList;
    51 Q_DECLARE_METATYPE (SlotsList);
    52 Q_DECLARE_METATYPE (DeviceTypeList);
    53 Q_DECLARE_METATYPE (ControllerBusList);
    54 Q_DECLARE_METATYPE (ControllerTypeList);
    55 
    56 
    57 /** Known item states. */
    58 enum ItemState
    59 {
    60     State_DefaultItem,
    61     State_CollapsedItem,
    62     State_ExpandedItem,
    63     State_MAX
    64 };
    65 
    66 /** Known pixmap types. */
    67 enum PixmapType
    68 {
    69     InvalidPixmap,
    70 
    71     ControllerAddEn,
    72     ControllerAddDis,
    73     ControllerDelEn,
    74     ControllerDelDis,
    75 
    76     AttachmentAddEn,
    77     AttachmentAddDis,
    78     AttachmentDelEn,
    79     AttachmentDelDis,
    80 
    81     IDEControllerNormal,
    82     IDEControllerExpand,
    83     IDEControllerCollapse,
    84     SATAControllerNormal,
    85     SATAControllerExpand,
    86     SATAControllerCollapse,
    87     SCSIControllerNormal,
    88     SCSIControllerExpand,
    89     SCSIControllerCollapse,
    90     SASControllerNormal,
    91     SASControllerExpand,
    92     SASControllerCollapse,
    93     USBControllerNormal,
    94     USBControllerExpand,
    95     USBControllerCollapse,
    96     NVMeControllerNormal,
    97     NVMeControllerExpand,
    98     NVMeControllerCollapse,
    99     VirtioSCSIControllerNormal,
    100     VirtioSCSIControllerExpand,
    101     VirtioSCSIControllerCollapse,
    102     FloppyControllerNormal,
    103     FloppyControllerExpand,
    104     FloppyControllerCollapse,
    105 
    106     IDEControllerAddEn,
    107     IDEControllerAddDis,
    108     SATAControllerAddEn,
    109     SATAControllerAddDis,
    110     SCSIControllerAddEn,
    111     SCSIControllerAddDis,
    112     SASControllerAddEn,
    113     SASControllerAddDis,
    114     USBControllerAddEn,
    115     USBControllerAddDis,
    116     NVMeControllerAddEn,
    117     NVMeControllerAddDis,
    118     VirtioSCSIControllerAddEn,
    119     VirtioSCSIControllerAddDis,
    120     FloppyControllerAddEn,
    121     FloppyControllerAddDis,
    122 
    123     HDAttachmentNormal,
    124     CDAttachmentNormal,
    125     FDAttachmentNormal,
    126 
    127     HDAttachmentAddEn,
    128     HDAttachmentAddDis,
    129     CDAttachmentAddEn,
    130     CDAttachmentAddDis,
    131     FDAttachmentAddEn,
    132     FDAttachmentAddDis,
    133 
    134     ChooseExistingEn,
    135     ChooseExistingDis,
    136     HDNewEn,
    137     HDNewDis,
    138     CDUnmountEnabled,
    139     CDUnmountDisabled,
    140     FDUnmountEnabled,
    141     FDUnmountDisabled,
    142 
    143     MaxIndex
    144 };
    145 
    146 /* Abstract Item */
    147 class SHARED_LIBRARY_STUFF AbstractItem : public QITreeViewItem
    148 {
    149     Q_OBJECT;
    150 
    151 public:
    152 
    153     enum ItemType
    154     {
    155         Type_InvalidItem    = 0,
    156         Type_RootItem       = 1,
    157         Type_ControllerItem = 2,
    158         Type_AttachmentItem = 3
    159     };
    160 
    161     AbstractItem(QITreeView *pParent);
    162     AbstractItem(AbstractItem *pParentItem);
    163     virtual ~AbstractItem();
    164 
    165     AbstractItem* parent() const;
    166     QUuid id() const;
    167     QUuid machineId() const;
    168 
    169     void setMachineId (const QUuid &uMchineId);
    170 
    171     virtual ItemType rtti() const = 0;
    172     virtual AbstractItem* childItem (int aIndex) const = 0;
    173     virtual AbstractItem* childItemById (const QUuid &uId) const = 0;
    174     virtual int posOfChild (AbstractItem *aItem) const = 0;
    175     virtual QString tip() const = 0;
    176     virtual QPixmap pixmap (ItemState aState = State_DefaultItem) = 0;
    177 
    178 protected:
    179 
    180     virtual void addChild (AbstractItem *aItem) = 0;
    181     virtual void delChild (AbstractItem *aItem) = 0;
    182 
    183     AbstractItem *m_pParentItem;
    184     QUuid         mId;
    185     QUuid         mMachineId;
    186 };
    187 Q_DECLARE_METATYPE (AbstractItem::ItemType);
    188 
    189 /* Root Item */
    190 class SHARED_LIBRARY_STUFF RootItem : public AbstractItem
    191 {
    192     Q_OBJECT;
    193 
    194 public:
    195 
    196     RootItem(QITreeView *pParent);
    197    ~RootItem();
    198 
    199     ULONG childCount (KStorageBus aBus) const;
    200 
    201 private:
    202 
    203     ItemType rtti() const;
    204     AbstractItem* childItem (int aIndex) const;
    205     AbstractItem* childItemById (const QUuid &uId) const;
    206     int posOfChild (AbstractItem *aItem) const;
    207     int childCount() const;
    208     QString text() const;
    209     QString tip() const;
    210     QPixmap pixmap (ItemState aState);
    211     void addChild (AbstractItem *aItem);
    212     void delChild (AbstractItem *aItem);
    213 
    214     QList <AbstractItem*> mControllers;
    215 };
    216 
    217 /* Controller Item */
    218 class SHARED_LIBRARY_STUFF ControllerItem : public AbstractItem
    219 {
    220     Q_OBJECT;
    221 
    222 public:
    223 
    224     ControllerItem (AbstractItem *aParent, const QString &aName, KStorageBus aBusType,
    225                     KStorageControllerType aControllerType);
    226    ~ControllerItem();
    227 
    228     KStorageBus ctrBusType() const;
    229     ControllerBusList ctrBusTypes() const;
    230     QString oldCtrName() const;
    231     QString ctrName() const;
    232     KStorageControllerType ctrType() const;
    233     ControllerTypeList ctrTypes() const;
    234     uint portCount();
    235     uint maxPortCount();
    236     bool ctrUseIoCache() const;
    237 
    238     void setCtrBusType(KStorageBus enmCtrBusType);
    239     void setCtrName (const QString &aCtrName);
    240     void setCtrType (KStorageControllerType aCtrType);
    241     void setPortCount (uint aPortCount);
    242     void setCtrUseIoCache (bool aUseIoCache);
    243 
    244     SlotsList ctrAllSlots() const;
    245     SlotsList ctrUsedSlots() const;
    246     DeviceTypeList ctrDeviceTypeList() const;
    247 
    248     QList<QUuid> attachmentIDs(KDeviceType enmType = KDeviceType_Null) const;
    249 
    250     QList<AbstractItem*> attachments() const { return mAttachments; }
    251     void setAttachments(const QList<AbstractItem*> &attachments) { mAttachments = attachments; }
    252 
    253 private:
    254 
    255     ItemType rtti() const;
    256     AbstractItem* childItem (int aIndex) const;
    257     AbstractItem* childItemById (const QUuid &uId) const;
    258     int posOfChild (AbstractItem *aItem) const;
    259     int childCount() const;
    260     QString text() const;
    261     QString tip() const;
    262     QPixmap pixmap (ItemState aState);
    263     void addChild (AbstractItem *aItem);
    264     void delChild (AbstractItem *aItem);
    265 
    266     void updateBusInfo();
    267     void updateTypeInfo();
    268     void updatePixmaps();
    269 
    270     KStorageBus mBusType;
    271     KStorageControllerType mCtrType;
    272 
    273     ControllerBusList m_buses;
    274     ControllerTypeList m_types;
    275     QList<PixmapType> m_pixmaps;
    276 
    277     QString mOldCtrName;
    278     QString mCtrName;
    279     uint mPortCount;
    280     bool mUseIoCache;
    281     QList <AbstractItem*> mAttachments;
    282 };
    283 
    284 /* Attachment Item */
    285 class SHARED_LIBRARY_STUFF AttachmentItem : public AbstractItem
    286 {
    287     Q_OBJECT;
    288 
    289 public:
    290 
    291     AttachmentItem (AbstractItem *aParent, KDeviceType aDeviceType);
    292 
    293     StorageSlot attSlot() const;
    294     SlotsList attSlots() const;
    295     KDeviceType attDeviceType() const;
    296     DeviceTypeList attDeviceTypes() const;
    297     QUuid attMediumId() const;
    298     bool attIsHostDrive() const;
    299     bool attIsPassthrough() const;
    300     bool attIsTempEject() const;
    301     bool attIsNonRotational() const;
    302     bool attIsHotPluggable() const;
    303 
    304     void setAttSlot (const StorageSlot &aAttSlot);
    305     void setAttDevice (KDeviceType aAttDeviceType);
    306     void setAttMediumId (const QUuid &uAttMediumId);
    307     void setAttIsPassthrough (bool aPassthrough);
    308     void setAttIsTempEject (bool aTempEject);
    309     void setAttIsNonRotational (bool aNonRotational);
    310     void setAttIsHotPluggable(bool fIsHotPluggable);
    311 
    312     QString attSize() const;
    313     QString attLogicalSize() const;
    314     QString attLocation() const;
    315     QString attFormat() const;
    316     QString attDetails() const;
    317     QString attUsage() const;
    318     QString attEncryptionPasswordID() const;
    319 
    320 private:
    321 
    322     void cache();
    323 
    324     ItemType rtti() const;
    325     AbstractItem* childItem (int aIndex) const;
    326     AbstractItem* childItemById (const QUuid &uId) const;
    327     int posOfChild (AbstractItem *aItem) const;
    328     int childCount() const;
    329     QString text() const;
    330     QString tip() const;
    331     QPixmap pixmap (ItemState aState);
    332     void addChild (AbstractItem *aItem);
    333     void delChild (AbstractItem *aItem);
    334 
    335     KDeviceType mAttDeviceType;
    336 
    337     StorageSlot mAttSlot;
    338     QUuid mAttMediumId;
    339     bool mAttIsHostDrive;
    340     bool mAttIsPassthrough;
    341     bool mAttIsTempEject;
    342     bool mAttIsNonRotational;
    343     bool m_fIsHotPluggable;
    344 
    345     QString mAttName;
    346     QString mAttTip;
    347     QPixmap mAttPixmap;
    348 
    349     QString mAttSize;
    350     QString mAttLogicalSize;
    351     QString mAttLocation;
    352     QString mAttFormat;
    353     QString mAttDetails;
    354     QString mAttUsage;
    355     QString m_strAttEncryptionPasswordID;
    356 };
    357 
    358 /* Storage Model */
    359 class SHARED_LIBRARY_STUFF StorageModel : public QAbstractItemModel
    360 {
    361     Q_OBJECT;
    362 
    363 public:
    364 
    365     enum DataRole
    366     {
    367         R_ItemId = Qt::UserRole + 1,
    368         R_ItemPixmap,
    369         R_ItemPixmapRect,
    370         R_ItemName,
    371         R_ItemNamePoint,
    372         R_ItemType,
    373         R_IsController,
    374         R_IsAttachment,
    375 
    376         R_ToolTipType,
    377         R_IsMoreIDEControllersPossible,
    378         R_IsMoreSATAControllersPossible,
    379         R_IsMoreSCSIControllersPossible,
    380         R_IsMoreFloppyControllersPossible,
    381         R_IsMoreSASControllersPossible,
    382         R_IsMoreUSBControllersPossible,
    383         R_IsMoreNVMeControllersPossible,
    384         R_IsMoreVirtioSCSIControllersPossible,
    385         R_IsMoreAttachmentsPossible,
    386 
    387         R_CtrOldName,
    388         R_CtrName,
    389         R_CtrType,
    390         R_CtrTypes,
    391         R_CtrDevices,
    392         R_CtrBusType,
    393         R_CtrBusTypes,
    394         R_CtrPortCount,
    395         R_CtrMaxPortCount,
    396         R_CtrIoCache,
    397 
    398         R_AttSlot,
    399         R_AttSlots,
    400         R_AttDevice,
    401         R_AttMediumId,
    402         R_AttIsShowDiffs,
    403         R_AttIsHostDrive,
    404         R_AttIsPassthrough,
    405         R_AttIsTempEject,
    406         R_AttIsNonRotational,
    407         R_AttIsHotPluggable,
    408         R_AttSize,
    409         R_AttLogicalSize,
    410         R_AttLocation,
    411         R_AttFormat,
    412         R_AttDetails,
    413         R_AttUsage,
    414         R_AttEncryptionPasswordID,
    415 
    416         R_Margin,
    417         R_Spacing,
    418         R_IconSize,
    419 
    420         R_HDPixmapEn,
    421         R_CDPixmapEn,
    422         R_FDPixmapEn,
    423 
    424         R_HDPixmapAddEn,
    425         R_HDPixmapAddDis,
    426         R_CDPixmapAddEn,
    427         R_CDPixmapAddDis,
    428         R_FDPixmapAddEn,
    429         R_FDPixmapAddDis,
    430         R_HDPixmapRect,
    431         R_CDPixmapRect,
    432         R_FDPixmapRect
    433     };
    434 
    435     enum ToolTipType
    436     {
    437         DefaultToolTip  = 0,
    438         ExpanderToolTip = 1,
    439         HDAdderToolTip  = 2,
    440         CDAdderToolTip  = 3,
    441         FDAdderToolTip  = 4
    442     };
    443 
    444     StorageModel(QITreeView *pParent);
    445    ~StorageModel();
    446 
    447     int rowCount (const QModelIndex &aParent = QModelIndex()) const;
    448     int columnCount (const QModelIndex &aParent = QModelIndex()) const;
    449 
    450     QModelIndex root() const;
    451     QModelIndex index (int aRow, int aColumn, const QModelIndex &aParent = QModelIndex()) const;
    452     QModelIndex parent (const QModelIndex &aIndex) const;
    453 
    454     QVariant data (const QModelIndex &aIndex, int aRole) const;
    455     bool setData (const QModelIndex &aIndex, const QVariant &aValue, int aRole);
    456 
    457     QModelIndex addController (const QString &aCtrName, KStorageBus aBusType, KStorageControllerType aCtrType);
    458     void delController (const QUuid &uCtrId);
    459 
    460     QModelIndex addAttachment (const QUuid &uCtrId, KDeviceType aDeviceType, const QUuid &uMediumId);
    461     void delAttachment (const QUuid &uCtrId, const QUuid &uAttId);
    462     /** Moves attachment determined by @a uAttId
    463       * from controller determined by @a uCtrOldId to one determined by @a uCtrNewId. */
    464     void moveAttachment(const QUuid &uAttId, const QUuid &uCtrOldId, const QUuid &uCtrNewId);
    465 
    466     void setMachineId (const QUuid &uMachineId);
    467 
    468     void sort(int iColumn = 0, Qt::SortOrder order = Qt::AscendingOrder);
    469     QModelIndex attachmentBySlot(QModelIndex controllerIndex, StorageSlot attachmentStorageSlot);
    470 
    471     KChipsetType chipsetType() const;
    472     void setChipsetType(KChipsetType type);
    473 
    474     /** Defines configuration access level. */
    475     void setConfigurationAccessLevel(ConfigurationAccessLevel newConfigurationAccessLevel);
    476 
    477     void clear();
    478 
    479     QMap<KStorageBus, int> currentControllerTypes() const;
    480     QMap<KStorageBus, int> maximumControllerTypes() const;
    481 
    482 private:
    483 
    484     Qt::ItemFlags flags (const QModelIndex &aIndex) const;
    485 
    486     AbstractItem *mRootItem;
    487 
    488     QPixmap mPlusPixmapEn;
    489     QPixmap mPlusPixmapDis;
    490 
    491     QPixmap mMinusPixmapEn;
    492     QPixmap mMinusPixmapDis;
    493 
    494     ToolTipType mToolTipType;
    495 
    496     KChipsetType m_chipsetType;
    497 
    498     /** Holds configuration access level. */
    499     ConfigurationAccessLevel m_configurationAccessLevel;
    500 };
    501 Q_DECLARE_METATYPE (StorageModel::ToolTipType);
    502 
    503 /* Storage Delegate */
    504 class SHARED_LIBRARY_STUFF StorageDelegate : public QItemDelegate
    505 {
    506     Q_OBJECT;
    507 
    508 public:
    509 
    510     StorageDelegate (QObject *aParent);
    511 
    512 private:
    513 
    514     void paint (QPainter *aPainter, const QStyleOptionViewItem &aOption, const QModelIndex &aIndex) const;
    515 };
    516 
    51739
    51840/** Machine settings: Storage page. */
     
    784306};
    785307
    786 
    787308#endif /* !FEQT_INCLUDED_SRC_settings_machine_UIMachineSettingsStorage_h */
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