using Qt::Edge instead of Qsk::Position

This commit is contained in:
Uwe Rathmann 2022-04-17 12:37:13 +02:00
parent 15e04de169
commit d0b926b868
10 changed files with 116 additions and 72 deletions

View File

@ -32,7 +32,7 @@ namespace
: QskTabView( parent ) : QskTabView( parent )
{ {
setMargins( 10 ); setMargins( 10 );
setTabPosition( Qsk::Left ); setTabBarEdge( Qt::LeftEdge );
setAutoFitTabs( true ); setAutoFitTabs( true );
} }

View File

@ -35,7 +35,7 @@ int main( int argc, char* argv[] )
auto tabView = new QskTabView(); auto tabView = new QskTabView();
tabView->setMargins( 10 ); tabView->setMargins( 10 );
tabView->setTabPosition( Qsk::Left ); tabView->setTabBarEdge( Qt::LeftEdge );
tabView->setAutoFitTabs( true ); tabView->setAutoFitTabs( true );
tabView->addTab( "Grid Layout", new GridLayoutPage() ); tabView->addTab( "Grid Layout", new GridLayoutPage() );

View File

@ -75,7 +75,8 @@ class GraphicLabel : public QskGraphicLabel
MainWindow::MainWindow() MainWindow::MainWindow()
{ {
m_tabView = new QskTabView( Qsk::Left ); m_tabView = new QskTabView();
m_tabView->setTabBarEdge( Qt::LeftEdge );
const QString resourceDir( ":/qvg" ); const QString resourceDir( ":/qvg" );
const QStringList icons = QDir( resourceDir ).entryList(); const QStringList icons = QDir( resourceDir ).entryList();

View File

@ -110,13 +110,14 @@ class TabView : public QskTabView
void rotate() 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++ ) 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; break;
} }
} }

View File

@ -21,6 +21,11 @@ class QSK_EXPORT QskBoxBorderMetrics
Q_PROPERTY( QskMargins widths READ widths WRITE setWidths ) Q_PROPERTY( QskMargins widths READ widths WRITE setWidths )
Q_PROPERTY( Qt::SizeMode sizeMode READ sizeMode WRITE setSizeMode ) 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: public:
constexpr QskBoxBorderMetrics() noexcept; constexpr QskBoxBorderMetrics() noexcept;
@ -47,6 +52,16 @@ class QSK_EXPORT QskBoxBorderMetrics
void setWidths( const QskMargins& ) noexcept; void setWidths( const QskMargins& ) noexcept;
constexpr const QskMargins& widths() const 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; void setSizeMode( Qt::SizeMode ) noexcept;
constexpr Qt::SizeMode sizeMode() const 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 ); 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 inline constexpr Qt::SizeMode QskBoxBorderMetrics::sizeMode() const noexcept
{ {
return m_sizeMode; return m_sizeMode;

View File

@ -16,9 +16,9 @@
QSK_SUBCONTROL( QskTabBar, Panel ) 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; return Qt::Horizontal;
else else
return Qt::Vertical; return Qt::Vertical;
@ -250,8 +250,8 @@ namespace
class QskTabBar::PrivateData class QskTabBar::PrivateData
{ {
public: public:
PrivateData( Qsk::Position position ) PrivateData( Qt::Edge edge )
: position( position ) : edge( edge )
{ {
} }
@ -274,21 +274,21 @@ class QskTabBar::PrivateData
int currentIndex = -1; int currentIndex = -1;
QskTextOptions textOptions; QskTextOptions textOptions;
uint position : 2; Qt::Edge edge;
}; };
QskTabBar::QskTabBar( QQuickItem* parent ) 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 ) : Inherited( parent )
, m_data( new PrivateData( position ) ) , m_data( new PrivateData( edge ) )
{ {
setAutoLayoutChildren( true ); setAutoLayoutChildren( true );
const auto orientation = qskOrientation( position ); const auto orientation = qskOrientation( edge );
if ( orientation == Qt::Horizontal ) if ( orientation == Qt::Horizontal )
initSizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Fixed ); 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; 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() ) if ( orientation != m_data->buttonBox->orientation() )
{ {
@ -334,17 +334,17 @@ void QskTabBar::setTabPosition( Qsk::Position position )
for ( int i = 0; i < count(); i++ ) for ( int i = 0; i < count(); i++ )
buttonAt( i )->update(); 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 Qt::Orientation QskTabBar::orientation() const
{ {
return qskOrientation( m_data->position ); return qskOrientation( m_data->edge );
} }
void QskTabBar::setAutoScrollFocusedButton( bool on ) void QskTabBar::setAutoScrollFocusedButton( bool on )
@ -363,7 +363,7 @@ bool QskTabBar::autoScrollFocusButton() const
void QskTabBar::setAutoFitTabs( bool on ) 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 ); int policy = m_data->buttonBox->sizePolicy( orientation );
if ( ( policy & QskSizePolicy::GrowFlag ) != on ) if ( ( policy & QskSizePolicy::GrowFlag ) != on )
@ -682,18 +682,18 @@ QskAspect::Subcontrol QskTabBar::substitutedSubcontrol(
QskAspect::Placement QskTabBar::effectivePlacement() const QskAspect::Placement QskTabBar::effectivePlacement() const
{ {
switch ( m_data->position ) switch ( m_data->edge )
{ {
case Qsk::Left: case Qt::LeftEdge:
return QskAspect::Left; return QskAspect::Left;
case Qsk::Right: case Qt::RightEdge:
return QskAspect::Right; return QskAspect::Right;
case Qsk::Top: case Qt::TopEdge:
return QskAspect::Top; return QskAspect::Top;
case Qsk::Bottom: case Qt::BottomEdge:
return QskAspect::Bottom; return QskAspect::Bottom;
} }

View File

@ -16,8 +16,7 @@ class QSK_EXPORT QskTabBar : public QskBox
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY( Qsk::Position tabPosition READ tabPosition Q_PROPERTY( Qt::Edge edge READ edge WRITE setEdge NOTIFY edgeChanged FINAL )
WRITE setTabPosition NOTIFY tabPositionChanged FINAL )
Q_PROPERTY( Qt::Orientation orientation READ orientation ) Q_PROPERTY( Qt::Orientation orientation READ orientation )
@ -41,12 +40,12 @@ class QSK_EXPORT QskTabBar : public QskBox
QSK_SUBCONTROLS( Panel ) QSK_SUBCONTROLS( Panel )
QskTabBar( QQuickItem* parent = nullptr ); QskTabBar( QQuickItem* parent = nullptr );
QskTabBar( Qsk::Position, QQuickItem* parent = nullptr ); QskTabBar( Qt::Edge, QQuickItem* parent = nullptr );
~QskTabBar() override; ~QskTabBar() override;
void setTabPosition( Qsk::Position ); void setEdge( Qt::Edge );
Qsk::Position tabPosition() const; Qt::Edge edge() const;
Qt::Orientation orientation() const; Qt::Orientation orientation() const;
@ -98,7 +97,7 @@ class QSK_EXPORT QskTabBar : public QskBox
void buttonClicked( int index ); void buttonClicked( int index );
void countChanged( int ); void countChanged( int );
void textOptionsChanged( const QskTextOptions& ); void textOptionsChanged( const QskTextOptions& );
void tabPositionChanged( Qsk::Position ); void edgeChanged( Qt::Edge );
void autoScrollFocusedButtonChanged( bool ); void autoScrollFocusedButtonChanged( bool );
void autoFitTabsChanged( bool ); void autoFitTabsChanged( bool );

View File

@ -29,17 +29,12 @@ class QskTabView::PrivateData
}; };
QskTabView::QskTabView( QQuickItem* parent ) QskTabView::QskTabView( QQuickItem* parent )
: QskTabView( Qsk::Top, parent )
{
}
QskTabView::QskTabView( Qsk::Position tabPosition, QQuickItem* parent )
: Inherited( parent ) : Inherited( parent )
, m_data( new PrivateData() ) , m_data( new PrivateData() )
{ {
setPolishOnResize( true ); 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 = new QskStackBox( this );
m_data->stackBox->setObjectName( QStringLiteral( "QskTabViewStackBox" ) ); m_data->stackBox->setObjectName( QStringLiteral( "QskTabViewStackBox" ) );
@ -67,8 +62,8 @@ QskTabView::QskTabView( Qsk::Position tabPosition, QQuickItem* parent )
connect( m_data->tabBar, &QskTabBar::countChanged, connect( m_data->tabBar, &QskTabBar::countChanged,
this, &QskTabView::countChanged ); this, &QskTabView::countChanged );
connect( m_data->tabBar, &QskTabBar::tabPositionChanged, connect( m_data->tabBar, &QskTabBar::edgeChanged,
this, &QskTabView::tabPositionChanged ); this, &QskTabView::tabBarEdgeChanged );
connect( m_data->tabBar, &QskTabBar::autoFitTabsChanged, connect( m_data->tabBar, &QskTabBar::autoFitTabsChanged,
this, &QskTabView::autoFitTabsChanged ); this, &QskTabView::autoFitTabsChanged );
@ -88,20 +83,14 @@ const QskTabBar* QskTabView::tabBar() const
return m_data->tabBar; return m_data->tabBar;
} }
void QskTabView::setTabPosition( Qsk::Position position ) void QskTabView::setTabBarEdge( Qt::Edge edge )
{ {
if ( position == tabPosition() ) m_data->tabBar->setEdge( edge );
return;
m_data->tabBar->setTabPosition( position );
polish();
update();
} }
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 ) void QskTabView::setAutoFitTabs( bool on )
@ -310,6 +299,7 @@ bool QskTabView::event( QEvent* event )
{ {
resetImplicitSize(); resetImplicitSize();
polish(); polish();
update();
} }
return Inherited::event( event ); return Inherited::event( event );

View File

@ -18,8 +18,8 @@ class QSK_EXPORT QskTabView : public QskControl
Q_PROPERTY( QskTabBar* tabBar READ tabBar ) Q_PROPERTY( QskTabBar* tabBar READ tabBar )
Q_PROPERTY( Qsk::Position tabPosition READ tabPosition Q_PROPERTY( Qt::Edge tabBarEdge READ tabBarEdge
WRITE setTabPosition NOTIFY tabPositionChanged FINAL ) WRITE setTabBarEdge NOTIFY tabBarEdgeChanged FINAL )
Q_PROPERTY( bool autoFitTabs READ autoFitTabs Q_PROPERTY( bool autoFitTabs READ autoFitTabs
WRITE setAutoFitTabs NOTIFY autoFitTabsChanged FINAL ) WRITE setAutoFitTabs NOTIFY autoFitTabsChanged FINAL )
@ -37,15 +37,13 @@ class QSK_EXPORT QskTabView : public QskControl
QSK_SUBCONTROLS( TabBar, Page ) QSK_SUBCONTROLS( TabBar, Page )
QskTabView( QQuickItem* parent = nullptr ); QskTabView( QQuickItem* parent = nullptr );
QskTabView( Qsk::Position tabPosition, QQuickItem* parent = nullptr );
~QskTabView() override; ~QskTabView() override;
const QskTabBar* tabBar() const; const QskTabBar* tabBar() const;
QskTabBar* tabBar(); QskTabBar* tabBar();
void setTabPosition( Qsk::Position ); void setTabBarEdge( Qt::Edge );
Qsk::Position tabPosition() const; Qt::Edge tabBarEdge() const;
void setAutoFitTabs( bool ); void setAutoFitTabs( bool );
bool autoFitTabs() const; bool autoFitTabs() const;
@ -83,7 +81,7 @@ class QSK_EXPORT QskTabView : public QskControl
Q_SIGNALS: Q_SIGNALS:
void currentIndexChanged( int index ); void currentIndexChanged( int index );
void countChanged( int ); void countChanged( int );
void tabPositionChanged( Qsk::Position ); void tabBarEdgeChanged( Qt::Edge );
void autoFitTabsChanged( bool ); void autoFitTabsChanged( bool );
protected: protected:

View File

@ -51,27 +51,27 @@ QSGNode* QskTabViewSkinlet::updateSubNode(
QRectF QskTabViewSkinlet::pageRect( QRectF QskTabViewSkinlet::pageRect(
const QskTabView* tabView, const QRectF& rect ) const 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 #if 1
QRectF r = tabView->layoutRect(); auto r = tabView->layoutRect();
#endif #endif
switch( tabView->tabPosition() ) switch( tabView->tabBarEdge() )
{ {
case Qsk::Top: case Qt::TopEdge:
r.setTop( barRect.bottom() ); r.setTop( barRect.bottom() );
break; break;
case Qsk::Bottom: case Qt::BottomEdge:
r.setBottom( barRect.top() ); r.setBottom( barRect.top() );
break; break;
case Qsk::Left: case Qt::LeftEdge:
r.setLeft( barRect.right() ); r.setLeft( barRect.right() );
break; break;
case Qsk::Right: case Qt::RightEdge:
r.setRight( barRect.left() ); r.setRight( barRect.left() );
break; break;
} }
@ -90,21 +90,21 @@ QRectF QskTabViewSkinlet::tabBarRect(
QRectF r = tabView->layoutRect(); QRectF r = tabView->layoutRect();
#endif #endif
switch( tabView->tabPosition() ) switch( tabView->tabBarEdge() )
{ {
case Qsk::Top: case Qt::TopEdge:
r.setHeight( barSize.height() ); r.setHeight( barSize.height() );
break; break;
case Qsk::Bottom: case Qt::BottomEdge:
r.setTop( r.bottom() - barSize.height() ); r.setTop( r.bottom() - barSize.height() );
break; break;
case Qsk::Left: case Qt::LeftEdge:
r.setWidth( barSize.width() ); r.setWidth( barSize.width() );
break; break;
case Qsk::Right: case Qt::RightEdge:
r.setLeft( r.right() - barSize.width() ); r.setLeft( r.right() - barSize.width() );
break; break;
} }