Warning, /multimedia/kid3/src/qml/app/MapEditPage.qml is written in an unsupported language. File is not indexed.
0001 /**
0002 * \file MapEditPage.qml
0003 * Page to edit a string->string map.
0004 *
0005 * \b Project: Kid3
0006 * \author Urs Fleisch
0007 * \date 8 Mar 2019
0008 *
0009 * Copyright (C) 2019 Urs Fleisch
0010 *
0011 * This program is free software; you can redistribute it and/or modify
0012 * it under the terms of the GNU Lesser General Public License as published by
0013 * the Free Software Foundation; version 3.
0014 *
0015 * This program is distributed in the hope that it will be useful,
0016 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0018 * GNU Lesser General Public License for more details.
0019 *
0020 * You should have received a copy of the GNU Lesser General Public License
0021 * along with this program. If not, see <http://www.gnu.org/licenses/>.
0022 */
0023
0024 import QtQuick 2.11
0025 import QtQuick.Layouts 1.11
0026 import QtQuick.Controls 2.4
0027
0028 StringListEditPage {
0029 id: page
0030
0031 readonly property string mapSeparator: String.fromCharCode(0x00a0) +
0032 String.fromCharCode(0x2192) + String.fromCharCode(0x00a0)
0033
0034 editDialog: keyValueEditDialog
0035
0036 function addElement(element) {
0037 // Insert in sorted order
0038 var idx = 0
0039 while (idx < model.count &&
0040 model.get(idx).name < element.name) {
0041 ++idx
0042 }
0043 model.insert(idx, element)
0044 currentIndex = idx
0045 }
0046
0047 function setElements(map) {
0048 model.clear()
0049 for (var i = 0, len = map.length; i < len - 1; i += 2) {
0050 model.append({"name": map[i] + mapSeparator + map[i + 1]})
0051 }
0052 }
0053
0054 function getElements() {
0055 var map = []
0056 for (var i = 0; i < model.count; i++) {
0057 var s = model.get(i).name
0058 var sepPos = s.indexOf(mapSeparator)
0059 if (sepPos !== -1) {
0060 map.push(s.substring(0, sepPos),
0061 s.substring(sepPos + mapSeparator.length))
0062 }
0063 }
0064 return map
0065 }
0066
0067 Dialog {
0068 id: keyValueEditDialog
0069
0070 signal completed(bool ok)
0071
0072 function setElement(element) {
0073 var text = element.name
0074 var keyValue = text.split(mapSeparator)
0075 keyLineEdit.text = keyValue[0]
0076 valueLineEdit.text = keyValue[1] || ""
0077 }
0078
0079 function getElement() {
0080 return {name: keyLineEdit.text + mapSeparator + valueLineEdit.text}
0081 }
0082
0083 modal: true
0084 width: Math.min(parent.width, constants.gu(70))
0085 x: (parent.width - width) / 2
0086 y: 0
0087 standardButtons: Dialog.Ok | Dialog.Cancel
0088
0089 RowLayout {
0090 width: parent.width
0091 TextField {
0092 id: keyLineEdit
0093 selectByMouse: true
0094 Layout.fillWidth: true
0095 }
0096 Label {
0097 text: mapSeparator
0098 }
0099 TextField {
0100 id: valueLineEdit
0101 selectByMouse: true
0102 Layout.fillWidth: true
0103 }
0104 }
0105
0106 onAccepted: completed(true)
0107 onRejected: completed(false)
0108 }
0109 }