From fcf4fda2ca675246371850e8c1a61a9978499e5e Mon Sep 17 00:00:00 2001 From: dogmaphobic Date: Wed, 28 Jan 2015 09:27:00 -0500 Subject: [PATCH] WIP issue #1173. Adding default suffix (extension). While at it, added selected filter support and removed unit test assert about its use. --- src/QGCApplication.cc | 5 ++++- src/QGCFileDialog.cc | 15 +++++++++++++-- src/QGCFileDialog.h | 6 +++++- src/qgcunittest/UnitTest.cc | 9 ++++----- src/qgcunittest/UnitTest.h | 3 ++- 5 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index e9a1fb3ce..c5a35921b 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 b78a44145..3d0e72d28 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 b8ff76fa7..5cfd9c633 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 33ae73ef4..96ca351f1 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 93ff1679d..44e39ea6c 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); -- 2.22.0