diff --git a/src/QmlControls/QGCFileDialog.qml b/src/QmlControls/QGCFileDialog.qml index 2e3bb9dabed2d6a763c40ee9fb62d4537848210a..64cb4aaa759520f6dd5ca41c3cecc0ea22bca3f0 100644 --- a/src/QmlControls/QGCFileDialog.qml +++ b/src/QmlControls/QGCFileDialog.qml @@ -1,6 +1,7 @@ import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.2 import QGroundControl 1.0 import QGroundControl.ScreenTools 1.0 @@ -21,12 +22,14 @@ Item { property bool selectExisting property bool selectFolder - property bool _openForLoad - property real _margins: ScreenTools.defaultFontPixelHeight / 2 + property bool _openForLoad: true + property real _margins: ScreenTools.defaultFontPixelHeight / 2 + property bool _mobile: ScreenTools.isMobile + function openForLoad() { _openForLoad = true - if (ScreenTools.isMobile && folder.length !== 0) { + if (_mobile && folder.length !== 0) { qgcView.showDialog(mobileFileOpenDialog, title, qgcView.showDialogDefaultWidth, StandardButton.Cancel) } else { fullFileDialog.open() @@ -35,7 +38,7 @@ Item { function openForSave() { _openForLoad = false - if (ScreenTools.isMobile && folder.length !== 0) { + if (_mobile && folder.length !== 0) { qgcView.showDialog(mobileFileSaveDialog, title, qgcView.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } else { fullFileDialog.open() @@ -76,30 +79,36 @@ Item { id: mobileFileOpenDialog QGCViewDialog { - Item { - anchors.margins: _margins - anchors.fill: parent - - QGCListView { - id: listView - anchors.fill: parent - spacing: _margins / 2 - orientation: ListView.Vertical - model: controller.getFiles(folder, fileExtension) - - delegate: QGCButton { - text: modelData - - onClicked: { - hideDialog() - _root.acceptedForLoad(controller.fullyQualifiedFilename(folder, modelData, fileExtension)) + QGCFlickable { + anchors.fill: parent + contentHeight: fileOpenColumn.height + + Column { + id: fileOpenColumn + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight / 2 + + Repeater { + id: fileList; + model: controller.getFiles(folder, fileExtension) + + QGCButton { + anchors.left: parent.left + anchors.right: parent.right + text: modelData + + onClicked: { + hideDialog() + _root.acceptedForLoad(controller.fullyQualifiedFilename(folder, modelData, fileExtension)) + } } } - } - QGCLabel { - text: qsTr("No files") - visible: listView.model.length == 0 + QGCLabel { + text: qsTr("No files") + visible: fileList.model.length == 0 + } } } } @@ -123,35 +132,69 @@ Item { hideDialog() } - Column { - anchors.left: parent.left - anchors.right: parent.right - spacing: ScreenTools.defaultFontPixelHeight + QGCFlickable { + anchors.fill: parent + contentHeight: fileSaveColumn.height - QGCLabel { - text: qsTr("File name:") - } - - QGCTextField { - id: filenameTextField - onTextChanged: replaceMessage.visible = false - } - - QGCLabel { + Column { + id: fileSaveColumn 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) - } + spacing: ScreenTools.defaultFontPixelHeight / 2 + + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelWidth + + QGCLabel { text: qsTr("New file name:") } + + QGCTextField { + id: filenameTextField + Layout.fillWidth: true + 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 + } + + SectionHeader { + anchors.left: parent.left + anchors.right: parent.right + text: qsTr("Save to existing file:") + } + + Repeater { + model: controller.getFiles(folder, fileExtension) + + QGCButton { + anchors.left: parent.left + anchors.right: parent.right + text: modelData + + onClicked: { + hideDialog() + _root.acceptedForSave(controller.fullyQualifiedFilename(folder, modelData, 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 } } }