Warning, /office/klevernotes/src/contents/ui/dialogs/NamingDialog.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
0006 import org.kde.kirigami 2.19 as Kirigami
0007 import org.kde.kirigamiaddons.formcard 1.0 as FormCard
0008
0009 import org.kde.Klever 1.0
0010
0011 Kirigami.PromptDialog {
0012 id: textPromptDialog
0013
0014 readonly property QtObject nameField: nameField
0015
0016 property bool newItem
0017 property string useCase
0018 property string shownName
0019 property string parentPath
0020 property QtObject callingAction
0021 property alias textFieldText: nameField.text
0022
0023 title: i18nc("@title:dialog", "Choose a name")
0024
0025 standardButtons: Kirigami.Dialog.Apply | Kirigami.Dialog.Cancel
0026
0027 onApplied: {
0028 const error = checkName()
0029 if (error === "") {
0030 textPromptDialog.close()
0031 callingAction.name = nameField.text.trim()
0032 return
0033 }
0034 throwError(error)
0035 nameField.forceActiveFocus()
0036 }
0037 onOpened: {
0038 nameField.forceActiveFocus()
0039 }
0040 onRejected: {
0041 callingAction.isActive = false
0042 }
0043
0044 FormCard.FormTextFieldDelegate {
0045 id: nameField
0046
0047 label: i18nc("As in 'a name'", "Name:")
0048 text: shownName
0049 maximumLength: 40
0050
0051 leftPadding: Kirigami.Units.largeSpacing
0052 rightPadding: Kirigami.Units.largeSpacing
0053
0054 Keys.onPressed: function(event) {
0055 if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) {
0056 textPromptDialog.applied()
0057 }
0058 }
0059 }
0060
0061 function throwError(error) {
0062 let component = Qt.createComponent("qrc:/contents/ui/dialogs/NamingErrorDialog.qml")
0063
0064 if (component.status == Component.Ready) {
0065 var dialog = component.createObject(textPromptDialog);
0066 dialog.error = error
0067 dialog.useCase = useCase
0068 dialog.nameField = nameField
0069 dialog.open()
0070 }
0071 }
0072
0073 function checkName() {
0074 // The user just pressed apply without renaming the object
0075 if (textFieldText === shownName && !textPromptDialog.newItem) return ""
0076
0077 const name = textFieldText.trim()
0078 const error = KleverUtility.isProperPath(parentPath,name)
0079 if (error !== "") return error
0080
0081 if (name === Config.categoryDisplayName) return "exist"
0082
0083 return ""
0084 }
0085 }