Files
qbz/crates/qbz-qt/qml/theme/QbzSpinner.qml
T
vicrodh 9a4fec6b70 refactor(qbz-qt): phase 23 part 1 — QML module layout + first five domain bridges
Two fronts of the modularization, both gated green before this commit.

QML leaves the flat qml/ directory for seven modules: cards, controls,
rows, settings, shell, theme, views. Only Main.qml and LoginScreen.qml
stay at the root. build.rs matches the tree exactly (55 files), relative
imports and asset paths were re-anchored for the new depth.

The QbzBridge God-object starts breaking up: QbzSession, QbzShell,
QbzPlayer, QbzQueue and QbzHome are now their own #[cxx_qt::bridge]
singletons, each with its own OnceLock<CxxQtThread> and ui() hop, booted
in order from Main.qml. Bridge files stay directly under src/ because
cxx-qt-build only accepts rust_files from one directory (QTBUG-93443).

bridge.rs keeps 5.5 domains (library, album/artist, settings,
integrations, search, playlist) and dies once they are split out.

cc
2026-07-28 11:08:20 -06:00

28 lines
608 B
QML

// Loading spinner — replica of primitives/LoadingSpinner.slint: the
// Lucide loader-circle arc in accent, rotating 360deg/1000ms linear.
import QtQuick
Item {
id: root
property int size: 32
property bool spinning: true
width: size
height: size
QbzIcon {
name: "loader-circle"
width: root.size
height: root.size
tintName: "accent"
RotationAnimation on rotation {
running: root.spinning && root.visible
from: 0
to: 360
duration: 1000
loops: Animation.Infinite
}
}
}