From 35c61df64da37380a28091595d55f6461a43a02e Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 27 Dec 2016 14:26:31 -0800 Subject: [PATCH] MobileFileDialog bug fixes --- qgroundcontrol.qrc | 3 +- src/MissionEditor/MissionEditor.qml | 10 +- src/QGCMobileFileDialogController.cc | 13 +- src/QmlControls/ParameterEditor.qml | 7 +- src/QmlControls/QGCMobileFileDialog.qml | 121 ------------------ .../QGroundControl.Controls.qmldir | 3 +- 6 files changed, 21 insertions(+), 136 deletions(-) delete mode 100644 src/QmlControls/QGCMobileFileDialog.qml diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index 67666880e..7634f4901 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 c7b8bfd14..4ca41805d 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 42e09581b..f7e463015 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 050aa21a5..50c8d837f 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 99b48a41d..000000000 --- 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/QGroundControl.Controls.qmldir b/src/QmlControls/QGroundControl.Controls.qmldir index 8392f8abe..1450309a1 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 -- 2.22.0