Changeset 91152 in vbox
- Timestamp:
- Sep 8, 2021 1:23:54 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 146806
- Location:
- trunk/src/VBox/Frontends/VirtualBox
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
r91106 r91152 977 977 src/widgets/graphics/UIGraphicsScrollBar.cpp \ 978 978 src/wizards/editors/UIUserNamePasswordEditor.cpp \ 979 src/wizards/importappliance/UIWizardImportApp.cpp 980 979 src/wizards/importappliance/UIWizardImportApp.cpp \ 980 src/wizards/newvm/UIWizardNewVMSummaryPage.cpp 981 981 982 982 # -
trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UINameAndSystemEditor.cpp
r91125 r91152 132 132 } 133 133 134 QString UINameAndSystemEditor:: image() const134 QString UINameAndSystemEditor::ISOImagePath() const 135 135 { 136 136 if (!m_pImageSelector) -
trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UINameAndSystemEditor.h
r90236 r91152 106 106 107 107 /** Returns image string selected by the user. */ 108 QString image() const;108 QString ISOImagePath() const; 109 109 110 110 /** Defines the VM OS @a strTypeId and @a strFamilyId if passed. */ -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMExpertPage.cpp
r91106 r91152 870 870 { 871 871 AssertReturnVoid(m_pSkipUnattendedCheckBox && m_pNameAndSystemEditor); 872 const QString &strPath = m_pNameAndSystemEditor-> image();872 const QString &strPath = m_pNameAndSystemEditor->ISOImagePath(); 873 873 if (strPath.isNull() || strPath.isEmpty()) 874 874 { -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMHardwarePage.h
r91059 r91152 51 51 void prepare(); 52 52 void createConnections(); 53 v oid retranslateUi();54 v oid initializePage();55 bool isComplete() const;53 virtual void retranslateUi() /* override final */; 54 virtual void initializePage() /* override final */; 55 virtual bool isComplete() const /* override final */; 56 56 57 57 /** @name Widgets -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMNameOSTypePage.cpp
r91059 r91152 303 303 if (!pNameAndSystemEditor) 304 304 return false; 305 const QString &strPath = pNameAndSystemEditor-> image();305 const QString &strPath = pNameAndSystemEditor->ISOImagePath(); 306 306 if (strPath.isNull() || strPath.isEmpty()) 307 307 return true; … … 523 523 if (m_pNameAndSystemEditor) 524 524 { 525 const QString &strPath = m_pNameAndSystemEditor-> image();525 const QString &strPath = m_pNameAndSystemEditor->ISOImagePath(); 526 526 m_pSkipUnattendedCheckBox->setEnabled(!strPath.isNull() && !strPath.isEmpty()); 527 527 } … … 532 532 if (!m_pNameAndSystemEditor) 533 533 return false; 534 const QString &strPath = m_pNameAndSystemEditor-> image();534 const QString &strPath = m_pNameAndSystemEditor->ISOImagePath(); 535 535 if (strPath.isNull() || strPath.isEmpty()) 536 536 return false; -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMSummaryPage.cpp
r91108 r91152 17 17 18 18 /* Qt includes: */ 19 #include <QButtonGroup> 20 #include <QCheckBox> 21 #include <QLabel> 22 #include <QRadioButton> 19 #include <QHeaderView> 20 #include <QList> 21 #include <QFileInfo> 23 22 #include <QVBoxLayout> 24 23 25 24 /* GUI includes: */ 26 25 #include "QIRichTextLabel.h" 27 #include "QIT oolButton.h"26 #include "QITreeView.h" 28 27 #include "UIIconPool.h" 29 #include "UIMediaComboBox.h"30 #include "UIMediumSelector.h"31 #include "UIMediumSizeEditor.h"32 28 #include "UIMessageCenter.h" 33 #include "UICommon.h"34 29 #include "UIWizardNewVMSummaryPage.h" 35 30 #include "UIWizardDiskEditors.h" 36 31 #include "UIWizardNewVM.h" 37 32 38 /* COM includes: */ 39 #include "COMEnums.h" 40 #include "CGuestOSType.h" 41 #include "CSystemProperties.h" 42 33 /********************************************************************************************************************************* 34 * UIWizardNewVMSummaryItem definition. * 35 *********************************************************************************************************************************/ 36 37 class UIWizardNewVMSummaryItem : public QITreeViewItem 38 { 39 Q_OBJECT; 40 41 public: 42 43 UIWizardNewVMSummaryItem(QITreeView *pParentTree, const QString &strText, 44 const QVariant &data = QVariant(), const QIcon &icon = QIcon()); 45 46 virtual UIWizardNewVMSummaryItem *childItem(int iIndex) const /* override final */; 47 virtual int childCount() const /* override final */; 48 virtual QString text() const /* override final */; 49 const QVariant &data() const; 50 const QIcon &icon() const; 51 52 /** Returns the index of this item within its parent's children list. */ 53 int row() const; 54 int childIndex(const UIWizardNewVMSummaryItem *pChild) const; 55 int columnCount() const; 56 57 58 UIWizardNewVMSummaryItem *addChild(const QString &strText, 59 const QVariant &data = QVariant(), const QIcon &icon = QIcon()); 60 61 62 bool isSectionTitle() const; 63 void setIsSectionTitle(bool fIsSectionTitle); 64 65 private: 66 67 UIWizardNewVMSummaryItem(UIWizardNewVMSummaryItem *pParentItem, const QString &strText, 68 const QVariant &data = QVariant(), const QIcon &icon = QIcon()); 69 70 UIWizardNewVMSummaryItem *m_pParentItem; 71 QString m_strText; 72 QVariant m_data; 73 QIcon m_icon; 74 QList<UIWizardNewVMSummaryItem*> m_childList; 75 bool m_fIsSectionTitle; 76 }; 77 78 /********************************************************************************************************************************* 79 * UIWizardNewVMSummaryModel definition. * 80 *********************************************************************************************************************************/ 81 82 class UIWizardNewVMSummaryModel : public QAbstractItemModel 83 { 84 Q_OBJECT; 85 86 public: 87 88 UIWizardNewVMSummaryModel(QITreeView *pParentTree); 89 90 virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const /* override final */; 91 92 QModelIndex index(int row, int column, 93 const QModelIndex &parent = QModelIndex()) const /* override final */; 94 QModelIndex parent(const QModelIndex &index) const /* override final */; 95 int rowCount(const QModelIndex &parent = QModelIndex()) const /* override final */; 96 int columnCount(const QModelIndex &parent = QModelIndex()) const /* override final */; 97 98 void populateData(UIWizardNewVM *pWizard); 99 100 private: 101 102 UIWizardNewVMSummaryItem *m_pRootItem; 103 104 }; 105 106 /********************************************************************************************************************************* 107 * UIWizardNewVMSummaryItem implementation. * 108 *********************************************************************************************************************************/ 109 110 111 UIWizardNewVMSummaryItem::UIWizardNewVMSummaryItem(QITreeView *pParentTree, const QString &strText, 112 const QVariant &data /* = QVariant() */, const QIcon &icon /* = QIcon() */) 113 : QITreeViewItem(pParentTree) 114 , m_strText(strText) 115 , m_data(data) 116 , m_icon(icon) 117 , m_fIsSectionTitle(false) 118 { 119 } 120 121 UIWizardNewVMSummaryItem::UIWizardNewVMSummaryItem(UIWizardNewVMSummaryItem *pParentItem, const QString &strText, 122 const QVariant &data /* = QVariant() */, const QIcon &icon /* = QIcon() */) 123 : QITreeViewItem(pParentItem) 124 , m_strText(strText) 125 , m_data(data) 126 , m_icon(icon) 127 , m_fIsSectionTitle(false) 128 { 129 } 130 131 UIWizardNewVMSummaryItem *UIWizardNewVMSummaryItem::childItem(int iIndex) const 132 { 133 if (iIndex >= m_childList.size()) 134 return 0; 135 return m_childList[iIndex]; 136 } 137 138 int UIWizardNewVMSummaryItem::childIndex(const UIWizardNewVMSummaryItem *pChild) const 139 { 140 if (!pChild) 141 return 0; 142 return m_childList.indexOf(const_cast<UIWizardNewVMSummaryItem*>(pChild)); 143 } 144 145 int UIWizardNewVMSummaryItem::row() const 146 { 147 UIWizardNewVMSummaryItem *pParent = qobject_cast<UIWizardNewVMSummaryItem*>(parentItem()); 148 if (!pParent) 149 return 0; 150 return pParent->childIndex(this); 151 } 152 153 154 int UIWizardNewVMSummaryItem::childCount() const 155 { 156 return m_childList.size(); 157 } 158 159 160 QString UIWizardNewVMSummaryItem::text() const 161 { 162 return m_strText; 163 } 164 165 const QVariant &UIWizardNewVMSummaryItem::data() const 166 { 167 return m_data; 168 } 169 170 const QIcon &UIWizardNewVMSummaryItem::icon() const 171 { 172 return m_icon; 173 } 174 175 int UIWizardNewVMSummaryItem::columnCount() const 176 { 177 if (m_data.isValid()) 178 return 2; 179 return 1; 180 } 181 182 UIWizardNewVMSummaryItem *UIWizardNewVMSummaryItem::addChild(const QString &strText, const QVariant &data /* = QVariant() */, const QIcon &icon /* = QIcon() */) 183 { 184 UIWizardNewVMSummaryItem *pNewItem = new UIWizardNewVMSummaryItem(this, strText, data, icon); 185 m_childList << pNewItem; 186 return pNewItem; 187 } 188 189 void UIWizardNewVMSummaryItem::setIsSectionTitle(bool fIsSectionTitle) 190 { 191 m_fIsSectionTitle = fIsSectionTitle; 192 } 193 194 bool UIWizardNewVMSummaryItem::isSectionTitle() const 195 { 196 return m_fIsSectionTitle; 197 } 198 199 200 /********************************************************************************************************************************* 201 * UIWizardNewVMSummaryModel implementation. * 202 *********************************************************************************************************************************/ 203 204 UIWizardNewVMSummaryModel::UIWizardNewVMSummaryModel(QITreeView *pParentTree) 205 : QAbstractItemModel(pParentTree) 206 , m_pRootItem(0) 207 { 208 } 209 210 QVariant UIWizardNewVMSummaryModel::data(const QModelIndex &index, int role /* = Qt::DisplayRole */) const 211 { 212 if (!index.isValid()) 213 return QVariant(); 214 UIWizardNewVMSummaryItem *pItem = static_cast<UIWizardNewVMSummaryItem*>(index.internalPointer()); 215 if (!pItem) 216 return QVariant(); 217 if (role == Qt::DisplayRole) 218 { 219 switch (index.column()) 220 { 221 case 0: 222 return pItem->text(); 223 break; 224 case 1: 225 return pItem->data(); 226 break; 227 default: 228 break; 229 } 230 } 231 else if (role == Qt::DecorationRole) 232 { 233 if (index.column() == 0 && !pItem->icon().isNull()) 234 return pItem->icon(); 235 } 236 else if (role == Qt::FontRole) 237 { 238 UIWizardNewVMSummaryItem *pItem = static_cast<UIWizardNewVMSummaryItem*>(index.internalPointer()); 239 if (pItem && pItem->isSectionTitle()) 240 { 241 QFont font = qApp->font(); 242 font.setBold(true); 243 return font; 244 } 245 } 246 return QVariant(); 247 } 248 249 QModelIndex UIWizardNewVMSummaryModel::index(int row, int column, const QModelIndex &parent /* = QModelIndex() */) const 250 { 251 if (!hasIndex(row, column, parent)) 252 return QModelIndex(); 253 254 UIWizardNewVMSummaryItem *pParentItem; 255 256 if (!parent.isValid()) 257 pParentItem = m_pRootItem; 258 else 259 pParentItem = static_cast<UIWizardNewVMSummaryItem*>(parent.internalPointer()); 260 261 UIWizardNewVMSummaryItem *pChildItem = pParentItem->childItem(row); 262 if (pChildItem) 263 return createIndex(row, column, pChildItem); 264 else 265 return QModelIndex(); 266 } 267 268 QModelIndex UIWizardNewVMSummaryModel::parent(const QModelIndex &index) const 269 { 270 if (!index.isValid()) 271 return QModelIndex(); 272 273 UIWizardNewVMSummaryItem *pChildItem = static_cast<UIWizardNewVMSummaryItem*>(index.internalPointer()); 274 if (!pChildItem) 275 return QModelIndex(); 276 277 UIWizardNewVMSummaryItem *pParentItem = static_cast<UIWizardNewVMSummaryItem*>(pChildItem->parentItem()); 278 279 if (pParentItem == m_pRootItem) 280 return QModelIndex(); 281 282 return createIndex(pParentItem->row(), 0, pParentItem); 283 } 284 285 int UIWizardNewVMSummaryModel::rowCount(const QModelIndex &parent /* = QModelIndex() */) const 286 { 287 if (parent.column() > 0) 288 return 0; 289 UIWizardNewVMSummaryItem *pItem = 0; 290 if (!parent.isValid()) 291 pItem = m_pRootItem; 292 else 293 pItem = static_cast<UIWizardNewVMSummaryItem*>(parent.internalPointer()); 294 295 if (pItem) 296 return pItem->childCount(); 297 return 0; 298 } 299 300 int UIWizardNewVMSummaryModel::columnCount(const QModelIndex &parentIndex /* = QModelIndex() */) const 301 { 302 return 2; 303 AssertReturn(m_pRootItem, 0); 304 if (parentIndex.isValid()) 305 { 306 UIWizardNewVMSummaryItem *pParent = static_cast<UIWizardNewVMSummaryItem*>(parentIndex.internalPointer()); 307 // if (pParent && pParent->childItem(0)) 308 // { 309 // printf("sasadasd %d\n", pParent->childItem(0)->columnCount()); 310 // return pParent->childItem(0)->columnCount(); 311 // } 312 if (pParent) 313 return pParent->columnCount(); 314 315 } 316 return m_pRootItem->columnCount(); 317 } 318 319 void UIWizardNewVMSummaryModel::populateData(UIWizardNewVM *pWizard) 320 { 321 QITreeView *pParentTree = qobject_cast<QITreeView*>(QObject::parent()); 322 323 AssertReturnVoid(pWizard && pParentTree); 324 if (m_pRootItem) 325 delete m_pRootItem; 326 m_pRootItem = new UIWizardNewVMSummaryItem(pParentTree, "root"); 327 328 UIWizardNewVMSummaryItem *pNameRoot = m_pRootItem->addChild(UIWizardNewVM::tr("Machine Name and OS Type")); 329 pNameRoot->setIsSectionTitle(true); 330 331 /* Name and OS Type page stuff: */ 332 pNameRoot->addChild(UIWizardNewVM::tr("Machine Name"), pWizard->machineBaseName(), UIIconPool::iconSet(":/name_16px.png")); 333 pNameRoot->addChild(UIWizardNewVM::tr("Machine Folder"), pWizard->machineFolder(), UIIconPool::iconSet(":/name_16px.png")); 334 pNameRoot->addChild(UIWizardNewVM::tr("ISO Image"), pWizard->ISOFilePath(), UIIconPool::iconSet(":/cd_16px.png")); 335 pNameRoot->addChild(UIWizardNewVM::tr("Guest OS Type"), pWizard->guestOSType().GetDescription(), UIIconPool::iconSet(":/system_type_16px.png")); 336 337 const QString &ISOPath = pWizard->ISOFilePath(); 338 if (!ISOPath.isNull() && !ISOPath.isEmpty()) 339 pNameRoot->addChild(UIWizardNewVM::tr("Skip Unattended Install"), pWizard->skipUnattendedInstall(), 340 UIIconPool::iconSet(":/extension_pack_install_16px.png")); 341 342 343 /* Unattended install related info: */ 344 if (pWizard->isUnattendedEnabled()) 345 { 346 UIWizardNewVMSummaryItem *pUnattendedRoot = m_pRootItem->addChild(UIWizardNewVM::tr("Unattended Install")); 347 pUnattendedRoot->setIsSectionTitle(true); 348 pUnattendedRoot->addChild(UIWizardNewVM::tr("Username"), pWizard->userName(), 349 UIIconPool::iconSet(":/extension_pack_install_16px.png")); 350 pUnattendedRoot->addChild(UIWizardNewVM::tr("Product Key"), pWizard->installGuestAdditions(), 351 UIIconPool::iconSet(":/extension_pack_install_16px.png")); 352 pUnattendedRoot->addChild(UIWizardNewVM::tr("Hostname/Domain Name"), pWizard->hostnameDomainName(), 353 UIIconPool::iconSet(":/extension_pack_install_16px.png")); 354 pUnattendedRoot->addChild(UIWizardNewVM::tr("Install in Background"), pWizard->startHeadless(), 355 UIIconPool::iconSet(":/extension_pack_install_16px.png")); 356 pUnattendedRoot->addChild(UIWizardNewVM::tr("Install Guest Additions"), pWizard->installGuestAdditions(), 357 UIIconPool::iconSet(":/extension_pack_install_16px.png")); 358 if (pWizard->installGuestAdditions()) 359 pUnattendedRoot->addChild(UIWizardNewVM::tr("Guest Additions ISO"), pWizard->guestAdditionsISOPath(), 360 UIIconPool::iconSet(":/extension_pack_install_16px.png")); 361 } 362 363 364 // UIWizardNewVMSummaryItem *pHardwareRoot = new UIWizardNewVMSummaryItem(m_pRootItem, UIWizardNewVM::tr("Hardware")); 365 // UIWizardNewVMSummaryItem *pDiskRoot = new UIWizardNewVMSummaryItem(m_pRootItem, UIWizardNewVM::tr("Disk")); 366 // Q_UNUSED(pHardwareRoot); 367 // Q_UNUSED(pDiskRoot); 368 369 } 370 371 /********************************************************************************************************************************* 372 * UIWizardNewVMSummaryPage implementation. * 373 *********************************************************************************************************************************/ 43 374 44 375 UIWizardNewVMSummaryPage::UIWizardNewVMSummaryPage() 45 376 : m_pLabel(0) 377 , m_pTree(0) 46 378 { 47 379 prepare(); … … 56 388 pMainLayout->addWidget(m_pLabel); 57 389 58 pMainLayout->addStretch(); 390 m_pTree = new QITreeView; 391 QString sty("QTreeView::branch {" 392 "background: palette(base);" 393 "}"); 394 395 if (m_pTree) 396 { 397 //m_pTree->setStyleSheet(sty); 398 m_pTree->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); 399 m_pTree->setAlternatingRowColors(true); 400 m_pModel = new UIWizardNewVMSummaryModel(m_pTree); 401 m_pTree->setModel(m_pModel); 402 pMainLayout->addWidget(m_pTree); 403 } 404 405 //pMainLayout->addStretch(); 59 406 60 407 createConnections(); … … 73 420 { 74 421 retranslateUi(); 75 422 UIWizardNewVM *pWizard = wizardWindow<UIWizardNewVM>(); 423 AssertReturnVoid(pWizard && m_pModel); 424 if (m_pModel) 425 m_pModel->populateData(pWizard); 426 if (m_pTree) 427 { 428 m_pTree->expandToDepth(4); 429 m_pTree->header()->setSectionResizeMode(QHeaderView::ResizeToContents); 430 } 76 431 } 77 432 78 433 bool UIWizardNewVMSummaryPage::isComplete() const 79 434 { 80 81 435 return true; 82 436 } … … 132 486 return fResult; 133 487 } 488 489 490 #include "UIWizardNewVMSummaryPage.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMSummaryPage.h
r91106 r91152 22 22 #endif 23 23 24 /* Qt includes: */25 #include <QSet>26 27 24 /* GUI includes: */ 28 #include "QIFileDialog.h"29 25 #include "UINativeWizardPage.h" 30 26 31 /* COM includes: */32 #include "COMEnums.h"33 #include "CMedium.h"34 35 27 /* Forward declarations: */ 36 class QButtonGroup;37 class QCheckBox;38 class QRadioButton;39 class QLabel;40 28 class QIRichTextLabel; 41 class QIToolButton; 42 class UIMediaComboBox; 43 class UIMediumSizeEditor; 44 29 class QITreeView; 30 class UIWizardNewVMSummaryModel; 45 31 46 32 class UIWizardNewVMSummaryPage : public UINativeWizardPage … … 52 38 UIWizardNewVMSummaryPage(); 53 39 54 protected:55 56 57 private slots:58 59 60 40 private: 61 41 62 42 void prepare(); 63 43 void createConnections(); 64 65 66 44 virtual void retranslateUi() /* override final */; 67 45 virtual void initializePage() /* override final */; 68 46 virtual bool isComplete() const /* override final */; 69 47 virtual bool validatePage() /* override final */; 70 71 72 73 48 /** @name Widgets 74 49 * @{ */ 75 50 QIRichTextLabel *m_pLabel; 51 QITreeView *m_pTree; 76 52 /** @} */ 77 78 53 UIWizardNewVMSummaryModel *m_pModel; 79 54 }; 80 55
Note:
See TracChangeset
for help on using the changeset viewer.