aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2023-02-17 18:30:25 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2023-02-20 13:34:11 +0000
commit3708c19324943f54a6ae3687f891114fc1ae9f54 (patch)
tree824c428bd6eda3a8217da23167774858b6267dc0
parent0ca46916bf05cd68d1258068047bcc0f8823987d (diff)
StudioWelcome: Open design mode if project is opened again
If an already opened project is opened again we swtich to design mode instead of edit mode and showing an error message. (cherry picked from commit 68a6b12b5a2ad4760d00048099c7e366df1649d2) Task-number: QDS-9183 Change-Id: I291e32a9824103a8f14f4fd618cc9211408ff2da Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--src/plugins/studiowelcome/studiowelcomeplugin.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp
index 677113221d..62af8cb96a 100644
--- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp
+++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp
@@ -4,6 +4,7 @@
#include "studiowelcomeplugin.h"
#include "examplecheckout.h"
+#include "projectexplorer/target.h"
#include "qdsnewdialog.h"
#include <app/app_version.h>
@@ -97,6 +98,20 @@ QPointer<QQuickView> s_viewWindow = nullptr;
QPointer<QQuickWidget> s_viewWidget = nullptr;
static StudioWelcomePlugin *s_pluginInstance = nullptr;
+static Utils::FilePath getMainUiFile()
+{
+ auto project = ProjectExplorer::SessionManager::startupProject();
+ if (!project)
+ return {};
+
+ if (!project->activeTarget())
+ return {};
+
+ auto qmlBuildSystem = qobject_cast<QmlProjectManager::QmlBuildSystem *>(
+ project->activeTarget()->buildSystem());
+ return qmlBuildSystem->mainUiFilePath();
+}
+
std::unique_ptr<QSettings> makeUserFeedbackSettings()
{
QStringList domain = QCoreApplication::organizationDomain().split(QLatin1Char('.'));
@@ -224,8 +239,15 @@ public:
m_blockOpenRecent = true;
const FilePath projectFile = FilePath::fromVariant(data(index(row, 0), ProjectModel::FilePathRole));
- if (projectFile.exists())
- ProjectExplorer::ProjectExplorerPlugin::openProjectWelcomePage(projectFile);
+ if (projectFile.exists()) {
+ const ProjectExplorerPlugin::OpenProjectResult result
+ = ProjectExplorer::ProjectExplorerPlugin::openProject(projectFile);
+ if (!result && !result.alreadyOpen().isEmpty()) {
+ const auto mainUiFile = getMainUiFile();
+ if (mainUiFile.exists())
+ Core::EditorManager::openEditor(mainUiFile, Utils::Id());
+ };
+ }
resetProjects();
}