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
28 lines
608 B
QML
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
|
|
}
|
|
}
|
|
}
|