Warning, /system/mycroft-gui/import/qml/private/ImageBackground.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * Copyright 2018 by Marco Martin <mart@kde.org>
0003 * Copyright 2018 David Edmundson <davidedmundson@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 import QtQuick 2.15
0020 import QtQuick.Layouts 1.15
0021 import QtQuick.Controls 2.15 as Controls
0022 import org.kde.kirigami 2.19 as Kirigami
0023
0024
0025 Item {
0026 id: backgroundImage
0027 anchors.fill: parent
0028
0029 property Kirigami.ColumnView delegatesView
0030 property string source: delegatesView && delegatesView.currentItem && delegatesView.currentItem.contentItem ? delegatesView.currentItem.contentItem.skillBackgroundSource : ""
0031 property Image currentImage: image1
0032
0033 onSourceChanged: {
0034 if (backgroundImage.currentImage == image1) {
0035 image2.opacity = 0;
0036 image2.source = source;
0037 backgroundImage.setCurrent(image2);
0038 } else {
0039 image1.opacity = 0;
0040 image1.source = source;
0041 backgroundImage.setCurrent(image1);
0042 }
0043 }
0044
0045 function setCurrent(image) {
0046 if (image.status === Image.Ready) {
0047 backgroundImage.currentImage = image;
0048 fadeAnim.restart();
0049 }
0050 }
0051
0052 Rectangle {
0053 z: 10
0054 anchors.fill: parent
0055 color: delegatesView && delegatesView.currentItem && delegatesView.currentItem.contentItem ? delegatesView.currentItem.contentItem.skillBackgroundColorOverlay : "transparent"
0056 }
0057 Image {
0058 id: image1
0059 anchors.fill: parent
0060 z: backgroundImage.currentImage == image1 ? 1 : 0
0061 fillMode: Image.PreserveAspectCrop
0062 onStatusChanged: {
0063 if (backgroundImage.currentImage == image2 && status == Image.Ready) {
0064 backgroundImage.setCurrent(image1);
0065 }
0066 }
0067 }
0068 Image {
0069 id: image2
0070 anchors.fill: parent
0071 z: backgroundImage.currentImage == image2 ? 1 : 0
0072 fillMode: Image.PreserveAspectCrop
0073 onStatusChanged: {
0074 if (backgroundImage.currentImage == image1 && status == Image.Ready) {
0075 backgroundImage.setCurrent(image2);
0076 }
0077 }
0078 }
0079 SequentialAnimation {
0080 id: fadeAnim
0081 OpacityAnimator {
0082 target: backgroundImage.currentImage
0083 from: 0
0084 to: 1
0085 duration: 1000
0086 easing.type: Easing.InOutQuad
0087 }
0088 // OpacityAnimator makes the image disappear immediately
0089 PropertyAnimation {
0090 property: "opacity"
0091 target: backgroundImage.currentImage == image1 ? image2 : image1
0092 from: 1
0093 to: 0
0094 duration: 1000
0095 easing.type: Easing.InOutQuad
0096 }
0097 }
0098 }