diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index e9a1fb3ce1c9f5fbf93f3a956f59c4ff8f20445f..c5a35921bde28c674c0fff65b3ef20f484c8bf34 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -476,10 +476,13 @@ void QGCApplication::criticalMessageBoxOnMainThread(const QString& title, const void QGCApplication::saveTempFlightDataLogOnMainThread(QString tempLogfile) { + QString defaultSuffix = "mavlink"; QString saveFilename = QGCFileDialog::getSaveFileName(MainWindow::instance(), tr("Select file to save Flight Data Log"), qgcApp()->mavlinkLogFilesLocation(), - tr("Flight Data Log (*.mavlink)")); + tr("Flight Data Log (*.mavlink)"), + 0,0, + &defaultSuffix); if (!saveFilename.isEmpty()) { QFile::copy(tempLogfile, saveFilename); } diff --git a/src/QGCFileDialog.cc b/src/QGCFileDialog.cc index b78a441450ba16f8b076640f3df693a315d455a5..3d0e72d28a69f21527e9eb9fb41df12bc2bde2c7 100644 --- a/src/QGCFileDialog.cc +++ b/src/QGCFileDialog.cc @@ -88,7 +88,8 @@ QString QGCFileDialog::getSaveFileName(QWidget* parent, const QString& dir, const QString& filter, QString* selectedFilter, - Options options) + Options options, + QString* defaultSuffix) { _validate(selectedFilter, options); @@ -98,7 +99,17 @@ QString QGCFileDialog::getSaveFileName(QWidget* parent, } else #endif { - return QFileDialog::getSaveFileName(parent, caption, dir, filter, selectedFilter, options); + QFileDialog dlg(parent, caption, dir, filter); + if (selectedFilter) + dlg.selectNameFilter(*selectedFilter); + if (options) + dlg.setOptions(options); + if (defaultSuffix) + dlg.setDefaultSuffix(*defaultSuffix); + if (dlg.exec()) + if (dlg.selectedFiles().count()) + return dlg.selectedFiles().first(); + return QString(""); } } diff --git a/src/QGCFileDialog.h b/src/QGCFileDialog.h index b8ff76fa7776b03feaa57bcef6699c714dea1507..5cfd9c633e80581eaed9a22b2d2d4696657a9c70 100644 --- a/src/QGCFileDialog.h +++ b/src/QGCFileDialog.h @@ -55,12 +55,16 @@ public: QString* selectedFilter = 0, Options options = 0); + /// @brief getSaveFileName with an extra (optional) argument to define the extension (suffix) to + /// be added if none is given by the user. If set, don't add the preceding period (i.e. + /// use "mavlink" instead of ".mavlink") static QString getSaveFileName(QWidget* parent = 0, const QString& caption = QString(), const QString& dir = QString(), const QString& filter = QString(), QString* selectedFilter = 0, - Options options = 0); + Options options = 0, + QString* defaultSuffix = 0); private slots: /// @brief The exec slot is private becasue when only want QGCFileDialog users to use the static methods. Otherwise it will break diff --git a/src/qgcunittest/UnitTest.cc b/src/qgcunittest/UnitTest.cc index 33ae73ef4f446f9c8a25f3cc306099c2eefc87c2..96ca351f119bbc7b85f293a15631576447334082 100644 --- a/src/qgcunittest/UnitTest.cc +++ b/src/qgcunittest/UnitTest.cc @@ -345,16 +345,15 @@ QString UnitTest::_getSaveFileName(QWidget* parent, const QString& dir, const QString& filter, QString* selectedFilter, - QFileDialog::Options options) + QFileDialog::Options options, + QString* defaultSuffix) { Q_UNUSED(parent); Q_UNUSED(caption); Q_UNUSED(dir); Q_UNUSED(filter); Q_UNUSED(options); - - // Support for selectedFilter is not yet implemented - Q_ASSERT(selectedFilter == NULL); - + Q_UNUSED(defaultSuffix); + return _fileDialogResponseSingle(getSaveFileName); } diff --git a/src/qgcunittest/UnitTest.h b/src/qgcunittest/UnitTest.h index 93ff1679d5ed626e14acff0b87e7eb3a8037d61d..44e39ea6c1cbedc1090a3f0143b93e8ae27c76d6 100644 --- a/src/qgcunittest/UnitTest.h +++ b/src/qgcunittest/UnitTest.h @@ -142,7 +142,8 @@ private: const QString& dir, const QString& filter, QString* selectedFilter, - QFileDialog::Options options); + QFileDialog::Options options, + QString* defaultSuffix); static QString _fileDialogResponseSingle(enum FileDialogType type);