2019-11-17 18:24:47 +00:00
|
|
|
// 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")
|
|
|
|
|
2019-12-06 21:38:07 +00:00
|
|
|
property int selectedExport: ExportType.EX_DIVES_XML
|
2019-11-17 18:24:47 +00:00
|
|
|
|
2019-11-19 11:29:32 +00:00
|
|
|
FileDialog {
|
|
|
|
id: saveAsDialog
|
|
|
|
folder: shortcuts.documents
|
|
|
|
selectFolder: true
|
|
|
|
title: radioGroup.current.text
|
|
|
|
onAccepted: {
|
|
|
|
manager.exportToFile(selectedExport, fileUrls, anonymize.checked)
|
2019-12-04 20:19:17 +00:00
|
|
|
pageStack.pop()
|
2019-11-19 11:29:32 +00:00
|
|
|
close()
|
|
|
|
}
|
|
|
|
onRejected: {
|
2019-12-04 20:19:17 +00:00
|
|
|
pageStack.pop()
|
2019-11-19 11:29:32 +00:00
|
|
|
close()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-19 16:52:20 +00:00
|
|
|
Dialog {
|
|
|
|
id: uploadDialog
|
|
|
|
title: radioGroup.current.text
|
|
|
|
standardButtons: StandardButton.Apply | StandardButton.Cancel
|
|
|
|
|
|
|
|
GridLayout {
|
|
|
|
rowSpacing: 10
|
|
|
|
columnSpacing: 10
|
|
|
|
columns: 2
|
|
|
|
|
|
|
|
Text {
|
2019-11-29 18:27:30 +00:00
|
|
|
id: textUserID
|
2019-11-19 16:52:20 +00:00
|
|
|
text: qsTr("User ID")
|
|
|
|
}
|
|
|
|
TextField {
|
|
|
|
id: fieldUserID
|
|
|
|
Layout.fillWidth: true
|
|
|
|
inputMethodHints: Qt.ImhNoAutoUppercase
|
|
|
|
}
|
|
|
|
Text {
|
2019-11-29 18:27:30 +00:00
|
|
|
id: textPassword
|
2019-11-19 16:52:20 +00:00
|
|
|
text: qsTr("Password:")
|
|
|
|
}
|
|
|
|
TextField {
|
|
|
|
id: fieldPassword
|
|
|
|
Layout.fillWidth: true
|
|
|
|
inputMethodHints: Qt.ImhSensitiveData |
|
|
|
|
Qt.ImhHiddenText |
|
|
|
|
Qt.ImhNoAutoUppercase
|
|
|
|
echoMode: TextInput.PasswordEchoOnEdit
|
|
|
|
}
|
|
|
|
ProgressBar {
|
|
|
|
indeterminate: true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onApply: {
|
2019-11-29 18:27:30 +00:00
|
|
|
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
|
|
|
|
} else {
|
|
|
|
// TO BE IMPLEMENTED
|
|
|
|
}
|
2019-11-19 16:52:20 +00:00
|
|
|
manager.exportToWEB(selectedExport, fieldUserID.text, fieldPassword.text, anonymize.checked)
|
|
|
|
close()
|
|
|
|
}
|
|
|
|
onRejected: {
|
|
|
|
close()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-11-17 18:24:47 +00:00
|
|
|
ColumnLayout {
|
|
|
|
width: parent.width
|
|
|
|
spacing: 1
|
|
|
|
Layout.margins: 10
|
|
|
|
|
|
|
|
ExclusiveGroup { id: radioGroup }
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Export Subsurface XML")
|
|
|
|
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")
|
|
|
|
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")
|
|
|
|
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
|
2019-11-22 18:40:11 +00:00
|
|
|
visible: false // TEMPORARY MEASURE, until non UI related WEB service is ready
|
2019-11-17 18:24:47 +00:00
|
|
|
text: qsTr("Upload DiveShare")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_DIVESHARE
|
|
|
|
explain.text = qsTr("Send the dive data to dive-share.appspot.com website.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Export CSV dive profile")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_CSV_DIVE_PROFILE
|
|
|
|
explain.text = qsTr("Comma separated values describing the dive profile.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Export CSV dive details")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_CSV_DETAILS
|
|
|
|
explain.text = qsTr("Comma separated values of the dive information. This includes most of the dive details but no profile information.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Export CSV profile data")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_CSV_PROFILE
|
|
|
|
explain.text = qsTr("Write profile data to a CSV file.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
2019-11-22 18:43:00 +00:00
|
|
|
visible: false // TEMPORARY MEASURE, until a non UI PNG generation is ready
|
2019-11-17 18:24:47 +00:00
|
|
|
text: qsTr("Export Dive profile")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_PROFILE_PNG
|
|
|
|
explain.text = qsTr("Write the profile image as PNG file.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Export Worldmap")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_WORLD_MAP
|
|
|
|
explain.text = qsTr("HTML export of the dive locations, visualized on a world map.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Export TeX")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_TEX
|
|
|
|
explain.text = qsTr("Write dive as TeX macros to file.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Export LaTeX")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_LATEX
|
|
|
|
explain.text = qsTr("Write dive as LaTeX macros to file.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RadioButton {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Export Image depths")
|
|
|
|
exclusiveGroup: radioGroup
|
|
|
|
onClicked: {
|
|
|
|
selectedExport = ExportType.EX_IMAGE_DEPTHS
|
|
|
|
explain.text = qsTr("Write depths of images to file.")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Text {
|
|
|
|
id: explain
|
|
|
|
Layout.fillWidth: true
|
|
|
|
wrapMode: Text.Wrap
|
|
|
|
}
|
|
|
|
CheckBox {
|
|
|
|
id: anonymize
|
|
|
|
Layout.fillWidth: true
|
|
|
|
text: qsTr("Anonymize")
|
|
|
|
}
|
|
|
|
SsrfButton {
|
|
|
|
text: qsTr("Next")
|
|
|
|
onClicked: {
|
2019-11-29 18:27:30 +00:00
|
|
|
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
|
2019-11-19 16:52:20 +00:00
|
|
|
uploadDialog.open()
|
2019-11-29 18:27:30 +00:00
|
|
|
} else if (selectedExport === ExportType.EX_DIVESHARE) {
|
|
|
|
// TO BE IMPLEMENTED
|
2019-11-19 11:29:32 +00:00
|
|
|
} else {
|
|
|
|
saveAsDialog.open()
|
|
|
|
}
|
2019-11-17 18:24:47 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|