// Copyright (C) 2026 Danilo M. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. import QtQuick import QtQuick.Dialogs import "../.." // A swatch of the current colour that opens the platform's colour dialog. // picked carries the choice as #rrggbb, the form qtmaildir.conf uses. Rectangle { id: pick property string colour: "" signal picked(string hex) width: 34; height: 34 radius: 8 color: /^#[0-9a-fA-F]{6}$/.test(pick.colour) ? pick.colour : Theme.surface border.width: 1 border.color: area.containsMouse ? Theme.accent : Qt.alpha(Theme.text, 0.2) Text { anchors.centerIn: parent visible: !/^#[0-9a-fA-F]{6}$/.test(pick.colour) // nf-fa-eyedropper, present in Inconsolata Nerd Font. text: "" font { family: Theme.iconFamily; pixelSize: Theme.fontSize - 2 } color: Theme.subtext } MouseArea { id: area anchors.fill: parent hoverEnabled: true cursorShape: Qt.PointingHandCursor onClicked: dialog.open() } ColorDialog { id: dialog selectedColor: /^#[0-9a-fA-F]{6}$/.test(pick.colour) ? pick.colour : "#808080" // toString() is #rrggbb for an opaque colour, and the dialog offers // no alpha unless asked to; the slice is a guard all the same. onAccepted: pick.picked(selectedColor.toString().slice(0, 7)) } }