mirror of
https://gitgud.io/wackyideas/aerothemeplasma.git
synced 2024-08-15 00:43:43 +00:00
203 lines
7.5 KiB
QML
203 lines
7.5 KiB
QML
|
/*
|
||
|
SPDX-FileCopyrightText: 2024 Marco Martin <mart@kde.org>
|
||
|
SPDX-FileCopyrightText: 2014 David Edmundson <davidedmundson@kde.org>
|
||
|
|
||
|
SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
*/
|
||
|
|
||
|
import QtQuick 2.15
|
||
|
import QtQuick.Effects
|
||
|
import QtQuick.Layouts
|
||
|
|
||
|
import org.kde.plasma.core as PlasmaCore
|
||
|
import org.kde.plasma.components as PC
|
||
|
import org.kde.kirigami 2.20 as Kirigami
|
||
|
|
||
|
import org.kde.kcmutils as KCM
|
||
|
|
||
|
Item {
|
||
|
property real centerX: Math.round(editModeUi.x + editModeUi.width/2)
|
||
|
property real centerY: Math.round(editModeUi.y + editModeUi.height/2)
|
||
|
property real roundedRootWidth: Math.round(root.width)
|
||
|
property real roundedRootHeight: Math.round(root.height)
|
||
|
|
||
|
property bool open: false
|
||
|
Component.onCompleted: {
|
||
|
open = Qt.binding(() => {return containment.plasmoid.corona.editMode})
|
||
|
}
|
||
|
|
||
|
// Those 2 elements have the same parameters as the overview effect
|
||
|
MultiEffect {
|
||
|
source: containment
|
||
|
anchors.fill: parent
|
||
|
blurEnabled: true
|
||
|
blurMax: 64
|
||
|
blur: 1.0
|
||
|
}
|
||
|
Rectangle {
|
||
|
anchors.fill: parent
|
||
|
color: Kirigami.Theme.backgroundColor
|
||
|
opacity: 0.7
|
||
|
}
|
||
|
|
||
|
Item {
|
||
|
id: editModeUi
|
||
|
visible: open || xAnim.running
|
||
|
x: Math.round(open ? editModeRect.x + editModeRect.width/2 - zoomedWidth/2 : 0)
|
||
|
y: Math.round(open ? editModeRect.y + editModeRect.height/2 - zoomedHeight/2 + toolBar.height/2 : 0)
|
||
|
width: open ? zoomedWidth : roundedRootWidth
|
||
|
height: open ? zoomedHeight : roundedRootHeight
|
||
|
property real zoomedWidth: Math.round(root.width * containmentParent.scaleFactor)
|
||
|
property real zoomedHeight: Math.round(root.height * containmentParent.scaleFactor)
|
||
|
|
||
|
Kirigami.ShadowedRectangle {
|
||
|
color: Kirigami.Theme.backgroundColor
|
||
|
width: Math.round(parent.width)
|
||
|
height: Math.round(parent.height + toolBar.height + Kirigami.Units.largeSpacing)
|
||
|
y: - toolBar.height - Kirigami.Units.largeSpacing
|
||
|
|
||
|
radius: open ? Kirigami.Units.cornerRadius : 0
|
||
|
Behavior on radius {
|
||
|
NumberAnimation {
|
||
|
duration: Kirigami.Units.longDuration
|
||
|
easing.type: Easing.InOutQuad
|
||
|
}
|
||
|
}
|
||
|
|
||
|
shadow {
|
||
|
size: Kirigami.Units.gridUnit * 2
|
||
|
color: Qt.rgba(0, 0, 0, 0.3)
|
||
|
yOffset: 3
|
||
|
}
|
||
|
RowLayout {
|
||
|
id: toolBar
|
||
|
LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft
|
||
|
LayoutMirroring.childrenInherit: true
|
||
|
anchors {
|
||
|
left: parent.left
|
||
|
top: parent.top
|
||
|
right: parent.right
|
||
|
margins: Kirigami.Units.smallSpacing
|
||
|
}
|
||
|
Flow {
|
||
|
Layout.fillWidth: true
|
||
|
Layout.minimumHeight: implicitHeight
|
||
|
PC.ToolButton {
|
||
|
id: addWidgetButton
|
||
|
property QtObject qAction: containment?.plasmoid.internalAction("add widgets") || null
|
||
|
text: qAction?.text
|
||
|
icon.name: "list-add"
|
||
|
onClicked: qAction.trigger()
|
||
|
}
|
||
|
|
||
|
PC.ToolButton {
|
||
|
id: addPanelButton
|
||
|
height: addWidgetButton.height
|
||
|
property QtObject qAction: containment?.plasmoid.corona.action("add panel") || null
|
||
|
text: qAction?.text
|
||
|
icon.name: "list-add"
|
||
|
Accessible.role: Accessible.ButtonMenu
|
||
|
onClicked: containment.plasmoid.corona.showAddPanelContextMenu(mapToGlobal(0, height))
|
||
|
}
|
||
|
|
||
|
PC.ToolButton {
|
||
|
id: configureButton
|
||
|
property QtObject qAction: containment?.plasmoid.internalAction("configure") || null
|
||
|
text: qAction?.text
|
||
|
icon.name: "preferences-desktop-wallpaper"
|
||
|
onClicked: qAction.trigger()
|
||
|
}
|
||
|
|
||
|
PC.ToolButton {
|
||
|
id: themeButton
|
||
|
text: i18nd("plasma_shell_org.kde.plasma.desktop", "Global Themes")
|
||
|
icon.name: "preferences-desktop-theme-global"
|
||
|
onClicked: KCM.KCMLauncher.openSystemSettings("kcm_lookandfeel")
|
||
|
}
|
||
|
|
||
|
PC.ToolButton {
|
||
|
id: displaySettingsButton
|
||
|
text: i18nd("plasma_shell_org.kde.plasma.desktop", "Display Configuration")
|
||
|
icon.name: "preferences-desktop-display"
|
||
|
onClicked: KCM.KCMLauncher.openSystemSettings("kcm_kscreen")
|
||
|
}
|
||
|
|
||
|
PC.ToolButton {
|
||
|
id: manageContainmentsButton
|
||
|
property QtObject qAction: containment?.plasmoid.corona.action("manage-containments") || null
|
||
|
text: qAction?.text
|
||
|
visible: qAction?.visible || false
|
||
|
icon.name: "preferences-system-windows-effect-fadedesktop"
|
||
|
onClicked: qAction.trigger()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
PC.ToolButton {
|
||
|
Layout.alignment: Qt.AlignTop
|
||
|
|
||
|
visible: Kirigami.Settings.hasTransientTouchInput || Kirigami.Settings.tabletMode
|
||
|
|
||
|
icon.name: "overflow-menu"
|
||
|
text: i18ndc("plasma_shell_org.kde.plasma.desktop", "@action:button", "More")
|
||
|
|
||
|
onClicked: {
|
||
|
containment.openContextMenu(mapToGlobal(0, height));
|
||
|
}
|
||
|
}
|
||
|
PC.ToolButton {
|
||
|
Layout.alignment: Qt.AlignTop
|
||
|
icon.name: "window-close"
|
||
|
text: i18nd("plasma_shell_org.kde.plasma.desktop", "Exit Edit Mode")
|
||
|
onClicked: containment.plasmoid.corona.editMode = false
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Behavior on x {
|
||
|
NumberAnimation {
|
||
|
id: xAnim
|
||
|
duration: Kirigami.Units.longDuration
|
||
|
easing.type: Easing.InOutQuad
|
||
|
}
|
||
|
}
|
||
|
Behavior on y {
|
||
|
NumberAnimation {
|
||
|
duration: Kirigami.Units.longDuration
|
||
|
easing.type: Easing.InOutQuad
|
||
|
}
|
||
|
}
|
||
|
Behavior on width {
|
||
|
NumberAnimation {
|
||
|
duration: Kirigami.Units.longDuration
|
||
|
easing.type: Easing.InOutQuad
|
||
|
}
|
||
|
}
|
||
|
Behavior on height {
|
||
|
NumberAnimation {
|
||
|
duration: Kirigami.Units.longDuration
|
||
|
easing.type: Easing.InOutQuad
|
||
|
}
|
||
|
}
|
||
|
|
||
|
MultiEffect {
|
||
|
anchors.fill: parent
|
||
|
source: containment
|
||
|
layer.enabled: true
|
||
|
layer.smooth: true
|
||
|
layer.effect: Kirigami.ShadowedTexture {
|
||
|
width: roundedRootWidth
|
||
|
height: roundedRootHeight
|
||
|
color: "transparent"
|
||
|
|
||
|
radius: open ? Kirigami.Units.cornerRadius : 0
|
||
|
Behavior on radius {
|
||
|
NumberAnimation {
|
||
|
duration: Kirigami.Units.longDuration
|
||
|
easing.type: Easing.InOutQuad
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|