summaryrefslogblamecommitdiffstats
path: root/mobile-widgets/qml/Export.qml
blob: 4f89334e3a51a956d2f69e50143c29c0a3c348d5 (plain) (tree)
1
2
3
4
5
6
7
8
9







                                       
              
                                                 
                                                            
 


                                           
                                                                                         
                                       

                               
                                       


                               
                    
                                



















































                                                                           
                 














                                                                                                                                       
                                 
                         
                 



                                               
                 

                                         
                                                       
                                 





                                                           
         


                                                                                     
                      
                                   
                                   
                                                           
 
                                     
                                                           
                                                             
                                     



                                                                                    
                                     
                                                                      
                                                             



                                                                                               
                                     
                                                 
                                                             



                                                                                                                                                  
                                     
                                                        



                                                                                                 
                                     
                                                      



                                                                                                            




                                                       


                                              




                                                       


                                               
                                
                                          






                                                                                            
                                                            
                                                                       
                                                                                        



                                                                                                 
                                                                       
                                                                    
                                                                   
                                                                          
                                                           


                         
// 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

TemplatePage {
	title: qsTr("Export Divelog information")

	property int selectedExport: ExportType.EX_DIVES_XML

	FileDialog {
		id: saveAsDialog
		folder: shortcuts.documents
		selectFolder: true
		onAccepted: {
			manager.exportToFile(selectedExport, fileUrls, anonymize.checked)
			pageStack.pop()
			close()
		}
		onRejected: {
			pageStack.pop()
			close()
		}
	}

	GridLayout {
		id: uploadDialog
		visible: false
		anchors {
			top: parent.top
			left: parent.left
			right: parent.right
			margins: Kirigami.Units.gridUnit / 2
		}
		rowSpacing: Kirigami.Units.smallSpacing * 2
		columnSpacing: Kirigami.Units.smallSpacing
		columns: 3
		TemplateLabel {
			text: qsTr("Export credentials")
			Layout.columnSpan: 3
		}
		TemplateLabel {
			id: textUserID
			text: qsTr("User ID")
		}
		TemplateTextField {
			id: fieldUserID
			Layout.columnSpan: 2
			Layout.fillWidth: true
			inputMethodHints: Qt.ImhNoAutoUppercase
		}
		TemplateLabel {
			id: textPassword
			text: qsTr("Password:")
		}
		TemplateTextField {
			id: fieldPassword
			Layout.columnSpan: 2
			Layout.fillWidth: true
			inputMethodHints: Qt.ImhSensitiveData |
					  Qt.ImhHiddenText |
					  Qt.ImhNoAutoUppercase
			echoMode: TextInput.PasswordEchoOnEdit
		}
		TemplateCheckBox {
			id: fieldPrivate
			visible: selectedExport === ExportType.EX_DIVESHARE
			Layout.fillWidth: true
			text: qsTr("Private")
		}
		ProgressBar {
			id: progress
			value: 0.0
			Layout.columnSpan: 2
		}
		TemplateLabel {
			id: statusText
			Layout.fillWidth: true
			Layout.columnSpan: 3
			wrapMode: Text.Wrap
		}

		TemplateButton {
			text: qsTr("Export")
			onClicked: {
				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)
				}
			}
		}
		TemplateButton {
			text: qsTr("Cancel")
			onClicked: {
				pageStack.pop()
			}
		}
		Connections {
			target: manager
			onUploadFinish: {
				if (success) {
					pageStack.pop()
				}
				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 {
		id: exportSelection
		visible: true
		width: parent.width
		spacing: 3
		Layout.margins: Kirigami.Units.gridUnit / 2

		TemplateRadioButton {
			text: qsTr("Export Subsurface XML")
			visible: Qt.platform.os !== "android"
			checked: true
			onClicked: {
				selectedExport = ExportType.EX_DIVES_XML
				explain.text = qsTr("Subsurface native XML format.")
			}
		}
		TemplateRadioButton {
			text: qsTr("Export Subsurface dive sites XML")
			visible: Qt.platform.os !== "android"
			onClicked: {
				selectedExport = ExportType.EX_DIVE_SITES_XML
				explain.text = qsTr("Subsurface dive sites native XML format.")
			}
		}
		TemplateRadioButton {
			text: qsTr("Export UDDF")
			visible: Qt.platform.os !== "android"
			onClicked: {
				selectedExport = ExportType.EX_UDDF
				explain.text = qsTr("Generic format that is used for data exchange between a variety of diving related programs.")
			}
		}
		TemplateRadioButton {
			text: qsTr("Upload divelogs.de")
			onClicked: {
				selectedExport = ExportType.EX_DIVELOGS_DE
				explain.text = qsTr("Send the dive data to divelogs.de website.")
			}
		}
		TemplateRadioButton {
			text: qsTr("Upload DiveShare")
			onClicked: {
				selectedExport = ExportType.EX_DIVESHARE
				explain.text = qsTr("Send the dive data to dive-share.appspot.com website.")
			}
		}
		Rectangle {
			width: 1
			height: Kirigami.Units.gridUnit
			color: "transparent"
		}
		TemplateLabel {
			id: explain
			Layout.fillWidth: true
			wrapMode: Text.Wrap
		}
		Rectangle {
			width: 1
			height: Kirigami.Units.gridUnit
			color: "transparent"
		}
		TemplateCheckBox {
			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 = ""
					exportSelection.visible = false
					uploadDialog.visible = true
				} 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
					exportSelection.visible = false
					textPassword.visible = false
					uploadDialog.visible = true
				} else if (Qt.platform.os !== "android") {
					saveAsDialog.open()
				}
			}
		}
	}
}