From 0f9400c0e65342c582a9281b2e53f4c01438cacb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Han=C3=A7erli?= <burak.hancerli@qt.io> Date: Wed, 22 Jan 2025 14:39:48 +0000 Subject: [PATCH] * fix: sessionId is not empty even though there are no running projects * fix: logs are not forwarded to DS before the error popup is closed * add: qtcharts support (QDS-14435) --- src/backend/backend.cpp | 3 ++- src/backend/importdummy.qml | 2 ++ src/backend/logger.h | 4 ++-- src/backend/projectmanager.cpp | 27 ++++++++++++++++----------- src/backend/projectmanager.h | 4 ++-- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/backend/backend.cpp b/src/backend/backend.cpp index ccf9782..8952a78 100644 --- a/src/backend/backend.cpp +++ b/src/backend/backend.cpp @@ -64,7 +64,8 @@ Backend::Backend(QObject *parent) connect(&Logger::instance(), &Logger::logMessage, this, [this](QtMsgType type, QString &msg) { // if we have any active project running, then reroute // all the logs to the dsmanager with the last project sender id - if (m_projectManager && m_lastSessionId == m_projectManager->sessionId()) { + if (m_projectManager && !m_lastSessionId.isEmpty() + && m_lastSessionId == m_projectManager->sessionId()) { QMetaObject::invokeMethod(m_dsManager.get(), "sendProjectLogs", Qt::QueuedConnection, diff --git a/src/backend/importdummy.qml b/src/backend/importdummy.qml index 334e5ae..f6836ef 100644 --- a/src/backend/importdummy.qml +++ b/src/backend/importdummy.qml @@ -31,6 +31,8 @@ import QtQuick.Timeline.BlendTrees import QtQuickUltralite.Extras import QtQuickUltralite.Layers +import QtCharts + import FlowView import Qt.labs.folderlistmodel diff --git a/src/backend/logger.h b/src/backend/logger.h index 6635e8f..844f2dc 100644 --- a/src/backend/logger.h +++ b/src/backend/logger.h @@ -56,12 +56,12 @@ public: fprintf(stderr, "%s", qPrintable(newLog)); #endif + emit logMessage(type, newLog); + if (type == QtCriticalMsg || type == QtFatalMsg) { QMessageBox msgBox{QMessageBox::Critical, "Critical:", msg, QMessageBox::Ok}; msgBox.exec(); } - - emit logMessage(type, newLog); } private: diff --git a/src/backend/projectmanager.cpp b/src/backend/projectmanager.cpp index e1c01e7..e28f7aa 100644 --- a/src/backend/projectmanager.cpp +++ b/src/backend/projectmanager.cpp @@ -198,13 +198,8 @@ bool ProjectManager::isQt6Project(const QString &qmlProjectFileContent) return qt6ProjectMatch.hasMatch(); } -bool ProjectManager::runProject(const QByteArray &project, - const bool autoScaleProject, - const QString &sessionId) +bool ProjectManager::runProjectInternal(const QByteArray &project) { - m_autoScaleProject = autoScaleProject; - m_sessionId = sessionId; - const QString projectPath = unpackProject(project); qDebug() << "Project location: " << projectPath; @@ -312,6 +307,21 @@ bool ProjectManager::runProject(const QByteArray &project, return true; } +bool ProjectManager::runProject(const QByteArray &project, + const bool autoScaleProject, + const QString &sessionId) +{ + m_autoScaleProject = autoScaleProject; + m_sessionId = sessionId; + + const bool retVal = runProjectInternal(project); + + if (!retVal) + m_sessionId.clear(); + + return retVal; +} + void ProjectManager::orientateWindow(Qt::ScreenOrientation orientation) { if (!m_autoScaleProject) @@ -379,11 +389,6 @@ void ProjectManager::stopProject() m_quickWindow->close(); } -bool ProjectManager::isRunning() -{ - return !m_sessionId.isEmpty(); -} - QString ProjectManager::sessionId() const { return m_sessionId; diff --git a/src/backend/projectmanager.h b/src/backend/projectmanager.h index f434bbb..515ecdf 100644 --- a/src/backend/projectmanager.h +++ b/src/backend/projectmanager.h @@ -34,7 +34,6 @@ public: explicit ProjectManager(QObject *parent = nullptr); ~ProjectManager(); - bool isRunning(); QString sessionId() const; public slots: @@ -61,7 +60,8 @@ private: bool copyResourceToFs(const QString &sourcePath, const QString &targetPath); QString unpackProject(const QByteArray &project); - // project parsers + // project management + bool runProjectInternal(const QByteArray &project); QString findFile(const QString &dir, const QString &filter); QString readQmlProjectFile(const QString &qmlProjectFilePath); QString getMainQmlFile(const QString &projectPath, const QString &qmlProjectFileContent); -- GitLab