mirror of
https://github.com/spalencsar/bearwave.git
synced 2026-07-06 14:24:14 +02:00
fix: About dialog crash and flatpak build id (1.0.5 pkgrel 8)
Replace the tall ScrollView/license layout that crashed under KDE Dialog with a compact layout matching the other dialogs. Inject BEARWAVE_GIT_HASH into flatpak builds via manifest env (no .git in builder sandbox).
This commit is contained in:
2
PKGBUILD
2
PKGBUILD
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Sebastian Palencsar <moin@nerdbear.de>
|
||||
pkgname=bearwave-git
|
||||
pkgver=1.0.5
|
||||
pkgrel=7
|
||||
pkgrel=8
|
||||
pkgdesc="KDE-focused desktop internet radio app"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/spalencsar/bearwave"
|
||||
|
||||
@@ -19,20 +19,34 @@ for arg in "$@"; do
|
||||
esac
|
||||
done
|
||||
|
||||
git_hash="$(git -C "${root}" rev-parse --short HEAD 2>/dev/null || echo unknown)"
|
||||
build_manifest="${root}/.flatpak-builder-manifest.json"
|
||||
python3 - "${root}/de.nerdbear.bearwave.json" "${build_manifest}" "${git_hash}" <<'PY'
|
||||
import json, sys
|
||||
src, dst, git_hash = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||
with open(src, encoding="utf-8") as f:
|
||||
manifest = json.load(f)
|
||||
module = manifest["modules"][0]
|
||||
module.setdefault("build-options", {}).setdefault("env", {})["BEARWAVE_GIT_HASH"] = git_hash
|
||||
with open(dst, "w", encoding="utf-8") as f:
|
||||
json.dump(manifest, f, indent=4)
|
||||
f.write("\n")
|
||||
PY
|
||||
|
||||
if [[ "${mode}" == "reexport" ]]; then
|
||||
flatpak-builder \
|
||||
--repo=flatpak_repo \
|
||||
--gpg-sign="${gpg_key_id}" \
|
||||
--export-only \
|
||||
flatpak_build \
|
||||
de.nerdbear.bearwave.json
|
||||
"${build_manifest}"
|
||||
else
|
||||
flatpak-builder \
|
||||
--repo=flatpak_repo \
|
||||
--gpg-sign="${gpg_key_id}" \
|
||||
--force-clean \
|
||||
flatpak_build \
|
||||
de.nerdbear.bearwave.json
|
||||
"${build_manifest}"
|
||||
fi
|
||||
|
||||
flatpak build-update-repo --gpg-sign="${gpg_key_id}" flatpak_repo
|
||||
|
||||
@@ -18,13 +18,19 @@ set(SOURCES
|
||||
# Create executable
|
||||
add_executable(bearwave ${SOURCES})
|
||||
|
||||
execute_process(
|
||||
if(BEARWAVE_GIT_HASH)
|
||||
# set via -D from build scripts
|
||||
elseif(DEFINED ENV{BEARWAVE_GIT_HASH} AND NOT "$ENV{BEARWAVE_GIT_HASH}" STREQUAL "")
|
||||
set(BEARWAVE_GIT_HASH "$ENV{BEARWAVE_GIT_HASH}")
|
||||
else()
|
||||
execute_process(
|
||||
COMMAND git rev-parse --short HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||
OUTPUT_VARIABLE BEARWAVE_GIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET
|
||||
)
|
||||
)
|
||||
endif()
|
||||
if(NOT BEARWAVE_GIT_HASH)
|
||||
set(BEARWAVE_GIT_HASH "unknown")
|
||||
endif()
|
||||
|
||||
@@ -14,6 +14,12 @@ Dialog {
|
||||
property string appVersion: Qt.application.version
|
||||
property string buildId: "?"
|
||||
|
||||
title: qsTr("About BearWave")
|
||||
modal: true
|
||||
anchors.centerIn: parent
|
||||
width: compactMode ? 360 : 480
|
||||
standardButtons: Dialog.Ok
|
||||
|
||||
readonly property string versionLine: {
|
||||
var version = root.appVersion
|
||||
if (version === undefined || version === null || version === "")
|
||||
@@ -24,25 +30,13 @@ Dialog {
|
||||
return qsTr("Version") + " " + String(version) + " · " + qsTr("build") + " " + String(build)
|
||||
}
|
||||
|
||||
modal: true
|
||||
anchors.centerIn: parent
|
||||
width: compactMode ? 360 : 520
|
||||
height: compactMode ? 560 : 680
|
||||
standardButtons: Dialog.Ok
|
||||
|
||||
contentItem: ColumnLayout {
|
||||
spacing: 16
|
||||
|
||||
ColumnLayout {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
spacing: 6
|
||||
spacing: 12
|
||||
|
||||
Image {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: 72
|
||||
Layout.preferredHeight: 72
|
||||
sourceSize.width: 72
|
||||
sourceSize.height: 72
|
||||
source: "qrc:/assets/app/bearwave.png"
|
||||
fillMode: Image.PreserveAspectFit
|
||||
smooth: true
|
||||
@@ -53,14 +47,14 @@ Dialog {
|
||||
text: qsTr("BearWave")
|
||||
color: BearTheme.textMain
|
||||
font.bold: true
|
||||
font.pixelSize: 26
|
||||
font.pixelSize: 22
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: qsTr("Internet Radio Player for KDE")
|
||||
color: BearTheme.textMuted
|
||||
font.pixelSize: 14
|
||||
font.pixelSize: 13
|
||||
}
|
||||
|
||||
Label {
|
||||
@@ -69,144 +63,42 @@ Dialog {
|
||||
color: BearTheme.textMuted
|
||||
font.pixelSize: 12
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
spacing: 8
|
||||
Layout.topMargin: 8
|
||||
Layout.bottomMargin: 8
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: qsTr("Author: Sebastian Palencsár")
|
||||
color: BearTheme.textMain
|
||||
font.bold: true
|
||||
font.pixelSize: 14
|
||||
font.pixelSize: 13
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
spacing: 16
|
||||
spacing: 12
|
||||
|
||||
ToolButton {
|
||||
Layout.preferredWidth: 40
|
||||
Layout.preferredHeight: 40
|
||||
Button {
|
||||
text: qsTr("Website")
|
||||
onClicked: Qt.openUrlExternally("https://palencsar.pro")
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("Open website")
|
||||
contentItem: Item {
|
||||
Image {
|
||||
anchors.centerIn: parent
|
||||
width: 19
|
||||
height: 19
|
||||
source: "qrc:/assets/ui/globe.svg"
|
||||
fillMode: Image.PreserveAspectFit
|
||||
smooth: true
|
||||
}
|
||||
}
|
||||
background: Rectangle {
|
||||
radius: 20
|
||||
color: parent.hovered ? "#274261" : "#1f3147"
|
||||
border.color: BearTheme.cardBorder
|
||||
border.width: 1
|
||||
}
|
||||
}
|
||||
|
||||
ToolButton {
|
||||
Layout.preferredWidth: 40
|
||||
Layout.preferredHeight: 40
|
||||
Button {
|
||||
text: qsTr("GitHub")
|
||||
onClicked: Qt.openUrlExternally("https://github.com/spalencsar")
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("Open GitHub")
|
||||
contentItem: Item {
|
||||
Image {
|
||||
anchors.centerIn: parent
|
||||
width: 19
|
||||
height: 19
|
||||
source: "qrc:/assets/ui/github.svg"
|
||||
fillMode: Image.PreserveAspectFit
|
||||
smooth: true
|
||||
}
|
||||
}
|
||||
background: Rectangle {
|
||||
radius: 20
|
||||
color: parent.hovered ? "#274261" : "#1f3147"
|
||||
border.color: BearTheme.cardBorder
|
||||
border.width: 1
|
||||
}
|
||||
}
|
||||
|
||||
ToolButton {
|
||||
Layout.preferredWidth: 40
|
||||
Layout.preferredHeight: 40
|
||||
Button {
|
||||
text: qsTr("LinkedIn")
|
||||
onClicked: Qt.openUrlExternally("https://www.linkedin.com/in/spalencsar/")
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("Open LinkedIn")
|
||||
contentItem: Item {
|
||||
Image {
|
||||
anchors.centerIn: parent
|
||||
width: 19
|
||||
height: 19
|
||||
source: "qrc:/assets/ui/linkedin.svg"
|
||||
fillMode: Image.PreserveAspectFit
|
||||
smooth: true
|
||||
}
|
||||
}
|
||||
background: Rectangle {
|
||||
radius: 20
|
||||
color: parent.hovered ? "#274261" : "#1f3147"
|
||||
border.color: BearTheme.cardBorder
|
||||
border.width: 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
spacing: 8
|
||||
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("GNU GPLv3 License")
|
||||
color: BearTheme.textMain
|
||||
font.bold: true
|
||||
}
|
||||
Label {
|
||||
text: qsTr("Copyright (c) 2026")
|
||||
Layout.preferredWidth: root.width - 48
|
||||
color: BearTheme.textMuted
|
||||
font.pixelSize: 11
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
Layout.minimumHeight: 140
|
||||
radius: 8
|
||||
color: "#101a26"
|
||||
border.color: BearTheme.cardBorder
|
||||
|
||||
ScrollView {
|
||||
id: licenseScroll
|
||||
anchors.fill: parent
|
||||
anchors.margins: 10
|
||||
clip: true
|
||||
ScrollBar.vertical.policy: ScrollBar.AlwaysOn
|
||||
|
||||
Label {
|
||||
width: licenseScroll.availableWidth
|
||||
color: BearTheme.textMain
|
||||
font.pixelSize: 11
|
||||
font.pixelSize: 10
|
||||
wrapMode: Text.WordWrap
|
||||
text: "This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>."
|
||||
}
|
||||
}
|
||||
}
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: qsTr("Licensed under GNU GPLv3-or-later. Copyright (c) 2026 Sebastian Palencsar.")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user