Changeset 102935 in vbox
- Timestamp:
- Jan 17, 2024 5:18:21 PM (14 months ago)
- svn:sync-xref-src-repo-rev:
- 161163
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIStorageSettingsEditor.cpp
r102933 r102935 3043 3043 { 3044 3044 /* Check whether update is required: */ 3045 if (m_enmConfigurationAccessLevel != enmConfigurationAccessLevel)3046 {3047 /* Update value and let model know: */ 3048 m_enmConfigurationAccessLevel = enmConfigurationAccessLevel;3049 if (m_pModelStorage)3050 m_pModelStorage->setConfigurationAccessLevel(enmConfigurationAccessLevel); 3051 3052 /* Check actual level: */3053 const bool fMachineOffline = m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full;3054 const bool fMachinePoweredOff = m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Partial_PoweredOff; 3055 const bool fMachineSaved = m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Partial_Saved;3056 const bool fMachineOnline = m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Partial_Running;3057 const bool fMachineInValidMode = fMachineOffline || fMachinePoweredOff || fMachineSaved || fMachineOnline;3058 3059 /* Declare required variables: */3060 const QModelIndex index = m_pTreeViewStorage->currentIndex();3061 const KDeviceType enmDeviceType = m_pModelStorage->data(index, StorageModel::R_AttDevice).value<KDeviceType>();3062 3063 /* Polish left pane availability: */ 3064 m_pLabelSeparatorLeftPane->setEnabled(fMachineInValidMode);3065 m_pTreeViewStorage->setEnabled(fMachineInValidMode);3066 3067 /* Polish empty information pane availability: */ 3068 m_pLabelSeparatorEmpty->setEnabled(fMachineInValidMode);3069 m_pLabelInfo->setEnabled(fMachineInValidMode);3070 3071 /* Polish controllers pane availability: */ 3072 m_pLabelSeparatorParameters->setEnabled(fMachineInValidMode);3073 m_pLabelName->setEnabled(fMachineOffline);3074 m_pEditorName->setEnabled(fMachineOffline);3075 m_pLabelType->setEnabled(fMachineOffline);3076 m_pComboType->setEnabled(fMachineOffline);3077 m_pLabelPortCount->setEnabled(fMachineOffline);3078 m_pSpinboxPortCount->setEnabled(fMachineOffline);3079 m_pCheckBoxIoCache->setEnabled(fMachineOffline);3080 3081 /* Polish attachments pane availability: */ 3082 m_pLabelSeparatorAttributes->setEnabled(fMachineInValidMode);3083 m_pLabelMedium->setEnabled(fMachineOffline || (fMachineOnline && enmDeviceType != KDeviceType_HardDisk));3084 m_pComboSlot->setEnabled(fMachineOffline);3085 m_pToolButtonOpen->setEnabled(fMachineOffline || (fMachineOnline && enmDeviceType != KDeviceType_HardDisk));3086 m_pCheckBoxPassthrough->setEnabled(fMachineOffline);3087 m_pCheckBoxTempEject->setEnabled(fMachineInValidMode);3088 m_pCheckBoxNonRotational->setEnabled(fMachineOffline);3089 m_pCheckBoxHotPluggable->setEnabled(fMachineOffline);3090 m_pLabelSeparatorInformation->setEnabled(fMachineInValidMode);3091 m_pLabelHDFormat->setEnabled(fMachineInValidMode);3092 m_pFieldHDFormat->setEnabled(fMachineInValidMode);3093 m_pLabelCDFDType->setEnabled(fMachineInValidMode);3094 m_pFieldCDFDType->setEnabled(fMachineInValidMode);3095 m_pLabelHDVirtualSize->setEnabled(fMachineInValidMode);3096 m_pFieldHDVirtualSize->setEnabled(fMachineInValidMode);3097 m_pLabelHDActualSize->setEnabled(fMachineInValidMode);3098 m_pFieldHDActualSize->setEnabled(fMachineInValidMode);3099 m_pLabelCDFDSize->setEnabled(fMachineInValidMode);3100 m_pFieldCDFDSize->setEnabled(fMachineInValidMode);3101 m_pLabelHDDetails->setEnabled(fMachineInValidMode);3102 m_pFieldHDDetails->setEnabled(fMachineInValidMode);3103 m_pLabelLocation->setEnabled(fMachineInValidMode);3104 m_pFieldLocation->setEnabled(fMachineInValidMode);3105 m_pLabelUsage->setEnabled(fMachineInValidMode);3106 m_pFieldUsage->setEnabled(fMachineInValidMode);3107 m_pLabelEncryption->setEnabled(fMachineInValidMode);3108 m_pFieldEncryption->setEnabled(fMachineInValidMode);3109 3110 /* Update remaining stuff: */ 3111 sltUpdateActionStates();3112 sltGetInformation();3113 }3045 if (m_enmConfigurationAccessLevel == enmConfigurationAccessLevel) 3046 return; 3047 3048 /* Update the value: */ 3049 m_enmConfigurationAccessLevel = enmConfigurationAccessLevel; 3050 3051 /* Propagate value to storage model as well: */ 3052 AssertPtrReturnVoid(m_pModelStorage); 3053 m_pModelStorage->setConfigurationAccessLevel(enmConfigurationAccessLevel); 3054 3055 /* Acquire various options: */ 3056 const bool fMachineOffline = m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full; 3057 const bool fMachinePoweredOff = m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Partial_PoweredOff; 3058 const bool fMachineSaved = m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Partial_Saved; 3059 const bool fMachineOnline = m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Partial_Running; 3060 const bool fMachineInValidMode = fMachineOffline || fMachinePoweredOff || fMachineSaved || fMachineOnline; 3061 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 3062 const KDeviceType enmDeviceType = m_pModelStorage->data(index, StorageModel::R_AttDevice).value<KDeviceType>(); 3063 3064 /* Polish left pane availability: */ 3065 m_pLabelSeparatorLeftPane->setEnabled(fMachineInValidMode); 3066 m_pTreeViewStorage->setEnabled(fMachineInValidMode); 3067 3068 /* Polish empty information pane availability: */ 3069 m_pLabelSeparatorEmpty->setEnabled(fMachineInValidMode); 3070 m_pLabelInfo->setEnabled(fMachineInValidMode); 3071 3072 /* Polish controllers pane availability: */ 3073 m_pLabelSeparatorParameters->setEnabled(fMachineInValidMode); 3074 m_pLabelName->setEnabled(fMachineOffline); 3075 m_pEditorName->setEnabled(fMachineOffline); 3076 m_pLabelType->setEnabled(fMachineOffline); 3077 m_pComboType->setEnabled(fMachineOffline); 3078 m_pLabelPortCount->setEnabled(fMachineOffline); 3079 m_pSpinboxPortCount->setEnabled(fMachineOffline); 3080 m_pCheckBoxIoCache->setEnabled(fMachineOffline); 3081 3082 /* Polish attachments pane availability: */ 3083 m_pLabelSeparatorAttributes->setEnabled(fMachineInValidMode); 3084 m_pLabelMedium->setEnabled(fMachineOffline || (fMachineOnline && enmDeviceType != KDeviceType_HardDisk)); 3085 m_pComboSlot->setEnabled(fMachineOffline); 3086 m_pToolButtonOpen->setEnabled(fMachineOffline || (fMachineOnline && enmDeviceType != KDeviceType_HardDisk)); 3087 m_pCheckBoxPassthrough->setEnabled(fMachineOffline); 3088 m_pCheckBoxTempEject->setEnabled(fMachineInValidMode); 3089 m_pCheckBoxNonRotational->setEnabled(fMachineOffline); 3090 m_pCheckBoxHotPluggable->setEnabled(fMachineOffline); 3091 m_pLabelSeparatorInformation->setEnabled(fMachineInValidMode); 3092 m_pLabelHDFormat->setEnabled(fMachineInValidMode); 3093 m_pFieldHDFormat->setEnabled(fMachineInValidMode); 3094 m_pLabelCDFDType->setEnabled(fMachineInValidMode); 3095 m_pFieldCDFDType->setEnabled(fMachineInValidMode); 3096 m_pLabelHDVirtualSize->setEnabled(fMachineInValidMode); 3097 m_pFieldHDVirtualSize->setEnabled(fMachineInValidMode); 3098 m_pLabelHDActualSize->setEnabled(fMachineInValidMode); 3099 m_pFieldHDActualSize->setEnabled(fMachineInValidMode); 3100 m_pLabelCDFDSize->setEnabled(fMachineInValidMode); 3101 m_pFieldCDFDSize->setEnabled(fMachineInValidMode); 3102 m_pLabelHDDetails->setEnabled(fMachineInValidMode); 3103 m_pFieldHDDetails->setEnabled(fMachineInValidMode); 3104 m_pLabelLocation->setEnabled(fMachineInValidMode); 3105 m_pFieldLocation->setEnabled(fMachineInValidMode); 3106 m_pLabelUsage->setEnabled(fMachineInValidMode); 3107 m_pFieldUsage->setEnabled(fMachineInValidMode); 3108 m_pLabelEncryption->setEnabled(fMachineInValidMode); 3109 m_pFieldEncryption->setEnabled(fMachineInValidMode); 3110 3111 /* Update remaining stuff: */ 3112 sltUpdateActionStates(); 3113 sltGetInformation(); 3114 3114 } 3115 3115 3116 3116 void UIStorageSettingsEditor::setChipsetType(KChipsetType enmType) 3117 3117 { 3118 if (m_pModelStorage) 3119 { 3120 /* Make sure chipset type has changed: */ 3121 if (m_pModelStorage->chipsetType() != enmType) 3122 { 3123 /* Update chipset type value: */ 3124 m_pModelStorage->setChipsetType(enmType); 3125 sltUpdateActionStates(); 3126 3127 /* Notify listeners: */ 3128 emit sigValueChanged(); 3129 } 3130 } 3118 /* Check whether update is required: */ 3119 AssertPtrReturnVoid(m_pModelStorage); 3120 if (m_pModelStorage->chipsetType() == enmType) 3121 return; 3122 3123 /* Update chipset type value: */ 3124 m_pModelStorage->setChipsetType(enmType); 3125 sltUpdateActionStates(); 3126 3127 /* Notify listeners: */ 3128 emit sigValueChanged(); 3131 3129 } 3132 3130 3133 3131 KChipsetType UIStorageSettingsEditor::chipsetType() const 3134 3132 { 3135 return m_pModelStorage ? m_pModelStorage->chipsetType() : KChipsetType_Null; 3133 AssertPtrReturn(m_pModelStorage, KChipsetType_Null); 3134 return m_pModelStorage->chipsetType(); 3136 3135 } 3137 3136 3138 3137 QMap<KStorageBus, int> UIStorageSettingsEditor::currentControllerTypes() const 3139 3138 { 3139 AssertPtr(m_pModelStorage); 3140 3140 return m_pModelStorage ? m_pModelStorage->currentControllerTypes() : QMap<KStorageBus, int>(); 3141 3141 } … … 3143 3143 QMap<KStorageBus, int> UIStorageSettingsEditor::maximumControllerTypes() const 3144 3144 { 3145 AssertPtr(m_pModelStorage); 3145 3146 return m_pModelStorage ? m_pModelStorage->maximumControllerTypes() : QMap<KStorageBus, int>(); 3146 3147 } … … 3150 3151 { 3151 3152 /* Clear model initially: */ 3153 AssertPtrReturnVoid(m_pModelStorage); 3152 3154 m_pModelStorage->clear(); 3153 3155 … … 3200 3202 { 3201 3203 /* For each controller: */ 3204 AssertPtrReturnVoid(m_pModelStorage); 3202 3205 const QModelIndex rootIndex = m_pModelStorage->root(); 3203 3206 for (int iControllerIndex = 0; iControllerIndex < m_pModelStorage->rowCount(rootIndex); ++iControllerIndex) … … 3339 3342 void UIStorageSettingsEditor::sltHandleMediumEnumerated(const QUuid &uMediumId) 3340 3343 { 3344 /* Acquire newly recached medium: */ 3345 const UIMedium medium = uiCommon().medium(uMediumId); 3346 3341 3347 /* Search for corresponding medium: */ 3342 const UIMedium medium = uiCommon().medium(uMediumId); 3343 3348 AssertPtrReturnVoid(m_pModelStorage); 3344 3349 const QModelIndex rootIndex = m_pModelStorage->root(); 3345 3350 for (int i = 0; i < m_pModelStorage->rowCount(rootIndex); ++i) … … 3363 3368 void UIStorageSettingsEditor::sltHandleMediumDeleted(const QUuid &uMediumId) 3364 3369 { 3370 /* Search for corresponding medium: */ 3371 AssertPtrReturnVoid(m_pModelStorage); 3365 3372 QModelIndex rootIndex = m_pModelStorage->root(); 3366 3373 for (int i = 0; i < m_pModelStorage->rowCount(rootIndex); ++i) … … 3459 3466 void UIStorageSettingsEditor::sltRemoveController() 3460 3467 { 3468 AssertPtrReturnVoid(m_pTreeViewStorage); 3461 3469 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 3462 if (!m_pModelStorage->data(index, StorageModel::R_IsController).toBool()) 3463 return; 3464 3470 AssertPtrReturnVoid(m_pModelStorage); 3471 AssertReturnVoid(m_pModelStorage->data(index, StorageModel::R_IsController).toBool()); 3472 3473 /* Remove controller: */ 3465 3474 m_pModelStorage->delController(m_pModelStorage->data(index, StorageModel::R_ItemId).toUuid()); 3466 3475 … … 3471 3480 void UIStorageSettingsEditor::sltAddAttachment() 3472 3481 { 3482 AssertPtrReturnVoid(m_pTreeViewStorage); 3473 3483 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 3474 Assert(m_pModelStorage->data(index, StorageModel::R_IsController).toBool()); 3475 3476 const DeviceTypeList deviceTypeList(m_pModelStorage->data(index, StorageModel::R_CtrDevices).value<DeviceTypeList>()); 3484 AssertPtrReturnVoid(m_pModelStorage); 3485 AssertReturnVoid(m_pModelStorage->data(index, StorageModel::R_IsController).toBool()); 3486 3487 /* Prepare menu: */ 3488 const DeviceTypeList deviceTypeList = m_pModelStorage->data(index, StorageModel::R_CtrDevices).value<DeviceTypeList>(); 3477 3489 const bool fJustTrigger = deviceTypeList.size() == 1; 3478 3490 const bool fShowMenu = deviceTypeList.size() > 1; … … 3525 3537 void UIStorageSettingsEditor::sltRemoveAttachment() 3526 3538 { 3539 AssertPtrReturnVoid(m_pTreeViewStorage); 3527 3540 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 3528 3541 AssertPtrReturnVoid(m_pModelStorage); 3542 AssertReturnVoid(m_pModelStorage->data(index, StorageModel::R_IsAttachment).toBool()); 3543 const QModelIndex parentIndex = index.parent(); 3544 AssertReturnVoid(m_pModelStorage->data(parentIndex, StorageModel::R_IsController).toBool()); 3545 3546 /* Check if this would be the last DVD. If so let the user confirm this again. */ 3529 3547 const KDeviceType enmDeviceType = m_pModelStorage->data(index, StorageModel::R_AttDevice).value<KDeviceType>(); 3530 /* Check if this would be the last DVD. If so let the user confirm this again. */3531 3548 if ( enmDeviceType == KDeviceType_DVD 3532 && deviceCount(KDeviceType_DVD) == 1) 3533 { 3534 if (!msgCenter().confirmRemovingOfLastDVDDevice(this)) 3535 return; 3536 } 3537 3538 const QModelIndex parentIndex = index.parent(); 3539 if (!index.isValid() || !parentIndex.isValid() || 3540 !m_pModelStorage->data(index, StorageModel::R_IsAttachment).toBool() || 3541 !m_pModelStorage->data(parentIndex, StorageModel::R_IsController).toBool()) 3549 && deviceCount(KDeviceType_DVD) == 1 3550 && !msgCenter().confirmRemovingOfLastDVDDevice(this)) 3542 3551 return; 3543 3552 3553 /* Remove attachment: */ 3544 3554 m_pModelStorage->delAttachment(m_pModelStorage->data(parentIndex, StorageModel::R_ItemId).toUuid(), 3545 3555 m_pModelStorage->data(index, StorageModel::R_ItemId).toUuid()); … … 3553 3563 m_fLoadingInProgress = true; 3554 3564 3565 AssertPtrReturnVoid(m_pTreeViewStorage); 3555 3566 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 3567 AssertPtrReturnVoid(m_pModelStorage); 3556 3568 if (!index.isValid() || index == m_pModelStorage->root()) 3557 3569 { 3558 /* Showing Initial Page: */3570 /* Showing initial page: */ 3559 3571 m_pStackRightPane->setCurrentIndex(0); 3560 3572 } … … 3565 3577 case AbstractItem::Type_ControllerItem: 3566 3578 { 3567 /* Getting Controller Name: */3579 /* Getting controller name: */ 3568 3580 const QString strCtrName = m_pModelStorage->data(index, StorageModel::R_CtrName).toString(); 3569 3581 if (m_pEditorName->text() != strCtrName) … … 3577 3589 { 3578 3590 /* Getting controller types: */ 3579 const ControllerTypeList controllerTypeList(m_pModelStorage->data(index, m_pModelStorage->busToRole(enmCurrentBus)).value<ControllerTypeList>());3591 const ControllerTypeList controllerTypeList(m_pModelStorage->data(index, StorageModel::busToRole(enmCurrentBus)).value<ControllerTypeList>()); 3580 3592 foreach (const KStorageControllerType &enmCurrentType, controllerTypeList) 3581 3593 { … … 3600 3612 m_pCheckBoxIoCache->setChecked(fUseIoCache); 3601 3613 3602 /* Showing Controller Page: */3614 /* Showing controller page: */ 3603 3615 m_pStackRightPane->setCurrentIndex(1); 3604 3616 break; … … 3606 3618 case AbstractItem::Type_AttachmentItem: 3607 3619 { 3608 /* Getting Attachment Slot: */3620 /* Getting attachment slot: */ 3609 3621 m_pComboSlot->clear(); 3610 3622 const SlotsList slotsList(m_pModelStorage->data(index, StorageModel::R_AttSlots).value<SlotsList>()); … … 3616 3628 m_pComboSlot->setToolTip(m_pComboSlot->itemText(m_pComboSlot->currentIndex())); 3617 3629 3618 /* Getting Attachment Medium: */3630 /* Getting attachment medium: */ 3619 3631 const KDeviceType enmDeviceType = m_pModelStorage->data(index, StorageModel::R_AttDevice).value<KDeviceType>(); 3620 3632 switch (enmDeviceType) … … 3662 3674 m_pToolButtonOpen->setEnabled(fIsEditable); 3663 3675 3664 /* Getting Passthrough state: */3676 /* Getting passthrough state: */ 3665 3677 const bool fHostDrive = m_pModelStorage->data(index, StorageModel::R_AttIsHostDrive).toBool(); 3666 3678 m_pCheckBoxPassthrough->setVisible(enmDeviceType == KDeviceType_DVD && fHostDrive); 3667 3679 m_pCheckBoxPassthrough->setChecked(fHostDrive && m_pModelStorage->data(index, StorageModel::R_AttIsPassthrough).toBool()); 3668 3680 3669 /* Getting TempEject state: */3681 /* Getting temp-eject state: */ 3670 3682 m_pCheckBoxTempEject->setVisible(enmDeviceType == KDeviceType_DVD && !fHostDrive); 3671 3683 m_pCheckBoxTempEject->setChecked(!fHostDrive && m_pModelStorage->data(index, StorageModel::R_AttIsTempEject).toBool()); 3672 3684 3673 /* Getting NonRotational state: */3685 /* Getting non-rotational state: */ 3674 3686 m_pCheckBoxNonRotational->setVisible(enmDeviceType == KDeviceType_HardDisk); 3675 3687 m_pCheckBoxNonRotational->setChecked(m_pModelStorage->data(index, StorageModel::R_AttIsNonRotational).toBool()); … … 3695 3707 m_pFieldEncryption->setVisible(enmDeviceType == KDeviceType_HardDisk); 3696 3708 3697 /* Getting Other Information: */3709 /* Getting other information: */ 3698 3710 m_pFieldHDFormat->setText(compressText(m_pModelStorage->data(index, StorageModel::R_AttFormat).toString())); 3699 3711 m_pFieldCDFDType->setText(compressText(m_pModelStorage->data(index, StorageModel::R_AttFormat).toString())); … … 3706 3718 m_pFieldEncryption->setText(compressText(m_pModelStorage->data(index, StorageModel::R_AttEncryptionPasswordID).toString())); 3707 3719 3708 /* Showing Attachment Page: */3720 /* Showing attachment page: */ 3709 3721 m_pStackRightPane->setCurrentIndex(2); 3710 3722 break; … … 3723 3735 void UIStorageSettingsEditor::sltSetInformation() 3724 3736 { 3737 AssertPtrReturnVoid(m_pTreeViewStorage); 3725 3738 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 3739 AssertPtrReturnVoid(m_pModelStorage); 3726 3740 if (m_fLoadingInProgress || !index.isValid() || index == m_pModelStorage->root()) 3727 3741 return; … … 3732 3746 case AbstractItem::Type_ControllerItem: 3733 3747 { 3734 /* Setting Controller Name: */3748 /* Setting controller name: */ 3735 3749 if (pSender == m_pEditorName) 3736 3750 m_pModelStorage->setData(index, m_pEditorName->text(), StorageModel::R_CtrName); 3737 /* Setting Controller Sub-Type: */3751 /* Setting controller sub-type: */ 3738 3752 else if (pSender == m_pComboType) 3739 3753 { … … 3753 3767 case AbstractItem::Type_AttachmentItem: 3754 3768 { 3755 /* Setting Attachment Slot: */3769 /* Setting attachment slot: */ 3756 3770 if (pSender == m_pComboSlot) 3757 3771 { … … 3763 3777 m_pTreeViewStorage->setCurrentIndex(theSameIndexAtNewPosition); 3764 3778 } 3765 /* Setting Attachment Medium: */3779 /* Setting attachment medium: */ 3766 3780 else if (pSender == m_pMediumIdHolder) 3767 3781 m_pModelStorage->setData(index, m_pMediumIdHolder->id(), StorageModel::R_AttMediumId); … … 3925 3939 void UIStorageSettingsEditor::sltUpdateActionStates() 3926 3940 { 3941 AssertPtrReturnVoid(m_pTreeViewStorage); 3927 3942 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 3928 3943 3944 /* Acquire options: */ 3945 AssertPtrReturnVoid(m_pModelStorage); 3929 3946 const bool fIDEPossible = m_pModelStorage->data(index, StorageModel::R_IsMoreIDEControllersPossible).toBool(); 3930 3947 const bool fSATAPossible = m_pModelStorage->data(index, StorageModel::R_IsMoreSATAControllersPossible).toBool(); … … 3935 3952 const bool fNVMePossible = m_pModelStorage->data(index, StorageModel::R_IsMoreNVMeControllersPossible).toBool(); 3936 3953 const bool fVirtioSCSIPossible = m_pModelStorage->data(index, StorageModel::R_IsMoreVirtioSCSIControllersPossible).toBool(); 3937 3938 3954 const bool fController = m_pModelStorage->data(index, StorageModel::R_IsController).toBool(); 3939 3955 const bool fAttachment = m_pModelStorage->data(index, StorageModel::R_IsAttachment).toBool(); … … 3975 3991 void UIStorageSettingsEditor::sltHandleRowInsertion(const QModelIndex &parentIndex, int iPosition) 3976 3992 { 3993 AssertPtrReturnVoid(m_pModelStorage); 3994 AssertPtrReturnVoid(m_pTreeViewStorage); 3977 3995 const QModelIndex index = m_pModelStorage->index(iPosition, 0, parentIndex); 3978 3996 … … 4002 4020 void UIStorageSettingsEditor::sltHandleRowRemoval() 4003 4021 { 4004 if (m_pModelStorage->rowCount (m_pModelStorage->root()) == 0) 4005 m_pTreeViewStorage->setCurrentIndex (m_pModelStorage->root()); 4022 /* If no items left => just choose the root to be currnt: */ 4023 AssertPtrReturnVoid(m_pModelStorage); 4024 AssertPtrReturnVoid(m_pTreeViewStorage); 4025 if (m_pModelStorage->rowCount(m_pModelStorage->root()) == 0) 4026 m_pTreeViewStorage->setCurrentIndex(m_pModelStorage->root()); 4006 4027 4007 4028 sltUpdateActionStates(); … … 4020 4041 m_mousePressPosition = QPoint(); 4021 4042 4043 AssertPtrReturnVoid(m_pTreeViewStorage); 4022 4044 const QModelIndex index = m_pTreeViewStorage->indexAt(position); 4023 4045 if (!index.isValid()) … … 4025 4047 4026 4048 QMenu menu; 4049 AssertPtrReturnVoid(m_pModelStorage); 4027 4050 switch (m_pModelStorage->data(index, StorageModel::R_ItemType).value<AbstractItem::ItemType>()) 4028 4051 { … … 4064 4087 void UIStorageSettingsEditor::sltHandleDrawItemBranches(QPainter *pPainter, const QRect &rect, const QModelIndex &index) 4065 4088 { 4089 /* Make sure we are painting branches for attachments only, 4090 * i.e. for items which have parent which have parent as well: */ 4066 4091 if (!index.parent().isValid() || !index.parent().parent().isValid()) 4067 4092 return; … … 4069 4094 pPainter->save(); 4070 4095 QStyleOption options; 4096 AssertPtrReturnVoid(m_pTreeViewStorage); 4071 4097 options.initFrom(m_pTreeViewStorage); 4072 4098 options.rect = rect; 4073 4099 options.state |= QStyle::State_Item; 4100 AssertPtrReturnVoid(m_pModelStorage); 4074 4101 if (index.row() < m_pModelStorage->rowCount(index.parent()) - 1) 4075 4102 options.state |= QStyle::State_Sibling; … … 4091 4118 const QPoint lPos = pEvent->position().toPoint(); 4092 4119 4120 AssertPtrReturnVoid(m_pTreeViewStorage); 4093 4121 const QModelIndex index = m_pTreeViewStorage->indexAt(lPos); 4094 4122 const QRect indexRect = m_pTreeViewStorage->visualRect(index); 4095 4123 4096 4124 /* Expander tool-tip: */ 4125 AssertPtrReturnVoid(m_pModelStorage); 4097 4126 if (m_pModelStorage->data(index, StorageModel::R_IsController).toBool()) 4098 4127 { … … 4221 4250 4222 4251 /* Acquire indexes: */ 4252 AssertPtrReturnVoid(m_pTreeViewStorage); 4223 4253 const QModelIndex currentIndex = m_pTreeViewStorage->currentIndex(); 4224 4254 const QModelIndex index = m_pTreeViewStorage->indexAt(lPos); … … 4230 4260 4231 4261 /* Expander icon: */ 4262 AssertPtrReturnVoid(m_pModelStorage); 4232 4263 if (m_pModelStorage->data(index, StorageModel::R_IsController).toBool()) 4233 4264 { … … 5054 5085 { 5055 5086 #ifdef RT_STRICT 5087 AssertPtrReturnVoid(m_pTreeViewStorage); 5056 5088 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 5057 5089 switch (enmBus) … … 5086 5118 #endif 5087 5119 5120 /* Add controller: */ 5121 AssertPtrReturnVoid(m_pModelStorage); 5088 5122 m_pModelStorage->addController(strName, enmBus, enmType); 5123 5124 /* Notify listeners: */ 5089 5125 emit sigValueChanged(); 5090 5126 } … … 5092 5128 void UIStorageSettingsEditor::addAttachmentWrapper(KDeviceType enmDeviceType) 5093 5129 { 5130 AssertPtrReturnVoid(m_pTreeViewStorage); 5094 5131 const QModelIndex index = m_pTreeViewStorage->currentIndex(); 5095 5132 Assert(m_pModelStorage->data(index, StorageModel::R_IsController).toBool()); … … 5115 5152 return; 5116 5153 5154 /* Add attachment: */ 5155 AssertPtrReturnVoid(m_pModelStorage); 5117 5156 m_pModelStorage->addAttachment(m_pModelStorage->data(index, StorageModel::R_ItemId).toUuid(), enmDeviceType, uMediumId); 5118 5157 m_pModelStorage->sort(); … … 5124 5163 QString UIStorageSettingsEditor::generateUniqueControllerName(const QString &strTemplate) const 5125 5164 { 5165 AssertPtrReturn(m_pModelStorage, QString()); 5126 5166 int iMaxNumber = 0; 5127 5167 const QModelIndex rootIndex = m_pModelStorage->root(); … … 5143 5183 uint32_t UIStorageSettingsEditor::deviceCount(KDeviceType enmType) const 5144 5184 { 5185 AssertPtrReturn(m_pModelStorage, 0); 5145 5186 uint32_t cDevices = 0; 5146 5187 const QModelIndex rootIndex = m_pModelStorage->root();
Note:
See TracChangeset
for help on using the changeset viewer.