Warning, /multimedia/kid3/src/qml/app/BatchImportPage.qml is written in an unsupported language. File is not indexed.
0001 /** 0002 * \file BatchImportPage.qml 0003 * Batch import page. 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.Layouts 1.11 0026 import QtQuick.Controls 2.4 0027 import Kid3 1.1 as Kid3 0028 0029 Page { 0030 id: page 0031 0032 title: qsTr("Automatic Import") 0033 0034 Connections { 0035 target: app.batchImporter 0036 onReportImportEvent: { 0037 var str 0038 switch (type) { 0039 case Kid3.BatchImporter.ReadingDirectory: 0040 str = qsTr("Reading Folder") 0041 break 0042 case Kid3.BatchImporter.Started: 0043 str = qsTr("Started") 0044 break 0045 case Kid3.BatchImporter.SourceSelected: 0046 str = qsTr("Source") 0047 break 0048 case Kid3.BatchImporter.QueryingAlbumList: 0049 str = qsTr("Querying") 0050 break 0051 case Kid3.BatchImporter.FetchingTrackList: 0052 case Kid3.BatchImporter.FetchingCoverArt: 0053 str = qsTr("Fetching") 0054 break 0055 case Kid3.BatchImporter.TrackListReceived: 0056 str = qsTr("Data received") 0057 break 0058 case Kid3.BatchImporter.CoverArtReceived: 0059 str = qsTr("Cover") 0060 break 0061 case Kid3.BatchImporter.Finished: 0062 str = qsTr("Finished") 0063 break 0064 case Kid3.BatchImporter.Aborted: 0065 str = qsTr("Aborted") 0066 break 0067 case Kid3.BatchImporter.Error: 0068 str = qsTr("Error") 0069 break 0070 } 0071 if (text) { 0072 str += ": " 0073 str += text 0074 } 0075 str += "\n" 0076 textArea.text += str 0077 textArea.cursorPosition = textArea.text.length 0078 } 0079 } 0080 0081 header: ToolBar { 0082 IconButton { 0083 id: prevButton 0084 anchors.left: parent.left 0085 anchors.verticalCenter: parent.verticalCenter 0086 iconName: "go-previous" 0087 color: titleLabel.color 0088 width: visible ? height : 0 0089 visible: page.StackView.view && page.StackView.view.depth > 1 0090 onClicked: page.StackView.view.pop() 0091 } 0092 Label { 0093 id: titleLabel 0094 anchors.left: prevButton.right 0095 anchors.right: startButton.left 0096 anchors.verticalCenter: parent.verticalCenter 0097 clip: true 0098 text: page.title 0099 } 0100 ToolButton { 0101 id: startButton 0102 anchors.right: parent.right 0103 anchors.margins: constants.margins 0104 text: qsTr("Start") 0105 onClicked: { 0106 textArea.text = "" 0107 app.batchImport(profileComboBox.currentText, 0108 script.toTagVersion(destinationComboBox.getTagVersion())) 0109 } 0110 } 0111 } 0112 0113 Grid { 0114 id: profileRow 0115 property int labelWidth: constants.gu(10) 0116 property int valueWidth: width - labelWidth -spacing 0117 anchors { 0118 left: parent.left 0119 right: parent.right 0120 top: parent.top 0121 margins: constants.margins 0122 } 0123 columns: 2 0124 spacing: constants.spacing 0125 Label { 0126 text: qsTr("Destination:") 0127 width: parent.labelWidth 0128 } 0129 ComboBox { 0130 id: destinationComboBox 0131 readonly property var tagVersions: [ 0132 Kid3.Frame.TagV1, Kid3.Frame.TagV2, Kid3.Frame.TagV3, 0133 Kid3.Frame.TagV2V1, Kid3.Frame.TagVAll 0134 ] 0135 width: parent.valueWidth 0136 model: [ qsTr("Tag 1"), 0137 qsTr("Tag 2"), 0138 qsTr("Tag 3"), 0139 qsTr("Tag 1 and Tag 2"), 0140 qsTr("All Tags") ] 0141 currentIndex: tagVersions.indexOf(configs.batchImportConfig().importDest) 0142 function getTagVersion() { 0143 return tagVersions[currentIndex] 0144 } 0145 } 0146 0147 Label { 0148 id: profileLabel 0149 width: parent.labelWidth 0150 height: profileComboBox.height 0151 verticalAlignment: Text.AlignVCenter 0152 text: qsTr("Profile:") 0153 } 0154 RowLayout { 0155 width: parent.valueWidth 0156 IconButton { 0157 iconName: "edit" 0158 color: profileLabel.color 0159 onClicked: { 0160 editProfilesPage.currentIndex = profileComboBox.currentIndex 0161 page.StackView.view.push(editProfilesPage) 0162 } 0163 0164 ImportProfilesEditPage { 0165 id: editProfilesPage 0166 visible: false 0167 onFinished: { 0168 profileComboBox.currentIndex = currentIndex 0169 profileComboBox.currentIndexChanged() 0170 } 0171 } 0172 } 0173 ComboBox { 0174 id: profileComboBox 0175 Layout.fillWidth: true 0176 model: configs.batchImportConfig().profileNames 0177 currentIndex: configs.batchImportConfig().profileIndex 0178 } 0179 } 0180 } 0181 0182 ScrollView { 0183 id: flick 0184 anchors { 0185 left: parent.left 0186 right: parent.right 0187 top: profileRow.bottom 0188 bottom: parent.bottom 0189 margins: constants.margins 0190 } 0191 0192 TextArea { 0193 id: textArea 0194 readOnly: true 0195 selectByMouse: false 0196 } 0197 } 0198 0199 StackView.onActivated: textArea.text = "" 0200 StackView.onDeactivated: { 0201 app.batchImporter.abort() 0202 configs.batchImportConfig().importDest = destinationComboBox.getTagVersion() 0203 configs.batchImportConfig().profileIndex = profileComboBox.currentIndex 0204 } 0205 }