Warning, /plasma/latte-dock/plasmoid/package/contents/ui/task/AudioStream.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2017 Kai Uwe Broulik <kde@privat.broulik.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.0
0008 
0009 import org.kde.plasma.core 2.0 as PlasmaCore
0010 
0011 import org.kde.latte.core 0.2 as LatteCore
0012 import org.kde.latte.components 1.0 as LatteComponents
0013 
0014 Item {
0015     id: background
0016 
0017     Item {
0018         id: subRectangle
0019         width: parent.width/ 2
0020         height: width
0021 
0022         states: [
0023             State {
0024                 name: "default"
0025                 when: (root.location !== PlasmaCore.Types.RightEdge)
0026 
0027                 AnchorChanges {
0028                     target: subRectangle
0029                     anchors{ top:parent.top; bottom:undefined; left:parent.left; right:undefined;}
0030                 }
0031             },
0032             State {
0033                 name: "right"
0034                 when: (root.location === PlasmaCore.Types.RightEdge)
0035 
0036                 AnchorChanges {
0037                     target: subRectangle
0038                     anchors{ top:parent.top; bottom:undefined; left:undefined; right:parent.right;}
0039                 }
0040             }
0041         ]
0042 
0043         LatteComponents.BadgeText {
0044             anchors.centerIn: parent
0045             width: 0.8 * parent.width
0046             height: width
0047             minimumWidth: width
0048             maximumWidth: width
0049 
0050             fullCircle: true
0051             showNumber: false
0052             showText: true
0053 
0054             color: theme.backgroundColor
0055             borderColor: root.lightTextColor
0056             proportion: 0
0057             radiusPerCentage: 100
0058 
0059             style3d: taskItem.abilities.myView.badgesIn3DStyle
0060 
0061             LatteCore.IconItem{
0062                 id: audioStreamIcon
0063                 anchors.centerIn: parent
0064                 width: 0.9*parent.width
0065                 height: width
0066                 colorGroup: PlasmaCore.Theme.ButtonColorGroup
0067                 usesPlasmaTheme: true
0068 
0069                 //opacity: taskItem.playingAudio && !taskItem.muted ? 1 : 0.85
0070                 source: {
0071                     if (taskItem.volume <= 0 || taskItem.muted) {
0072                         return "audio-volume-muted";
0073                     } else if (taskItem.volume <= 25) {
0074                         return "audio-volume-low";
0075                     } else if (taskItem.volume <= 75) {
0076                         return "audio-volume-medium";
0077                     } else {
0078                         return "audio-volume-high" ;
0079                     }
0080                 }
0081 
0082                 MouseArea{
0083                     id: audioBadgeMouseArea
0084                     anchors.fill: parent
0085                     enabled: root.audioBadgeActionsEnabled
0086 
0087                     property bool wheelIsBlocked: false;
0088 
0089                     onClicked: {
0090                         taskItem.toggleMuted();
0091                     }
0092 
0093                     onWheel: {
0094                         if (wheelIsBlocked) {
0095                             return;
0096                         }
0097 
0098                         wheelIsBlocked = true;
0099                         scrollDelayer.start();
0100 
0101                         var angle = wheel.angleDelta.y / 8;
0102 
0103                         if (angle > 2) {
0104                             taskItem.increaseVolume();
0105                         } else if (angle < -2) {
0106                             taskItem.decreaseVolume();
0107                         }
0108                     }
0109 
0110                     //! A timer is needed in order to handle also touchpads that probably
0111                     //! send too many signals very fast. This way the signals per sec are limited.
0112                     //! The user needs to have a steady normal scroll in order to not
0113                     //! notice a annoying delay
0114                     Timer{
0115                         id: scrollDelayer
0116 
0117                         interval: 80
0118 
0119                         onTriggered: audioBadgeMouseArea.wheelIsBlocked = false;
0120                     }
0121                 }
0122             }
0123         }
0124     }
0125 }