mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-05 21:15:38 -05:00
117 lines
3.4 KiB
QML
117 lines
3.4 KiB
QML
import QtQuick
|
|
import qs.Common
|
|
import qs.Widgets
|
|
|
|
DankPopout {
|
|
id: root
|
|
|
|
property var triggerScreen: null
|
|
property Component pluginContent: null
|
|
property real contentWidth: 400
|
|
property real contentHeight: 400
|
|
|
|
function setTriggerPosition(x, y, width, section, screen) {
|
|
triggerX = x
|
|
triggerY = y
|
|
triggerWidth = width
|
|
triggerSection = section
|
|
triggerScreen = screen
|
|
}
|
|
|
|
popupWidth: contentWidth
|
|
popupHeight: popoutContent.item ? popoutContent.item.implicitHeight : contentHeight
|
|
screen: triggerScreen
|
|
shouldBeVisible: false
|
|
visible: shouldBeVisible
|
|
|
|
content: Component {
|
|
Rectangle {
|
|
id: popoutContainer
|
|
|
|
implicitHeight: popoutColumn.implicitHeight + Theme.spacingL * 2
|
|
color: Theme.popupBackground()
|
|
radius: Theme.cornerRadius
|
|
border.width: 0
|
|
antialiasing: true
|
|
smooth: true
|
|
focus: true
|
|
|
|
Component.onCompleted: {
|
|
if (root.shouldBeVisible) {
|
|
forceActiveFocus()
|
|
}
|
|
}
|
|
|
|
Keys.onPressed: event => {
|
|
if (event.key === Qt.Key_Escape) {
|
|
root.close()
|
|
event.accepted = true
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: root
|
|
function onShouldBeVisibleChanged() {
|
|
if (root.shouldBeVisible) {
|
|
Qt.callLater(() => {
|
|
popoutContainer.forceActiveFocus()
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
Column {
|
|
id: popoutColumn
|
|
width: parent.width - Theme.spacingL * 2
|
|
anchors.left: parent.left
|
|
anchors.top: parent.top
|
|
anchors.margins: Theme.spacingL
|
|
spacing: Theme.spacingL
|
|
|
|
Row {
|
|
width: parent.width
|
|
height: 32
|
|
visible: closeButton.visible
|
|
|
|
Item {
|
|
width: parent.width - 32
|
|
height: 32
|
|
}
|
|
|
|
Rectangle {
|
|
id: closeButton
|
|
width: 32
|
|
height: 32
|
|
radius: 16
|
|
color: closeArea.containsMouse ? Theme.errorHover : "transparent"
|
|
visible: true
|
|
|
|
DankIcon {
|
|
anchors.centerIn: parent
|
|
name: "close"
|
|
size: Theme.iconSize - 4
|
|
color: closeArea.containsMouse ? Theme.error : Theme.surfaceText
|
|
}
|
|
|
|
MouseArea {
|
|
id: closeArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onPressed: {
|
|
root.close()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
id: popoutContent
|
|
width: parent.width
|
|
sourceComponent: root.pluginContent
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|