Changeset 84955 in vbox
- Timestamp:
- Jun 25, 2020 2:40:53 PM (5 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
r84906 r84955 616 616 unattendedInstallData.m_strUserName = comUnattendedInstaller.GetUser(); 617 617 unattendedInstallData.m_strPassword = comUnattendedInstaller.GetPassword(); 618 unattendedInstallData.m_strHostname = comUnattendedInstaller.GetHostname(); 618 619 619 620 pWizard->setDefaultUnattendedInstallData(unattendedInstallData); … … 1896 1897 comUnattendedInstaller.SetUser(unattendedData.m_strUserName); 1897 1898 comUnattendedInstaller.SetPassword(unattendedData.m_strPassword); 1899 comUnattendedInstaller.SetHostname(unattendedData.m_strHostname); 1898 1900 comUnattendedInstaller.Prepare(); 1899 1901 checkUnattendedInstallError(comUnattendedInstaller); -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp
r84915 r84955 76 76 case WizardMode_Basic: 77 77 { 78 setPage(PageUnattended, new UIWizardNewVMPageBasicUnattended); 78 UIWizardNewVMPageBasicUnattended *pUnattendedPage = 79 new UIWizardNewVMPageBasicUnattended; 80 connect(pUnattendedPage, &UIWizardNewVMPageBasicUnattended::sigDetectedOSTypeChanged, 81 this, &UIWizardNewVM::sltHandleDetectedOSTypeChange); 82 setPage(PageUnattended, pUnattendedPage); 79 83 setPage(PageNameType, new UIWizardNewVMPageBasicNameType(m_strGroup)); 80 84 setPage(PageInstallSetup, new UIWizardNewVMPageBasicInstallSetup); … … 382 386 } 383 387 388 QString UIWizardNewVM::getStringFieldValue(const QString &strFieldName) const 389 { 390 QVariant fieldValue = field(strFieldName); 391 if (!fieldValue.isNull() && fieldValue.isValid() && fieldValue.canConvert(QMetaType::QString)) 392 return fieldValue.toString(); 393 return QString(); 394 } 395 384 396 void UIWizardNewVM::sltHandleWizardCancel() 385 397 { … … 407 419 } 408 420 421 void UIWizardNewVM::sltHandleDetectedOSTypeChange() 422 { 423 UIWizardNewVMPageBasicNameType *pPage = qobject_cast<UIWizardNewVMPageBasicNameType*>(page(PageNameType)); 424 if (!pPage) 425 return; 426 pPage->setTypeByISODetectedOSType(getStringFieldValue("detectedOSTypeId")); 427 } 428 409 429 void UIWizardNewVM::retranslateUi() 410 430 { … … 493 513 const UIUnattendedInstallData &UIWizardNewVM::unattendedInstallData() const 494 514 { 495 QVariant fieldValue = field("ISOFilePath"); 496 if (!fieldValue.isNull() && fieldValue.isValid() && fieldValue.canConvert(QMetaType::QString)) 497 m_unattendedInstallData.m_strISOPath = fieldValue.toString(); 498 499 fieldValue = field("isUnattendedEnabled"); 515 m_unattendedInstallData.m_strISOPath = getStringFieldValue("ISOFilePath"); 516 m_unattendedInstallData.m_strUserName = getStringFieldValue("userName"); 517 m_unattendedInstallData.m_strHostname = getStringFieldValue("hostname"); 518 m_unattendedInstallData.m_strPassword = getStringFieldValue("password"); 519 m_unattendedInstallData.m_strDetectedOSTypeId = getStringFieldValue("detectedOSTypeId"); 520 m_unattendedInstallData.m_strDetectedOSVersion = getStringFieldValue("detectedOSVersion"); 521 m_unattendedInstallData.m_strDetectedOSFlavor = getStringFieldValue("detectedOSFlavor"); 522 m_unattendedInstallData.m_strDetectedOSLanguages = getStringFieldValue("detectedOSLanguages"); 523 m_unattendedInstallData.m_strDetectedOSHints = getStringFieldValue("detectedOSHints"); 524 525 526 QVariant fieldValue = field("isUnattendedEnabled"); 500 527 if (!fieldValue.isNull() && fieldValue.isValid() && fieldValue.canConvert(QMetaType::Bool)) 501 528 m_unattendedInstallData.m_fUnattendedEnabled = fieldValue.toBool(); … … 504 531 if (!fieldValue.isNull() && fieldValue.isValid() && fieldValue.canConvert(QMetaType::Bool)) 505 532 m_unattendedInstallData.m_fStartHeadless = fieldValue.toBool(); 506 507 fieldValue = field("userName");508 if (!fieldValue.isNull() && fieldValue.isValid() && fieldValue.canConvert(QMetaType::QString))509 m_unattendedInstallData.m_strUserName = fieldValue.toString();510 511 fieldValue = field("password");512 if (!fieldValue.isNull() && fieldValue.isValid() && fieldValue.canConvert(QMetaType::QString))513 m_unattendedInstallData.m_strPassword = fieldValue.toString();514 533 515 534 m_unattendedInstallData.m_uMachineUid = createdMachineId(); -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.h
r84915 r84955 36 36 QUuid m_uMachineUid; 37 37 QString m_strISOPath; 38 QString m_strGAIOSPath; 38 39 bool m_fStartHeadless; 39 40 QString m_strUserName; 40 41 QString m_strPassword; 42 QString m_strHostname; 43 QString m_strDetectedOSTypeId; 44 QString m_strDetectedOSVersion; 45 QString m_strDetectedOSFlavor; 46 QString m_strDetectedOSLanguages; 47 QString m_strDetectedOSHints; 41 48 }; 42 49 … … 86 93 bool attachDefaultDevices(const CGuestOSType &comGuestType); 87 94 95 QString getStringFieldValue(const QString &strFieldName) const; 96 88 97 /* Who will be able to create virtual-machine: */ 89 98 friend class UIWizardNewVMPageBasicDisk; … … 93 102 94 103 void sltHandleWizardCancel(); 104 void sltHandleDetectedOSTypeChange(); 95 105 96 106 private: -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasicInstallSetup.cpp
r84918 r84955 17 17 18 18 /* Qt includes: */ 19 #include <QComboBox> 20 #include <QCompleter> 19 21 #include <QIntValidator> 20 #include <QVBoxLayout>21 22 #include <QGridLayout> 22 23 #include <QSpacerItem> 23 24 #include <QLabel> 25 #include <QSortFilterProxyModel> 24 26 #include <QSpinBox> 27 #include <QStringListModel> 25 28 #include <QStyle> 26 29 #include <QToolButton> 30 #include <QVBoxLayout> 27 31 28 32 /* GUI includes: */ … … 184 188 if (!pLineEdit) 185 189 return; 186 pLayout->addWidget(pLineEdit, iRow, 1, 1, 1);190 pLayout->addWidget(pLineEdit, iRow, 1, 1, 3); 187 191 188 192 pLabel->setBuddy(pLineEdit); … … 207 211 { 208 212 QGridLayout *pMainLayout = new QGridLayout; 213 pMainLayout->setContentsMargins(0, 0, 0, 0); 209 214 if (!pMainLayout) 210 215 return; … … 236 241 UIWizardNewVMPageInstallSetup::UIWizardNewVMPageInstallSetup() 237 242 : m_pUserNamePasswordEditor(0) 243 , m_pHostnameLineEdit(0) 244 , m_pHostnameLabel(0) 238 245 { 239 246 } … … 253 260 } 254 261 262 QString UIWizardNewVMPageInstallSetup::hostname() const 263 { 264 if (m_pHostnameLineEdit) 265 return m_pHostnameLineEdit->text(); 266 return QString(); 267 } 255 268 256 269 UIWizardNewVMPageBasicInstallSetup::UIWizardNewVMPageBasicInstallSetup() … … 261 274 { 262 275 m_pLabel = new QIRichTextLabel(this); 263 QGridLayout *p MemoryLayout = new QGridLayout;276 QGridLayout *pGridLayout = new QGridLayout; 264 277 { 265 278 m_pUserNamePasswordEditor = new UIUserNamePasswordEditor; 266 p MemoryLayout->addWidget(m_pUserNamePasswordEditor, 0, 0);279 pGridLayout->addWidget(m_pUserNamePasswordEditor, 0, 0, 3, 4); 267 280 connect(m_pUserNamePasswordEditor, &UIUserNamePasswordEditor::sigSomeTextChanged, 268 281 this, &UIWizardNewVMPageBasicInstallSetup::completeChanged); 282 m_pHostnameLabel = new QLabel; 283 m_pHostnameLineEdit = new QLineEdit; 284 pGridLayout->addWidget(m_pHostnameLabel, 3, 0, 1, 1, Qt::AlignRight); 285 pGridLayout->addWidget(m_pHostnameLineEdit, 3, 1, 1, 3); 269 286 } 270 287 if (m_pLabel) 271 288 pMainLayout->addWidget(m_pLabel); 272 pMainLayout->addLayout(p MemoryLayout);289 pMainLayout->addLayout(pGridLayout); 273 290 pMainLayout->addStretch(); 274 291 } 275 276 292 277 293 /* Register fields: */ 278 294 registerField("userName", this, "userName"); 279 295 registerField("password", this, "password"); 296 registerField("hostname", this, "hostname"); 280 297 } 281 298 … … 283 300 { 284 301 /* Initialize the widget data: */ 285 286 302 if (m_pUserNamePasswordEditor) 287 303 { … … 289 305 m_pUserNamePasswordEditor->setPassword(unattendedInstallData.m_strPassword); 290 306 } 307 if (m_pHostnameLineEdit) 308 m_pHostnameLineEdit->setText(unattendedInstallData.m_strHostname); 291 309 } 292 310 … … 294 312 { 295 313 /* Translate page: */ 296 setTitle(UIWizardNewVM::tr("User Name/Password and Time Zone Selection"));314 setTitle(UIWizardNewVM::tr("User Name/Password and Hostname Settings")); 297 315 298 316 /* Translate widgets: */ 299 317 if (m_pLabel) 300 m_pLabel->setText(UIWizardNewVM::tr("<p>Here you can specify the user name/password and time zone. "318 m_pLabel->setText(UIWizardNewVM::tr("<p>Here you can specify the user name/password and hostname. " 301 319 "The values you enter here will be used during the unattended install.</p>")); 320 if (m_pHostnameLabel) 321 m_pHostnameLabel->setText(UIWizardNewVM::tr("Hostname:")); 302 322 } 303 323 … … 306 326 /* Translate page: */ 307 327 retranslateUi(); 308 309 /* Get recommended 'ram' field value: */310 // CGuestOSType type = field("type").value<CGuestOSType>();311 // m_pBaseMemoryEditor->setValue(type.GetRecommendedRAM());312 // m_pVirtualCPUEditor->setValue(1);313 314 // /* 'Ram' field should have focus initially: */315 // m_pBaseMemoryEditor->setFocus();316 328 } 317 329 -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasicInstallSetup.h
r84918 r84955 24 24 /* Qt includes: */ 25 25 #include <QLineEdit> 26 #include <QStringList> 26 27 #include <QWidget> 27 28 … … 121 122 UIWizardNewVMPageInstallSetup(); 122 123 123 QString userName() const; 124 QString password() const; 124 /** @name Property getters 125 * @{ */ 126 QString userName() const; 127 QString password() const; 128 QString hostname() const; 129 /** @} */ 125 130 126 131 protected: … … 128 133 /* Widgets: */ 129 134 UIUserNamePasswordEditor *m_pUserNamePasswordEditor; 135 QLineEdit *m_pHostnameLineEdit; 136 QLabel *m_pHostnameLabel; 130 137 }; 131 138 … … 136 143 Q_PROPERTY(QString userName READ userName); 137 144 Q_PROPERTY(QString password READ password); 145 Q_PROPERTY(QString hostname READ hostname); 138 146 139 147 public: -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasicNameType.cpp
r84918 r84955 353 353 } 354 354 355 void UIWizardNewVMPageBasicNameType::setTypeByISODetectedOSType(const QString &strDetectedOSType) 356 { 357 if (!strDetectedOSType.isEmpty()) 358 onNameChanged(strDetectedOSType); 359 } 360 361 355 362 void UIWizardNewVMPageBasicNameType::sltNameChanged(const QString &strNewName) 356 363 { -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasicNameType.h
r84917 r84955 94 94 UIWizardNewVMPageBasicNameType(const QString &strGroup); 95 95 virtual int nextId() const /* override */; 96 void setTypeByISODetectedOSType(const QString &strDetectedOSType); 96 97 97 98 protected: -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasicUnattended.cpp
r84917 r84955 36 36 #include "CHost.h" 37 37 #include "CSystemProperties.h" 38 38 #include "CUnattended.h" 39 39 40 40 UIWizardNewVMPageUnattended::UIWizardNewVMPageUnattended() 41 41 : m_pUnattendedCheckBox(0) 42 42 , m_pStartHeadlessCheckBox(0) 43 , m_pISOSelectorLabel(0) 44 , m_pStatusLabel(0) 43 45 , m_pISOFilePathSelector(0) 46 , m_ISOError(ISOError_NoFileName) 44 47 { 45 48 } … … 64 67 return false; 65 68 return m_pStartHeadlessCheckBox->isChecked(); 69 } 70 71 const QString &UIWizardNewVMPageUnattended::detectedOSTypeId() const 72 { 73 return m_strDetectedOSTypeId; 74 } 75 76 const QString &UIWizardNewVMPageUnattended::detectedOSVersion() const 77 { 78 return m_strDetectedOSVersion; 79 } 80 81 const QString &UIWizardNewVMPageUnattended::detectedOSFlavor() const 82 { 83 return m_strDetectedOSFlavor; 84 } 85 86 const QString &UIWizardNewVMPageUnattended::detectedOSLanguages() const 87 { 88 return m_strDetectedOSLanguages; 89 } 90 91 const QString &UIWizardNewVMPageUnattended::detectedOSHints() const 92 { 93 return m_strDetectedOSHints; 94 } 95 96 bool UIWizardNewVMPageUnattended::determineOSType(const QString &strISOPath) 97 { 98 QFileInfo isoFileInfo(strISOPath); 99 if (!isoFileInfo.exists()) 100 { 101 m_ISOError = ISOError_DontExists; 102 m_strDetectedOSTypeId.clear(); 103 m_strDetectedOSVersion.clear(); 104 m_strDetectedOSFlavor.clear(); 105 m_strDetectedOSLanguages.clear(); 106 m_strDetectedOSHints.clear(); 107 updateStatusLabel(); 108 return false; 109 } 110 111 CUnattended comUnatteded = uiCommon().virtualBox().CreateUnattendedInstaller(); 112 comUnatteded.SetIsoPath(strISOPath); 113 comUnatteded.DetectIsoOS(); 114 115 m_strDetectedOSTypeId = comUnatteded.GetDetectedOSTypeId(); 116 m_strDetectedOSVersion = comUnatteded.GetDetectedOSVersion(); 117 m_strDetectedOSFlavor = comUnatteded.GetDetectedOSFlavor(); 118 m_strDetectedOSLanguages = comUnatteded.GetDetectedOSLanguages(); 119 m_strDetectedOSHints = comUnatteded.GetDetectedOSHints(); 120 121 updateStatusLabel(); 122 return true; 123 } 124 125 void UIWizardNewVMPageUnattended::updateStatusLabel() 126 { 127 if (m_pStatusLabel) 128 { 129 m_pStatusLabel->setText(QString("<b>%1:</b> %2<br/><b>%3:</b> %4<br/><b>%5</b>: %6") 130 .arg(UIWizardNewVM::tr("Detected OS Type")).arg(m_strDetectedOSTypeId) 131 .arg(UIWizardNewVM::tr("Detected OS Version")).arg(m_strDetectedOSVersion) 132 .arg(UIWizardNewVM::tr("Detected OS Flavor")).arg(m_strDetectedOSFlavor)); 133 } 66 134 } 67 135 … … 90 158 } 91 159 m_pStartHeadlessCheckBox = new QCheckBox; 92 {93 m_pStartHeadlessCheckBox->setEnabled(false);94 }160 m_pStartHeadlessCheckBox->setEnabled(false); 161 m_pStatusLabel = new QLabel; 162 m_pStatusLabel->setEnabled(false); 95 163 pMainLayout->addWidget(m_pLabel); 96 164 … … 100 168 pISOSelectorLayout->addWidget(m_pISOFilePathSelector, 1, 2, 1, 4); 101 169 pISOSelectorLayout->addWidget(m_pStartHeadlessCheckBox, 2, 2, 1, 5); 170 pISOSelectorLayout->addWidget(m_pStatusLabel, 3, 2, 1, 5); 102 171 103 172 pMainLayout->addLayout(pISOSelectorLayout); … … 110 179 registerField("isUnattendedEnabled", this, "isUnattendedEnabled"); 111 180 registerField("startHeadless", this, "startHeadless"); 181 registerField("startHeadless", this, "startHeadless"); 182 registerField("detectedOSTypeId", this, "detectedOSTypeId"); 183 registerField("detectedOSVersion", this, "detectedOSVersion"); 184 registerField("detectedOSFlavor", this, "detectedOSFlavor"); 185 registerField("detectedOSLanguages", this, "detectedOSLanguages"); 186 registerField("detectedOSHints", this, "detectedOSHints"); 187 188 112 189 } 113 190 … … 126 203 if (m_pStartHeadlessCheckBox) 127 204 m_pStartHeadlessCheckBox->setEnabled(fEnabled); 205 if (m_pStatusLabel) 206 m_pStatusLabel->setEnabled(fEnabled); 128 207 emit completeChanged(); 129 208 } … … 131 210 void UIWizardNewVMPageBasicUnattended::sltPathChanged(const QString &strPath) 132 211 { 133 Q_UNUSED(strPath);212 determineOSType(strPath); 134 213 emit completeChanged(); 135 214 } … … 145 224 "installed after this window is closed. ")); 146 225 m_pUnattendedCheckBox->setText(UIWizardNewVM::tr("Enable unattended guest OS Install")); 147 m_pISOSelectorLabel->setText(UIWizardNewVM::tr("I SO:"));226 m_pISOSelectorLabel->setText(UIWizardNewVM::tr("Installation medium:")); 148 227 if (m_pStartHeadlessCheckBox) 149 228 { … … 151 230 m_pStartHeadlessCheckBox->setToolTip(UIWizardNewVM::tr("When checked the unattended will start the virtual machine headless")); 152 231 } 232 m_pISOFilePathSelector->setToolTip(UIWizardNewVM::tr("Please select an installation medium (ISO file) " 233 "for the unattended guest OS install")); 234 updateStatusLabel(); 153 235 } 154 236 … … 181 263 return checkISOFile(); 182 264 } 265 266 void UIWizardNewVMPageBasicUnattended::updateStatusLabel() 267 { 268 UIWizardNewVMPageUnattended::updateStatusLabel(); 269 emit sigDetectedOSTypeChanged(); 270 } -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasicUnattended.h
r84917 r84955 37 37 protected: 38 38 39 /* Constructor: */ 39 enum ISOError 40 { 41 ISOError_NoError, 42 ISOError_NoFileName, 43 ISOError_DontExists, 44 ISOError_NotReadable, 45 ISOError_Max 46 }; 47 40 48 UIWizardNewVMPageUnattended(); 49 bool determineOSType(const QString &strISOPath); 50 virtual void updateStatusLabel(); 41 51 42 QString ISOFilePath() const; 43 bool isUnattendedEnabled() const; 44 bool startHeadless() const; 52 /** @name Property getters 53 * @{ */ 54 QString ISOFilePath() const; 55 bool isUnattendedEnabled() const; 56 bool startHeadless() const; 57 const QString &detectedOSTypeId() const; 58 const QString &detectedOSVersion() const; 59 const QString &detectedOSFlavor() const; 60 const QString &detectedOSLanguages() const; 61 const QString &detectedOSHints() const; 62 /** @} */ 45 63 46 64 QCheckBox *m_pUnattendedCheckBox; 47 65 QCheckBox *m_pStartHeadlessCheckBox; 48 66 QLabel *m_pISOSelectorLabel; 67 QLabel *m_pStatusLabel; 49 68 UIFilePathSelector *m_pISOFilePathSelector; 69 ISOError m_ISOError; 50 70 51 71 private: 72 73 QString m_strDetectedOSTypeId; 74 QString m_strDetectedOSVersion; 75 QString m_strDetectedOSFlavor; 76 QString m_strDetectedOSLanguages; 77 QString m_strDetectedOSHints; 52 78 53 79 friend class UIWizardNewVM; … … 61 87 Q_PROPERTY(bool isUnattendedEnabled READ isUnattendedEnabled); 62 88 Q_PROPERTY(bool startHeadless READ startHeadless); 89 Q_PROPERTY(QString detectedOSTypeId READ detectedOSTypeId); 90 Q_PROPERTY(QString detectedOSVersion READ detectedOSVersion); 91 Q_PROPERTY(QString detectedOSFlavor READ detectedOSFlavor); 92 Q_PROPERTY(QString detectedOSLanguages READ detectedOSLanguages); 93 Q_PROPERTY(QString detectedOSHints READ detectedOSHints); 94 95 signals: 96 97 void sigDetectedOSTypeChanged(); 63 98 64 99 public: … … 72 107 /* Wrapper to access 'this' from base part: */ 73 108 UIWizardPage* thisImp() { return this; } 109 virtual void updateStatusLabel(); 74 110 75 111 private slots:
Note:
See TracChangeset
for help on using the changeset viewer.