You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
225 lines
6.3 KiB
225 lines
6.3 KiB
/* |
|
SPDX-FileCopyrightText: 2015 Martin Klapetek <mklapetek@kde.org> |
|
SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de> |
|
|
|
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL |
|
*/ |
|
|
|
import QtQuick 2.0 |
|
import QtQuick.Window 2.1 |
|
import QtQuick.Controls 2.2 as QtControls |
|
import org.kde.kirigami 2.4 as Kirigami |
|
import org.kde.plasma.core 2.0 as PlasmaCore |
|
|
|
import org.kde.notificationmanager 1.0 as NotificationManager |
|
|
|
Item { |
|
id: monitorPanel |
|
|
|
property int baseUnit: Kirigami.Units.gridUnit |
|
|
|
implicitWidth: baseUnit * 13 + baseUnit * 2 |
|
implicitHeight: (screenRatio * baseUnit * 13) + (baseUnit * 2) + basePart.height |
|
|
|
property int selectedPosition |
|
property var disabledPositions: [] |
|
property real screenRatio: Screen.height / Screen.width |
|
|
|
onSelectedPositionChanged: { |
|
var buttons = positionRadios.buttons.length; |
|
for (var i = 0; i < buttons.length; ++i) { |
|
var button = buttons[i]; |
|
if (button.position === selectedPosition) { |
|
button.checked = true; |
|
break; |
|
} |
|
} |
|
} |
|
|
|
PlasmaCore.Svg { |
|
id: monitorSvg |
|
imagePath: "widgets/monitor" |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: topleftPart |
|
anchors { |
|
left: parent.left |
|
top: parent.top |
|
} |
|
svg: monitorSvg |
|
elementId: "topleft" |
|
width: baseUnit |
|
height: baseUnit |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: topPart |
|
anchors { |
|
top: parent.top |
|
left: topleftPart.right |
|
right: toprightPart.left |
|
} |
|
svg: monitorSvg |
|
elementId: "top" |
|
height: baseUnit |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: toprightPart |
|
anchors { |
|
right: parent.right |
|
top: parent.top |
|
} |
|
svg: monitorSvg |
|
elementId: "topright" |
|
width: baseUnit |
|
height: baseUnit |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: leftPart |
|
anchors { |
|
left: parent.left |
|
top: topleftPart.bottom |
|
bottom: bottomleftPart.top |
|
} |
|
svg: monitorSvg |
|
elementId: "left" |
|
width: baseUnit |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: rightPart |
|
anchors { |
|
right: parent.right |
|
top: toprightPart.bottom |
|
bottom: bottomrightPart.top |
|
} |
|
svg: monitorSvg |
|
elementId: "right" |
|
width: baseUnit |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: bottomleftPart |
|
anchors { |
|
left: parent.left |
|
bottom: basePart.top |
|
} |
|
svg: monitorSvg |
|
elementId: "bottomleft" |
|
width: baseUnit |
|
height: baseUnit |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: bottomPart |
|
anchors { |
|
bottom: basePart.top |
|
left: bottomleftPart.right |
|
right: bottomrightPart.left |
|
} |
|
svg: monitorSvg |
|
elementId: "bottom" |
|
height: baseUnit |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: bottomrightPart |
|
anchors { |
|
right: parent.right |
|
bottom: basePart.top |
|
} |
|
svg: monitorSvg |
|
elementId: "bottomright" |
|
width: baseUnit |
|
height: baseUnit |
|
} |
|
|
|
PlasmaCore.SvgItem { |
|
id: basePart |
|
anchors { |
|
bottom: parent.bottom |
|
horizontalCenter: parent.horizontalCenter |
|
} |
|
width: 120 |
|
height: 60 |
|
svg: monitorSvg |
|
elementId: "base" |
|
} |
|
|
|
QtControls.ButtonGroup { |
|
id: positionRadios |
|
onCheckedButtonChanged: monitorPanel.selectedPosition = checkedButton.position |
|
} |
|
|
|
// TODO increase hit area for radio buttons |
|
|
|
QtControls.RadioButton { |
|
anchors { |
|
top: topPart.bottom |
|
left: leftPart.right |
|
margins: Kirigami.Units.smallSpacing |
|
} |
|
readonly property int position: NotificationManager.Settings.TopLeft |
|
checked: monitorPanel.selectedPosition == position |
|
visible: monitorPanel.disabledPositions.indexOf(position) == -1 |
|
QtControls.ButtonGroup.group: positionRadios |
|
} |
|
QtControls.RadioButton { |
|
anchors { |
|
top: topPart.bottom |
|
horizontalCenter: topPart.horizontalCenter |
|
margins: Kirigami.Units.smallSpacing |
|
} |
|
readonly property int position: NotificationManager.Settings.TopCenter |
|
checked: monitorPanel.selectedPosition == position |
|
visible: monitorPanel.disabledPositions.indexOf(position) == -1 |
|
QtControls.ButtonGroup.group: positionRadios |
|
} |
|
QtControls.RadioButton { |
|
anchors { |
|
top: topPart.bottom |
|
right: rightPart.left |
|
margins: Kirigami.Units.smallSpacing |
|
} |
|
readonly property int position: NotificationManager.Settings.TopRight |
|
checked: monitorPanel.selectedPosition == position |
|
visible: monitorPanel.disabledPositions.indexOf(position) == -1 |
|
QtControls.ButtonGroup.group: positionRadios |
|
} |
|
QtControls.RadioButton { |
|
anchors { |
|
bottom: bottomPart.top |
|
left: leftPart.right |
|
margins: Kirigami.Units.smallSpacing |
|
} |
|
readonly property int position: NotificationManager.Settings.BottomLeft |
|
checked: monitorPanel.selectedPosition == position |
|
visible: monitorPanel.disabledPositions.indexOf(position) == -1 |
|
QtControls.ButtonGroup.group: positionRadios |
|
} |
|
QtControls.RadioButton { |
|
anchors { |
|
bottom: bottomPart.top |
|
horizontalCenter: bottomPart.horizontalCenter |
|
margins: Kirigami.Units.smallSpacing |
|
} |
|
readonly property int position: NotificationManager.Settings.BottomCenter |
|
checked: monitorPanel.selectedPosition == position |
|
visible: monitorPanel.disabledPositions.indexOf(position) == -1 |
|
QtControls.ButtonGroup.group: positionRadios |
|
} |
|
QtControls.RadioButton { |
|
anchors { |
|
bottom: bottomPart.top |
|
right: rightPart.left |
|
margins: Kirigami.Units.smallSpacing |
|
} |
|
readonly property int position: NotificationManager.Settings.BottomRight |
|
checked: monitorPanel.selectedPosition == position |
|
visible: monitorPanel.disabledPositions.indexOf(position) == -1 |
|
QtControls.ButtonGroup.group: positionRadios |
|
} |
|
}
|
|
|