mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
118 lines
3.3 KiB
QML
118 lines
3.3 KiB
QML
import QtQuick
|
|
import qs.Common
|
|
import qs.Widgets
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
property string pickerTitle: "Choose Color"
|
|
property color selectedColor: Theme.primary
|
|
property bool isOpen: false
|
|
|
|
signal colorSelected(color selectedColor)
|
|
|
|
function open() {
|
|
customColorField.text = ""
|
|
isOpen = true
|
|
Qt.callLater(() => root.forceActiveFocus())
|
|
}
|
|
|
|
function close() {
|
|
isOpen = false
|
|
}
|
|
|
|
anchors.centerIn: parent
|
|
width: 320
|
|
height: 340
|
|
radius: Theme.cornerRadius
|
|
color: Theme.surfaceContainer
|
|
border.color: Theme.outlineMedium
|
|
border.width: 1
|
|
z: 1000
|
|
visible: isOpen
|
|
focus: isOpen
|
|
|
|
Keys.onPressed: function (event) {
|
|
if (event.key === Qt.Key_Escape) {
|
|
close()
|
|
event.accepted = true
|
|
}
|
|
}
|
|
|
|
DankActionButton {
|
|
anchors.top: parent.top
|
|
anchors.right: parent.right
|
|
anchors.margins: Theme.spacingS
|
|
buttonSize: 28
|
|
iconName: "close"
|
|
iconSize: 16
|
|
iconColor: Theme.surfaceText
|
|
onClicked: root.close()
|
|
}
|
|
|
|
Column {
|
|
anchors.fill: parent
|
|
anchors.margins: Theme.spacingL
|
|
spacing: Theme.spacingM
|
|
|
|
StyledText {
|
|
text: pickerTitle
|
|
font.pixelSize: Theme.fontSizeLarge
|
|
font.weight: Font.Medium
|
|
color: Theme.surfaceText
|
|
}
|
|
|
|
Grid {
|
|
columns: 8
|
|
spacing: 4
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
|
|
property var colors: ["#f44336", "#e91e63", "#9c27b0", "#673ab7", "#3f51b5", "#2196f3", "#03a9f4", "#00bcd4", "#009688", "#4caf50", "#8bc34a", "#cddc39", "#ffeb3b", "#ffc107", "#ff9800", "#ff5722", "#795548", "#9e9e9e", "#607d8b", "#000000", "#ffffff", "#ff1744", "#f50057", "#d500f9", "#651fff", "#3d5afe", "#2979ff", "#00b0ff", "#00e5ff", "#1de9b6", "#00e676", "#76ff03", "#c6ff00", "#ffff00", "#ffc400", "#ff9100", "#ff3d00", "#bf360c", "#424242", "#37474f"]
|
|
|
|
Repeater {
|
|
model: parent.colors
|
|
Rectangle {
|
|
width: 24
|
|
height: 24
|
|
color: modelData
|
|
radius: 4
|
|
border.color: Theme.outline
|
|
border.width: root.selectedColor == modelData ? 2 : 1
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: {
|
|
root.selectedColor = modelData
|
|
root.colorSelected(modelData)
|
|
root.close()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
StyledText {
|
|
text: "Custom Color:"
|
|
font.pixelSize: Theme.fontSizeMedium
|
|
color: Theme.surfaceText
|
|
}
|
|
|
|
DankTextField {
|
|
id: customColorField
|
|
width: parent.width
|
|
height: 40
|
|
placeholderText: "#ff0000"
|
|
text: ""
|
|
onAccepted: {
|
|
var hexColor = text.startsWith("#") ? text : "#" + text
|
|
if (/^#[0-9A-Fa-f]{6}$/.test(hexColor)) {
|
|
root.selectedColor = hexColor
|
|
root.colorSelected(hexColor)
|
|
root.close()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|