From 882bffaeb064e44030832ba6880d4e814fd54a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Han=C3=A7erli?= <burak.hancerli@qt.io> Date: Fri, 7 Feb 2025 11:52:12 +0000 Subject: [PATCH] QDS-14696 Beta-8 dev --- cicd/stages/build.yml | 2 ++ src/CMakeLists.txt | 24 ++++++++++++++++++++---- src/backend/dsconnector/dsmanager.cpp | 3 +++ src/backend/main.cpp | 5 +++++ src/backend/projectmanager.cpp | 11 +++++++---- src/backend/projectmanager.h | 2 +- 6 files changed, 38 insertions(+), 9 deletions(-) diff --git a/cicd/stages/build.yml b/cicd/stages/build.yml index 73af01b..659a333 100644 --- a/cicd/stages/build.yml +++ b/cicd/stages/build.yml @@ -40,6 +40,7 @@ -DANDROID_OPENSSL_PATH=${QDS_CI_JOB_OPENSSL_PATH} \ -DGOOGLE_PLAY_APP_VERSION=${GOOGLE_PLAY_APP_VERSION} \ -DBUILD_EXAMPLES=OFF + - cat ${QDS_CI_JOB_BUILD_PATH}/src/dynamic_imports.qml - cmake --build ${QDS_CI_JOB_BUILD_PATH} --target aab .copy-and-sign-apks: ©-and-sign-apks @@ -118,4 +119,5 @@ build-desktop: -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=${QDS_CI_JOB_QT_PATH} \ -DBUILD_EXAMPLES=OFF + - cat ${QDS_CI_JOB_BUILD_PATH}/src/dynamic_imports.qml - cmake --build ${QDS_CI_JOB_BUILD_PATH} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 327a9b6..2188ab7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -46,12 +46,26 @@ foreach(imported_target IN LISTS imported_targets) _qt_qml_module_installed_plugin_target) if(qml_plugin_target) - message(STATUS - "Imported target: ${imported_target} -> ${qml_plugin_target}") + + message(STATUS + "Imported target: ${imported_target} -> ${qml_plugin_target}") # Get location of the plugin file. - get_target_property(imported_location "${qml_plugin_target}" IMPORTED_LOCATION) - if(NOT EXISTS "${imported_location}") + get_target_property(imported_location_default "${qml_plugin_target}" IMPORTED_LOCATION) + get_target_property(imported_location_release "${qml_plugin_target}" IMPORTED_LOCATION_RELEASE) + get_target_property(imported_location_min_size "${qml_plugin_target}" IMPORTED_LOCATION_MINSIZEREL) + get_target_property(imported_location_min_size_rel "${qml_plugin_target}" IMPORTED_LOCATION_RELWITHDEBINFO) + + if(imported_location_default) + set(imported_location "${imported_location_default}") + elseif(imported_location_release) + set(imported_location "${imported_location_release}") + elseif(imported_location_min_size) + set(imported_location "${imported_location_min_size}") + elseif(imported_location_min_size_rel) + set(imported_location "${imported_location_min_size_rel}") + else() + message(WARNING "No imported location found for ${qml_plugin_target}.") continue() endif() @@ -62,12 +76,14 @@ foreach(imported_target IN LISTS imported_targets) # to the plugin file. That's at least usually the case for Qt qml plugins. set(qmldir_path "${imported_location_dir}/qmldir") if(NOT EXISTS "${qmldir_path}") + message(WARNING "No qmldir file found for ${qml_plugin_target}.") continue() endif() # Read qmldir file contents. file(READ "${qmldir_path}" qmldir_content) if(qmldir_content STREQUAL "") + message(WARNING "Empty qmldir for ${qml_plugin_target}.") continue() endif() diff --git a/src/backend/dsconnector/dsmanager.cpp b/src/backend/dsconnector/dsmanager.cpp index 29d301f..1c1e602 100644 --- a/src/backend/dsconnector/dsmanager.cpp +++ b/src/backend/dsconnector/dsmanager.cpp @@ -39,7 +39,10 @@ void DesignStudioManager::init() QUdpSocket udpSocket; const int port = 53452; + +#ifdef Q_OS_ANDROID udpSocket.writeDatagram(datagram, QHostAddress::LocalHost, port); +#endif udpSocket.writeDatagram(datagram, QHostAddress::Broadcast, port); udpSocket.writeDatagram(datagram, QHostAddress::AnyIPv4, port); udpSocket.writeDatagram(datagram, QHostAddress::AnyIPv6, port); diff --git a/src/backend/main.cpp b/src/backend/main.cpp index 79bca5d..237cac5 100644 --- a/src/backend/main.cpp +++ b/src/backend/main.cpp @@ -48,7 +48,12 @@ int main(int argc, char *argv[]) view.engine()->rootContext()->setContextProperty("backend", &backend); view.setSource(QUrl(QStringLiteral("qrc:/qt/qml/AndroidUI/Main.qml"))); view.setResizeMode(QQuickView::SizeRootObjectToView); + +#ifdef Q_OS_ANDROID view.showMaximized(); +#else + view.show(); +#endif return app.exec(); } diff --git a/src/backend/projectmanager.cpp b/src/backend/projectmanager.cpp index e28f7aa..016e710 100644 --- a/src/backend/projectmanager.cpp +++ b/src/backend/projectmanager.cpp @@ -135,9 +135,12 @@ QString ProjectManager::unpackProject(const QByteArray &project) return resourcePath; } -QString ProjectManager::findFile(const QString &dir, const QString &filter) +QString ProjectManager::findFile(const QString &dir, const QString &filter, const bool recursive) { - QDirIterator it(dir, {filter}, QDir::Files); + QDirIterator it(dir, + {filter}, + QDir::Files, + recursive ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags); return it.next(); } @@ -203,7 +206,7 @@ bool ProjectManager::runProjectInternal(const QByteArray &project) const QString projectPath = unpackProject(project); qDebug() << "Project location: " << projectPath; - const QString qmlProjectFile = findFile(projectPath, "*.qmlproject"); + const QString qmlProjectFile = findFile(projectPath, "*.qmlproject", false); if (qmlProjectFile.isEmpty()) { qCritical() << "No \"*.qmlproject\" found in \"" << projectPath << "\"."; return false; @@ -217,7 +220,7 @@ bool ProjectManager::runProjectInternal(const QByteArray &project) if (mainQmlFilePath.isEmpty()) return false; - const QString qtquickcontrols2File = findFile(projectPath, "qtquickcontrols2.conf"); + const QString qtquickcontrols2File = findFile(projectPath, "qtquickcontrols2.conf", false); if (!qtquickcontrols2File.isEmpty()) { qputenv("QT_QUICK_CONTROLS_CONF", qtquickcontrols2File.toLatin1()); } diff --git a/src/backend/projectmanager.h b/src/backend/projectmanager.h index 515ecdf..ae12e3c 100644 --- a/src/backend/projectmanager.h +++ b/src/backend/projectmanager.h @@ -62,7 +62,7 @@ private: // project management bool runProjectInternal(const QByteArray &project); - QString findFile(const QString &dir, const QString &filter); + QString findFile(const QString &dir, const QString &filter, const bool recursive = true); QString readQmlProjectFile(const QString &qmlProjectFilePath); QString getMainQmlFile(const QString &projectPath, const QString &qmlProjectFileContent); QStringList getImportPaths(const QString &projectPath, const QString &qmlProjectFileContent); -- GitLab