From ded8ad83da95016f384b19072e9ffbf956bdd0d5 Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Fri, 6 Feb 2026 14:03:22 +0100 Subject: [PATCH] QML: show daemon availability banner Expose the Game Center daemon availability to the UI and show\nan inline error banner when it is not reachable, with a retry action. --- src/qml/Main.qml | 48 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/src/qml/Main.qml b/src/qml/Main.qml index 702dd4d..7621b1b 100644 --- a/src/qml/Main.qml +++ b/src/qml/Main.qml @@ -893,23 +893,45 @@ Kirigami.ApplicationWindow { } ] - LibraryView { - id: libraryView + ColumnLayout { anchors.fill: parent + spacing: 0 - filterSource: root.currentSource - searchActive: root.searchActive - - adaptiveCardSize: root.adaptiveCardSize - isTouchDevice: root.isTouchDevice - - onGameSelected: function(game) { - root.selectedGame = game - detailsSheet.open() + Kirigami.InlineMessage { + id: daemonBanner + Layout.fillWidth: true + Layout.bottomMargin: Kirigami.Units.smallSpacing + type: Kirigami.MessageType.Error + visible: !App.launcher.daemonAvailable + text: i18n("Game Center daemon is not running. Game launching is unavailable.") + actions: [ + Kirigami.Action { + text: i18n("Retry") + icon.name: "view-refresh" + onTriggered: App.launcher.retryDaemonConnection() + } + ] } - onGameLaunched: function(game) { - App.launcher.launchGame(game) + LibraryView { + id: libraryView + Layout.fillWidth: true + Layout.fillHeight: true + + filterSource: root.currentSource + searchActive: root.searchActive + + adaptiveCardSize: root.adaptiveCardSize + isTouchDevice: root.isTouchDevice + + onGameSelected: function(game) { + root.selectedGame = game + detailsSheet.open() + } + + onGameLaunched: function(game) { + App.launcher.launchGame(game) + } } } }