bool UIWizardExportApp::exportVMs(CAppliance &appliance) { /* Get the map of the password IDs: */ EncryptedMediumMap encryptedMediums; foreach (const QString &strPasswordId, appliance.GetPasswordIds()) foreach (const QString &strMediumId, appliance.GetMediumIdsForPasswordId(strPasswordId)) encryptedMediums.insert(strPasswordId, strMediumId); /* Ask for the disk encryption passwords if necessary: */ if (!encryptedMediums.isEmpty()) { /* Create corresponding dialog: */ QPointer<UIAddDiskEncryptionPasswordDialog> pDlg = new UIAddDiskEncryptionPasswordDialog(this, window()->windowTitle(), encryptedMediums); /* Execute the dialog: */ if (pDlg->exec() == QDialog::Accepted) { /* Acquire the passwords provided: */ const EncryptionPasswordMap encryptionPasswords = pDlg->encryptionPasswords(); /* Delete the dialog: */ delete pDlg; /* Make sure the passwords were really provided: */ AssertReturn(!encryptionPasswords.isEmpty(), false); /* Provide appliance with passwords if possible: */ appliance.AddPasswords(encryptionPasswords.keys().toVector(), encryptionPasswords.values().toVector()); if (!appliance.isOk()) { /* Warn the user about failure: */ msgCenter().cannotAddDiskEncryptionPassword(appliance); return false; } } else { /* Any modal dialog can be destroyed in own event-loop * as a part of application termination procedure.. * We have to check if the dialog still valid. */ if (pDlg) { /* Delete the dialog: */ delete pDlg; } return false; } } /* Write the appliance: */ QVector<KExportOptions> options; if (field("manifestSelected").toBool()) options.append(KExportOptions_CreateManifest); CProgress progress = appliance.Write(field("format").toString(), options, uri()); bool fResult = appliance.isOk(); if (fResult) { /* Show some progress, so the user know whats going on: */ msgCenter().showModalProgressDialog(progress, QApplication::translate("UIWizardExportApp", "Exporting Appliance ..."), ":/progress_export_90px.png", this); if (progress.GetCanceled()) return false; if (!progress.isOk() || progress.GetResultCode() != 0) { msgCenter().cannotExportAppliance(progress, appliance.GetPath(), this); return false; } else return true; } if (!fResult) msgCenter().cannotExportAppliance(appliance, this); return false; }
void UIMachineSettingsGeneral::loadToCacheFrom(QVariant &data) { /* Fetch data to machine: */ UISettingsPageMachine::fetchData(data); /* Clear cache initially: */ m_cache.clear(); /* Prepare general data: */ UIDataSettingsMachineGeneral generalData; /* 'Basic' tab data: */ generalData.m_strName = m_machine.GetName(); generalData.m_strGuestOsTypeId = m_machine.GetOSTypeId(); /* 'Advanced' tab data: */ generalData.m_strSnapshotsFolder = m_machine.GetSnapshotFolder(); generalData.m_strSnapshotsHomeDir = QFileInfo(m_machine.GetSettingsFilePath()).absolutePath(); generalData.m_clipboardMode = m_machine.GetClipboardMode(); generalData.m_dndMode = m_machine.GetDnDMode(); /* 'Description' tab data: */ generalData.m_strDescription = m_machine.GetDescription(); /* 'Encryption' tab data: */ QString strCipher; bool fEncryptionCipherCommon = true; /* Prepare the map of the encrypted mediums: */ EncryptedMediumMap encryptedMediums; foreach (const CMediumAttachment &attachment, m_machine.GetMediumAttachments()) { /* Acquire hard-drive attachments only: */ if (attachment.GetType() == KDeviceType_HardDisk) { /* Get the attachment medium base: */ const CMedium medium = attachment.GetMedium(); /* Check medium encryption attributes: */ QString strCurrentCipher; const QString strCurrentPasswordId = medium.GetEncryptionSettings(strCurrentCipher); if (medium.isOk()) { encryptedMediums.insert(strCurrentPasswordId, medium.GetId()); if (strCurrentCipher != strCipher) { if (strCipher.isNull()) strCipher = strCurrentCipher; else fEncryptionCipherCommon = false; } } } } generalData.m_fEncryptionEnabled = !encryptedMediums.isEmpty(); generalData.m_fEncryptionCipherChanged = false; generalData.m_fEncryptionPasswordChanged = false; if (fEncryptionCipherCommon) generalData.m_iEncryptionCipherIndex = m_encryptionCiphers.indexOf(strCipher); if (generalData.m_iEncryptionCipherIndex == -1) generalData.m_iEncryptionCipherIndex = 0; generalData.m_encryptedMediums = encryptedMediums; /* Cache general data: */ m_cache.cacheInitialData(generalData); /* Upload machine to data: */ UISettingsPageMachine::uploadData(data); }