Changeset 90761 in vbox for trunk/src/VBox/Frontends/VirtualBox
- Timestamp:
- Aug 20, 2021 3:20:36 PM (3 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp
r82968 r90761 465 465 466 466 /* Create size editor: */ 467 m_pEditorSize = new UIMediumSizeEditor ;467 m_pEditorSize = new UIMediumSizeEditor(0 /* parent */); 468 468 AssertPtrReturnVoid(m_pEditorSize); 469 469 { -
trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediumSizeEditor.cpp
r82968 r90761 34 34 const qulonglong UIMediumSizeEditor::m_uSectorSize = 512; 35 35 36 UIMediumSizeEditor::UIMediumSizeEditor(QWidget *pParent /* = 0*/)36 UIMediumSizeEditor::UIMediumSizeEditor(QWidget *pParent, qulonglong uMinimumSize /* = _4M */) 37 37 : QIWithRetranslateUI<QWidget>(pParent) 38 , m_uSizeMin( _4M)38 , m_uSizeMin(uMinimumSize) 39 39 , m_uSizeMax(uiCommon().virtualBox().GetSystemProperties().GetInfoVDSize()) 40 40 , m_iSliderScale(calculateSliderScale(m_uSizeMax)) -
trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMediumSizeEditor.h
r82968 r90761 51 51 52 52 /** Constructs medium size editor passing @a pParent to the base-class. */ 53 UIMediumSizeEditor(QWidget *pParent = 0 );53 UIMediumSizeEditor(QWidget *pParent = 0, qulonglong uMinimumSize = _4M); 54 54 55 55 /** Returns the medium size. */ -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVD.cpp
r90755 r90761 34 34 : UINativeWizard(pParent, WizardType_CloneVD) 35 35 , m_comSourceVirtualDisk(comSourceVirtualDisk) 36 , m_enm SourceVirtualDiskDeviceType(m_comSourceVirtualDisk.GetDeviceType())36 , m_enmDeviceType(m_comSourceVirtualDisk.GetDeviceType()) 37 37 , m_iMediumVariantPageIndex(-1) 38 38 { … … 44 44 setPixmapName(":/wizard_new_harddisk_bg.png"); 45 45 #endif /* VBOX_WS_MAC */ 46 } 47 48 KDeviceType UIWizardCloneVD::deviceType() const 49 { 50 return m_enmDeviceType; 46 51 } 47 52 … … 61 66 62 67 // /* Create new virtual disk image: */ 63 // CMedium comVirtualDisk = comVBox.CreateMedium(comMediumFormat.GetName(), strMediumPath, KAccessMode_ReadWrite, m_enm SourceVirtualDiskDeviceType);68 // CMedium comVirtualDisk = comVBox.CreateMedium(comMediumFormat.GetName(), strMediumPath, KAccessMode_ReadWrite, m_enmDeviceType); 64 69 // if (!comVBox.isOk()) 65 70 // { … … 104 109 case WizardMode_Expert: 105 110 { 106 addPage(new UIWizardCloneVDPageBasic1(m_enm SourceVirtualDiskDeviceType));107 m_iMediumVariantPageIndex = addPage(new UIWizardCloneVDPageBasic2(m_enm SourceVirtualDiskDeviceType));108 addPage(new UIWizardCloneVDPageBasic3 );111 addPage(new UIWizardCloneVDPageBasic1(m_enmDeviceType)); 112 m_iMediumVariantPageIndex = addPage(new UIWizardCloneVDPageBasic2(m_enmDeviceType)); 113 addPage(new UIWizardCloneVDPageBasic3(sourceDiskLogicalSize())); 109 114 break; 110 115 } 111 116 // case WizardMode_Expert: 112 117 // { 113 // setPage(PageExpert, new UIWizardCloneVDPageExpert(m_enm SourceVirtualDiskDeviceType));118 // setPage(PageExpert, new UIWizardCloneVDPageExpert(m_enmDeviceType)); 114 119 // break; 115 120 // } … … 144 149 } 145 150 151 qulonglong UIWizardCloneVD::mediumSize() const 152 { 153 return m_uMediumSize; 154 } 155 156 void UIWizardCloneVD::setMediumSize(qulonglong uMediumSize) 157 { 158 m_uMediumSize = uMediumSize; 159 } 160 161 const QString &UIWizardCloneVD::mediumPath() const 162 { 163 return m_strMediumPath; 164 } 165 166 void UIWizardCloneVD::setMediumPath(const QString &strPath) 167 { 168 m_strMediumPath = strPath; 169 } 170 171 qulonglong UIWizardCloneVD::sourceDiskLogicalSize() const 172 { 173 if (m_comSourceVirtualDisk.isNull()) 174 return 0; 175 return m_comSourceVirtualDisk.GetLogicalSize(); 176 } 177 178 QString UIWizardCloneVD::sourceDiskFilePath() const 179 { 180 if (m_comSourceVirtualDisk.isNull()) 181 return QString(); 182 return m_comSourceVirtualDisk.GetLocation(); 183 } 184 185 QString UIWizardCloneVD::sourceDiskName() const 186 { 187 if (m_comSourceVirtualDisk.isNull()) 188 return QString(); 189 return m_comSourceVirtualDisk.GetName(); 190 } 191 146 192 void UIWizardCloneVD::setMediumVariantPageVisibility() 147 193 { -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVD.h
r90755 r90761 45 45 46 46 /** Returns the source virtual-disk device type. */ 47 KDeviceType sourceVirtualDiskDeviceType() const { return m_enmSourceVirtualDiskDeviceType; }47 KDeviceType deviceType() const; 48 48 49 49 /** Makes a copy of source virtual-disk. */ … … 55 55 qulonglong mediumVariant() const; 56 56 void setMediumVariant(qulonglong uMediumVariant); 57 58 qulonglong mediumSize() const; 59 void setMediumSize(qulonglong uMediumSize); 60 61 const QString &mediumPath() const; 62 void setMediumPath(const QString &strPath); 63 64 qulonglong sourceDiskLogicalSize() const; 65 QString sourceDiskFilePath() const; 66 QString sourceDiskName() const; 57 67 58 68 protected: … … 72 82 73 83 /** Holds the source virtual-disk device type. */ 74 KDeviceType m_enm SourceVirtualDiskDeviceType;84 KDeviceType m_enmDeviceType; 75 85 int m_iMediumVariantPageIndex; 86 qulonglong m_uMediumSize; 87 QString m_strMediumPath; 76 88 }; 77 89 -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic3.cpp
r90756 r90761 164 164 // } 165 165 166 UIWizardCloneVDPageBasic3::UIWizardCloneVDPageBasic3( )166 UIWizardCloneVDPageBasic3::UIWizardCloneVDPageBasic3(qulonglong uSourceDiskLogicaSize) 167 167 : m_pMediumSizePathGroupBox(0) 168 168 { 169 prepare( );170 } 171 172 void UIWizardCloneVDPageBasic3::prepare( )169 prepare(uSourceDiskLogicaSize); 170 } 171 172 void UIWizardCloneVDPageBasic3::prepare(qulonglong uSourceDiskLogicaSize) 173 173 { 174 174 QVBoxLayout *pMainLayout = new QVBoxLayout(this); 175 175 176 m_pMediumSizePathGroupBox = new UIMediumSizeAndPathGroupBox(false /* expert mode */, 0 );176 m_pMediumSizePathGroupBox = new UIMediumSizeAndPathGroupBox(false /* expert mode */, 0 /* parent */, uSourceDiskLogicaSize); 177 177 if (m_pMediumSizePathGroupBox) 178 178 pMainLayout->addWidget(m_pMediumSizePathGroupBox); … … 180 180 pMainLayout->addStretch(); 181 181 182 // connect(m_pDestinationDiskEditor, &QLineEdit::textChanged, this, &UIWizardCloneVDPageBasic3::completeChanged); 183 // connect(m_pDestinationDiskOpenButton, &QIToolButton::clicked, this, &UIWizardCloneVDPageBasic3::sltSelectLocationButtonClicked); 182 connect(m_pMediumSizePathGroupBox, &UIMediumSizeAndPathGroupBox::sigMediumLocationButtonClicked, 183 this, &UIWizardCloneVDPageBasic3::sltSelectLocationButtonClicked); 184 connect(m_pMediumSizePathGroupBox, &UIMediumSizeAndPathGroupBox::sigMediumPathChanged, 185 this, &UIWizardCloneVDPageBasic3::sltMediumPathChanged); 184 186 185 187 retranslateUi(); 186 }187 188 void UIWizardCloneVDPageBasic3::sltSelectLocationButtonClicked()189 {190 /* Call to base-class: */191 //onSelectLocationButtonClicked();192 188 } 193 189 … … 200 196 void UIWizardCloneVDPageBasic3::initializePage() 201 197 { 202 // /* Translate page: */ 203 // retranslateUi(); 204 205 // UIWizardCloneVD *pWizard = qobject_cast<UIWizardCloneVD*>(wizardImp()); 206 // if (!pWizard) 207 // return; 208 // const CMedium &comMedium = pWizard->sourceVirtualDisk(); 209 210 // /* Get source virtual-disk file-information: */ 211 // QFileInfo sourceFileInfo(comMedium.GetLocation()); 212 // /* Get default path for virtual-disk copy: */ 213 // m_strDefaultPath = sourceFileInfo.absolutePath(); 214 // /* Get default extension for virtual-disk copy: */ 215 // acquireExtensions(field("mediumFormat").value<CMediumFormat>(), 216 // static_cast<UIWizardCloneVD*>(wizardImp())->sourceVirtualDiskDeviceType(), 217 // m_aAllowedExtensions, m_strDefaultExtension); 218 // /* Compose default-name for virtual-disk copy: */ 219 // QString strMediumName = UIWizardCloneVD::tr("%1_copy", "copied virtual disk image name").arg(sourceFileInfo.completeBaseName()); 220 // /* Set default-name as text for location editor: */ 221 // m_pDestinationDiskEditor->setText(strMediumName); 198 AssertReturnVoid(cloneWizard() && m_pMediumSizePathGroupBox); 199 /* Translate page: */ 200 retranslateUi(); 201 UIWizardCloneVD *pWizard = cloneWizard(); 202 m_pMediumSizePathGroupBox->blockSignals(true); 203 204 /* Initialize medium size widget and wizard's medium size parameter: */ 205 if (!m_userModifiedParameters.contains("MediumSize")) 206 { 207 m_pMediumSizePathGroupBox->setMediumSize(pWizard->sourceDiskLogicalSize()); 208 pWizard->setMediumSize(m_pMediumSizePathGroupBox->mediumSize()); 209 } 210 211 if (!m_userModifiedParameters.contains("MediumPath")) 212 { 213 const CMediumFormat comMediumFormat = pWizard->mediumFormat(); 214 AssertReturnVoid(!comMediumFormat.isNull()); 215 QString strExtension = UIDiskFormatsGroupBox::defaultExtension(comMediumFormat, KDeviceType_HardDisk); 216 QString strSourceDiskPath = QDir::toNativeSeparators(QFileInfo(pWizard->sourceDiskFilePath()).absolutePath()); 217 /* Disk name without the format extension: */ 218 QString strDiskName = QString("%1_%2").arg(QFileInfo(pWizard->sourceDiskName()).completeBaseName()).arg(tr("copy")); 219 220 QString strMediumFilePath = 221 UIDiskEditorGroupBox::constructMediumFilePath(UIDiskVariantGroupBox::appendExtension(strDiskName, 222 strExtension), strSourceDiskPath); 223 m_pMediumSizePathGroupBox->setMediumPath(strMediumFilePath); 224 pWizard->setMediumPath(strMediumFilePath); 225 } 226 m_pMediumSizePathGroupBox->blockSignals(false); 222 227 } 223 228 … … 255 260 return fResult; 256 261 } 262 263 UIWizardCloneVD *UIWizardCloneVDPageBasic3::cloneWizard() const 264 { 265 return qobject_cast<UIWizardCloneVD*>(wizard()); 266 } 267 268 void UIWizardCloneVDPageBasic3::sltSelectLocationButtonClicked() 269 { 270 UIWizardCloneVD *pWizard = cloneWizard(); 271 AssertReturnVoid(pWizard); 272 CMediumFormat comMediumFormat(pWizard->mediumFormat()); 273 QString strSelectedPath = 274 UIDiskEditorGroupBox::openFileDialogForDiskFile(pWizard->mediumPath(), comMediumFormat, pWizard); 275 276 if (strSelectedPath.isEmpty()) 277 return; 278 QString strMediumPath = 279 UIDiskEditorGroupBox::appendExtension(strSelectedPath, 280 UIDiskFormatsGroupBox::defaultExtension(pWizard->mediumFormat(), KDeviceType_HardDisk)); 281 QFileInfo mediumPath(strMediumPath); 282 m_pMediumSizePathGroupBox->setMediumPath(QDir::toNativeSeparators(mediumPath.absoluteFilePath())); 283 } 284 285 void UIWizardCloneVDPageBasic3::sltMediumPathChanged(const QString &strPath) 286 { 287 UIWizardCloneVD *pWizard = cloneWizard(); 288 AssertReturnVoid(pWizard); 289 m_userModifiedParameters << "MediumPath"; 290 QString strMediumPath = 291 UIDiskEditorGroupBox::appendExtension(strPath, 292 UIDiskFormatsGroupBox::defaultExtension(pWizard->mediumFormat(), pWizard->deviceType())); 293 pWizard->setMediumPath(strMediumPath); 294 emit completeChanged(); 295 } -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic3.h
r90756 r90761 24 24 /* Qt includes: */ 25 25 #include <QVariant> 26 #include <QSet> 26 27 27 28 /* GUI includes: */ … … 34 35 class QIRichTextLabel; 35 36 class UIMediumSizeAndPathGroupBox; 37 class UIWizardCloneVD; 36 38 37 39 // /** 4th page of the Clone Virtual Disk Image wizard (base part): */ … … 83 85 84 86 /** Constructs basic page. */ 85 UIWizardCloneVDPageBasic3( );87 UIWizardCloneVDPageBasic3(qulonglong uSourceDiskLogicaSize); 86 88 87 89 private slots: … … 89 91 /** Handles command to open target disk. */ 90 92 void sltSelectLocationButtonClicked(); 93 void sltMediumPathChanged(const QString &strPath); 91 94 92 95 private: … … 94 97 /** Handles translation event. */ 95 98 virtual void retranslateUi() /* override */; 96 void prepare( );99 void prepare(qulonglong uSourceDiskLogicaSize); 97 100 98 101 /** Prepares the page. */ … … 104 107 /** Returns whether the page is valid. */ 105 108 virtual bool validatePage() /* override */; 109 UIWizardCloneVD *cloneWizard() const; 110 106 111 107 112 UIMediumSizeAndPathGroupBox *m_pMediumSizePathGroupBox; 113 114 QSet<QString> m_userModifiedParameters; 108 115 }; 109 116 -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.cpp
r90755 r90761 113 113 } 114 114 115 /* static */ 116 QString UIDiskEditorGroupBox::openFileDialogForDiskFile(const QString &strInitialPath, CMediumFormat &comMediumFormat, QWidget *pParent) 117 { 118 QString strChosenFilePath; 119 QFileInfo initialPath(strInitialPath); 120 QDir folder = initialPath.path(); 121 QString strFileName = initialPath.fileName(); 122 123 // /* Set the first parent folder that exists as the current: */ 124 while (!folder.exists() && !folder.isRoot()) 125 { 126 QFileInfo folderInfo(folder.absolutePath()); 127 if (folder == QDir(folderInfo.absolutePath())) 128 break; 129 folder = folderInfo.absolutePath(); 130 } 131 AssertReturn(folder.exists() && !folder.isRoot(), strChosenFilePath); 132 133 QVector<QString> fileExtensions; 134 QVector<KDeviceType> deviceTypes; 135 comMediumFormat.DescribeFileExtensions(fileExtensions, deviceTypes); 136 QStringList validExtensionList; 137 for (int i = 0; i < fileExtensions.size(); ++i) 138 if (deviceTypes[i] == KDeviceType_HardDisk) 139 validExtensionList << QString("*.%1").arg(fileExtensions[i]); 140 /* Compose full filter list: */ 141 QString strBackendsList = QString("%1 (%2)").arg(comMediumFormat.GetName()).arg(validExtensionList.join(" ")); 142 143 strChosenFilePath = QIFileDialog::getSaveFileName(folder.absoluteFilePath(strFileName), 144 strBackendsList, pParent, 145 UICommon::tr("Please choose a location for new virtual hard disk file")); 146 return strChosenFilePath; 147 } 115 148 116 149 … … 447 480 *********************************************************************************************************************************/ 448 481 449 UIMediumSizeAndPathGroupBox::UIMediumSizeAndPathGroupBox(bool fExpertMode, QWidget *pParent /* = 0 */)482 UIMediumSizeAndPathGroupBox::UIMediumSizeAndPathGroupBox(bool fExpertMode, QWidget *pParent, qulonglong uMinimumMediumSize) 450 483 : UIDiskEditorGroupBox(fExpertMode, pParent) 451 484 , m_pLocationEditor(0) … … 455 488 , m_pSizeLabel(0) 456 489 { 457 prepare( );458 } 459 460 void UIMediumSizeAndPathGroupBox::prepare( )490 prepare(uMinimumMediumSize); 491 } 492 493 void UIMediumSizeAndPathGroupBox::prepare(qulonglong uMinimumMediumSize) 461 494 { 462 495 QVBoxLayout *pMainLayout = new QVBoxLayout(this); … … 478 511 if (!m_fExpertMode) 479 512 m_pSizeLabel = new QIRichTextLabel; 480 m_pMediumSizeEditor = new UIMediumSizeEditor ;513 m_pMediumSizeEditor = new UIMediumSizeEditor(0 /* parent */, uMinimumMediumSize); 481 514 482 515 /* Add widgets to main layout: */ -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardDiskEditors.h
r90755 r90761 62 62 static QString constructMediumFilePath(const QString &strFileName, const QString &strPath); 63 63 static bool checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize); 64 static QString openFileDialogForDiskFile(const QString &strInitialPath, CMediumFormat &comMediumFormat, QWidget *pParent); 64 65 65 66 protected: … … 149 150 public: 150 151 151 UIMediumSizeAndPathGroupBox(bool fExpertMode, QWidget *pParent = 0);152 UIMediumSizeAndPathGroupBox(bool fExpertMode, QWidget *pParent, qulonglong uMinimumMediumSize); 152 153 QString mediumPath() const; 153 154 void setMediumPath(const QString &strMediumPath); … … 159 160 private: 160 161 161 void prepare( );162 void prepare(qulonglong uMinimumMediumSize); 162 163 virtual void retranslateUi() /* override final */; 163 164 static QString stripFormatExtension(const QString &strFileName, -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.cpp
r90748 r90761 64 64 { 65 65 QGridLayout *pMainLayout = new QGridLayout(this); 66 m_pSizeAndPathGroup = new UIMediumSizeAndPathGroupBox(true /* fExpertMode */, 0 );66 m_pSizeAndPathGroup = new UIMediumSizeAndPathGroupBox(true /* fExpertMode */, 0 /* parent */, _4M /* minimum size */); 67 67 m_pFormatGroup = new UIDiskFormatsGroupBox(true /* fExpertMode */, KDeviceType_HardDisk, 0); 68 68 m_pVariantGroup = new UIDiskVariantGroupBox(true /* fExpertMode */, 0); -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageSizeLocation.cpp
r90748 r90761 31 31 #include "CSystemProperties.h" 32 32 33 34 33 QString UIWizardNewVDSizeLocation::selectNewMediumLocation(UIWizardNewVD *pWizard) 35 34 { … … 85 84 QVBoxLayout *pMainLayout = new QVBoxLayout(this); 86 85 AssertReturnVoid(pMainLayout); 87 m_pMediumSizePathGroup = new UIMediumSizeAndPathGroupBox(false /* fExpertMode */, 0 );86 m_pMediumSizePathGroup = new UIMediumSizeAndPathGroupBox(false /* fExpertMode */, 0 /* parent */, _4M /* minimum size */); 88 87 connect(m_pMediumSizePathGroup, &UIMediumSizeAndPathGroupBox::sigMediumSizeChanged, 89 88 this, &UIWizardNewVDPageSizeLocation::sltMediumSizeChanged); -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp
r90748 r90761 453 453 QGridLayout *pDiskContainerLayout = new QGridLayout(pNewDiskContainerWidget); 454 454 455 m_pSizeAndLocationGroup = new UIMediumSizeAndPathGroupBox(true, 0 );455 m_pSizeAndLocationGroup = new UIMediumSizeAndPathGroupBox(true, 0 /* parent */, _4M /* minimum size */); 456 456 pDiskContainerLayout->addWidget(m_pSizeAndLocationGroup, 0, 0, 2, 2); 457 457 m_pFormatButtonGroup = new UIDiskFormatsGroupBox(true, KDeviceType_HardDisk, 0);
Note:
See TracChangeset
for help on using the changeset viewer.