Warning, /multimedia/kid3/src/qml/app/TagCollapsible.qml is written in an unsupported language. File is not indexed.

0001 /**
0002  * \file TagCollapsible.qml
0003  * Collapsible with tag information.
0004  *
0005  * \b Project: Kid3
0006  * \author Urs Fleisch
0007  * \date 16 Feb 2015
0008  *
0009  * Copyright (C) 2015-2018  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.Controls 2.4
0026 import Kid3 1.1 as Kid3
0027 
0028 Collapsible {
0029   id: collapsible
0030   property int tagNr
0031   property QtObject appTag: app.tag(tagNr)
0032   property QtObject selTag: app.selectionInfo.tag(tagNr)
0033   property bool hasFrameList: tagNr !== Kid3.Frame.Tag_Id3v1
0034 
0035   function acceptEdit() {
0036     // Force focus lost to store changes.
0037     frameTable.currentIndex = -1
0038   }
0039 
0040   text: qsTr("Tag %1").arg(tagNr + 1) + ": " + collapsible.selTag.tagFormat
0041   visible: tagNr <= Kid3.Frame.Tag_2 || selTag.tagUsed
0042   buttons: [
0043     IconButton {
0044       iconName: "edit"
0045       color: collapsible.labelColor
0046       width: height
0047       onClicked: {
0048         appTag.frameList.selectByRow(frameTable.currentIndex)
0049         appTag.editFrame()
0050       }
0051       visible: hasFrameList
0052     },
0053     IconButton {
0054       iconName: "add"
0055       color: collapsible.labelColor
0056       width: height
0057       onClicked: {
0058         appTag.addFrame()
0059       }
0060       visible: hasFrameList
0061     },
0062     IconButton {
0063       iconName: "remove"
0064       color: collapsible.labelColor
0065       width: height
0066       onClicked: {
0067         appTag.frameList.selectByRow(frameTable.currentIndex)
0068         appTag.deleteFrame()
0069       }
0070       visible: hasFrameList
0071     },
0072     IconButton {
0073       id: menuButton
0074       iconName: "navigation-menu"
0075       color: collapsible.labelColor
0076       width: height
0077       onClicked: menu.open()
0078 
0079       Menu {
0080         id: menu
0081         MenuItem {
0082           id: toFileNameMenu
0083           text: qsTr("To Filename")
0084           onTriggered: collapsible.appTag.getFilenameFromTags()
0085         }
0086         MenuItem {
0087           text: qsTr("From Filename")
0088           onTriggered: collapsible.appTag.getTagsFromFilename()
0089         }
0090         MenuItem {
0091           text: qsTr("To Tag %1").arg(2)
0092           onTriggered: app.copyTag(script.toTagNumber(tagNr),
0093                                    script.toTagNumber(Kid3.Frame.Tag_2))
0094           visible: tagNr > Kid3.Frame.Tag_2
0095           height: visible ? toFileNameMenu.height : 0
0096         }
0097         MenuItem {
0098           text: qsTr("From Tag %1").arg(tagNr == Kid3.Frame.Tag_2 ? "1" : "2")
0099           onTriggered: collapsible.appTag.copyToOtherTag()
0100         }
0101         MenuItem {
0102           text: qsTr("Copy")
0103           onTriggered: collapsible.appTag.copyTags()
0104         }
0105         MenuItem {
0106           text: qsTr("Paste")
0107           onTriggered: collapsible.appTag.pasteTags()
0108         }
0109         MenuItem {
0110           text: qsTr("Remove")
0111           onTriggered: collapsible.appTag.removeTags()
0112         }
0113       }
0114     }
0115   ]
0116 
0117   content: ListView {
0118     id: frameTable
0119     enabled: collapsible.selTag.tagUsed
0120     clip: true
0121     width: parent.width
0122     height: count ? contentHeight : 0
0123     interactive: false
0124     model: collapsible.appTag.frameModel
0125     delegate: FrameDelegate {
0126       height: constants.controlHeight
0127       width: frameTable.width
0128       tagNr: collapsible.tagNr
0129     }
0130   }
0131 
0132   // workaround for QTBUG-31627
0133   // should work with "checked: collapsible.selTag.hasTag" with Qt >= 5.3
0134   Binding {
0135     target: collapsible
0136     property: "checked"
0137     value: collapsible.selTag.hasTag
0138   }
0139 }