From d0b926b868cb0f8c4a493b5fa3e565abd49bf561 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 17 Apr 2022 12:37:13 +0200 Subject: [PATCH] using Qt::Edge instead of Qsk::Position --- examples/gallery/main.cpp | 2 +- examples/layouts/main.cpp | 2 +- examples/qvgviewer/MainWindow.cpp | 3 +- examples/tabview/main.cpp | 7 ++-- src/common/QskBoxBorderMetrics.h | 55 ++++++++++++++++++++++++++++++ src/controls/QskTabBar.cpp | 46 ++++++++++++------------- src/controls/QskTabBar.h | 11 +++--- src/controls/QskTabView.cpp | 26 +++++--------- src/controls/QskTabView.h | 12 +++---- src/controls/QskTabViewSkinlet.cpp | 24 ++++++------- 10 files changed, 116 insertions(+), 72 deletions(-) diff --git a/examples/gallery/main.cpp b/examples/gallery/main.cpp index 5a466641..fd6f25aa 100644 --- a/examples/gallery/main.cpp +++ b/examples/gallery/main.cpp @@ -32,7 +32,7 @@ namespace : QskTabView( parent ) { setMargins( 10 ); - setTabPosition( Qsk::Left ); + setTabBarEdge( Qt::LeftEdge ); setAutoFitTabs( true ); } diff --git a/examples/layouts/main.cpp b/examples/layouts/main.cpp index 6c829fd5..9ea1d847 100644 --- a/examples/layouts/main.cpp +++ b/examples/layouts/main.cpp @@ -35,7 +35,7 @@ int main( int argc, char* argv[] ) auto tabView = new QskTabView(); tabView->setMargins( 10 ); - tabView->setTabPosition( Qsk::Left ); + tabView->setTabBarEdge( Qt::LeftEdge ); tabView->setAutoFitTabs( true ); tabView->addTab( "Grid Layout", new GridLayoutPage() ); diff --git a/examples/qvgviewer/MainWindow.cpp b/examples/qvgviewer/MainWindow.cpp index bc379584..96c65dde 100644 --- a/examples/qvgviewer/MainWindow.cpp +++ b/examples/qvgviewer/MainWindow.cpp @@ -75,7 +75,8 @@ class GraphicLabel : public QskGraphicLabel MainWindow::MainWindow() { - m_tabView = new QskTabView( Qsk::Left ); + m_tabView = new QskTabView(); + m_tabView->setTabBarEdge( Qt::LeftEdge ); const QString resourceDir( ":/qvg" ); const QStringList icons = QDir( resourceDir ).entryList(); diff --git a/examples/tabview/main.cpp b/examples/tabview/main.cpp index 9c8bbda2..7bc0cc53 100644 --- a/examples/tabview/main.cpp +++ b/examples/tabview/main.cpp @@ -110,13 +110,14 @@ class TabView : public QskTabView void rotate() { - const Qsk::Position pos[] = { Qsk::Top, Qsk::Right, Qsk::Bottom, Qsk::Left }; + using namespace Qt; + const Edge edges[] = { TopEdge, RightEdge, BottomEdge, LeftEdge }; for ( int i = 0; i < 4; i++ ) { - if ( tabPosition() == pos[i] ) + if ( tabBarEdge() == edges[i] ) { - setTabPosition( pos[ ( i + 1 ) % 4 ] ); + setTabBarEdge( edges[ ( i + 1 ) % 4 ] ); break; } } diff --git a/src/common/QskBoxBorderMetrics.h b/src/common/QskBoxBorderMetrics.h index 802d2c75..189eb30c 100644 --- a/src/common/QskBoxBorderMetrics.h +++ b/src/common/QskBoxBorderMetrics.h @@ -21,6 +21,11 @@ class QSK_EXPORT QskBoxBorderMetrics Q_PROPERTY( QskMargins widths READ widths WRITE setWidths ) Q_PROPERTY( Qt::SizeMode sizeMode READ sizeMode WRITE setSizeMode ) + Q_PROPERTY( qreal left READ left WRITE setLeft ) + Q_PROPERTY( qreal top READ top WRITE setTop ) + Q_PROPERTY( qreal right READ right WRITE setRight ) + Q_PROPERTY( qreal bottom READ bottom WRITE setBottom ) + public: constexpr QskBoxBorderMetrics() noexcept; @@ -47,6 +52,16 @@ class QSK_EXPORT QskBoxBorderMetrics void setWidths( const QskMargins& ) noexcept; constexpr const QskMargins& widths() const noexcept; + constexpr qreal left() const noexcept; + constexpr qreal top() const noexcept; + constexpr qreal right() const noexcept; + constexpr qreal bottom() const noexcept; + + void setLeft( qreal ) noexcept; + void setTop( qreal ) noexcept; + void setRight( qreal ) noexcept; + void setBottom( qreal ) noexcept; + void setSizeMode( Qt::SizeMode ) noexcept; constexpr Qt::SizeMode sizeMode() const noexcept; @@ -132,6 +147,46 @@ inline qreal QskBoxBorderMetrics::widthAt( Qt::Edge edge ) const noexcept return m_widths.marginAt( edge ); } +inline constexpr qreal QskBoxBorderMetrics::left() const noexcept +{ + return m_widths.left(); +} + +inline constexpr qreal QskBoxBorderMetrics::top() const noexcept +{ + return m_widths.top(); +} + +inline constexpr qreal QskBoxBorderMetrics::right() const noexcept +{ + return m_widths.right(); +} + +inline constexpr qreal QskBoxBorderMetrics::bottom() const noexcept +{ + return m_widths.bottom(); +} + +inline void QskBoxBorderMetrics::setLeft( qreal left ) noexcept +{ + return m_widths.setLeft( left ); +} + +inline void QskBoxBorderMetrics::setTop( qreal top ) noexcept +{ + return m_widths.setTop( top ); +} + +inline void QskBoxBorderMetrics::setRight( qreal right ) noexcept +{ + return m_widths.setRight( right ); +} + +inline void QskBoxBorderMetrics::setBottom( qreal bottom ) noexcept +{ + return m_widths.setBottom( bottom ); +} + inline constexpr Qt::SizeMode QskBoxBorderMetrics::sizeMode() const noexcept { return m_sizeMode; diff --git a/src/controls/QskTabBar.cpp b/src/controls/QskTabBar.cpp index faac29ca..36717d8b 100644 --- a/src/controls/QskTabBar.cpp +++ b/src/controls/QskTabBar.cpp @@ -16,9 +16,9 @@ QSK_SUBCONTROL( QskTabBar, Panel ) -static inline Qt::Orientation qskOrientation( int position ) +static inline Qt::Orientation qskOrientation( Qt::Edge edge ) { - if ( ( position == Qsk::Top ) || ( position == Qsk::Bottom ) ) + if ( ( edge == Qt::TopEdge ) || ( edge == Qt::BottomEdge ) ) return Qt::Horizontal; else return Qt::Vertical; @@ -250,8 +250,8 @@ namespace class QskTabBar::PrivateData { public: - PrivateData( Qsk::Position position ) - : position( position ) + PrivateData( Qt::Edge edge ) + : edge( edge ) { } @@ -274,21 +274,21 @@ class QskTabBar::PrivateData int currentIndex = -1; QskTextOptions textOptions; - uint position : 2; + Qt::Edge edge; }; QskTabBar::QskTabBar( QQuickItem* parent ) - : QskTabBar( Qsk::Top, parent ) + : QskTabBar( Qt::TopEdge, parent ) { } -QskTabBar::QskTabBar( Qsk::Position position, QQuickItem* parent ) +QskTabBar::QskTabBar( Qt::Edge edge, QQuickItem* parent ) : Inherited( parent ) - , m_data( new PrivateData( position ) ) + , m_data( new PrivateData( edge ) ) { setAutoLayoutChildren( true ); - const auto orientation = qskOrientation( position ); + const auto orientation = qskOrientation( edge ); if ( orientation == Qt::Horizontal ) initSizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Fixed ); @@ -310,14 +310,14 @@ QskTabBar::~QskTabBar() { } -void QskTabBar::setTabPosition( Qsk::Position position ) +void QskTabBar::setEdge( Qt::Edge edge ) { - if ( position == m_data->position ) + if ( edge == m_data->edge ) return; - m_data->position = position; + m_data->edge = edge; - const auto orientation = qskOrientation( position ); + const auto orientation = qskOrientation( edge ); if ( orientation != m_data->buttonBox->orientation() ) { @@ -334,17 +334,17 @@ void QskTabBar::setTabPosition( Qsk::Position position ) for ( int i = 0; i < count(); i++ ) buttonAt( i )->update(); - Q_EMIT tabPositionChanged( position ); + Q_EMIT edgeChanged( edge ); } -Qsk::Position QskTabBar::tabPosition() const +Qt::Edge QskTabBar::edge() const { - return static_cast< Qsk::Position >( m_data->position ); + return m_data->edge; } Qt::Orientation QskTabBar::orientation() const { - return qskOrientation( m_data->position ); + return qskOrientation( m_data->edge ); } void QskTabBar::setAutoScrollFocusedButton( bool on ) @@ -363,7 +363,7 @@ bool QskTabBar::autoScrollFocusButton() const void QskTabBar::setAutoFitTabs( bool on ) { - const auto orientation = qskOrientation( m_data->position ); + const auto orientation = qskOrientation( m_data->edge ); int policy = m_data->buttonBox->sizePolicy( orientation ); if ( ( policy & QskSizePolicy::GrowFlag ) != on ) @@ -682,18 +682,18 @@ QskAspect::Subcontrol QskTabBar::substitutedSubcontrol( QskAspect::Placement QskTabBar::effectivePlacement() const { - switch ( m_data->position ) + switch ( m_data->edge ) { - case Qsk::Left: + case Qt::LeftEdge: return QskAspect::Left; - case Qsk::Right: + case Qt::RightEdge: return QskAspect::Right; - case Qsk::Top: + case Qt::TopEdge: return QskAspect::Top; - case Qsk::Bottom: + case Qt::BottomEdge: return QskAspect::Bottom; } diff --git a/src/controls/QskTabBar.h b/src/controls/QskTabBar.h index 12978bb3..b2368b6a 100644 --- a/src/controls/QskTabBar.h +++ b/src/controls/QskTabBar.h @@ -16,8 +16,7 @@ class QSK_EXPORT QskTabBar : public QskBox { Q_OBJECT - Q_PROPERTY( Qsk::Position tabPosition READ tabPosition - WRITE setTabPosition NOTIFY tabPositionChanged FINAL ) + Q_PROPERTY( Qt::Edge edge READ edge WRITE setEdge NOTIFY edgeChanged FINAL ) Q_PROPERTY( Qt::Orientation orientation READ orientation ) @@ -41,12 +40,12 @@ class QSK_EXPORT QskTabBar : public QskBox QSK_SUBCONTROLS( Panel ) QskTabBar( QQuickItem* parent = nullptr ); - QskTabBar( Qsk::Position, QQuickItem* parent = nullptr ); + QskTabBar( Qt::Edge, QQuickItem* parent = nullptr ); ~QskTabBar() override; - void setTabPosition( Qsk::Position ); - Qsk::Position tabPosition() const; + void setEdge( Qt::Edge ); + Qt::Edge edge() const; Qt::Orientation orientation() const; @@ -98,7 +97,7 @@ class QSK_EXPORT QskTabBar : public QskBox void buttonClicked( int index ); void countChanged( int ); void textOptionsChanged( const QskTextOptions& ); - void tabPositionChanged( Qsk::Position ); + void edgeChanged( Qt::Edge ); void autoScrollFocusedButtonChanged( bool ); void autoFitTabsChanged( bool ); diff --git a/src/controls/QskTabView.cpp b/src/controls/QskTabView.cpp index 567586c6..5fb3a442 100644 --- a/src/controls/QskTabView.cpp +++ b/src/controls/QskTabView.cpp @@ -29,17 +29,12 @@ class QskTabView::PrivateData }; QskTabView::QskTabView( QQuickItem* parent ) - : QskTabView( Qsk::Top, parent ) -{ -} - -QskTabView::QskTabView( Qsk::Position tabPosition, QQuickItem* parent ) : Inherited( parent ) , m_data( new PrivateData() ) { setPolishOnResize( true ); - m_data->tabBar = new QskTabBar( tabPosition, this ); + m_data->tabBar = new QskTabBar( Qt::TopEdge, this ); m_data->stackBox = new QskStackBox( this ); m_data->stackBox->setObjectName( QStringLiteral( "QskTabViewStackBox" ) ); @@ -67,8 +62,8 @@ QskTabView::QskTabView( Qsk::Position tabPosition, QQuickItem* parent ) connect( m_data->tabBar, &QskTabBar::countChanged, this, &QskTabView::countChanged ); - connect( m_data->tabBar, &QskTabBar::tabPositionChanged, - this, &QskTabView::tabPositionChanged ); + connect( m_data->tabBar, &QskTabBar::edgeChanged, + this, &QskTabView::tabBarEdgeChanged ); connect( m_data->tabBar, &QskTabBar::autoFitTabsChanged, this, &QskTabView::autoFitTabsChanged ); @@ -88,20 +83,14 @@ const QskTabBar* QskTabView::tabBar() const return m_data->tabBar; } -void QskTabView::setTabPosition( Qsk::Position position ) +void QskTabView::setTabBarEdge( Qt::Edge edge ) { - if ( position == tabPosition() ) - return; - - m_data->tabBar->setTabPosition( position ); - - polish(); - update(); + m_data->tabBar->setEdge( edge ); } -Qsk::Position QskTabView::tabPosition() const +Qt::Edge QskTabView::tabBarEdge() const { - return m_data->tabBar->tabPosition(); + return m_data->tabBar->edge(); } void QskTabView::setAutoFitTabs( bool on ) @@ -310,6 +299,7 @@ bool QskTabView::event( QEvent* event ) { resetImplicitSize(); polish(); + update(); } return Inherited::event( event ); diff --git a/src/controls/QskTabView.h b/src/controls/QskTabView.h index 04568497..c9f2eb7f 100644 --- a/src/controls/QskTabView.h +++ b/src/controls/QskTabView.h @@ -18,8 +18,8 @@ class QSK_EXPORT QskTabView : public QskControl Q_PROPERTY( QskTabBar* tabBar READ tabBar ) - Q_PROPERTY( Qsk::Position tabPosition READ tabPosition - WRITE setTabPosition NOTIFY tabPositionChanged FINAL ) + Q_PROPERTY( Qt::Edge tabBarEdge READ tabBarEdge + WRITE setTabBarEdge NOTIFY tabBarEdgeChanged FINAL ) Q_PROPERTY( bool autoFitTabs READ autoFitTabs WRITE setAutoFitTabs NOTIFY autoFitTabsChanged FINAL ) @@ -37,15 +37,13 @@ class QSK_EXPORT QskTabView : public QskControl QSK_SUBCONTROLS( TabBar, Page ) QskTabView( QQuickItem* parent = nullptr ); - QskTabView( Qsk::Position tabPosition, QQuickItem* parent = nullptr ); - ~QskTabView() override; const QskTabBar* tabBar() const; QskTabBar* tabBar(); - void setTabPosition( Qsk::Position ); - Qsk::Position tabPosition() const; + void setTabBarEdge( Qt::Edge ); + Qt::Edge tabBarEdge() const; void setAutoFitTabs( bool ); bool autoFitTabs() const; @@ -83,7 +81,7 @@ class QSK_EXPORT QskTabView : public QskControl Q_SIGNALS: void currentIndexChanged( int index ); void countChanged( int ); - void tabPositionChanged( Qsk::Position ); + void tabBarEdgeChanged( Qt::Edge ); void autoFitTabsChanged( bool ); protected: diff --git a/src/controls/QskTabViewSkinlet.cpp b/src/controls/QskTabViewSkinlet.cpp index e2b51c7d..0d6daadf 100644 --- a/src/controls/QskTabViewSkinlet.cpp +++ b/src/controls/QskTabViewSkinlet.cpp @@ -51,27 +51,27 @@ QSGNode* QskTabViewSkinlet::updateSubNode( QRectF QskTabViewSkinlet::pageRect( const QskTabView* tabView, const QRectF& rect ) const { - const QRectF barRect = subControlRect( tabView, rect, QskTabView::TabBar ); + const auto barRect = subControlRect( tabView, rect, QskTabView::TabBar ); #if 1 - QRectF r = tabView->layoutRect(); + auto r = tabView->layoutRect(); #endif - switch( tabView->tabPosition() ) + switch( tabView->tabBarEdge() ) { - case Qsk::Top: + case Qt::TopEdge: r.setTop( barRect.bottom() ); break; - case Qsk::Bottom: + case Qt::BottomEdge: r.setBottom( barRect.top() ); break; - case Qsk::Left: + case Qt::LeftEdge: r.setLeft( barRect.right() ); break; - case Qsk::Right: + case Qt::RightEdge: r.setRight( barRect.left() ); break; } @@ -90,21 +90,21 @@ QRectF QskTabViewSkinlet::tabBarRect( QRectF r = tabView->layoutRect(); #endif - switch( tabView->tabPosition() ) + switch( tabView->tabBarEdge() ) { - case Qsk::Top: + case Qt::TopEdge: r.setHeight( barSize.height() ); break; - case Qsk::Bottom: + case Qt::BottomEdge: r.setTop( r.bottom() - barSize.height() ); break; - case Qsk::Left: + case Qt::LeftEdge: r.setWidth( barSize.width() ); break; - case Qsk::Right: + case Qt::RightEdge: r.setLeft( r.right() - barSize.width() ); break; }