50 lines
1.7 KiB
QML
50 lines
1.7 KiB
QML
// SPDX-License-Identifier: MIT
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
import org.kde.plasma.core as PlasmaCore
|
|
import org.kde.plasma.plasmoid
|
|
import se.ajpanton.panelactions 1.0
|
|
import "areas.js" as Areas
|
|
|
|
PlasmoidItem {
|
|
id: root
|
|
readonly property Item panelLayout: {
|
|
let item = root.parent;
|
|
while (item) {
|
|
if (item instanceof GridLayout) return item;
|
|
item = item.parent;
|
|
}
|
|
return null;
|
|
}
|
|
Plasmoid.backgroundHints: PlasmaCore.Types.NoBackground
|
|
Layout.minimumWidth: 0
|
|
Layout.minimumHeight: 0
|
|
Layout.preferredWidth: 0
|
|
Layout.preferredHeight: 0
|
|
Layout.maximumWidth: 0
|
|
Layout.maximumHeight: 0
|
|
preferredRepresentation: fullRepresentation
|
|
PanelSettings { id: settings }
|
|
PanelController {
|
|
active: root.panelLayout !== null && !(Plasmoid.containment.corona?.editMode ?? false)
|
|
locateArea: (x, y, scrolling) => scrolling
|
|
? Areas.scrollAreaAt(root.panelLayout, x, y, Plasmoid.formFactor === PlasmaCore.Types.Vertical)
|
|
: Areas.areaAt(root.panelLayout, x, y)
|
|
scrollActions: ({
|
|
empty: settings.values.emptyAction,
|
|
tasks: settings.values.tasksAction,
|
|
launcher: settings.values.launcherAction,
|
|
clock: settings.values.clockAction,
|
|
tray: settings.values.trayAction,
|
|
other: settings.values.otherAction
|
|
})
|
|
clickActions: settings.values
|
|
onActionRequested: (action, direction) => invoke(action, direction)
|
|
onClickRequested: slot => {
|
|
const action = settings.values[slot];
|
|
if (action === "command" || action === "application") settings.launchClick(slot);
|
|
else invoke(action, 0);
|
|
}
|
|
}
|
|
}
|