Warning, /office/klevernotes/src/contents/ui/dialogs/StorageDialog.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 // SPDX-FileCopyrightText: 2022 Louis Schul <schul9louis@gmail.com>
0003
0004 import QtQuick 2.15
0005 import QtQuick.Controls 2.15 as Controls
0006 import QtQuick.Layouts 1.3
0007
0008 import org.kde.kirigami 2.19 as Kirigami
0009 import org.kde.kirigamiaddons.formcard 1.0 as FormCard
0010
0011 import org.kde.Klever 1.0
0012
0013 Kirigami.Dialog {
0014 id: setupPopup
0015
0016 readonly property string newStorage: i18nc("Storage as in 'the folder where all the notes will be stored'; this text will be followed by the path to this folder", "Storage created at ")
0017 readonly property string existingStorage: i18nc("Storage as in 'the folder where all the notes will be stored'; this text will be followed by the path to this folder", "Existing storage chosen at ")
0018
0019 property string folder
0020 property string userChoice
0021 property bool firstSetup: true
0022 property string subtitle: i18nc("@subtitle:dialog, Storage as in 'the folder where all the notes will be stored'", "It looks like this is your first time using this app!\n\nPlease choose a location for your future KleverNotes storage or select an existing one.")
0023
0024 width: Kirigami.Units.gridUnit * 18
0025
0026 closePolicy: Controls.Popup.NoAutoClose
0027 standardButtons: Kirigami.Dialog.NoButton
0028 showCloseButton: !firstSetup
0029
0030 onFolderChanged: {
0031 setupStorage()
0032 }
0033
0034 ColumnLayout{
0035 Controls.Label {
0036 text: subtitle
0037 wrapMode: Text.Wrap
0038
0039 Layout.margins: Kirigami.Units.smallSpacing
0040 Layout.fillWidth: true
0041 }
0042
0043 FormCard.FormButtonDelegate {
0044 icon.name: "folder-sync"
0045 text: i18nc("@label:button, Storage as in 'the folder where all the notes will be stored'", "Existing storage")
0046
0047 Controls.ToolTip.text: i18nc("@label:button, Storage as in 'the folder where all the notes will be stored'", "Change the storage path")
0048 Controls.ToolTip.delay: Kirigami.Units.toolTipDelay
0049 Controls.ToolTip.visible: hovered
0050
0051 Layout.fillWidth: true
0052
0053 onClicked: {
0054 setupPopup.userChoice = setupPopup.existingStorage
0055 getFolder()
0056 }
0057 }
0058
0059 FormCard.FormButtonDelegate {
0060 icon.name: "folder-new"
0061 text: i18nc("@label:button, Storage as in 'the folder where all the notes will be stored'", "Create storage")
0062
0063 Controls.ToolTip.text: i18nc("Storage as in 'the folder where all the notes will be stored'", "Create a new storage")
0064 Controls.ToolTip.delay: Kirigami.Units.toolTipDelay
0065 Controls.ToolTip.visible: hovered
0066
0067 Layout.fillWidth: true
0068
0069 onClicked: {
0070 setupPopup.userChoice = setupPopup.newStorage
0071 getFolder()
0072 }
0073 }
0074 }
0075
0076 function getFolder() {
0077 let component = Qt.createComponent("qrc:/contents/ui/dialogs/FolderPickerDialog.qml")
0078
0079 if (component.status == Component.Ready) {
0080 var dialog = component.createObject(setupPopup);
0081 dialog.parent = setupPopup
0082 dialog.open()
0083 }
0084 }
0085
0086 function setupStorage() {
0087 let folderPath = KleverUtility.getPath(setupPopup.folder)
0088 if (userChoice === setupPopup.newStorage){
0089 folderPath = folderPath.concat("/klevernotes")
0090 }
0091
0092 var pathEnd = folderPath.substring(folderPath.length,folderPath.length-11)
0093
0094 if (pathEnd.toLowerCase() !== "klevernotes"){
0095 subtitle = i18nc("@subtitle:dialog, Storage as in 'the folder where all the notes will be stored'", "It looks like the selected folder is not a KleverNotes storage.\n\nPlease choose a location for your future KleverNotes storage or select an existing one.")
0096 return
0097 }
0098 Config.storagePath = folderPath
0099
0100 const fullNotification = setupPopup.userChoice+folderPath
0101
0102 showPassiveNotification(fullNotification);
0103 setupPopup.close();
0104 }
0105 }