Unverified Commit b3ba76a0 authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #8511 from DonLakeFlyer/MobileFileDialog

Mobile file dialog: Handle multiple extensions correctly
parents 4e446898 329e0ded
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
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
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
...@@ -117,12 +117,12 @@ Item { ...@@ -117,12 +117,12 @@ Item {
onClicked: { onClicked: {
hideDialog() hideDialog()
_root.acceptedForLoad(controller.fullyQualifiedFilename(folder, modelData, fileExtension)) _root.acceptedForLoad(controller.fullyQualifiedFilename(folder, modelData, _rgExtensions))
} }
onHamburgerClicked: { onHamburgerClicked: {
highlight = true highlight = true
hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData, fileExtension) hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData, _rgExtensions)
hamburgerMenu.popup() hamburgerMenu.popup()
} }
...@@ -162,12 +162,12 @@ Item { ...@@ -162,12 +162,12 @@ Item {
return return
} }
if (!replaceMessage.visible) { if (!replaceMessage.visible) {
if (controller.fileExists(controller.fullyQualifiedFilename(folder, filenameTextField.text, fileExtension))) { if (controller.fileExists(controller.fullyQualifiedFilename(folder, filenameTextField.text, _rgExtensions))) {
replaceMessage.visible = true replaceMessage.visible = true
return return
} }
} }
_root.acceptedForSave(controller.fullyQualifiedFilename(folder, filenameTextField.text, fileExtension)) _root.acceptedForSave(controller.fullyQualifiedFilename(folder, filenameTextField.text, _rgExtensions))
hideDialog() hideDialog()
} }
...@@ -230,12 +230,12 @@ Item { ...@@ -230,12 +230,12 @@ Item {
onClicked: { onClicked: {
hideDialog() hideDialog()
_root.acceptedForSave(controller.fullyQualifiedFilename(folder, modelData, fileExtension)) _root.acceptedForSave(controller.fullyQualifiedFilename(folder, modelData, _rgExtensions))
} }
onHamburgerClicked: { onHamburgerClicked: {
highlight = true highlight = true
hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData, fileExtension) hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData, _rgExtensions)
hamburgerMenu.popup() hamburgerMenu.popup()
} }
......
...@@ -38,16 +38,24 @@ QStringList QGCFileDialogController::getFiles(const QString& directoryPath, cons ...@@ -38,16 +38,24 @@ QStringList QGCFileDialogController::getFiles(const QString& directoryPath, cons
return files; return files;
} }
QString QGCFileDialogController::filenameWithExtension(const QString& filename, const QString& fileExtension) QString QGCFileDialogController::filenameWithExtension(const QString& filename, const QStringList& rgFileExtensions)
{ {
QString filenameWithExtension(filename); QString filenameWithExtension(filename);
QString correctExtension = QString(".%1").arg(fileExtension); bool matchFound = false;
if (!filenameWithExtension.endsWith(correctExtension)) { for (const QString& extension : rgFileExtensions) {
filenameWithExtension += correctExtension; 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) bool QGCFileDialogController::fileExists(const QString& filename)
...@@ -55,9 +63,9 @@ bool QGCFileDialogController::fileExists(const QString& filename) ...@@ -55,9 +63,9 @@ bool QGCFileDialogController::fileExists(const QString& filename)
return QFile(filename).exists(); 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) void QGCFileDialogController::deleteFile(const QString& filename)
......
...@@ -27,10 +27,10 @@ public: ...@@ -27,10 +27,10 @@ public:
Q_INVOKABLE QStringList getFiles(const QString& directoryPath, const QStringList& fileExtensions); Q_INVOKABLE QStringList getFiles(const QString& directoryPath, const QStringList& fileExtensions);
/// Returns the specified file name with the extension added it needed /// 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 /// 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 /// Check for file existence of specified fully qualified file name
Q_INVOKABLE bool fileExists(const QString& filename); Q_INVOKABLE bool fileExists(const QString& filename);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment