VirtualBox

Changeset 90401 in vbox for trunk/src


Ignore:
Timestamp:
Jul 29, 2021 10:36:20 AM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9996. Restoring disk creation stuff.

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  
    4242/* Other VBox includes: */
    4343#include "iprt/assert.h"
     44#include "iprt/fs.h"
    4445#include "CSystemProperties.h"
    4546
     
    108109    return QString();
    109110}
     111
     112/* static */
     113bool 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
    110133
    111134
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.h

    r90400 r90401  
    6161    static QString constructMediumFilePath(const QString &strFileName, const QString &strPath);
    6262    static QString defaultExtensionForMediumFormat(const CMediumFormat &mediumFormatRef);
     63    static bool checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize);
    6364
    6465protected:
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.cpp

    r90372 r90401  
    129129    // const QString strMediumPath = field("mediumPath").toString();
    130130    // 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);
    134134
    135     // /* Get VBox object: */
    136     // CVirtualBox comVBox = uiCommon().virtualBox();
     135    /* Get VBox object: */
     136    CVirtualBox comVBox = uiCommon().virtualBox();
    137137
    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    }
    145146
    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    }
    154155
    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);
    162163
    163164    /* Positive: */
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.h

    r90372 r90401  
    5050                  qulonglong uDefaultSize, WizardMode mode = WizardMode_Auto);
    5151
     52    bool createVirtualDisk();
    5253
    5354    qulonglong mediumVariant() const;
     
    6465
    6566protected:
    66 
    67     /* Creates virtual-disk: */
    68     bool createVirtualDisk();
    6967
    7068    virtual void populatePages() /* final override */;
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageSizeLocation.cpp

    r90400 r90401  
    396396bool UIWizardNewVDPageSizeLocation::validatePage()
    397397{
    398     /* Initial result: */
    399398    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    }
    419419
    420420    // /* Lock finish button: */
    421421    // startProcessing();
    422     // /* Try to create virtual-disk: */
    423     // fResult = qobject_cast<UIWizardNewVD*>(wizard())->createVirtualDisk();
     422    /* Try to create virtual-disk: */
     423    fResult = pWizard->createVirtualDisk();
    424424    // /* Unlock finish button: */
    425425    // endProcessing();
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMDiskPageBasic.cpp

    r90400 r90401  
    6262        return QUuid();
    6363    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;
    8664}
    8765
     
    458436        }
    459437        /* Check FAT size limitation of the host hard drive: */
    460         fResult = UIWizardNewVMDiskPage::checkFATSizeLimitation(pWizard->mediumVariant(),
     438        fResult = UIDiskEditorGroupBox::checkFATSizeLimitation(pWizard->mediumVariant(),
    461439                                                                strMediumPath,
    462440                                                                pWizard->mediumSize());
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMDiskPageBasic.h

    r90400 r90401  
    5959                                const QString &strMachineBaseName,
    6060                                QWidget *pCaller);
    61     bool checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize);
    6261    QString selectNewMediumLocation(UIWizardNewVM *pWizard);
    6362}
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp

    r90400 r90401  
    622622        qulonglong uVariant = pWizard->mediumVariant();
    623623        /* Check FAT size limitation of the host hard drive: */
    624         fResult =  UIWizardNewVMDiskPage::checkFATSizeLimitation(uVariant, strMediumPath, uSize);
     624        fResult =  UIDiskEditorGroupBox::checkFATSizeLimitation(uVariant, strMediumPath, uSize);
    625625        if (!fResult)
    626626        {
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette