From f7831fdad2f1230d0db66429773be924c4ba1adf Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 14 Mar 2025 15:13:24 +0100 Subject: [PATCH] QmlDesigner: Show ui.qml reminder only once Show the dialog to open ui.qml files only once if the user decides to cancel. Moving this into a function. Task-number: QDS-9470 Change-Id: I569aa063594de0012e30cdfe3c5f1f7096df7622 Reviewed-by: Miikka Heikkinen --- src/plugins/qmldesigner/qmldesignerplugin.cpp | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index f1a15091036..fdf8b9e94d9 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -489,6 +489,26 @@ void QmlDesignerPlugin::setupDesigner() d->shortCutManager.updateUndoActions(currentDesignDocument()); } +static bool checkUiQMLNagScreen(const Utils::FilePath &fileName) +{ + const QStringList allUiQmlFiles = allUiQmlFilesforCurrentProject(fileName); + static bool doOnce = true; + if (doOnce && warningsForQmlFilesInsteadOfUiQmlEnabled() && !fileName.endsWith(".ui.qml") + && !allUiQmlFiles.isEmpty()) { + OpenUiQmlFileDialog dialog(Core::ICore::dialogParent()); + dialog.setUiQmlFiles(projectPath(fileName), allUiQmlFiles); + dialog.exec(); + if (dialog.uiFileOpened()) { + Core::ModeManager::activateMode(Core::Constants::MODE_EDIT); + Core::EditorManager::openEditorAt({Utils::FilePath::fromString(dialog.uiQmlFile()), 0, 0}); + return true; + } + doOnce = false; + } + + return false; +} + void QmlDesignerPlugin::showDesigner() { QTC_ASSERT(!d->documentManager.hasCurrentDesignDocument(), return); @@ -497,20 +517,8 @@ void QmlDesignerPlugin::showDesigner() d->mainWidget.initialize(); - const Utils::FilePath fileName = Core::EditorManager::currentEditor()->document()->filePath(); - const QStringList allUiQmlFiles = allUiQmlFilesforCurrentProject(fileName); - if (warningsForQmlFilesInsteadOfUiQmlEnabled() && !fileName.endsWith(".ui.qml") - && !allUiQmlFiles.isEmpty()) { - OpenUiQmlFileDialog dialog(&d->mainWidget); - dialog.setUiQmlFiles(projectPath(fileName), allUiQmlFiles); - dialog.exec(); - if (dialog.uiFileOpened()) { - Core::ModeManager::activateMode(Core::Constants::MODE_EDIT); - Core::EditorManager::openEditorAt( - {Utils::FilePath::fromString(dialog.uiQmlFile()), 0, 0}); - return; - } - } + if (checkUiQMLNagScreen(Core::EditorManager::currentEditor()->document()->filePath())) + return; setupDesigner();