diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp index 15fb2edfdc1..43ddad0ceef 100644 --- a/src/plugins/coreplugin/documentmanager.cpp +++ b/src/plugins/coreplugin/documentmanager.cpp @@ -199,6 +199,7 @@ public: IDocument *m_blockedIDocument = nullptr; QAction *m_saveAllAction; + QString fileDialogFilterOverride; }; static DocumentManager *m_instance; @@ -770,6 +771,16 @@ bool DocumentManager::saveDocument(IDocument *document, return ret; } +QString DocumentManager::fileDialogFilter(QString *selectedFilter) +{ + if (!d->fileDialogFilterOverride.isEmpty()) { + if (selectedFilter) + *selectedFilter = d->fileDialogFilterOverride.split(";;").first(); + return d->fileDialogFilterOverride; + } + return allDocumentFactoryFiltersString(selectedFilter); +} + QString DocumentManager::allDocumentFactoryFiltersString(QString *allFilesFilter = nullptr) { QSet uniqueFilters; @@ -1531,6 +1542,11 @@ void DocumentManager::notifyFilesChangedInternally(const FilePaths &filePaths) emit m_instance->filesChangedInternally(filePaths); } +void DocumentManager::setFileDialogFilter(const QString &filter) +{ + d->fileDialogFilterOverride = filter; +} + void DocumentManager::registerSaveAllAction() { d->registerSaveAllAction(); diff --git a/src/plugins/coreplugin/documentmanager.h b/src/plugins/coreplugin/documentmanager.h index 01fa660272c..46667cf8ded 100644 --- a/src/plugins/coreplugin/documentmanager.h +++ b/src/plugins/coreplugin/documentmanager.h @@ -142,6 +142,10 @@ public: lead to any editors to reload or any other editor manager actions. */ static void notifyFilesChangedInternally(const Utils::FilePaths &filePaths); + static void setFileDialogFilter(const QString &filter); + + static QString fileDialogFilter(QString *selectedFilter = nullptr); + signals: /* Used to notify e.g. the code model to update the given files. Does *not* lead to any editors to reload or any other editor manager actions. */ diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index e328bd50435..150d5d957b2 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -3231,7 +3231,7 @@ void EditorManager::addCloseEditorListener(const std::function FilePaths EditorManager::getOpenFilePaths() { QString selectedFilter; - const QString &fileFilters = DocumentManager::allDocumentFactoryFiltersString(&selectedFilter); + const QString &fileFilters = DocumentManager::fileDialogFilter(&selectedFilter); return DocumentManager::getOpenFileNames(fileFilters, {}, &selectedFilter); } diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index dfb554c2974..d808a435e95 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -52,11 +53,12 @@ #include #include +#include #include #include +#include #include #include -#include #include #include @@ -605,6 +607,12 @@ void StudioWelcomePlugin::extensionsInitialized() Core::ICore::resourcePath("qmldesigner/studio_templates")); Core::ICore::setNewDialogFactory([](QWidget *parent) { return new QdsNewDialog(parent); }); + + const QString filters = QString("Project (*.qmlproject);;UI file (*.ui.qml);;QML file " + "(*.qml);;JavaScript file (*.js);;%1") + .arg(Utils::allFilesFilterString()); + + Core::DocumentManager::setFileDialogFilter(filters); } if (showSplashScreen()) {