Warning, /multimedia/amarok/src/context/applets/lyrics/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 /**************************************************************************************** 0002 * Copyright (c) 2017 Malte Veerman <malte.veerman@gmail.com> * 0003 * * 0004 * This program is free software; you can redistribute it and/or modify it under * 0005 * the terms of the GNU General Public License as published by the Free Software * 0006 * Foundation; either version 2 of the License, or (at your option) any later * 0007 * version. * 0008 * * 0009 * This program is distributed in the hope that it will be useful, but WITHOUT ANY * 0010 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * 0011 * PARTICULAR PURPOSE. See the GNU General Public License for more details. * 0012 * * 0013 * You should have received a copy of the GNU General Public License along with * 0014 * this program. If not, see <http://www.gnu.org/licenses/>. * 0015 ****************************************************************************************/ 0016 0017 import QtQuick 2.4 0018 import QtQuick.Controls 1.4 0019 import QtQuick.Layouts 1.3 0020 import org.kde.amarok.qml 1.0 as AmarokQml 0021 import org.kde.amarok.lyrics 1.0 0022 0023 AmarokQml.Applet { 0024 id: applet 0025 0026 property bool autoScroll: true 0027 0028 configDialog: ConfigDialog {} 0029 0030 Loader { 0031 id: loader 0032 0033 width: parent.width 0034 height: parent.height 0035 0036 sourceComponent: LyricsEngine.text === "" && LyricsEngine.suggestions.length > 0 ? suggestionsComponent : textComponent 0037 0038 BusyIndicator { 0039 anchors.centerIn: parent 0040 running: LyricsEngine.fetching 0041 } 0042 } 0043 0044 Component { 0045 id: textComponent 0046 0047 TextArea { 0048 id: textArea 0049 0050 text: LyricsEngine.text 0051 font.pointSize: LyricsEngine.fontSize 0052 font.family: LyricsEngine.font 0053 wrapMode: TextEdit.Wrap 0054 horizontalAlignment: LyricsEngine.alignment 0055 verticalAlignment: TextEdit.AlignTop 0056 textFormat: TextEdit.AutoText 0057 readOnly: true 0058 0059 Connections { 0060 target: LyricsEngine 0061 onPositionChanged: { 0062 if (applet.autoScroll) { 0063 var middle = textArea.contentHeight * LyricsEngine.position; 0064 var top = middle - textArea.height / 2; 0065 var maxTop = textArea.contentHeight - textArea.height; 0066 var boundTop = Math.min(maxTop, Math.max(0, top)); 0067 textArea.flickableItem.contentY = boundTop; 0068 } 0069 } 0070 } 0071 0072 RowLayout { 0073 id: buttonRow 0074 0075 y: applet.spacing 0076 x: parent.effectiveHorizontalAlignment === TextEdit.AlignRight ? applet.spacing : parent.viewport.width - width - applet.spacing 0077 0078 Button { 0079 Layout.alignment: Qt.AlignRight 0080 checkable: true 0081 checked: applet.autoScroll 0082 iconName: "arrow-down" 0083 tooltip: i18n("Toggle auto scroll") 0084 0085 onClicked: applet.autoScroll = !applet.autoScroll 0086 } 0087 Button { 0088 Layout.alignment: Qt.AlignRight 0089 iconName: "view-refresh" 0090 tooltip: i18n("Reload lyrics") 0091 0092 onClicked: LyricsEngine.refetchLyrics() 0093 } 0094 } 0095 0096 Label { 0097 anchors.centerIn: parent 0098 text: i18n("No lyrics found") 0099 visible: !textArea.text 0100 font.pointSize: LyricsEngine.fontSize 0101 font.family: LyricsEngine.font 0102 } 0103 } 0104 } 0105 0106 // untested 0107 Component { 0108 id: suggestionsComponent 0109 0110 ListView { 0111 model: LyricsEngine.suggestions 0112 header: Label { 0113 text: i18n("Suggestions: ") + LyricsEngine.suggestions.length 0114 } 0115 delegate: Item { 0116 width: parent.width 0117 0118 Column { 0119 width: parent.width 0120 0121 Label { 0122 text: '<b>' + i18n("Title:") + '</b> ' + modelData[0] 0123 } 0124 Label { 0125 text: '<b>' + i18n("Artist:") + '</b> ' + modelData[1] 0126 } 0127 } 0128 MouseArea { 0129 anchors.fill: parent 0130 0131 onClicked: LyricsEngine.fetchLyrics(modelData[0], modelData[1], modelData[2]) 0132 } 0133 } 0134 } 0135 } 0136 }