Warning, /multimedia/elisa/src/qml/MediaTrackMetadataView.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2017 (c) Alexander Stippich <a.stippich@gmx.net> 0003 SPDX-FileCopyrightText: 2018 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0004 0005 SPDX-License-Identifier: LGPL-3.0-or-later 0006 */ 0007 0008 import QtQuick 2.7 0009 import QtQuick.Controls 2.2 0010 import QtQuick.Window 2.2 0011 import QtQml.Models 2.2 0012 import QtQuick.Layouts 1.2 0013 import org.kde.kirigami 2.5 as Kirigami 0014 import org.kde.elisa 1.0 0015 0016 Window { 0017 id: trackMetadata 0018 0019 property url fileName 0020 property bool editableMetadata 0021 property bool showTrackFileName 0022 0023 property alias modelType: metadataForm.modelType 0024 property alias isModifying: metadataForm.isModifying 0025 property alias isCreating: metadataForm.isCreating 0026 property alias canAddMoreMetadata: metadataForm.canAddMoreMetadata 0027 property alias showImage: metadataForm.showImage 0028 property alias showDeleteButton: metadataForm.showDeleteButton 0029 0030 signal rejected() 0031 0032 LayoutMirroring.enabled: Qt.application.layoutDirection == Qt.RightToLeft 0033 LayoutMirroring.childrenInherit: true 0034 0035 title: isCreating ? i18nc("@title:window", "Create a Radio") : 0036 i18nc("@title:window", "View details") 0037 0038 EditableTrackMetadataModel { 0039 id: realModel 0040 0041 manager: ElisaApplication.musicManager 0042 } 0043 0044 modality: Qt.NonModal 0045 flags: Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint 0046 | Qt.WindowCloseButtonHint | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint 0047 0048 color: myPalette.window 0049 0050 minimumHeight: elisaTheme.metaDataDialogHeight 0051 minimumWidth: elisaTheme.metaDataDialogWidth 0052 0053 // Close when pressing Esc key 0054 Shortcut { 0055 sequence: StandardKey.Cancel 0056 onActivated: close() 0057 } 0058 0059 onClosing: close => { 0060 if (realModel.isDirty) { 0061 metadataForm.dirtyClosingDialog.open() 0062 close.accepted = false 0063 } 0064 } 0065 0066 Kirigami.ScrollablePage { 0067 anchors.fill: parent 0068 0069 MediaTrackMetadataForm { 0070 id: metadataForm 0071 0072 metadataModel: realModel 0073 imageItem.anchors.horizontalCenter: horizontalCenter 0074 0075 onClose: trackMetadata.close() 0076 } 0077 0078 footer: ColumnLayout { 0079 anchors.left: parent.left 0080 anchors.right: parent.right 0081 0082 Kirigami.Separator { Layout.fillWidth: true } 0083 0084 // file location 0085 RowLayout { 0086 id: fileNameRow 0087 visible: showTrackFileName 0088 Layout.topMargin: Kirigami.Units.largeSpacing 0089 Layout.leftMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing 0090 Layout.rightMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing 0091 0092 Kirigami.Icon { 0093 readonly property int size: Kirigami.Units.iconSizes.roundedIconSize(fileNameLabel.height) 0094 0095 implicitWidth: size 0096 implicitHeight: size 0097 0098 source: elisaTheme.folderIcon 0099 } 0100 0101 LabelWithToolTip { 0102 id: fileNameLabel 0103 0104 Layout.fillWidth: true 0105 text: realModel.fileUrl 0106 wrapMode: Text.Wrap 0107 elide: Text.ElideRight 0108 } 0109 } 0110 0111 RowLayout { 0112 Layout.topMargin: Kirigami.Units.largeSpacing 0113 Layout.leftMargin: Kirigami.Units.smallSpacing 0114 Layout.rightMargin: Kirigami.Units.smallSpacing 0115 Layout.bottomMargin: Kirigami.Units.smallSpacing 0116 spacing: Kirigami.Units.smallSpacing 0117 0118 DialogButtonBox { 0119 id: deleteButtonBox 0120 0121 Layout.minimumHeight: implicitHeight 0122 alignment: Qt.AlignLeft 0123 0124 visible: showDeleteButton && !isCreating 0125 0126 Button { 0127 text: i18nc("@action:button", "Delete") 0128 icon.name: 'delete' 0129 DialogButtonBox.buttonRole: DialogButtonBox.DestructiveRole 0130 onClicked: metadataForm.deleteItem() 0131 } 0132 } 0133 0134 DialogButtonBox { 0135 Layout.fillWidth: true 0136 Layout.minimumHeight: implicitHeight 0137 alignment: Qt.AlignRight 0138 0139 visible: !isModifying && !isCreating 0140 standardButtons: DialogButtonBox.Ok 0141 0142 onAccepted: metadataForm.close() 0143 0144 Button { 0145 text: i18nc("@action:button", "Modify") 0146 icon.name: 'document-edit' 0147 DialogButtonBox.buttonRole: DialogButtonBox.ActionRole 0148 onClicked: metadataForm.isModifying = true 0149 } 0150 } 0151 0152 DialogButtonBox { 0153 Layout.fillWidth: true 0154 Layout.minimumHeight: implicitHeight 0155 alignment: Qt.AlignRight 0156 0157 visible: metadataForm.isModifying 0158 standardButtons: DialogButtonBox.Apply | DialogButtonBox.Ok | DialogButtonBox.Cancel 0159 0160 onApplied: metadataForm.apply() 0161 onAccepted: metadataForm.applyAndClose() 0162 onRejected: metadataForm.cancel() 0163 } 0164 0165 DialogButtonBox { 0166 Layout.fillWidth: true 0167 Layout.minimumHeight: implicitHeight 0168 alignment: Qt.AlignRight 0169 0170 visible: metadataForm.isCreating 0171 standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel 0172 0173 onAccepted: metadataForm.applyAndClose() 0174 onRejected: metadataForm.cancelAndClose() 0175 } 0176 } 0177 } 0178 } 0179 0180 Connections { 0181 target: ElisaApplication 0182 0183 function onMusicManagerChanged() { 0184 if (isCreating) { 0185 realModel.initializeForNewRadio() 0186 } else { 0187 realModel.initializeByUrl(modelType, fileName) 0188 } 0189 } 0190 } 0191 0192 Component.onCompleted: { 0193 if (ElisaApplication.musicManager) { 0194 if (isCreating) { 0195 realModel.initializeForNewRadio() 0196 } else { 0197 realModel.initializeByUrl(modelType, fileName) 0198 } 0199 } 0200 } 0201 }