Warning, /system/mycroft-gui/import/qml/SlideShow.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2019 by Aditya Mehra <aix.m@outlook.com> 0003 * Copyright 2019 by Marco Martin <mart@kde.org> 0004 * 0005 * Licensed under the Apache License, Version 2.0 (the "License"); 0006 * you may not use this file except in compliance with the License. 0007 * You may obtain a copy of the License at 0008 * 0009 * http://www.apache.org/licenses/LICENSE-2.0 0010 * 0011 * Unless required by applicable law or agreed to in writing, software 0012 * distributed under the License is distributed on an "AS IS" BASIS, 0013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 0014 * See the License for the specific language governing permissions and 0015 * limitations under the License. 0016 * 0017 */ 0018 0019 0020 import QtQuick 2.15 0021 import QtQuick.Layouts 1.15 0022 import QtQuick.Controls 2.15 as Controls 0023 import org.kde.kirigami 2.19 as Kirigami 0024 import Mycroft 1.0 as Mycroft 0025 0026 /** 0027 * Contains an slideshow object that can autoplay each slide and loop 0028 * This can be used inside any mycroft delegate like in the following example. 0029 * 0030 * @code 0031 * Mycroft.Delegate { 0032 * ... 0033 * Mycroft.SlideShow { 0034 * id: root model: sessionData.exampleModel // model with slideshow data 0035 * anchors.fill: parent 0036 * interval: 5000 // time to switch between slides 0037 * running: true // can be set to false if one wants to swipe manually 0038 * delegate: Item {...} 0039 * loop: true // can be set to play through continously or just once 0040 * } 0041 * } 0042 * @endcode 0043 */ 0044 0045 Item { 0046 id: root 0047 focus: true 0048 0049 //Listview Model 0050 property alias model: slideShowView.model 0051 0052 //Listview Delegate 0053 property alias delegate: slideShowView.delegate 0054 0055 //Slideshow Timer Control 0056 property alias interval: slideShowTimer.interval 0057 0058 //Slideshow Timer Running 0059 property alias running: slideShowTimer.running 0060 0061 //Slideshow Timer Loop 0062 property alias loop: slideShowTimer.repeat 0063 0064 Timer { 0065 id: slideShowTimer 0066 interval: 5000 0067 running: false 0068 repeat: true 0069 onTriggered: { 0070 var getCount = slideShowView.count 0071 if(slideShowView.currentIndex !== getCount){ 0072 slideShowView.currentIndex = slideShowView.currentIndex+1; 0073 } else{ 0074 slideShowView.currentIndex = 0 0075 } 0076 } 0077 } 0078 0079 ColumnLayout { 0080 anchors.fill: parent 0081 spacing: Kirigami.Units.largeSpacing 0082 0083 ListView { 0084 id: slideShowView 0085 layoutDirection: Qt.LeftToRight 0086 Layout.fillWidth: true 0087 Layout.alignment: Qt.AlignTop 0088 Layout.preferredHeight: root.height - slideshowIndicator.height 0089 orientation: ListView.Horizontal 0090 snapMode: ListView.SnapOneItem; 0091 flickableDirection: Flickable.AutoFlickDirection 0092 highlightRangeMode: ListView.StrictlyEnforceRange 0093 highlightFollowsCurrentItem: true 0094 spacing: Kirigami.Units.largeSpacing 0095 clip: true 0096 0097 onFlickEnded: { 0098 slideShowTimer.restart() 0099 } 0100 } 0101 0102 Controls.PageIndicator { 0103 id: slideshowIndicator 0104 Layout.preferredHeight: Kirigami.Units.gridUnit * 2 0105 Layout.alignment: Qt.AlignTop | Qt.AlignHCenter 0106 currentIndex: slideShowView.currentIndex 0107 count: slideShowView.count 0108 } 0109 } 0110 0111 Keys.onLeftPressed: { 0112 if (slideShowView.currentIndex > 0 ) { 0113 slideShowView.currentIndex = slideShowView.currentIndex-1 0114 } 0115 0116 if (slideShowView.currentIndex == 0 ) { 0117 slideShowView.currentIndex = slideShowView.count 0118 } 0119 slideShowTimer.restart() 0120 } 0121 0122 Keys.onRightPressed: { 0123 if (slideShowView.currentIndex < slideShowView.count) { 0124 slideShowView.currentIndex = Math.min(slideShowView.currentIndex+1, slideShowView.count) 0125 } 0126 0127 if(slideShowView.currentIndex == slideShowView.count) { 0128 slideShowView.currentIndex = 0 0129 } 0130 slideShowTimer.restart() 0131 } 0132 }