From 65feaac031a7c51208c4d77e5d0f1ce5afee7775 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sat, 14 Sep 2019 15:28:49 +0200 Subject: [PATCH] convenience methods for inserting and changing the layoutAlignmentHint in one call --- src/layouts/QskGridBox.cpp | 18 ++++++++++++++++++ src/layouts/QskGridBox.h | 5 +++++ src/layouts/QskLinearBox.cpp | 14 ++++++++++++++ src/layouts/QskLinearBox.h | 3 +++ src/layouts/QskStackBox.cpp | 14 ++++++++++++++ src/layouts/QskStackBox.h | 2 ++ 6 files changed, 56 insertions(+) diff --git a/src/layouts/QskGridBox.cpp b/src/layouts/QskGridBox.cpp index 6a6044af..18d0dbf8 100644 --- a/src/layouts/QskGridBox.cpp +++ b/src/layouts/QskGridBox.cpp @@ -94,6 +94,24 @@ QskGridBox::~QskGridBox() { } +int QskGridBox::addItem( QQuickItem* item, + int row, int column, Qt::Alignment alignment ) +{ + if ( auto control = qskControlCast( item ) ) + control->setLayoutAlignmentHint( alignment ); + + return addItem( item, row, column ); +} + +int QskGridBox::addItem( QQuickItem* item, + int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment ) +{ + if ( auto control = qskControlCast( item ) ) + control->setLayoutAlignmentHint( alignment ); + + return addItem( item, row, column, rowSpan, columnSpan ); +} + int QskGridBox::addItem( QQuickItem* item, int row, int column, int rowSpan, int columnSpan ) { diff --git a/src/layouts/QskGridBox.h b/src/layouts/QskGridBox.h index ca774fba..e2786457 100644 --- a/src/layouts/QskGridBox.h +++ b/src/layouts/QskGridBox.h @@ -29,6 +29,11 @@ class QSK_EXPORT QskGridBox : public QskBox Q_INVOKABLE int addItem( QQuickItem*, int row, int column ); + int addItem( QQuickItem*, int row, int column, Qt::Alignment ); + + int addItem( QQuickItem*, int row, int column, + int rowSpan, int columnSpan, Qt::Alignment ); + Q_INVOKABLE int addSpacer( qreal spacing, int row, int column, int columnSpan = 1, int rowSpan = 1 ); diff --git a/src/layouts/QskLinearBox.cpp b/src/layouts/QskLinearBox.cpp index 8001ca30..2fa5f177 100644 --- a/src/layouts/QskLinearBox.cpp +++ b/src/layouts/QskLinearBox.cpp @@ -360,11 +360,25 @@ Qt::Edges QskLinearBox::extraSpacingAt() const return m_data->engine.extraSpacingAt(); } +int QskLinearBox::addItem( QQuickItem* item, Qt::Alignment alignment ) +{ + return insertItem( -1, item, alignment ); +} + int QskLinearBox::addItem( QQuickItem* item ) { return insertItem( -1, item ); } +int QskLinearBox::insertItem( + int index, QQuickItem* item, Qt::Alignment alignment ) +{ + if ( auto control = qskControlCast( item ) ) + control->setLayoutAlignmentHint( alignment ); + + return insertItem( index, item ); +} + int QskLinearBox::insertItem( int index, QQuickItem* item ) { if ( item == nullptr ) diff --git a/src/layouts/QskLinearBox.h b/src/layouts/QskLinearBox.h index f625fc6e..0542c96d 100644 --- a/src/layouts/QskLinearBox.h +++ b/src/layouts/QskLinearBox.h @@ -71,7 +71,10 @@ class QSK_EXPORT QskLinearBox : public QskIndexedLayoutBox qreal spacing() const; Q_INVOKABLE int addItem( QQuickItem* ); + int addItem( QQuickItem*, Qt::Alignment ); + Q_INVOKABLE int insertItem( int index, QQuickItem* ); + int insertItem( int index, QQuickItem*, Qt::Alignment ); Q_INVOKABLE int addSpacer( qreal spacing, int stretchFactor = 0 ); Q_INVOKABLE int insertSpacer( int index, qreal spacing, int stretchFactor = 0 ); diff --git a/src/layouts/QskStackBox.cpp b/src/layouts/QskStackBox.cpp index 443f2889..7129975f 100644 --- a/src/layouts/QskStackBox.cpp +++ b/src/layouts/QskStackBox.cpp @@ -177,6 +177,11 @@ void QskStackBox::addItem( QQuickItem* item ) insertItem( -1, item ); } +void QskStackBox::addItem( QQuickItem* item, Qt::Alignment alignment ) +{ + insertItem( -1, item, alignment ); +} + void QskStackBox::insertItem( int index, QQuickItem* item ) { if ( item == nullptr ) @@ -236,6 +241,15 @@ void QskStackBox::insertItem( int index, QQuickItem* item ) polish(); } +void QskStackBox::insertItem( + int index, QQuickItem* item, Qt::Alignment alignment ) +{ + if ( auto control = qskControlCast( item ) ) + control->setLayoutAlignmentHint( alignment ); + + insertItem( index, item ); +} + void QskStackBox::removeAt( int index ) { removeItemInternal( index, false ); diff --git a/src/layouts/QskStackBox.h b/src/layouts/QskStackBox.h index eecad1ba..95082003 100644 --- a/src/layouts/QskStackBox.h +++ b/src/layouts/QskStackBox.h @@ -35,8 +35,10 @@ class QSK_EXPORT QskStackBox : public QskIndexedLayoutBox int indexOf( const QQuickItem* ) const; void addItem( QQuickItem* ); + void addItem( QQuickItem*, Qt::Alignment ); void insertItem( int index, QQuickItem* ); + void insertItem( int index, QQuickItem*, Qt::Alignment ); void removeItem( const QQuickItem* ); void removeAt( int index );