mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-27 06:52:50 -05:00
Allow solid colored wallpaper, fix fzf search
This commit is contained in:
117
Widgets/DankColorPicker.qml
Normal file
117
Widgets/DankColorPicker.qml
Normal file
@@ -0,0 +1,117 @@
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user