diff --git a/src/plugins/qtsupport/baseqtversion.h b/src/plugins/qtsupport/baseqtversion.h index fa7f135ac51..4220900fd34 100644 --- a/src/plugins/qtsupport/baseqtversion.h +++ b/src/plugins/qtsupport/baseqtversion.h @@ -38,7 +38,7 @@ class QtConfigWidget; class QtVersion; namespace Internal { -class QtOptionsPageWidget; +class QtSettingsPageWidget; class QtVersionPrivate; } @@ -220,7 +220,7 @@ private: friend class QtVersionFactory; friend class QtVersionManager; friend class Internal::QtVersionPrivate; - friend class Internal::QtOptionsPageWidget; + friend class Internal::QtSettingsPageWidget; void setId(int id); QtVersion *clone(bool forceRefreshCache = false) const; diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp index d129eaaf865..ec5a06a6b49 100644 --- a/src/plugins/qtsupport/qtoptionspage.cpp +++ b/src/plugins/qtsupport/qtoptionspage.cpp @@ -47,6 +47,7 @@ #include +using namespace Core; using namespace ProjectExplorer; using namespace Utils; @@ -149,13 +150,13 @@ private: bool m_changed = false; }; -// QtOptionsPageWidget +// QtSettingsPageWidget -class QtOptionsPageWidget : public Core::IOptionsPageWidget +class QtSettingsPageWidget final : public IOptionsPageWidget { public: - QtOptionsPageWidget(); - ~QtOptionsPageWidget(); + QtSettingsPageWidget(); + ~QtSettingsPageWidget(); static void linkWithQt(); @@ -224,7 +225,7 @@ private: QFormLayout *m_formLayout; }; -QtOptionsPageWidget::QtOptionsPageWidget() +QtSettingsPageWidget::QtSettingsPageWidget() : m_specifyNameString(Tr::tr("")) , m_infoBrowser(new QTextBrowser) , m_invalidVersionIcon(Utils::Icons::CRITICAL.icon()) @@ -297,10 +298,10 @@ QtOptionsPageWidget::QtOptionsPageWidget() m_infoBrowser->setOpenLinks(false); m_infoBrowser->setTextInteractionFlags(Qt::TextBrowserInteraction); connect(m_infoBrowser, &QTextBrowser::anchorClicked, - this, &QtOptionsPageWidget::infoAnchorClicked); + this, &QtSettingsPageWidget::infoAnchorClicked); m_infoWidget->setWidget(m_infoBrowser); connect(m_infoWidget, &DetailsWidget::expanded, - this, &QtOptionsPageWidget::setInfoWidgetVisibility); + this, &QtSettingsPageWidget::setInfoWidgetVisibility); m_versionInfoWidget->setWidget(versionInfoWidget); m_versionInfoWidget->setState(DetailsWidget::NoSummary); @@ -348,29 +349,29 @@ QtOptionsPageWidget::QtOptionsPageWidget() m_qtdirList->expandAll(); connect(m_nameEdit, &QLineEdit::textEdited, - this, &QtOptionsPageWidget::updateCurrentQtName); + this, &QtSettingsPageWidget::updateCurrentQtName); connect(m_editPathPushButton, &QAbstractButton::clicked, - this, &QtOptionsPageWidget::editPath); + this, &QtSettingsPageWidget::editPath); connect(addButton, &QAbstractButton::clicked, - this, &QtOptionsPageWidget::addQtDir); + this, &QtSettingsPageWidget::addQtDir); connect(m_delButton, &QAbstractButton::clicked, - this, &QtOptionsPageWidget::removeQtDir); + this, &QtSettingsPageWidget::removeQtDir); connect(m_qtdirList->selectionModel(), &QItemSelectionModel::currentChanged, - this, &QtOptionsPageWidget::versionChanged); + this, &QtSettingsPageWidget::versionChanged); connect(m_cleanUpButton, &QAbstractButton::clicked, - this, &QtOptionsPageWidget::cleanUpQtVersions); + this, &QtSettingsPageWidget::cleanUpQtVersions); userChangedCurrentVersion(); updateCleanUpButton(); connect(QtVersionManager::instance(), &QtVersionManager::qtVersionsChanged, - this, &QtOptionsPageWidget::updateQtVersions); + this, &QtSettingsPageWidget::updateQtVersions); connect(ProjectExplorer::ToolchainManager::instance(), &ToolchainManager::toolchainsChanged, - this, &QtOptionsPageWidget::toolChainsUpdated); + this, &QtSettingsPageWidget::toolChainsUpdated); auto chooser = new VariableChooser(this); chooser->addSupportedWidget(m_nameEdit, "Qt:Name"); @@ -380,7 +381,7 @@ QtOptionsPageWidget::QtOptionsPageWidget() }); } -QtVersion *QtOptionsPageWidget::currentVersion() const +QtVersion *QtSettingsPageWidget::currentVersion() const { QtVersionItem *item = currentItem(); if (!item) @@ -388,14 +389,14 @@ QtVersion *QtOptionsPageWidget::currentVersion() const return item->version(); } -QtVersionItem *QtOptionsPageWidget::currentItem() const +QtVersionItem *QtSettingsPageWidget::currentItem() const { QModelIndex idx = m_qtdirList->selectionModel()->currentIndex(); QModelIndex sourceIdx = m_filterModel->mapToSource(idx); return m_model->itemForIndexAtLevel<2>(sourceIdx); } -void QtOptionsPageWidget::cleanUpQtVersions() +void QtSettingsPageWidget::cleanUpQtVersions() { QVector toRemove; QString text; @@ -426,7 +427,7 @@ void QtOptionsPageWidget::cleanUpQtVersions() updateCleanUpButton(); } -void QtOptionsPageWidget::toolChainsUpdated() +void QtSettingsPageWidget::toolChainsUpdated() { m_model->forItemsAtLevel<2>([this](QtVersionItem *item) { if (item == currentItem()) @@ -436,7 +437,7 @@ void QtOptionsPageWidget::toolChainsUpdated() }); } -void QtOptionsPageWidget::setInfoWidgetVisibility() +void QtSettingsPageWidget::setInfoWidgetVisibility() { bool isExpanded = m_infoWidget->state() == DetailsWidget::Expanded; if (isExpanded && m_infoBrowser->toPlainText().isEmpty()) { @@ -450,7 +451,7 @@ void QtOptionsPageWidget::setInfoWidgetVisibility() m_infoWidget->setVisible(true); } -void QtOptionsPageWidget::infoAnchorClicked(const QUrl &url) +void QtSettingsPageWidget::infoAnchorClicked(const QUrl &url) { QDesktopServices::openUrl(url); } @@ -467,7 +468,7 @@ static QString formatAbiHtmlList(const Abis &abis) return result; } -QtOptionsPageWidget::ValidityInfo QtOptionsPageWidget::validInformation(const QtVersion *version) +QtSettingsPageWidget::ValidityInfo QtSettingsPageWidget::validInformation(const QtVersion *version) { ValidityInfo info; info.icon = m_validVersionIcon; @@ -530,7 +531,7 @@ QtOptionsPageWidget::ValidityInfo QtOptionsPageWidget::validInformation(const Qt return info; } -QList QtOptionsPageWidget::toolChains(const QtVersion *version) +QList QtSettingsPageWidget::toolChains(const QtVersion *version) { QList toolChains; if (!version) @@ -549,7 +550,7 @@ QList QtOptionsPageWidget::toolChains(const QtVersion *version) return toolChains; } -QByteArray QtOptionsPageWidget::defaultToolChainId(const QtVersion *version) +QByteArray QtSettingsPageWidget::defaultToolChainId(const QtVersion *version) { QList possibleToolChains = toolChains(version); if (!possibleToolChains.isEmpty()) @@ -557,7 +558,7 @@ QByteArray QtOptionsPageWidget::defaultToolChainId(const QtVersion *version) return QByteArray(); } -bool QtOptionsPageWidget::isNameUnique(const QtVersion *version) +bool QtSettingsPageWidget::isNameUnique(const QtVersion *version) { const QString name = version->displayName().trimmed(); @@ -567,7 +568,7 @@ bool QtOptionsPageWidget::isNameUnique(const QtVersion *version) }); } -void QtOptionsPageWidget::updateVersionItem(QtVersionItem *item) +void QtSettingsPageWidget::updateVersionItem(QtVersionItem *item) { if (!item) return; @@ -579,7 +580,7 @@ void QtOptionsPageWidget::updateVersionItem(QtVersionItem *item) item->setIcon(info.icon); } -void QtOptionsPageWidget::updateQtVersions(const QList &additions, const QList &removals, +void QtSettingsPageWidget::updateQtVersions(const QList &additions, const QList &removals, const QList &changes) { QList toRemove; @@ -613,12 +614,12 @@ void QtOptionsPageWidget::updateQtVersions(const QList &additions, const QL m_model->forItemsAtLevel<2>([this](QtVersionItem *item) { updateVersionItem(item); }); } -QtOptionsPageWidget::~QtOptionsPageWidget() +QtSettingsPageWidget::~QtSettingsPageWidget() { delete m_configurationWidget; } -void QtOptionsPageWidget::addQtDir() +void QtSettingsPageWidget::addQtDir() { FilePath qtVersion = FileUtils::getOpenFilePath(this, @@ -678,7 +679,7 @@ void QtOptionsPageWidget::addQtDir() updateCleanUpButton(); } -void QtOptionsPageWidget::removeQtDir() +void QtSettingsPageWidget::removeQtDir() { QtVersionItem *item = currentItem(); if (!item) @@ -689,7 +690,7 @@ void QtOptionsPageWidget::removeQtDir() updateCleanUpButton(); } -void QtOptionsPageWidget::editPath() +void QtSettingsPageWidget::editPath() { QtVersion *current = currentVersion(); FilePath qtVersion = @@ -729,7 +730,7 @@ void QtOptionsPageWidget::editPath() } // To be called if a Qt version was removed or added -void QtOptionsPageWidget::updateCleanUpButton() +void QtSettingsPageWidget::updateCleanUpButton() { bool hasInvalidVersion = false; for (TreeItem *child : *m_manualItem) { @@ -743,13 +744,13 @@ void QtOptionsPageWidget::updateCleanUpButton() m_cleanUpButton->setEnabled(hasInvalidVersion); } -void QtOptionsPageWidget::userChangedCurrentVersion() +void QtSettingsPageWidget::userChangedCurrentVersion() { updateWidgets(); updateDescriptionLabel(); } -void QtOptionsPageWidget::updateDescriptionLabel() +void QtSettingsPageWidget::updateDescriptionLabel() { QtVersionItem *item = currentItem(); const QtVersion *version = item ? item->version() : nullptr; @@ -774,14 +775,14 @@ void QtOptionsPageWidget::updateDescriptionLabel() } } -void QtOptionsPageWidget::versionChanged(const QModelIndex ¤t, const QModelIndex &previous) +void QtSettingsPageWidget::versionChanged(const QModelIndex ¤t, const QModelIndex &previous) { Q_UNUSED(current) Q_UNUSED(previous) userChangedCurrentVersion(); } -void QtOptionsPageWidget::updateWidgets() +void QtSettingsPageWidget::updateWidgets() { delete m_configurationWidget; m_configurationWidget = nullptr; @@ -794,7 +795,7 @@ void QtOptionsPageWidget::updateWidgets() m_formLayout->addRow(m_configurationWidget); m_configurationWidget->setEnabled(!version->isAutodetected()); connect(m_configurationWidget, &QtConfigWidget::changed, - this, &QtOptionsPageWidget::updateDescriptionLabel); + this, &QtSettingsPageWidget::updateDescriptionLabel); } } else { m_nameEdit->clear(); @@ -822,7 +823,7 @@ static QString qtVersionsFile(const QString &baseDir) static std::optional currentlyLinkedQtDir(bool *hasInstallSettings) { - const QString installSettingsFilePath = settingsFile(Core::ICore::resourcePath().toString()); + const QString installSettingsFilePath = settingsFile(ICore::resourcePath().toString()); const bool installSettingsExist = QFileInfo::exists(installSettingsFilePath); if (hasInstallSettings) *hasInstallSettings = installSettingsExist; @@ -851,7 +852,7 @@ static bool canLinkWithQt(QString *toolTip) &installSettingsExist); QStringList tip; tip << linkingPurposeText(); - if (!Core::ICore::resourcePath().isWritableDir()) { + if (!ICore::resourcePath().isWritableDir()) { canLink = false; tip << Tr::tr("%1's resource directory is not writable.") .arg(QGuiApplication::applicationDisplayName()); @@ -865,7 +866,7 @@ static bool canLinkWithQt(QString *toolTip) return canLink; } -void QtOptionsPageWidget::setupLinkWithQtButton() +void QtSettingsPageWidget::setupLinkWithQtButton() { QString tip; const bool canLink = canLinkWithQt(&tip); @@ -874,7 +875,7 @@ void QtOptionsPageWidget::setupLinkWithQtButton() connect(m_linkWithQtButton, &QPushButton::clicked, this, &LinkWithQtSupport::linkWithQt); } -void QtOptionsPageWidget::updateCurrentQtName() +void QtSettingsPageWidget::updateCurrentQtName() { QtVersionItem *item = currentItem(); if (!item || !item->version()) @@ -887,12 +888,12 @@ void QtOptionsPageWidget::updateCurrentQtName() m_model->forItemsAtLevel<2>([this](QtVersionItem *item) { updateVersionItem(item); }); } -void QtOptionsPageWidget::apply() +void QtSettingsPageWidget::apply() { disconnect(QtVersionManager::instance(), &QtVersionManager::qtVersionsChanged, this, - &QtOptionsPageWidget::updateQtVersions); + &QtSettingsPageWidget::updateQtVersions); QtVersionManager::setDocumentationSetting( QtVersionManager::DocumentationSetting(m_documentationSetting->currentData().toInt())); @@ -907,7 +908,7 @@ void QtOptionsPageWidget::apply() connect(QtVersionManager::instance(), &QtVersionManager::qtVersionsChanged, this, - &QtOptionsPageWidget::updateQtVersions); + &QtSettingsPageWidget::updateQtVersions); } const QStringList kSubdirsToCheck = {"", @@ -965,12 +966,12 @@ static FilePath defaultQtInstallationPath() return FileUtils::homePath() / "Qt"; } -void QtOptionsPageWidget::linkWithQt() +void QtSettingsPageWidget::linkWithQt() { const QString title = Tr::tr("Choose Qt Installation"); const QString restartText = Tr::tr("The change will take effect after restart."); bool askForRestart = false; - QDialog dialog(Core::ICore::dialogParent()); + QDialog dialog(ICore::dialogParent()); dialog.setWindowTitle(title); auto tipLabel = new QLabel(linkingPurposeText()); tipLabel->setWordWrap(true); @@ -1017,7 +1018,7 @@ void QtOptionsPageWidget::linkWithQt() unlinkButton->setEnabled(currentLink.has_value()); connect(unlinkButton, &QPushButton::clicked, &dialog, [&dialog, &askForRestart] { bool removeSettingsFile = false; - const QString filePath = settingsFile(Core::ICore::resourcePath().toString()); + const QString filePath = settingsFile(ICore::resourcePath().toString()); { QSettings installSettings(filePath, QSettings::IniFormat); installSettings.remove(kInstallSettingsKey); @@ -1038,12 +1039,12 @@ void QtOptionsPageWidget::linkWithQt() const std::optional settingsDir = settingsDirForQtDir(pathInput->baseDirectory(), pathInput->rawFilePath()); if (QTC_GUARD(settingsDir)) { - const QString settingsFilePath = settingsFile(Core::ICore::resourcePath().toString()); + const QString settingsFilePath = settingsFile(ICore::resourcePath().toString()); QSettings settings(settingsFilePath, QSettings::IniFormat); settings.setValue(kInstallSettingsKey, settingsDir->toVariant()); settings.sync(); if (settings.status() == QSettings::AccessError) { - QMessageBox::critical(Core::ICore::dialogParent(), + QMessageBox::critical(ICore::dialogParent(), Tr::tr("Error Linking With Qt"), Tr::tr("Could not write to \"%1\".").arg(settingsFilePath)); return; @@ -1053,33 +1054,42 @@ void QtOptionsPageWidget::linkWithQt() } } if (askForRestart) { - Core::RestartDialog restartDialog(Core::ICore::dialogParent(), restartText); + RestartDialog restartDialog(ICore::dialogParent(), restartText); restartDialog.exec(); } } -// QtOptionsPage +// QtSettingsPage -QtOptionsPage::QtOptionsPage() +class QtSettingsPage final : public IOptionsPage { - setId(Constants::QTVERSION_SETTINGS_PAGE_ID); - setDisplayName(Tr::tr("Qt Versions")); - setCategory(ProjectExplorer::Constants::KITS_SETTINGS_CATEGORY); - setWidgetCreator([] { return new QtOptionsPageWidget; }); -} +public: + QtSettingsPage() + { + setId(Constants::QTVERSION_SETTINGS_PAGE_ID); + setDisplayName(Tr::tr("Qt Versions")); + setCategory(ProjectExplorer::Constants::KITS_SETTINGS_CATEGORY); + setWidgetCreator([] { return new QtSettingsPageWidget; }); + } -QStringList QtOptionsPage::keywords() const + QStringList keywords() const final + { + return { + Tr::tr("Add..."), + Tr::tr("Remove"), + Tr::tr("Clean Up"), + Tr::tr("Link with Qt"), + Tr::tr("Remove Link"), + Tr::tr("Qt installation path:"), + Tr::tr("qmake path:"), + Tr::tr("Register documentation:") + }; + } +}; + +void setupQtSettingsPage() { - return { - Tr::tr("Add..."), - Tr::tr("Remove"), - Tr::tr("Clean Up"), - Tr::tr("Link with Qt"), - Tr::tr("Remove Link"), - Tr::tr("Qt installation path:"), - Tr::tr("qmake path:"), - Tr::tr("Register documentation:") - }; + static QtSettingsPage theQtSettingsPage; } } // Internal @@ -1101,7 +1111,7 @@ Utils::FilePath LinkWithQtSupport::linkedQt() void LinkWithQtSupport::linkWithQt() { - Internal::QtOptionsPageWidget::linkWithQt(); + Internal::QtSettingsPageWidget::linkWithQt(); } } // QtSupport diff --git a/src/plugins/qtsupport/qtoptionspage.h b/src/plugins/qtsupport/qtoptionspage.h index 1ee0e28df8b..892e68ecfc2 100644 --- a/src/plugins/qtsupport/qtoptionspage.h +++ b/src/plugins/qtsupport/qtoptionspage.h @@ -8,18 +8,6 @@ #include namespace QtSupport { -namespace Internal { - -class QtOptionsPage final : public Core::IOptionsPage -{ -public: - QtOptionsPage(); - - QStringList keywords() const final; - -}; - -} // QtSupport namespace LinkWithQtSupport { QTSUPPORT_EXPORT bool canLinkWithQt(); @@ -28,4 +16,6 @@ QTSUPPORT_EXPORT Utils::FilePath linkedQt(); QTSUPPORT_EXPORT void linkWithQt(); } -} // Internal +namespace Internal { void setupQtSettingsPage(); } + +} // QtSupport diff --git a/src/plugins/qtsupport/qtsupportplugin.cpp b/src/plugins/qtsupport/qtsupportplugin.cpp index 19f3e620c70..30813692f63 100644 --- a/src/plugins/qtsupport/qtsupportplugin.cpp +++ b/src/plugins/qtsupport/qtsupportplugin.cpp @@ -48,8 +48,6 @@ namespace QtSupport::Internal { class QtSupportPluginPrivate { public: - QtOptionsPage qtOptionsPage; - QtOutputFormatterFactory qtOutputFormatterFactory; UicGeneratorFactory uicGeneratorFactory; @@ -111,6 +109,7 @@ void QtSupportPlugin::initialize() setupDesktopQtVersion(); setupEmbeddedLinuxQtVersion(); setupGettingStartedWelcomePage(); + setupQtSettingsPage(); theProcessRunner() = processRunnerCallback; diff --git a/src/plugins/qtsupport/qtversionmanager.h b/src/plugins/qtsupport/qtversionmanager.h index 6eba70fd334..9fa2cfb5b16 100644 --- a/src/plugins/qtsupport/qtversionmanager.h +++ b/src/plugins/qtsupport/qtversionmanager.h @@ -54,7 +54,7 @@ private: friend class QtVersion; friend class QtVersionFactory; friend class QtVersionManagerImpl; - friend class Internal::QtOptionsPageWidget; + friend class Internal::QtSettingsPageWidget; friend class Internal::QtSupportPlugin; static void initialized();