VirtualBox

Changeset 90400 in vbox for trunk


Ignore:
Timestamp:
Jul 29, 2021 9:40:13 AM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9996. Fixing medium size and location page.

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

    r90370 r90400  
    5757}
    5858
     59/* static */
     60QString UIDiskEditorGroupBox::appendExtension(const QString &strName, const QString &strExtension)
     61{
     62    /* Convert passed name to native separators: */
     63    QString strFileName = QDir::toNativeSeparators(strName);
     64
     65    /* Remove all trailing dots to avoid multiple dots before extension: */
     66    int iLen;
     67    while (iLen = strFileName.length(), iLen > 0 && strFileName[iLen - 1] == '.')
     68        strFileName.truncate(iLen - 1);
     69
     70    /* Add passed extension if its not done yet: */
     71    if (QFileInfo(strFileName).suffix().toLower() != strExtension)
     72        strFileName += QString(".%1").arg(strExtension);
     73
     74    /* Return result: */
     75    return strFileName;
     76}
     77
     78/* static */
     79QString UIDiskEditorGroupBox::constructMediumFilePath(const QString &strFileName, const QString &strPath)
     80{
     81    /* Wrap file-info around received file name: */
     82    QFileInfo fileInfo(strFileName);
     83    /* If path-info is relative or there is no path-info at all: */
     84    if (fileInfo.fileName() == strFileName || fileInfo.isRelative())
     85    {
     86        /* Resolve path on the basis of  path we have: */
     87        fileInfo = QFileInfo(strPath, strFileName);
     88    }
     89    /* Return full absolute hard disk file path: */
     90    return QDir::toNativeSeparators(fileInfo.absoluteFilePath());
     91}
     92
     93/* static */
     94QString UIDiskEditorGroupBox::defaultExtensionForMediumFormat(const CMediumFormat &mediumFormatRef)
     95{
     96    if (!mediumFormatRef.isNull())
     97    {
     98        /* Load extension / device list: */
     99        QVector<QString> fileExtensions;
     100        QVector<KDeviceType> deviceTypes;
     101        CMediumFormat mediumFormat(mediumFormatRef);
     102        mediumFormat.DescribeFileExtensions(fileExtensions, deviceTypes);
     103        for (int i = 0; i < fileExtensions.size(); ++i)
     104            if (deviceTypes[i] == KDeviceType_HardDisk)
     105                return fileExtensions[i].toLower();
     106    }
     107    AssertMsgFailed(("Extension can't be NULL!\n"));
     108    return QString();
     109}
     110
     111
    59112/*********************************************************************************************************************************
    60113*   UIDiskFormatsGroupBox implementation.                                                                                   *
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.h

    r90370 r90400  
    5757
    5858    UIDiskEditorGroupBox(bool fExpertMode, QWidget *pParent = 0);
     59
     60    static QString appendExtension(const QString &strName, const QString &strExtension);
     61    static QString constructMediumFilePath(const QString &strFileName, const QString &strPath);
     62    static QString defaultExtensionForMediumFormat(const CMediumFormat &mediumFormatRef);
    5963
    6064protected:
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageSizeLocation.cpp

    r90362 r90400  
    279279// }
    280280
    281 UIWizardNewVDPageSizeLocation::UIWizardNewVDPageSizeLocation(const QString &/*strDefaultName*/, const QString &/*strDefaultPath*/, qulonglong /*uDefaultSize*/)
     281UIWizardNewVDPageSizeLocation::UIWizardNewVDPageSizeLocation(const QString &strDefaultName,
     282                                                             const QString &strDefaultPath, qulonglong uDefaultSize)
    282283    : m_pMediumSizePathGroup(0)
     284    , m_uMediumSizeMin(_4M)
     285    , m_uMediumSizeMax(uiCommon().virtualBox().GetSystemProperties().GetInfoVDSize())
     286    , m_strDefaultName(strDefaultName.isEmpty() ? QString("NewVirtualDisk1") : strDefaultName)
     287    , m_strDefaultPath(strDefaultPath)
     288    , m_uDefaultSize(uDefaultSize)
    283289{
    284290
     
    300306    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
    301307    AssertReturnVoid(pMainLayout);
    302     m_pMediumSizePathGroup = new UIMediumSizeAndPathGroupBox(false, 0);
     308    m_pMediumSizePathGroup = new UIMediumSizeAndPathGroupBox(false /* fExpertMode */, 0);
    303309//     {
    304310//         m_pLocationLabel = new QIRichTextLabel(this);
     
    320326//         pMainLayout->addLayout(pLocationLayout);
    321327//         pMainLayout->addWidget(m_pSizeLabel);
     328    connect(m_pMediumSizePathGroup, &UIMediumSizeAndPathGroupBox::sigMediumSizeChanged,
     329            this, &UIWizardNewVDPageSizeLocation::sltMediumSizeChanged);
     330    connect(m_pMediumSizePathGroup, &UIMediumSizeAndPathGroupBox::sigMediumPathChanged,
     331            this, &UIWizardNewVDPageSizeLocation::sltMediumPathChanged);
     332    connect(m_pMediumSizePathGroup, &UIMediumSizeAndPathGroupBox::sigMediumLocationButtonClicked,
     333            this, &UIWizardNewVDPageSizeLocation::sltSelectLocationButtonClicked);
    322334    pMainLayout->addWidget(m_pMediumSizePathGroup);
    323335    pMainLayout->addStretch();
     
    332344}
    333345
     346void UIWizardNewVDPageSizeLocation::sltMediumSizeChanged(qulonglong /*uSize*/)
     347{
     348
     349}
     350
     351void UIWizardNewVDPageSizeLocation::sltMediumPathChanged(const QString &/*strPath*/)
     352{
     353
     354}
     355
    334356void UIWizardNewVDPageSizeLocation::retranslateUi()
    335357{
     
    340362{
    341363    // /* Translate page: */
    342     // retranslateUi();
     364
    343365
    344366    // /* Get default extension for new virtual-disk: */
     
    347369    // if (m_pLocationEditor)
    348370    //     m_pLocationEditor->setText(absoluteFilePath(m_strDefaultName, m_strDefaultPath, m_strDefaultExtension));
     371
     372    UIWizardNewVD *pWizard = qobject_cast<UIWizardNewVD*>(wizard());
     373    AssertReturnVoid(pWizard && m_pMediumSizePathGroup);
     374    const CMediumFormat comMediumFormat = pWizard->mediumFormat();
     375    AssertReturnVoid(!comMediumFormat.isNull());
     376
     377    QString strExtension = UIDiskEditorGroupBox::defaultExtensionForMediumFormat(comMediumFormat);
     378    QString strMediumFilePath =
     379        UIDiskEditorGroupBox::constructMediumFilePath(UIDiskVariantGroupBox::appendExtension(m_strDefaultName,
     380                                                                                             strExtension), m_strDefaultPath);
     381    m_pMediumSizePathGroup->setMediumPath(strMediumFilePath);
     382    m_pMediumSizePathGroup->setMediumSize(m_uDefaultSize > m_uMediumSizeMin && m_uDefaultSize < m_uMediumSizeMax ? m_uDefaultSize : m_uMediumSizeMin);
     383    retranslateUi();
    349384}
    350385
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageSizeLocation.h

    r90356 r90400  
    7272//        QString m_strDefaultPath;
    7373//        QString m_strDefaultExtension;
    74 //        qulonglong m_uMediumSizeMin;
    75 //        qulonglong m_uMediumSizeMax;
     74
    7675//     /** @} */
    7776
     
    101100private slots:
    102101
    103     /** Location editors stuff: */
    104102    void sltSelectLocationButtonClicked();
     103    void sltMediumSizeChanged(qulonglong uSize);
     104    void sltMediumPathChanged(const QString &strPath);
    105105
    106106private:
     
    113113
    114114    UIMediumSizeAndPathGroupBox *m_pMediumSizePathGroup;
     115    qulonglong m_uMediumSizeMin;
     116    qulonglong m_uMediumSizeMax;
     117    QString m_strDefaultName;
     118    QString m_strDefaultPath;
     119    qulonglong m_uDefaultSize;
     120    QSet<QString> m_userModifiedParameters;
    115121};
    116122
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageVariant.cpp

    r90372 r90400  
    190190void UIWizardNewVDPageVariant::initializePage()
    191191{
    192     retranslateUi();
    193192    UIWizardNewVD *pWizard = qobject_cast<UIWizardNewVD*>(wizard());
    194193    AssertReturnVoid(pWizard && m_pVariantGroupBox);
    195194    setWidgetVisibility(pWizard->mediumFormat());
    196195    newVDWizardPropertySet(MediumVariant, m_pVariantGroupBox->mediumVariant());
     196    retranslateUi();
    197197}
    198198
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMDiskPageBasic.cpp

    r90295 r90400  
    3737#include "UIMessageCenter.h"
    3838#include "UIWizardNewVMDiskPageBasic.h"
     39#include "UIWizardDiskEditors.h"
    3940
    4041/* COM includes: */
     
    4546#include <iprt/path.h>
    4647
    47 
    48 QString UIWizardNewVMDiskPage::defaultExtension(const CMediumFormat &mediumFormatRef)
    49 {
    50     if (!mediumFormatRef.isNull())
    51     {
    52         /* Load extension / device list: */
    53         QVector<QString> fileExtensions;
    54         QVector<KDeviceType> deviceTypes;
    55         CMediumFormat mediumFormat(mediumFormatRef);
    56         mediumFormat.DescribeFileExtensions(fileExtensions, deviceTypes);
    57         for (int i = 0; i < fileExtensions.size(); ++i)
    58             if (deviceTypes[i] == KDeviceType_HardDisk)
    59                 return fileExtensions[i].toLower();
    60     }
    61     AssertMsgFailed(("Extension can't be NULL!\n"));
    62     return QString();
    63 }
    64 
    65 QString UIWizardNewVMDiskPage::toFileName(const QString &strName, const QString &strExtension)
    66 {
    67     /* Convert passed name to native separators (it can be full, actually): */
    68     QString strFileName = QDir::toNativeSeparators(strName);
    69 
    70     /* Remove all trailing dots to avoid multiple dots before extension: */
    71     int iLen;
    72     while (iLen = strFileName.length(), iLen > 0 && strFileName[iLen - 1] == '.')
    73         strFileName.truncate(iLen - 1);
    74 
    75     /* Add passed extension if its not done yet: */
    76     if (QFileInfo(strFileName).suffix().toLower() != strExtension)
    77         strFileName += QString(".%1").arg(strExtension);
    78 
    79     /* Return result: */
    80     return strFileName;
    81 }
    82 
    83 QString UIWizardNewVMDiskPage::absoluteFilePath(const QString &strFileName, const QString &strPath)
    84 {
    85     /* Wrap file-info around received file name: */
    86     QFileInfo fileInfo(strFileName);
    87     /* If path-info is relative or there is no path-info at all: */
    88     if (fileInfo.fileName() == strFileName || fileInfo.isRelative())
    89     {
    90         /* Resolve path on the basis of  path we have: */
    91         fileInfo = QFileInfo(strPath, strFileName);
    92     }
    93     /* Return full absolute hard disk file path: */
    94     return QDir::toNativeSeparators(fileInfo.absoluteFilePath());
    95 }
    9648
    9749QUuid UIWizardNewVMDiskPage::getWithFileOpenDialog(const QString &strOSTypeID,
     
    425377        setWidgetVisibility(pWizard->mediumFormat());
    426378    }
    427     QString strDefaultExtension =  UIWizardNewVMDiskPage::defaultExtension(pWizard->mediumFormat());
     379    QString strDefaultExtension =  UIDiskEditorGroupBox::defaultExtensionForMediumFormat(pWizard->mediumFormat());
    428380
    429381    /* We set the medium name and path according to machine name/path and do not allow user change these in the guided mode: */
     
    431383    const QString &strMachineFolder = pWizard->machineFolder();
    432384    QString strMediumPath =
    433         UIWizardNewVMDiskPage::absoluteFilePath(UIWizardNewVMDiskPage::toFileName(strDefaultName,
     385        UIDiskEditorGroupBox::constructMediumFilePath(UIDiskEditorGroupBox::appendExtension(strDefaultName,
    434386                                                                                  strDefaultExtension), strMachineFolder);
    435387    newVMWizardPropertySet(MediumPath, strMediumPath);
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMDiskPageBasic.h

    r90295 r90400  
    5555namespace UIWizardNewVMDiskPage
    5656{
    57     QString defaultExtension(const CMediumFormat &mediumFormatRef);
    58     QString toFileName(const QString &strName, const QString &strExtension);
    5957    QUuid getWithFileOpenDialog(const QString &strOSTypeID,
    6058                                const QString &strMachineFolder,
    6159                                const QString &strMachineBaseName,
    6260                                QWidget *pCaller);
    63     QString absoluteFilePath(const QString &strFileName, const QString &strPath);
    6461    bool checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize);
    6562    QString selectNewMediumLocation(UIWizardNewVM *pWizard);
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp

    r90362 r90400  
    707707        return;
    708708    QString strMediumPath =
    709         UIWizardNewVMDiskPage::toFileName(strSelectedPath,
    710                                           UIWizardNewVMDiskPage::defaultExtension(pWizard->mediumFormat()));
     709        UIDiskEditorGroupBox::appendExtension(strSelectedPath,
     710                                              UIDiskEditorGroupBox::defaultExtensionForMediumFormat(pWizard->mediumFormat()));
    711711    QFileInfo mediumPath(strMediumPath);
    712712    m_pSizeAndLocationGroup->setMediumPath(QDir::toNativeSeparators(mediumPath.absoluteFilePath()));
     
    812812            strMediumPath = uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
    813813    }
    814     QString strExtension = UIWizardNewVMDiskPage::defaultExtension(pWizard->mediumFormat());
     814    QString strExtension = UIDiskEditorGroupBox::defaultExtensionForMediumFormat(pWizard->mediumFormat());
    815815    if (m_pSizeAndLocationGroup)
    816816    {
    817817        QString strMediumFilePath =
    818             UIWizardNewVMDiskPage::absoluteFilePath(UIWizardNewVMDiskPage::toFileName(strDiskFileName,
     818            UIDiskEditorGroupBox::constructMediumFilePath(UIDiskEditorGroupBox::appendExtension(strDiskFileName,
    819819                                                                                      strExtension), strMediumPath);
    820820        m_pSizeAndLocationGroup->blockSignals(true);
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