From 055a7cfd326a1565ecd48e1047fc963dcdac0643 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Tue, 28 Jan 2025 14:42:41 +0100 Subject: [PATCH] finish color picker dialog --- playground/systemdialogs/main.cpp | 3 +- src/dialogs/QskDialog.cpp | 46 ++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/playground/systemdialogs/main.cpp b/playground/systemdialogs/main.cpp index a7281b5c..291157a5 100644 --- a/playground/systemdialogs/main.cpp +++ b/playground/systemdialogs/main.cpp @@ -113,8 +113,7 @@ namespace { case ColorDialog: { - auto color = qskDialog->selectColor( "select color" ); - qDebug() << "selected color" << QColor( color ); + qskDialog->selectColor( "select color" ); break; } case FileDialog: diff --git a/src/dialogs/QskDialog.cpp b/src/dialogs/QskDialog.cpp index 2d83bc64..ace55e03 100644 --- a/src/dialogs/QskDialog.cpp +++ b/src/dialogs/QskDialog.cpp @@ -18,12 +18,16 @@ #include "QskBoxBorderMetrics.h" #include "QskBoxShapeMetrics.h" #include "QskColorPicker.h" +#include "QskComboBox.h" #include "QskEvent.h" #include "QskFunctions.h" +#include "QskGridBox.h" #include "QskListView.h" #include "QskPushButton.h" #include "QskScrollArea.h" #include "QskSlider.h" +#include "QskTextField.h" +#include "QskTextLabel.h" #include "QskFocusIndicator.h" @@ -479,9 +483,10 @@ namespace outerBox->setMargins( 20 ); outerBox->setSpacing( 20 ); #if 1 - outerBox->setFixedSize( 500, 500 ); + outerBox->setFixedSize( 350, 500 ); #endif auto* upperBox = new QskLinearBox( Qt::Horizontal, outerBox ); + upperBox->setSizePolicy( Qt::Vertical, QskSizePolicy::Expanding ); upperBox->setSpacing( 12 ); m_picker = new QskColorPicker( upperBox ); @@ -518,6 +523,45 @@ namespace QObject::connect( valueSlider, &QskSlider::valueChanged, m_picker, &QskColorPicker::setValueAsRatio ); + + auto* gridBox = new QskGridBox( outerBox ); + gridBox->setSizePolicy( Qt::Vertical, QskSizePolicy::Preferred ); + + auto* menu = new QskComboBox( gridBox ); + menu->addOption( QUrl(), "RGB" ); + menu->setCurrentIndex( 0 ); + gridBox->addItem( menu, 0, 0 ); + + auto* rgbValue = new QskTextField( gridBox ); + rgbValue->setReadOnly( true ); + gridBox->addItem( rgbValue, 0, 2 ); + + auto* redValue = new QskTextField( gridBox ); + redValue->setReadOnly( true ); + gridBox->addItem( redValue, 1, 0 ); + gridBox->addItem( new QskTextLabel( "Red", gridBox ), 1, 1 ); + + auto* greenValue = new QskTextField( gridBox ); + greenValue->setReadOnly( true ); + gridBox->addItem( greenValue, 2, 0 ); + gridBox->addItem( new QskTextLabel( "Green", gridBox ), 2, 1 ); + + auto* blueValue = new QskTextField( gridBox ); + blueValue->setReadOnly( true ); + gridBox->addItem( blueValue, 3, 0 ); + gridBox->addItem( new QskTextLabel( "Blue", gridBox ), 3, 1 ); + + QObject::connect( m_picker, &QskColorPicker::selectedColorChanged, + this, [this, rgbValue, redValue, greenValue, blueValue]() + { + const auto c = m_picker->selectedColor(); + rgbValue->setText( c.name() ); + + redValue->setText( QString::number( c.red() ) ); + greenValue->setText( QString::number( c.green() ) ); + blueValue->setText( QString::number( c.blue() ) ); + } ); + Inherited::setContentItem( outerBox ); }