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
35 lines
1.1 KiB
QML
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
|
|
}
|
|
}
|
|
}
|