From 8419d93e540fe7435883a2933eb6c6243a562f2c Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 19 Dec 2016 10:19:34 +0100 Subject: Pimplify layout params classes Change-Id: I110a6bcefdda5609574898ebc03641706832cbee Reviewed-by: J-P Nurmi --- .../widget/qnativeandroidframelayoutparams.cpp | 24 +- .../widget/qnativeandroidframelayoutparams_p.h | 5 +- .../widget/qnativeandroidlinearlayoutparams.cpp | 37 ++- .../widget/qnativeandroidlinearlayoutparams_p.h | 6 +- .../widget/qnativeandroidmarginlayoutparams.cpp | 60 +++-- .../widget/qnativeandroidmarginlayoutparams_p.h | 11 +- .../widget/qnativeandroidmarginlayoutparams_p_p.h | 68 ++++++ .../widget/qnativeandroidrelativelayoutparams.cpp | 272 ++++++++++++--------- .../widget/qnativeandroidrelativelayoutparams_p.h | 28 +-- src/android/widget/widget.pri | 1 + 10 files changed, 330 insertions(+), 182 deletions(-) create mode 100644 src/android/widget/qnativeandroidmarginlayoutparams_p_p.h diff --git a/src/android/widget/qnativeandroidframelayoutparams.cpp b/src/android/widget/qnativeandroidframelayoutparams.cpp index c1240fb..0bed9e9 100644 --- a/src/android/widget/qnativeandroidframelayoutparams.cpp +++ b/src/android/widget/qnativeandroidframelayoutparams.cpp @@ -35,26 +35,35 @@ ****************************************************************************/ #include "qnativeandroidframelayoutparams_p.h" +#include "qnativeandroidmarginlayoutparams_p_p.h" #include "qnativeandroidview_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidFrameLayoutParams::QNativeAndroidFrameLayoutParams(QNativeAndroidView *view) : - QNativeAndroidMarginLayoutParams(view) +class QNativeAndroidFrameLayoutParamsPrivate : public QNativeAndroidMarginLayoutParamsPrivate +{ +public: + QNativeAndroidOptional gravity; +}; + +QNativeAndroidFrameLayoutParams::QNativeAndroidFrameLayoutParams(QNativeAndroidView *view) + : QNativeAndroidMarginLayoutParams(*(new QNativeAndroidMarginLayoutParamsPrivate), view) { } int QNativeAndroidFrameLayoutParams::gravity() const { - if (m_gravity.isNull()) + Q_D(const QNativeAndroidFrameLayoutParams); + if (d->gravity.isNull()) return 0; // TODO - return m_gravity; + return d->gravity; } void QNativeAndroidFrameLayoutParams::setGravity(int value) { + Q_D(QNativeAndroidFrameLayoutParams); if (value != gravity()) { - m_gravity = value; + d->gravity = value; invalidate(); emit gravityChanged(); } @@ -69,10 +78,11 @@ QAndroidJniObject QNativeAndroidFrameLayoutParams::onCreate() void QNativeAndroidFrameLayoutParams::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidFrameLayoutParams); QNativeAndroidMarginLayoutParams::onInflate(instance); - if (!m_gravity.isNull()) - instance.callMethod("setGravity", "(I)V", m_gravity); + if (!d->gravity.isNull()) + instance.callMethod("setGravity", "(I)V", d->gravity); } QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidframelayoutparams_p.h b/src/android/widget/qnativeandroidframelayoutparams_p.h index 7302ba2..1a041aa 100644 --- a/src/android/widget/qnativeandroidframelayoutparams_p.h +++ b/src/android/widget/qnativeandroidframelayoutparams_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidFrameLayoutParamsPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidFrameLayoutParams : public QNativeAndroidMarginLayoutParams { Q_OBJECT @@ -71,7 +73,8 @@ protected: void onInflate(QAndroidJniObject &instance) override; private: - QNativeAndroidOptional m_gravity; + Q_DISABLE_COPY(QNativeAndroidFrameLayoutParams) + Q_DECLARE_PRIVATE(QNativeAndroidFrameLayoutParams) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidlinearlayoutparams.cpp b/src/android/widget/qnativeandroidlinearlayoutparams.cpp index df72cb3..028e43e 100644 --- a/src/android/widget/qnativeandroidlinearlayoutparams.cpp +++ b/src/android/widget/qnativeandroidlinearlayoutparams.cpp @@ -35,26 +35,36 @@ ****************************************************************************/ #include "qnativeandroidlinearlayoutparams_p.h" +#include "qnativeandroidmarginlayoutparams_p_p.h" #include "qnativeandroidview_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidLinearLayoutParams::QNativeAndroidLinearLayoutParams(QNativeAndroidView *view) : - QNativeAndroidMarginLayoutParams(view) +class QNativeAndroidLinearLayoutParamsPrivate : public QNativeAndroidMarginLayoutParamsPrivate +{ +public: + QNativeAndroidOptional gravity; + QNativeAndroidOptional weight; +}; + +QNativeAndroidLinearLayoutParams::QNativeAndroidLinearLayoutParams(QNativeAndroidView *view) + : QNativeAndroidMarginLayoutParams(*(new QNativeAndroidLinearLayoutParamsPrivate), view) { } int QNativeAndroidLinearLayoutParams::gravity() const { - if (m_gravity.isNull()) + Q_D(const QNativeAndroidLinearLayoutParams); + if (d->gravity.isNull()) return 0; // TODO - return m_gravity; + return d->gravity; } void QNativeAndroidLinearLayoutParams::setGravity(int value) { + Q_D(QNativeAndroidLinearLayoutParams); if (value != gravity()) { - m_gravity = value; + d->gravity = value; invalidate(); emit gravityChanged(); } @@ -62,15 +72,17 @@ void QNativeAndroidLinearLayoutParams::setGravity(int value) qreal QNativeAndroidLinearLayoutParams::weight() const { - if (m_weight.isNull()) + Q_D(const QNativeAndroidLinearLayoutParams); + if (d->weight.isNull()) return 0.0; // TODO - return m_weight; + return d->weight; } void QNativeAndroidLinearLayoutParams::setWeight(qreal value) { + Q_D(QNativeAndroidLinearLayoutParams); if (value != weight()) { - m_weight = value; + d->weight = value; invalidate(); emit weightChanged(); } @@ -85,12 +97,13 @@ QAndroidJniObject QNativeAndroidLinearLayoutParams::onCreate() void QNativeAndroidLinearLayoutParams::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidLinearLayoutParams); QNativeAndroidMarginLayoutParams::onInflate(instance); - if (!m_gravity.isNull()) - instance.setField("gravity", m_gravity); - if (!m_weight.isNull()) - instance.setField("weight", m_weight); + if (!d->gravity.isNull()) + instance.setField("gravity", d->gravity); + if (!d->weight.isNull()) + instance.setField("weight", d->weight); } QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidlinearlayoutparams_p.h b/src/android/widget/qnativeandroidlinearlayoutparams_p.h index a9e4d6e..ce3486b 100644 --- a/src/android/widget/qnativeandroidlinearlayoutparams_p.h +++ b/src/android/widget/qnativeandroidlinearlayoutparams_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidLinearLayoutParamsPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidLinearLayoutParams : public QNativeAndroidMarginLayoutParams { Q_OBJECT @@ -76,8 +78,8 @@ protected: void onInflate(QAndroidJniObject &instance) override; private: - QNativeAndroidOptional m_gravity; - QNativeAndroidOptional m_weight; + Q_DISABLE_COPY(QNativeAndroidLinearLayoutParams) + Q_DECLARE_PRIVATE(QNativeAndroidLinearLayoutParams) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidmarginlayoutparams.cpp b/src/android/widget/qnativeandroidmarginlayoutparams.cpp index 03dccb2..13cd1c1 100644 --- a/src/android/widget/qnativeandroidmarginlayoutparams.cpp +++ b/src/android/widget/qnativeandroidmarginlayoutparams.cpp @@ -35,26 +35,34 @@ ****************************************************************************/ #include "qnativeandroidmarginlayoutparams_p.h" +#include "qnativeandroidmarginlayoutparams_p_p.h" #include "qnativeandroidview_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidMarginLayoutParams::QNativeAndroidMarginLayoutParams(QNativeAndroidView *view) : - QNativeAndroidLayoutParams(view) +QNativeAndroidMarginLayoutParams::QNativeAndroidMarginLayoutParams(QNativeAndroidView *view) + : QNativeAndroidLayoutParams(*(new QNativeAndroidMarginLayoutParamsPrivate), view) +{ +} + +QNativeAndroidMarginLayoutParams::QNativeAndroidMarginLayoutParams(QNativeAndroidMarginLayoutParamsPrivate &dd, QNativeAndroidView *view) + : QNativeAndroidLayoutParams(dd, view) { } int QNativeAndroidMarginLayoutParams::margin() const { - if (m_margin.isNull()) + Q_D(const QNativeAndroidMarginLayoutParams); + if (d->margin.isNull()) return 0; - return m_margin; + return d->margin; } void QNativeAndroidMarginLayoutParams::setMargin(int margin) { - if (m_margin.isNull() || m_margin != margin) { - m_margin = margin; + Q_D(QNativeAndroidMarginLayoutParams); + if (d->margin.isNull() || d->margin != margin) { + d->margin = margin; invalidate(); emit marginChanged(); } @@ -62,15 +70,17 @@ void QNativeAndroidMarginLayoutParams::setMargin(int margin) int QNativeAndroidMarginLayoutParams::topMargin() const { - if (m_topMargin.isNull()) + Q_D(const QNativeAndroidMarginLayoutParams); + if (d->topMargin.isNull()) return margin(); - return m_topMargin; + return d->topMargin; } void QNativeAndroidMarginLayoutParams::setTopMargin(int margin) { - if (m_topMargin.isNull() || m_topMargin != margin) { - m_topMargin = margin; + Q_D(QNativeAndroidMarginLayoutParams); + if (d->topMargin.isNull() || d->topMargin != margin) { + d->topMargin = margin; invalidate(); emit topMarginChanged(); } @@ -78,15 +88,17 @@ void QNativeAndroidMarginLayoutParams::setTopMargin(int margin) int QNativeAndroidMarginLayoutParams::leftMargin() const { - if (m_leftMargin.isNull()) + Q_D(const QNativeAndroidMarginLayoutParams); + if (d->leftMargin.isNull()) return margin(); - return m_leftMargin; + return d->leftMargin; } void QNativeAndroidMarginLayoutParams::setLeftMargin(int margin) { - if (m_leftMargin.isNull() || m_leftMargin != margin) { - m_leftMargin = margin; + Q_D(QNativeAndroidMarginLayoutParams); + if (d->leftMargin.isNull() || d->leftMargin != margin) { + d->leftMargin = margin; invalidate(); emit leftMarginChanged(); } @@ -94,15 +106,17 @@ void QNativeAndroidMarginLayoutParams::setLeftMargin(int margin) int QNativeAndroidMarginLayoutParams::rightMargin() const { - if (m_rightMargin.isNull()) + Q_D(const QNativeAndroidMarginLayoutParams); + if (d->rightMargin.isNull()) return margin(); - return m_rightMargin; + return d->rightMargin; } void QNativeAndroidMarginLayoutParams::setRightMargin(int margin) { - if (m_rightMargin.isNull() || m_rightMargin != margin) { - m_rightMargin = margin; + Q_D(QNativeAndroidMarginLayoutParams); + if (d->rightMargin.isNull() || d->rightMargin != margin) { + d->rightMargin = margin; invalidate(); emit rightMarginChanged(); } @@ -110,15 +124,17 @@ void QNativeAndroidMarginLayoutParams::setRightMargin(int margin) int QNativeAndroidMarginLayoutParams::bottomMargin() const { - if (m_bottomMargin.isNull()) + Q_D(const QNativeAndroidMarginLayoutParams); + if (d->bottomMargin.isNull()) return margin(); - return m_bottomMargin; + return d->bottomMargin; } void QNativeAndroidMarginLayoutParams::setBottomMargin(int margin) { - if (m_bottomMargin.isNull() || m_bottomMargin != margin) { - m_bottomMargin = margin; + Q_D(QNativeAndroidMarginLayoutParams); + if (d->bottomMargin.isNull() || d->bottomMargin != margin) { + d->bottomMargin = margin; invalidate(); emit bottomMarginChanged(); } diff --git a/src/android/widget/qnativeandroidmarginlayoutparams_p.h b/src/android/widget/qnativeandroidmarginlayoutparams_p.h index 62a6ffd..c53144c 100644 --- a/src/android/widget/qnativeandroidmarginlayoutparams_p.h +++ b/src/android/widget/qnativeandroidmarginlayoutparams_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidMarginLayoutParamsPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidMarginLayoutParams : public QNativeAndroidLayoutParams { Q_OBJECT @@ -87,15 +89,14 @@ Q_SIGNALS: void bottomMarginChanged(); protected: + QNativeAndroidMarginLayoutParams(QNativeAndroidMarginLayoutParamsPrivate &dd, QNativeAndroidView *view); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; private: - QNativeAndroidOptional m_margin; - QNativeAndroidOptional m_topMargin; - QNativeAndroidOptional m_leftMargin; - QNativeAndroidOptional m_rightMargin; - QNativeAndroidOptional m_bottomMargin; + Q_DISABLE_COPY(QNativeAndroidMarginLayoutParams) + Q_DECLARE_PRIVATE(QNativeAndroidMarginLayoutParams) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidmarginlayoutparams_p_p.h b/src/android/widget/qnativeandroidmarginlayoutparams_p_p.h new file mode 100644 index 0000000..e337b55 --- /dev/null +++ b/src/android/widget/qnativeandroidmarginlayoutparams_p_p.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt QML Android module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNATIVEANDROIDMARGINLAYOUTPARAMS_P_P_H +#define QNATIVEANDROIDMARGINLAYOUTPARAMS_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QNativeAndroidMarginLayoutParamsPrivate : public QNativeAndroidLayoutParamsPrivate +{ +public: + QNativeAndroidOptional margin; + QNativeAndroidOptional topMargin; + QNativeAndroidOptional leftMargin; + QNativeAndroidOptional rightMargin; + QNativeAndroidOptional bottomMargin; +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDMARGINLAYOUTPARAMS_P_P_H diff --git a/src/android/widget/qnativeandroidrelativelayoutparams.cpp b/src/android/widget/qnativeandroidrelativelayoutparams.cpp index 4590346..1e45d2e 100644 --- a/src/android/widget/qnativeandroidrelativelayoutparams.cpp +++ b/src/android/widget/qnativeandroidrelativelayoutparams.cpp @@ -35,48 +35,57 @@ ****************************************************************************/ #include "qnativeandroidrelativelayoutparams_p.h" +#include "qnativeandroidmarginlayoutparams_p_p.h" #include "qnativeandroidrelativelayout_p.h" #include "qnativeandroidview_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidRelativeLayoutParams::QNativeAndroidRelativeLayoutParams(QNativeAndroidView *view) : - QNativeAndroidMarginLayoutParams(view), - m_above(0), - m_below(0), - m_alignTop(0), - m_alignLeft(0), - m_alignRight(0), - m_alignBottom(0), - m_alignStart(0), - m_alignEnd(0), - m_alignBaseline(0), - m_toLeftOf(0), - m_toRightOf(0), - m_toStartOf(0), - m_toEndOf(0), - m_alignParentTop(false), - m_alignParentLeft(false), - m_alignParentRight(false), - m_alignParentBottom(false), - m_alignParentStart(false), - m_alignParentEnd(false), - m_alignWithParent(false), - m_centerHorizontal(false), - m_centerVertical(false), - m_centerInParent(false) +class QNativeAndroidRelativeLayoutParamsPrivate : public QNativeAndroidMarginLayoutParamsPrivate +{ +public: + QNativeAndroidView *above = nullptr; + QNativeAndroidView *below = nullptr; + QNativeAndroidView *alignTop = nullptr; + QNativeAndroidView *alignLeft = nullptr; + QNativeAndroidView *alignRight = nullptr; + QNativeAndroidView *alignBottom = nullptr; + QNativeAndroidView *alignStart = nullptr; + QNativeAndroidView *alignEnd = nullptr; + QNativeAndroidView *alignBaseline = nullptr; + QNativeAndroidView *toLeftOf = nullptr; + QNativeAndroidView *toRightOf = nullptr; + QNativeAndroidView *toStartOf = nullptr; + QNativeAndroidView *toEndOf = nullptr; + + bool alignParentTop = false; + bool alignParentLeft = false; + bool alignParentRight = false; + bool alignParentBottom = false; + bool alignParentStart = false; + bool alignParentEnd = false; + bool alignWithParent = false; + bool centerHorizontal = false; + bool centerVertical = false; + bool centerInParent = false; +}; + +QNativeAndroidRelativeLayoutParams::QNativeAndroidRelativeLayoutParams(QNativeAndroidView *view) + : QNativeAndroidMarginLayoutParams(*(new QNativeAndroidRelativeLayoutParamsPrivate), view) { } QNativeAndroidView *QNativeAndroidRelativeLayoutParams::above() const { - return m_above; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->above; } void QNativeAndroidRelativeLayoutParams::setAbove(QNativeAndroidView *view) { - if (view != m_above) { - m_above = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->above) { + d->above = view; invalidate(); emit aboveChanged(); } @@ -84,13 +93,15 @@ void QNativeAndroidRelativeLayoutParams::setAbove(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::below() const { - return m_below; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->below; } void QNativeAndroidRelativeLayoutParams::setBelow(QNativeAndroidView *view) { - if (view != m_below) { - m_below = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->below) { + d->below = view; invalidate(); emit belowChanged(); } @@ -98,13 +109,15 @@ void QNativeAndroidRelativeLayoutParams::setBelow(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::alignTop() const { - return m_alignTop; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignTop; } void QNativeAndroidRelativeLayoutParams::setAlignTop(QNativeAndroidView *view) { - if (view != m_alignTop) { - m_alignTop = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->alignTop) { + d->alignTop = view; invalidate(); emit alignTopChanged(); } @@ -112,13 +125,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignTop(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::alignLeft() const { - return m_alignLeft; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignLeft; } void QNativeAndroidRelativeLayoutParams::setAlignLeft(QNativeAndroidView *view) { - if (view != m_alignLeft) { - m_alignLeft = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->alignLeft) { + d->alignLeft = view; invalidate(); emit alignLeftChanged(); } @@ -126,13 +141,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignLeft(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::alignRight() const { - return m_alignRight; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignRight; } void QNativeAndroidRelativeLayoutParams::setAlignRight(QNativeAndroidView *view) { - if (view != m_alignRight) { - m_alignRight = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->alignRight) { + d->alignRight = view; invalidate(); emit alignRightChanged(); } @@ -140,13 +157,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignRight(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::alignBottom() const { - return m_alignBottom; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignBottom; } void QNativeAndroidRelativeLayoutParams::setAlignBottom(QNativeAndroidView *view) { - if (view != m_alignBottom) { - m_alignBottom = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->alignBottom) { + d->alignBottom = view; invalidate(); emit alignBottomChanged(); } @@ -154,13 +173,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignBottom(QNativeAndroidView *view QNativeAndroidView *QNativeAndroidRelativeLayoutParams::alignStart() const { - return m_alignStart; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignStart; } void QNativeAndroidRelativeLayoutParams::setAlignStart(QNativeAndroidView *view) { - if (view != m_alignStart) { - m_alignStart = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->alignStart) { + d->alignStart = view; invalidate(); emit alignStartChanged(); } @@ -168,13 +189,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignStart(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::alignEnd() const { - return m_alignEnd; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignEnd; } void QNativeAndroidRelativeLayoutParams::setAlignEnd(QNativeAndroidView *view) { - if (view != m_alignEnd) { - m_alignEnd = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->alignEnd) { + d->alignEnd = view; invalidate(); emit alignEndChanged(); } @@ -182,13 +205,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignEnd(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::alignBaseline() const { - return m_alignBaseline; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignBaseline; } void QNativeAndroidRelativeLayoutParams::setAlignBaseline(QNativeAndroidView *view) { - if (view != m_alignBaseline) { - m_alignBaseline = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->alignBaseline) { + d->alignBaseline = view; invalidate(); emit alignBaselineChanged(); } @@ -196,13 +221,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignBaseline(QNativeAndroidView *vi QNativeAndroidView *QNativeAndroidRelativeLayoutParams::toLeftOf() const { - return m_toLeftOf; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->toLeftOf; } void QNativeAndroidRelativeLayoutParams::setToLeftOf(QNativeAndroidView *view) { - if (view != m_toLeftOf) { - m_toLeftOf = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->toLeftOf) { + d->toLeftOf = view; invalidate(); emit toLeftOfChanged(); } @@ -210,13 +237,15 @@ void QNativeAndroidRelativeLayoutParams::setToLeftOf(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::toRightOf() const { - return m_toRightOf; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->toRightOf; } void QNativeAndroidRelativeLayoutParams::setToRightOf(QNativeAndroidView *view) { - if (view != m_toRightOf) { - m_toRightOf = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->toRightOf) { + d->toRightOf = view; invalidate(); emit toRightOfChanged(); } @@ -224,13 +253,15 @@ void QNativeAndroidRelativeLayoutParams::setToRightOf(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::toStartOf() const { - return m_toStartOf; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->toStartOf; } void QNativeAndroidRelativeLayoutParams::setToStartOf(QNativeAndroidView *view) { - if (view != m_toStartOf) { - m_toStartOf = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->toStartOf) { + d->toStartOf = view; invalidate(); emit toStartOfChanged(); } @@ -238,13 +269,15 @@ void QNativeAndroidRelativeLayoutParams::setToStartOf(QNativeAndroidView *view) QNativeAndroidView *QNativeAndroidRelativeLayoutParams::toEndOf() const { - return m_toEndOf; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->toEndOf; } void QNativeAndroidRelativeLayoutParams::setToEndOf(QNativeAndroidView *view) { - if (view != m_toEndOf) { - m_toEndOf = view; + Q_D(QNativeAndroidRelativeLayoutParams); + if (view != d->toEndOf) { + d->toEndOf = view; invalidate(); emit toEndOfChanged(); } @@ -252,13 +285,15 @@ void QNativeAndroidRelativeLayoutParams::setToEndOf(QNativeAndroidView *view) bool QNativeAndroidRelativeLayoutParams::alignParentTop() const { - return m_alignParentTop; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignParentTop; } void QNativeAndroidRelativeLayoutParams::setAlignParentTop(bool align) { + Q_D(QNativeAndroidRelativeLayoutParams); if (align != alignParentTop()) { - m_alignParentTop = align; + d->alignParentTop = align; invalidate(); emit alignParentTopChanged(); } @@ -266,13 +301,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignParentTop(bool align) bool QNativeAndroidRelativeLayoutParams::alignParentLeft() const { - return m_alignParentLeft; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignParentLeft; } void QNativeAndroidRelativeLayoutParams::setAlignParentLeft(bool align) { + Q_D(QNativeAndroidRelativeLayoutParams); if (align != alignParentLeft()) { - m_alignParentLeft = align; + d->alignParentLeft = align; invalidate(); emit alignParentLeftChanged(); } @@ -280,13 +317,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignParentLeft(bool align) bool QNativeAndroidRelativeLayoutParams::alignParentRight() const { - return m_alignParentRight; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignParentRight; } void QNativeAndroidRelativeLayoutParams::setAlignParentRight(bool align) { + Q_D(QNativeAndroidRelativeLayoutParams); if (align != alignParentRight()) { - m_alignParentRight = align; + d->alignParentRight = align; invalidate(); emit alignParentRightChanged(); } @@ -294,13 +333,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignParentRight(bool align) bool QNativeAndroidRelativeLayoutParams::alignParentBottom() const { - return m_alignParentBottom; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignParentBottom; } void QNativeAndroidRelativeLayoutParams::setAlignParentBottom(bool align) { + Q_D(QNativeAndroidRelativeLayoutParams); if (align != alignParentBottom()) { - m_alignParentBottom = align; + d->alignParentBottom = align; invalidate(); emit alignParentBottomChanged(); } @@ -308,13 +349,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignParentBottom(bool align) bool QNativeAndroidRelativeLayoutParams::alignParentStart() const { - return m_alignParentStart; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignParentStart; } void QNativeAndroidRelativeLayoutParams::setAlignParentStart(bool align) { + Q_D(QNativeAndroidRelativeLayoutParams); if (align != alignParentStart()) { - m_alignParentStart = align; + d->alignParentStart = align; invalidate(); emit alignParentStartChanged(); } @@ -322,13 +365,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignParentStart(bool align) bool QNativeAndroidRelativeLayoutParams::alignParentEnd() const { - return m_alignParentEnd; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignParentEnd; } void QNativeAndroidRelativeLayoutParams::setAlignParentEnd(bool align) { + Q_D(QNativeAndroidRelativeLayoutParams); if (align != alignParentEnd()) { - m_alignParentEnd = align; + d->alignParentEnd = align; invalidate(); emit alignParentEndChanged(); } @@ -336,13 +381,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignParentEnd(bool align) bool QNativeAndroidRelativeLayoutParams::alignWithParent() const { - return m_alignWithParent; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->alignWithParent; } void QNativeAndroidRelativeLayoutParams::setAlignWithParent(bool align) { + Q_D(QNativeAndroidRelativeLayoutParams); if (align != alignWithParent()) { - m_alignWithParent = align; + d->alignWithParent = align; invalidate(); emit alignWithParentChanged(); } @@ -350,13 +397,15 @@ void QNativeAndroidRelativeLayoutParams::setAlignWithParent(bool align) bool QNativeAndroidRelativeLayoutParams::centerHorizontal() const { - return m_centerHorizontal; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->centerHorizontal; } void QNativeAndroidRelativeLayoutParams::setCenterHorizontal(bool center) { + Q_D(QNativeAndroidRelativeLayoutParams); if (center != centerHorizontal()) { - m_centerHorizontal = center; + d->centerHorizontal = center; invalidate(); emit centerHorizontalChanged(); } @@ -364,13 +413,15 @@ void QNativeAndroidRelativeLayoutParams::setCenterHorizontal(bool center) bool QNativeAndroidRelativeLayoutParams::centerVertical() const { - return m_centerVertical; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->centerVertical; } void QNativeAndroidRelativeLayoutParams::setCenterVertical(bool center) { + Q_D(QNativeAndroidRelativeLayoutParams); if (center != centerVertical()) { - m_centerVertical = center; + d->centerVertical = center; invalidate(); emit centerVerticalChanged(); } @@ -378,13 +429,15 @@ void QNativeAndroidRelativeLayoutParams::setCenterVertical(bool center) bool QNativeAndroidRelativeLayoutParams::centerInParent() const { - return m_centerInParent; + Q_D(const QNativeAndroidRelativeLayoutParams); + return d->centerInParent; } void QNativeAndroidRelativeLayoutParams::setCenterInParent(bool center) { + Q_D(QNativeAndroidRelativeLayoutParams); if (center != centerInParent()) { - m_centerInParent = center; + d->centerInParent = center; invalidate(); emit centerInParentChanged(); } @@ -413,33 +466,34 @@ static void addRule(QAndroidJniObject &instance, bool value, QNativeAndroidRelat void QNativeAndroidRelativeLayoutParams::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidRelativeLayoutParams); QNativeAndroidMarginLayoutParams::onInflate(instance); - instance.setField("alignWithParent", m_alignWithParent); - - addRule(instance, m_above, QNativeAndroidRelativeLayout::ABOVE); - addRule(instance, m_below, QNativeAndroidRelativeLayout::BELOW); - addRule(instance, m_alignTop, QNativeAndroidRelativeLayout::ALIGN_TOP); - addRule(instance, m_alignLeft, QNativeAndroidRelativeLayout::ALIGN_LEFT); - addRule(instance, m_alignRight, QNativeAndroidRelativeLayout::ALIGN_RIGHT); - addRule(instance, m_alignBottom, QNativeAndroidRelativeLayout::ALIGN_BOTTOM); - addRule(instance, m_alignStart, QNativeAndroidRelativeLayout::ALIGN_START); - addRule(instance, m_alignEnd, QNativeAndroidRelativeLayout::ALIGN_END); - addRule(instance, m_alignBaseline, QNativeAndroidRelativeLayout::ALIGN_BASELINE); - addRule(instance, m_toLeftOf, QNativeAndroidRelativeLayout::LEFT_OF); - addRule(instance, m_toRightOf, QNativeAndroidRelativeLayout::RIGHT_OF); - addRule(instance, m_toStartOf, QNativeAndroidRelativeLayout::START_OF); - addRule(instance, m_toEndOf, QNativeAndroidRelativeLayout::END_OF); - - addRule(instance, m_alignParentTop, QNativeAndroidRelativeLayout::ALIGN_PARENT_TOP); - addRule(instance, m_alignParentLeft, QNativeAndroidRelativeLayout::ALIGN_PARENT_LEFT); - addRule(instance, m_alignParentRight, QNativeAndroidRelativeLayout::ALIGN_PARENT_RIGHT); - addRule(instance, m_alignParentBottom, QNativeAndroidRelativeLayout::ALIGN_PARENT_BOTTOM); - addRule(instance, m_alignParentStart, QNativeAndroidRelativeLayout::ALIGN_PARENT_START); - addRule(instance, m_alignParentEnd, QNativeAndroidRelativeLayout::ALIGN_PARENT_END); - addRule(instance, m_centerHorizontal, QNativeAndroidRelativeLayout::CENTER_HORIZONTAL); - addRule(instance, m_centerVertical, QNativeAndroidRelativeLayout::CENTER_VERTICAL); - addRule(instance, m_centerInParent, QNativeAndroidRelativeLayout::CENTER_IN_PARENT); + instance.setField("alignWithParent", d->alignWithParent); + + addRule(instance, d->above, QNativeAndroidRelativeLayout::ABOVE); + addRule(instance, d->below, QNativeAndroidRelativeLayout::BELOW); + addRule(instance, d->alignTop, QNativeAndroidRelativeLayout::ALIGN_TOP); + addRule(instance, d->alignLeft, QNativeAndroidRelativeLayout::ALIGN_LEFT); + addRule(instance, d->alignRight, QNativeAndroidRelativeLayout::ALIGN_RIGHT); + addRule(instance, d->alignBottom, QNativeAndroidRelativeLayout::ALIGN_BOTTOM); + addRule(instance, d->alignStart, QNativeAndroidRelativeLayout::ALIGN_START); + addRule(instance, d->alignEnd, QNativeAndroidRelativeLayout::ALIGN_END); + addRule(instance, d->alignBaseline, QNativeAndroidRelativeLayout::ALIGN_BASELINE); + addRule(instance, d->toLeftOf, QNativeAndroidRelativeLayout::LEFT_OF); + addRule(instance, d->toRightOf, QNativeAndroidRelativeLayout::RIGHT_OF); + addRule(instance, d->toStartOf, QNativeAndroidRelativeLayout::START_OF); + addRule(instance, d->toEndOf, QNativeAndroidRelativeLayout::END_OF); + + addRule(instance, d->alignParentTop, QNativeAndroidRelativeLayout::ALIGN_PARENT_TOP); + addRule(instance, d->alignParentLeft, QNativeAndroidRelativeLayout::ALIGN_PARENT_LEFT); + addRule(instance, d->alignParentRight, QNativeAndroidRelativeLayout::ALIGN_PARENT_RIGHT); + addRule(instance, d->alignParentBottom, QNativeAndroidRelativeLayout::ALIGN_PARENT_BOTTOM); + addRule(instance, d->alignParentStart, QNativeAndroidRelativeLayout::ALIGN_PARENT_START); + addRule(instance, d->alignParentEnd, QNativeAndroidRelativeLayout::ALIGN_PARENT_END); + addRule(instance, d->centerHorizontal, QNativeAndroidRelativeLayout::CENTER_HORIZONTAL); + addRule(instance, d->centerVertical, QNativeAndroidRelativeLayout::CENTER_VERTICAL); + addRule(instance, d->centerInParent, QNativeAndroidRelativeLayout::CENTER_IN_PARENT); } QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidrelativelayoutparams_p.h b/src/android/widget/qnativeandroidrelativelayoutparams_p.h index 29a5bba..8d40726 100644 --- a/src/android/widget/qnativeandroidrelativelayoutparams_p.h +++ b/src/android/widget/qnativeandroidrelativelayoutparams_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidRelativeLayoutParamsPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidRelativeLayoutParams : public QNativeAndroidMarginLayoutParams { Q_OBJECT @@ -182,30 +184,8 @@ protected: void onInflate(QAndroidJniObject &instance) override; private: - QNativeAndroidView *m_above; - QNativeAndroidView *m_below; - QNativeAndroidView *m_alignTop; - QNativeAndroidView *m_alignLeft; - QNativeAndroidView *m_alignRight; - QNativeAndroidView *m_alignBottom; - QNativeAndroidView *m_alignStart; - QNativeAndroidView *m_alignEnd; - QNativeAndroidView *m_alignBaseline; - QNativeAndroidView *m_toLeftOf; - QNativeAndroidView *m_toRightOf; - QNativeAndroidView *m_toStartOf; - QNativeAndroidView *m_toEndOf; - - bool m_alignParentTop; - bool m_alignParentLeft; - bool m_alignParentRight; - bool m_alignParentBottom; - bool m_alignParentStart; - bool m_alignParentEnd; - bool m_alignWithParent; - bool m_centerHorizontal; - bool m_centerVertical; - bool m_centerInParent; + Q_DISABLE_COPY(QNativeAndroidRelativeLayoutParams) + Q_DECLARE_PRIVATE(QNativeAndroidRelativeLayoutParams) }; QT_END_NAMESPACE diff --git a/src/android/widget/widget.pri b/src/android/widget/widget.pri index b00d080..d19b477 100644 --- a/src/android/widget/widget.pri +++ b/src/android/widget/widget.pri @@ -18,6 +18,7 @@ HEADERS += \ $$PWD/qnativeandroidlinearlayoutparams_p.h \ $$PWD/qnativeandroidlistview_p.h \ $$PWD/qnativeandroidmarginlayoutparams_p.h \ + $$PWD/qnativeandroidmarginlayoutparams_p_p.h \ $$PWD/qnativeandroidnumberpicker_p.h \ $$PWD/qnativeandroidpopupmenu_p.h \ $$PWD/qnativeandroidprogressbar_p.h \ -- cgit v1.2.3