mirror of
https://github.com/praktimarc/kst4contest.git
synced 2026-10-19 22:02:57 +02:00
Etappen 3 to 6a of the migration (129 commits). Every window the operator sees is Compose; the JavaFX ones still exist beside them so the two could be compared against a live session, which is the only way the differences came to light. The toolchain first, then the settings window with its eleven tabs and 72 real preferences; then the multi-column table as a component, and with it the rules it needs -- stable row identity, a selection that survives a refresh, column order the operator can drag, and a repaint when the rows change rather than when the list instance does. Then the update and monitor windows, and the main window: 22 station columns, the filter bar, the selected-station panel, the message tabs, the priority bar, the sked controls, the status indicators and the timeline, assembled behind a splitter because Compose has none. The map stops being a WebView. A Compose canvas projects WebMercator tiles itself, with the clustering in core and an asynchronous fetcher in place of the local tile proxy; derive() becomes a pure Kotlin reimplementation instead of a reflection call into com.sun.javafx. Most of the volume here is parity the operator would notice rather than new behaviour: desktop density instead of Material's phone minimums, colours taken from the JavaFX stylesheets instead of Material's palette, row dividers, band columns, grid-square labels and their colours, the home marker and antenna beam, pinch-to-zoom under Wayland, and layouts that survive a window narrower than the chart they stack. Two lessons are worth more than the diff. A control bound to a value Compose cannot observe writes through and never redraws -- that one shipped repeatedly with a green build, because no test drew anything. And a layout that clips instead of wrapping is worse than one that is merely too narrow: half a word is the worst available outcome.
68 lines
2.2 KiB
Bash
68 lines
2.2 KiB
Bash
# Maintainer: Philipp Wagner <philipp@wagnersnetz.de>
|
|
pkgname=kst4contest-git
|
|
pkgver=1.44.0.r310.ga8f12876
|
|
pkgrel=1
|
|
pkgdesc="ON4KST Chat Client for VHF/UHF contest operation (git)"
|
|
arch=('x86_64')
|
|
url="https://github.com/praktimarc/kst4contest"
|
|
license=('GPL-3.0-only')
|
|
depends=('gst-plugins-base' 'gst-plugins-good')
|
|
makedepends=('java-environment=21' 'gradle' 'git')
|
|
provides=('kst4contest')
|
|
conflicts=('kst4contest' 'kst4contest-bin')
|
|
source=("kst4contest::git+https://github.com/praktimarc/kst4contest.git")
|
|
sha256sums=('SKIP')
|
|
|
|
pkgver() {
|
|
cd "${srcdir}/kst4contest"
|
|
BASE=$(grep -m1 '^version=' gradle.properties \
|
|
| cut -d= -f2 | sed 's/[-.]nightly//')
|
|
printf '%s.r%s.g%s' "${BASE}" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
|
|
}
|
|
|
|
build() {
|
|
cd "${srcdir}/kst4contest"
|
|
|
|
export JAVA_HOME=$(find /usr/lib/jvm -maxdepth 1 -name 'java-21-*' -type d | head -n 1)
|
|
export PATH="${JAVA_HOME}/bin:${PATH}"
|
|
|
|
./gradlew --offline -S :app-desktop:createDistributable
|
|
|
|
# package() reads dist/KST4Contest. Application name, icon and the JDK
|
|
# module list come from app-desktop/build.gradle.kts.
|
|
rm -rf dist
|
|
mkdir -p dist
|
|
cp -a app-desktop/build/compose/binaries/main/app/KST4Contest dist/
|
|
}
|
|
|
|
package() {
|
|
cd "${srcdir}/kst4contest"
|
|
|
|
install -dm755 "${pkgdir}/usr/lib/KST4Contest"
|
|
cp -a dist/KST4Contest/. "${pkgdir}/usr/lib/KST4Contest/"
|
|
|
|
install -dm755 "${pkgdir}/usr/bin"
|
|
printf '#!/bin/sh\nexec /usr/lib/KST4Contest/bin/KST4Contest "$@"\n' \
|
|
> "${pkgdir}/usr/bin/KST4Contest"
|
|
chmod 755 "${pkgdir}/usr/bin/KST4Contest"
|
|
|
|
install -dm755 "${pkgdir}/usr/share/applications"
|
|
cat > "${pkgdir}/usr/share/applications/KST4Contest.desktop" << 'EOF'
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=KST4Contest
|
|
Comment=ON4KST Chat Client for VHF/UHF contest operation
|
|
Exec=KST4Contest
|
|
Icon=KST4Contest
|
|
Categories=Network;HamRadio;
|
|
Terminal=false
|
|
EOF
|
|
|
|
if [[ -f "${pkgdir}/usr/lib/KST4Contest/lib/KST4Contest.png" ]]; then
|
|
install -Dm644 "${pkgdir}/usr/lib/KST4Contest/lib/KST4Contest.png" \
|
|
"${pkgdir}/usr/share/icons/hicolor/256x256/apps/KST4Contest.png"
|
|
fi
|
|
|
|
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
|
|
}
|