From 609bd9aac7b05c0af0926e0c37b28f03ebe27515 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Fri, 20 Oct 2017 13:31:55 +0200 Subject: [PATCH] QskTextOptions improved --- src/common/QskTextOptions.cpp | 10 +++++----- src/common/QskTextOptions.h | 4 ++-- src/controls/QskListView.cpp | 2 +- src/controls/QskSkinRenderer.cpp | 6 +++--- src/controls/QskTextLabel.cpp | 5 +---- 5 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/common/QskTextOptions.cpp b/src/common/QskTextOptions.cpp index 27626de3..3b4cae7a 100644 --- a/src/common/QskTextOptions.cpp +++ b/src/common/QskTextOptions.cpp @@ -109,15 +109,15 @@ bool QskTextOptions::operator==( const QskTextOptions& other ) const && ( m_maximumLineCount == other.m_maximumLineCount ); } -bool QskTextOptions::isPlainText( const QString& text ) const +QskTextOptions::TextFormat QskTextOptions::effectiveFormat( const QString& text ) const { if ( text.isEmpty() ) - return true; + return PlainText; if ( m_format == QskTextOptions::AutoText ) - return !Qt::mightBeRichText( text ); - - return m_format == QskTextOptions::PlainText; + return Qt::mightBeRichText( text ) ? RichText : PlainText; + else + return m_format; } uint qHash( const QskTextOptions &options, uint seed ) noexcept diff --git a/src/common/QskTextOptions.h b/src/common/QskTextOptions.h index fba8aaa7..c91c8fa3 100644 --- a/src/common/QskTextOptions.h +++ b/src/common/QskTextOptions.h @@ -55,6 +55,8 @@ public: TextFormat format() const; void setFormat( TextFormat ); + TextFormat effectiveFormat( const QString& text ) const; + Qt::TextElideMode elideMode() const; void setElideMode( Qt::TextElideMode ); @@ -70,8 +72,6 @@ public: bool operator==( const QskTextOptions& other ) const; bool operator!=( const QskTextOptions& other ) const; - bool isPlainText( const QString& text ) const; - int textFlags() const; private: diff --git a/src/controls/QskListView.cpp b/src/controls/QskListView.cpp index 47e6ed7d..56f85612 100644 --- a/src/controls/QskListView.cpp +++ b/src/controls/QskListView.cpp @@ -74,7 +74,7 @@ bool QskListView::alternatingRowColors() const return m_data->alternatingRowColors; } -void QskListView::setTextOptions(const QskTextOptions& textOptions ) +void QskListView::setTextOptions( const QskTextOptions& textOptions ) { if ( textOptions != m_data->textOptions ) { diff --git a/src/controls/QskSkinRenderer.cpp b/src/controls/QskSkinRenderer.cpp index 0bc233ba..4b5e55fc 100644 --- a/src/controls/QskSkinRenderer.cpp +++ b/src/controls/QskSkinRenderer.cpp @@ -21,7 +21,7 @@ QSizeF QskSkinRenderer::textSize( const QskSkinnable* skinnable, auto font = skinnable->effectiveFont( subControl ); - if ( options.isPlainText( text ) ) + if ( options.effectiveFormat( text ) == QskTextOptions::PlainText ) { QskPlainTextRenderer renderer; renderer.setFont( font ); @@ -45,7 +45,7 @@ QSizeF QskSkinRenderer::textSize( const QskSkinnable* skinnable, { const auto font = skinnable->effectiveFont( subControl ); - if ( options.isPlainText( text ) ) + if ( options.effectiveFormat( text ) == QskTextOptions::PlainText ) { QskPlainTextRenderer renderer; renderer.setFont( font ); @@ -90,7 +90,7 @@ void QskSkinRenderer::updateText( const QskSkinnable* skinnable, subControl | Style, Qsk::Normal ); } - const auto isPlainText = options.isPlainText( text ); + const auto isPlainText = options.effectiveFormat( text ) == QskTextOptions::PlainText; // doesn't work - we end up with a black rectangle TODO ... #if 0 diff --git a/src/controls/QskTextLabel.cpp b/src/controls/QskTextLabel.cpp index a3554bfe..706faa1e 100644 --- a/src/controls/QskTextLabel.cpp +++ b/src/controls/QskTextLabel.cpp @@ -28,10 +28,7 @@ public: return textOptions; if ( effectiveTextFormat == QskTextOptions::AutoText ) - { - effectiveTextFormat = textOptions.isPlainText( text ) - ? QskTextOptions::PlainText : QskTextOptions::RichText; - } + effectiveTextFormat = textOptions.effectiveFormat( text ); QskTextOptions options = textOptions; options.setFormat( effectiveTextFormat );