mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
9e36968881
There is no native file dialog, access to the file system is highly restricted and will be much more so in Android 11. Let's not even start with this. This should never have been merged as it was. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
215 lines
5.4 KiB
QML
215 lines
5.4 KiB
QML
// SPDX-License-Identifier: GPL-2.0
|
|
import QtQuick 2.12
|
|
import QtQuick.Controls 2.12
|
|
import QtQuick.Controls 1.4
|
|
import QtQuick.Layouts 1.12
|
|
import QtQuick.Dialogs 1.3
|
|
import org.subsurfacedivelog.mobile 1.0
|
|
import org.kde.kirigami 2.4 as Kirigami
|
|
|
|
Kirigami.ScrollablePage {
|
|
title: qsTr("Export Divelog information")
|
|
|
|
property int selectedExport: ExportType.EX_DIVES_XML
|
|
|
|
FileDialog {
|
|
id: saveAsDialog
|
|
folder: shortcuts.documents
|
|
selectFolder: true
|
|
title: radioGroup.current.text
|
|
onAccepted: {
|
|
manager.exportToFile(selectedExport, fileUrls, anonymize.checked)
|
|
pageStack.pop()
|
|
close()
|
|
}
|
|
onRejected: {
|
|
pageStack.pop()
|
|
close()
|
|
}
|
|
}
|
|
|
|
Dialog {
|
|
id: uploadDialog
|
|
title: radioGroup.current.text
|
|
standardButtons: StandardButton.Apply | StandardButton.Cancel
|
|
|
|
GridLayout {
|
|
rowSpacing: Kirigami.Units.smallSpacing * 2
|
|
columnSpacing: Kirigami.Units.smallSpacing
|
|
columns: 2
|
|
|
|
Text {
|
|
id: textUserID
|
|
text: qsTr("User ID")
|
|
}
|
|
TextField {
|
|
id: fieldUserID
|
|
Layout.fillWidth: true
|
|
inputMethodHints: Qt.ImhNoAutoUppercase
|
|
}
|
|
Text {
|
|
id: textPassword
|
|
text: qsTr("Password:")
|
|
}
|
|
TextField {
|
|
id: fieldPassword
|
|
Layout.fillWidth: true
|
|
inputMethodHints: Qt.ImhSensitiveData |
|
|
Qt.ImhHiddenText |
|
|
Qt.ImhNoAutoUppercase
|
|
echoMode: TextInput.PasswordEchoOnEdit
|
|
}
|
|
CheckBox {
|
|
id: fieldPrivate
|
|
Layout.fillWidth: true
|
|
text: qsTr("Private")
|
|
}
|
|
ProgressBar {
|
|
id: progress
|
|
value: 0.0
|
|
}
|
|
Text {
|
|
id: statusText
|
|
Layout.fillWidth: true
|
|
Layout.columnSpan: 2
|
|
wrapMode: Text.Wrap
|
|
}
|
|
|
|
}
|
|
|
|
onApply: {
|
|
if (selectedExport === ExportType.EX_DIVELOGS_DE) {
|
|
if (fieldUserID.text !== PrefCloudStorage.divelogde_user) {
|
|
PrefCloudStorage.divelogde_user = fieldUserID.text
|
|
}
|
|
if (fieldPassword.text !== PrefCloudStorage.divelogde_pass)
|
|
PrefCloudStorage.divelogde_pass = fieldPassword.text
|
|
manager.exportToWEB(selectedExport, fieldUserID.text, fieldPassword.text, anonymize.checked)
|
|
} else {
|
|
if (fieldUserID.text !== PrefCloudStorage.diveshare_uid) {
|
|
PrefCloudStorage.diveshare_uid = fieldUserID.text
|
|
}
|
|
PrefCloudStorage.diveshare_private = fieldPrivate.checked
|
|
manager.exportToWEB(selectedExport, fieldUserID.text, fieldPassword.text, fieldPrivate.checked)
|
|
}
|
|
}
|
|
onRejected: {
|
|
pageStack.pop()
|
|
close()
|
|
}
|
|
|
|
Connections {
|
|
target: manager
|
|
onUploadFinish: {
|
|
if (success) {
|
|
pageStack.pop()
|
|
uploadDialog.close()
|
|
}
|
|
statusText.text = text
|
|
progress.value = 0
|
|
}
|
|
onUploadProgress: {
|
|
progress.value = percentage
|
|
}
|
|
}
|
|
}
|
|
|
|
// given that there is no native file dialog on Android and that access to
|
|
// the file system is increasingly restrictive in future versions, file based
|
|
// export really doesn't make sense on Android
|
|
|
|
ColumnLayout {
|
|
width: parent.width
|
|
spacing: 1
|
|
Layout.margins: 10
|
|
|
|
ExclusiveGroup { id: radioGroup }
|
|
RadioButton {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Export Subsurface XML")
|
|
visible: Qt.platform.os !== "android"
|
|
checked: true
|
|
exclusiveGroup: radioGroup
|
|
onClicked: {
|
|
selectedExport = ExportType.EX_DIVES_XML
|
|
explain.text = qsTr("Subsurface native XML format.")
|
|
}
|
|
}
|
|
RadioButton {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Export Subsurface dive sites XML")
|
|
visible: Qt.platform.os !== "android"
|
|
exclusiveGroup: radioGroup
|
|
onClicked: {
|
|
selectedExport = ExportType.EX_DIVE_SITES_XML
|
|
explain.text = qsTr("Subsurface dive sites native XML format.")
|
|
}
|
|
}
|
|
RadioButton {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Export UDDF")
|
|
visible: Qt.platform.os !== "android"
|
|
exclusiveGroup: radioGroup
|
|
onClicked: {
|
|
selectedExport = ExportType.EX_UDDF
|
|
explain.text = qsTr("Generic format that is used for data exchange between a variety of diving related programs.")
|
|
}
|
|
}
|
|
RadioButton {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Upload divelogs.de")
|
|
exclusiveGroup: radioGroup
|
|
onClicked: {
|
|
selectedExport = ExportType.EX_DIVELOGS_DE
|
|
explain.text = qsTr("Send the dive data to divelogs.de website.")
|
|
}
|
|
}
|
|
RadioButton {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Upload DiveShare")
|
|
exclusiveGroup: radioGroup
|
|
onClicked: {
|
|
selectedExport = ExportType.EX_DIVESHARE
|
|
explain.text = qsTr("Send the dive data to dive-share.appspot.com website.")
|
|
}
|
|
}
|
|
Text {
|
|
id: explain
|
|
Layout.fillWidth: true
|
|
wrapMode: Text.Wrap
|
|
}
|
|
CheckBox {
|
|
id: anonymize
|
|
Layout.fillWidth: true
|
|
text: qsTr("Anonymize")
|
|
}
|
|
TemplateButton {
|
|
text: qsTr("Next")
|
|
onClicked: {
|
|
if (selectedExport === ExportType.EX_DIVELOGS_DE) {
|
|
textUserID.visible = true
|
|
fieldUserID.visible = true
|
|
fieldUserID.text = PrefCloudStorage.divelogde_user
|
|
textPassword.visible = true
|
|
fieldPassword.visible = true
|
|
fieldPassword.text = PrefCloudStorage.divelogde_pass
|
|
anonymize.visible = false
|
|
statusText.text = ""
|
|
fieldPrivate.visible = false
|
|
uploadDialog.open()
|
|
} else if (selectedExport === ExportType.EX_DIVESHARE) {
|
|
textUserID.visible = true
|
|
fieldUserID.visible = true
|
|
fieldUserID.text = PrefCloudStorage.diveshare_uid
|
|
fieldPrivate.visible = true
|
|
fieldPrivate.checked = PrefCloudStorage.diveshare_private
|
|
textPassword.visible = false
|
|
fieldPassword.visible = false
|
|
uploadDialog.open()
|
|
} else if (Qt.platform.os !== "android") {
|
|
saveAsDialog.open()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|