Changeset 100812 in vbox
- Timestamp:
- Aug 6, 2023 12:02:52 PM (20 months ago)
- svn:sync-xref-src-repo-rev:
- 158706
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/medium/viso
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp
r100640 r100812 29 29 #include <QCheckBox> 30 30 #include <QGridLayout> 31 #include <QGraphicsBlurEffect>32 31 #include <QGroupBox> 33 32 #include <QMenuBar> … … 35 34 #include <QPushButton> 36 35 #include <QStyle> 37 #include <QStackedLayout>38 36 #include <QTextStream> 39 37 … … 66 64 *********************************************************************************************************************************/ 67 65 68 class SHARED_LIBRARY_STUFF UIVisoSettingWidget : public QIWithRetranslateUI<Q GroupBox>66 class SHARED_LIBRARY_STUFF UIVisoSettingWidget : public QIWithRetranslateUI<QWidget> 69 67 { 70 68 Q_OBJECT; … … 72 70 signals: 73 71 74 void sig Closed(bool fWithAccept);72 void sigSettingsChanged(); 75 73 76 74 public: … … 82 80 83 81 private slots: 84 85 void sltButtonBoxOk();86 void sltButtonBoxCancel();87 82 88 83 private: … … 98 93 QCheckBox *m_pShowHiddenObjectsCheckBox; 99 94 QILabel *m_pShowHiddenObjectsLabel; 100 QIDialogButtonBox *m_pButtonBox;101 95 }; 102 96 … … 107 101 108 102 UIVisoSettingWidget::UIVisoSettingWidget(QWidget *pParent) 109 :QIWithRetranslateUI<Q GroupBox>(pParent)103 :QIWithRetranslateUI<QWidget>(pParent) 110 104 , m_pTabWidget(0) 111 105 , m_pVisoNameLabel(0) … … 115 109 , m_pShowHiddenObjectsCheckBox(0) 116 110 , m_pShowHiddenObjectsLabel(0) 117 , m_pButtonBox(0)118 111 { 119 112 prepareObjects(); … … 159 152 pVisoOptionsGridLayout->addWidget(m_pCustomOptionsLineEdit, iRow, 1, 1, 1, Qt::AlignTop); 160 153 161 162 154 ++iRow; 163 155 pVisoOptionsGridLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding), iRow, 0, 1, 2); … … 172 164 iRow = 0; 173 165 m_pShowHiddenObjectsCheckBox = new QCheckBox; 174 m_pShowHiddenObjectsLabel = new QILabel(QApplication::translate("UIVisoCreatorWidget", "Show Hidden Objects "));166 m_pShowHiddenObjectsLabel = new QILabel(QApplication::translate("UIVisoCreatorWidget", "Show Hidden Objects:")); 175 167 m_pShowHiddenObjectsLabel->setBuddy(m_pShowHiddenObjectsCheckBox); 176 168 pDialogSettingsContainerLayout->addWidget(m_pShowHiddenObjectsLabel, iRow, 0, 1, 1, Qt::AlignTop); … … 179 171 ++iRow; 180 172 pDialogSettingsContainerLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding), iRow, 0, 1, 2); 181 182 m_pButtonBox = new QIDialogButtonBox;183 AssertReturnVoid(m_pButtonBox);184 m_pButtonBox->setDoNotPickDefaultButton(true);185 m_pButtonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok);186 m_pButtonBox->button(QDialogButtonBox::Cancel)->setShortcut(QKeySequence(Qt::Key_Escape));187 pMainLayout->addWidget(m_pButtonBox);188 189 173 retranslateUi(); 190 174 } … … 202 186 m_pCustomOptionsLineEdit->setToolTip(QApplication::translate("UIVisoCreatorWidget", "The list of suctom options delimited with ';'.")); 203 187 if (m_pShowHiddenObjectsLabel) 204 m_pShowHiddenObjectsLabel->setText(QApplication::translate("UIVisoCreatorWidget", "Show Hidden Objects "));188 m_pShowHiddenObjectsLabel->setText(QApplication::translate("UIVisoCreatorWidget", "Show Hidden Objects:")); 205 189 if (m_pShowHiddenObjectsCheckBox) 206 190 m_pShowHiddenObjectsCheckBox->setToolTip(QApplication::translate("UIVisoCreatorWidget", "When checked, " … … 210 194 void UIVisoSettingWidget::prepareConnections() 211 195 { 212 if (m_pButtonBox) 213 { 214 connect(m_pButtonBox, &QIDialogButtonBox::rejected, this, &UIVisoSettingWidget::sltButtonBoxCancel); 215 connect(m_pButtonBox, &QIDialogButtonBox::accepted, this, &UIVisoSettingWidget::sltButtonBoxOk); 216 } 217 } 218 219 void UIVisoSettingWidget::sltButtonBoxOk() 220 { 221 emit sigClosed(true); 222 } 223 224 void UIVisoSettingWidget::sltButtonBoxCancel() 225 { 226 emit sigClosed(false); 196 if (m_pVisoNameLineEdit) 197 connect(m_pVisoNameLineEdit, &QILineEdit::textChanged, this, &UIVisoSettingWidget::sigSettingsChanged); 198 if (m_pCustomOptionsLineEdit) 199 connect(m_pCustomOptionsLineEdit, &QILineEdit::textChanged, this, &UIVisoSettingWidget::sigSettingsChanged); 200 if (m_pShowHiddenObjectsCheckBox) 201 connect(m_pShowHiddenObjectsCheckBox, &QCheckBox::toggled, this, &UIVisoSettingWidget::sigSettingsChanged); 227 202 } 228 203 … … 271 246 , m_pActionPool(pActionPool) 272 247 , m_fShowToolBar(fShowToolBar) 273 , m_fShowSettingsDialog(false)274 248 , m_pSettingsWidget(0) 275 249 , m_pBrowserContainerWidget(0) 276 , m_pStackedLayout(0)277 250 , m_strVisoFilePath(strVisoFilePath) 278 { 279 m_visoOptions.m_strVisoName = !strMachineName.isEmpty() ? strMachineName : "ad-hoc"; 251 , m_fShowSettingsDialog(false) 252 { 253 m_settings.m_strVisoName = !strMachineName.isEmpty() ? strMachineName : "ad-hoc"; 280 254 prepareWidgets(); 281 255 populateMenuMainToolbar(); 282 256 prepareConnections(); 283 257 retranslateUi(); 258 if (m_pActionSettings) 259 sltSettingsActionToggled(m_pActionSettings->isChecked()); 284 260 } 285 261 … … 300 276 const QString &UIVisoCreatorWidget::visoName() const 301 277 { 302 return m_ visoOptions.m_strVisoName;278 return m_settings.m_strVisoName; 303 279 } 304 280 305 281 void UIVisoCreatorWidget::setVisoName(const QString& strName) 306 282 { 307 if (m_ visoOptions.m_strVisoName == strName)283 if (m_settings.m_strVisoName == strName) 308 284 return; 309 m_ visoOptions.m_strVisoName = strName;310 emit sigVisoNameChanged(m_ visoOptions.m_strVisoName);285 m_settings.m_strVisoName = strName; 286 emit sigVisoNameChanged(m_settings.m_strVisoName); 311 287 } 312 288 … … 321 297 const QStringList &UIVisoCreatorWidget::customOptions() const 322 298 { 323 return m_ visoOptions.m_customOptions;299 return m_settings.m_customOptions; 324 300 } 325 301 … … 345 321 void UIVisoCreatorWidget::retranslateUi() 346 322 { 347 if (m_pSettingsWidget)348 m_pSettingsWidget->setTitle(tr("Settings"));349 }350 351 void UIVisoCreatorWidget::resizeEvent(QResizeEvent *pEvent)352 {353 Q_UNUSED(pEvent);354 if (m_pOverlayWidget && m_fShowSettingsDialog)355 {356 #ifndef VBOX_IS_QT6_OR_LATER357 const QPixmap *pLabelPixmap = m_pOverlayWidget->pixmap();358 if (pLabelPixmap)359 {360 QPixmap newPixmap = pLabelPixmap->scaled(m_pOverlayWidget->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);361 if (!newPixmap.isNull())362 m_pOverlayWidget->setPixmap(newPixmap);363 }364 #else365 QPixmap labelPixmap = m_pOverlayWidget->pixmap();366 QPixmap newPixmap = labelPixmap.scaled(m_pOverlayWidget->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);367 if (!newPixmap.isNull())368 m_pOverlayWidget->setPixmap(newPixmap);369 #endif370 }371 323 } 372 324 … … 379 331 void UIVisoCreatorWidget::sltSettingsActionToggled(bool fChecked) 380 332 { 381 if (m_fShowSettingsDialog == fChecked)382 return;383 333 toggleSettingsWidget(fChecked); 384 }385 386 void UIVisoCreatorWidget::sltSettingsDialogClosed(bool fAccepted)387 {388 toggleSettingsWidget(false);389 if (m_pActionSettings)390 m_pActionSettings->setChecked(false);391 /* Update settings:*/392 if (fAccepted && m_pSettingsWidget)393 {394 Settings newSettings = m_pSettingsWidget->settings();395 setVisoName(newSettings.m_strVisoName);396 if (m_visoOptions.m_customOptions != newSettings.m_customOptions)397 m_visoOptions.m_customOptions = newSettings.m_customOptions;398 if (m_visoOptions.m_fShowHiddenObjects != newSettings.m_fShowHiddenObjects)399 m_visoOptions.m_fShowHiddenObjects = newSettings.m_fShowHiddenObjects;400 }401 }402 403 void UIVisoCreatorWidget::sltBrowserTreeViewVisibilityChanged(bool fVisible)404 {405 Q_UNUSED(fVisible);406 334 } 407 335 … … 473 401 if (m_pRemoveISOAction) 474 402 m_pRemoveISOAction->setEnabled(fImported); 403 } 404 405 void UIVisoCreatorWidget::sltSettingsChanged() 406 { 407 AssertReturnVoid(m_pSettingsWidget); 408 const Settings &settings = m_pSettingsWidget->settings(); 409 setVisoName(settings.m_strVisoName); 410 if (m_settings.m_customOptions != settings.m_customOptions) 411 m_settings.m_customOptions = settings.m_customOptions; 412 if (m_settings.m_fShowHiddenObjects != settings.m_fShowHiddenObjects) 413 m_settings.m_fShowHiddenObjects = settings.m_fShowHiddenObjects; 475 414 } 476 415 … … 506 445 m_pToolBar->setIconSize(QSize(iIconMetric, iIconMetric)); 507 446 m_pToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 508 m_pMainLayout->addWidget(m_pToolBar); 509 } 510 511 m_pStackedLayout = new QStackedLayout; 512 AssertPtrReturnVoid(m_pStackedLayout); 513 m_pMainLayout->addLayout(m_pStackedLayout); 447 } 514 448 515 449 m_pBrowserContainerWidget = new QWidget; … … 532 466 pContainerLayout->addWidget(m_pVISOContentBrowser, 0, 5, 1, 4); 533 467 534 m_pOverlayWidget = new QLabel(this);535 AssertPtrReturnVoid(m_pOverlayWidget);536 m_pOverlayBlurEffect = new QGraphicsBlurEffect(this);537 AssertPtrReturnVoid(m_pOverlayBlurEffect);538 m_pOverlayWidget->setGraphicsEffect(m_pOverlayBlurEffect);539 m_pOverlayBlurEffect->setEnabled(false);540 m_pOverlayBlurEffect->setBlurRadius(4);541 542 468 m_pSettingsWidget = new UIVisoSettingWidget(this); 469 543 470 AssertPtrReturnVoid(m_pSettingsWidget); 544 m_pSettingsWidget->setMinimumWidth(300); 545 m_pSettingsWidget->setMinimumHeight(300); 546 m_pStackedLayout->addWidget(m_pOverlayWidget); 547 m_pStackedLayout->addWidget(m_pBrowserContainerWidget); 548 549 m_pStackedLayout->setCurrentWidget(m_pBrowserContainerWidget); 471 472 if (m_pToolBar) 473 m_pMainLayout->addWidget(m_pToolBar); 474 m_pMainLayout->addWidget(m_pBrowserContainerWidget); 475 m_pMainLayout->addWidget(m_pSettingsWidget); 476 m_pBrowserContainerWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); 477 m_pSettingsWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); 550 478 m_pSettingsWidget->hide(); 551 479 } … … 574 502 if (m_pSettingsWidget) 575 503 { 576 connect(m_pSettingsWidget, &UIVisoSettingWidget::sig Closed,577 this, &UIVisoCreatorWidget::sltSettings DialogClosed);504 connect(m_pSettingsWidget, &UIVisoSettingWidget::sigSettingsChanged, 505 this, &UIVisoCreatorWidget::sltSettingsChanged); 578 506 } 579 507 … … 672 600 void UIVisoCreatorWidget::toggleSettingsWidget(bool fShown) 673 601 { 602 AssertReturnVoid(m_pSettingsWidget); 603 m_pSettingsWidget->setVisible(fShown); 674 604 m_fShowSettingsDialog = fShown; 605 606 if (fShown) 607 m_pSettingsWidget->setSettings(m_settings); 608 675 609 emit sigSettingDialogToggle(fShown); 676 677 if (m_pSettingsWidget && m_pSettingsWidget->isVisible() != m_fShowSettingsDialog /*&& m_pOverlayWidget*/ && m_pOverlayBlurEffect)678 {679 QPixmap shot = m_pBrowserContainerWidget->grab();680 m_pOverlayWidget->setPixmap(shot);681 682 if (m_fShowSettingsDialog)683 m_pStackedLayout->setCurrentWidget(m_pOverlayWidget);684 else685 m_pStackedLayout->setCurrentWidget(m_pBrowserContainerWidget);686 687 m_pSettingsWidget->setVisible(m_fShowSettingsDialog);688 689 m_pOverlayBlurEffect->setEnabled(m_fShowSettingsDialog);690 m_pSettingsWidget->raise();691 if (m_fShowSettingsDialog)692 {693 int x = 0.5 * (m_pBrowserContainerWidget->width() - m_pSettingsWidget->width());694 int y = 0.5 * (m_pBrowserContainerWidget->height() - m_pSettingsWidget->height());695 m_pSettingsWidget->move(m_pBrowserContainerWidget->x() + x, m_pBrowserContainerWidget->y() + y);696 }697 if (m_pMainMenu)698 m_pMainMenu->setEnabled(!m_fShowSettingsDialog);699 if (m_fShowSettingsDialog)700 m_pSettingsWidget->setSettings(m_visoOptions);701 }702 610 } 703 611 … … 809 717 connect(m_pVisoCreatorWidget, &UIVisoCreatorWidget::sigVisoFilePathChanged, 810 718 this, &UIVisoCreatorDialog::sltVisoFilePathChanged); 811 connect(m_pVisoCreatorWidget, &UIVisoCreatorWidget::sigSettingDialogToggle,812 this, &UIVisoCreatorDialog::sltSettingDialogToggle);813 719 connect(m_pVisoCreatorWidget, &UIVisoCreatorWidget::sigSave, 814 720 this, &UIVisoCreatorDialog::sltSave); … … 886 792 Q_UNUSED(strPath); 887 793 updateWindowTitle(); 888 }889 890 void UIVisoCreatorDialog::sltSettingDialogToggle(bool fIsShown)891 {892 if (m_pButtonBox)893 m_pButtonBox->setEnabled(!fIsShown);894 794 } 895 795 … … 984 884 stream << "\n"; 985 885 stream << customOptions().join("\n"); 886 printf("%s\n", qPrintable(customOptions().join("\n"))); 986 887 } 987 888 file.close(); -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.h
r100640 r100812 44 44 /* Forward declarations: */ 45 45 class QGridLayout; 46 class QGraphicsBlurEffect;47 46 class QLabel; 48 class QStackedLayout;49 47 class QVBoxLayout; 50 48 class QILabel; … … 108 106 109 107 virtual void retranslateUi() final override; 110 virtual void resizeEvent(QResizeEvent *pEvent) final override;111 108 112 109 private slots: … … 114 111 void sltAddObjectsToViso(QStringList pathList); 115 112 void sltSettingsActionToggled(bool fChecked); 116 void sltSettingsDialogClosed(bool fAccepted);117 void sltBrowserTreeViewVisibilityChanged(bool fVisible);118 113 void sltHostBrowserTableSelectionChanged(QStringList pathList); 119 114 void sltContentBrowserTableSelectionChanged(bool fIsSelectionEmpty); … … 123 118 void sltISORemoveAction(); 124 119 void sltISOContentImportedOrRemoved(bool fImported); 120 void sltSettingsChanged(); 125 121 126 122 private: … … 129 125 void prepareConnections(); 130 126 void prepareActions(); 127 void setVisoName(const QString& strName); 128 131 129 /** Creates and configures the vertical toolbar. Should be called after prepareActions() */ 132 130 void prepareVerticalToolBar(); … … 137 135 void toggleSettingsWidget(bool fShown); 138 136 QStringList findISOFiles(const QStringList &pathList) const; 139 void setVisoName(const QString& strName);140 137 void setVisoFilePath(const QString& strPath); 141 138 … … 160 157 QIToolBar *m_pToolBar; 161 158 QIToolBar *m_pVerticalToolBar; 162 Settings m_visoOptions;159 Settings m_settings; 163 160 QMenu *m_pMainMenu; 164 161 QPointer<UIActionPool> m_pActionPool; 165 162 bool m_fShowToolBar; 166 bool m_fShowSettingsDialog;167 163 UIVisoSettingWidget *m_pSettingsWidget; 168 164 QWidget *m_pBrowserContainerWidget; 169 QLabel *m_pOverlayWidget;170 QGraphicsBlurEffect *m_pOverlayBlurEffect;171 QStackedLayout *m_pStackedLayout;172 165 QString m_strVisoFilePath; 166 bool m_fShowSettingsDialog; 173 167 }; 174 168 … … 207 201 void sltVisoNameChanged(const QString &strName); 208 202 void sltVisoFilePathChanged(const QString &strPath); 209 void sltSettingDialogToggle(bool fIsShown);210 203 void sltSave(); 211 204
Note:
See TracChangeset
for help on using the changeset viewer.