- Timestamp:
- Jul 29, 2021 10:36:20 AM (4 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/wizards
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.cpp
r90400 r90401 42 42 /* Other VBox includes: */ 43 43 #include "iprt/assert.h" 44 #include "iprt/fs.h" 44 45 #include "CSystemProperties.h" 45 46 … … 108 109 return QString(); 109 110 } 111 112 /* static */ 113 bool UIDiskEditorGroupBox::checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize) 114 { 115 /* If the hard disk is split into 2GB parts then no need to make further checks: */ 116 if (uVariant & KMediumVariant_VmdkSplit2G) 117 return true; 118 RTFSTYPE enmType; 119 int rc = RTFsQueryType(QFileInfo(strMediumPath).absolutePath().toLatin1().constData(), &enmType); 120 if (RT_SUCCESS(rc)) 121 { 122 if (enmType == RTFSTYPE_FAT) 123 { 124 /* Limit the medium size to 4GB. minus 128 MB for file overhead: */ 125 qulonglong fatLimit = _4G - _128M; 126 if (uSize >= fatLimit) 127 return false; 128 } 129 } 130 return true; 131 } 132 110 133 111 134 -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.h
r90400 r90401 61 61 static QString constructMediumFilePath(const QString &strFileName, const QString &strPath); 62 62 static QString defaultExtensionForMediumFormat(const CMediumFormat &mediumFormatRef); 63 static bool checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize); 63 64 64 65 protected: -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.cpp
r90372 r90401 129 129 // const QString strMediumPath = field("mediumPath").toString(); 130 130 // const qulonglong uSize = field("mediumSize").toULongLong(); 131 / / /* Check attributes: */132 // AssertReturn(!strMediumPath.isNull(), false);133 // AssertReturn(uSize > 0, false);131 /* Check attributes: */ 132 AssertReturn(!m_strMediumPath.isNull(), false); 133 AssertReturn(m_uMediumSize > 0, false); 134 134 135 / / /* Get VBox object: */136 //CVirtualBox comVBox = uiCommon().virtualBox();135 /* Get VBox object: */ 136 CVirtualBox comVBox = uiCommon().virtualBox(); 137 137 138 // /* Create new virtual disk image: */ 139 // CMedium comVirtualDisk = comVBox.CreateMedium(comMediumFormat.GetName(), strMediumPath, KAccessMode_ReadWrite, KDeviceType_HardDisk); 140 // if (!comVBox.isOk()) 141 // { 142 // msgCenter().cannotCreateMediumStorage(comVBox, strMediumPath, this); 143 // return false; 144 // } 138 /* Create new virtual disk image: */ 139 CMedium comVirtualDisk = comVBox.CreateMedium(m_comMediumFormat.GetName(), 140 m_strMediumPath, KAccessMode_ReadWrite, KDeviceType_HardDisk); 141 if (!comVBox.isOk()) 142 { 143 msgCenter().cannotCreateMediumStorage(comVBox, m_strMediumPath, this); 144 return false; 145 } 145 146 146 / / /* Compose medium-variant: */147 //QVector<KMediumVariant> variants(sizeof(qulonglong) * 8);148 //for (int i = 0; i < variants.size(); ++i)149 //{150 // qulonglong temp = uVariant;151 //temp &= Q_UINT64_C(1) << i;152 //variants[i] = (KMediumVariant)temp;153 //}147 /* Compose medium-variant: */ 148 QVector<KMediumVariant> variants(sizeof(qulonglong) * 8); 149 for (int i = 0; i < variants.size(); ++i) 150 { 151 qulonglong temp = m_uMediumVariant; 152 temp &= Q_UINT64_C(1) << i; 153 variants[i] = (KMediumVariant)temp; 154 } 154 155 155 / / /* Copy medium: */156 //UINotificationProgressMediumCreate *pNotification = new UINotificationProgressMediumCreate(comVirtualDisk,157 // uSize,158 //variants);159 //connect(pNotification, &UINotificationProgressMediumCreate::sigMediumCreated,160 //&uiCommon(), &UICommon::sltHandleMediumCreated);161 //notificationCenter().append(pNotification);156 /* Copy medium: */ 157 UINotificationProgressMediumCreate *pNotification = new UINotificationProgressMediumCreate(comVirtualDisk, 158 m_uMediumSize, 159 variants); 160 connect(pNotification, &UINotificationProgressMediumCreate::sigMediumCreated, 161 &uiCommon(), &UICommon::sltHandleMediumCreated); 162 notificationCenter().append(pNotification); 162 163 163 164 /* Positive: */ -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.h
r90372 r90401 50 50 qulonglong uDefaultSize, WizardMode mode = WizardMode_Auto); 51 51 52 bool createVirtualDisk(); 52 53 53 54 qulonglong mediumVariant() const; … … 64 65 65 66 protected: 66 67 /* Creates virtual-disk: */68 bool createVirtualDisk();69 67 70 68 virtual void populatePages() /* final override */; -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageSizeLocation.cpp
r90400 r90401 396 396 bool UIWizardNewVDPageSizeLocation::validatePage() 397 397 { 398 /* Initial result: */399 398 bool fResult = true; 400 401 // /* Make sure such file doesn't exist already: */ 402 // const QString strMediumPath(mediumPath()); 403 // fResult = !QFileInfo(strMediumPath).exists(); 404 // if (!fResult) 405 // { 406 // msgCenter().cannotOverwriteHardDiskStorage(strMediumPath, this); 407 // return fResult; 408 // } 409 410 // /* Make sure we are passing FAT size limitation: */ 411 // fResult = checkFATSizeLimitation(fieldImp("mediumVariant").toULongLong(), 412 // fieldImp("mediumPath").toString(), 413 // fieldImp("mediumSize").toULongLong()); 414 // if (!fResult) 415 // { 416 // msgCenter().cannotCreateHardDiskStorageInFAT(strMediumPath, this); 417 // return fResult; 418 // } 399 UIWizardNewVD *pWizard = qobject_cast<UIWizardNewVD*>(wizard()); 400 AssertReturn(pWizard, false); 401 /* Make sure such file doesn't exist already: */ 402 const QString strMediumPath(pWizard->mediumPath()); 403 fResult = !QFileInfo(strMediumPath).exists(); 404 if (!fResult) 405 { 406 msgCenter().cannotOverwriteHardDiskStorage(strMediumPath, this); 407 return fResult; 408 } 409 410 /* Make sure we are passing FAT size limitation: */ 411 fResult = UIDiskEditorGroupBox::checkFATSizeLimitation(pWizard->mediumVariant(), 412 pWizard->mediumPath(), 413 pWizard->mediumSize()); 414 if (!fResult) 415 { 416 msgCenter().cannotCreateHardDiskStorageInFAT(strMediumPath, this); 417 return fResult; 418 } 419 419 420 420 // /* Lock finish button: */ 421 421 // startProcessing(); 422 / / /* Try to create virtual-disk: */423 // fResult = qobject_cast<UIWizardNewVD*>(wizard())->createVirtualDisk();422 /* Try to create virtual-disk: */ 423 fResult = pWizard->createVirtualDisk(); 424 424 // /* Unlock finish button: */ 425 425 // endProcessing(); -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMDiskPageBasic.cpp
r90400 r90401 62 62 return QUuid(); 63 63 return uMediumId; 64 }65 66 bool UIWizardNewVMDiskPage::checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize)67 {68 /* If the hard disk is split into 2GB parts then no need to make further checks: */69 if (uVariant & KMediumVariant_VmdkSplit2G)70 return true;71 72 RTFSTYPE enmType;73 int rc = RTFsQueryType(QFileInfo(strMediumPath).absolutePath().toLatin1().constData(), &enmType);74 if (RT_SUCCESS(rc))75 {76 if (enmType == RTFSTYPE_FAT)77 {78 /* Limit the medium size to 4GB. minus 128 MB for file overhead: */79 qulonglong fatLimit = _4G - _128M;80 if (uSize >= fatLimit)81 return false;82 }83 }84 85 return true;86 64 } 87 65 … … 458 436 } 459 437 /* Check FAT size limitation of the host hard drive: */ 460 fResult = UI WizardNewVMDiskPage::checkFATSizeLimitation(pWizard->mediumVariant(),438 fResult = UIDiskEditorGroupBox::checkFATSizeLimitation(pWizard->mediumVariant(), 461 439 strMediumPath, 462 440 pWizard->mediumSize()); -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMDiskPageBasic.h
r90400 r90401 59 59 const QString &strMachineBaseName, 60 60 QWidget *pCaller); 61 bool checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize);62 61 QString selectNewMediumLocation(UIWizardNewVM *pWizard); 63 62 } -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp
r90400 r90401 622 622 qulonglong uVariant = pWizard->mediumVariant(); 623 623 /* Check FAT size limitation of the host hard drive: */ 624 fResult = UI WizardNewVMDiskPage::checkFATSizeLimitation(uVariant, strMediumPath, uSize);624 fResult = UIDiskEditorGroupBox::checkFATSizeLimitation(uVariant, strMediumPath, uSize); 625 625 if (!fResult) 626 626 {
Note:
See TracChangeset
for help on using the changeset viewer.