Warning, /multimedia/amarok/src/context/context_qml_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 2.0 0019 import QtQuick.Layouts 1.2 0020 import QtQml.Models 2.2 0021 import org.kde.kirigami 2.0 as Kirigami 0022 import "toolbar" 0023 0024 Item { 0025 id: root 0026 0027 Component.onCompleted: Context.debug("Context created") 0028 0029 ColumnLayout { 0030 anchors.fill: parent 0031 0032 Flickable { 0033 id: appletFlickable 0034 0035 signal scrollToApplet(string id) 0036 0037 Layout.alignment: Qt.AlignTop 0038 Layout.fillHeight: true 0039 Layout.fillWidth: true 0040 contentWidth: scrollBar.visible ? width - scrollBar.width : width 0041 contentHeight: appletColumn.height 0042 flickableDirection: Flickable.VerticalFlick 0043 focus: true 0044 0045 Keys.onUpPressed: scrollBar.decrease() 0046 Keys.onDownPressed: scrollBar.increase() 0047 0048 ScrollBar.vertical: ScrollBar { id: scrollBar } 0049 0050 Column { 0051 id: appletColumn 0052 0053 width: parent.width 0054 spacing: Kirigami.Units.smallSpacing 0055 0056 Repeater { 0057 model: AppletProxyModel 0058 0059 delegate: Loader { 0060 width: appletColumn.width 0061 active: true 0062 asynchronous: false 0063 0064 function initialize() { 0065 setSource(mainscript, { 0066 "name": name, 0067 "appletId": appletId, 0068 "iconSource": icon, 0069 "collapsed": collapsed, 0070 "contentHeight": contentHeight, 0071 "configEnabled": Qt.binding(function() { return appletToolbar.configEnabled; } ) 0072 }); 0073 } 0074 0075 Component.onCompleted: initialize() 0076 0077 onStatusChanged: { 0078 if (status == Loader.Error) { 0079 Context.error("Error loading applet: " + appletId); 0080 Context.error(sourceComponent.errorString()); 0081 } 0082 if (status == Loader.Ready) { 0083 Context.debug("Applet loaded: " + appletId); 0084 } 0085 } 0086 0087 Connections { 0088 target: AppletProxyModel 0089 0090 onDataChanged: { 0091 if (!!mainscript && mainscript != source) { 0092 Context.debug("Data changed for applet " + appletId); 0093 initialize(); 0094 } 0095 } 0096 } 0097 Connections { 0098 target: appletFlickable 0099 0100 onScrollToApplet: { 0101 if (id == appletId) { 0102 appletFlickable.contentY = y; 0103 Context.debug("Scroll to applet: " + appletId); 0104 } 0105 } 0106 } 0107 } 0108 } 0109 } 0110 } 0111 AppletToolbarAddItem { 0112 id: appletToolbarAddItem 0113 0114 Layout.fillWidth: true 0115 height: Kirigami.Units.iconSizes.enormous 0116 visible: appletToolbar.configEnabled 0117 } 0118 AppletToolbar { 0119 id: appletToolbar 0120 0121 contextRoot: root 0122 addItem: appletToolbarAddItem 0123 flickable: appletFlickable 0124 Layout.alignment: Qt.AlignBottom 0125 Layout.fillWidth: true 0126 } 0127 } 0128 }