diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index 6518ded97..4c957a27f 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -330,7 +330,8 @@ bool DatabaseTabWidget::saveDatabaseAs(Database* db) oldFileName = tr("New database").append(".kdbx"); } QString fileName = fileDialog()->getSaveFileName(this, tr("Save database as"), - oldFileName, tr("KeePass 2 Database").append(" (*.kdbx)")); + oldFileName, tr("KeePass 2 Database").append(" (*.kdbx)"), + Q_NULLPTR, 0, "kdbx"); if (!fileName.isEmpty()) { QFileInfo fileInfo(fileName); QString lockFilePath; @@ -450,7 +451,8 @@ void DatabaseTabWidget::exportToCsv() } QString fileName = fileDialog()->getSaveFileName(this, tr("Export database to CSV file"), - QString(), tr("CSV file").append(" (*.csv)")); + QString(), tr("CSV file").append(" (*.csv)"), + Q_NULLPTR, 0, "csv"); if (fileName.isEmpty()) { return; } diff --git a/src/gui/FileDialog.cpp b/src/gui/FileDialog.cpp index 25b508e50..e45c4ecec 100644 --- a/src/gui/FileDialog.cpp +++ b/src/gui/FileDialog.cpp @@ -53,7 +53,7 @@ QString FileDialog::getOpenFileName(QWidget* parent, const QString& caption, QSt QString FileDialog::getSaveFileName(QWidget* parent, const QString& caption, QString dir, const QString& filter, QString* selectedFilter, - QFileDialog::Options options) + QFileDialog::Options options, const QString& defaultExtension) { if (!m_nextFileName.isEmpty()) { QString result = m_nextFileName; @@ -68,6 +68,10 @@ QString FileDialog::getSaveFileName(QWidget* parent, const QString& caption, QSt QString result = QFileDialog::getSaveFileName(parent, caption, dir, filter, selectedFilter, options); + if (!defaultExtension.isEmpty() && !result.isEmpty() && !result.contains('.')) { + result.append(".").append(defaultExtension); + } + // on Mac OS X the focus is lost after closing the native dialog if (parent) { parent->activateWindow(); diff --git a/src/gui/FileDialog.h b/src/gui/FileDialog.h index 2cb042c5e..46c635322 100644 --- a/src/gui/FileDialog.h +++ b/src/gui/FileDialog.h @@ -30,7 +30,8 @@ public: QString* selectedFilter = Q_NULLPTR, QFileDialog::Options options = 0); QString getSaveFileName(QWidget* parent = Q_NULLPTR, const QString& caption = QString(), QString dir = QString(), const QString& filter = QString(), - QString* selectedFilter = Q_NULLPTR, QFileDialog::Options options = 0); + QString* selectedFilter = Q_NULLPTR, QFileDialog::Options options = 0, + const QString& defaultExtension = QString()); /** * Sets the result of the next get* method call.