Warning, /office/klevernotes/src/contents/ui/dialogs/LinkNoteDialog.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 // SPDX-FileCopyrightText: 2024 Louis Schul <schul9louis@gmail.com>
0003 
0004 import QtQuick 2.15
0005 import QtQuick.Layouts 1.15
0006 
0007 import org.kde.kitemmodels 1.0
0008 import org.kde.kirigami 2.19 as Kirigami
0009 import org.kde.kirigamiaddons.formcard 1.0 as FormCard
0010 
0011 import "qrc:/contents/ui/sharedComponents"
0012 
0013 Kirigami.PromptDialog {
0014     id: linkNoteDialog
0015 
0016     property alias linkText: linkTextField.text
0017     readonly property string path: noteComboBox.currentValue
0018     property string headerString: ""
0019     required property var listModel
0020 
0021     title: i18nc("@title:dialog", "Create your link")
0022 
0023     width: Kirigami.Units.gridUnit * 20
0024 
0025     standardButtons: Kirigami.Dialog.Ok | Kirigami.Dialog.Cancel
0026 
0027     onClosed: {
0028         linkText = ""
0029         headerSwitch.checked = false
0030         noteComboBox.currentIndex = 0
0031     }
0032 
0033     ColumnLayout {
0034         FormCard.FormComboBoxDelegate {
0035             id: noteComboBox
0036 
0037             text: i18nc("@label:combobox, 'a note' (the noun)", "Note:")
0038             model: KSortFilterProxyModel {
0039                 id: searchFilterProxyModel
0040 
0041                 sourceModel: KDescendantsProxyModel {
0042                     id: descendants
0043                     model: linkNoteDialog.listModel 
0044                 }
0045                 filterRoleName: "useCase"
0046                 filterString: "Note"
0047             }
0048             textRole: "fullName"
0049             valueRole: "path"
0050             displayMode: FormCard.FormComboBoxDelegate.Dialog
0051 
0052             onCurrentValueChanged: if (headerSwitch.checked) {
0053                 headerComboBox.model = applicationWindow().noteMapper.getNoteHeaders(noteComboBox.currentValue)
0054             }
0055             Component.onCompleted: {
0056                 currentIndex = 0
0057             }
0058         }
0059 
0060         ExpendingFormSwitch {
0061             id: headerSwitch
0062 
0063             text: i18nc("@label:switch", "Search headers")
0064             checked: false
0065 
0066             onCheckedChanged: if (checked) {
0067                 headerComboBox.model = applicationWindow().noteMapper.getNoteHeaders(noteComboBox.currentValue)
0068             } else {
0069                 linkNoteDialog.headerString = ""
0070             }
0071 
0072             FormCard.FormComboBoxDelegate {
0073                 id: headerComboBox
0074 
0075                 text: i18nc("@label:textbox", "Header:")
0076 
0077                 textRole: "text"
0078                 valueRole: "value"
0079                 displayMode: FormCard.FormComboBoxDelegate.Dialog
0080 
0081                 onCurrentValueChanged: {
0082                     linkNoteDialog.headerString = currentValue
0083                 }
0084             }
0085         }
0086 
0087         FormCard.FormTextFieldDelegate {
0088             id: linkTextField
0089 
0090             label: i18nc("@label:textbox, the displayed text of a link, in html: <a>This text</a> ", "Link text:")
0091             Layout.fillWidth: true
0092         }
0093     }
0094 }