diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc
index 67666880e016e32d2f144d97b061560e079c572f..7634f4901c17c75db7cd6dea683322cc3aa44204 100644
--- a/qgroundcontrol.qrc
+++ b/qgroundcontrol.qrc
@@ -67,7 +67,8 @@
src/QmlControls/QGCFlickableVerticalIndicator.qml
src/QmlControls/QGCLabel.qml
src/QmlControls/QGCListView.qml
- src/QmlControls/QGCMobileFileDialog.qml
+ src/QmlControls/QGCMobileFileOpenDialog.qml
+ src/QmlControls/QGCMobileFileSaveDialog.qml
src/QmlControls/QGCMovableItem.qml
src/QmlControls/QGCPipable.qml
src/QmlControls/QGCRadioButton.qml
diff --git a/src/MissionEditor/MissionEditor.qml b/src/MissionEditor/MissionEditor.qml
index c7b8bfd148080ea62407a835375b8b017b8f22ce..4ca41805d6dbb925ee3a6bb59b7f46084783a33a 100644
--- a/src/MissionEditor/MissionEditor.qml
+++ b/src/MissionEditor/MissionEditor.qml
@@ -207,7 +207,7 @@ QGCView {
function loadFromSelectedFile() {
if (ScreenTools.isMobile) {
- qgcView.showDialog(mobileFilePicker, qsTr("Select Mission File"), qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.Cancel)
+ qgcView.showDialog(mobileFilePicker, qsTr("Select Mission File"), qgcView.showDialogDefaultWidth, StandardButton.Cancel)
} else {
missionController.loadFromFilePicker()
fitMapViewportToMissionItems()
@@ -366,9 +366,8 @@ QGCView {
Component {
id: mobileFilePicker
- QGCMobileFileDialog {
- openDialog: true
- fileExtension: _syncDropDownController.fileExtension
+ QGCMobileFileOpenDialog {
+ fileExtension: _syncDropDownController.fileExtension
onFilenameReturned: {
_syncDropDownController.loadFromFile(filename)
_syncDropDownController.fitViewportToItems()
@@ -379,8 +378,7 @@ QGCView {
Component {
id: mobileFileSaver
- QGCMobileFileDialog {
- openDialog: false
+ QGCMobileFileSaveDialog {
fileExtension: _syncDropDownController.fileExtension
onFilenameReturned: _syncDropDownController.saveToFile(filename)
}
diff --git a/src/QGCMobileFileDialogController.cc b/src/QGCMobileFileDialogController.cc
index 42e09581b7ed7275bb82389f992d8ec6e9ee08dd..f7e4630156bf90f960bb679db36b0032b2984c18 100644
--- a/src/QGCMobileFileDialogController.cc
+++ b/src/QGCMobileFileDialogController.cc
@@ -33,6 +33,7 @@ QStringList QGCMobileFileDialogController::getFiles(const QString& fileExtension
QString QGCMobileFileDialogController::fullPath(const QString& filename, const QString& fileExtension)
{
+ qDebug() << "QGCMobileFileDialogController::fullPath" << filename << fileExtension;
QString saveLocation(_getSaveLocation());
if (saveLocation.isEmpty()) {
return filename;
@@ -52,6 +53,7 @@ QString QGCMobileFileDialogController::fullPath(const QString& filename, const Q
bool QGCMobileFileDialogController::fileExists(const QString& filename, const QString& fileExtension)
{
QFile file(fullPath(filename, fileExtension));
+ qDebug() << "QGCMobileFileDialogController::fileExists" << file.fileName();
return file.exists();
}
@@ -59,10 +61,15 @@ QString QGCMobileFileDialogController::_getSaveLocation(void)
{
QStringList docDirs = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);
if (docDirs.count() <= 0) {
- qCWarning(QGCMobileFileDialogControllerLog) << "No Documents location";
+ qCWarning(QGCMobileFileDialogControllerLog) << "No save location";
return QString();
}
- qCDebug(QGCMobileFileDialogControllerLog) << "Save directory" << docDirs.at(0);
+
+ QString saveDirectory = docDirs[0];
+ if (!QDir(saveDirectory).exists()) {
+ QDir().mkdir(saveDirectory);
+ }
+ qCDebug(QGCMobileFileDialogControllerLog) << "Save directory" << saveDirectory;
- return docDirs.at(0);
+ return saveDirectory;
}
diff --git a/src/QmlControls/ParameterEditor.qml b/src/QmlControls/ParameterEditor.qml
index 050aa21a54d1b8f21b1ec1c91e2fb5b9a62c4023..50c8d837fed47d139df1e3db45dafa79bfb6141f 100644
--- a/src/QmlControls/ParameterEditor.qml
+++ b/src/QmlControls/ParameterEditor.qml
@@ -96,7 +96,7 @@ QGCView {
text: qsTr("Load from file...")
onTriggered: {
if (ScreenTools.isMobile) {
- qgcView.showDialog(mobileFilePicker, qsTr("Select Parameter File"), qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.Cancel)
+ qgcView.showDialog(mobileFilePicker, qsTr("Select Parameter File"), qgcView.showDialogDefaultWidth, StandardButton.Cancel)
} else {
controller.loadFromFilePicker()
}
@@ -263,7 +263,7 @@ QGCView {
Component {
id: mobileFilePicker
- QGCMobileFileDialog {
+ QGCMobileFileOpenDialog {
fileExtension: QGroundControl.parameterFileExtension
onFilenameReturned: controller.loadFromFile(filename)
}
@@ -272,8 +272,7 @@ QGCView {
Component {
id: mobileFileSaver
- QGCMobileFileDialog {
- openDialog: false
+ QGCMobileFileSaveDialog {
fileExtension: QGroundControl.parameterFileExtension
onFilenameReturned: controller.saveToFile(filename)
}
diff --git a/src/QmlControls/QGCMobileFileDialog.qml b/src/QmlControls/QGCMobileFileDialog.qml
deleted file mode 100644
index 99b48a41df62d2ce633617c9a243b0e5fd06ceb0..0000000000000000000000000000000000000000
--- a/src/QmlControls/QGCMobileFileDialog.qml
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************************
- *
- * (c) 2009-2016 QGROUNDCONTROL PROJECT
- *
- * QGroundControl is licensed according to the terms in the file
- * COPYING.md in the root of the source code directory.
- *
- ****************************************************************************/
-
-
-import QtQuick 2.5
-import QtQuick.Controls 1.3
-import QtQuick.Dialogs 1.2
-
-import QGroundControl 1.0
-import QGroundControl.ScreenTools 1.0
-import QGroundControl.Controls 1.0
-import QGroundControl.Controllers 1.0
-import QGroundControl.Palette 1.0
-
-/// Simple file picker for mobile
-QGCViewDialog {
- property bool openDialog: true ///< true: Show file open dialog, false: show file save dialog
- property string fileExtension ///< File extension for file listing
-
- signal filenameReturned(string filename)
-
- readonly property real _margins: ScreenTools.defaultFontPixelHeight / 2
-
- function accept() {
- if (!openDialog) {
- console.log("filename", dialogLoader.item.filename)
- if (!dialogLoader.item.replaceMessageShown) {
- if (controller.fileExists(dialogLoader.item.filename, fileExtension)) {
- dialogLoader.item.replaceMessageShown = true
- return
- }
- }
- filenameReturned(controller.fullPath(dialogLoader.item.filename, fileExtension))
- }
- hideDialog()
- }
-
- QGCMobileFileDialogController { id: controller }
- QGCPalette { id: qgcPal; colorGroupEnabled: true }
-
- Loader {
- id: dialogLoader
- anchors.fill: parent
- sourceComponent: openDialog ? openDialogComponent : saveDialogComponent
- }
-
- Component {
- id: saveDialogComponent
-
- Column {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: ScreenTools.defaultFontPixelHeight
-
- property alias filename: filenameTextField.text
- property alias replaceMessageShown: replaceMessage.visible
-
- QGCLabel {
- text: qsTr("File name:")
- }
-
- QGCTextField {
- id: filenameTextField
- onTextChanged: replaceMessage.visible = false
- }
-
- QGCLabel {
- anchors.left: parent.left
- anchors.right: parent.right
- wrapMode: Text.WordWrap
- text: qsTr("File names must end with .%1 file extension. If missing it will be added.").arg(fileExtension)
- }
-
- QGCLabel {
- id: replaceMessage
- anchors.left: parent.left
- anchors.right: parent.right
- wrapMode: Text.WordWrap
- text: qsTr("The file %1 exists. Click Save again to replace it.").arg(filename)
- visible: false
- color: qgcPal.warningText
- }
- }
- }
-
- Component {
- id: openDialogComponent
-
- Item {
- anchors.margins: _margins
- anchors.fill: parent
-
- QGCListView {
- anchors.fill: parent
- spacing: _margins / 2
- orientation: ListView.Vertical
- model: controller.getFiles(fileExtension)
-
- delegate: QGCButton {
- text: modelData
-
- onClicked: {
- hideDialog()
- filenameReturned(controller.fullPath(modelData, fileExtension))
- }
- }
- }
-
- QGCLabel {
- text: qsTr("No files")
- visible: controller.getFiles(fileExtension).length == 0
- }
- }
- }
-}
diff --git a/src/QmlControls/QGCMobileFileOpenDialog.qml b/src/QmlControls/QGCMobileFileOpenDialog.qml
new file mode 100644
index 0000000000000000000000000000000000000000..6577840424d3f55fb1be77ad9225f8d134e65ebc
--- /dev/null
+++ b/src/QmlControls/QGCMobileFileOpenDialog.qml
@@ -0,0 +1,56 @@
+/****************************************************************************
+ *
+ * (c) 2009-2016 QGROUNDCONTROL PROJECT
+ *
+ * QGroundControl is licensed according to the terms in the file
+ * COPYING.md in the root of the source code directory.
+ *
+ ****************************************************************************/
+
+import QtQuick 2.5
+import QtQuick.Controls 1.3
+import QtQuick.Dialogs 1.2
+
+import QGroundControl 1.0
+import QGroundControl.ScreenTools 1.0
+import QGroundControl.Controls 1.0
+import QGroundControl.Controllers 1.0
+import QGroundControl.Palette 1.0
+
+/// Simple file open dialog for mobile
+QGCViewDialog {
+ property string fileExtension ///< File extension for file listing
+
+ signal filenameReturned(string filename)
+
+ readonly property real _margins: ScreenTools.defaultFontPixelHeight / 2
+
+ QGCMobileFileDialogController { id: controller }
+ QGCPalette { id: qgcPal; colorGroupEnabled: true }
+
+ Item {
+ anchors.margins: _margins
+ anchors.fill: parent
+
+ QGCListView {
+ anchors.fill: parent
+ spacing: _margins / 2
+ orientation: ListView.Vertical
+ model: controller.getFiles(fileExtension)
+
+ delegate: QGCButton {
+ text: modelData
+
+ onClicked: {
+ hideDialog()
+ filenameReturned(controller.fullPath(modelData, fileExtension))
+ }
+ }
+ }
+
+ QGCLabel {
+ text: qsTr("No files")
+ visible: controller.getFiles(fileExtension).length == 0
+ }
+ }
+}
diff --git a/src/QmlControls/QGCMobileFileSaveDialog.qml b/src/QmlControls/QGCMobileFileSaveDialog.qml
new file mode 100644
index 0000000000000000000000000000000000000000..06abfda2bf900c854ece0b03439e7ce7e68a8134
--- /dev/null
+++ b/src/QmlControls/QGCMobileFileSaveDialog.qml
@@ -0,0 +1,79 @@
+/****************************************************************************
+ *
+ * (c) 2009-2016 QGROUNDCONTROL PROJECT
+ *
+ * QGroundControl is licensed according to the terms in the file
+ * COPYING.md in the root of the source code directory.
+ *
+ ****************************************************************************/
+
+
+import QtQuick 2.5
+import QtQuick.Controls 1.3
+import QtQuick.Dialogs 1.2
+
+import QGroundControl 1.0
+import QGroundControl.ScreenTools 1.0
+import QGroundControl.Controls 1.0
+import QGroundControl.Controllers 1.0
+import QGroundControl.Palette 1.0
+
+/// Simple file picker for mobile
+QGCViewDialog {
+ property string fileExtension ///< File extension for file listing
+
+ signal filenameReturned(string filename)
+
+ readonly property real _margins: ScreenTools.defaultFontPixelHeight / 2
+
+ function accept() {
+ if (filenameTextField.text == "") {
+ return
+ }
+ if (!replaceMessage.visible) {
+ if (controller.fileExists(filenameTextField.text, fileExtension)) {
+ console.log("File exists")
+ replaceMessage.visible = true
+ return
+ }
+ }
+ filenameReturned(controller.fullPath(filenameTextField.text, fileExtension))
+ hideDialog()
+ }
+
+ QGCMobileFileDialogController { id: controller }
+ QGCPalette { id: qgcPal; colorGroupEnabled: true }
+
+ Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ spacing: ScreenTools.defaultFontPixelHeight
+
+ QGCLabel {
+ text: qsTr("File name:")
+ }
+
+ QGCTextField {
+ id: filenameTextField
+ onTextChanged: replaceMessage.visible = false
+ }
+
+ QGCLabel {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ wrapMode: Text.WordWrap
+ text: qsTr("File names must end with .%1 file extension. If missing it will be added.").arg(fileExtension)
+ }
+
+ QGCLabel {
+ id: replaceMessage
+ anchors.left: parent.left
+ anchors.right: parent.right
+ wrapMode: Text.WordWrap
+ text: qsTr("The file %1 exists. Click Save again to replace it.").arg(filenameTextField.text)
+ visible: false
+ color: qgcPal.warningText
+ }
+ }
+}
+
diff --git a/src/QmlControls/QGroundControl.Controls.qmldir b/src/QmlControls/QGroundControl.Controls.qmldir
index 8392f8abe5010b2b5f8d96a5a0b6bd39a004d084..1450309a1c978014538804a98a21bc4caf55d87d 100644
--- a/src/QmlControls/QGroundControl.Controls.qmldir
+++ b/src/QmlControls/QGroundControl.Controls.qmldir
@@ -28,7 +28,8 @@ QGCComboBox 1.0 QGCComboBox.qml
QGCFlickable 1.0 QGCFlickable.qml
QGCLabel 1.0 QGCLabel.qml
QGCListView 1.0 QGCListView.qml
-QGCMobileFileDialog 1.0 QGCMobileFileDialog.qml
+QGCMobileFileOpenDialog 1.0 QGCMobileFileOpenDialog.qml
+QGCMobileFileSaveDialog 1.0 QGCMobileFileSaveDialog.qml
QGCMovableItem 1.0 QGCMovableItem.qml
QGCPipable 1.0 QGCPipable.qml
QGCRadioButton 1.0 QGCRadioButton.qml