Warning, /plasma/plasma-sdk/lookandfeelexplorer/package/contents/ui/MetadataEditor.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2015 Marco Martin <mart@kde.org>
0003 *
0004 * SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.3
0008 import QtQuick.Layouts 1.1
0009 import QtQuick.Controls 2.15 as QQC2
0010 import QtQuick.Dialogs
0011 import org.kde.kirigami 2.3 as Kirigami
0012
0013 QQC2.Dialog {
0014 id: dialog
0015 property alias pluginName: pluginNameField.text
0016 property alias name: nameField.text
0017 property alias comment: commentField.text
0018 property alias author: authorField.text
0019 property alias email: emailField.text
0020 property alias license: licenseField.editText
0021 property alias website: websiteField.text
0022
0023 property bool canEdit: false
0024
0025 width: 500
0026 x: (parent.width - width) / 2
0027 y: (parent.height - height) / 2
0028 title: i18n("New Theme")
0029
0030 onVisibleChanged: {
0031 nameField.focus = true
0032 }
0033
0034 contentItem: Rectangle {
0035 SystemPalette {
0036 id: palette
0037 }
0038 color: palette.window
0039
0040 ColumnLayout {
0041 id: layout
0042 anchors {
0043 fill: parent
0044 margins: Kirigami.Units.smallSpacing
0045 }
0046 QQC2.Label {
0047 id: errorMessage
0048 text: ""
0049 wrapMode: Text.WordWrap
0050 Layout.fillWidth: true
0051 }
0052 Kirigami.FormLayout {
0053 Layout.fillWidth: true
0054 QQC2.TextField {
0055 id: pluginNameField
0056 Layout.fillWidth: true
0057 Kirigami.FormData.label: i18n("Theme Plugin Name:")
0058 onTextChanged: {
0059 for (var i = 0; i < lnfLogic.lnfList.count; ++i) {
0060 if (pluginNameField.text == lnfLogic.lnfList.get(i).packageNameRole) {
0061 dialog.canEdit = false;
0062 errorMessage.text = i18n("This theme plugin name already exists");
0063 return;
0064 }
0065 }
0066 errorMessage.text = "";
0067 dialog.canEdit = true;
0068 }
0069 }
0070 QQC2.TextField {
0071 id: "nameField"
0072 Kirigami.FormData.label: i18n("Theme Name:")
0073 }
0074 QQC2.TextField {
0075 id: "commentField"
0076 Kirigami.FormData.label: i18n("Comment:")
0077 }
0078 QQC2.TextField {
0079 id: "authorField"
0080 Kirigami.FormData.label: i18n("Author:")
0081 }
0082 QQC2.TextField {
0083 id: "emailField"
0084 Kirigami.FormData.label: i18n("Email:")
0085 }
0086 QQC2.TextField {
0087 id: "versionField"
0088 Kirigami.FormData.label: i18n("Version:")
0089 }
0090 QQC2.TextField {
0091 id: "websiteField"
0092 Kirigami.FormData.label: i18n("Website:")
0093 }
0094 QQC2.ComboBox {
0095 id: licenseField
0096 Layout.fillWidth: true
0097 Kirigami.FormData.label: i18n("License:")
0098 editable: true
0099 editText: "LGPL 2.1+"
0100 model: ["LGPL 2.1+", "GPL 2+", "GPL 3+", "LGPL 3+", "BSD"]
0101 }
0102 }
0103 }
0104 }
0105
0106
0107 footer: QQC2.DialogButtonBox {
0108 QQC2.Button {
0109 text: i18n("OK ")
0110 enabled: canEdit && nameField.text && authorField.text && emailField.text && websiteField.text
0111 QQC2.DialogButtonBox.buttonRole: QQC2.DialogButtonBox.AcceptRole
0112 onClicked: dialog.accept()
0113 }
0114 QQC2.Button {
0115 text: i18n("Cancel")
0116 QQC2.DialogButtonBox.buttonRole: QQC2.DialogButtonBox.DestructiveRole
0117 onClicked: dialog.reject()
0118 }
0119 }
0120
0121 onAccepted: {
0122 lnfLogic.createNewTheme(pluginNameField.text, nameField.text, commentField.text, authorField.text, emailField.text, licenseField.editText, websiteField.text);
0123 for (var i = 0; i < lnfLogic.lnfList.count; ++i) {
0124 if (nameField.text == lnfLogic.lnfList.get(i).packageNameRole) {
0125 themeSelector.currentIndex = i;
0126 break;
0127 }
0128 }
0129 }
0130 }