Warning, /maui/vvave/src/widgets/FloatingDisk.qml is written in an unsupported language. File is not indexed.

0001 import QtQuick 2.15
0002 import QtQml 2.15
0003 import QtQuick.Controls 2.15
0004 
0005 import QtGraphicalEffects 1.0
0006 
0007 import org.mauikit.controls 1.3 as Maui
0008 
0009 Control
0010 {
0011     id: control
0012 
0013     parent: ApplicationWindow.overlay
0014     z: parent.z + 1
0015 
0016     Maui.Theme.inherit: false
0017     Maui.Theme.colorSet: Maui.Theme.Complementary
0018 
0019     visible: opacity > 0
0020 
0021     scale: root.focusView ? 2 : 1
0022 
0023     implicitHeight: _mouseArea.implicitHeight + topPadding + bottomPadding
0024     implicitWidth: _mouseArea.implicitWidth + leftPadding + rightPadding
0025 
0026     padding: Maui.Style.space.tiny
0027 
0028     ToolTip.delay: 1000
0029     ToolTip.timeout: 5000
0030     ToolTip.visible: _mouseArea.containsMouse && !Maui.Handy.isMobile
0031     ToolTip.text: root.title
0032 
0033     opacity: root.focusView ? 0 :  1
0034 
0035     property int radius:  root.focusView ? Maui.Style.radiusV : Math.min(width, height)
0036 
0037     Behavior on radius
0038     {
0039         NumberAnimation { duration: 200; easing.type: Easing.OutCubic }
0040     }
0041 
0042     Behavior on opacity
0043     {
0044         NumberAnimation { duration: 200; easing.type: Easing.OutCubic }
0045     }
0046 
0047     Behavior on scale
0048     {
0049         NumberAnimation { duration: 200; easing.type: Easing.OutCubic }
0050     }
0051 
0052     y: root.height - control.implicitHeight - Maui.Style.space.medium - _mainPage.footerContainer.implicitHeight
0053     x: root.width - control.implicitWidth - Maui.Style.space.medium
0054 
0055 //    Binding on x
0056 //    {
0057 //        when: !_mouseArea.pressed
0058 //        value: control.x
0059 //        restoreMode: Binding.RestoreBindingOrValue
0060 //        delayed: true
0061 //    }
0062 
0063 //    Binding on y
0064 //    {
0065 //        when: !_mouseArea.pressed
0066 //        value: control.y
0067 //        restoreMode: Binding.RestoreBindingOrValue
0068 //        delayed: true
0069 //    }
0070 
0071     background: Rectangle
0072     {
0073         id: diskBg
0074         color: "white"
0075         radius: control.radius
0076 
0077         layer.enabled: true
0078         layer.effect: DropShadow
0079         {
0080             horizontalOffset: 0
0081             verticalOffset: 0
0082             radius: _mouseArea.containsPress ? 5.0 :8.0
0083             samples: 17
0084             color: "#80000000"
0085         }
0086     }
0087 
0088     contentItem: MouseArea
0089     {
0090         id: _mouseArea
0091 
0092         implicitHeight: Maui.Style.iconSizes.large * (_mouseArea.containsPress ? 1.19 : 1.2)
0093         implicitWidth: implicitHeight
0094 
0095         hoverEnabled: true
0096 
0097         drag.target: control
0098         drag.axis: Drag.XAndYAxis
0099 
0100         drag.minimumX: 0
0101         drag.maximumX: root.width - control.width
0102 
0103         drag.minimumY: 0
0104         drag.maximumY: root.height - control.height
0105 
0106         onClicked: toggleFocusView()
0107 //        onPressAndHold: toggleMiniMode()
0108 
0109         Image
0110         {
0111             id: miniArtwork
0112             focus: true
0113             anchors.fill: parent
0114             source: "image://artwork/album:"+currentTrack.artist + ":"+ currentTrack.album
0115             fillMode: Image.PreserveAspectFit
0116 
0117             layer.enabled: true
0118             layer.effect: OpacityMask
0119             {
0120                 maskSource: Rectangle
0121                 {
0122                     height: miniArtwork.height
0123                     width: miniArtwork.width
0124                     radius: control.radius
0125                 }
0126             }
0127         }
0128     }
0129 
0130     RotationAnimator on rotation
0131     {
0132         from: 0
0133         to: 360
0134         duration: 5000
0135         loops: Animation.Infinite
0136         running: isPlaying && Maui.Style.enableEffects
0137     }
0138 }