Warning, /plasma-mobile/mycroft-plasmoid-mobile/plasmoid/contents/ui/CustomMicIndicator.qml is written in an unsupported language. File is not indexed.

0001 /* Copyright 2016 Aditya Mehra <aix.m@outlook.com>                            
0002 
0003     This library is free software; you can redistribute it and/or
0004     modify it under the terms of the GNU Lesser General Public
0005     License as published by the Free Software Foundation; either
0006     version 2.1 of the License, or (at your option) version 3, or any
0007     later version accepted by the membership of KDE e.V. (or its
0008     successor approved by the membership of KDE e.V.), which shall
0009     act as a proxy defined in Section 6 of version 3 of the license.
0010     
0011     This library is distributed in the hope that it will be useful,
0012     but WITHOUT ANY WARRANTY; without even the implied warranty of
0013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0014     Lesser General Public License for more details.
0015     
0016     You should have received a copy of the GNU Lesser General Public
0017     License along with this library.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 
0020 
0021 import QtQuick 2.9
0022 import org.kde.plasma.components 2.0 as PlasmaComponents
0023 import QtQuick.Controls 2.2
0024 import QtQuick.Layouts 1.3
0025 import QtGraphicalEffects 1.0
0026 
0027 Item {
0028     id: bgrectA
0029     
0030     function aniRunWorking(){
0031         animtimer.start()
0032         topCircle.inneranimtopworking.start()
0033         maskItem.inneranimworking.start()
0034     }
0035 
0036     function aniRunTransition(){
0037         animtimer.start()
0038         topCircle.inneranimtoptransition.start()
0039         maskItem.inneranimtransition.start()
0040     }
0041 
0042 
0043     function aniRunHappy (){
0044        animtimer.start()
0045        topCircle.inneranimtophappy.start()
0046        maskItem.inneranimhappy.start()
0047     }
0048 
0049     function aniRunError(){
0050         animtimer.start()
0051         topCircle.inneranimtopsad.start()
0052         maskItem.inneranimsad.start()
0053     }
0054 
0055 Item{
0056     id: customIndicatorBusy
0057     anchors.fill: parent
0058     visible: true
0059 
0060     RotationAnimator {
0061         target:topCircle
0062         id: antoWorking
0063         from: 0;
0064         to: 360;
0065         duration: 500
0066         running: false
0067         alwaysRunToEnd: true
0068     }
0069 
0070     RotationAnimator {
0071         target:topCircle
0072         id: antoTransition
0073         from: 0;
0074         to: 0;
0075         duration: 500
0076         running: false
0077         alwaysRunToEnd: true
0078     }
0079 
0080     RotationAnimator {
0081         target:topCircle
0082         id: antoSad
0083         from: 0;
0084         to: 180;
0085         duration: 500
0086         direction: RotationAnimator.Counterclockwise
0087         running: false
0088         alwaysRunToEnd: true;
0089 
0090     }
0091 
0092     RotationAnimator {
0093         target:topCircle
0094         id: antoHappy
0095         from: 0;
0096         to: 360;
0097         duration: 500
0098         running: false
0099         alwaysRunToEnd: true;
0100     }
0101 
0102     SequentialAnimation {
0103         id: seqmaskanimworking
0104         running: false
0105         loops: Animation.Infinite
0106         PropertyAction { target: myRot; property: "origin.x"; value: units.gridUnit * 0.78 }
0107         PropertyAction { target: myRot; property: "origin.y"; value: units.gridUnit * 0.78 }
0108        NumberAnimation { target: myRot; property: "angle"; from:0; to: -360; duration: 500}
0109 
0110        onStopped: {
0111            myRot.angle = 0
0112        }
0113     }
0114 
0115     SequentialAnimation {
0116         id: seqmaskanimtransition
0117         running: false
0118         loops: Animation.Infinite
0119         PropertyAction { target: myRot; property: "origin.x"; value: units.gridUnit * 0.78 }
0120         PropertyAction { target: myRot; property: "origin.y"; value: units.gridUnit * 0.78 }
0121         NumberAnimation { target: myRot; property: "angle"; from: 0; to: 0; duration: 500}
0122     }
0123 
0124     SequentialAnimation {
0125         id: colrmeonAnsHappy
0126         ParallelAnimation {
0127         PropertyAnimation { target: innerCircleSurround; property: "color"; from: "#ffffff"; to: "lightgreen"; duration: 500; }
0128         PropertyAnimation { target: circ; property: "color"; from: "#ffffff"; to: "lightgreen"; duration: 500; }
0129         PropertyAnimation { target: topCircle.circle; property: "color"; from: "#ffffff"; to: "lightgreen"; duration: 500; }
0130         }
0131         ParallelAnimation {
0132         PropertyAnimation { target: innerCircleSurround; property: "color"; from: "lightgreen"; to: "#fff"; duration: 500; }
0133         PropertyAnimation { target: circ; property: "color"; from: "lightgreen"; to: "#fff"; duration: 500; }
0134         PropertyAnimation { target: topCircle.circle; property: "color"; from: "lightgreen"; to: "#fff"; duration: 500; }
0135         }
0136     }
0137 
0138     SequentialAnimation {
0139         id: colrmeonAnsSad
0140         ParallelAnimation {
0141         PropertyAnimation { target: innerCircleSurround; property: "color"; from: "#ffffff"; to: "red"; duration: 500; }
0142         PropertyAnimation { target: circ; property: "color"; from: "#ffffff"; to: "red"; duration: 1000; }
0143         PropertyAnimation { target: topCircle.circle; property: "color"; from: "#ffffff"; to: "red"; duration: 500; }
0144         }
0145         ParallelAnimation {
0146         PropertyAnimation { target: innerCircleSurround; property: "color"; from: "red"; to: "#fff"; duration: 500; }
0147         PropertyAnimation { target: circ; property: "color"; from: "red"; to: "#fff"; duration: 1000; }
0148         PropertyAnimation { target: topCircle.circle; property: "color"; from: "red"; to: "#fff"; duration: 500; }
0149         }
0150     }
0151 
0152     SequentialAnimation {
0153         id: seqmaskanimhappy
0154         running: false
0155         loops: Animation.Infinite
0156         PropertyAction { target: myRot; property: "origin.x"; value: units.gridUnit * 0.74 }
0157         PropertyAction { target: myRot; property: "origin.y"; value: units.gridUnit * 0.76 }
0158         NumberAnimation { target: myRot; property: "angle"; from:0; to: -360; duration: 500 }
0159 
0160        onStopped: {
0161            myRot.angle = -90
0162            transtimer.start()
0163        }
0164 
0165        onStarted: {
0166            colrmeonAnsHappy.running = true
0167        }
0168     }
0169 
0170     SequentialAnimation {
0171         id: seqmaskanimsad
0172         running: false
0173         loops: Animation.Infinite
0174         PropertyAction { target: myRot; property: "origin.x"; value: units.gridUnit * 0.76 }
0175         PropertyAction { target: myRot; property: "origin.y"; value: units.gridUnit * 0.76 }
0176         NumberAnimation { target: myRot; property: "angle"; from:0; to: 360; duration: 500}
0177 
0178        onStopped: {
0179            myRot.angle = 90
0180            transtimer.start()
0181        }
0182 
0183        onStarted: {
0184            colrmeonAnsSad.running = true
0185        }
0186     }
0187 
0188     Item{
0189         anchors.fill: parent
0190 
0191     Rectangle {
0192              id: topCircle
0193              anchors.horizontalCenter: parent.horizontalCenter
0194              anchors.verticalCenter: parent.verticalCenter
0195              color: "#00000000"
0196              radius: 1
0197              opacity: 1
0198              implicitWidth: units.gridUnit * 3
0199              implicitHeight: units.gridUnit * 3
0200              property alias inneranimtopworking: antoWorking
0201              property alias inneranimtophappy: antoHappy
0202              property alias inneranimtopsad: antoSad
0203              property alias inneranimtoptransition: antoTransition
0204              property alias circle: innerSqr
0205 
0206              Rectangle{
0207                 id: innerSqr
0208                 anchors.top: parent.top
0209                 anchors.horizontalCenter: parent.horizontalCenter
0210                 color: "#fff"
0211                 radius: 100
0212                 width: units.gridUnit * 0.3
0213                 height: units.gridUnit * 0.3
0214              }
0215                     }
0216 
0217     Rectangle {
0218          id: innerCircleSurround
0219          anchors.centerIn: parent
0220          color: "#ffffff"
0221          radius: 100
0222          implicitWidth: units.gridUnit * 2
0223          implicitHeight: units.gridUnit * 2
0224          opacity: 1
0225         }
0226 
0227     Rectangle {
0228          id: innerCircleSurroundOutterRing
0229          anchors.centerIn: parent
0230          color: theme.linkColor
0231          radius: 100
0232          implicitWidth: units.gridUnit * 1.833
0233          implicitHeight: units.gridUnit * 1.833
0234          opacity: 1
0235         }
0236 
0237     Rectangle {
0238         id: maskItem
0239          anchors.verticalCenter: parent.verticalCenter
0240          anchors.left: innerCircleSurroundOutterRing.left
0241          anchors.leftMargin: units.gridUnit * 0.2
0242          color: "#00000000"
0243          radius: 1000
0244          implicitWidth: units.gridUnit * 0.833
0245          implicitHeight: units.gridUnit * 1.6
0246          clip: true
0247          property alias cc: semicirc
0248          property alias inneranimworking: seqmaskanimworking
0249          property alias inneranimtransition: seqmaskanimtransition
0250          property alias inneranimhappy: seqmaskanimhappy
0251          property alias inneranimsad: seqmaskanimsad
0252          opacity: 1
0253 
0254          transform: Rotation {
0255                      id: myRot
0256                  }
0257 
0258     Item {
0259            id: semicirc
0260            anchors.left: parent.left
0261            anchors.top: parent.top
0262            anchors.bottom: parent.bottom
0263            width: units.gridUnit * 3.133
0264            clip:true
0265            opacity: 1
0266 
0267            Rectangle{
0268                id: circ
0269                width: parent.width
0270                height: parent.height
0271                radius:100
0272                color: "white"
0273          }
0274        }
0275       }
0276 
0277     Timer {
0278         id: animtimer
0279         interval: 500;
0280         repeat: false
0281         onTriggered: {
0282             maskItem.inneranimworking.stop()
0283             maskItem.inneranimtransition.stop()
0284             maskItem.inneranimhappy.stop()
0285             maskItem.inneranimsad.stop()
0286             topCircle.inneranimtopworking.stop()
0287             topCircle.inneranimtoptransition.stop()
0288             topCircle.inneranimtophappy.stop()
0289             topCircle.inneranimtopsad.stop()
0290             }
0291         }
0292 
0293     Timer {
0294         id: transtimer
0295         interval: 500;
0296         repeat: false
0297         onTriggered: {
0298             myRot.angle = 0
0299             antoTransition.running = true
0300                     }
0301                 }
0302             }
0303         }
0304       }