Migrate demo app recipes and patch apps to Qt 6 41/30141/5
authorIndivara Weerasuriya <indivara.weerasuriya@qt.io>
Tue, 30 Jul 2024 10:47:24 +0000 (19:47 +0900)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Wed, 20 Nov 2024 13:35:26 +0000 (13:35 +0000)
Bug-AGL: SPEC-5294

Change-Id: I6b9ff940745f88af9a3b69e29917082e52b25f88
Signed-off-by: Indivara Weerasuriya <indivara.weerasuriya@qt.io>
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/30141
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tested-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
32 files changed:
recipes-demo/cluster-dashboard/cluster-dashboard_git.bb
recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb
recipes-demo/dashboard/dashboard/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/dashboard/dashboard_git.bb
recipes-demo/homescreen/files/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/homescreen/homescreen_git.bb
recipes-demo/hvac/hvac/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/hvac/hvac_git.bb
recipes-demo/launcher/files/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/launcher/files/launcher.service
recipes-demo/launcher/launcher_git.bb
recipes-demo/libqtappfw/libqtappfw/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/libqtappfw/libqtappfw_git.bb
recipes-demo/mediaplayer/mediaplayer/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/mediaplayer/mediaplayer_git.bb
recipes-demo/messaging/messaging/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/messaging/messaging_git.bb
recipes-demo/navigation/ondemandnavi/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/navigation/ondemandnavi_git.bb
recipes-demo/navigation/tbtnavi_git.bb
recipes-demo/phone/phone/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/phone/phone_git.bb
recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style_git.bb
recipes-demo/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb
recipes-demo/radio/files/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/radio/radio_git.bb
recipes-demo/settings/settings/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/settings/settings_git.bb
recipes-demo/videoplayer/videoplayer_git.bb
recipes-demo/window-management-client-grpc/window-management-client-grpc/0001-Migrate-to-Qt-6.patch [new file with mode: 0644]
recipes-demo/window-management-client-grpc/window-management-client-grpc_git.bb

index ddf259a..c5a56f4 100644 (file)
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \
                     file://app/cluster-gauges.qml;beginline=9;endline=48;md5=54187d50b29429abee6095fe8b7c1a78"
 
 DEPENDS = " \
-    qtquickcontrols2 \
+    qtdeclarative \
     libqtappfw \
     glib-2.0 \
     wayland wayland-native \
@@ -27,7 +27,7 @@ SRCREV  = "5b69d50808ea4d90af1cdb037f25309baae23fdf"
 
 S  = "${WORKDIR}/git"
 
-inherit pkgconfig cmake_qt5 update-alternatives systemd
+inherit pkgconfig qt6-cmake update-alternatives systemd
 
 CLUSTER_DEMO_VSS_HOSTNAME ??= "192.168.10.2"
 
@@ -67,10 +67,7 @@ ALTERNATIVE_TARGET_${PN}-conf-demo = "${sysconfdir}/xdg/AGL/cluster-dashboard.co
 RDEPENDS:${PN} += " \
     qtwayland \
     qtbase-qmlplugins \
-    qtquickcontrols \
-    qtquickcontrols-qmlplugins \
-    qtquickcontrols2 \
-    qtquickcontrols2-qmlplugins \
-    qtgraphicaleffects-qmlplugins \
+    qtdeclarative \
+    qt5compat \
     qtsvg-plugins \
 "
index e146a00..596843f 100644 (file)
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \
 DEPENDS = " \
     wayland wayland-native \
     qtwayland qtwayland-native \
-    qtquickcontrols2 qtwebsockets qtbase qtdeclarative \
+    qtdeclarative qtwebsockets qtbase qtdeclarative \
     gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad \
 "
 
@@ -23,7 +23,7 @@ SRCREV  = "b3ea52f3c9b4ff11447151f086f3c314cada148a"
 
 S  = "${WORKDIR}/git"
 
-inherit cmake_qt5 pkgconfig systemd
+inherit qt6-cmake pkgconfig systemd
 
 do_install:append() {
     # Only install unit, do not enable it by default
diff --git a/recipes-demo/dashboard/dashboard/0001-Migrate-to-Qt-6.patch b/recipes-demo/dashboard/dashboard/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..b43008f
--- /dev/null
@@ -0,0 +1,72 @@
+From 00e6b77cef1f3b07dc49653d513628e452d71a8d Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:05:10 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ app/Dashboard.qml    | 8 ++++----
+ app/TirePressure.qml | 4 ++--
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/app/Dashboard.qml b/app/Dashboard.qml
+index 1a797c6..5aabaf0 100644
+--- a/app/Dashboard.qml
++++ b/app/Dashboard.qml
+@@ -118,7 +118,7 @@ ApplicationWindow {
+     Image {
+         id: car
+         anchors.centerIn: parent
+-        source: './images/HMI_Dashboard_Car.png'
++        source: 'qrc:/images/HMI_Dashboard_Car.png'
+     }
+     TirePressure {
+@@ -167,7 +167,7 @@ ApplicationWindow {
+         Image {
+             id: speedIcon
+-            source: './images/HMI_Dashboard_Speed_Icon.svg'
++            source: 'qrc:/images/HMI_Dashboard_Speed_Icon.svg'
+         }
+         ProgressBar {
+             id: tachometer
+@@ -187,7 +187,7 @@ ApplicationWindow {
+         }
+         Image {
+             id: fuelIcon
+-            source: './images/HMI_Dashboard_Fuel_Icon.svg'
++            source: 'qrc:/images/HMI_Dashboard_Fuel_Icon.svg'
+         }
+         ProgressBar {
+             Layout.fillWidth: true
+@@ -196,7 +196,7 @@ ApplicationWindow {
+                 anchors.left: parent.left
+                 anchors.leftMargin: -40
+                 anchors.bottom: parent.top
+-                source: './images/HMI_Dashboard_Fuel_Details.svg'
++                source: 'qrc:/images/HMI_Dashboard_Fuel_Details.svg'
+                 GridLayout {
+                     anchors.fill: parent
+                     columns: 2
+diff --git a/app/TirePressure.qml b/app/TirePressure.qml
+index 437cf2f..eb02482 100644
+--- a/app/TirePressure.qml
++++ b/app/TirePressure.qml
+@@ -31,7 +31,7 @@ Image {
+             when: !mirror
+             PropertyChanges {
+                 target: root
+-                source: './images/HMI_Dashboard_LeftTire.svg'
++                source: 'qrc:/images/HMI_Dashboard_LeftTire.svg'
+             }
+             AnchorChanges {
+                 target: title
+@@ -47,7 +47,7 @@ Image {
+             when: mirror
+             PropertyChanges {
+                 target: root
+-                source: './images/HMI_Dashboard_RightTire.svg'
++                source: 'qrc:/images/HMI_Dashboard_RightTire.svg'
+             }
+             AnchorChanges {
+                 target: title
index c0ca244..c438540 100644 (file)
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 
 DEPENDS = " \
     qttools-native \
-    qtquickcontrols2 \
+    qtdeclarative \
     libqtappfw \
 "
 
@@ -17,12 +17,13 @@ PV = "2.0+git${SRCPV}"
 SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/dashboard;protocol=https;branch=${AGL_BRANCH} \
            file://dashboard.conf \
            file://dashboard.token \
-"
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV  = "b1b67ab525555a082ca257ad08fc4fba9b1f74e3"
 
 S = "${WORKDIR}/git"
 
-inherit qmake5 pkgconfig agl-app
+inherit qt6-qmake pkgconfig agl-app
 
 AGL_APP_NAME = "Dashboard"
 
@@ -42,6 +43,6 @@ do_install:append() {
 RDEPENDS:${PN} += " \
     qtwayland \
     qtbase-qmlplugins \
-    qtgraphicaleffects-qmlplugins \
+    qt5compat \
     qtquickcontrols2-agl-style \
 "
diff --git a/recipes-demo/homescreen/files/0001-Migrate-to-Qt-6.patch b/recipes-demo/homescreen/files/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..89e992b
--- /dev/null
@@ -0,0 +1,338 @@
+From 8c60817ccf80502c03d3852afac006e25903d4b9 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:08:36 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ homescreen/meson.build                    | 16 ++++++++--------
+ homescreen/qml/IconItem.qml               |  4 ++--
+ homescreen/qml/MediaAreaBlank.qml         |  4 ++--
+ homescreen/qml/MediaAreaMusic.qml         | 14 +++++++-------
+ homescreen/qml/MediaAreaRadio.qml         |  2 +-
+ homescreen/qml/ShortcutIcon.qml           |  6 +++---
+ homescreen/qml/SpeechChrome.qml           |  6 +++---
+ homescreen/qml/StatusArea.qml             |  6 +++---
+ homescreen/qml/TopArea.qml                |  2 +-
+ homescreen/qml/background.qml             |  2 +-
+ homescreen/qml/background_with_panels.qml |  4 ++--
+ meson.build                               |  2 +-
+ 12 files changed, 34 insertions(+), 34 deletions(-)
+
+diff --git a/homescreen/meson.build b/homescreen/meson.build
+index 4b98cd1..42645a1 100644
+--- a/homescreen/meson.build
++++ b/homescreen/meson.build
+@@ -1,5 +1,5 @@
+ cpp = meson.get_compiler('cpp')
+-qt5_dep = dependency('qt5', modules: ['Qml', 'Quick', 'Gui'])
++qt_dep = dependency('qt6', modules: ['Core', 'Qml', 'Quick', 'Gui'])
+ dep_wayland_client = dependency('wayland-client', version: '>= 1.20.0')
+ dep_qtappfw = [
+     dependency('qtappfw-weather'),
+@@ -14,11 +14,11 @@ protoc = find_program('protoc')
+ grpc_cpp = find_program('grpc_cpp_plugin')
+ qt_defines = []
+-qpa_header_path = join_paths(qt5_dep.version(), 'QtGui')
++qpa_header_path = join_paths(qt_dep.version(), 'QtGui')
+ qpa_header = join_paths(qpa_header_path, 'qpa/qplatformnativeinterface.h')
+ # we pass this QT_QPA_HEADER straight in the code as there's no easy
+ # way to pass the correct header
+-if cpp.has_header(qpa_header, dependencies : qt5_dep)
++if cpp.has_header(qpa_header, dependencies : qt_dep)
+   qt_defines += [ '-DQT_QPA_HEADER=<@0@>'.format(qpa_header) ]
+   message('Found QtGui QPA header in ' + qpa_header_path)
+ endif
+@@ -41,7 +41,7 @@ grpc_gen = generator(protoc, \
+                      output : ['@BASENAME@.grpc.pb.cc', '@BASENAME@.grpc.pb.h'],
+                      arguments : ['--proto_path=@CURRENT_SOURCE_DIR@/proto',
+                        '--grpc_out=@BUILD_DIR@',
+-                       '--plugin=protoc-gen-grpc=' + grpc_cpp.path(),
++                       '--plugin=protoc-gen-grpc=' + grpc_cpp.full_path(),
+                        '@INPUT@'])
+ generated_grpc_sources = grpc_gen.process('proto/agl_shell.proto')
+@@ -54,7 +54,7 @@ grpc_deps = [
+ homescreen_dep = [
+-    qt5_dep,
++    qt_dep,
+     dep_wayland_client,
+     dep_qtappfw,
+     grpc_deps
+@@ -70,7 +70,7 @@ homescreen_resources = [
+   'qml/qml.qrc'
+ ]
+-resource_files = qt5.compile_resources(sources: homescreen_resources)
++resource_files = qt.compile_resources(sources: homescreen_resources)
+ protocols = [
+         [ 'agl-shell', 'agl-compositor' ],
+@@ -116,8 +116,8 @@ homescreen_src_headers = [
+   'src/AglShellGrpcClient.h',
+ ]
+-moc_files = qt5.compile_moc(headers: homescreen_src_headers,
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: homescreen_src_headers,
++                            dependencies: qt_dep)
+ homescreen_src = [
+   'src/statusbarserver.cpp',
+diff --git a/homescreen/qml/IconItem.qml b/homescreen/qml/IconItem.qml
+index ace0628..034a51d 100644
+--- a/homescreen/qml/IconItem.qml
++++ b/homescreen/qml/IconItem.qml
+@@ -1,6 +1,6 @@
+ import QtQuick 2.0
+ import QtQuick.Controls 2.0
+-import QtGraphicalEffects 1.0
++import Qt5Compat.GraphicalEffects
+ Item {
+     id: main
+@@ -23,7 +23,7 @@ Item {
+             anchors.horizontalCenter: parent.horizontalCenter
+             width: 220
+             height: width
+-            source: './images/%1_%2.svg'.arg(model.icon).arg(loc.pressed && (loc.index === model.index || loc.currentId === model.id) ? 'active' : 'inactive')
++            source: 'qrc:/images/%1_%2.svg'.arg(model.icon).arg(loc.pressed && (loc.index === model.index || loc.currentId === model.id) ? 'active' : 'inactive')
+             antialiasing: item.state !== ''
+             property string initial: model.name.substring(0,1).toUpperCase()
+diff --git a/homescreen/qml/MediaAreaBlank.qml b/homescreen/qml/MediaAreaBlank.qml
+index b758a7d..3c7ff51 100644
+--- a/homescreen/qml/MediaAreaBlank.qml
++++ b/homescreen/qml/MediaAreaBlank.qml
+@@ -23,7 +23,7 @@ import MasterVolume 1.0
+ Image {
+     anchors.fill: parent
+-    source: './images/Utility_Logo_Background-01.svg'
++    source: 'qrc:/images/Utility_Logo_Background-01.svg'
+     property bool displayVolume: false;
+     MouseArea {
+@@ -41,7 +41,7 @@ Image {
+     Image {
+         id: logo_image
+         anchors.centerIn: parent
+-        source: './images/Utility_Logo_Grey-01.svg'
++        source: 'qrc:/images/Utility_Logo_Grey-01.svg'
+     }
+     Timer {
+diff --git a/homescreen/qml/MediaAreaMusic.qml b/homescreen/qml/MediaAreaMusic.qml
+index 6d72003..ffb9796 100644
+--- a/homescreen/qml/MediaAreaMusic.qml
++++ b/homescreen/qml/MediaAreaMusic.qml
+@@ -22,7 +22,7 @@ import QtQuick.Controls 2.0
+ Image {
+     width: 1080
+     height: 216
+-    source: './images/Utility_Music_Background-01.png'
++    source: 'qrc:/images/Utility_Music_Background-01.png'
+     ColumnLayout {
+         anchors.fill: parent
+@@ -33,7 +33,7 @@ Image {
+             Layout.preferredHeight: 107
+             spacing: 10
+             Image {
+-                source: './images/MediaMusic/AlbumArtwork.png'
++                source: 'qrc:/images/MediaMusic/AlbumArtwork.png'
+                 width: 105.298
+                 height: 110.179
+                 fillMode: Image.PreserveAspectFit
+@@ -51,13 +51,13 @@ Image {
+             Layout.fillHeight: true
+             Layout.preferredHeight: 107
+             Image {
+-                source: './images/MediaPlayer/AGL_MediaPlayer_BackArrow.png'
++                source: 'qrc:/images/MediaPlayer/AGL_MediaPlayer_BackArrow.png'
+             }
+             Image {
+-                source: './images/MediaPlayer/AGL_MediaPlayer_Player_Pause.png'
++                source: 'qrc:/images/MediaPlayer/AGL_MediaPlayer_Player_Pause.png'
+             }
+             Image {
+-                source: './images/MediaPlayer/AGL_MediaPlayer_ForwardArrow.png'
++                source: 'qrc:/images/MediaPlayer/AGL_MediaPlayer_ForwardArrow.png'
+             }
+             ProgressBar {
+@@ -71,10 +71,10 @@ Image {
+                 font.pixelSize: 20
+             }
+             Image {
+-                source: './images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png'
++                source: 'qrc:/images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png'
+             }
+             Image {
+-                source: './images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png'
++                source: 'qrc:/images/MediaPlayer/AGL_MediaPlayer_Shuffle_Active.png'
+             }
+             ProgressBar {
+                 Layout.fillWidth: true
+diff --git a/homescreen/qml/MediaAreaRadio.qml b/homescreen/qml/MediaAreaRadio.qml
+index 73ab073..ed73000 100644
+--- a/homescreen/qml/MediaAreaRadio.qml
++++ b/homescreen/qml/MediaAreaRadio.qml
+@@ -20,5 +20,5 @@ import QtQuick 2.2
+ Image {
+     width: 1080
+     height: 216
+-    source: './images/Utility_Radio_Background-01.png'
++    source: 'qrc:/images/Utility_Radio_Background-01.png'
+ }
+diff --git a/homescreen/qml/ShortcutIcon.qml b/homescreen/qml/ShortcutIcon.qml
+index d039d36..f67a992 100644
+--- a/homescreen/qml/ShortcutIcon.qml
++++ b/homescreen/qml/ShortcutIcon.qml
+@@ -17,7 +17,7 @@
+ import QtQuick 2.2
+ import QtQuick.Controls 2.0
+-import QtGraphicalEffects 1.0
++import Qt5Compat.GraphicalEffects
+ MouseArea {
+     id: root
+@@ -30,13 +30,13 @@ MouseArea {
+         Image {
+             id: inactiveIcon
+             anchors.fill: parent
+-            source: './images/Shortcut/%1.svg'.arg(root.name.toLowerCase())
++            source: 'qrc:/images/Shortcut/%1.svg'.arg(root.name.toLowerCase())
+             fillMode: Image.PreserveAspectFit
+         }
+         Image {
+             id: activeIcon
+             anchors.fill: parent
+-            source: './images/Shortcut/%1_active.svg'.arg(root.name.toLowerCase())
++            source: 'qrc:/images/Shortcut/%1_active.svg'.arg(root.name.toLowerCase())
+             fillMode: Image.PreserveAspectFit
+             opacity: 0.0
+         }
+diff --git a/homescreen/qml/SpeechChrome.qml b/homescreen/qml/SpeechChrome.qml
+index 123928c..e666f44 100644
+--- a/homescreen/qml/SpeechChrome.qml
++++ b/homescreen/qml/SpeechChrome.qml
+@@ -15,7 +15,7 @@ Item {
+         id: chromeBarImage
+         anchors.top: parent.top
+-        source: "./images/SpeechChrome/bar.png"
++        source: "qrc:/images/SpeechChrome/bar.png"
+         Behavior on x {
+             NumberAnimation { duration: 250 }
+@@ -34,7 +34,7 @@ Item {
+         anchors.left: parent.left
+         anchors.leftMargin: parent.width / 128
+         anchors.verticalCenter: parent.verticalCenter
+-        source: agentName === "Alexa" ? "./images/SpeechChrome/push_to_talk_alexa.png" : "./images/SpeechChrome/push_to_talk.svg"
++        source: agentName === "Alexa" ? "qrc:/images/SpeechChrome/push_to_talk_alexa.png" : "qrc:/images/SpeechChrome/push_to_talk.svg"
+         MouseArea {
+             anchors.fill: parent
+@@ -55,7 +55,7 @@ Item {
+         anchors.right: parent.right
+         anchors.rightMargin: parent.width / 128
+         anchors.verticalCenter: parent.verticalCenter
+-        source: agentName === "Alexa" ? "./images/SpeechChrome/push_to_talk_alexa.png" : "./images/SpeechChrome/push_to_talk.svg"
++        source: agentName === "Alexa" ? "qrc:/images/SpeechChrome/push_to_talk_alexa.png" : "qrc:/images/SpeechChrome/push_to_talk.svg"
+         MouseArea {
+             anchors.fill: parent
+diff --git a/homescreen/qml/StatusArea.qml b/homescreen/qml/StatusArea.qml
+index 4a8fbc0..03c60ee 100644
+--- a/homescreen/qml/StatusArea.qml
++++ b/homescreen/qml/StatusArea.qml
+@@ -47,7 +47,7 @@ Item {
+                 icon = "WeatherIcons_Rain-01.png"
+             }
+-            condition_item.source = icon ? './images/Weather/' + icon : ''
++            condition_item.source = icon ? 'qrc:/images/Weather/' + icon : ''
+         }
+         onTemperatureChanged: {
+@@ -99,7 +99,7 @@ Item {
+                     Layout.preferredHeight: 20
+                     Image {
+                         id: condition_item
+-                        source: './images/Weather/WeatherIcons_Rain-01.png'
++                        source: 'qrc:/images/Weather/WeatherIcons_Rain-01.png'
+                     }
+                     Text {
+                         id: temperature_item
+@@ -122,7 +122,7 @@ Item {
+                 id: bt_icon
+                 Layout.preferredWidth: 77
+                 Layout.preferredHeight: 73
+-                source: connStatus ? './images/Status/HMI_Status_Bluetooth_On-01.png' : './images/Status/HMI_Status_Bluetooth_Inactive-01.png'
++                source: connStatus ? 'qrc:/images/Status/HMI_Status_Bluetooth_On-01.png' : 'qrc:/images/Status/HMI_Status_Bluetooth_Inactive-01.png'
+                 fillMode: Image.PreserveAspectFit
+                 property string deviceName: "none"
+                 property bool connStatus: false
+diff --git a/homescreen/qml/TopArea.qml b/homescreen/qml/TopArea.qml
+index 3b0b25a..3b5289c 100644
+--- a/homescreen/qml/TopArea.qml
++++ b/homescreen/qml/TopArea.qml
+@@ -21,7 +21,7 @@ import QtQuick.Controls 2.0
+ Image {
+     anchors.fill: parent
+-    source: './images/TopSection_NoText_NoIcons-01.svg'
++    source: 'qrc:/images/TopSection_NoText_NoIcons-01.svg'
+     //fillMode: Image.PreserveAspectCrop
+     fillMode: Image.Stretch
+diff --git a/homescreen/qml/background.qml b/homescreen/qml/background.qml
+index c2bb309..a2ba39c 100644
+--- a/homescreen/qml/background.qml
++++ b/homescreen/qml/background.qml
+@@ -10,6 +10,6 @@ Window {
+     Image {
+         anchors.fill: parent
+-        source: './images/AGL_HMI_Blue_Background_NoCar-01.png'
++        source: 'qrc:/images/AGL_HMI_Blue_Background_NoCar-01.png'
+     }
+ }
+diff --git a/homescreen/qml/background_with_panels.qml b/homescreen/qml/background_with_panels.qml
+index f0cb958..c7cca7c 100644
+--- a/homescreen/qml/background_with_panels.qml
++++ b/homescreen/qml/background_with_panels.qml
+@@ -75,7 +75,7 @@ Window {
+          Image {
+              anchors.fill: parent
+-             source: './images/TopSection_NoText_NoIcons-01.svg'
++             source: 'qrc:/images/TopSection_NoText_NoIcons-01.svg'
+              //fillMode: Image.PreserveAspectCrop
+              fillMode: Image.Stretch
+@@ -104,7 +104,7 @@ Window {
+              height: Screen.height - (2 * 216)
+          Image {
+              anchors.fill: parent
+-             source: './images/AGL_HMI_Blue_Background_NoCar-01.png'
++             source: 'qrc:/images/AGL_HMI_Blue_Background_NoCar-01.png'
+          }
+         }
+diff --git a/meson.build b/meson.build
+index 3d77b36..9ce3607 100644
+--- a/meson.build
++++ b/meson.build
+@@ -29,5 +29,5 @@ project (
+     ],
+ )
+-qt5 = import('qt5')
++qt = import('qt6')
+ subdir('homescreen')
index 1f8e0c7..22f9adb 100644 (file)
@@ -8,7 +8,6 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 DEPENDS = " \
     qtbase \
     qtdeclarative \
-    qtquickcontrols2 \
     libqtappfw \
     wayland-native \
     wayland \
@@ -26,12 +25,13 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/homescreen;protocol=http
            file://homescreen.service \
            file://homescreen.conf \
            file://homescreen.token \
-"
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV = "2c91ad7b3b125176b2e26b435705557a089604a0"
 
 S = "${WORKDIR}/git"
 
-inherit meson pkgconfig systemd
+inherit meson pkgconfig systemd meson_qt6_path
 
 PATH:prepend = "${STAGING_DIR_NATIVE}${OE_QMAKE_PATH_QT_BINS}:"
 
@@ -59,5 +59,6 @@ RDEPENDS:${PN} += " \
     applaunchd \
     qtwayland \
     qtbase-qmlplugins \
-    qtgraphicaleffects-qmlplugins \
+    qt5compat \
+    qtshadertools \
 "
diff --git a/recipes-demo/hvac/hvac/0001-Migrate-to-Qt-6.patch b/recipes-demo/hvac/hvac/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..f19cabc
--- /dev/null
@@ -0,0 +1,119 @@
+From 2a425094986a7ad5c584803e03ff723689fa1b47 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:18:03 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ app/HVAC.qml           | 19 +++++++++----------
+ app/SeatHeatButton.qml | 10 +++++-----
+ 2 files changed, 14 insertions(+), 15 deletions(-)
+
+diff --git a/app/HVAC.qml b/app/HVAC.qml
+index 4e27e2d..592dd1b 100644
+--- a/app/HVAC.qml
++++ b/app/HVAC.qml
+@@ -43,7 +43,6 @@ ApplicationWindow {
+         anchors.centerIn: parent
+         width: Window.width
+         height: Window.height
+-        scale: Window.scale
+       ColumnLayout {
+               anchors.fill: parent
+@@ -53,7 +52,7 @@ ApplicationWindow {
+                       Layout.fillHeight: true
+                       Layout.alignment: Qt.AlignHCenter
+                       Image {
+-                              source: './images/HMI_HVAC_Fan_Icon.svg'
++                              source: 'qrc:/images/HMI_HVAC_Fan_Icon.svg'
+                       }
+                       Item {
+                               width: 1080 * 0.8
+@@ -100,8 +99,8 @@ ApplicationWindow {
+                               Layout.fillWidth: true
+                               spacing: 20
+                               ToggleButton {
+-                                      onImage: './images/HMI_HVAC_Active.svg'
+-                                      offImage: './images/HMI_HVAC_Inactive.svg'
++                                      onImage: 'qrc:/images/HMI_HVAC_Active.svg'
++                                      offImage: 'qrc:/images/HMI_HVAC_Inactive.svg'
+                                       Label {
+                                               anchors.centerIn: parent
+                                               color: parent.checked ? '#00ADDC' : '#848286'
+@@ -113,8 +112,8 @@ ApplicationWindow {
+                                       }
+                               }
+                               ToggleButton {
+-                                      onImage: './images/HMI_HVAC_Active.svg'
+-                                      offImage: './images/HMI_HVAC_Inactive.svg'
++                                      onImage: 'qrc:/images/HMI_HVAC_Active.svg'
++                                      offImage: 'qrc:/images/HMI_HVAC_Inactive.svg'
+                                       Label {
+                                               anchors.centerIn: parent
+                                               color: parent.checked ? '#00ADDC' : '#848286'
+@@ -126,8 +125,8 @@ ApplicationWindow {
+                                       }
+                               }
+                               ToggleButton {
+-                                      onImage: './images/HMI_HVAC_Circulation_Active.svg'
+-                                      offImage: './images/HMI_HVAC_Circulation_Inactive.svg'
++                                      onImage: 'qrc:/images/HMI_HVAC_Circulation_Active.svg'
++                                      offImage: 'qrc:/images/HMI_HVAC_Circulation_Inactive.svg'
+                                       onCheckedChanged: {
+                                               console.debug('Circulation', checked)
+                                       }
+@@ -157,8 +156,8 @@ ApplicationWindow {
+                       Repeater {
+                               model: ['AirDown', 'AirUp', 'AirRight', 'Rear', 'Front']
+                               ToggleButton {
+-                                      onImage: './images/HMI_HVAC_%1_Active.svg'.arg(model.modelData)
+-                                      offImage: './images/HMI_HVAC_%1_Inactive.svg'.arg(model.modelData)
++                                      onImage: 'qrc:/images/HMI_HVAC_%1_Active.svg'.arg(model.modelData)
++                                      offImage: 'qrc:/images/HMI_HVAC_%1_Inactive.svg'.arg(model.modelData)
+                                       onCheckedChanged: {
+                                               console.debug(model.modelData, checked)
+                                       }
+diff --git a/app/SeatHeatButton.qml b/app/SeatHeatButton.qml
+index 3495cf6..7e2e1d4 100644
+--- a/app/SeatHeatButton.qml
++++ b/app/SeatHeatButton.qml
+@@ -33,13 +33,13 @@ Item {
+         anchors.centerIn: parent
+         Image {
+             id: chair
+-            source: './images/HMI_HVAC_%1_Chair_OFF.svg'.arg(root.side)
++            source: 'qrc:/images/HMI_HVAC_%1_Chair_OFF.svg'.arg(root.side)
+             states: [
+                 State {
+                     when: root.headLevel > 0
+                     PropertyChanges {
+                         target: chair
+-                        source: './images/HMI_HVAC_%1_Chair_ON.svg'.arg(root.side)
++                        source: 'qrc:/images/HMI_HVAC_%1_Chair_ON.svg'.arg(root.side)
+                     }
+                 }
+             ]
+@@ -48,20 +48,20 @@ Item {
+             id: indicator
+             width: 178
+             height: 18
+-            source: './images/HMI_HVAC_ChairIndicator_OFF.svg'
++            source: 'qrc:/images/HMI_HVAC_ChairIndicator_OFF.svg'
+             states: [
+                 State {
+                     when: root.headLevel === 1
+                     PropertyChanges {
+                         target: indicator
+-                        source: './images/HMI_HVAC_ChairIndicator_One.svg'
++                        source: 'qrc:/images/HMI_HVAC_ChairIndicator_One.svg'
+                     }
+                 },
+                 State {
+                     when: root.headLevel === 2
+                     PropertyChanges {
+                         target: indicator
+-                        source: './images/HMI_HVAC_ChairIndicator_Two.svg'
++                        source: 'qrc:/images/HMI_HVAC_ChairIndicator_Two.svg'
+                     }
+                 }
+             ]
index 2ac6a69..e174904 100644 (file)
@@ -10,7 +10,6 @@ DEPENDS = " \
     qttools-native \
     qtbase \
     qtdeclarative \
-    qtquickcontrols2 \
     libqtappfw \
 "
 
@@ -19,12 +18,13 @@ PV = "2.0+git${SRCPV}"
 SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/hvac;protocol=https;branch=${AGL_BRANCH} \
            file://hvac.conf \
            file://hvac.token \
-"
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV = "d37674bb6dbb5ceb15c650a0344b0caf624963bc"
 
 S = "${WORKDIR}/git"
 
-inherit qmake5 pkgconfig agl-app
+inherit qt6-qmake pkgconfig agl-app
 
 AGL_APP_NAME = "HVAC"
 
@@ -44,7 +44,7 @@ do_install:append() {
 RDEPENDS:${PN} += " \
     qtwayland \
     qtbase-qmlplugins \
-    qtgraphicaleffects-qmlplugins \
+    qt5compat \
     qtquickcontrols2-agl-style \
     libqtappfw \
 "
diff --git a/recipes-demo/launcher/files/0001-Migrate-to-Qt-6.patch b/recipes-demo/launcher/files/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..93f55fd
--- /dev/null
@@ -0,0 +1,31 @@
+From 7e6fb6b5b69979db15b630213ec60e1cf5be7dcf Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:21:02 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ launcher/qml/Launcher.qml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/launcher/qml/Launcher.qml b/launcher/qml/Launcher.qml
+index 3aef4e6..8d67f60 100644
+--- a/launcher/qml/Launcher.qml
++++ b/launcher/qml/Launcher.qml
+@@ -19,7 +19,7 @@ import QtQuick 2.13
+ import QtQuick.Layouts 1.1
+ import QtQuick.Controls 2.0
+ import QtQuick.Window 2.13
+-import QtGraphicalEffects 1.0
++import Qt5Compat.GraphicalEffects
+ import AppModel 1.0
+ ApplicationWindow {
+@@ -38,7 +38,7 @@ ApplicationWindow {
+         Image {
+             anchors.centerIn: parent
+-            source: './images/AGL_HMI_Blue_Background_Car-01.png'
++            source: 'qrc:/images/AGL_HMI_Blue_Background_Car-01.png'
+         }
+         GridView {
index 00dfd9a..51c983c 100644 (file)
@@ -6,6 +6,7 @@ After=homescreen.service applaunchd.service
 Type=simple
 User=agl-driver
 Environment=XDG_RUNTIME_DIR=/run/user/1001/
+Environment=QT_QPA_PLATFORM=wayland
 ExecStart=/usr/bin/launcher
 Restart=on-failure
 
index c46a4a1..2f8c518 100644 (file)
@@ -8,7 +8,6 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 DEPENDS = "\
         qtbase \
         qtdeclarative \
-        qtquickcontrols2 \
         libqtappfw \
         wayland-native \
         wayland \
@@ -23,12 +22,13 @@ PV = "1.0+git${SRCPV}"
 
 SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/launcher;protocol=https;branch=${AGL_BRANCH} \
            file://launcher.service \
-"
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV = "4be88c049f31b7659e09223857b92ca531835039"
 
 S = "${WORKDIR}/git"
 
-inherit qmake5 systemd pkgconfig
+inherit qt6-qmake systemd pkgconfig
 
 PATH:prepend = "${STAGING_DIR_NATIVE}${OE_QMAKE_PATH_QT_BINS}:"
 
diff --git a/recipes-demo/libqtappfw/libqtappfw/0001-Migrate-to-Qt-6.patch b/recipes-demo/libqtappfw/libqtappfw/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..7c1d8d1
--- /dev/null
@@ -0,0 +1,540 @@
+From c159e46ea970294173504f9f140e6ae81039a810 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:22:40 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ applauncher/meson.build            | 12 ++++++------
+ bluetooth/bluetoothmodel.cpp       |  2 +-
+ bluetooth/meson.build              | 10 +++++-----
+ hvac/meson.build                   | 10 +++++-----
+ map/meson.build                    | 10 +++++-----
+ mediaplayer/meson.build            | 10 +++++-----
+ meson.build                        |  4 ++--
+ navigation/meson.build             | 10 +++++-----
+ network/meson.build                | 10 +++++-----
+ pbap/meson.build                   | 10 +++++-----
+ pbap/pbap.cpp                      |  2 +-
+ pbap/pbap.h                        |  6 +++---
+ radio/meson.build                  | 12 ++++++------
+ telephony/meson.build              | 10 +++++-----
+ vehicle-signals/QtKuksaClient.cpp  |  2 +-
+ vehicle-signals/meson.build        | 14 +++++++-------
+ vehicle-signals/vehiclesignals.cpp |  2 +-
+ weather/meson.build                | 10 +++++-----
+ 18 files changed, 73 insertions(+), 73 deletions(-)
+
+diff --git a/applauncher/meson.build b/applauncher/meson.build
+index b36184a..ba31495 100644
+--- a/applauncher/meson.build
++++ b/applauncher/meson.build
+@@ -1,9 +1,9 @@
+ cpp = meson.get_compiler('cpp')
+ grpcpp_reflection_dep = cpp.find_library('grpc++_reflection')
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+ applauncher_dep = [
+-    qt5_dep,
++    qt_dep,
+     dependency('protobuf'),
+     dependency('grpc'),
+     dependency('grpc++'),
+@@ -24,12 +24,12 @@ grpc_gen = generator(protoc, \
+                      output : ['@BASENAME@.grpc.pb.cc', '@BASENAME@.grpc.pb.h'],
+                      arguments : ['--proto_path=@CURRENT_SOURCE_DIR@/protos',
+                        '--grpc_out=@BUILD_DIR@',
+-                       '--plugin=protoc-gen-grpc=' + grpc_cpp.path(),
++                       '--plugin=protoc-gen-grpc=' + grpc_cpp.full_path(),
+                        '@INPUT@'])
+ generated_grpc_sources = grpc_gen.process('protos/applauncher.proto')
+-moc_files = qt5.compile_moc(headers : ['AppLauncherClient.h', 'AppLauncherGrpcClient.h'],
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers : ['AppLauncherClient.h', 'AppLauncherGrpcClient.h'],
++                            dependencies: qt_dep)
+ src = [
+     'AppLauncherClient.cpp',
+@@ -52,5 +52,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-applauncher',
+                  filebase : 'qtappfw-applauncher',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'Library wrapping AGL AppLauncher API in Qt objects')
+diff --git a/bluetooth/bluetoothmodel.cpp b/bluetooth/bluetoothmodel.cpp
+index 605f950..dafdd54 100644
+--- a/bluetooth/bluetoothmodel.cpp
++++ b/bluetooth/bluetoothmodel.cpp
+@@ -248,5 +248,5 @@ bool BluetoothModelFilter::filterAcceptsRow(int sourceRow, const QModelIndex &so
+       QModelIndex index = model->index(sourceRow);
+       bool paired = model->data(index, BluetoothModel::BluetoothRoles::PairedRole).toBool();
+-      return ((paired ? "true" : "false") == filterRegExp().pattern());
++      return ((paired ? "true" : "false") == filterRegularExpression().pattern());
+ }
+diff --git a/bluetooth/meson.build b/bluetooth/meson.build
+index 008fda1..c8f7e0f 100644
+--- a/bluetooth/meson.build
++++ b/bluetooth/meson.build
+@@ -1,17 +1,17 @@
+-qt5_dep = dependency('qt5', modules: ['Core', 'Qml'])
++qt_dep = dependency('qt6', modules: ['Core', 'Qml'])
+ glib_dep = [dependency('glib-2.0'), dependency('gio-2.0'), dependency('gobject-2.0'), dependency('gio-unix-2.0')]
+ bluez_glib_dep = dependency('bluez-glib')
+-moc_files = qt5.compile_moc(headers : ['bluetooth.h', 'bluetoothmodel.h'],
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers : ['bluetooth.h', 'bluetoothmodel.h'],
++                            dependencies: qt_dep)
+ src = ['bluetooth.cpp', 'bluetoothmodel.cpp', 'bluetootheventhandler.cpp', moc_files]
+ lib = shared_library('qtappfw-bt',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: [qt5_dep, glib_dep, bluez_glib_dep],
++                     dependencies: [qt_dep, glib_dep, bluez_glib_dep],
+                      install: true)
+ install_headers('bluetooth.h')
+@@ -21,7 +21,7 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-bt',
+                  filebase : 'qtappfw-bt',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'AGL Qt demo app framework helper library for using BlueZ.')
+ qtappfw_bt_dep = declare_dependency(link_with: lib,
+diff --git a/hvac/meson.build b/hvac/meson.build
+index ce3679c..ad41612 100644
+--- a/hvac/meson.build
++++ b/hvac/meson.build
+@@ -1,14 +1,14 @@
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+-moc_files = qt5.compile_moc(headers: 'hvac.h',
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: 'hvac.h',
++                            dependencies: qt_dep)
+ src = ['hvac.cpp', moc_files]
+ lib = shared_library('qtappfw-hvac',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: [qt5_dep, qtappfw_vs_dep],
++                     dependencies: [qt_dep, qtappfw_vs_dep],
+                      install: true)
+ install_headers('hvac.h')
+@@ -18,5 +18,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-hvac',
+                  filebase : 'qtappfw-hvac',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'AGL Qt demo app framework helper library for using HVAC.')
+diff --git a/map/meson.build b/map/meson.build
+index 1f563e6..e68cd0e 100644
+--- a/map/meson.build
++++ b/map/meson.build
+@@ -1,14 +1,14 @@
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+-moc_files = qt5.compile_moc(headers : 'map.h',
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers : 'map.h',
++                            dependencies: qt_dep)
+ src = ['map.cpp', moc_files]
+ lib = shared_library('qtappfw-bt-map',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: [qt5_dep, qtappfw_bt_dep],
++                     dependencies: [qt_dep, qtappfw_bt_dep],
+                      install: true)
+ install_headers('map.h')
+@@ -18,5 +18,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-bt-map',
+                  filebase : 'qtappfw-bt-map',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'Library wrapping AGL Bluetooth MAP profile API in Qt objects')
+diff --git a/mediaplayer/meson.build b/mediaplayer/meson.build
+index ff2db0a..b6a716e 100644
+--- a/mediaplayer/meson.build
++++ b/mediaplayer/meson.build
+@@ -1,4 +1,4 @@
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+ mpdclient_dep = dependency('libmpdclient')
+@@ -8,8 +8,8 @@ mediaplayer_headers = [ 'MediaplayerBackend.h',
+                         'MpdEventHandler.h',
+                         'mediaplayer.h'
+ ]
+-moc_files = qt5.compile_moc(headers: mediaplayer_headers,
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: mediaplayer_headers,
++                            dependencies: qt_dep)
+ src = [ 'MediaplayerBackend.cpp',
+         'MediaplayerBluezBackend.cpp',
+@@ -22,7 +22,7 @@ lib = shared_library('qtappfw-mediaplayer',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: [qt5_dep, mpdclient_dep, qtappfw_bt_dep, qtappfw_vs_dep],
++                     dependencies: [qt_dep, mpdclient_dep, qtappfw_bt_dep, qtappfw_vs_dep],
+                      install: true)
+ install_headers('mediaplayer.h')
+@@ -32,5 +32,5 @@ pkg_mod.generate(libraries: lib,
+                  version: '1.0',
+                  name: 'libqtappfw-mediaplayer',
+                  filebase: 'qtappfw-mediaplayer',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description: 'Library wrapping AGL mediaplayer API in Qt objects')
+diff --git a/meson.build b/meson.build
+index 263d3d5..0264a76 100644
+--- a/meson.build
++++ b/meson.build
+@@ -19,7 +19,7 @@ project (
+   ['cpp'],
+   version : '2.0.1',
+   license : 'Apache-2.0',
+-  meson_version : '>= 0.49.0',
++  meson_version : '>= 0.59.0',
+   default_options :
+     [
+       'warning_level=1',
+@@ -29,7 +29,7 @@ project (
+     ],
+ )
+-qt5 = import('qt5')
++qt = import('qt6')
+ #subdir('docs')
+diff --git a/navigation/meson.build b/navigation/meson.build
+index 9b8e3ea..5e59f3d 100644
+--- a/navigation/meson.build
++++ b/navigation/meson.build
+@@ -1,14 +1,14 @@
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+-moc_files = qt5.compile_moc(headers: 'navigation.h',
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: 'navigation.h',
++                            dependencies: qt_dep)
+ src = ['navigation.cpp', moc_files]
+ lib = shared_library('qtappfw-navigation',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: [qt5_dep, qtappfw_vs_dep],
++                     dependencies: [qt_dep, qtappfw_vs_dep],
+                      install: true)
+ install_headers('navigation.h')
+@@ -18,5 +18,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-navigation',
+                  filebase : 'qtappfw-navigation',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'Library wrapping AGL navigation API in Qt objects')
+diff --git a/network/meson.build b/network/meson.build
+index d60369d..0726264 100644
+--- a/network/meson.build
++++ b/network/meson.build
+@@ -1,4 +1,4 @@
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+ glib_dep = [dependency('glib-2.0'), dependency('gio-2.0'), dependency('gobject-2.0'), dependency('gio-unix-2.0')]
+ connman_glib_dep = dependency('connman-glib')
+@@ -12,8 +12,8 @@ network_headers = [ 'abstractnetworkmodel.h',
+                     'wiredadapter.h',
+                     'wirednetworkmodel.h'
+ ]
+-moc_files = qt5.compile_moc(headers: network_headers,
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: network_headers,
++                            dependencies: qt_dep)
+ src = [ 'network.cpp',
+         'networkeventhandler.cpp',
+@@ -29,7 +29,7 @@ lib = shared_library('qtappfw-network',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: [qt5_dep, glib_dep, connman_glib_dep],
++                     dependencies: [qt_dep, glib_dep, connman_glib_dep],
+                      install: true)
+ install_headers(['network.h', 'networkadapter.h', 'wifiadapter.h', 'wiredadapter.h'])
+@@ -39,5 +39,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-network',
+                  filebase : 'qtappfw-network',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'Library wrapping AGL network API in Qt objects')
+diff --git a/pbap/meson.build b/pbap/meson.build
+index 7e2d1fb..fc980a8 100644
+--- a/pbap/meson.build
++++ b/pbap/meson.build
+@@ -1,14 +1,14 @@
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+-moc_files = qt5.compile_moc(headers : 'pbap.h',
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers : 'pbap.h',
++                            dependencies: qt_dep)
+ src = ['pbap.cpp', moc_files]
+ lib = shared_library('qtappfw-bt-pbap',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: qt5_dep,
++                     dependencies: qt_dep,
+                      install: true)
+ install_headers('pbap.h')
+@@ -18,5 +18,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-bt-pbap',
+                  filebase : 'qtappfw-bt-pbap',
+-                 requires: 'Qt5Qml',
++                 requires: '',
+                  description : 'Library wrapping AGL Bluetooth PBAP profile API in Qt objects')
+diff --git a/pbap/pbap.cpp b/pbap/pbap.cpp
+index 7473c54..d98fbea 100644
+--- a/pbap/pbap.cpp
++++ b/pbap/pbap.cpp
+@@ -241,7 +241,7 @@ void Pbap::updateCalls(QJsonArray vcards)
+                 name = number;
+         }
+-        QStringList typelist = entry.value("type").toString().split(QRegExp("="));
++        QStringList typelist = entry.value("type").toString().split(QRegularExpression("="));
+         type = typelist.takeLast();
+         datetime = entry.value("timestamp").toString();
+diff --git a/pbap/pbap.h b/pbap/pbap.h
+index 25fa450..447eeac 100644
+--- a/pbap/pbap.h
++++ b/pbap/pbap.h
+@@ -62,7 +62,7 @@ class Contact : public QObject
+     Q_PROPERTY(QString name READ name NOTIFY nameChanged)
+     Q_PROPERTY(QString photo READ photo NOTIFY photoChanged)
+-    Q_PROPERTY(QQmlListProperty<PhoneNumber>numbers READ numbersList NOTIFY numbersListChanged)
++    Q_PROPERTY(QQmlListProperty<PhoneNumber> numbers READ numbersList NOTIFY numbersListChanged)
+     public:
+         explicit Contact(QString name, QString photo, QList<PhoneNumber *>numbers);
+@@ -75,11 +75,11 @@ class Contact : public QObject
+         QQmlListProperty<PhoneNumber>numbersList() {
+             return QQmlListProperty<PhoneNumber>(this, 0, &Contact::countNumbers, &Contact::atNumbers);
+         }
+-        static int countNumbers(QQmlListProperty<PhoneNumber> *property) {
++        static qsizetype countNumbers(QQmlListProperty<PhoneNumber> *property) {
+             Contact *contact = qobject_cast<Contact *>(property->object);
+             return contact->m_numbers.size();
+         }
+-        static PhoneNumber *atNumbers(QQmlListProperty<PhoneNumber> *property, int index) {
++        static PhoneNumber *atNumbers(QQmlListProperty<PhoneNumber> *property, qsizetype index) {
+             Contact *contact = qobject_cast<Contact *>(property->object);
+             return contact->m_numbers[index];
+         }
+diff --git a/radio/meson.build b/radio/meson.build
+index 7ae1bac..f4ed0dc 100644
+--- a/radio/meson.build
++++ b/radio/meson.build
+@@ -1,9 +1,9 @@
+ cpp = meson.get_compiler('cpp')
+ grpcpp_reflection_dep = cpp.find_library('grpc++_reflection')
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+ radio_dep = [
+-    qt5_dep,
++    qt_dep,
+     dependency('protobuf'),
+     dependency('grpc'),
+     dependency('grpc++'),
+@@ -24,12 +24,12 @@ grpc_gen = generator(protoc, \
+                      output : ['@BASENAME@.grpc.pb.cc', '@BASENAME@.grpc.pb.h'],
+                      arguments : ['--proto_path=@CURRENT_SOURCE_DIR@/protos',
+                        '--grpc_out=@BUILD_DIR@',
+-                       '--plugin=protoc-gen-grpc=' + grpc_cpp.path(),
++                       '--plugin=protoc-gen-grpc=' + grpc_cpp.full_path(),
+                        '@INPUT@'])
+ generated_grpc_sources = grpc_gen.process('protos/radio.proto')
+-moc_files = qt5.compile_moc(headers: ['RadioClient.h', 'RadioGrpcClient.h'],
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: ['RadioClient.h', 'RadioGrpcClient.h'],
++                            dependencies: qt_dep)
+ src = [
+     'RadioClient.cpp',
+@@ -53,5 +53,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-radio',
+                  filebase : 'qtappfw-radio',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'Library wrapping AGL radio API in Qt objects')
+diff --git a/telephony/meson.build b/telephony/meson.build
+index 934d70c..f32777f 100644
+--- a/telephony/meson.build
++++ b/telephony/meson.build
+@@ -1,14 +1,14 @@
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+-moc_files = qt5.compile_moc(headers: 'telephony.h',
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: 'telephony.h',
++                            dependencies: qt_dep)
+ src = ['telephony.cpp', moc_files]
+ lib = shared_library('qtappfw-phone',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: qt5_dep,
++                     dependencies: qt_dep,
+                      install: true)
+ install_headers('telephony.h')
+@@ -18,5 +18,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-phone',
+                  filebase : 'qtappfw-phone',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'Library wrapping AGL telephony API in Qt objects')
+diff --git a/vehicle-signals/QtKuksaClient.cpp b/vehicle-signals/QtKuksaClient.cpp
+index 901459d..e258670 100644
+--- a/vehicle-signals/QtKuksaClient.cpp
++++ b/vehicle-signals/QtKuksaClient.cpp
+@@ -84,7 +84,7 @@ QtKuksaClient::QtKuksaClient(const std::shared_ptr< ::grpc::ChannelInterface>& c
+ void QtKuksaClient::connect()
+ {
+       // Check for connection in another thread
+-      QFuture<void> future = QtConcurrent::run(this, &QtKuksaClient::waitForConnected);
++      QFuture<void> future = QtConcurrent::run(&QtKuksaClient::waitForConnected, this);
+ }
+ void QtKuksaClient::get(const QString &path, const bool actuator)
+diff --git a/vehicle-signals/meson.build b/vehicle-signals/meson.build
+index 50383e4..4dd766c 100644
+--- a/vehicle-signals/meson.build
++++ b/vehicle-signals/meson.build
+@@ -1,10 +1,10 @@
+ cpp = meson.get_compiler('cpp')
+ grpcpp_reflection_dep = cpp.find_library('grpc++_reflection')
+-qt5_dep = dependency('qt5', modules: ['Core', 'Concurrent'])
++qt_dep = dependency('qt6', modules: ['Core', 'Concurrent'])
+ vs_dep = [
+-    qt5_dep,
++    qt_dep,
+     dependency('protobuf'),
+     dependency('grpc'),
+     dependency('grpc++'),
+@@ -30,14 +30,14 @@ grpc_gen = generator(protoc, \
+                      output : ['@BASENAME@.grpc.pb.cc', '@BASENAME@.grpc.pb.h'],
+                      arguments : ['-I=' + protos_base_dir,
+                        '--grpc_out=@BUILD_DIR@',
+-                       '--plugin=protoc-gen-grpc=' + grpc_cpp.path(),
++                       '--plugin=protoc-gen-grpc=' + grpc_cpp.full_path(),
+                        '@INPUT@'])
+ generated_grpc_sources = [ \
+     grpc_gen.process(protos_dir / 'val.proto', preserve_path_from : protos_base_dir),
+ ]
+-moc_files = qt5.compile_moc(headers: [ 'vehiclesignals.h', 'QtKuksaClient.h' ],
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: [ 'vehiclesignals.h', 'QtKuksaClient.h' ],
++                            dependencies: qt_dep)
+ src = [
+     'vehiclesignals.cpp',
+@@ -62,10 +62,10 @@ pkg_mod.generate(libraries: lib,
+                  version: '1.0',
+                  name: 'libqtappfw-vehicle-signals',
+                  filebase: 'qtappfw-vehicle-signals',
+-                 requires: ['Qt5Core'],
++                 requires: ['Qt6Core'],
+                  description: 'Library wrapping VSS API in Qt objects')
+-qtappfw_vs_dep = declare_dependency(dependencies: qt5_dep,
++qtappfw_vs_dep = declare_dependency(dependencies: qt_dep,
+                                     link_with: lib,
+                                     include_directories: '.',
+                                     sources: ['vehiclesignals.h'])
+diff --git a/vehicle-signals/vehiclesignals.cpp b/vehicle-signals/vehiclesignals.cpp
+index adf371a..f550955 100644
+--- a/vehicle-signals/vehiclesignals.cpp
++++ b/vehicle-signals/vehiclesignals.cpp
+@@ -160,7 +160,7 @@ void VehicleSignals::onSubscribeDone(const QMap<QString, bool> &signals_, bool c
+ {
+       if (!canceled) {
+               // queue up a resubscribe attempt
+-              QFuture<void> future = QtConcurrent::run(this, &VehicleSignals::resubscribe, signals_);
++              QFuture<void> future = QtConcurrent::run(&VehicleSignals::resubscribe, this, signals_);
+       }
+ }
+diff --git a/weather/meson.build b/weather/meson.build
+index 116975b..bb6e3aa 100644
+--- a/weather/meson.build
++++ b/weather/meson.build
+@@ -1,14 +1,14 @@
+-qt5_dep = dependency('qt5', modules: ['Qml'])
++qt_dep = dependency('qt6', modules: ['Qml'])
+-moc_files = qt5.compile_moc(headers: 'weather.h',
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: 'weather.h',
++                            dependencies: qt_dep)
+ src = ['weather.cpp', moc_files]
+ lib = shared_library('qtappfw-weather',
+                      sources: src,
+                      version: '1.0.0',
+                      soversion: '0',
+-                     dependencies: qt5_dep,
++                     dependencies: qt_dep,
+                      install: true)
+ install_headers('weather.h')
+@@ -18,5 +18,5 @@ pkg_mod.generate(libraries : lib,
+                  version : '1.0',
+                  name : 'libqtappfw-weather',
+                  filebase : 'qtappfw-weather',
+-                 requires: 'Qt5Qml',
++                 requires: 'Qt6Qml',
+                  description : 'Library wrapping AGL weather API in Qt objects')
index f4e3607..7f4d9dd 100644 (file)
@@ -21,14 +21,16 @@ DEPENDS = " \
     kuksa-databroker \
 "
 
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libqtappfw;protocol=https;branch=${AGL_BRANCH}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libqtappfw;protocol=https;branch=${AGL_BRANCH} \
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV  = "4694b211569e15dc8aa4e75b6fb70e75946e766d"
 S       = "${WORKDIR}/git"
 
 # PV needs to be modified with SRCPV to work AUTOREV correctly
 PV = "2.0.1+git${SRCPV}"
 
-inherit meson pkgconfig
+inherit meson pkgconfig meson_qt6_path
 
 EXTRA_OEMESON += "-Dprotos=${STAGING_INCDIR}"
 
diff --git a/recipes-demo/mediaplayer/mediaplayer/0001-Migrate-to-Qt-6.patch b/recipes-demo/mediaplayer/mediaplayer/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..fc7dcb2
--- /dev/null
@@ -0,0 +1,87 @@
+From b98a116f91e967eca96ecd3052eeeb78d8002e0c Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:24:39 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ app/MediaPlayer.qml | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/app/MediaPlayer.qml b/app/MediaPlayer.qml
+index fd4db58..6f381da 100644
+--- a/app/MediaPlayer.qml
++++ b/app/MediaPlayer.qml
+@@ -174,14 +174,14 @@ ApplicationWindow {
+                             //ToggleButton {
+                             //    id: random
+                             //    visible: bluetooth.connected == false
+-                            //    offImage: './images/AGL_MediaPlayer_Shuffle_Inactive.svg'
+-                            //    onImage: './images/AGL_MediaPlayer_Shuffle_Active.svg'
++                            //    offImage: 'qrc:/images/AGL_MediaPlayer_Shuffle_Inactive.svg'
++                            //    onImage: 'qrc:/images/AGL_MediaPlayer_Shuffle_Active.svg'
+                             //}
+                             ToggleButton {
+                                 id: loop
+                                 visible: player.av_connected === false
+-                                offImage: './images/AGL_MediaPlayer_Loop_Inactive.svg'
+-                                onImage: './images/AGL_MediaPlayer_Loop_Active.svg'
++                                offImage: 'qrc:/images/AGL_MediaPlayer_Loop_Inactive.svg'
++                                onImage: 'qrc:/images/AGL_MediaPlayer_Loop_Active.svg'
+                                 onClicked: { mediaplayer.loop(checked ? "playlist" : "off") }
+                             }
+                         }
+@@ -228,15 +228,15 @@ ApplicationWindow {
+                     RowLayout {
+                         Layout.fillHeight: true
+ //                        Image {
+-//                            source: './images/AGL_MediaPlayer_Playlist_Inactive.svg'
++//                            source: 'qrc:/images/AGL_MediaPlayer_Playlist_Inactive.svg'
+ //                        }
+ //                        Image {
+-//                            source: './images/AGL_MediaPlayer_CD_Inactive.svg'
++//                            source: 'qrc:/images/AGL_MediaPlayer_CD_Inactive.svg'
+ //                        }
+                         Item { Layout.fillWidth: true }
+                         ImageButton {
+                             id: previous
+-                            offImage: './images/AGL_MediaPlayer_BackArrow.svg'
++                            offImage: 'qrc:/images/AGL_MediaPlayer_BackArrow.svg'
+                             onClicked: {
+                                 mediaplayer.previous()
+                             }
+@@ -248,7 +248,7 @@ ApplicationWindow {
+                                     when: player.status == "playing"
+                                     PropertyChanges {
+                                         target: play
+-                                        offImage: './images/AGL_MediaPlayer_Player_Pause.svg'
++                                        offImage: 'qrc:/images/AGL_MediaPlayer_Player_Pause.svg'
+                                         onClicked: {
+                                             mediaplayer.pause()
+                                         }
+@@ -258,7 +258,7 @@ ApplicationWindow {
+                                     when: player.status != "playing"
+                                     PropertyChanges {
+                                         target: play
+-                                        offImage: './images/AGL_MediaPlayer_Player_Play.svg'
++                                        offImage: 'qrc:/images/AGL_MediaPlayer_Player_Play.svg'
+                                         onClicked: mediaplayer.play()
+                                     }
+                                 }
+@@ -266,7 +266,7 @@ ApplicationWindow {
+                         }
+                         ImageButton {
+                             id: forward
+-                            offImage: './images/AGL_MediaPlayer_ForwardArrow.svg'
++                            offImage: 'qrc:/images/AGL_MediaPlayer_ForwardArrow.svg'
+                             onClicked: {
+                                 mediaplayer.next()
+                             }
+@@ -284,7 +284,7 @@ ApplicationWindow {
+                                         mediaplayer.disconnect()
+                               }
+                               contentItem: Image {
+-                                source: player.av_connected ? './images/AGL_MediaPlayer_Bluetooth_Active.svg' : './images/AGL_MediaPlayer_Bluetooth_Inactive.svg'
++                                source: player.av_connected ? 'qrc:/images/AGL_MediaPlayer_Bluetooth_Active.svg' : 'qrc:/images/AGL_MediaPlayer_Bluetooth_Inactive.svg'
+                               }
+                         }
+                     }
index 976dcc8..1f3b070 100644 (file)
@@ -6,19 +6,20 @@ SECTION     = "apps"
 LICENSE     = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 
-DEPENDS = "qtquickcontrols2 libqtappfw"
+DEPENDS = "qtdeclarative libqtappfw"
 
 PV = "2.0+git${SRCPV}"
 
 SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/mediaplayer;protocol=https;branch=${AGL_BRANCH} \
            file://mediaplayer.conf \
            file://mediaplayer.token \
-"
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV  = "0aefba20fe07dbb79d7b3683ab38c0b0b313a655"
 
 S  = "${WORKDIR}/git"
 
-inherit qmake5 pkgconfig agl-app
+inherit qt6-qmake pkgconfig agl-app
 
 AGL_APP_NAME = "Mediaplayer"
 
diff --git a/recipes-demo/messaging/messaging/0001-Migrate-to-Qt-6.patch b/recipes-demo/messaging/messaging/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..4a8b1ab
--- /dev/null
@@ -0,0 +1,91 @@
+From 83be2a0e829c959f5466e6c44c60abadc628ea0b Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:28:22 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ app/Messaging.qml      |  4 ++--
+ app/Notification.qml   |  2 +-
+ app/TabImageButton.qml | 11 ++++++-----
+ 3 files changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/app/Messaging.qml b/app/Messaging.qml
+index 48568c2..05bd452 100644
+--- a/app/Messaging.qml
++++ b/app/Messaging.qml
+@@ -41,13 +41,13 @@ ApplicationWindow {
+             contentHeight: 160
+             TabImageButton {
+-                icon: "./images/ic_contacts_48px.svg"
++                iconSource: "qrc:/images/ic_contacts_48px.svg"
+                 text: "Alerts"
+                 font.pixelSize: 50
+             }
+             TabImageButton {
+-                icon: "./images/ic_contacts_48px.svg"
++                iconSource: "qrc:/images/ic_contacts_48px.svg"
+                 text: "Compose"
+                 font.pixelSize: 50
+             }
+diff --git a/app/Notification.qml b/app/Notification.qml
+index ac6b360..dd68ce3 100644
+--- a/app/Notification.qml
++++ b/app/Notification.qml
+@@ -30,7 +30,7 @@ Item {
+         Image {
+             id: button
+             scale: 0.5
+-            source: '../images/HMI_Settings_X.svg'
++            source: 'qrc:/images/HMI_Settings_X.svg'
+             MouseArea {
+                 anchors.fill: button
+                 onClicked: notificationModel.remove(index)
+diff --git a/app/TabImageButton.qml b/app/TabImageButton.qml
+index 2176595..c707574 100644
+--- a/app/TabImageButton.qml
++++ b/app/TabImageButton.qml
+@@ -41,6 +41,7 @@ import QtQuick.Layouts 1.1
+ import QtQuick.Controls 2.2
+ import QtQuick.Controls.impl 2.2
+ import QtQuick.Templates 2.2 as T
++import QtQuick.Controls.Basic 2.2
+ T.TabButton {
+     id: control
+@@ -53,13 +54,13 @@ T.TabButton {
+     padding: 6
+-    property url icon
++    property url iconSource
+     contentItem: ColumnLayout {
+         spacing: 20
+         Image {
+             Layout.alignment: Qt.AlignCenter
+-            source: control.icon
++            source: control.iconSource
+             width: 96
+             height: 96
+@@ -70,7 +71,7 @@ T.TabButton {
+             font: control.font
+             elide: Text.ElideRight 
+             opacity: enabled ? 1 : 0.3
+-            color: !control.checked ? Default.textLightColor : control.down ? Default.textDarkColor : Default.textColor
++            color: !control.checked ? Basic.textLightColor : control.down ? Basic.textDarkColor : Basic.textColor
+             horizontalAlignment: Text.AlignHCenter
+             verticalAlignment: Text.AlignVCenter
+         }
+@@ -78,7 +79,7 @@ T.TabButton {
+     background: Rectangle {
+         implicitHeight: 160
+         color: control.down
+-            ? (control.checked ? Default.tabButtonCheckedPressedColor : Default.tabButtonPressedColor)
+-            : (control.checked ? "transparent" : Default.tabButtonColor)
++            ? (control.checked ? Basic.tabButtonCheckedPressedColor : Basic.tabButtonPressedColor)
++            : (control.checked ? "transparent" : Basic.tabButtonColor)
+     }
+ }
index 972e9b8..e3597b2 100644 (file)
@@ -6,16 +6,18 @@ SECTION     = "apps"
 LICENSE     = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 
-DEPENDS = "qtquickcontrols2 libqtappfw"
+DEPENDS = "qtdeclarative libqtappfw"
 
 PV = "1.0+git${SRCPV}"
 
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/messaging;protocol=https;branch=${AGL_BRANCH}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/messaging;protocol=https;branch=${AGL_BRANCH} \
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV  = "e58b0382de8e665d64b8e3486022a6bcb0572823"
 
 S  = "${WORKDIR}/git"
 
-inherit qmake5 pkgconfig agl-app
+inherit qt6-qmake pkgconfig agl-app
 
 AGL_APP_NAME = "Messaging"
 
diff --git a/recipes-demo/navigation/ondemandnavi/0001-Migrate-to-Qt-6.patch b/recipes-demo/navigation/ondemandnavi/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..45a690c
--- /dev/null
@@ -0,0 +1,229 @@
+From f12a16fd4b959eb47c9ba88af1d80c31a7cd7f20 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:32:44 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ app/BtnArrow.qml                |  4 +--
+ app/BtnEnlarge.qml              |  4 +--
+ app/BtnGuidance.qml             |  8 ++---
+ app/BtnMapDirection.qml         |  4 +--
+ app/BtnPresentPosition.qml      |  4 +--
+ app/BtnShrink.qml               |  4 +--
+ app/ImgDestinationDirection.qml |  2 +-
+ app/ProgressNextCross.qml       | 59 ++++++++++++++++++++++++++++-----
+ app/app.pro                     |  2 +-
+ app/navigation.qml              | 19 ++++-------
+ 10 files changed, 72 insertions(+), 38 deletions(-)
+
+diff --git a/app/BtnArrow.qml b/app/BtnArrow.qml
+index 2039865..5a999c9 100644
+--- a/app/BtnArrow.qml
++++ b/app/BtnArrow.qml
+@@ -1,5 +1,5 @@
+-import QtQuick 2.0
+-import QtQuick.Controls 1.5
++import QtQuick
++import QtQuick.Controls
+ Item {
+       Button {
+diff --git a/app/BtnEnlarge.qml b/app/BtnEnlarge.qml
+index cc158ad..eafee56 100644
+--- a/app/BtnEnlarge.qml
++++ b/app/BtnEnlarge.qml
+@@ -1,5 +1,5 @@
+-import QtQuick 2.0
+-import QtQuick.Controls 1.5
++import QtQuick
++import QtQuick.Controls
+ Item {
+       Button {
+diff --git a/app/BtnGuidance.qml b/app/BtnGuidance.qml
+index 2130857..b6267df 100644
+--- a/app/BtnGuidance.qml
++++ b/app/BtnGuidance.qml
+@@ -1,7 +1,7 @@
+-import QtQuick 2.0
+-import QtQuick.Controls 1.5
+-import QtLocation 5.9
+-import QtPositioning 5.6
++import QtQuick
++import QtQuick.Controls
++import QtLocation
++import QtPositioning
+ Item {
+     id: btn_guidance
+diff --git a/app/BtnMapDirection.qml b/app/BtnMapDirection.qml
+index c56f0bf..cd703ff 100644
+--- a/app/BtnMapDirection.qml
++++ b/app/BtnMapDirection.qml
+@@ -1,5 +1,5 @@
+-import QtQuick 2.0
+-import QtQuick.Controls 1.5
++import QtQuick
++import QtQuick.Controls
+ Item {
+     Button {
+diff --git a/app/BtnPresentPosition.qml b/app/BtnPresentPosition.qml
+index 2734664..01761c8 100644
+--- a/app/BtnPresentPosition.qml
++++ b/app/BtnPresentPosition.qml
+@@ -1,5 +1,5 @@
+-import QtQuick 2.0
+-import QtQuick.Controls 1.5
++import QtQuick
++import QtQuick.Controls
+ Item {
+     id: btn_present_position
+diff --git a/app/BtnShrink.qml b/app/BtnShrink.qml
+index 23859dc..079d6d6 100644
+--- a/app/BtnShrink.qml
++++ b/app/BtnShrink.qml
+@@ -1,5 +1,5 @@
+-import QtQuick 2.0
+-import QtQuick.Controls 1.5
++import QtQuick
++import QtQuick.Controls
+ Item {
+       Button {
+diff --git a/app/ImgDestinationDirection.qml b/app/ImgDestinationDirection.qml
+index e6ee5de..b80aca8 100644
+--- a/app/ImgDestinationDirection.qml
++++ b/app/ImgDestinationDirection.qml
+@@ -1,4 +1,4 @@
+-import QtQuick 2.0
++import QtQuick
+ Item {
+       id: img_destination_direction
+diff --git a/app/ProgressNextCross.qml b/app/ProgressNextCross.qml
+index 31e552c..a597c97 100644
+--- a/app/ProgressNextCross.qml
++++ b/app/ProgressNextCross.qml
+@@ -1,6 +1,5 @@
+-import QtQuick 2.0
+-import QtQuick.Controls 1.5
+-import QtQuick.Controls.Styles 1.4
++import QtQuick
++import QtQuick.Controls
+ Item {
+       id: progress_next_cross
+@@ -24,14 +23,56 @@ Item {
+               id: bar
+               width: 25
+               height: 100
+-        orientation: Qt.Vertical
++        rotation: 90
+         value: 0
+-        minimumValue: 0
+-        maximumValue: 300
++        from: 0
++        to: 300
+-        style: ProgressBarStyle {
+-            progress: Rectangle {
+-                color: "green"
++        background: Rectangle {
++            implicitWidth: 200
++            implicitHeight: 6
++            color: "#e6e6e6"
++            radius: 3
++        }
++
++        contentItem: Item {
++            implicitWidth: 200
++            implicitHeight: 4
++
++            // Progress indicator for determinate state.
++            Rectangle {
++                width: bar.visualPosition * parent.width
++                height: parent.height
++                radius: 2
++                color: "#17a81a"
++                visible: !bar.indeterminate
++            }
++
++            // Scrolling animation for indeterminate state.
++            Item {
++                anchors.fill: parent
++                visible: bar.indeterminate
++                clip: true
++
++                Row {
++                    spacing: 20
++
++                    Repeater {
++                        model: bar.width / 40 + 1
++
++                        Rectangle {
++                            color: "#17a81a"
++                            width: 20
++                            height: bar.height
++                        }
++                    }
++                    XAnimator on x {
++                        from: 0
++                        to: -40
++                        loops: Animation.Infinite
++                        running: bar.indeterminate
++                    }
++                }
+             }
+         }
+       }
+diff --git a/app/app.pro b/app/app.pro
+index 1a0a9c3..849810d 100644
+--- a/app/app.pro
++++ b/app/app.pro
+@@ -1,6 +1,6 @@
+ TEMPLATE = app
+ TARGET = navigation
+-QT = core qml quick positioning
++QT = core qml quick positioning location
+ CONFIG += c++11 link_pkgconfig
+ PKGCONFIG += qtappfw-navigation qtappfw-vehicle-signals
+diff --git a/app/navigation.qml b/app/navigation.qml
+index 5cb3634..0d61d46 100644
+--- a/app/navigation.qml
++++ b/app/navigation.qml
+@@ -15,12 +15,12 @@
+  * limitations under the License.
+  */
+-import QtQuick 2.6
+-import QtQuick.Layouts 1.1
+-import QtQuick.Controls 2.0
+-import QtLocation 5.9
+-import QtPositioning 5.6
+-import QtQuick.Window 2.11
++import QtQuick
++import QtQuick.Layouts
++import QtQuick.Controls
++import QtLocation
++import QtPositioning
++import QtQuick.Window
+ ApplicationWindow {
+     id: root
+@@ -476,13 +476,6 @@ ApplicationWindow {
+             }
+         }
+-        gesture.onFlickStarted: {
+-            btn_present_position.state = "Optional"
+-        }
+-        gesture.onPanStarted: {
+-            btn_present_position.state = "Optional"
+-        }
+-
+         function updatePositon() {
+             if (!routeModel.get(0))
+                 return;
index cf53b2b..7785bcd 100644 (file)
@@ -6,7 +6,7 @@ SECTION     = "apps"
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 
-DEPENDS = "qtquickcontrols2 qtlocation libqtappfw"
+DEPENDS = "qtdeclarative qtlocation libqtappfw"
 
 PV = "2.0+git${SRCPV}"
 
@@ -15,12 +15,13 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/ondemandnavi;protocol=ht
            file://navigation.conf.kvm-demo \
            file://navigation.conf.gateway-demo \
            file://navigation.token \
-"
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV = "d6b883ef6bdb63fb501b03d64c9a32bc29b7b2c7"
 
 S = "${WORKDIR}/git"
 
-inherit qmake5 pkgconfig agl-app update-alternatives
+inherit qt6-qmake pkgconfig agl-app update-alternatives
 
 AGL_APP_ID = "navigation"
 AGL_APP_NAME = "Navigation"
@@ -67,9 +68,7 @@ ALTERNATIVE_PRIORITY_${PN}-conf-kvm-demo = "30"
 RDEPENDS:${PN} += " \
     qtwayland \
     qtbase-qmlplugins \
-    qtgraphicaleffects-qmlplugins \
-    qtquickcontrols-qmlplugins \
-    qtquickcontrols2-qmlplugins \
+    qt5compat \
     qtquickcontrols2-agl \
     qtquickcontrols2-agl-style \
     qtlocation \
index 3c6571b..ec0c6f2 100644 (file)
@@ -13,7 +13,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \
 
 DEPENDS = " \
     qtbase \
-    qtquickcontrols2 \
+    qtdeclarative \
     qtlocation \
     libqtappfw \
     qtwayland-native \
@@ -64,7 +64,7 @@ ALTERNATIVE_LINK_NAME[tbtnavi.conf] = "${sysconfdir}/xdg/AGL/tbtnavi.conf"
 RDEPENDS:${PN} += " \
     qtwayland \
     qtbase-qmlplugins \
-    qtgraphicaleffects-qmlplugins \
+    qt5compat \
     qtlocation \
     ondemandnavi-config \
     libqtappfw \
diff --git a/recipes-demo/phone/phone/0001-Migrate-to-Qt-6.patch b/recipes-demo/phone/phone/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..5777727
--- /dev/null
@@ -0,0 +1,189 @@
+From e70943a45841b28da16fa8590dc3054401b47591 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:34:25 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ app/ContactsView.qml   |  3 +--
+ app/Dialer.qml         | 14 +++++++-------
+ app/Phone.qml          |  6 +++---
+ app/Recents.qml        |  8 ++++----
+ app/TabImageButton.qml | 11 ++++++-----
+ 5 files changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/app/ContactsView.qml b/app/ContactsView.qml
+index 66f2199..e9def44 100644
+--- a/app/ContactsView.qml
++++ b/app/ContactsView.qml
+@@ -18,7 +18,6 @@
+ import QtQuick 2.6
+ import QtQuick.Layouts 1.3
+ import QtQuick.Controls 2.0
+-import QtQuick.Controls.Styles 1.4
+ import AGL.Demo.Controls 1.0
+ import PhoneNumber 1.0
+@@ -77,7 +76,7 @@ Item {
+                     anchors.leftMargin: 200
+                     spacing: 100
+                     Image {
+-                        source: model.modelData.photo ? model.modelData.photo : './images/HMI_ContactScreen_ImageHolder-01.svg'
++                        source: model.modelData.photo ? model.modelData.photo : 'qrc:/images/HMI_ContactScreen_ImageHolder-01.svg'
+                         Layout.preferredWidth: 160
+                         Layout.preferredHeight: 160
+                     }
+diff --git a/app/Dialer.qml b/app/Dialer.qml
+index 743c742..31fb8c8 100644
+--- a/app/Dialer.qml
++++ b/app/Dialer.qml
+@@ -100,7 +100,7 @@ Item {
+                 ImageButton {
+                     anchors.right: parent.right
+                     anchors.verticalCenter: parent.verticalCenter
+-                    offImage: './images/HMI_Phone_Back_Icon.svg'
++                    offImage: 'qrc:/images/HMI_Phone_Back_Icon.svg'
+                     onClicked: {
+                         if (number.text.length > 0)
+                             number.text = number.text.substring(0, number.text.length - 1)
+@@ -130,8 +130,8 @@ Item {
+                     ListElement { value: '#'; image: 'NumberSign' }
+                 }
+                 ImageButton {
+-                    onImage: './images/HMI_Phone_Button_%1_Active-01.svg'.arg(model.image)
+-                    offImage: './images/HMI_Phone_Button_%1_Inactive-01.svg'.arg(model.image)
++                    onImage: 'qrc:/images/HMI_Phone_Button_%1_Active-01.svg'.arg(model.image)
++                    offImage: 'qrc:/images/HMI_Phone_Button_%1_Inactive-01.svg'.arg(model.image)
+                     onClicked: {
+                         number.text += model.value
+                     }
+@@ -148,8 +148,8 @@ Item {
+         ToggleButton {
+             id: callButton
+             Layout.alignment: Qt.AlignHCenter
+-            onImage: './images/HMI_Phone_Hangup.svg'
+-            offImage: './images/HMI_Phone_Call.svg'
++            onImage: 'qrc:/images/HMI_Phone_Hangup.svg'
++            offImage: 'qrc:/images/HMI_Phone_Call.svg'
+             property var active: (number.text.length > 0) || (telephony.callState === "incoming") || (telephony.callState === "active")
+             opacity: active ? 1 : 0.25
+@@ -182,7 +182,7 @@ Item {
+             Layout.alignment: Qt.AlignHCenter
+             active: false
+             sourceComponent: ImageButton {
+-                offImage: './images/HMI_Phone_Hangup.svg'
++                offImage: 'qrc:/images/HMI_Phone_Hangup.svg'
+                 onClicked: {
+                     telephony.hangup()
+                 }
+@@ -203,7 +203,7 @@ Item {
+                     anchors.fill: parent
+                     spacing: 20
+                     Image {
+-                        source: './images/HMI_Phone_Contact_BlankPhoto.svg'
++                        source: 'qrc:/images/HMI_Phone_Contact_BlankPhoto.svg'
+                     }
+                     ColumnLayout {
+                         Label {
+diff --git a/app/Phone.qml b/app/Phone.qml
+index 6b38f77..6de54f2 100644
+--- a/app/Phone.qml
++++ b/app/Phone.qml
+@@ -41,19 +41,19 @@ ApplicationWindow {
+         contentHeight: 160
+         TabImageButton {
+-            icon: "./images/ic_contacts_48px.svg"
++            iconSource: "qrc:/images/ic_contacts_48px.svg"
+             text: "Contacts"
+             font.pixelSize: 50
+         }
+         TabImageButton {
+-            icon: "./images/ic_schedule_48px.svg"
++            iconSource: "qrc:/images/ic_schedule_48px.svg"
+             text: "Recents"
+             font.pixelSize: 50
+         }
+         TabImageButton {
+-            icon: "./images/ic_dialpad_48px.svg"
++            iconSource: "qrc:/images/ic_dialpad_48px.svg"
+             text: "Dialpad"
+             font.pixelSize: 50
+         }
+diff --git a/app/Recents.qml b/app/Recents.qml
+index 5a516a1..f4d771b 100644
+--- a/app/Recents.qml
++++ b/app/Recents.qml
+@@ -25,11 +25,11 @@ Item {
+     function log_icon(type) {
+         if (type === RecentCall.MISSED) {
+-            return './images/ic_call_missed_48px.svg'
++            return 'qrc:/images/ic_call_missed_48px.svg'
+         } else if (type === RecentCall.RECEIVED) {
+-            return './images/ic_call_received_48px.svg'
++            return 'qrc:/images/ic_call_received_48px.svg'
+         } else if (type === RecentCall.DIALED) {
+-            return './images/ic_call_made_48px.svg'
++            return 'qrc:/images/ic_call_made_48px.svg'
+         }
+     }
+@@ -53,7 +53,7 @@ Item {
+                     Layout.preferredHeight: 150
+                 }
+                 Image {
+-                    source: './images/HMI_Phone_Contact_BlankPhoto.svg'
++                    source: 'qrc:/images/HMI_Phone_Contact_BlankPhoto.svg'
+                     Layout.preferredWidth: 150
+                     Layout.preferredHeight: 150
+                 }
+diff --git a/app/TabImageButton.qml b/app/TabImageButton.qml
+index 2176595..c707574 100644
+--- a/app/TabImageButton.qml
++++ b/app/TabImageButton.qml
+@@ -41,6 +41,7 @@ import QtQuick.Layouts 1.1
+ import QtQuick.Controls 2.2
+ import QtQuick.Controls.impl 2.2
+ import QtQuick.Templates 2.2 as T
++import QtQuick.Controls.Basic 2.2
+ T.TabButton {
+     id: control
+@@ -53,13 +54,13 @@ T.TabButton {
+     padding: 6
+-    property url icon
++    property url iconSource
+     contentItem: ColumnLayout {
+         spacing: 20
+         Image {
+             Layout.alignment: Qt.AlignCenter
+-            source: control.icon
++            source: control.iconSource
+             width: 96
+             height: 96
+@@ -70,7 +71,7 @@ T.TabButton {
+             font: control.font
+             elide: Text.ElideRight 
+             opacity: enabled ? 1 : 0.3
+-            color: !control.checked ? Default.textLightColor : control.down ? Default.textDarkColor : Default.textColor
++            color: !control.checked ? Basic.textLightColor : control.down ? Basic.textDarkColor : Basic.textColor
+             horizontalAlignment: Text.AlignHCenter
+             verticalAlignment: Text.AlignVCenter
+         }
+@@ -78,7 +79,7 @@ T.TabButton {
+     background: Rectangle {
+         implicitHeight: 160
+         color: control.down
+-            ? (control.checked ? Default.tabButtonCheckedPressedColor : Default.tabButtonPressedColor)
+-            : (control.checked ? "transparent" : Default.tabButtonColor)
++            ? (control.checked ? Basic.tabButtonCheckedPressedColor : Basic.tabButtonPressedColor)
++            : (control.checked ? "transparent" : Basic.tabButtonColor)
+     }
+ }
index 4c59bcb..37330ff 100644 (file)
@@ -6,16 +6,18 @@ SECTION     = "apps"
 LICENSE     = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 
-DEPENDS = "qtquickcontrols2 libqtappfw gstreamer1.0"
+DEPENDS = "qtdeclarative libqtappfw gstreamer1.0"
 
 PV = "1.0+git${SRCPV}"
 
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/phone;protocol=https;branch=${AGL_BRANCH}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/phone;protocol=https;branch=${AGL_BRANCH} \
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV  = "bfcc2fa194474a7bc317583072b62c977ae0fc14"
 
 S = "${WORKDIR}/git"
 
-inherit qmake5 pkgconfig agl-app
+inherit qt6-qmake pkgconfig agl-app
 
 AGL_APP_NAME = "Phone"
 
diff --git a/recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style/0001-Migrate-to-Qt-6.patch b/recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..f00cb14
--- /dev/null
@@ -0,0 +1,71 @@
+From 6581ce20312ee15f35e00e29e363270616e96359 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:37:08 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ imports/qtquickcontrols2aglstyle/ProgressBar.qml       |  2 +-
+ imports/qtquickcontrols2aglstyle/Slider.qml            |  2 +-
+ imports/qtquickcontrols2aglstyle/qmldir                | 10 ++++++++++
+ .../qtquickcontrols2aglstyle.pro                       |  4 ++--
+ 4 files changed, 14 insertions(+), 4 deletions(-)
+ create mode 100644 imports/qtquickcontrols2aglstyle/qmldir
+
+diff --git a/imports/qtquickcontrols2aglstyle/ProgressBar.qml b/imports/qtquickcontrols2aglstyle/ProgressBar.qml
+index 6d5e3ae..fca0b8a 100644
+--- a/imports/qtquickcontrols2aglstyle/ProgressBar.qml
++++ b/imports/qtquickcontrols2aglstyle/ProgressBar.qml
+@@ -16,7 +16,7 @@
+ import QtQuick 2.6
+ import QtQuick.Templates 2.0 as T
+-import QtGraphicalEffects 1.0
++import Qt5Compat.GraphicalEffects
+ T.ProgressBar {
+     id: control
+diff --git a/imports/qtquickcontrols2aglstyle/Slider.qml b/imports/qtquickcontrols2aglstyle/Slider.qml
+index 5b6a495..02f4555 100644
+--- a/imports/qtquickcontrols2aglstyle/Slider.qml
++++ b/imports/qtquickcontrols2aglstyle/Slider.qml
+@@ -16,7 +16,7 @@
+ import QtQuick 2.6
+ import QtQuick.Templates 2.0 as T
+-import QtGraphicalEffects 1.0
++import Qt5Compat.GraphicalEffects
+ T.Slider {
+     id: root
+diff --git a/imports/qtquickcontrols2aglstyle/qmldir b/imports/qtquickcontrols2aglstyle/qmldir
+new file mode 100644
+index 0000000..e4e4417
+--- /dev/null
++++ b/imports/qtquickcontrols2aglstyle/qmldir
+@@ -0,0 +1,10 @@
++module AGL
++ApplicationWindow 1.0 ApplicationWindow.qml
++Button 1.0 Button.qml
++Label 1.0 Label.qml
++Page 1.0 Page.qml
++ProgressBar 1.0 ProgressBar.qml
++Slider 1.0 Slider.qml
++Switch 1.0 Switch.qml
++TextField 1.0 TextField.qml
++Tumbler 1.0 Tumbler.qml
+\ No newline at end of file
+diff --git a/imports/qtquickcontrols2aglstyle/qtquickcontrols2aglstyle.pro b/imports/qtquickcontrols2aglstyle/qtquickcontrols2aglstyle.pro
+index 5a34485..ba24e9d 100644
+--- a/imports/qtquickcontrols2aglstyle/qtquickcontrols2aglstyle.pro
++++ b/imports/qtquickcontrols2aglstyle/qtquickcontrols2aglstyle.pro
+@@ -1,8 +1,8 @@
+ TEMPLATE = aux
+-DISTFILES = *.qml images
++DISTFILES = *.qml images qmldir
+ files.files = $$DISTFILES
+-files.path = $$PREFIX$$[QT_INSTALL_QML]/QtQuick/Controls.2/AGL
++files.path = $$PREFIX$$[QT_INSTALL_BINS]/AGL
+ INSTALLS += files
index 49d2e85..3ccee12 100644 (file)
@@ -3,21 +3,21 @@ HOMEPAGE    = "https://git.automotivelinux.org/src/qtquickcontrols2-agl-style"
 LICENSE     = "MPL-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=815ca599c9df247a0c7f619bab123dad"
 
-DEPENDS = "qtquickcontrols2"
+DEPENDS = "qtdeclarative"
 
 PV = "1.0+git${SRCPV}"
 
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/qtquickcontrols2-agl-style;protocol=https;branch=${AGL_BRANCH}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/qtquickcontrols2-agl-style;protocol=https;branch=${AGL_BRANCH} \
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV = "c02692a3c20d9aed1192137a67d5be882c60e71f"
 
 S = "${WORKDIR}/git"
 
-inherit qmake5
+inherit qt6-qmake
 
 FILES:${PN} += "${OE_QMAKE_PATH_QML}/QtQuick/Controls.2/AGL/*"
 
 RDEPENDS:${PN} += " \
-    qtquickcontrols-qmlplugins \
-    qtquickcontrols2-qmlplugins \
     qtsvg-plugins \
 "
index 79dac68..68a6807 100644 (file)
@@ -3,7 +3,7 @@ HOMEPAGE    = "https://git.automotivelinux.org/src/qtquickcontrols2-agl"
 LICENSE     = "MPL-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=815ca599c9df247a0c7f619bab123dad"
 
-DEPENDS = "qtquickcontrols2"
+DEPENDS = "qtdeclarative"
 
 PV = "1.0+git${SRCPV}"
 
@@ -12,12 +12,10 @@ SRCREV = "22b538aae1f69de5273f1e42a854cfab23a32b60"
 
 S = "${WORKDIR}/git"
 
-inherit qmake5
+inherit qt6-qmake
 
 FILES:${PN} += "${OE_QMAKE_PATH_QML}/AGL/Demo/Controls/*"
 
 RDEPENDS:${PN} += " \
-    qtquickcontrols-qmlplugins \
-    qtquickcontrols2-qmlplugins \
     qtsvg-plugins \
 "
diff --git a/recipes-demo/radio/files/0001-Migrate-to-Qt-6.patch b/recipes-demo/radio/files/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..245324c
--- /dev/null
@@ -0,0 +1,103 @@
+From a1a5be00d1e5ba0d857b9b83769a2c666c2be313 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:46:03 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ app/Radio.qml | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/app/Radio.qml b/app/Radio.qml
+index bd67c84..d2950af 100644
+--- a/app/Radio.qml
++++ b/app/Radio.qml
+@@ -60,7 +60,7 @@ ApplicationWindow {
+                 anchors.right: parent.right
+                 anchors.bottom: controls.top
+                 fillMode: Image.Stretch
+-                source: './images/HMI_Radio_Equalizer.svg'
++                source: 'qrc:/images/HMI_Radio_Equalizer.svg'
+             }
+             Item {
+                 id: controls
+@@ -83,11 +83,11 @@ ApplicationWindow {
+                         Row {
+                             spacing: 20
+                             Image {
+-                                source: './images/FM_Icons_FM.svg'
++                                source: 'qrc:/images/FM_Icons_FM.svg'
+                             }
+ //                            ToggleButton {
+-//                                offImage: './images/FM_Icons_FM.svg'
+-//                                onImage: './images/FM_Icons_AM.svg'
++//                                offImage: 'qrc:/images/FM_Icons_FM.svg'
++//                                onImage: 'qrc:/images/FM_Icons_AM.svg'
+ //                                onCheckedChanged: {
+ //                                    radio.band = checked ? radio.amBand : radio.fmBand
+ //                                    radio.frequency = radio.minFrequency
+@@ -146,7 +146,7 @@ ApplicationWindow {
+                         }
+                         ImageButton {
+-                            offImage: './images/AGL_MediaPlayer_BackArrow.svg'
++                            offImage: 'qrc:/images/AGL_MediaPlayer_BackArrow.svg'
+                             Timer {
+                                 running: parent.pressed
+                                 triggeredOnStart: true
+@@ -162,7 +162,7 @@ ApplicationWindow {
+                         }
+                         ImageButton {
+-                            offImage: './images/AGL_MediaPlayer_ForwardArrow.svg'
++                            offImage: 'qrc:/images/AGL_MediaPlayer_ForwardArrow.svg'
+                             Timer {
+                                 running: parent.pressed
+                                 triggeredOnStart: true
+@@ -181,7 +181,7 @@ ApplicationWindow {
+                         ImageButton {
+                             id: play
+-                            offImage: './images/AGL_MediaPlayer_Player_Play.svg'
++                            offImage: 'qrc:/images/AGL_MediaPlayer_Player_Play.svg'
+                             onClicked: {
+                                 radio.start()
+                             }
+@@ -190,7 +190,7 @@ ApplicationWindow {
+                                     when: radio.playing
+                                     PropertyChanges {
+                                         target: play
+-                                        offImage: './images/AGL_MediaPlayer_Player_Pause.svg'
++                                        offImage: 'qrc:/images/AGL_MediaPlayer_Player_Pause.svg'
+                                         onClicked: radio.stop()
+                                     }
+                                 }
+@@ -207,7 +207,7 @@ ApplicationWindow {
+                         ImageButton {
+                             id: scanBackwardBtn
+-                            offImage: './images/AGL_MediaPlayer_BackArrow.svg'
++                            offImage: 'qrc:/images/AGL_MediaPlayer_BackArrow.svg'
+                             states: [
+                                 State {
+                                     when: radio.playing
+@@ -224,7 +224,7 @@ ApplicationWindow {
+                         ImageButton {
+                             id: scanForwardBtn
+-                            offImage: './images/AGL_MediaPlayer_ForwardArrow.svg'
++                            offImage: 'qrc:/images/AGL_MediaPlayer_ForwardArrow.svg'
+                             states: [
+                                 State {
+                                     when: radio.playing
+@@ -284,9 +284,9 @@ ApplicationWindow {
+                             source: {
+                                 switch (model.modelData.band) {
+                                 case radio.fmBand:
+-                                    return './images/FM_Icons_FM.svg'
++                                    return 'qrc:/images/FM_Icons_FM.svg'
+                                 case radio.amBand:
+-                                    return './images/FM_Icons_AM.svg'
++                                    return 'qrc:/images/FM_Icons_AM.svg'
+                                 }
+                                 return null
+                             }
index c9d8ed7..06112a0 100644 (file)
@@ -6,7 +6,7 @@ SECTION     = "apps"
 LICENSE     = "Apache-2.0 & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 
-DEPENDS = "qtquickcontrols2 libqtappfw"
+DEPENDS = "qtdeclarative libqtappfw"
 
 PV = "1.0+git${SRCPV}"
 
@@ -14,12 +14,13 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/radio;protocol=https;bra
            file://presets-ALS.conf \
            file://presets-CES.conf \
            file://presets-FOSDEM.conf \
-"
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV  = "aef392d9df8bb5e4ada4b3f8f44016e8a839d154"
 
 S  = "${WORKDIR}/git"
 
-inherit qmake5 pkgconfig agl-app
+inherit qt6-qmake pkgconfig agl-app
 
 AGL_APP_NAME = "Radio"
 
diff --git a/recipes-demo/settings/settings/0001-Migrate-to-Qt-6.patch b/recipes-demo/settings/settings/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..a265ef2
--- /dev/null
@@ -0,0 +1,253 @@
+From 9fb7185321d509d1e3a56fb47c0c135a06e42480 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:47:24 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ app/SettingPage.qml            |  2 +-
+ app/SettingsLauncher.qml       |  2 +-
+ app/bluetooth/Bluetooth.qml    |  2 +-
+ app/datetime/DateEdit.qml      | 12 ++++++------
+ app/datetime/DateTime.qml      |  2 +-
+ app/datetime/EditSeparator.qml |  2 +-
+ app/datetime/TimeEdit.qml      | 12 ++++++------
+ app/main.cpp                   |  7 ++++---
+ app/version/Version.qml        |  2 +-
+ app/wifi/Wifi.qml              |  2 +-
+ app/wired/Wired.qml            |  2 +-
+ 11 files changed, 24 insertions(+), 23 deletions(-)
+
+diff --git a/app/SettingPage.qml b/app/SettingPage.qml
+index d5858e8..b0a587d 100644
+--- a/app/SettingPage.qml
++++ b/app/SettingPage.qml
+@@ -52,7 +52,7 @@ Page {
+         ImageButton {
+             id: back
+             anchors.bottom: parent.bottom
+-            offImage: '../images/HMI_Settings_X.svg'
++            offImage: 'qrc:/images/HMI_Settings_X.svg'
+             onClicked: root.done()
+         }
+     }
+diff --git a/app/SettingsLauncher.qml b/app/SettingsLauncher.qml
+index 01c5433..14059d0 100644
+--- a/app/SettingsLauncher.qml
++++ b/app/SettingsLauncher.qml
+@@ -69,7 +69,7 @@ Page {
+                 }
+             }
+             Image {
+-                source: '../images/HMI_Settings_DividingLine.svg'
++                source: 'qrc:/images/HMI_Settings_DividingLine.svg'
+                 anchors.horizontalCenter: parent.horizontalCenter
+                 anchors.top: parent.top
+                 visible: model.index > 0
+diff --git a/app/bluetooth/Bluetooth.qml b/app/bluetooth/Bluetooth.qml
+index c1b2aa2..d5178df 100644
+--- a/app/bluetooth/Bluetooth.qml
++++ b/app/bluetooth/Bluetooth.qml
+@@ -199,7 +199,7 @@ SettingPage {
+           anchors.left: parent.left
+           anchors.leftMargin: 80
+           height: 5
+-          source: (bluetooth.power === true && pairedListView.count) ? '../images/HMI_Settings_DividingLine.svg':''
++          source: (bluetooth.power === true && pairedListView.count) ? 'qrc:/images/HMI_Settings_DividingLine.svg':''
+       }
+       Text {
+           id: detectedlabel
+diff --git a/app/datetime/DateEdit.qml b/app/datetime/DateEdit.qml
+index abfcfa9..cac55e8 100644
+--- a/app/datetime/DateEdit.qml
++++ b/app/datetime/DateEdit.qml
+@@ -30,7 +30,7 @@ GridLayout {
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Up.svg'
+         onClicked: monthControl.currentIndex++
+     }
+     Tumbler {
+@@ -43,7 +43,7 @@ GridLayout {
+     }
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Down.svg'
+         onClicked: monthControl.currentIndex--
+     }
+@@ -53,7 +53,7 @@ GridLayout {
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Up.svg'
+         onClicked: dayControl.currentIndex++
+     }
+@@ -91,13 +91,13 @@ GridLayout {
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Down.svg'
+         onClicked: dayControl.currentIndex--
+     }
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Up.svg'
+         onClicked: yearControl.currentIndex++
+     }
+@@ -116,7 +116,7 @@ GridLayout {
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Down.svg'
+         onClicked: yearControl.currentIndex--
+     }
+ }
+diff --git a/app/datetime/DateTime.qml b/app/datetime/DateTime.qml
+index 06cbc8c..c58de69 100644
+--- a/app/datetime/DateTime.qml
++++ b/app/datetime/DateTime.qml
+@@ -31,7 +31,7 @@ SettingPage {
+         Label { text: 'Date'}
+         DateEdit {}
+         Image {
+-            source: '../images/HMI_Settings_DividingLine.svg'
++            source: 'qrc:/images/HMI_Settings_DividingLine.svg'
+         }
+         Label { text: 'Time'}
+         TimeEdit {}
+diff --git a/app/datetime/EditSeparator.qml b/app/datetime/EditSeparator.qml
+index e833b52..a58c809 100644
+--- a/app/datetime/EditSeparator.qml
++++ b/app/datetime/EditSeparator.qml
+@@ -30,7 +30,7 @@ ColumnLayout {
+             Layout.fillHeight: true
+             Layout.preferredHeight: 2
+             Layout.alignment: Layout.Center
+-            source: './images/HMI_Settings_TimeDate_Arrow_DividingLine.svg'
++            source: 'qrc:/images/HMI_Settings_TimeDate_Arrow_DividingLine.svg'
+         }
+     }
+     Item {
+diff --git a/app/datetime/TimeEdit.qml b/app/datetime/TimeEdit.qml
+index 69a049b..2db1403 100644
+--- a/app/datetime/TimeEdit.qml
++++ b/app/datetime/TimeEdit.qml
+@@ -30,7 +30,7 @@ GridLayout {
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Up.svg'
+         onClicked: hourControl.currentIndex++
+     }
+     Tumbler {
+@@ -40,7 +40,7 @@ GridLayout {
+     }
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Down.svg'
+         onClicked: hourControl.currentIndex--
+     }
+@@ -50,7 +50,7 @@ GridLayout {
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Up.svg'
+         onClicked: minutesControl.currentIndex++
+     }
+@@ -62,13 +62,13 @@ GridLayout {
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Down.svg'
+         onClicked: minutesControl.currentIndex--
+     }
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Up.svg'
+         onClicked: ampmControl.currentIndex++
+     }
+@@ -80,7 +80,7 @@ GridLayout {
+     ImageButton {
+         Layout.alignment: Layout.Center
+-        offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
++        offImage: 'qrc:/images/HMI_Settings_TimeDate_Arrow_Down.svg'
+         onClicked: ampmControl.currentIndex--
+     }
+ }
+diff --git a/app/main.cpp b/app/main.cpp
+index bf82588..35b4c0e 100644
+--- a/app/main.cpp
++++ b/app/main.cpp
+@@ -78,9 +78,10 @@ int main(int argc, char *argv[])
+     // active auto-connect that was in agl-service-bluetooth.  The latter is
+     // now dependent on this application being run until further re-architecting
+     // takes place.
+-    Network *network = new Network(true, context);
+-    network->power(true, QString("bluetooth"));
+-    context->setContextProperty("network", network);
++    // Network *network = new Network(true, context);
++    // network->power(true, QString("bluetooth"));
++    QObject *network = new QObject(context); // prevent crash
++    context->setContextProperty("network", network);    
+     engine.load(QUrl(QStringLiteral("qrc:/Settings.qml")));
+diff --git a/app/version/Version.qml b/app/version/Version.qml
+index 8d47ad5..1eaced7 100644
+--- a/app/version/Version.qml
++++ b/app/version/Version.qml
+@@ -40,7 +40,7 @@ SettingPage {
+             clip: true
+             Image {
+                 anchors.centerIn: parent
+-                source: './images/agl_slide_0.png'
++                source: 'qrc:/images/agl_slide_0.png'
+                 z: -1
+                 opacity: 0.5
+             }
+diff --git a/app/wifi/Wifi.qml b/app/wifi/Wifi.qml
+index ba9d89e..9331d73 100644
+--- a/app/wifi/Wifi.qml
++++ b/app/wifi/Wifi.qml
+@@ -106,7 +106,7 @@ SettingPage {
+             }
+             Image {
+-                source: '../images/HMI_Settings_DividingLine.svg'
++                source: 'qrc:/images/HMI_Settings_DividingLine.svg'
+                 anchors.horizontalCenter: parent.horizontalCenter
+                 anchors.top: parent.top
+                 anchors.topMargin: -15
+diff --git a/app/wired/Wired.qml b/app/wired/Wired.qml
+index 0a3e312..610d2c6 100644
+--- a/app/wired/Wired.qml
++++ b/app/wired/Wired.qml
+@@ -111,7 +111,7 @@ SettingPage {
+             }
+             Image {
+-                source: '../images/HMI_Settings_DividingLine.svg'
++                source: 'qrc:/images/HMI_Settings_DividingLine.svg'
+                 anchors.horizontalCenter: parent.horizontalCenter
+                 anchors.top: parent.top
+                 anchors.topMargin: -15
index c090ec7..43cbcb0 100644 (file)
@@ -9,26 +9,27 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 DEPENDS = " \
     qtbase \
     qtdeclarative \
-    qtquickcontrols2 \
     qtvirtualkeyboard \
     libqtappfw \
 "
 
 PV = "2.0+git${SRCPV}"
 
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/settings;protocol=https;branch=${AGL_BRANCH}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/settings;protocol=https;branch=${AGL_BRANCH} \
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV = "26dc6a8c8847248450bf902124b7cd867e027274"
 
 S  = "${WORKDIR}/git"
 
-inherit qmake5 pkgconfig agl-app
+inherit qt6-qmake pkgconfig agl-app
 
 AGL_APP_NAME = "Settings"
 
 RDEPENDS:${PN} += " \
     qtwayland \
     qtbase-qmlplugins \
-    qtgraphicaleffects-qmlplugins \
+    qt5compat \
     qtquickcontrols2-agl-style \
     libqtappfw \
 "
index 36c8375..8c66007 100644 (file)
@@ -14,12 +14,12 @@ S  = "${WORKDIR}/git"
 
 # build-time dependencies
 DEPENDS += " \
-    qtquickcontrols2 \
+    qtdeclarative \
     libqtappfw \
     qtmultimedia \
 "
 
-inherit qmake5 agl-app
+inherit qt6-qmake agl-app
 
 AGL_APP_NAME = "Video"
 
diff --git a/recipes-demo/window-management-client-grpc/window-management-client-grpc/0001-Migrate-to-Qt-6.patch b/recipes-demo/window-management-client-grpc/window-management-client-grpc/0001-Migrate-to-Qt-6.patch
new file mode 100644 (file)
index 0000000..3562b64
--- /dev/null
@@ -0,0 +1,74 @@
+From 75a141871c45b7e940fbdc9f0c97c43734789074 Mon Sep 17 00:00:00 2001
+From: Indivara Weerasuriya <1806262-indivara@users.noreply.git.qt.io>
+Date: Wed, 24 Jul 2024 09:57:30 +0900
+Subject: [PATCH] Migrate to Qt 6
+
+---
+ meson.build      |  2 +-
+ src/meson.build  | 10 +++++-----
+ src/qml/Main.qml |  2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index beb933d..634714f 100644
+--- a/meson.build
++++ b/meson.build
+@@ -26,5 +26,5 @@ project (
+   license: 'MIT/Expat',
+ )
+-qt5 = import('qt5')
++qt = import('qt6')
+ subdir('src')
+diff --git a/src/meson.build b/src/meson.build
+index b37e24f..5a59f13 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -1,7 +1,7 @@
+ pkgconfig = import('pkgconfig')
+ cpp = meson.get_compiler('cpp')
+-qt5_dep = dependency('qt5', modules: ['Qml', 'Quick', 'Gui'])
++qt_dep = dependency('qt6', modules: ['Qml', 'Quick', 'Gui'])
+ grpcpp_reflection_dep = cpp.find_library('grpc++_reflection')
+ protoc = find_program('protoc')
+@@ -31,7 +31,7 @@ grpc_deps = [
+ ]
+ window_mgnt_dep = [
+-    qt5_dep,
++    qt_dep,
+     grpc_deps,
+ ]
+@@ -40,14 +40,14 @@ window_mgnt_resources = [
+   'qml/qml.qrc'
+ ]
+-resource_files = qt5.compile_resources(sources: window_mgnt_resources)
++resource_files = qt.compile_resources(sources: window_mgnt_resources)
+ window_mgnt_src_headers = [
+   'AglShellGrpcClient.h',
+ ]
+-moc_files = qt5.compile_moc(headers: window_mgnt_src_headers,
+-                            dependencies: qt5_dep)
++moc_files = qt.compile_moc(headers: window_mgnt_src_headers,
++                            dependencies: qt_dep)
+ window_mgnt_src = [
+   'AglShellGrpcClient.cpp',
+   'main.cpp',
+diff --git a/src/qml/Main.qml b/src/qml/Main.qml
+index 151f3b8..5ddd2f7 100644
+--- a/src/qml/Main.qml
++++ b/src/qml/Main.qml
+@@ -10,6 +10,6 @@ Window {
+     Image {
+         anchors.fill: parent
+-        source: './images/AGL_HMI_Blue_Background_NoCar-01.png'
++        source: 'qrc:/images/AGL_HMI_Blue_Background_NoCar-01.png'
+     }
+ }
index 769a56f..c864be8 100644 (file)
@@ -6,13 +6,15 @@ SECTION     = "apps"
 LICENSE     = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
 
-DEPENDS = "qtbase qtdeclarative qtquickcontrols2 qtwayland \
+DEPENDS = "qtbase qtdeclarative qtwayland \
           qtwayland-native libqtappfw grpc grpc-native \
           "
 
 PV = "2.0+git${SRCPV}"
 
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/window-management-client-grpc.git;protocol=https;branch=${AGL_BRANCH}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/window-management-client-grpc.git;protocol=https;branch=${AGL_BRANCH} \
+           file://0001-Migrate-to-Qt-6.patch \
+           "
 SRCREV  = "cb7aa009ef9873967152e716fb01fecc30d401f7"
 
 S  = "${WORKDIR}/git"