diff --git a/src/MissionManager/UnitTest/MP 19.prj b/src/MissionManager/UnitTest/MP 19.prj new file mode 100644 index 0000000000000000000000000000000000000000..a30c00a55de19be195abf9e942f6cff93bf0a825 --- /dev/null +++ b/src/MissionManager/UnitTest/MP 19.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/src/MissionManager/UnitTest/MP 19.shp b/src/MissionManager/UnitTest/MP 19.shp new file mode 100644 index 0000000000000000000000000000000000000000..fdb99b041675a81a45765dfe1ba438d93eb3c9a0 Binary files /dev/null and b/src/MissionManager/UnitTest/MP 19.shp differ diff --git a/src/MissionManager/UnitTest/MP 19.shx b/src/MissionManager/UnitTest/MP 19.shx new file mode 100644 index 0000000000000000000000000000000000000000..1094b553681921f96961aedd3fb4ea2f6133a565 Binary files /dev/null and b/src/MissionManager/UnitTest/MP 19.shx differ diff --git a/src/MissionManager/UnitTest/MP Bonus.prj b/src/MissionManager/UnitTest/MP Bonus.prj new file mode 100644 index 0000000000000000000000000000000000000000..a30c00a55de19be195abf9e942f6cff93bf0a825 --- /dev/null +++ b/src/MissionManager/UnitTest/MP Bonus.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/src/MissionManager/UnitTest/MP Bonus.shp b/src/MissionManager/UnitTest/MP Bonus.shp new file mode 100644 index 0000000000000000000000000000000000000000..38c575f34f554a14b15debdb941e16a912c4f643 Binary files /dev/null and b/src/MissionManager/UnitTest/MP Bonus.shp differ diff --git a/src/MissionManager/UnitTest/MP Bonus.shx b/src/MissionManager/UnitTest/MP Bonus.shx new file mode 100644 index 0000000000000000000000000000000000000000..8dd9412638b55d9824540f3b3827aa39ce846af7 Binary files /dev/null and b/src/MissionManager/UnitTest/MP Bonus.shx differ diff --git a/src/MissionManager/UnitTest/Sarah's Farm.prj b/src/MissionManager/UnitTest/Sarah's Farm.prj new file mode 100644 index 0000000000000000000000000000000000000000..a30c00a55de19be195abf9e942f6cff93bf0a825 --- /dev/null +++ b/src/MissionManager/UnitTest/Sarah's Farm.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/src/MissionManager/UnitTest/Sarah's Farm.shp b/src/MissionManager/UnitTest/Sarah's Farm.shp new file mode 100644 index 0000000000000000000000000000000000000000..cb0985bb0409bdb744912ae39d1a69fa1fa9724c Binary files /dev/null and b/src/MissionManager/UnitTest/Sarah's Farm.shp differ diff --git a/src/MissionManager/UnitTest/Sarah's Farm.shx b/src/MissionManager/UnitTest/Sarah's Farm.shx new file mode 100644 index 0000000000000000000000000000000000000000..f82d459c668466a4675e6c53b45cb2b078e04ac8 Binary files /dev/null and b/src/MissionManager/UnitTest/Sarah's Farm.shx differ diff --git a/src/QmlControls/QGCFileDialog.qml b/src/QmlControls/QGCFileDialog.qml index fedb66e15db2108296d13f3d8602b48bfb9591cc..06fe48e4a274c56d19ec3585f8e4cde266f9f4ea 100644 --- a/src/QmlControls/QGCFileDialog.qml +++ b/src/QmlControls/QGCFileDialog.qml @@ -117,12 +117,12 @@ Item { onClicked: { hideDialog() - _root.acceptedForLoad(controller.fullyQualifiedFilename(folder, modelData, fileExtension)) + _root.acceptedForLoad(controller.fullyQualifiedFilename(folder, modelData, _rgExtensions)) } onHamburgerClicked: { highlight = true - hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData, fileExtension) + hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData, _rgExtensions) hamburgerMenu.popup() } @@ -162,12 +162,12 @@ Item { return } if (!replaceMessage.visible) { - if (controller.fileExists(controller.fullyQualifiedFilename(folder, filenameTextField.text, fileExtension))) { + if (controller.fileExists(controller.fullyQualifiedFilename(folder, filenameTextField.text, _rgExtensions))) { replaceMessage.visible = true return } } - _root.acceptedForSave(controller.fullyQualifiedFilename(folder, filenameTextField.text, fileExtension)) + _root.acceptedForSave(controller.fullyQualifiedFilename(folder, filenameTextField.text, _rgExtensions)) hideDialog() } @@ -230,12 +230,12 @@ Item { onClicked: { hideDialog() - _root.acceptedForSave(controller.fullyQualifiedFilename(folder, modelData, fileExtension)) + _root.acceptedForSave(controller.fullyQualifiedFilename(folder, modelData, _rgExtensions)) } onHamburgerClicked: { highlight = true - hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData, fileExtension) + hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData, _rgExtensions) hamburgerMenu.popup() } diff --git a/src/QmlControls/QGCFileDialogController.cc b/src/QmlControls/QGCFileDialogController.cc index f5528df80d52cf4ce90c49eab7340a35ce442059..375fbd32aa564b9186942d4f54367964a45c877e 100644 --- a/src/QmlControls/QGCFileDialogController.cc +++ b/src/QmlControls/QGCFileDialogController.cc @@ -38,16 +38,24 @@ QStringList QGCFileDialogController::getFiles(const QString& directoryPath, cons return files; } -QString QGCFileDialogController::filenameWithExtension(const QString& filename, const QString& fileExtension) +QString QGCFileDialogController::filenameWithExtension(const QString& filename, const QStringList& rgFileExtensions) { QString filenameWithExtension(filename); - QString correctExtension = QString(".%1").arg(fileExtension); - if (!filenameWithExtension.endsWith(correctExtension)) { - filenameWithExtension += correctExtension; + bool matchFound = false; + for (const QString& extension : rgFileExtensions) { + QString dotExtension = QString(".%1").arg(extension); + matchFound = filenameWithExtension.endsWith(dotExtension); + if (matchFound) { + break; + } } - return filenameWithExtension; + if (!matchFound) { + filenameWithExtension += rgFileExtensions[0]; + } + +return filenameWithExtension; } bool QGCFileDialogController::fileExists(const QString& filename) @@ -55,9 +63,9 @@ bool QGCFileDialogController::fileExists(const QString& filename) return QFile(filename).exists(); } -QString QGCFileDialogController::fullyQualifiedFilename(const QString& directoryPath, const QString& filename, const QString& fileExtension) +QString QGCFileDialogController::fullyQualifiedFilename(const QString& directoryPath, const QString& filename, const QStringList& rgFileExtensions) { - return directoryPath + QStringLiteral("/") + filenameWithExtension(filename, fileExtension); + return directoryPath + QStringLiteral("/") + filenameWithExtension(filename, rgFileExtensions); } void QGCFileDialogController::deleteFile(const QString& filename) diff --git a/src/QmlControls/QGCFileDialogController.h b/src/QmlControls/QGCFileDialogController.h index 209a483cd376c24544f91ad36091fda65cc0aaa6..4e80503a06cd1cbda317dfa7d03a70dfe1d8cb8e 100644 --- a/src/QmlControls/QGCFileDialogController.h +++ b/src/QmlControls/QGCFileDialogController.h @@ -27,10 +27,10 @@ public: Q_INVOKABLE QStringList getFiles(const QString& directoryPath, const QStringList& fileExtensions); /// Returns the specified file name with the extension added it needed - Q_INVOKABLE QString filenameWithExtension(const QString& filename, const QString& fileExtension); + Q_INVOKABLE QString filenameWithExtension(const QString& filename, const QStringList& rgFileExtensions); /// Returns the fully qualified file name from the specified parts - Q_INVOKABLE QString fullyQualifiedFilename(const QString& directoryPath, const QString& filename, const QString& fileExtension); + Q_INVOKABLE QString fullyQualifiedFilename(const QString& directoryPath, const QString& filename, const QStringList& rgFileExtensions); /// Check for file existence of specified fully qualified file name Q_INVOKABLE bool fileExists(const QString& filename);