Fix that it was not possible to save with arbitrary file extension

On Windows.

Task-number: QTCREATORBUG-15862
Change-Id: I5cc76662e4996bfa26eece09f2e30dc3ce873eb5
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2016-11-14 14:28:59 +01:00
parent 53d45de8a0
commit fc69e4ef54
4 changed files with 13 additions and 7 deletions

View File

@@ -59,7 +59,11 @@
#include <algorithm> #include <algorithm>
#include <functional> #include <functional>
static const char ALL_FILES_FILTER[] = QT_TRANSLATE_NOOP("Core", "All Files (*)"); #ifdef Q_OS_WIN
static struct {const char *source; const char *comment; } ALL_FILES_FILTER = QT_TRANSLATE_NOOP3("Core", "All Files (*.*)", "On Windows");
#else
static struct {const char *source; const char *comment; } ALL_FILES_FILTER = QT_TRANSLATE_NOOP3("Core", "All Files (*)", "On Linux/macOS");
#endif
using namespace Utils; using namespace Utils;
using namespace Utils::Internal; using namespace Utils::Internal;
@@ -348,8 +352,7 @@ QString MimeDatabase::allFiltersString(QString *allFilesFilter)
foreach (const QString &filter, uniqueFilters) foreach (const QString &filter, uniqueFilters)
filters.append(filter); filters.append(filter);
filters.sort(); filters.sort();
static const QString allFiles = const QString allFiles = allFilesFilterString();
QCoreApplication::translate("Core", ALL_FILES_FILTER);
if (allFilesFilter) if (allFilesFilter)
*allFilesFilter = allFiles; *allFilesFilter = allFiles;
@@ -359,6 +362,11 @@ QString MimeDatabase::allFiltersString(QString *allFilesFilter)
return filters.join(QLatin1String(";;")); return filters.join(QLatin1String(";;"));
} }
QString MimeDatabase::allFilesFilterString()
{
return QCoreApplication::translate("Core", ALL_FILES_FILTER.source, ALL_FILES_FILTER.comment);
}
QStringList MimeDatabase::allGlobPatterns() QStringList MimeDatabase::allGlobPatterns()
{ {
MimeDatabase mdb; MimeDatabase mdb;

View File

@@ -91,6 +91,7 @@ public:
// Qt Creator additions // Qt Creator additions
static void addMimeTypes(const QString &fileName); static void addMimeTypes(const QString &fileName);
static QString allFiltersString(QString *allFilesFilter = 0); static QString allFiltersString(QString *allFilesFilter = 0);
static QString allFilesFilterString();
static QStringList allGlobPatterns(); static QStringList allGlobPatterns();
static QMap<int, QList<Internal::MimeMagicRule> > magicRulesForMimeType(const MimeType &mimeType); // priority -> rules static QMap<int, QList<Internal::MimeMagicRule> > magicRulesForMimeType(const MimeType &mimeType); // priority -> rules
static void setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns); static void setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns);

View File

@@ -199,8 +199,6 @@ const char SETTINGS_DEFAULTTEXTENCODING[] = "General/DefaultFileEncoding";
const char SETTINGS_THEME[] = "Core/CreatorTheme"; const char SETTINGS_THEME[] = "Core/CreatorTheme";
const char DEFAULT_THEME[] = "flat"; const char DEFAULT_THEME[] = "flat";
const char ALL_FILES_FILTER[] = QT_TRANSLATE_NOOP("Core", "All Files (*)");
const char TR_CLEAR_MENU[] = QT_TRANSLATE_NOOP("Core", "Clear Menu"); const char TR_CLEAR_MENU[] = QT_TRANSLATE_NOOP("Core", "Clear Menu");
const char DEFAULT_BUILD_DIRECTORY[] = "../build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}"; const char DEFAULT_BUILD_DIRECTORY[] = "../build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}";

View File

@@ -696,8 +696,7 @@ QString DocumentManager::getSaveFileName(const QString &title, const QString &pa
// specified. Otherwise the suffix must be one available in the selected filter. If // specified. Otherwise the suffix must be one available in the selected filter. If
// the name already ends with such suffix nothing needs to be done. But if not, the // the name already ends with such suffix nothing needs to be done. But if not, the
// first one from the filter is appended. // first one from the filter is appended.
if (selectedFilter && *selectedFilter != QCoreApplication::translate( if (selectedFilter && *selectedFilter != MimeDatabase::allFilesFilterString()) {
"Core", Constants::ALL_FILES_FILTER)) {
// Mime database creates filter strings like this: Anything here (*.foo *.bar) // Mime database creates filter strings like this: Anything here (*.foo *.bar)
QRegExp regExp(QLatin1String(".*\\s+\\((.*)\\)$")); QRegExp regExp(QLatin1String(".*\\s+\\((.*)\\)$"));
const int index = regExp.lastIndexIn(*selectedFilter); const int index = regExp.lastIndexIn(*selectedFilter);