Fix runtime issues with Qt6

To have the code bits reusable, they are defined as cmake variables.
In order to make the relative paths work and avoid touching every line
from the QRC, the resulting file is put into the source dir.
This commit is contained in:
Alexander Lohnau 2023-04-29 15:55:49 +02:00
parent 131ed9a079
commit f57d59e605
7 changed files with 33 additions and 15 deletions

1
.gitignore vendored
View file

@ -33,3 +33,4 @@ CMakeLists.txt.user
.idea
/cmake-build*
.clang-format
app/resources.generated.qrc

View file

@ -42,6 +42,18 @@ ecm_setup_version(${RELEASE_SERVICE_VERSION}
VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/kdeconnect-version.h
)
if(QT_MAJOR_VERSION STREQUAL "6")
set(KIRIGAMI_ICON "icon.name")
set(KIRIGAMI_PAGE_ACTIONS "actions")
set(QTQUICK_FILEDIALOG_FOLDER "currentFolder")
else()
set(QTQUICK_DIALOGS_IMPORT_VERSION 1.0)
set(KIRIGAMI_ICON "icon")
set(KIRIGAMI_PAGE_ACTIONS "contextualActions")
set(QTQUICK_FILEDIALOG_FOLDER "folder")
endif()
# Make the version header available by linking against kdeconnectversion
add_library(kdeconnectversion INTERFACE)
target_include_directories(kdeconnectversion INTERFACE ${CMAKE_CURRENT_BINARY_DIR})

View file

@ -1,4 +1,9 @@
qt_add_resources(kdeconnect_SRCS resources.qrc)
configure_file(qml/main.qml ${CMAKE_CURRENT_BINARY_DIR}/qml/main.qml)
configure_file(qml/DevicePage.qml ${CMAKE_CURRENT_BINARY_DIR}/qml/DevicePage.qml)
configure_file(qml/FindDevicesPage.qml ${CMAKE_CURRENT_BINARY_DIR}/qml/FindDevicesPage.qml)
configure_file(resources.qrc.in ${CMAKE_CURRENT_SOURCE_DIR}/resources.generated.qrc)
qt_add_resources(kdeconnect_SRCS resources.generated.qrc)
qt_add_resources(kdeconnect_custom_icons_SRCS ${CMAKE_SOURCE_DIR}/icons/custom_icons.qrc)

View file

@ -7,7 +7,7 @@
import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import QtQuick.Dialogs 1.0
import QtQuick.Dialogs @QTQUICK_DIALOGS_IMPORT_VERSION@
import org.kde.kirigami 2.20 as Kirigami
import org.kde.kdeconnect 1.0
@ -16,15 +16,15 @@ Kirigami.ScrollablePage {
property QtObject currentDevice
title: currentDevice.name
actions.contextualActions: [
@KIRIGAMI_PAGE_ACTIONS@: [
Kirigami.Action {
iconName:"network-disconnect"
icon.name: "network-disconnect"
onTriggered: root.currentDevice.unpair()
text: i18nd("kdeconnect-app", "Unpair")
visible: root.currentDevice.isPaired
},
Kirigami.Action {
iconName:"hands-free"
icon.name: "hands-free"
text: i18nd("kdeconnect-app", "Send Ping")
visible: root.currentDevice.isPaired && root.currentDevice.isReachable
onTriggered: {
@ -32,7 +32,7 @@ Kirigami.ScrollablePage {
}
},
Kirigami.Action {
iconName: "settings-configure"
icon.name: "settings-configure"
text: i18n("Plugin Settings")
visible: root.currentDevice.isPaired && root.currentDevice.isReachable
onTriggered: {
@ -48,7 +48,7 @@ Kirigami.ScrollablePage {
model: plugins
delegate: Kirigami.BasicListItem {
label: name
icon: iconName
@KIRIGAMI_ICON@: iconName
highlighted: false
iconColor: "transparent"
visible: loaded
@ -171,7 +171,7 @@ Kirigami.ScrollablePage {
id: fileDialog
readonly property var shareIface: root.currentDevice ? ShareDbusInterfaceFactory.create(root.currentDevice.id()) : null
title: i18nd("kdeconnect-app", "Please choose a file")
folder: shortcuts.home
@QTQUICK_FILEDIALOG_FOLDER@: shortcuts.home
onAccepted: shareIface.shareUrl(fileDialog.fileUrl)
}
}

View file

@ -61,7 +61,7 @@ Kirigami.ScrollablePage
sourceModel: DevicesModel {}
}
delegate: Kirigami.BasicListItem {
icon: iconName
@KIRIGAMI_ICON@: iconName
iconColor: "transparent"
label: model.name
subtitle: toolTip

View file

@ -74,7 +74,7 @@ Kirigami.ApplicationWindow {
Kirigami.BasicListItem {
id: findDevicesAction
text: i18nd("kdeconnect-app", "Find devices...")
icon: "list-add"
@KIRIGAMI_ICON@: "list-add"
checked: pageStack.currentItem && pageStack.currentItem.objectName == "FindDevices"
Layout.fillWidth: true
@ -100,7 +100,7 @@ Kirigami.ApplicationWindow {
text: model.name + "\n" + toolTip
enabled: status & DevicesModel.Reachable
checked: pageStack.currentItem && pageStack.currentItem.currentDevice == device
icon: model.iconName
@KIRIGAMI_ICON@: model.iconName
iconColor: "transparent"
onClicked: {
root.pageStack.clear()
@ -119,7 +119,7 @@ Kirigami.ApplicationWindow {
Kirigami.BasicListItem {
text: i18n("Settings")
icon: "settings-configure"
@KIRIGAMI_ICON@: "settings-configure"
onClicked: pageStack.pushDialogLayer('qrc:/qml/Settings.qml', {}, {
title: i18n("Settings"),
});

View file

@ -1,13 +1,13 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>qml/main.qml</file>
<file alias="qml/main.qml">@CMAKE_CURRENT_BINARY_DIR@/qml/main.qml</file>
<file>qml/mpris.qml</file>
<file>qml/mousepad.qml</file>
<file>qml/presentationRemote.qml</file>
<file>qml/PluginItem.qml</file>
<file>qml/DevicePage.qml</file>
<file>qml/FindDevicesPage.qml</file>
<file alias="qml/DevicePage.qml">@CMAKE_CURRENT_BINARY_DIR@/qml/DevicePage.qml</file>
<file alias="qml/FindDevicesPage.qml">@CMAKE_CURRENT_BINARY_DIR@/qml/FindDevicesPage.qml</file>
<file>qml/runcommand.qml</file>
<file>qml/volume.qml</file>
<file>qml/MprisSlider.qml</file>