From 773ec5dcfe6c9d7c5c1df3e236a03988c719ef6c Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Tue, 1 Oct 2024 12:30:58 +0200 Subject: [PATCH] text input: Introduce Selected state and rename Text --- designsystems/fluent2/QskFluent2Skin.cpp | 10 ++--- designsystems/fusion/QskFusionSkin.cpp | 9 ++--- designsystems/material3/QskMaterial3Skin.cpp | 8 ++-- playground/gradients/main.cpp | 4 +- playground/inputpanel/main.cpp | 8 ++-- src/controls/QskTextInput.cpp | 41 +++++++++----------- src/controls/QskTextInput.h | 14 +++---- src/controls/QskTextInputSkinlet.cpp | 2 +- src/inputpanel/QskInputPanelBox.cpp | 4 +- 9 files changed, 47 insertions(+), 53 deletions(-) diff --git a/designsystems/fluent2/QskFluent2Skin.cpp b/designsystems/fluent2/QskFluent2Skin.cpp index 10f73b74..caf41258 100644 --- a/designsystems/fluent2/QskFluent2Skin.cpp +++ b/designsystems/fluent2/QskFluent2Skin.cpp @@ -1773,8 +1773,8 @@ void Editor::setupTextInputMetrics() setBoxShape( Q::Panel, 3_px ); - setAlignment( Q::Text, Qt::AlignLeft | Qt::AlignVCenter ); - setFontRole( Q::Text, Fluent2::Body ); + setAlignment( Q::InputText, Qt::AlignLeft | Qt::AlignVCenter ); + setFontRole( Q::InputText, Fluent2::Body ); } void Editor::setupTextInputColors( @@ -1785,8 +1785,8 @@ void Editor::setupTextInputColors( const auto& pal = theme.palette; - setColor( Q::PanelSelected, pal.fillColor.accent.selectedTextBackground ); - setColor( Q::TextSelected, pal.fillColor.textOnAccent.selectedText ); + setColor( Q::Panel | Q::Selected, pal.fillColor.accent.selectedTextBackground ); + setColor( Q::InputText | Q::Selected, pal.fillColor.textOnAccent.selectedText ); for( const auto state : { A::NoState, Q::Hovered, Q::Focused, Q::Editing, Q::Disabled } ) { @@ -1821,7 +1821,7 @@ void Editor::setupTextInputColors( } const auto panel = Q::Panel | section | state; - const auto text = Q::Text | section | state; + const auto text = Q::InputText | section | state; panelColor = rgbSolid( panelColor, pal.background.solid.base ); diff --git a/designsystems/fusion/QskFusionSkin.cpp b/designsystems/fusion/QskFusionSkin.cpp index bad14860..1ad74048 100644 --- a/designsystems/fusion/QskFusionSkin.cpp +++ b/designsystems/fusion/QskFusionSkin.cpp @@ -386,18 +386,17 @@ void Editor::setupTextInput() using A = QskAspect; using P = QPalette; - setAlignment( Q::Text, Qt::AlignLeft | Qt::AlignTop ); + setAlignment( Q::InputText, Qt::AlignLeft | Qt::AlignTop ); for ( auto state : { A::NoState, Q::Disabled } ) { const auto colorGroup = ( state == A::NoState ) ? P::Active : P::Disabled; setGradient( Q::Panel | state, m_pal.color( colorGroup, P::Base ) ); - setColor( Q::PanelSelected | state, m_pal.color( colorGroup, P::Highlight ) ); - - setColor( Q::Text | state, m_pal.color( colorGroup, P::Text ) ); - setColor( Q::TextSelected | state, m_pal.color( colorGroup, P::HighlightedText ) ); + setColor( Q::Panel | Q::Selected | state, m_pal.color( colorGroup, P::Highlight ) ); + setColor( Q::InputText | state, m_pal.color( colorGroup, P::Text ) ); + setColor( Q::InputText | Q::Selected | state, m_pal.color( colorGroup, P::HighlightedText ) ); } setBoxBorderMetrics( Q::Panel, 1_px ); diff --git a/designsystems/material3/QskMaterial3Skin.cpp b/designsystems/material3/QskMaterial3Skin.cpp index 22d662bf..608f48fe 100644 --- a/designsystems/material3/QskMaterial3Skin.cpp +++ b/designsystems/material3/QskMaterial3Skin.cpp @@ -470,15 +470,15 @@ void Editor::setupTextInput() // ### Also add a pressed state - setColor( Q::Text, m_pal.onSurface ); - setFontRole( Q::Text, BodyMedium ); - setAlignment( Q::Text, Qt::AlignLeft | Qt::AlignVCenter ); + setColor( Q::InputText, m_pal.onSurface ); + setFontRole( Q::InputText, BodyMedium ); + setAlignment( Q::InputText, Qt::AlignLeft | Qt::AlignVCenter ); const auto disabledPanelColor = QskRgb::toTransparentF( m_pal.onSurface, 0.04 ); setGradient( Q::Panel | Q::Disabled, disabledPanelColor ); setBoxBorderColors( Q::Panel | Q::Disabled, m_pal.onSurface38 ); - setColor( Q::Text | Q::Disabled, m_pal.onSurface38 ); + setColor( Q::InputText | Q::Disabled, m_pal.onSurface38 ); } void Editor::setupProgressBar() diff --git a/playground/gradients/main.cpp b/playground/gradients/main.cpp index e952c8f2..46a0b6e5 100644 --- a/playground/gradients/main.cpp +++ b/playground/gradients/main.cpp @@ -52,7 +52,7 @@ namespace m_input = new QskTextInput( this ); m_input->setValidator( new InputValidator( m_input ) ); - m_input->setText( QString::number( value ) ); + m_input->setInputText( QString::number( value ) ); const QFontMetricsF fm( m_input->font() ); m_input->setFixedWidth( fm.horizontalAdvance( "-0.000" ) ); @@ -65,7 +65,7 @@ namespace qreal value() const { - return m_input->text().toDouble(); + return m_input->inputText().toDouble(); } Q_SIGNALS: diff --git a/playground/inputpanel/main.cpp b/playground/inputpanel/main.cpp index eabc5362..af3f46a4 100644 --- a/playground/inputpanel/main.cpp +++ b/playground/inputpanel/main.cpp @@ -202,24 +202,24 @@ class InputBox : public QskLinearBox setSpacing( 10 ); auto* textInput1 = new QskTextInput( this ); - textInput1->setText( "Press and edit Me." ); + textInput1->setInputText( "Press and edit Me." ); textInput1->setSizePolicy( Qt::Horizontal, QskSizePolicy::Preferred ); auto* textInput2 = new QskTextInput( this ); - textInput2->setText( "Press and edit Me." ); + textInput2->setInputText( "Press and edit Me." ); textInput2->setSizePolicy( Qt::Horizontal, QskSizePolicy::Preferred ); textInput2->setActivationModes( QskTextInput::ActivationOnAll ); auto* textInput3 = new QskTextInput( this ); textInput3->setReadOnly( true ); - textInput3->setText( "Read Only information." ); + textInput3->setInputText( "Read Only information." ); textInput3->setSizePolicy( Qt::Horizontal, QskSizePolicy::Preferred ); auto* textInput4 = new QskTextInput( this ); textInput4->setEchoMode( QskTextInput::Password ); textInput4->setPasswordMaskDelay( 1000 ); textInput4->setMaxLength( 8 ); - textInput4->setText( "12345678" ); + textInput4->setInputText( "12345678" ); textInput4->setSizePolicy( Qt::Horizontal, QskSizePolicy::Preferred ); } }; diff --git a/src/controls/QskTextInput.cpp b/src/controls/QskTextInput.cpp index a4982bcc..fef21940 100644 --- a/src/controls/QskTextInput.cpp +++ b/src/controls/QskTextInput.cpp @@ -13,16 +13,11 @@ QSK_QT_PRIVATE_BEGIN QSK_QT_PRIVATE_END QSK_SUBCONTROL( QskTextInput, Panel ) -QSK_SUBCONTROL( QskTextInput, Text ) - -#if 1 -// shouldn't this be a Selected state, TODO ... -QSK_SUBCONTROL( QskTextInput, PanelSelected ) -QSK_SUBCONTROL( QskTextInput, TextSelected ) -#endif +QSK_SUBCONTROL( QskTextInput, InputText ) QSK_SYSTEM_STATE( QskTextInput, ReadOnly, QskAspect::FirstSystemState << 1 ) QSK_SYSTEM_STATE( QskTextInput, Editing, QskAspect::FirstSystemState << 2 ) +QSK_SYSTEM_STATE( QskTextInput, Selected, QskAspect::FirstSystemState << 3 ) static inline void qskPropagateReadOnly( QskTextInput* input ) { @@ -36,13 +31,13 @@ static inline void qskBindSignals( const QQuickTextInput* wrappedInput, QskTextInput* input ) { QObject::connect( wrappedInput, &QQuickTextInput::textChanged, - input, [ input ] { Q_EMIT input->textChanged( input->text() ); } ); + input, [ input ] { Q_EMIT input->inputTextChanged( input->inputText() ); } ); QObject::connect( wrappedInput, &QQuickTextInput::displayTextChanged, input, [ input ] { Q_EMIT input->displayTextChanged( input->displayText() ); } ); QObject::connect( wrappedInput, &QQuickTextInput::textEdited, - input, [ input ] { Q_EMIT input->textEdited( input->text() ); } ); + input, [ input ] { Q_EMIT input->textEdited( input->inputText() ); } ); QObject::connect( wrappedInput, &QQuickTextInput::validatorChanged, input, &QskTextInput::validatorChanged ); @@ -252,7 +247,7 @@ namespace QColor color; - color = input->color( QskTextInput::Text ); + color = input->color( QskTextInput::InputText ); if ( d->color != color ) { d->color = color; @@ -261,14 +256,14 @@ namespace if ( d->hasSelectedText() ) { - color = input->color( QskTextInput::PanelSelected ); + color = input->color( QskTextInput::Panel | QskTextInput::Selected ); if ( d->selectionColor != color ) { d->selectionColor = color; isDirty = true; } - color = input->color( QskTextInput::TextSelected ); + color = input->color( QskTextInput::InputText | QskTextInput::Selected ); if ( d->selectedTextColor != color ) { d->selectedTextColor = color; @@ -519,7 +514,7 @@ void QskTextInput::updateLayout() auto input = m_data->textInput; input->updateMetrics(); - qskSetItemGeometry( input, subControlRect( Text ) ); + qskSetItemGeometry( input, subControlRect( InputText ) ); } void QskTextInput::updateNode( QSGNode* node ) @@ -528,12 +523,12 @@ void QskTextInput::updateNode( QSGNode* node ) Inherited::updateNode( node ); } -QString QskTextInput::text() const +QString QskTextInput::inputText() const { return m_data->textInput->text(); } -void QskTextInput::setText( const QString& text ) +void QskTextInput::setInputText( const QString& text ) { m_data->textInput->setText( text ); } @@ -574,7 +569,7 @@ static inline void qskUpdateInputMethodFont( const QskTextInput* input ) void QskTextInput::setFontRole( const QskFontRole& role ) { - if ( setFontRoleHint( Text, role ) ) + if ( setFontRoleHint( InputText, role ) ) { qskUpdateInputMethodFont( this ); Q_EMIT fontRoleChanged(); @@ -583,7 +578,7 @@ void QskTextInput::setFontRole( const QskFontRole& role ) void QskTextInput::resetFontRole() { - if ( resetFontRoleHint( Text ) ) + if ( resetFontRoleHint( InputText ) ) { qskUpdateInputMethodFont( this ); Q_EMIT fontRoleChanged(); @@ -592,12 +587,12 @@ void QskTextInput::resetFontRole() QskFontRole QskTextInput::fontRole() const { - return fontRoleHint( Text ); + return fontRoleHint( InputText ); } void QskTextInput::setAlignment( Qt::Alignment alignment ) { - if ( setAlignmentHint( Text, alignment ) ) + if ( setAlignmentHint( InputText, alignment ) ) { m_data->textInput->setAlignment( alignment ); Q_EMIT alignmentChanged(); @@ -606,7 +601,7 @@ void QskTextInput::setAlignment( Qt::Alignment alignment ) void QskTextInput::resetAlignment() { - if ( resetAlignmentHint( Text ) ) + if ( resetAlignmentHint( InputText ) ) { m_data->textInput->setAlignment( alignment() ); Q_EMIT alignmentChanged(); @@ -615,7 +610,7 @@ void QskTextInput::resetAlignment() Qt::Alignment QskTextInput::alignment() const { - return alignmentHint( Text, Qt::AlignLeft | Qt::AlignTop ); + return alignmentHint( InputText, Qt::AlignLeft | Qt::AlignTop ); } void QskTextInput::setWrapMode( QskTextOptions::WrapMode wrapMode ) @@ -632,7 +627,7 @@ QskTextOptions::WrapMode QskTextInput::wrapMode() const QFont QskTextInput::font() const { - return effectiveFont( QskTextInput::Text ); + return effectiveFont( QskTextInput::InputText ); } bool QskTextInput::isReadOnly() const @@ -922,7 +917,7 @@ void QskTextInput::setupFrom( const QQuickItem* item ) if ( event.queries() & Qt::ImSurroundingText ) { const auto text = event.value( Qt::ImSurroundingText ).toString(); - setText( text ); + setInputText( text ); } if ( event.queries() & Qt::ImCursorPosition ) diff --git a/src/controls/QskTextInput.h b/src/controls/QskTextInput.h index 3aae8c05..de8aa429 100644 --- a/src/controls/QskTextInput.h +++ b/src/controls/QskTextInput.h @@ -16,7 +16,7 @@ class QSK_EXPORT QskTextInput : public QskControl { Q_OBJECT - Q_PROPERTY( QString text READ text WRITE setText NOTIFY textChanged USER true) + Q_PROPERTY( QString inputText READ inputText WRITE setInputText NOTIFY inputTextChanged USER true ) Q_PROPERTY( QString description READ description WRITE setDescription NOTIFY descriptionChanged ) @@ -55,8 +55,8 @@ class QSK_EXPORT QskTextInput : public QskControl using Inherited = QskControl; public: - QSK_SUBCONTROLS( Panel, Text, PanelSelected, TextSelected ) - QSK_STATES( ReadOnly, Editing ) + QSK_SUBCONTROLS( Panel, InputText ) + QSK_STATES( ReadOnly, Editing, Selected ) enum ActivationMode { @@ -84,13 +84,13 @@ class QSK_EXPORT QskTextInput : public QskControl Q_ENUM( EchoMode ) QskTextInput( QQuickItem* parent = nullptr ); - QskTextInput( const QString& text, QQuickItem* parent = nullptr ); + QskTextInput( const QString&, QQuickItem* parent = nullptr ); ~QskTextInput() override; void setupFrom( const QQuickItem* ); - QString text() const; + QString inputText() const; void setDescription( const QString& ); QString description() const; @@ -163,7 +163,7 @@ class QSK_EXPORT QskTextInput : public QskControl void ensureVisible( int position ); public Q_SLOTS: - void setText( const QString& ); + void setInputText( const QString& ); void setEditing( bool ); Q_SIGNALS: @@ -173,7 +173,7 @@ class QSK_EXPORT QskTextInput : public QskControl void readOnlyChanged( bool ); void panelChanged( bool ); - void textChanged( const QString& ); + void inputTextChanged( const QString& ); void displayTextChanged( const QString& ); void textEdited( const QString& ); diff --git a/src/controls/QskTextInputSkinlet.cpp b/src/controls/QskTextInputSkinlet.cpp index 8f0e1b4c..027cce92 100644 --- a/src/controls/QskTextInputSkinlet.cpp +++ b/src/controls/QskTextInputSkinlet.cpp @@ -23,7 +23,7 @@ QRectF QskTextInputSkinlet::subControlRect( const QskSkinnable* skinnable, { return contentsRect; } - else if ( subControl == QskTextInput::Text ) + else if ( subControl == QskTextInput::InputText ) { return skinnable->subControlContentsRect( contentsRect, QskTextInput::Panel ); } diff --git a/src/inputpanel/QskInputPanelBox.cpp b/src/inputpanel/QskInputPanelBox.cpp index 46cda216..90991d0f 100644 --- a/src/inputpanel/QskInputPanelBox.cpp +++ b/src/inputpanel/QskInputPanelBox.cpp @@ -35,7 +35,7 @@ namespace if ( subControl == QskTextInput::Panel ) return m_panelBox->effectiveSubcontrol( QskInputPanelBox::ProxyPanel ); - if ( subControl == QskTextInput::Text ) + if ( subControl == QskTextInput::InputText ) return m_panelBox->effectiveSubcontrol( QskInputPanelBox::ProxyText ); return subControl; @@ -187,7 +187,7 @@ QskAspect::Subcontrol QskInputPanelBox::substitutedSubcontrol( return QskTextInput::Panel; if ( subControl == QskInputPanelBox::ProxyText ) - return QskTextInput::Text; + return QskTextInput::InputText; #endif return subControl;