2.4 KiB
2.4 KiB
TASK 71 — QmlMobileScanner as a components app candidate
Status: recon 2026-08-11, verdict owed. Source reviewed:
emericg/QmlMobileScanner (GPL-3.0, upstream clone for reference).
What it is
A demo barcode & QR scanner + writer in Qt Quick: live camera scanning,
read-from-picture (WIP), barcode generation, and a SQLite history
(DatabaseManager). Phone, tablet, and desktop UIs in one tree, plus a small
ComponentLibrary. Backends: zxing-cpp v3.0.2, QZXing v3.3.0 (Qt6 port), and
zint v2.16 for generation. Qt 6.8+, Qt Multimedia with ffmpeg backend,
CMake.
Why it fits (and the caveats)
- License: GPL-3.0 inside Souveraine's AGPL-3.0 is compatible — AGPL is a GPLv3 superset, vendoring is legal, but the component's provenance must be visible (thirdparty/ carries full zxing-cpp + zint trees already).
- The phone-side gate is camera: TASK-46 has the front IMX355 streaming since 2026-07-29 with the rear IMX363 DT still unbuilt. Scanner can ship laptop-first with a webcam and land on glass when the rear camera does.
- Qt Multimedia/ffmpeg is the heavyweight — check the ffmpeg backend actually binds freedreno's V4L2 before committing; the no-GNOME/no-KDE constraint doesn't bar Qt, but a second multimedia stack might be worth a fight.
- fontawesome-qml (
schnitzeltony/fontawesome-qml, LGPL-3.0): flagged as possibly needed. Verified: the scanner's QML has no FontLoader or ttf references — icons are its ownMenuXxxcomponents and logo images — so it may already work as-is; fontawesome would only matter if we re-skin. Marked unverified, not assumed. souveraine-components/is referenced indocs/README.md(authority binaries + audit ladder) but has no local repo — decide whether this candidate lives in a new components repo (TASK-25 packaging story) or stays an app package.
What's owed
- Verdict: adopt as component / adopt as app / archive the idea.
- If adopt: dependency pass (ffmpeg backend on freedreno), icon story (fontawesome verdict), and whether the demo-grade code (read-from-picture WIP, writer WIP) matches the acceptance bar.
Acceptance
One written verdict with the camera gate and multimedia stack named, and — if adopt — the component landed in the repo of record.
Connects to
TASK-46 (camera gate), TASK-25 (one repo, all packages),
docs/README.md (components reference).