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 <miikka.heikkinen@qt.io>
This commit is contained in:
Thomas Hartmann
2025-03-14 15:13:24 +01:00
committed by Thomas Hartmann
parent 54470472d6
commit f7831fdad2

View File

@@ -489,6 +489,26 @@ void QmlDesignerPlugin::setupDesigner()
d->shortCutManager.updateUndoActions(currentDesignDocument()); 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() void QmlDesignerPlugin::showDesigner()
{ {
QTC_ASSERT(!d->documentManager.hasCurrentDesignDocument(), return); QTC_ASSERT(!d->documentManager.hasCurrentDesignDocument(), return);
@@ -497,20 +517,8 @@ void QmlDesignerPlugin::showDesigner()
d->mainWidget.initialize(); d->mainWidget.initialize();
const Utils::FilePath fileName = Core::EditorManager::currentEditor()->document()->filePath(); if (checkUiQMLNagScreen(Core::EditorManager::currentEditor()->document()->filePath()))
const QStringList allUiQmlFiles = allUiQmlFilesforCurrentProject(fileName); return;
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;
}
}
setupDesigner(); setupDesigner();