Browse Source

Merge pull request #8511 from DonLakeFlyer/MobileFileDialog

Mobile file dialog: Handle multiple extensions correctly
QGC4.4
Don Gagne 5 years ago committed by GitHub
parent
commit
b3ba76a085
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      src/MissionManager/UnitTest/MP 19.prj
  2. BIN
      src/MissionManager/UnitTest/MP 19.shp
  3. BIN
      src/MissionManager/UnitTest/MP 19.shx
  4. 1
      src/MissionManager/UnitTest/MP Bonus.prj
  5. BIN
      src/MissionManager/UnitTest/MP Bonus.shp
  6. BIN
      src/MissionManager/UnitTest/MP Bonus.shx
  7. 1
      src/MissionManager/UnitTest/Sarah's Farm.prj
  8. BIN
      src/MissionManager/UnitTest/Sarah's Farm.shp
  9. BIN
      src/MissionManager/UnitTest/Sarah's Farm.shx
  10. 12
      src/QmlControls/QGCFileDialog.qml
  11. 22
      src/QmlControls/QGCFileDialogController.cc
  12. 4
      src/QmlControls/QGCFileDialogController.h

1
src/MissionManager/UnitTest/MP 19.prj

@ -0,0 +1 @@ @@ -0,0 +1 @@
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]

BIN
src/MissionManager/UnitTest/MP 19.shp

Binary file not shown.

BIN
src/MissionManager/UnitTest/MP 19.shx

Binary file not shown.

1
src/MissionManager/UnitTest/MP Bonus.prj

@ -0,0 +1 @@ @@ -0,0 +1 @@
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]

BIN
src/MissionManager/UnitTest/MP Bonus.shp

Binary file not shown.

BIN
src/MissionManager/UnitTest/MP Bonus.shx

Binary file not shown.

1
src/MissionManager/UnitTest/Sarah's Farm.prj

@ -0,0 +1 @@ @@ -0,0 +1 @@
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]

BIN
src/MissionManager/UnitTest/Sarah's Farm.shp

Binary file not shown.

BIN
src/MissionManager/UnitTest/Sarah's Farm.shx

Binary file not shown.

12
src/QmlControls/QGCFileDialog.qml

@ -117,12 +117,12 @@ Item { @@ -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 { @@ -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 { @@ -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()
}

22
src/QmlControls/QGCFileDialogController.cc

@ -38,16 +38,24 @@ QStringList QGCFileDialogController::getFiles(const QString& directoryPath, cons @@ -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) @@ -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)

4
src/QmlControls/QGCFileDialogController.h

@ -27,10 +27,10 @@ public: @@ -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);

Loading…
Cancel
Save