feat(qbz-slint): scaffold Slint POC crate
First increment of M1 of the Slint functional POC. Adds the qbz-slint workspace member: Slint 1.x dependency, build.rs compiling ui/app.slint, a minimal AppWindow, and the binary entry point. Verifies the Slint toolchain builds in this environment before the foundation layer (tokens, shell, theme, i18n, typed commands) lands. Private slint-poc branch only (ADR-007). cc
This commit is contained in:
6 files changed
+3905
-68
No files matched your search
Generated
+3842
-68
File diff suppressed because it is too large.
Load diff
@@ -19,6 +19,7 @@ members = [
|
||||
"qconnect-transport-ws",
|
||||
"qconnect-app",
|
||||
"qbzd",
|
||||
"qbz-slint",
|
||||
]
|
||||
|
||||
[workspace.package]
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
[package]
|
||||
name = "qbz-slint"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
license.workspace = true
|
||||
repository.workspace = true
|
||||
description = "Slint functional POC shell for QBZ (private branch only)"
|
||||
|
||||
[[bin]]
|
||||
name = "qbz-slint"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
slint = "1"
|
||||
log = { workspace = true }
|
||||
|
||||
[build-dependencies]
|
||||
slint-build = "1"
|
||||
@@ -0,0 +1,6 @@
|
||||
//! Compiles the Slint UI tree. `ui/app.slint` is the single entry point; it
|
||||
//! imports everything else, so only the entry file is listed here.
|
||||
|
||||
fn main() {
|
||||
slint_build::compile("ui/app.slint").expect("Slint UI failed to compile");
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
//! QBZ Slint POC binary.
|
||||
//!
|
||||
//! Validates whether Slint can become QBZ's future UI foundation on top of
|
||||
//! the framework-agnostic `qbz-app` / `qbz-core` stack. See the POC ADR
|
||||
//! (`qbz-nix-docs/qbz-adr/qbz_slint_functional_poc_adr.md`).
|
||||
//!
|
||||
//! Lives only on the private `slint-poc` branch (ADR-007). The Slint UI tree
|
||||
//! is compiled from `ui/app.slint` by `build.rs`; `include_modules!` pulls in
|
||||
//! the generated Rust bindings.
|
||||
|
||||
slint::include_modules!();
|
||||
|
||||
fn main() -> Result<(), slint::PlatformError> {
|
||||
let window = AppWindow::new()?;
|
||||
window.run()
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
// QBZ Slint POC — UI entry point.
|
||||
//
|
||||
// This file stays thin: it imports the foundation, shell, and feature
|
||||
// modules and exports the single top-level window. No raw visual constants
|
||||
// or domain logic live here (see the POC ADR, sections 13 and 21).
|
||||
|
||||
export component AppWindow inherits Window {
|
||||
title: "QBZ";
|
||||
preferred-width: 1180px;
|
||||
preferred-height: 760px;
|
||||
min-width: 940px;
|
||||
min-height: 600px;
|
||||
|
||||
// Placeholder content. Replaced by the AppShell in the next M1 step
|
||||
// (foundation tokens + sidebar / header / content / player bar).
|
||||
Text {
|
||||
text: "QBZ — Slint POC";
|
||||
font-size: 22px;
|
||||
horizontal-alignment: center;
|
||||
vertical-alignment: center;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user