void UIWizardNewVMPage3::ensureNewVirtualDiskDeleted() { /* Make sure virtual-disk valid: */ if (m_virtualDisk.isNull()) return; /* Remember virtual-disk attributes: */ QString strMediumID = m_virtualDisk.GetId(); QString strLocation = m_virtualDisk.GetLocation(); /* Prepare delete storage progress: */ CProgress progress = m_virtualDisk.DeleteStorage(); if (m_virtualDisk.isOk()) { /* Show delete storage progress: */ msgCenter().showModalProgressDialog(progress, thisImp()->windowTitle(), ":/progress_media_delete_90px.png", thisImp()); if (!progress.isOk() || progress.GetResultCode() != 0) msgCenter().cannotDeleteHardDiskStorage(progress, strLocation, thisImp()); } else msgCenter().cannotDeleteHardDiskStorage(m_virtualDisk, strLocation, thisImp()); /* Inform VBoxGlobal about it: */ vboxGlobal().deleteMedium(strMediumID); /* Detach virtual-disk anyway: */ m_virtualDisk.detach(); }
void UIWizardNewVMPage3::ensureNewVirtualDiskDeleted() { /* Make sure virtual-disk exists: */ if (m_virtualDisk.isNull()) return; /* Remember virtual-disk ID: */ QString strId = m_virtualDisk.GetId(); /* 1st step: start delete-storage progress: */ CProgress progress = m_virtualDisk.DeleteStorage(); /* Get initial state: */ bool fSuccess = m_virtualDisk.isOk(); /* 2nd step: show delete-storage progress: */ if (fSuccess) { msgCenter().showModalProgressDialog(progress, thisImp()->windowTitle(), ":/progress_media_delete_90px.png", thisImp(), true); fSuccess = progress.isOk() && progress.GetResultCode() == S_OK; } /* 3rd step: notify GUI about virtual-disk was deleted or show error if any: */ if (fSuccess) vboxGlobal().removeMedium(UIMediumType_HardDisk, strId); else msgCenter().cannotDeleteHardDiskStorage(thisImp(), m_virtualDisk, progress); /* Detach virtual-disk finally: */ m_virtualDisk.detach(); }
void UIWizardFirstRunPage::onOpenMediumWithFileOpenDialog() { /* Get opened vboxMedium id: */ QUuid uMediumId; vboxGlobal().openMediumSelectorDialog(thisImp(), UIMediumDeviceType_DVD, uMediumId, "", "", "", true); /* Update medium-combo if necessary: */ if (!uMediumId.isNull()) m_pMediaSelector->setCurrentItem(uMediumId); }
void UIWizardNewVDPage3::onSelectLocationButtonClicked() { /* Get current folder and filename: */ QFileInfo fullFilePath(mediumPath()); QDir folder = fullFilePath.path(); QString strFileName = fullFilePath.fileName(); /* Set the first parent folder that exists as the current: */ while (!folder.exists() && !folder.isRoot()) { QFileInfo folderInfo(folder.absolutePath()); if (folder == QDir(folderInfo.absolutePath())) break; folder = folderInfo.absolutePath(); } /* But if it doesn't exists at all: */ if (!folder.exists() || folder.isRoot()) { /* Use recommended one folder: */ QFileInfo defaultFilePath(absoluteFilePath(strFileName, m_strDefaultPath)); folder = defaultFilePath.path(); } /* Prepare backends list: */ QVector<QString> fileExtensions; QVector<KDeviceType> deviceTypes; CMediumFormat mediumFormat = fieldImp("mediumFormat").value<CMediumFormat>(); mediumFormat.DescribeFileExtensions(fileExtensions, deviceTypes); QStringList validExtensionList; for (int i = 0; i < fileExtensions.size(); ++i) if (deviceTypes[i] == KDeviceType_HardDisk) validExtensionList << QString("*.%1").arg(fileExtensions[i]); /* Compose full filter list: */ QString strBackendsList = QString("%1 (%2)").arg(mediumFormat.GetName()).arg(validExtensionList.join(" ")); /* Open corresponding file-dialog: */ QString strChosenFilePath = QIFileDialog::getSaveFileName(folder.absoluteFilePath(strFileName), strBackendsList, thisImp(), VBoxGlobal::tr("Please choose a location for new virtual hard drive file")); /* If there was something really chosen: */ if (!strChosenFilePath.isEmpty()) { /* If valid file extension is missed, append it: */ if (QFileInfo(strChosenFilePath).suffix().isEmpty()) strChosenFilePath += QString(".%1").arg(m_strDefaultExtension); m_pLocationEditor->setText(QDir::toNativeSeparators(strChosenFilePath)); m_pLocationEditor->selectAll(); m_pLocationEditor->setFocus(); } }
bool UIWizardNewVMPage3::getWithNewVirtualDiskWizard() { /* Create New Virtual Hard Drive wizard: */ UISafePointerWizardNewVD pWizard = new UIWizardNewVD(thisImp(), fieldImp("machineBaseName").toString(), fieldImp("machineFolder").toString(), fieldImp("type").value<CGuestOSType>().GetRecommendedHDD(), wizardImp()->mode()); pWizard->prepare(); bool fResult = false; if (pWizard->exec() == QDialog::Accepted) { fResult = true; m_virtualDisk = pWizard->virtualDisk(); m_pDiskSelector->setCurrentItem(m_virtualDisk.GetId()); m_pDiskPresent->click(); } if (pWizard) delete pWizard; return fResult; }
bool UIWizardNewVMPageBasic3::validatePage() { /* Initial result: */ bool fResult = true; /* Ensure unused virtual-disk is deleted: */ if (m_pDiskSkip->isChecked() || m_pDiskCreate->isChecked() || (!m_virtualDisk.isNull() && m_strVirtualDiskId != m_virtualDisk.GetId())) ensureNewVirtualDiskDeleted(); if (m_pDiskSkip->isChecked()) { /* Ask user about disk-less machine unless that's the recommendation: */ if (!m_fRecommendedNoDisk) fResult = msgCenter().confirmHardDisklessMachine(thisImp()); } else if (m_pDiskCreate->isChecked()) { /* Show the New Virtual Hard Drive wizard: */ fResult = getWithNewVirtualDiskWizard(); } if (fResult) { /* Lock finish button: */ startProcessing(); /* Try to create VM: */ fResult = qobject_cast<UIWizardNewVM*>(wizard())->createVM(); /* Unlock finish button: */ endProcessing(); } /* Return result: */ return fResult; }
void UIWizardCloneVDPage1::onHandleOpenSourceDiskClick() { /* Get source virtual-disk using file-open dialog: */ QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(UIMediumType_HardDisk, thisImp()); if (!strMediumId.isNull()) { /* Update medium-combo if necessary: */ m_pSourceDiskSelector->setCurrentItem(strMediumId); /* Focus on virtual-disk combo: */ m_pSourceDiskSelector->setFocus(); } }
void UIWizardNewVMPage3::getWithFileOpenDialog() { /* Get opened medium id: */ QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(UIMediumType_HardDisk, thisImp()); if (!strMediumId.isNull()) { /* Update medium-combo if necessary: */ m_pDiskSelector->setCurrentItem(strMediumId); /* Update hard disk source: */ updateVirtualDiskSource(); /* Focus on hard disk combo: */ m_pDiskSelector->setFocus(); } }
void UIWizardFirstRunPage::onOpenMediumWithFileOpenDialog() { /* Get opened vboxMedium id: */ QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(m_pMediaSelector->type(), thisImp()); /* Update medium-combo if necessary: */ if (!strMediumId.isNull()) m_pMediaSelector->setCurrentItem(strMediumId); }