Files
qbz/crates/qbz-qt/qml/kiosk/KioskCoverSource.qml
T
vicrodh b1dba198c9 feat(qt): kiosk profile release hardening
Integrate the Kiosk profile hardening round: 12 dedicated Kiosk views plus
22 shared opt-in hosts, shared navigation history with Back/Forward, Albums
as the default library tab, native paged Local Library (artists/tracks),
lightweight MyQBZ grid and detail, Ephemeral lifecycle, bounded lists and
artwork sized to the physical frame, static skeletons, 64px transport bar,
Settings touch reflow and a persistent Immersive exit.

Desktop keeps its prior behavior: every shared component defaults to the
desktop path and only opts into Kiosk behavior through explicit properties
(origin-relative ScrollMemory, viewport-bounded artwork requests).

Regression coverage: kiosk navigation and artwork Node tests added to the
runtime gate, scroll-origin fixtures for fixed and grouped rows, i18n
strings for all eight locales.

Verified by 750 release tests, six QML audits, Kiosk smokes at 800x480 and
1280x800 and a Desktop A/B with seven pixel-identical captures.

cc
2026-09-07 08:23:11 -06:00

35 lines
1.1 KiB
QML

// Mounted-cell request through the existing Rust artwork/cache resolver.
import QtQuick
import QtQuick.Window
import "../assets/kiosk-art.js" as ArtPolicy
import com.blitzfc.qbz
Item {
id: root
width: 0; height: 0; visible: false
property string remote: ""
property string local: ""
property real edge: 128
property string path: ""
property string lastRequest: ""
property bool mounted: false
readonly property string source: local || path
readonly property string requestUrl: sizedUrl(remote, edge * Screen.devicePixelRatio)
function sizedUrl(url, pixels) { return ArtPolicy.sizedUrl(url, pixels) }
function request() {
if (!mounted || local || requestUrl === lastRequest) return
path = ""
lastRequest = requestUrl
if (requestUrl) QbzShell.sidebarArtworkWindow(JSON.stringify([requestUrl]))
}
onRequestUrlChanged: request()
onLocalChanged: request()
Component.onCompleted: { mounted = true; request() }
Connections {
target: QbzLibrary
function onLibraryArtworkReady(key, value) {
if (key === root.requestUrl) root.path = value
}
}
}