Changeset 37956 in vbox
- Timestamp:
- Jul 14, 2011 12:28:48 PM (13 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine
- Files:
-
- 3 edited
-
UIMachineSettingsStorage.cpp (modified) (19 diffs)
-
UIMachineSettingsStorage.h (modified) (6 diffs)
-
UIMachineSettingsStorage.ui (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
r37834 r37956 386 386 , mCtrName (aName) 387 387 , mCtrType (0) 388 , mPortCount (0) 388 389 , mUseIoCache (false) 389 390 { … … 444 445 } 445 446 447 uint ControllerItem::portCount() 448 { 449 /* Recalculate actual port count: */ 450 for (int i = 0; i < mAttachments.size(); ++i) 451 { 452 AttachmentItem *pItem = static_cast<AttachmentItem*>(mAttachments[i]); 453 if (mPortCount < (uint)pItem->attSlot().port + 1) 454 mPortCount = (uint)pItem->attSlot().port + 1; 455 } 456 return mPortCount; 457 } 458 446 459 bool ControllerItem::ctrUseIoCache() const 447 460 { … … 457 470 { 458 471 mCtrType->setCtrType (aCtrType); 472 } 473 474 void ControllerItem::setPortCount (uint aPortCount) 475 { 476 /* Limit maximum port count: */ 477 mPortCount = qMin(aPortCount, (uint)vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(ctrBusType())); 459 478 } 460 479 … … 1047 1066 return result; 1048 1067 } 1068 case R_CtrPortCount: 1069 { 1070 if (AbstractItem *item = static_cast <AbstractItem*> (aIndex.internalPointer())) 1071 if (item->rtti() == AbstractItem::Type_ControllerItem) 1072 return static_cast <ControllerItem*> (item)->portCount(); 1073 return 0; 1074 } 1049 1075 case R_CtrIoCache: 1050 1076 { … … 1262 1288 { 1263 1289 static_cast <ControllerItem*> (item)->setCtrType (aValue.value <KStorageControllerType>()); 1290 emit dataChanged (aIndex, aIndex); 1291 return true; 1292 } 1293 return false; 1294 } 1295 case R_CtrPortCount: 1296 { 1297 if (AbstractItem *item = static_cast <AbstractItem*> (aIndex.internalPointer())) 1298 if (item->rtti() == AbstractItem::Type_ControllerItem) 1299 { 1300 static_cast <ControllerItem*> (item)->setPortCount (aValue.toUInt()); 1264 1301 emit dataChanged (aIndex, aIndex); 1265 1302 return true; … … 1775 1812 QMenu *pOpenMediumMenu = new QMenu(this); 1776 1813 mTbOpen->setMenu(pOpenMediumMenu); 1814 1815 /* Controller pane initialization: */ 1816 mSbPortCount->setValue(0); 1777 1817 1778 1818 /* Info Pane initialization */ … … 1824 1864 connect (mCbType, SIGNAL (activated (int)), this, SLOT (setInformation())); 1825 1865 connect (mCbSlot, SIGNAL (activated (int)), this, SLOT (setInformation())); 1866 connect (mSbPortCount, SIGNAL (valueChanged (int)), this, SLOT (setInformation())); 1826 1867 connect (mCbIoCache, SIGNAL (stateChanged (int)), this, SLOT (setInformation())); 1827 1868 connect (m_pMediumIdHolder, SIGNAL (sigChanged()), this, SLOT (setInformation())); … … 1876 1917 storageControllerData.m_controllerBus = controller.GetBus(); 1877 1918 storageControllerData.m_controllerType = controller.GetControllerType(); 1919 storageControllerData.m_uPortCount = controller.GetPortCount(); 1878 1920 storageControllerData.m_fUseHostIOCache = controller.GetUseHostIOCache(); 1879 1921 … … 1938 1980 controllerData.m_controllerType); 1939 1981 QUuid controllerId = QUuid(mStorageModel->data(controllerIndex, StorageModel::R_ItemId).toString()); 1982 mStorageModel->setData(controllerIndex, controllerData.m_uPortCount, StorageModel::R_CtrPortCount); 1940 1983 mStorageModel->setData(controllerIndex, controllerData.m_fUseHostIOCache, StorageModel::R_CtrIoCache); 1941 1984 … … 1993 2036 controllerData.m_controllerBus = mStorageModel->data(controllerIndex, StorageModel::R_CtrBusType).value<KStorageBus>(); 1994 2037 controllerData.m_controllerType = mStorageModel->data(controllerIndex, StorageModel::R_CtrType).value<KStorageControllerType>(); 2038 controllerData.m_uPortCount = mStorageModel->data(controllerIndex, StorageModel::R_CtrPortCount).toUInt(); 1995 2039 controllerData.m_fUseHostIOCache = mStorageModel->data(controllerIndex, StorageModel::R_CtrIoCache).toBool(); 1996 2040 … … 2386 2430 int ctrPos = mCbType->findText (vboxGlobal().toString (type)); 2387 2431 mCbType->setCurrentIndex (ctrPos == -1 ? 0 : ctrPos); 2432 2433 KStorageBus bus = mStorageModel->data (index, StorageModel::R_CtrBusType).value <KStorageBus>(); 2434 mLbPortCount->setVisible (bus == KStorageBus_SATA); 2435 mSbPortCount->setVisible (bus == KStorageBus_SATA); 2436 uint uPortCount = mStorageModel->data (index, StorageModel::R_CtrPortCount).toUInt(); 2437 mSbPortCount->setValue (uPortCount); 2388 2438 2389 2439 bool isUseIoCache = mStorageModel->data (index, StorageModel::R_CtrIoCache).toBool(); … … 2498 2548 mStorageModel->setData (index, QVariant::fromValue (vboxGlobal().toControllerType (mCbType->currentText())), 2499 2549 StorageModel::R_CtrType); 2550 else if (sdr == mSbPortCount) 2551 mStorageModel->setData (index, mSbPortCount->value(), StorageModel::R_CtrPortCount); 2500 2552 else if (sdr == mCbIoCache) 2501 2553 mStorageModel->setData (index, mCbIoCache->isChecked(), StorageModel::R_CtrIoCache); … … 3245 3297 KStorageBus controllerBus = controllerData.m_controllerBus; 3246 3298 KStorageControllerType controllerType = controllerData.m_controllerType; 3299 ULONG uPortCount = controllerData.m_uPortCount; 3247 3300 bool fUseHostIOCache = controllerData.m_fUseHostIOCache; 3248 3301 … … 3263 3316 controller.SetControllerType(controllerType); 3264 3317 controller.SetUseHostIOCache(fUseHostIOCache); 3265 3266 /* Set port count to max possible initially: */3267 3318 if (controllerData.m_controllerBus == KStorageBus_SATA) 3268 3319 { 3269 CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties(); 3270 controller.SetPortCount(properties.GetMaxPortCountForStorageBus(KStorageBus_SATA)); 3320 uPortCount = qMax(uPortCount, controller.GetMinPortCount()); 3321 uPortCount = qMin(uPortCount, controller.GetMaxPortCount()); 3322 controller.SetPortCount(uPortCount); 3271 3323 } 3272 3273 /* Prepare max used port for SATA controller: */3274 int cMaxUsedPort = -1;3275 3324 3276 3325 /* For each storage attachment: */ … … 3283 3332 if (!attachmentCache.wasRemoved()) 3284 3333 fSuccess = createStorageAttachment(controllerCache, attachmentCache); 3285 3286 /* Check that machine is OK: */3287 if (fSuccess)3288 {3289 /* Get storage attachment data: */3290 const UIDataSettingsMachineStorageAttachment &attachmentData = attachmentCache.data();3291 /* Calculate the number of used ports: */3292 cMaxUsedPort = attachmentData.m_iAttachmentPort > cMaxUsedPort ? attachmentData.m_iAttachmentPort : cMaxUsedPort;3293 }3294 }3295 3296 /* Set max used port for SATA controller: */3297 if (fSuccess && controllerData.m_controllerBus == KStorageBus_SATA)3298 {3299 ULONG uSataPortsCount = cMaxUsedPort + 1;3300 uSataPortsCount = qMax(uSataPortsCount, controller.GetMinPortCount());3301 uSataPortsCount = qMin(uSataPortsCount, controller.GetMaxPortCount());3302 controller.SetPortCount(uSataPortsCount);3303 3334 } 3304 3335 } … … 3322 3353 KStorageBus controllerBus = controllerData.m_controllerBus; 3323 3354 KStorageControllerType controllerType = controllerData.m_controllerType; 3355 ULONG uPortCount = controllerData.m_uPortCount; 3324 3356 bool fUseHostIOCache = controllerData.m_fUseHostIOCache; 3325 3357 … … 3333 3365 controller.SetControllerType(controllerType); 3334 3366 controller.SetUseHostIOCache(fUseHostIOCache); 3335 3336 /* Set port count to max possible initially: */3337 3367 if (controllerData.m_controllerBus == KStorageBus_SATA) 3338 3368 { 3339 CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties(); 3340 controller.SetPortCount(properties.GetMaxPortCountForStorageBus(KStorageBus_SATA)); 3369 uPortCount = qMax(uPortCount, controller.GetMinPortCount()); 3370 uPortCount = qMin(uPortCount, controller.GetMaxPortCount()); 3371 controller.SetPortCount(uPortCount); 3341 3372 } 3342 3343 /* Prepare max used port for SATA controller: */3344 int cMaxUsedPort = -1;3345 3373 3346 3374 /* For each storage attachment: */ … … 3357 3385 if (attachmentCache.wasUpdated() && isAttachmentCouldBeUpdated(attachmentCache)) 3358 3386 fSuccess = updateStorageAttachment(controllerCache, attachmentCache); 3359 3360 /* Check that machine is OK: */3361 if (fSuccess && (attachmentCache.wasCreated() || attachmentCache.wasUpdated()))3362 {3363 /* Get storage attachment data: */3364 const UIDataSettingsMachineStorageAttachment &attachmentData = attachmentCache.data();3365 /* Calculate the number of used ports: */3366 cMaxUsedPort = attachmentData.m_iAttachmentPort > cMaxUsedPort ? attachmentData.m_iAttachmentPort : cMaxUsedPort;3367 }3368 }3369 3370 /* Set max used port for SATA controller: */3371 if (fSuccess && controllerBus == KStorageBus_SATA)3372 {3373 ULONG uSataPortsCount = cMaxUsedPort + 1;3374 uSataPortsCount = qMax(uSataPortsCount, controller.GetMinPortCount());3375 uSataPortsCount = qMin(uSataPortsCount, controller.GetMaxPortCount());3376 controller.SetPortCount(uSataPortsCount);3377 3387 } 3378 3388 } … … 3627 3637 mLbType->setEnabled(isMachineOffline()); 3628 3638 mCbType->setEnabled(isMachineOffline()); 3639 mLbPortCount->setEnabled(isMachineOffline()); 3640 mSbPortCount->setEnabled(isMachineOffline()); 3629 3641 mCbIoCache->setEnabled(isMachineOffline()); 3630 3642 /* Attachments pane: */ -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h
r37824 r37956 311 311 KStorageControllerType ctrType() const; 312 312 ControllerTypeList ctrTypes() const; 313 uint portCount(); 313 314 bool ctrUseIoCache() const; 314 315 315 316 void setCtrName (const QString &aCtrName); 316 317 void setCtrType (KStorageControllerType aCtrType); 318 void setPortCount (uint aPortCount); 317 319 void setCtrUseIoCache (bool aUseIoCache); 318 320 … … 338 340 QString mCtrName; 339 341 AbstractControllerType *mCtrType; 342 uint mPortCount; 340 343 bool mUseIoCache; 341 344 QList <AbstractItem*> mAttachments; … … 441 444 R_CtrDevices, 442 445 R_CtrBusType, 446 R_CtrPortCount, 443 447 R_CtrIoCache, 444 448 … … 601 605 , m_controllerBus(KStorageBus_Null) 602 606 , m_controllerType(KStorageControllerType_Null) 607 , m_uPortCount(0) 603 608 , m_fUseHostIOCache(false) {} 604 609 /* Functions: */ … … 608 613 (m_controllerBus == other.m_controllerBus) && 609 614 (m_controllerType == other.m_controllerType) && 615 (m_uPortCount == other.m_uPortCount) && 610 616 (m_fUseHostIOCache == other.m_fUseHostIOCache); 611 617 } … … 617 623 KStorageBus m_controllerBus; 618 624 KStorageControllerType m_controllerType; 625 uint m_uPortCount; 619 626 bool m_fUseHostIOCache; 620 627 }; -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.ui
r37824 r37956 209 209 </widget> 210 210 </item> 211 <item row="3" column="1" > 212 <widget class="QLabel" name="mLbPortCount" > 213 <property name="text" > 214 <string>&Port Count:</string> 215 </property> 216 <property name="buddy" > 217 <cstring>mSbPortCount</cstring> 218 </property> 219 <property name="alignment" > 220 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> 221 </property> 222 </widget> 223 </item> 211 224 <item row="3" column="2" > 225 <widget class="QSpinBox" name="mSbPortCount" > 226 <property name="whatsThis" > 227 <string>Selects the port count of the SATA storage controller currently selected in the Storage Tree. This value can't be less than the maximum used port number + 1.</string> 228 </property> 229 <property name="sizePolicy" > 230 <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > 231 <horstretch>0</horstretch> 232 <verstretch>0</verstretch> 233 </sizepolicy> 234 </property> 235 </widget> 236 </item> 237 <item row="4" column="2" > 212 238 <widget class="QCheckBox" name="mCbIoCache" > 213 239 <property name="whatsThis" > … … 219 245 </widget> 220 246 </item> 221 <item row=" 4" column="0" colspan="3" >247 <item row="5" column="0" colspan="3" > 222 248 <spacer name="mSp3" > 223 249 <property name="orientation" >
Note:
See TracChangeset
for help on using the changeset viewer.

