diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-10-24 17:38:06 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-10-26 10:13:22 +0000 |
commit | 935daea1cdd9247d04618fcd67eb2a935060d1db (patch) | |
tree | df16bd763fc6f7ae8938d0fd1f70fdb35da3da0d /src/quicktemplates2 | |
parent | 25d6d137a90ca9e3ce654adcc454c23de4622a49 (diff) |
Page: support spacing
Add spacing support into QQuickPageLayout. Having spacing and padding
separately gives more fine-grained control over the layout. Spacing is
inserted between the header, content, and footer, but only when the
respective building blocks are visible.
Change-Id: Ia26a4c33c2756a603ca6d53aefac3a66414b36d3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r-- | src/quicktemplates2/qquickcontrol.cpp | 17 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontrol_p.h | 1 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpage.cpp | 7 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpage_p.h | 1 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpagelayout.cpp | 8 |
5 files changed, 27 insertions, 7 deletions
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index e1df04cc..b1f6bd5f 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -766,10 +766,13 @@ qreal QQuickControl::spacing() const void QQuickControl::setSpacing(qreal spacing) { Q_D(QQuickControl); - if (!qFuzzyCompare(d->spacing, spacing)) { - d->spacing = spacing; - emit spacingChanged(); - } + if (qFuzzyCompare(d->spacing, spacing)) + return; + + qreal oldSpacing = d->spacing; + d->spacing = spacing; + emit spacingChanged(); + spacingChange(spacing, oldSpacing); } void QQuickControl::resetSpacing() @@ -1291,6 +1294,12 @@ void QQuickControl::mirrorChange() emit mirroredChanged(); } +void QQuickControl::spacingChange(qreal newSpacing, qreal oldSpacing) +{ + Q_UNUSED(newSpacing); + Q_UNUSED(oldSpacing); +} + void QQuickControl::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) { Q_D(QQuickControl); diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h index 7187344a..3bc21684 100644 --- a/src/quicktemplates2/qquickcontrol_p.h +++ b/src/quicktemplates2/qquickcontrol_p.h @@ -189,6 +189,7 @@ protected: virtual void fontChange(const QFont &newFont, const QFont &oldFont); virtual void hoverChange(); virtual void mirrorChange(); + virtual void spacingChange(qreal newSpacing, qreal oldSpacing); virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); virtual void localeChange(const QLocale &newLocale, const QLocale &oldLocale); diff --git a/src/quicktemplates2/qquickpage.cpp b/src/quicktemplates2/qquickpage.cpp index 0098cb93..432c8c63 100644 --- a/src/quicktemplates2/qquickpage.cpp +++ b/src/quicktemplates2/qquickpage.cpp @@ -349,6 +349,13 @@ void QQuickPage::paddingChange(const QMarginsF &newPadding, const QMarginsF &old d->layout->update(); } +void QQuickPage::spacingChange(qreal newSpacing, qreal oldSpacing) +{ + Q_D(QQuickPage); + QQuickControl::spacingChange(newSpacing, oldSpacing); + d->layout->update(); +} + #ifndef QT_NO_ACCESSIBILITY QAccessible::Role QQuickPage::accessibleRole() const { diff --git a/src/quicktemplates2/qquickpage_p.h b/src/quicktemplates2/qquickpage_p.h index c63b11d7..36ba9fff 100644 --- a/src/quicktemplates2/qquickpage_p.h +++ b/src/quicktemplates2/qquickpage_p.h @@ -100,6 +100,7 @@ protected: void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override; + void spacingChange(qreal newSpacing, qreal oldSpacing) override; #ifndef QT_NO_ACCESSIBILITY QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickpagelayout.cpp b/src/quicktemplates2/qquickpagelayout.cpp index a1747b47..b787dd08 100644 --- a/src/quicktemplates2/qquickpagelayout.cpp +++ b/src/quicktemplates2/qquickpagelayout.cpp @@ -142,17 +142,19 @@ void QQuickPageLayout::update() const qreal hh = m_header && m_header->isVisible() ? m_header->height() : 0; const qreal fh = m_footer && m_footer->isVisible() ? m_footer->height() : 0; + const qreal hsp = hh > 0 ? m_control->spacing() : 0; + const qreal fsp = fh > 0 ? m_control->spacing() : 0; - content->setY(hh + m_control->topPadding()); + content->setY(m_control->topPadding() + hh + hsp); content->setX(m_control->leftPadding()); content->setWidth(m_control->availableWidth()); - content->setHeight(m_control->availableHeight() - hh - fh); + content->setHeight(m_control->availableHeight() - hh - fh - hsp - fsp); if (m_header) m_header->setWidth(m_control->width()); if (m_footer) { - m_footer->setY(m_control->height() - fh); + m_footer->setY(m_control->height() - m_footer->height()); m_footer->setWidth(m_control->width()); } } |