aerothemeplasma/plasma/plasmoids/io.gitgud.wackyideas.SevenStart/contents/ui/FloatingOrb.qml

81 lines
2.8 KiB
QML

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Dialogs
import QtQuick.Window
import org.kde.plasma.plasmoid
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.components as PlasmaComponents
import org.kde.plasma.extras as PlasmaExtras
import org.kde.plasma.private.kicker as Kicker
import org.kde.coreaddons as KCoreAddons // kuser
import org.kde.plasma.private.shell 2.0
import org.kde.kquickcontrolsaddons 2.0
import org.kde.kwindowsystem 1.0
import org.kde.kirigami as Kirigami
Item {
id: floatingOrb
width: scaledWidth //buttonIconSizes.width
height: scaledHeight / 3 //buttonIconSizes.height / 3
property alias buttonIconSizes: buttonIconSizes
property alias buttonIcon: buttonIcon
property alias buttonIconPressed: buttonIconPressed
property alias buttonIconHovered: buttonIconHovered
property string orbTexture: getResolvedUrl(Plasmoid.configuration.customButtonImage, "orbs/orb" + (stickOutOrb ? "_small" : "") + ".png")
property int opacityDuration: 300
Image {
id: buttonIconSizes
smooth: true
source: orbTexture
opacity: 0;
}
clip: false
property real aspectRatio: buttonIconSizes.height === 0 ? 1 : (buttonIconSizes.width / buttonIconSizes.height)
property int scaledWidth: Plasmoid.configuration.orbWidth === 0 ? buttonIconSizes.width : Plasmoid.configuration.orbWidth
property int scaledHeight: scaledWidth / aspectRatio
Image {
id: buttonIcon
anchors.centerIn: parent
smooth: true
source: floatingOrb.orbTexture
sourceClipRect: Qt.rect(0, 0, buttonIconSizes.width, buttonIconSizes.height / 3);
fillMode: Image.PreserveAspectFit
width: floatingOrb.scaledWidth
height: floatingOrb.scaledHeight
}
Image {
id: buttonIconPressed
anchors.centerIn: parent
visible: dashWindow.visible
smooth: true
source: floatingOrb.orbTexture
sourceClipRect: Qt.rect(0, 2*buttonIconSizes.height / 3, buttonIconSizes.width, buttonIconSizes.height / 3);
fillMode: Image.PreserveAspectFit
width: floatingOrb.scaledWidth
height: floatingOrb.scaledHeight
}
Image {
id: buttonIconHovered
anchors.centerIn: parent
source: floatingOrb.orbTexture
smooth: true
opacity: mouseAreaCompositingOff.containsMouse
visible: !dashWindow.visible
Behavior on opacity {
NumberAnimation { properties: "opacity"; easing.type: Easing.Linear; duration: floatingOrb.opacityDuration }
}
sourceClipRect: Qt.rect(0, buttonIconSizes.height / 3, buttonIconSizes.width, buttonIconSizes.height / 3);
fillMode: Image.PreserveAspectFit
width: floatingOrb.scaledWidth
height: floatingOrb.scaledHeight
}
}