// Copyright (C) 2026 Danilo M. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. import QtQuick import "../.." // The state line under the tile label, and the poll's lifetime: the tile // exists exactly while the drawer panel is loaded, so it turns polling on and // off. Item { id: tile required property var ai width: parent ? parent.width : implicitWidth implicitHeight: line.implicitHeight Component.onCompleted: ai.polling = true Component.onDestruction: ai.polling = false Text { id: line width: parent.width elide: Text.ElideRight font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 4 } color: tile.ai.active ? Theme.text : Theme.subtext text: { const parts = []; const n = tile.ai.runningApps.length; if (n > 0) parts.push(n === 1 ? "1 app" : n + " apps"); const busy = tile.ai.engines.filter(e => e.busy).map(e => e.name); if (busy.length > 0) parts.push(busy.join(", ") + " busy"); return parts.length > 0 ? parts.join(" ยท ") : "Idle"; } } }