diff --git a/launcher/include/compatibilitytoolinstaller.h b/launcher/include/compatibilitytoolinstaller.h index ac302d5..2595dd1 100644 --- a/launcher/include/compatibilitytoolinstaller.h +++ b/launcher/include/compatibilitytoolinstaller.h @@ -14,6 +14,7 @@ class CompatibilityToolInstaller : public QObject QML_UNCREATABLE("Use LauncherCore.createCompatInstaller") Q_PROPERTY(bool isInstalled READ isInstalled NOTIFY isInstalledChanged) + Q_PROPERTY(bool hasSteam READ hasSteam CONSTANT) public: explicit CompatibilityToolInstaller(LauncherCore &launcher, QObject *parent = nullptr); @@ -22,6 +23,7 @@ public: Q_INVOKABLE void removeCompatibilityTool(); bool isInstalled() const; + bool hasSteam() const; Q_SIGNALS: void installFinished(); diff --git a/launcher/src/compatibilitytoolinstaller.cpp b/launcher/src/compatibilitytoolinstaller.cpp index 0307844..706e6cf 100644 --- a/launcher/src/compatibilitytoolinstaller.cpp +++ b/launcher/src/compatibilitytoolinstaller.cpp @@ -126,4 +126,12 @@ bool CompatibilityToolInstaller::isInstalled() const return astraToolDir.exists(); } +bool CompatibilityToolInstaller::hasSteam() const +{ + const QDir appDataDir = QStandardPaths::standardLocations(QStandardPaths::StandardLocation::HomeLocation)[0]; + const QDir steamDir = appDataDir.absoluteFilePath(QStringLiteral(".steam")); + const QDir steamSteamDir = steamDir.absoluteFilePath(QStringLiteral("steam")); + return steamSteamDir.exists(); +} + #include "moc_compatibilitytoolinstaller.cpp" \ No newline at end of file diff --git a/launcher/ui/Settings/CompatibilityToolSetup.qml b/launcher/ui/Settings/CompatibilityToolSetup.qml index 5401c7e..3ac119e 100644 --- a/launcher/ui/Settings/CompatibilityToolSetup.qml +++ b/launcher/ui/Settings/CompatibilityToolSetup.qml @@ -34,7 +34,7 @@ FormCard.FormCardPage { text: i18n("Install Tool") icon.name: "install" - visible: !page.installer.isInstalled + visible: page.installer.hasSteam && !page.installer.isInstalled onClicked: page.installer.installCompatibilityTool() } @@ -43,9 +43,15 @@ FormCard.FormCardPage { text: i18n("Remove Tool") icon.name: "delete" - visible: page.installer.isInstalled + visible: page.installer.hasSteam && page.installer.isInstalled onClicked: page.installer.removeCompatibilityTool() } + + FormCard.FormTextDelegate { + text: i18n("Steam is not installed.") + visible: !page.installer.hasSteam + textItem.color: Kirigami.Theme.disabledTextColor + } } readonly property Kirigami.PromptDialog errorDialog: Kirigami.PromptDialog {