Warning, /multimedia/elisa/src/qml/mobile/MobileMediaTrackMetadataView.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    SPDX-FileCopyrightText: 2020 (c) Devin Lin <espidev@gmail.com>
0005 
0006    SPDX-License-Identifier: LGPL-3.0-or-later
0007  */
0008 
0009 
0010 import QtQuick 2.7
0011 import QtQuick.Controls 2.2
0012 import QtQuick.Window 2.2
0013 import QtQml.Models 2.2
0014 import QtQuick.Layouts 1.2
0015 import org.kde.kirigami 2.13 as Kirigami
0016 import org.kde.elisa 1.0
0017 
0018 import ".."
0019 
0020 Kirigami.ScrollablePage {
0021     id: trackMetadata
0022 
0023     property url fileName
0024     property bool editableMetadata
0025     property bool showTrackFileName
0026 
0027     property alias modelType: metadataForm.modelType
0028     property alias isModifying: metadataForm.isModifying
0029     property alias isCreating: metadataForm.isCreating
0030     property alias canAddMoreMetadata: metadataForm.canAddMoreMetadata
0031     property alias showImage: metadataForm.showImage
0032     property alias showDeleteButton: metadataForm.showDeleteButton
0033 
0034     signal rejected()
0035 
0036     onBackRequested: event => {
0037         if (realModel.isDirty) {
0038             metadataForm.dirtyClosingDialog.open()
0039             event.accepted = true
0040         }
0041     }
0042 
0043     LayoutMirroring.enabled: Qt.application.layoutDirection == Qt.RightToLeft
0044     LayoutMirroring.childrenInherit: true
0045 
0046     title: isCreating ? i18nc("@title:window", "Create a Radio") :
0047                         i18nc("@title:window", "View details")
0048 
0049     actions: [
0050         Kirigami.Action {
0051             icon.name: 'document-edit'
0052             text: i18nc("@action:button", "Modify")
0053             onTriggered: metadataForm.isModifying = true
0054             visible: !metadataForm.isModifying && !metadataForm.isCreating
0055         },
0056         Kirigami.Action {
0057             icon.name: "dialog-ok-apply"
0058             text: i18nc("@action:button", "Save")
0059             onTriggered: metadataForm.isCreating ? metadataForm.applyAndClose() : metadataForm.apply()
0060             visible: metadataForm.isModifying || metadataForm.isCreating
0061         },
0062         Kirigami.Action {
0063             icon.name: 'dialog-cancel'
0064             text: i18nc("@action:button", "Cancel")
0065             onTriggered: metadataForm.isCreating ? metadataForm.cancelAndClose() : metadataForm.cancel()
0066             visible: metadataForm.isModifying || metadataForm.isCreating
0067         },
0068         Kirigami.Action {
0069             icon.name: 'delete'
0070             text: i18nc("@action:button", "Delete")
0071             onTriggered: metadataForm.deleteItem()
0072             visible: showDeleteButton && !isCreating
0073         }
0074     ]
0075 
0076     Component.onCompleted: {
0077         if (ElisaApplication.musicManager) {
0078             if (isCreating) {
0079                 realModel.initializeForNewRadio()
0080             } else {
0081                 realModel.initializeByUrl(modelType, fileName)
0082             }
0083         }
0084     }
0085 
0086     ColumnLayout {
0087         Layout.minimumWidth: parent.width
0088         Layout.maximumWidth: parent.width
0089 
0090         Connections {
0091             target: ElisaApplication
0092 
0093             function onMusicManagerChanged() {
0094                 if (isCreating) {
0095                     realModel.initializeForNewRadio()
0096                 } else {
0097                     realModel.initializeByUrl(modelType, fileName)
0098                 }
0099             }
0100         }
0101 
0102         EditableTrackMetadataModel {
0103             id: realModel
0104             manager: ElisaApplication.musicManager
0105         }
0106 
0107         // file location
0108         RowLayout {
0109             id: fileNameRow
0110             visible: showTrackFileName
0111 
0112             spacing: Kirigami.Units.largeSpacing
0113 
0114             Kirigami.Icon {
0115                 Layout.preferredWidth: fileNameLabel.height
0116                 Layout.preferredHeight: fileNameLabel.height
0117 
0118                 source: elisaTheme.folderIcon
0119             }
0120 
0121             LabelWithToolTip {
0122                 id: fileNameLabel
0123 
0124                 Layout.fillWidth: true
0125                 text: realModel.fileUrl
0126                 wrapMode: Text.Wrap
0127                 elide: Text.ElideRight
0128             }
0129         }
0130 
0131         MediaTrackMetadataForm {
0132             id: metadataForm
0133 
0134             Layout.fillWidth: true
0135 
0136             metadataModel: realModel
0137             onClose: mainWindow.pageStack.layers.pop()
0138         }
0139     }
0140 }