summaryrefslogtreecommitdiffstats
path: root/recipes-demo
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-demo')
-rw-r--r--recipes-demo/cluster-dashboard/cluster-dashboard_git.bb11
-rw-r--r--recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb4
-rw-r--r--recipes-demo/dashboard/dashboard/0001-Migrate-to-Qt-6.patch72
-rw-r--r--recipes-demo/dashboard/dashboard_git.bb9
-rw-r--r--recipes-demo/homescreen/files/0001-Migrate-to-Qt-6.patch338
-rw-r--r--recipes-demo/homescreen/homescreen_git.bb9
-rw-r--r--recipes-demo/hvac/hvac/0001-Migrate-to-Qt-6.patch119
-rw-r--r--recipes-demo/hvac/hvac_git.bb8
-rw-r--r--recipes-demo/launcher/files/0001-Migrate-to-Qt-6.patch31
-rw-r--r--recipes-demo/launcher/files/launcher.service1
-rw-r--r--recipes-demo/launcher/launcher_git.bb6
-rw-r--r--recipes-demo/libqtappfw/libqtappfw/0001-Migrate-to-Qt-6.patch540
-rw-r--r--recipes-demo/libqtappfw/libqtappfw_git.bb6
-rw-r--r--recipes-demo/mediaplayer/mediaplayer/0001-Migrate-to-Qt-6.patch87
-rw-r--r--recipes-demo/mediaplayer/mediaplayer_git.bb7
-rw-r--r--recipes-demo/messaging/messaging/0001-Migrate-to-Qt-6.patch91
-rw-r--r--recipes-demo/messaging/messaging_git.bb8
-rw-r--r--recipes-demo/navigation/ondemandnavi/0001-Migrate-to-Qt-6.patch229
-rw-r--r--recipes-demo/navigation/ondemandnavi_git.bb11
-rw-r--r--recipes-demo/navigation/tbtnavi_git.bb4
-rw-r--r--recipes-demo/phone/phone/0001-Migrate-to-Qt-6.patch189
-rw-r--r--recipes-demo/phone/phone_git.bb8
-rw-r--r--recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style/0001-Migrate-to-Qt-6.patch71
-rw-r--r--recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style_git.bb10
-rw-r--r--recipes-demo/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb6
-rw-r--r--recipes-demo/radio/files/0001-Migrate-to-Qt-6.patch103
-rw-r--r--recipes-demo/radio/radio_git.bb7
-rw-r--r--recipes-demo/settings/settings/0001-Migrate-to-Qt-6.patch253
-rw-r--r--recipes-demo/settings/settings_git.bb9
-rw-r--r--recipes-demo/videoplayer/videoplayer_git.bb4
-rw-r--r--recipes-demo/window-management-client-grpc/window-management-client-grpc/0001-Migrate-to-Qt-6.patch74
-rw-r--r--recipes-demo/window-management-client-grpc/window-management-client-grpc_git.bb6
32 files changed, 2268 insertions, 63 deletions
diff --git a/recipes-demo/cluster-dashboard/cluster-dashboard_git.bb b/recipes-demo/cluster-dashboard/cluster-dashboard_git.bb
index ddf259ad0..c5a56f434 100644
--- a/recipes-demo/cluster-dashboard/cluster-dashboard_git.bb
+++ b/recipes-demo/cluster-dashboard/cluster-dashboard_git.bb
@@ -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 \
"
diff --git a/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb b/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb
index e146a00d4..596843fd6 100644
--- a/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb
+++ b/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb
@@ -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
index 000000000..b43008fdd
--- /dev/null
+++ b/recipes-demo/dashboard/dashboard/0001-Migrate-to-Qt-6.patch
@@ -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
diff --git a/recipes-demo/dashboard/dashboard_git.bb b/recipes-demo/dashboard/dashboard_git.bb
index c0ca244cc..c4385400b 100644
--- a/recipes-demo/dashboard/dashboard_git.bb
+++ b/recipes-demo/dashboard/dashboard_git.bb
@@ -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
index 000000000..89e992b4b
--- /dev/null
+++ b/recipes-demo/homescreen/files/0001-Migrate-to-Qt-6.patch
@@ -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')
diff --git a/recipes-demo/homescreen/homescreen_git.bb b/recipes-demo/homescreen/homescreen_git.bb
index 1f8e0c775..22f9adbd9 100644
--- a/recipes-demo/homescreen/homescreen_git.bb
+++ b/recipes-demo/homescreen/homescreen_git.bb
@@ -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
index 000000000..f19cabc4b
--- /dev/null
+++ b/recipes-demo/hvac/hvac/0001-Migrate-to-Qt-6.patch
@@ -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'
+ }
+ }
+ ]
diff --git a/recipes-demo/hvac/hvac_git.bb b/recipes-demo/hvac/hvac_git.bb
index 2ac6a69b1..e17490444 100644
--- a/recipes-demo/hvac/hvac_git.bb
+++ b/recipes-demo/hvac/hvac_git.bb
@@ -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
index 000000000..93f55fd85
--- /dev/null
+++ b/recipes-demo/launcher/files/0001-Migrate-to-Qt-6.patch
@@ -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 {
diff --git a/recipes-demo/launcher/files/launcher.service b/recipes-demo/launcher/files/launcher.service
index 00dfd9ad7..51c983cbd 100644
--- a/recipes-demo/launcher/files/launcher.service
+++ b/recipes-demo/launcher/files/launcher.service
@@ -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
diff --git a/recipes-demo/launcher/launcher_git.bb b/recipes-demo/launcher/launcher_git.bb
index c46a4a182..2f8c5182e 100644
--- a/recipes-demo/launcher/launcher_git.bb
+++ b/recipes-demo/launcher/launcher_git.bb
@@ -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
index 000000000..7c1d8d18b
--- /dev/null
+++ b/recipes-demo/libqtappfw/libqtappfw/0001-Migrate-to-Qt-6.patch
@@ -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')
diff --git a/recipes-demo/libqtappfw/libqtappfw_git.bb b/recipes-demo/libqtappfw/libqtappfw_git.bb
index f4e360723..7f4d9ddcd 100644
--- a/recipes-demo/libqtappfw/libqtappfw_git.bb
+++ b/recipes-demo/libqtappfw/libqtappfw_git.bb
@@ -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
index 000000000..fc7dcb234
--- /dev/null
+++ b/recipes-demo/mediaplayer/mediaplayer/0001-Migrate-to-Qt-6.patch
@@ -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'
+ }
+ }
+ }
diff --git a/recipes-demo/mediaplayer/mediaplayer_git.bb b/recipes-demo/mediaplayer/mediaplayer_git.bb
index 976dcc8dc..1f3b070ce 100644
--- a/recipes-demo/mediaplayer/mediaplayer_git.bb
+++ b/recipes-demo/mediaplayer/mediaplayer_git.bb
@@ -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
index 000000000..4a8b1ab13
--- /dev/null
+++ b/recipes-demo/messaging/messaging/0001-Migrate-to-Qt-6.patch
@@ -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)
+ }
+ }
diff --git a/recipes-demo/messaging/messaging_git.bb b/recipes-demo/messaging/messaging_git.bb
index 972e9b828..e3597b259 100644
--- a/recipes-demo/messaging/messaging_git.bb
+++ b/recipes-demo/messaging/messaging_git.bb
@@ -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
index 000000000..45a690c24
--- /dev/null
+++ b/recipes-demo/navigation/ondemandnavi/0001-Migrate-to-Qt-6.patch
@@ -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;
diff --git a/recipes-demo/navigation/ondemandnavi_git.bb b/recipes-demo/navigation/ondemandnavi_git.bb
index cf53b2bad..7785bcd1d 100644
--- a/recipes-demo/navigation/ondemandnavi_git.bb
+++ b/recipes-demo/navigation/ondemandnavi_git.bb
@@ -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 \
diff --git a/recipes-demo/navigation/tbtnavi_git.bb b/recipes-demo/navigation/tbtnavi_git.bb
index 3c6571b15..ec0c6f23a 100644
--- a/recipes-demo/navigation/tbtnavi_git.bb
+++ b/recipes-demo/navigation/tbtnavi_git.bb
@@ -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
index 000000000..5777727a7
--- /dev/null
+++ b/recipes-demo/phone/phone/0001-Migrate-to-Qt-6.patch
@@ -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)
+ }
+ }
diff --git a/recipes-demo/phone/phone_git.bb b/recipes-demo/phone/phone_git.bb
index 4c59bcbc3..37330ff79 100644
--- a/recipes-demo/phone/phone_git.bb
+++ b/recipes-demo/phone/phone_git.bb
@@ -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
index 000000000..f00cb1420
--- /dev/null
+++ b/recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style/0001-Migrate-to-Qt-6.patch
@@ -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
diff --git a/recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style_git.bb b/recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style_git.bb
index 49d2e8565..3ccee1210 100644
--- a/recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style_git.bb
+++ b/recipes-demo/qtquickcontrols2-agl-style/qtquickcontrols2-agl-style_git.bb
@@ -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 \
"
diff --git a/recipes-demo/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb b/recipes-demo/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb
index 79dac686f..68a68076e 100644
--- a/recipes-demo/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb
+++ b/recipes-demo/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb
@@ -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
index 000000000..245324c4b
--- /dev/null
+++ b/recipes-demo/radio/files/0001-Migrate-to-Qt-6.patch
@@ -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
+ }
diff --git a/recipes-demo/radio/radio_git.bb b/recipes-demo/radio/radio_git.bb
index c9d8ed7af..06112a046 100644
--- a/recipes-demo/radio/radio_git.bb
+++ b/recipes-demo/radio/radio_git.bb
@@ -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
index 000000000..a265ef24d
--- /dev/null
+++ b/recipes-demo/settings/settings/0001-Migrate-to-Qt-6.patch
@@ -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
diff --git a/recipes-demo/settings/settings_git.bb b/recipes-demo/settings/settings_git.bb
index c090ec7f8..43cbcb009 100644
--- a/recipes-demo/settings/settings_git.bb
+++ b/recipes-demo/settings/settings_git.bb
@@ -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 \
"
diff --git a/recipes-demo/videoplayer/videoplayer_git.bb b/recipes-demo/videoplayer/videoplayer_git.bb
index 36c837582..8c6600779 100644
--- a/recipes-demo/videoplayer/videoplayer_git.bb
+++ b/recipes-demo/videoplayer/videoplayer_git.bb
@@ -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
index 000000000..3562b64f6
--- /dev/null
+++ b/recipes-demo/window-management-client-grpc/window-management-client-grpc/0001-Migrate-to-Qt-6.patch
@@ -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'
+ }
+ }
diff --git a/recipes-demo/window-management-client-grpc/window-management-client-grpc_git.bb b/recipes-demo/window-management-client-grpc/window-management-client-grpc_git.bb
index 769a56f61..c864be897 100644
--- a/recipes-demo/window-management-client-grpc/window-management-client-grpc_git.bb
+++ b/recipes-demo/window-management-client-grpc/window-management-client-grpc_git.bb
@@ -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"