summaryrefslogtreecommitdiff
path: root/src/plugins/qtsupport/qtoptionspage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qtsupport/qtoptionspage.cpp')
-rw-r--r--src/plugins/qtsupport/qtoptionspage.cpp37
1 files changed, 30 insertions, 7 deletions
diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp
index 95c3b84d50..3f851979fe 100644
--- a/src/plugins/qtsupport/qtoptionspage.cpp
+++ b/src/plugins/qtsupport/qtoptionspage.cpp
@@ -823,28 +823,41 @@ static QString linkingPurposeText()
"Linking with a Qt installation automatically registers Qt versions and kits.");
}
-void QtOptionsPageWidget::setupLinkWithQtButton()
+static bool canLinkWithQt(QString *toolTip)
{
+ bool canLink = true;
bool installSettingsExist;
const Utils::optional<QString> installSettingsValue = currentlyLinkedQtDir(
&installSettingsExist);
QStringList tip;
tip << linkingPurposeText();
if (!FilePath::fromString(Core::ICore::resourcePath()).isWritablePath()) {
- m_ui.linkWithQtButton->setEnabled(false);
- tip << tr("%1's resource directory is not writable.").arg(Core::Constants::IDE_DISPLAY_NAME);
+ canLink = false;
+ tip << QtOptionsPageWidget::tr("%1's resource directory is not writable.")
+ .arg(Core::Constants::IDE_DISPLAY_NAME);
}
// guard against redirecting Qt Creator that is part of a Qt installations
// TODO this fails for pre-releases in the online installer
// TODO this will fail when make Qt Creator non-required in the Qt installers
if (installSettingsExist && !installSettingsValue) {
- m_ui.linkWithQtButton->setEnabled(false);
- tip << tr("%1 is part of a Qt installation.").arg(Core::Constants::IDE_DISPLAY_NAME);
+ canLink = false;
+ tip << QtOptionsPageWidget::tr("%1 is part of a Qt installation.")
+ .arg(Core::Constants::IDE_DISPLAY_NAME);
}
const QString link = installSettingsValue ? *installSettingsValue : QString();
if (!link.isEmpty())
- tip << tr("%1 is currently linked to \"%2\".").arg(Core::Constants::IDE_DISPLAY_NAME, link);
- m_ui.linkWithQtButton->setToolTip(tip.join("\n\n"));
+ tip << QtOptionsPageWidget::tr("%1 is currently linked to \"%2\".")
+ .arg(Core::Constants::IDE_DISPLAY_NAME, link);
+ if (toolTip)
+ *toolTip = tip.join("\n\n");
+ return canLink;
+}
+
+void QtOptionsPageWidget::setupLinkWithQtButton()
+{
+ QString tip;
+ canLinkWithQt(&tip);
+ m_ui.linkWithQtButton->setToolTip(tip);
connect(m_ui.linkWithQtButton, &QPushButton::clicked, this, &QtOptionsPage::linkWithQt);
}
@@ -1018,6 +1031,16 @@ QtOptionsPage::QtOptionsPage()
setWidgetCreator([] { return new QtOptionsPageWidget; });
}
+bool QtOptionsPage::canLinkWithQt()
+{
+ return Internal::canLinkWithQt(nullptr);
+}
+
+bool QtOptionsPage::isLinkedWithQt()
+{
+ return currentlyLinkedQtDir(nullptr).has_value();
+}
+
void QtOptionsPage::linkWithQt()
{
QtOptionsPageWidget::linkWithQt();