Changeset 81055 in vbox
- Timestamp:
- Sep 27, 2019 1:10:38 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 133658
- 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 17 17 18 18 /* Qt includes: */ 19 #include <QCommonStyle> 19 20 #include <QDrag> 20 21 #include <QDragMoveEvent> 21 #include <QHeaderView> 22 #include <QItemEditorFactory> 22 #include <QItemDelegate> 23 23 #include <QMenu> 24 24 #include <QMimeData> 25 25 #include <QMouseEvent> 26 #include <QScrollBar> 27 #include <QStylePainter> 28 #include <QTimer> 29 #include <QCommonStyle> 30 #include <QMetaProperty> 26 #include <QPainter> 31 27 32 28 /* GUI includes: */ 33 #include "QIFileDialog.h" 34 #include "QIMessageBox.h" 35 #include "QIWidgetValidator.h" 29 #include "QITreeView.h" 36 30 #include "UICommon.h" 31 #include "UIConverter.h" 32 #include "UIErrorString.h" 33 #include "UIExtraDataManager.h" 37 34 #include "UIIconPool.h" 38 #include "UIWizardNewVD.h"39 #include "UIErrorString.h"40 35 #include "UIMessageCenter.h" 41 36 #include "UIMachineSettingsStorage.h" 37 #include "UIMedium.h" 42 38 #include "UIMediumSelector.h" 43 #include "UIConverter.h"44 #include "UIMedium.h"45 #include "UIExtraDataManager.h"46 #include "UIModalWindowManager.h"47 39 48 40 /* COM includes: */ 41 #include "CMediumAttachment.h" 49 42 #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: */ 45 typedef QList <StorageSlot> SlotsList; 46 typedef QList <KDeviceType> DeviceTypeList; 47 typedef QList <KStorageBus> ControllerBusList; 48 typedef QList <KStorageControllerType> ControllerTypeList; 49 Q_DECLARE_METATYPE (SlotsList); 50 Q_DECLARE_METATYPE (DeviceTypeList); 51 Q_DECLARE_METATYPE (ControllerBusList); 52 Q_DECLARE_METATYPE (ControllerTypeList); 53 54 55 /** Known item states. */ 56 enum ItemState 57 { 58 State_DefaultItem, 59 State_CollapsedItem, 60 State_ExpandedItem, 61 State_MAX 62 }; 63 64 65 /** Known pixmap types. */ 66 enum 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 }; 57 144 58 145 … … 199 286 UIIconPoolStorageSettings* iconPool() { return UIIconPoolStorageSettings::instance(); } 200 287 288 289 /* Abstract Item */ 290 class AbstractItem : public QITreeViewItem 291 { 292 Q_OBJECT; 293 294 public: 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 321 protected: 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 }; 330 Q_DECLARE_METATYPE (AbstractItem::ItemType); 331 332 333 /* Root Item */ 334 class RootItem : public AbstractItem 335 { 336 Q_OBJECT; 337 338 public: 339 340 RootItem(QITreeView *pParent); 341 ~RootItem(); 342 343 ULONG childCount (KStorageBus aBus) const; 344 345 private: 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 */ 363 class ControllerItem : public AbstractItem 364 { 365 Q_OBJECT; 366 367 public: 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 398 private: 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 */ 431 class AttachmentItem : public AbstractItem 432 { 433 Q_OBJECT; 434 435 public: 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 466 private: 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 */ 506 class StorageModel : public QAbstractItemModel 507 { 508 Q_OBJECT; 509 510 public: 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 629 private: 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 }; 648 Q_DECLARE_METATYPE (StorageModel::ToolTipType); 649 650 651 /* Storage Delegate */ 652 class StorageDelegate : public QItemDelegate 653 { 654 Q_OBJECT; 655 656 public: 657 658 StorageDelegate (QObject *aParent); 659 660 private: 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 */ 671 class UIMediumIDHolder : public QObject 672 { 673 Q_OBJECT; 674 675 public: 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 687 signals: 688 689 void sigChanged(); 690 691 private: 692 693 QUuid m_uId; 694 UIMediumDeviceType m_type; 695 }; 696 697 698 QString 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 *********************************************************************************************************************************/ 201 707 202 708 /* static */ … … 381 887 382 888 383 /* Abstract Item */ 889 /********************************************************************************************************************************* 890 * Class AbstractItem implementation. * 891 *********************************************************************************************************************************/ 892 384 893 AbstractItem::AbstractItem(QITreeView *pParent) 385 894 : QITreeViewItem(pParent) … … 427 936 428 937 429 /* Root Item */ 938 /********************************************************************************************************************************* 939 * Class RootItem implementation. * 940 *********************************************************************************************************************************/ 941 430 942 RootItem::RootItem(QITreeView *pParent) 431 943 : AbstractItem(pParent) … … 505 1017 506 1018 507 /* Controller Item */ 1019 /********************************************************************************************************************************* 1020 * Class ControllerItem implementation. * 1021 *********************************************************************************************************************************/ 1022 508 1023 ControllerItem::ControllerItem (AbstractItem *aParent, const QString &aName, 509 1024 KStorageBus aBusType, KStorageControllerType aControllerType) … … 800 1315 801 1316 802 /* Attachment Item */ 1317 /********************************************************************************************************************************* 1318 * Class AttachmentItem implementation. * 1319 *********************************************************************************************************************************/ 1320 803 1321 AttachmentItem::AttachmentItem (AbstractItem *aParent, KDeviceType aDeviceType) 804 1322 : AbstractItem (aParent) … … 1065 1583 1066 1584 1067 /* Storage model */ 1585 /********************************************************************************************************************************* 1586 * Class StorageModel implementation. * 1587 *********************************************************************************************************************************/ 1588 1068 1589 StorageModel::StorageModel(QITreeView *pParent) 1069 1590 : QAbstractItemModel(pParent) … … 2029 2550 2030 2551 2031 /* Storage Delegate */ 2552 /********************************************************************************************************************************* 2553 * Class StorageDelegate implementation. * 2554 *********************************************************************************************************************************/ 2555 2032 2556 StorageDelegate::StorageDelegate (QObject *aParent) 2033 2557 : QItemDelegate (aParent) … … 2137 2661 2138 2662 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 *********************************************************************************************************************************/ 2170 2666 2171 2667 /* static */ … … 4678 5174 } 4679 5175 5176 4680 5177 # include "UIMachineSettingsStorage.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h
r81054 r81055 22 22 #endif 23 23 24 /* Qt includes: */25 #include <QItemDelegate>26 #include <QPointer>27 28 24 /* GUI includes: */ 29 #include "QITreeView.h"30 #include "UIDefs.h"31 25 #include "UIMediumDefs.h" 32 26 #include "UISettingsPage.h" … … 34 28 35 29 /* Forward declarations: */ 36 class AttachmentItem;37 class ControllerItem;30 class QITreeView; 31 class StorageModel; 38 32 class UIMediumIDHolder; 39 33 struct UIDataSettingsMachineStorage; … … 43 37 typedef UISettingsCachePool<UIDataSettingsMachineStorageController, UISettingsCacheMachineStorageAttachment> UISettingsCacheMachineStorageController; 44 38 typedef 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 ItemState59 {60 State_DefaultItem,61 State_CollapsedItem,62 State_ExpandedItem,63 State_MAX64 };65 66 /** Known pixmap types. */67 enum PixmapType68 {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 MaxIndex144 };145 146 /* Abstract Item */147 class SHARED_LIBRARY_STUFF AbstractItem : public QITreeViewItem148 {149 Q_OBJECT;150 151 public:152 153 enum ItemType154 {155 Type_InvalidItem = 0,156 Type_RootItem = 1,157 Type_ControllerItem = 2,158 Type_AttachmentItem = 3159 };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 AbstractItem191 {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 AbstractItem219 {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 AbstractItem286 {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 QAbstractItemModel360 {361 Q_OBJECT;362 363 public:364 365 enum DataRole366 {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_FDPixmapRect433 };434 435 enum ToolTipType436 {437 DefaultToolTip = 0,438 ExpanderToolTip = 1,439 HDAdderToolTip = 2,440 CDAdderToolTip = 3,441 FDAdderToolTip = 4442 };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 uAttId463 * 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 QItemDelegate505 {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 517 39 518 40 /** Machine settings: Storage page. */ … … 784 306 }; 785 307 786 787 308 #endif /* !FEQT_INCLUDED_SRC_settings_machine_UIMachineSettingsStorage_h */
Note:
See TracChangeset
for help on using the changeset viewer.