mirror of
https://github.com/spalencsar/bearwave.git
synced 2026-07-06 22:24:17 +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:
@@ -18,13 +18,19 @@ set(SOURCES
|
||||
# Create executable
|
||||
add_executable(bearwave ${SOURCES})
|
||||
|
||||
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
|
||||
)
|
||||
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,189 +30,75 @@ 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
|
||||
spacing: 12
|
||||
|
||||
ColumnLayout {
|
||||
Image {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
spacing: 6
|
||||
Layout.preferredWidth: 72
|
||||
Layout.preferredHeight: 72
|
||||
source: "qrc:/assets/app/bearwave.png"
|
||||
fillMode: Image.PreserveAspectFit
|
||||
smooth: true
|
||||
}
|
||||
|
||||
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
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: qsTr("BearWave")
|
||||
color: BearTheme.textMain
|
||||
font.bold: true
|
||||
font.pixelSize: 22
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: qsTr("Internet Radio Player for KDE")
|
||||
color: BearTheme.textMuted
|
||||
font.pixelSize: 13
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: root.versionLine
|
||||
color: BearTheme.textMuted
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: qsTr("Author: Sebastian Palencsár")
|
||||
color: BearTheme.textMain
|
||||
font.pixelSize: 13
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
spacing: 12
|
||||
|
||||
Button {
|
||||
text: qsTr("Website")
|
||||
onClicked: Qt.openUrlExternally("https://palencsar.pro")
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: qsTr("BearWave")
|
||||
color: BearTheme.textMain
|
||||
font.bold: true
|
||||
font.pixelSize: 26
|
||||
Button {
|
||||
text: qsTr("GitHub")
|
||||
onClicked: Qt.openUrlExternally("https://github.com/spalencsar")
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: qsTr("Internet Radio Player for KDE")
|
||||
color: BearTheme.textMuted
|
||||
font.pixelSize: 14
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
text: root.versionLine
|
||||
color: BearTheme.textMuted
|
||||
font.pixelSize: 12
|
||||
Button {
|
||||
text: qsTr("LinkedIn")
|
||||
onClicked: Qt.openUrlExternally("https://www.linkedin.com/in/spalencsar/")
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
spacing: 16
|
||||
|
||||
ToolButton {
|
||||
Layout.preferredWidth: 40
|
||||
Layout.preferredHeight: 40
|
||||
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
|
||||
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
|
||||
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 {
|
||||
Label {
|
||||
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")
|
||||
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
|
||||
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/>."
|
||||
}
|
||||
}
|
||||
}
|
||||
Layout.preferredWidth: root.width - 48
|
||||
color: BearTheme.textMuted
|
||||
font.pixelSize: 10
|
||||
wrapMode: Text.WordWrap
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: qsTr("Licensed under GNU GPLv3-or-later. Copyright (c) 2026 Sebastian Palencsar.")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user