summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2016-11-03 12:04:31 +0100
committerEike Ziller <eike.ziller@qt.io>2016-11-14 09:03:29 +0000
commitb5f587efb540cff5f51052a6e30be3139d8b930d (patch)
tree52890bf46dca3093e7a09b54070f6e6a9704b1d1
parentb93fe5a49e2025d637462decac22027a8f5ce8f7 (diff)
downloadqt-creator-b5f587efb540cff5f51052a6e30be3139d8b930d.tar.gz
Fix that save as from "file was removed" dialog didn't provide filters
Also removes some code duplication. Change-Id: I4f4616717f2eb37a1c73accdfa81e6d0dae6809f Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r--src/plugins/coreplugin/documentmanager.cpp54
-rw-r--r--src/plugins/coreplugin/documentmanager.h3
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp18
3 files changed, 27 insertions, 48 deletions
diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp
index 5a936731fa..ef5ab7b776 100644
--- a/src/plugins/coreplugin/documentmanager.cpp
+++ b/src/plugins/coreplugin/documentmanager.cpp
@@ -738,40 +738,36 @@ QString DocumentManager::getSaveFileNameWithExtension(const QString &title, cons
/*!
Asks the user for a new file name (\gui {Save File As}) for \a document.
*/
-QString DocumentManager::getSaveAsFileName(const IDocument *document, const QString &filter, QString *selectedFilter)
+QString DocumentManager::getSaveAsFileName(const IDocument *document)
{
- if (!document)
- return QLatin1String("");
- QString absoluteFilePath = document->filePath().toString();
- const QFileInfo fi(absoluteFilePath);
- QString path;
- QString fileName;
- if (absoluteFilePath.isEmpty()) {
- fileName = document->fallbackSaveAsFileName();
+ QTC_ASSERT(document, return QString());
+ Utils::MimeDatabase mdb;
+ const QString filter = Utils::MimeDatabase::allFiltersString();
+ const QString filePath = document->filePath().toString();
+ QString selectedFilter;
+ QString fileDialogPath = filePath;
+ if (!filePath.isEmpty()) {
+ selectedFilter = mdb.mimeTypeForFile(filePath).filterString();
+ } else {
+ const QString suggestedName = document->fallbackSaveAsFileName();
+ if (!suggestedName.isEmpty()) {
+ const QList<MimeType> types = mdb.mimeTypesForFileName(suggestedName);
+ if (!types.isEmpty())
+ selectedFilter = types.first().filterString();
+ }
const QString defaultPath = document->fallbackSaveAsPath();
if (!defaultPath.isEmpty())
- path = defaultPath;
- } else {
- path = fi.absolutePath();
- fileName = fi.fileName();
- }
-
- QString filterString;
- if (filter.isEmpty()) {
- Utils::MimeDatabase mdb;
- const Utils::MimeType &mt = mdb.mimeTypeForFile(fi);
- if (mt.isValid())
- filterString = mt.filterString();
- selectedFilter = &filterString;
- } else {
- filterString = filter;
+ fileDialogPath = defaultPath + (suggestedName.isEmpty()
+ ? QString()
+ : '/' + suggestedName);
}
+ if (selectedFilter.isEmpty())
+ selectedFilter = mdb.mimeTypeForName(document->mimeType()).filterString();
- absoluteFilePath = getSaveFileName(tr("Save File As"),
- path + QLatin1Char('/') + fileName,
- filterString,
- selectedFilter);
- return absoluteFilePath;
+ return getSaveFileName(tr("Save File As"),
+ fileDialogPath,
+ filter,
+ &selectedFilter);
}
/*!
diff --git a/src/plugins/coreplugin/documentmanager.h b/src/plugins/coreplugin/documentmanager.h
index bf8692f3cb..b259dfcaa5 100644
--- a/src/plugins/coreplugin/documentmanager.h
+++ b/src/plugins/coreplugin/documentmanager.h
@@ -92,8 +92,7 @@ public:
const QString &filter = QString(), QString *selectedFilter = 0);
static QString getSaveFileNameWithExtension(const QString &title, const QString &pathIn,
const QString &filter);
- static QString getSaveAsFileName(const IDocument *document, const QString &filter = QString(),
- QString *selectedFilter = 0);
+ static QString getSaveAsFileName(const IDocument *document);
static bool saveAllModifiedDocumentsSilently(bool *canceled = 0,
QList<IDocument *> *failedToClose = 0);
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index cd381ad4a2..679e963dc9 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -2100,24 +2100,8 @@ bool EditorManagerPrivate::saveDocumentAs(IDocument *document)
if (!document)
return false;
- Utils::MimeDatabase mdb;
- const QString filter = Utils::MimeDatabase::allFiltersString();
- QString selectedFilter;
- const QString filePath = document->filePath().toString();
- if (!filePath.isEmpty()) {
- selectedFilter = mdb.mimeTypeForFile(filePath).filterString();
- } else {
- const QString suggestedName = document->fallbackSaveAsFileName();
- if (!suggestedName.isEmpty()) {
- const QList<MimeType> types = mdb.mimeTypesForFileName(suggestedName);
- if (!types.isEmpty())
- selectedFilter = types.first().filterString();
- }
- }
- if (selectedFilter.isEmpty())
- selectedFilter = mdb.mimeTypeForName(document->mimeType()).filterString();
const QString &absoluteFilePath =
- DocumentManager::getSaveAsFileName(document, filter, &selectedFilter);
+ DocumentManager::getSaveAsFileName(document);
if (absoluteFilePath.isEmpty())
return false;