From 9a51d857e826cb30d660177789c237852a8cc107 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 19 Dec 2016 13:00:17 +0100 Subject: Pimplify widget classes Change-Id: I52a071208fa8824f4044a8947be494d6695c13ea Reviewed-by: J-P Nurmi --- src/android/view/qnativeandroidviewgroup.cpp | 5 ++ src/android/widget/qnativeandroidabsseekbar.cpp | 10 ++- src/android/widget/qnativeandroidabsseekbar_p.h | 8 +++ src/android/widget/qnativeandroidabsseekbar_p_p.h | 62 ++++++++++++++++ src/android/widget/qnativeandroidadapterview.cpp | 39 +++++----- src/android/widget/qnativeandroidadapterview_p.h | 5 +- src/android/widget/qnativeandroidadapterview_p_p.h | 66 +++++++++++++++++ src/android/widget/qnativeandroidarrayadapter.cpp | 45 ++++++++---- src/android/widget/qnativeandroidarrayadapter_p.h | 6 +- src/android/widget/qnativeandroidbaseadapter.cpp | 10 ++- src/android/widget/qnativeandroidbaseadapter_p.h | 8 +++ src/android/widget/qnativeandroidbaseadapter_p_p.h | 62 ++++++++++++++++ src/android/widget/qnativeandroidbutton.cpp | 10 ++- src/android/widget/qnativeandroidbutton_p.h | 8 +++ src/android/widget/qnativeandroidbutton_p_p.h | 62 ++++++++++++++++ src/android/widget/qnativeandroidcalendarview.cpp | 10 ++- src/android/widget/qnativeandroidcalendarview_p.h | 6 ++ src/android/widget/qnativeandroidcheckbox.cpp | 4 +- .../widget/qnativeandroidcompoundbutton.cpp | 23 ++++-- .../widget/qnativeandroidcompoundbutton_p.h | 8 ++- .../widget/qnativeandroidcompoundbutton_p_p.h | 65 +++++++++++++++++ src/android/widget/qnativeandroiddatepicker.cpp | 10 ++- src/android/widget/qnativeandroiddatepicker_p.h | 6 ++ src/android/widget/qnativeandroidedittext.cpp | 4 +- src/android/widget/qnativeandroidframelayout.cpp | 10 ++- src/android/widget/qnativeandroidframelayout_p.h | 8 +++ src/android/widget/qnativeandroidframelayout_p_p.h | 62 ++++++++++++++++ src/android/widget/qnativeandroidimageview.cpp | 54 +++++++++----- src/android/widget/qnativeandroidimageview_p.h | 10 +-- src/android/widget/qnativeandroidlinearlayout.cpp | 71 +++++++++++------- src/android/widget/qnativeandroidlinearlayout_p.h | 14 ++-- .../widget/qnativeandroidlinearlayout_p_p.h | 71 ++++++++++++++++++ src/android/widget/qnativeandroidlistview.cpp | 4 +- src/android/widget/qnativeandroidnumberpicker.cpp | 27 ++++--- src/android/widget/qnativeandroidnumberpicker_p.h | 6 +- src/android/widget/qnativeandroidpopupmenu.cpp | 37 +++++++--- src/android/widget/qnativeandroidpopupmenu_p.h | 7 +- src/android/widget/qnativeandroidprogressbar.cpp | 67 ++++++++++------- src/android/widget/qnativeandroidprogressbar_p.h | 12 ++-- src/android/widget/qnativeandroidprogressbar_p_p.h | 69 ++++++++++++++++++ src/android/widget/qnativeandroidradiobutton.cpp | 4 +- src/android/widget/qnativeandroidradiogroup.cpp | 25 +++++-- src/android/widget/qnativeandroidradiogroup_p.h | 5 +- src/android/widget/qnativeandroidratingbar.cpp | 27 ++++--- src/android/widget/qnativeandroidratingbar_p.h | 6 +- .../widget/qnativeandroidrelativelayout.cpp | 4 +- src/android/widget/qnativeandroidscrollview.cpp | 33 ++++++--- src/android/widget/qnativeandroidscrollview_p.h | 6 +- src/android/widget/qnativeandroidsearchview.cpp | 4 +- src/android/widget/qnativeandroidseekbar.cpp | 16 +++-- src/android/widget/qnativeandroidseekbar_p.h | 5 +- src/android/widget/qnativeandroidspace.cpp | 4 +- src/android/widget/qnativeandroidspinner.cpp | 4 +- src/android/widget/qnativeandroidswitch.cpp | 4 +- src/android/widget/qnativeandroidtabhost.cpp | 16 +++-- src/android/widget/qnativeandroidtabhost_p.h | 5 +- src/android/widget/qnativeandroidtabspec.cpp | 22 ++++-- src/android/widget/qnativeandroidtabspec_p.h | 6 +- src/android/widget/qnativeandroidtabwidget.cpp | 4 +- src/android/widget/qnativeandroidtextview.cpp | 83 +++++++++++++--------- src/android/widget/qnativeandroidtextview_p.h | 13 ++-- src/android/widget/qnativeandroidtextview_p_p.h | 69 ++++++++++++++++++ src/android/widget/qnativeandroidtimepicker.cpp | 10 ++- src/android/widget/qnativeandroidtimepicker_p.h | 6 ++ src/android/widget/qnativeandroidtoast.cpp | 38 ++++++---- src/android/widget/qnativeandroidtoast_p.h | 6 +- src/android/widget/qnativeandroidtogglebutton.cpp | 37 ++++++---- src/android/widget/qnativeandroidtogglebutton_p.h | 6 +- src/android/widget/qnativeandroidviewanimator.cpp | 42 ++++++----- src/android/widget/qnativeandroidviewanimator_p.h | 7 +- .../widget/qnativeandroidviewanimator_p_p.h | 66 +++++++++++++++++ src/android/widget/qnativeandroidviewflipper.cpp | 4 +- src/android/widget/qnativeandroidviewswitcher.cpp | 4 +- src/android/widget/widget.pri | 10 +++ 74 files changed, 1339 insertions(+), 333 deletions(-) create mode 100644 src/android/widget/qnativeandroidabsseekbar_p_p.h create mode 100644 src/android/widget/qnativeandroidadapterview_p_p.h create mode 100644 src/android/widget/qnativeandroidbaseadapter_p_p.h create mode 100644 src/android/widget/qnativeandroidbutton_p_p.h create mode 100644 src/android/widget/qnativeandroidcompoundbutton_p_p.h create mode 100644 src/android/widget/qnativeandroidframelayout_p_p.h create mode 100644 src/android/widget/qnativeandroidlinearlayout_p_p.h create mode 100644 src/android/widget/qnativeandroidprogressbar_p_p.h create mode 100644 src/android/widget/qnativeandroidtextview_p_p.h create mode 100644 src/android/widget/qnativeandroidviewanimator_p_p.h diff --git a/src/android/view/qnativeandroidviewgroup.cpp b/src/android/view/qnativeandroidviewgroup.cpp index 86de858..8b6c398 100644 --- a/src/android/view/qnativeandroidviewgroup.cpp +++ b/src/android/view/qnativeandroidviewgroup.cpp @@ -47,6 +47,11 @@ QNativeAndroidViewGroup::QNativeAndroidViewGroup(QNativeAndroidContext *context) { } +QNativeAndroidViewGroup::QNativeAndroidViewGroup(QNativeAndroidViewGroupPrivate &dd, QNativeAndroidContext *context) + : QNativeAndroidView(dd, context) +{ +} + QNativeAndroidLayoutParams *QNativeAndroidViewGroup::qmlAttachedProperties(QObject *object) { QNativeAndroidView *view = qobject_cast(object); diff --git a/src/android/widget/qnativeandroidabsseekbar.cpp b/src/android/widget/qnativeandroidabsseekbar.cpp index 5e1eb4f..8ecde66 100644 --- a/src/android/widget/qnativeandroidabsseekbar.cpp +++ b/src/android/widget/qnativeandroidabsseekbar.cpp @@ -35,11 +35,17 @@ ****************************************************************************/ #include "qnativeandroidabsseekbar_p.h" +#include "qnativeandroidabsseekbar_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidAbsSeekBar::QNativeAndroidAbsSeekBar(QNativeAndroidContext *context) : - QNativeAndroidProgressBar(context) +QNativeAndroidAbsSeekBar::QNativeAndroidAbsSeekBar(QNativeAndroidContext *context) + : QNativeAndroidProgressBar(*(new QNativeAndroidAbsSeekBarPrivate), context) +{ +} + +QNativeAndroidAbsSeekBar::QNativeAndroidAbsSeekBar(QNativeAndroidAbsSeekBarPrivate &dd, QNativeAndroidContext *context) + : QNativeAndroidProgressBar(dd, context) { } diff --git a/src/android/widget/qnativeandroidabsseekbar_p.h b/src/android/widget/qnativeandroidabsseekbar_p.h index 7d4bc47..4ec1250 100644 --- a/src/android/widget/qnativeandroidabsseekbar_p.h +++ b/src/android/widget/qnativeandroidabsseekbar_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidAbsSeekBarPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidAbsSeekBar : public QNativeAndroidProgressBar { Q_OBJECT @@ -60,8 +62,14 @@ public: explicit QNativeAndroidAbsSeekBar(QNativeAndroidContext *context = nullptr); protected: + QNativeAndroidAbsSeekBar(QNativeAndroidAbsSeekBarPrivate &dd, QNativeAndroidContext *context = nullptr); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; + +private: + Q_DISABLE_COPY(QNativeAndroidAbsSeekBar) + Q_DECLARE_PRIVATE(QNativeAndroidAbsSeekBar) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidabsseekbar_p_p.h b/src/android/widget/qnativeandroidabsseekbar_p_p.h new file mode 100644 index 0000000..64c8291 --- /dev/null +++ b/src/android/widget/qnativeandroidabsseekbar_p_p.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDABSSEEKBAR_P_P_H +#define QNATIVEANDROIDABSSEEKBAR_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 + +QT_BEGIN_NAMESPACE + +class QNativeAndroidAbsSeekBarPrivate : public QNativeAndroidProgressBarPrivate +{ +public: +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDABSSEEKBAR_P_P_H diff --git a/src/android/widget/qnativeandroidadapterview.cpp b/src/android/widget/qnativeandroidadapterview.cpp index 1688bf2..3e74930 100644 --- a/src/android/widget/qnativeandroidadapterview.cpp +++ b/src/android/widget/qnativeandroidadapterview.cpp @@ -35,35 +35,38 @@ ****************************************************************************/ #include "qnativeandroidadapterview_p.h" +#include "qnativeandroidadapterview_p_p.h" #include "qnativeandroidbaseadapter_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidAdapterView::QNativeAndroidAdapterView(QNativeAndroidContext *context) : - QNativeAndroidViewGroup(context), m_adapter(0) +QNativeAndroidAdapterView::QNativeAndroidAdapterView(QNativeAndroidContext *context) + : QNativeAndroidViewGroup(*(new QNativeAndroidAdapterViewPrivate), context) { } QNativeAndroidBaseAdapter *QNativeAndroidAdapterView::adapter() const { - return m_adapter; + Q_D(const QNativeAndroidAdapterView); + return d->adapter; } void QNativeAndroidAdapterView::setAdapter(QNativeAndroidBaseAdapter *adapter) { - if (m_adapter != adapter) { - if (m_adapter) { - m_adapter->setContext(0); - disconnect(m_adapter, &QNativeAndroidObject::instanceChanged, this, &QNativeAndroidAdapterView::updateAdapter); - m_adapter->destruct(); + Q_D(QNativeAndroidAdapterView); + if (d->adapter != adapter) { + if (d->adapter) { + d->adapter->setContext(0); + disconnect(d->adapter, &QNativeAndroidObject::instanceChanged, this, &QNativeAndroidAdapterView::updateAdapter); + d->adapter->destruct(); } - m_adapter = adapter; - if (m_adapter) { - m_adapter->setContext(context()); - connect(m_adapter, &QNativeAndroidObject::instanceChanged, this, &QNativeAndroidAdapterView::updateAdapter); + d->adapter = adapter; + if (d->adapter) { + d->adapter->setContext(context()); + connect(d->adapter, &QNativeAndroidObject::instanceChanged, this, &QNativeAndroidAdapterView::updateAdapter); if (isValid()) - m_adapter->construct(); + d->adapter->construct(); } emit adapterChanged(); } @@ -83,7 +86,8 @@ QAndroidJniObject QNativeAndroidAdapterView::onCreate() void QNativeAndroidAdapterView::onInflate(QAndroidJniObject &instance) { - m_listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeAdapterViewListener", + Q_D(QNativeAndroidAdapterView); + d->listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeAdapterViewListener", "(Landroid/widget/AdapterView;J)V", instance.object(), reinterpret_cast(this)); @@ -92,7 +96,7 @@ void QNativeAndroidAdapterView::onInflate(QAndroidJniObject &instance) static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } } @@ -125,12 +129,13 @@ void QNativeAndroidAdapterView::objectChange(ObjectChange change) void QNativeAndroidAdapterView::updateAdapter() { + Q_D(QNativeAndroidAdapterView); if (!isValid()) return; QAndroidJniObject adapter; - if (m_adapter) - adapter = m_adapter->instance(); + if (d->adapter) + adapter = d->adapter->instance(); QAndroidJniObject view = instance(); QtNativeAndroid::callFunction([=]() { diff --git a/src/android/widget/qnativeandroidadapterview_p.h b/src/android/widget/qnativeandroidadapterview_p.h index 9c57324..bae1fff 100644 --- a/src/android/widget/qnativeandroidadapterview_p.h +++ b/src/android/widget/qnativeandroidadapterview_p.h @@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE class QNativeAndroidBaseAdapter; +class QNativeAndroidAdapterViewPrivate; class Q_NATIVEANDROID_EXPORT QNativeAndroidAdapterView : public QNativeAndroidViewGroup { @@ -85,8 +86,8 @@ private Q_SLOTS: void updateAdapter(); private: - QAndroidJniObject m_listener; - QNativeAndroidBaseAdapter *m_adapter; + Q_DISABLE_COPY(QNativeAndroidAdapterView) + Q_DECLARE_PRIVATE(QNativeAndroidAdapterView) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidadapterview_p_p.h b/src/android/widget/qnativeandroidadapterview_p_p.h new file mode 100644 index 0000000..cb82307 --- /dev/null +++ b/src/android/widget/qnativeandroidadapterview_p_p.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDADAPTERVIEW_P_P_H +#define QNATIVEANDROIDADAPTERVIEW_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 + +QT_BEGIN_NAMESPACE + +class QNativeAndroidBaseAdapter; + +class QNativeAndroidAdapterViewPrivate : public QNativeAndroidViewGroupPrivate +{ +public: + QAndroidJniObject listener; + QNativeAndroidBaseAdapter *adapter = nullptr; +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDADAPTERVIEW_P_P_H diff --git a/src/android/widget/qnativeandroidarrayadapter.cpp b/src/android/widget/qnativeandroidarrayadapter.cpp index ee3b784..5371dc9 100644 --- a/src/android/widget/qnativeandroidarrayadapter.cpp +++ b/src/android/widget/qnativeandroidarrayadapter.cpp @@ -35,38 +35,50 @@ ****************************************************************************/ #include "qnativeandroidarrayadapter_p.h" +#include "qnativeandroidbaseadapter_p_p.h" #include "qnativeandroidadapterview_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidArrayAdapter::QNativeAndroidArrayAdapter(QObject *parent) : - QNativeAndroidBaseAdapter(parent), m_style(17367043) // TODO: android.R.layout.simple_list_item_1 +class QNativeAndroidArrayAdapterPrivate : public QNativeAndroidBaseAdapterPrivate +{ +public: + int style = 17367043; // TODO: android.R.layout.simple_list_item_1 + QStringList array; +}; + +QNativeAndroidArrayAdapter::QNativeAndroidArrayAdapter(QObject *parent) + : QNativeAndroidBaseAdapter(*(new QNativeAndroidArrayAdapterPrivate), parent) { } int QNativeAndroidArrayAdapter::style() const { - return m_style; + Q_D(const QNativeAndroidArrayAdapter); + return d->style; } void QNativeAndroidArrayAdapter::setStyle(int style) { - if (m_style != style) { - m_style = style; + Q_D(QNativeAndroidArrayAdapter); + if (d->style != style) { + d->style = style; emit styleChanged(); } } QStringList QNativeAndroidArrayAdapter::array() const { - return m_array; + Q_D(const QNativeAndroidArrayAdapter); + return d->array; } void QNativeAndroidArrayAdapter::setArray(const QStringList &array) { - if (m_array != array) { - m_array = array; // TODO: sync + Q_D(QNativeAndroidArrayAdapter); + if (d->array != array) { + d->array = array; // TODO: sync emit countChanged(); emit arrayChanged(); } @@ -74,18 +86,21 @@ void QNativeAndroidArrayAdapter::setArray(const QStringList &array) int QNativeAndroidArrayAdapter::count() const { - return m_array.count(); + Q_D(const QNativeAndroidArrayAdapter); + return d->array.count(); } QString QNativeAndroidArrayAdapter::getItem(int position) const { - return m_array.value(position); + Q_D(const QNativeAndroidArrayAdapter); + return d->array.value(position); } void QNativeAndroidArrayAdapter::clear() { - if (!m_array.isEmpty()) { - m_array.clear(); // TODO: sync + Q_D(QNativeAndroidArrayAdapter); + if (!d->array.isEmpty()) { + d->array.clear(); // TODO: sync emit countChanged(); emit arrayChanged(); } @@ -93,17 +108,19 @@ void QNativeAndroidArrayAdapter::clear() QAndroidJniObject QNativeAndroidArrayAdapter::onCreate() { + Q_D(QNativeAndroidArrayAdapter); return QAndroidJniObject("android/widget/ArrayAdapter", "(Landroid/content/Context;I)V", ctx().object(), - m_style); + d->style); } void QNativeAndroidArrayAdapter::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidArrayAdapter); QNativeAndroidBaseAdapter::onInflate(instance); - foreach (const QString &str, m_array) + foreach (const QString &str, d->array) instance.callMethod("add", "(Ljava/lang/Object;)V", QAndroidJniObject::fromString(str).object()); } diff --git a/src/android/widget/qnativeandroidarrayadapter_p.h b/src/android/widget/qnativeandroidarrayadapter_p.h index 654c88b..df081f3 100644 --- a/src/android/widget/qnativeandroidarrayadapter_p.h +++ b/src/android/widget/qnativeandroidarrayadapter_p.h @@ -53,6 +53,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidArrayAdapterPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidArrayAdapter : public QNativeAndroidBaseAdapter { Q_OBJECT @@ -83,8 +85,8 @@ protected: void onInflate(QAndroidJniObject &instance) override; private: - int m_style; - QStringList m_array; + Q_DISABLE_COPY(QNativeAndroidArrayAdapter) + Q_DECLARE_PRIVATE(QNativeAndroidArrayAdapter) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidbaseadapter.cpp b/src/android/widget/qnativeandroidbaseadapter.cpp index 139f662..3eae828 100644 --- a/src/android/widget/qnativeandroidbaseadapter.cpp +++ b/src/android/widget/qnativeandroidbaseadapter.cpp @@ -35,11 +35,17 @@ ****************************************************************************/ #include "qnativeandroidbaseadapter_p.h" +#include "qnativeandroidbaseadapter_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidBaseAdapter::QNativeAndroidBaseAdapter(QObject *parent) : - QNativeAndroidContextual(parent) +QNativeAndroidBaseAdapter::QNativeAndroidBaseAdapter(QObject *parent) + : QNativeAndroidContextual(*(new QNativeAndroidBaseAdapterPrivate), parent) +{ +} + +QNativeAndroidBaseAdapter::QNativeAndroidBaseAdapter(QNativeAndroidBaseAdapterPrivate &dd, QObject *parent) + : QNativeAndroidContextual(dd, parent) { } diff --git a/src/android/widget/qnativeandroidbaseadapter_p.h b/src/android/widget/qnativeandroidbaseadapter_p.h index 95384a0..1a2e322 100644 --- a/src/android/widget/qnativeandroidbaseadapter_p.h +++ b/src/android/widget/qnativeandroidbaseadapter_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidBaseAdapterPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidBaseAdapter : public QNativeAndroidContextual { Q_OBJECT @@ -69,8 +71,14 @@ Q_SIGNALS: void countChanged(); protected: + QNativeAndroidBaseAdapter(QNativeAndroidBaseAdapterPrivate &dd, QObject *parent = nullptr); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; + +private: + Q_DISABLE_COPY(QNativeAndroidBaseAdapter) + Q_DECLARE_PRIVATE(QNativeAndroidBaseAdapter) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidbaseadapter_p_p.h b/src/android/widget/qnativeandroidbaseadapter_p_p.h new file mode 100644 index 0000000..57dce31 --- /dev/null +++ b/src/android/widget/qnativeandroidbaseadapter_p_p.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDBASEADAPTER_P_P_H +#define QNATIVEANDROIDBASEADAPTER_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 + +QT_BEGIN_NAMESPACE + +class QNativeAndroidBaseAdapterPrivate : public QNativeAndroidContextualPrivate +{ +public: +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDBASEADAPTER_P_P_H diff --git a/src/android/widget/qnativeandroidbutton.cpp b/src/android/widget/qnativeandroidbutton.cpp index 3222013..9ea6fd7 100644 --- a/src/android/widget/qnativeandroidbutton.cpp +++ b/src/android/widget/qnativeandroidbutton.cpp @@ -35,11 +35,17 @@ ****************************************************************************/ #include "qnativeandroidbutton_p.h" +#include "qnativeandroidbutton_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidButton::QNativeAndroidButton(QNativeAndroidContext *context) : - QNativeAndroidTextView(context) +QNativeAndroidButton::QNativeAndroidButton(QNativeAndroidContext *context) + : QNativeAndroidTextView(*(new QNativeAndroidButtonPrivate), context) +{ +} + +QNativeAndroidButton::QNativeAndroidButton(QNativeAndroidButtonPrivate &dd, QNativeAndroidContext *context) + : QNativeAndroidTextView(dd, context) { } diff --git a/src/android/widget/qnativeandroidbutton_p.h b/src/android/widget/qnativeandroidbutton_p.h index 11a5a95..cae76bc 100644 --- a/src/android/widget/qnativeandroidbutton_p.h +++ b/src/android/widget/qnativeandroidbutton_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidButtonPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidButton : public QNativeAndroidTextView { Q_OBJECT @@ -60,8 +62,14 @@ public: explicit QNativeAndroidButton(QNativeAndroidContext *context = nullptr); protected: + QNativeAndroidButton(QNativeAndroidButtonPrivate &dd, QNativeAndroidContext *context = nullptr); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; + +private: + Q_DISABLE_COPY(QNativeAndroidButton) + Q_DECLARE_PRIVATE(QNativeAndroidButton) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidbutton_p_p.h b/src/android/widget/qnativeandroidbutton_p_p.h new file mode 100644 index 0000000..bdba7de --- /dev/null +++ b/src/android/widget/qnativeandroidbutton_p_p.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDBUTTON_P_P_H +#define QNATIVEANDROIDBUTTON_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 + +QT_BEGIN_NAMESPACE + +class QNativeAndroidButtonPrivate : public QNativeAndroidTextViewPrivate +{ +public: +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDBUTTON_P_P_H diff --git a/src/android/widget/qnativeandroidcalendarview.cpp b/src/android/widget/qnativeandroidcalendarview.cpp index 16efbb8..eeba638 100644 --- a/src/android/widget/qnativeandroidcalendarview.cpp +++ b/src/android/widget/qnativeandroidcalendarview.cpp @@ -35,11 +35,17 @@ ****************************************************************************/ #include "qnativeandroidcalendarview_p.h" +#include "qnativeandroidframelayout_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidCalendarView::QNativeAndroidCalendarView(QNativeAndroidContext *context) : - QNativeAndroidFrameLayout(context) +class QNativeAndroidCalendarViewPrivate : public QNativeAndroidFrameLayoutPrivate +{ +public: +}; + +QNativeAndroidCalendarView::QNativeAndroidCalendarView(QNativeAndroidContext *context) + : QNativeAndroidFrameLayout(*(new QNativeAndroidCalendarViewPrivate), context) { } diff --git a/src/android/widget/qnativeandroidcalendarview_p.h b/src/android/widget/qnativeandroidcalendarview_p.h index 47835cc..1367a49 100644 --- a/src/android/widget/qnativeandroidcalendarview_p.h +++ b/src/android/widget/qnativeandroidcalendarview_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidCalendarViewPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidCalendarView : public QNativeAndroidFrameLayout { Q_OBJECT @@ -62,6 +64,10 @@ public: protected: QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; + +private: + Q_DISABLE_COPY(QNativeAndroidCalendarView) + Q_DECLARE_PRIVATE(QNativeAndroidCalendarView) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidcheckbox.cpp b/src/android/widget/qnativeandroidcheckbox.cpp index 3cc23db..60ed1c7 100644 --- a/src/android/widget/qnativeandroidcheckbox.cpp +++ b/src/android/widget/qnativeandroidcheckbox.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidCheckBox::QNativeAndroidCheckBox(QNativeAndroidContext *context) : - QNativeAndroidCompoundButton(context) +QNativeAndroidCheckBox::QNativeAndroidCheckBox(QNativeAndroidContext *context) + : QNativeAndroidCompoundButton(context) { } diff --git a/src/android/widget/qnativeandroidcompoundbutton.cpp b/src/android/widget/qnativeandroidcompoundbutton.cpp index e224a3a..ee2cdd6 100644 --- a/src/android/widget/qnativeandroidcompoundbutton.cpp +++ b/src/android/widget/qnativeandroidcompoundbutton.cpp @@ -35,18 +35,25 @@ ****************************************************************************/ #include "qnativeandroidcompoundbutton_p.h" +#include "qnativeandroidcompoundbutton_p_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidCompoundButton::QNativeAndroidCompoundButton(QNativeAndroidContext *context) : - QNativeAndroidButton(context), m_checked(false) +QNativeAndroidCompoundButton::QNativeAndroidCompoundButton(QNativeAndroidContext *context) + : QNativeAndroidButton(*(new QNativeAndroidCompoundButtonPrivate), context) +{ +} + +QNativeAndroidCompoundButton::QNativeAndroidCompoundButton(QNativeAndroidCompoundButtonPrivate &dd, QNativeAndroidContext *context) + : QNativeAndroidButton(dd, context) { } bool QNativeAndroidCompoundButton::isChecked() const { - return m_checked; + Q_D(const QNativeAndroidCompoundButton); + return d->checked; } void QNativeAndroidCompoundButton::setChecked(bool checked) @@ -57,8 +64,9 @@ void QNativeAndroidCompoundButton::setChecked(bool checked) bool QNativeAndroidCompoundButton::updateChecked(bool arg) { + Q_D(QNativeAndroidCompoundButton); if (arg != isChecked()) { - m_checked = arg; + d->checked = arg; emit checkedChanged(); return true; } @@ -79,20 +87,21 @@ QAndroidJniObject QNativeAndroidCompoundButton::onCreate() void QNativeAndroidCompoundButton::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidCompoundButton); QNativeAndroidButton::onInflate(instance); - m_listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeCompoundButtonListener", + d->listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeCompoundButtonListener", "(Landroid/widget/CompoundButton;J)V", instance.object(), reinterpret_cast(this)); static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } - instance.callMethod("setChecked", "(Z)V", m_checked); + instance.callMethod("setChecked", "(Z)V", d->checked); } void QNativeAndroidCompoundButton::onRegisterNativeMethods(jobject listener) diff --git a/src/android/widget/qnativeandroidcompoundbutton_p.h b/src/android/widget/qnativeandroidcompoundbutton_p.h index 227f6f2..d5be2d9 100644 --- a/src/android/widget/qnativeandroidcompoundbutton_p.h +++ b/src/android/widget/qnativeandroidcompoundbutton_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidCompoundButtonPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidCompoundButton : public QNativeAndroidButton { Q_OBJECT @@ -70,6 +72,8 @@ Q_SIGNALS: void checkedChanged(); protected: + QNativeAndroidCompoundButton(QNativeAndroidCompoundButtonPrivate &dd, QNativeAndroidContext *context = nullptr); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; @@ -80,8 +84,8 @@ private Q_SLOTS: bool updateChecked(bool checked); private: - bool m_checked; - QAndroidJniObject m_listener; + Q_DISABLE_COPY(QNativeAndroidCompoundButton) + Q_DECLARE_PRIVATE(QNativeAndroidCompoundButton) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidcompoundbutton_p_p.h b/src/android/widget/qnativeandroidcompoundbutton_p_p.h new file mode 100644 index 0000000..22b66a8 --- /dev/null +++ b/src/android/widget/qnativeandroidcompoundbutton_p_p.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDCOMPOUNDBUTTON_P_P_H +#define QNATIVEANDROIDCOMPOUNDBUTTON_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 QNativeAndroidCompoundButtonPrivate : public QNativeAndroidButtonPrivate +{ +public: + bool checked = false; + QAndroidJniObject listener; +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDCOMPOUNDBUTTON_P_P_H diff --git a/src/android/widget/qnativeandroiddatepicker.cpp b/src/android/widget/qnativeandroiddatepicker.cpp index f144eb8..d7a93fa 100644 --- a/src/android/widget/qnativeandroiddatepicker.cpp +++ b/src/android/widget/qnativeandroiddatepicker.cpp @@ -35,11 +35,17 @@ ****************************************************************************/ #include "qnativeandroiddatepicker_p.h" +#include "qnativeandroidframelayout_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidDatePicker::QNativeAndroidDatePicker(QNativeAndroidContext *context) : - QNativeAndroidFrameLayout(context) +class QNativeAndroidDatePickerPrivate : public QNativeAndroidFrameLayoutPrivate +{ +public: +}; + +QNativeAndroidDatePicker::QNativeAndroidDatePicker(QNativeAndroidContext *context) + : QNativeAndroidFrameLayout(*(new QNativeAndroidDatePickerPrivate), context) { } diff --git a/src/android/widget/qnativeandroiddatepicker_p.h b/src/android/widget/qnativeandroiddatepicker_p.h index 47f25da..2b8a6d7 100644 --- a/src/android/widget/qnativeandroiddatepicker_p.h +++ b/src/android/widget/qnativeandroiddatepicker_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidDatePickerPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidDatePicker : public QNativeAndroidFrameLayout { Q_OBJECT @@ -62,6 +64,10 @@ public: protected: QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; + +private: + Q_DISABLE_COPY(QNativeAndroidDatePicker) + Q_DECLARE_PRIVATE(QNativeAndroidDatePicker) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidedittext.cpp b/src/android/widget/qnativeandroidedittext.cpp index d09808c..174b075 100644 --- a/src/android/widget/qnativeandroidedittext.cpp +++ b/src/android/widget/qnativeandroidedittext.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidEditText::QNativeAndroidEditText(QNativeAndroidContext *context) : - QNativeAndroidTextView(context) +QNativeAndroidEditText::QNativeAndroidEditText(QNativeAndroidContext *context) + : QNativeAndroidTextView(context) { } diff --git a/src/android/widget/qnativeandroidframelayout.cpp b/src/android/widget/qnativeandroidframelayout.cpp index 94798f6..50ad344 100644 --- a/src/android/widget/qnativeandroidframelayout.cpp +++ b/src/android/widget/qnativeandroidframelayout.cpp @@ -35,11 +35,17 @@ ****************************************************************************/ #include "qnativeandroidframelayout_p.h" +#include "qnativeandroidframelayout_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidFrameLayout::QNativeAndroidFrameLayout(QNativeAndroidContext *context) : - QNativeAndroidViewGroup(context) +QNativeAndroidFrameLayout::QNativeAndroidFrameLayout(QNativeAndroidContext *context) + : QNativeAndroidViewGroup(*(new QNativeAndroidFrameLayoutPrivate), context) +{ +} + +QNativeAndroidFrameLayout::QNativeAndroidFrameLayout(QNativeAndroidFrameLayoutPrivate &dd, QNativeAndroidContext *context) + : QNativeAndroidViewGroup(dd, context) { } diff --git a/src/android/widget/qnativeandroidframelayout_p.h b/src/android/widget/qnativeandroidframelayout_p.h index dd321c9..45dfb0b 100644 --- a/src/android/widget/qnativeandroidframelayout_p.h +++ b/src/android/widget/qnativeandroidframelayout_p.h @@ -53,6 +53,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidFrameLayoutPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidFrameLayout : public QNativeAndroidViewGroup { Q_OBJECT @@ -63,8 +65,14 @@ public: static QNativeAndroidFrameLayoutParams *qmlAttachedProperties(QObject *object); protected: + QNativeAndroidFrameLayout(QNativeAndroidFrameLayoutPrivate &dd, QNativeAndroidContext *context = nullptr); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; + +private: + Q_DISABLE_COPY(QNativeAndroidFrameLayout) + Q_DECLARE_PRIVATE(QNativeAndroidFrameLayout) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidframelayout_p_p.h b/src/android/widget/qnativeandroidframelayout_p_p.h new file mode 100644 index 0000000..3e42a23 --- /dev/null +++ b/src/android/widget/qnativeandroidframelayout_p_p.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDFRAMELAYOUT_P_P_H +#define QNATIVEANDROIDFRAMELAYOUT_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 + +QT_BEGIN_NAMESPACE + +class QNativeAndroidFrameLayoutPrivate : public QNativeAndroidViewGroupPrivate +{ +public: +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDFRAMELAYOUT_P_P_H diff --git a/src/android/widget/qnativeandroidimageview.cpp b/src/android/widget/qnativeandroidimageview.cpp index 6d7ee31..b3e2f96 100644 --- a/src/android/widget/qnativeandroidimageview.cpp +++ b/src/android/widget/qnativeandroidimageview.cpp @@ -35,24 +35,36 @@ ****************************************************************************/ #include "qnativeandroidimageview_p.h" +#include "qnativeandroidview_p_p.h" +#include "qnativeandroidoptional_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidImageView::QNativeAndroidImageView(QNativeAndroidContext *context) : - QNativeAndroidView(context), m_resource(0) +class QNativeAndroidImageViewPrivate : public QNativeAndroidViewPrivate +{ +public: + QUrl uri; + int resource = 0; + QNativeAndroidOptional tint; +}; + +QNativeAndroidImageView::QNativeAndroidImageView(QNativeAndroidContext *context) + : QNativeAndroidView(*(new QNativeAndroidImageViewPrivate), context) { } QUrl QNativeAndroidImageView::imageURI() const { - return m_uri; + Q_D(const QNativeAndroidImageView); + return d->uri; } void QNativeAndroidImageView::setImageURI(const QUrl &uri) { - if (m_uri != uri) { - m_uri = uri; + Q_D(QNativeAndroidImageView); + if (d->uri != uri) { + d->uri = uri; if (isValid()) { QAndroidJniObject v = instance(); QAndroidJniObject u = getUri(); @@ -66,13 +78,15 @@ void QNativeAndroidImageView::setImageURI(const QUrl &uri) int QNativeAndroidImageView::imageResource() const { - return m_resource; + Q_D(const QNativeAndroidImageView); + return d->resource; } void QNativeAndroidImageView::setImageResource(int resource) { - if (m_resource != resource) { - m_resource = resource; + Q_D(QNativeAndroidImageView); + if (d->resource != resource) { + d->resource = resource; QtNativeAndroid::callIntMethod(instance(), "setImageResource", resource); emit imageResourceChanged(); } @@ -80,15 +94,17 @@ void QNativeAndroidImageView::setImageResource(int resource) int QNativeAndroidImageView::imageTintColor() const { - if (m_tint.isNull()) + Q_D(const QNativeAndroidImageView); + if (d->tint.isNull()) return 0; // TODO - return m_tint; + return d->tint; } void QNativeAndroidImageView::setImageTintColor(int color) { - if (m_tint.isNull() || m_tint != color) { - m_tint = color; + Q_D(QNativeAndroidImageView); + if (d->tint.isNull() || d->tint != color) { + d->tint = color; if (isValid()) { QAndroidJniObject view = instance(); QtNativeAndroid::callFunction([=]() { @@ -112,24 +128,26 @@ QAndroidJniObject QNativeAndroidImageView::onCreate() void QNativeAndroidImageView::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidImageView); QNativeAndroidView::onInflate(instance); - if (m_uri.isValid()) + if (d->uri.isValid()) instance.callMethod("setImageURI", "(Landroid/net/Uri;)V", getUri().object()); - if (m_resource > 0) - instance.callMethod("setImageResource", "(I)V", m_resource); - if (!m_tint.isNull()) { + if (d->resource > 0) + instance.callMethod("setImageResource", "(I)V", d->resource); + if (!d->tint.isNull()) { QAndroidJniObject tint = QAndroidJniObject::callStaticObjectMethod("android/content/res/ColorStateList", "valueOf", "(I)Landroid/content/res/ColorStateList;", - m_tint); + d->tint); instance.callMethod("setImageTintList", "(Landroid/content/res/ColorStateList;)v", tint.object()); } } QAndroidJniObject QNativeAndroidImageView::getUri() const { - QAndroidJniObject str = QAndroidJniObject::fromString(m_uri.toString()); + Q_D(const QNativeAndroidImageView); + QAndroidJniObject str = QAndroidJniObject::fromString(d->uri.toString()); return QAndroidJniObject::callStaticObjectMethod("android/net/Uri", "parse", "(Ljava/lang/String;)Landroid/net/Uri;", str.object()); } diff --git a/src/android/widget/qnativeandroidimageview_p.h b/src/android/widget/qnativeandroidimageview_p.h index 4b097fe..2ae0efb 100644 --- a/src/android/widget/qnativeandroidimageview_p.h +++ b/src/android/widget/qnativeandroidimageview_p.h @@ -49,11 +49,12 @@ // #include -#include #include QT_BEGIN_NAMESPACE +class QNativeAndroidImageViewPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidImageView : public QNativeAndroidView { Q_OBJECT @@ -83,11 +84,10 @@ protected: void onInflate(QAndroidJniObject &instance) override; private: - QAndroidJniObject getUri() const; + Q_DISABLE_COPY(QNativeAndroidImageView) + Q_DECLARE_PRIVATE(QNativeAndroidImageView) - QUrl m_uri; - int m_resource; - QNativeAndroidOptional m_tint; + QAndroidJniObject getUri() const; }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidlinearlayout.cpp b/src/android/widget/qnativeandroidlinearlayout.cpp index 04b7902..f47477a 100644 --- a/src/android/widget/qnativeandroidlinearlayout.cpp +++ b/src/android/widget/qnativeandroidlinearlayout.cpp @@ -35,11 +35,17 @@ ****************************************************************************/ #include "qnativeandroidlinearlayout_p.h" +#include "qnativeandroidlinearlayout_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidLinearLayout::QNativeAndroidLinearLayout(QNativeAndroidContext *context) : - QNativeAndroidViewGroup(context) +QNativeAndroidLinearLayout::QNativeAndroidLinearLayout(QNativeAndroidContext *context) + : QNativeAndroidViewGroup(*(new QNativeAndroidLinearLayoutPrivate), context) +{ +} + +QNativeAndroidLinearLayout::QNativeAndroidLinearLayout(QNativeAndroidLinearLayoutPrivate &dd, QNativeAndroidContext *context) + : QNativeAndroidViewGroup(dd, context) { } @@ -53,15 +59,17 @@ QNativeAndroidLinearLayoutParams *QNativeAndroidLinearLayout::qmlAttachedPropert bool QNativeAndroidLinearLayout::isBaselineAligned() const { - if (m_baselineAligned.isNull()) + Q_D(const QNativeAndroidLinearLayout); + if (d->baselineAligned.isNull()) return true; - return m_baselineAligned; + return d->baselineAligned; } void QNativeAndroidLinearLayout::setBaselineAligned(bool aligned) { + Q_D(QNativeAndroidLinearLayout); if (aligned != isBaselineAligned()) { - m_baselineAligned = aligned; + d->baselineAligned = aligned; // if (isValid()) // jniObject().callMethod("setBaselineAligned", "(Z)V", aligned); emit baselineAlignedChanged(); @@ -70,15 +78,17 @@ void QNativeAndroidLinearLayout::setBaselineAligned(bool aligned) int QNativeAndroidLinearLayout::baselineAlignedChildIndex() const { - if (m_baselineAlignedChildIndex.isNull()) + Q_D(const QNativeAndroidLinearLayout); + if (d->baselineAlignedChildIndex.isNull()) return -1; - return m_baselineAlignedChildIndex; + return d->baselineAlignedChildIndex; } void QNativeAndroidLinearLayout::setBaselineAlignedChildIndex(int index) { + Q_D(QNativeAndroidLinearLayout); if (index != baselineAlignedChildIndex()) { - m_baselineAlignedChildIndex = index; + d->baselineAlignedChildIndex = index; // if (isValid()) // jniObject().callMethod("setBaselineAlignedChildIndex", "(I)V", index); emit baselineAlignedChildIndexChanged(); @@ -87,15 +97,17 @@ void QNativeAndroidLinearLayout::setBaselineAlignedChildIndex(int index) bool QNativeAndroidLinearLayout::isMeasureWithLargestChildEnabled() const { - if (m_measureWithLargestChild.isNull()) + Q_D(const QNativeAndroidLinearLayout); + if (d->measureWithLargestChild.isNull()) return false; - return m_measureWithLargestChild; + return d->measureWithLargestChild; } void QNativeAndroidLinearLayout::setMeasureWithLargestChildEnabled(bool enabled) { + Q_D(QNativeAndroidLinearLayout); if (enabled != isMeasureWithLargestChildEnabled()) { - m_measureWithLargestChild = enabled; + d->measureWithLargestChild = enabled; // if (isValid()) // jniObject().callMethod("setMeasureWithLargestChildEnabled", "(Z)V", enabled); emit measureWithLargestChildEnabledChanged(); @@ -104,15 +116,17 @@ void QNativeAndroidLinearLayout::setMeasureWithLargestChildEnabled(bool enabled) QNativeAndroidLinearLayout::Orientation QNativeAndroidLinearLayout::orientation() const { - if (m_orientation.isNull()) + Q_D(const QNativeAndroidLinearLayout); + if (d->orientation.isNull()) return HORIZONTAL; - return m_orientation; + return d->orientation; } void QNativeAndroidLinearLayout::setOrientation(Orientation value) { + Q_D(QNativeAndroidLinearLayout); if (value != orientation()) { - m_orientation = value; + d->orientation = value; // if (isValid()) // jniObject().callMethod("setOrientation", "(I)V", value); emit orientationChanged(); @@ -121,15 +135,17 @@ void QNativeAndroidLinearLayout::setOrientation(Orientation value) qreal QNativeAndroidLinearLayout::weightSum() const { - if (m_weightSum.isNull()) + Q_D(const QNativeAndroidLinearLayout); + if (d->weightSum.isNull()) return -1.0f; - return m_weightSum; + return d->weightSum; } void QNativeAndroidLinearLayout::setWeightSum(qreal sum) { + Q_D(QNativeAndroidLinearLayout); if (sum != weightSum()) { - m_weightSum = sum; + d->weightSum = sum; // if (isValid()) // jniObject().callMethod("setWeightSum", "(J)V", sum); emit weightSumChanged(); @@ -145,19 +161,20 @@ QAndroidJniObject QNativeAndroidLinearLayout::onCreate() void QNativeAndroidLinearLayout::onInflate(QAndroidJniObject &instance) { - if (!m_baselineAligned.isNull()) - instance.callMethod("setBaselineAligned", "(Z)V", m_baselineAligned); - if (!m_measureWithLargestChild.isNull()) - instance.callMethod("setMeasureWithLargestChildEnabled", "(Z)V", m_measureWithLargestChild); - if (!m_orientation.isNull()) - instance.callMethod("setOrientation", "(I)V", m_orientation); - if (!m_weightSum.isNull()) - instance.callMethod("setWeightSum", "(J)V", m_weightSum); + Q_D(QNativeAndroidLinearLayout); + if (!d->baselineAligned.isNull()) + instance.callMethod("setBaselineAligned", "(Z)V", d->baselineAligned); + if (!d->measureWithLargestChild.isNull()) + instance.callMethod("setMeasureWithLargestChildEnabled", "(Z)V", d->measureWithLargestChild); + if (!d->orientation.isNull()) + instance.callMethod("setOrientation", "(I)V", d->orientation); + if (!d->weightSum.isNull()) + instance.callMethod("setWeightSum", "(J)V", d->weightSum); QNativeAndroidViewGroup::onInflate(instance); - if (!m_baselineAlignedChildIndex.isNull()) - instance.callMethod("setBaselineAlignedChildIndex", "(I)V", m_baselineAlignedChildIndex); + if (!d->baselineAlignedChildIndex.isNull()) + instance.callMethod("setBaselineAlignedChildIndex", "(I)V", d->baselineAlignedChildIndex); } QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidlinearlayout_p.h b/src/android/widget/qnativeandroidlinearlayout_p.h index ce63d4b..240724c 100644 --- a/src/android/widget/qnativeandroidlinearlayout_p.h +++ b/src/android/widget/qnativeandroidlinearlayout_p.h @@ -49,11 +49,12 @@ // #include -#include #include QT_BEGIN_NAMESPACE +class QNativeAndroidLinearLayoutPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidLinearLayout : public QNativeAndroidViewGroup { Q_OBJECT @@ -100,17 +101,14 @@ Q_SIGNALS: void weightSumChanged(); protected: + QNativeAndroidLinearLayout(QNativeAndroidLinearLayoutPrivate &dd, QNativeAndroidContext *context = nullptr); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; private: - QNativeAndroidOptional m_baselineAligned; - QNativeAndroidOptional m_baselineAlignedChildIndex; - // TODO: Drawable divider - // TODO: int gravity - QNativeAndroidOptional m_measureWithLargestChild; - QNativeAndroidOptional m_orientation; - QNativeAndroidOptional m_weightSum; + Q_DISABLE_COPY(QNativeAndroidLinearLayout) + Q_DECLARE_PRIVATE(QNativeAndroidLinearLayout) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidlinearlayout_p_p.h b/src/android/widget/qnativeandroidlinearlayout_p_p.h new file mode 100644 index 0000000..06a91a3 --- /dev/null +++ b/src/android/widget/qnativeandroidlinearlayout_p_p.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDLINEARLAYOUT_P_P_H +#define QNATIVEANDROIDLINEARLAYOUT_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 +#include + +QT_BEGIN_NAMESPACE + +class QNativeAndroidLinearLayoutPrivate : public QNativeAndroidViewGroupPrivate +{ +public: + QNativeAndroidOptional baselineAligned; + QNativeAndroidOptional baselineAlignedChildIndex; + // TODO: Drawable divider + // TODO: int gravity + QNativeAndroidOptional measureWithLargestChild; + QNativeAndroidOptional orientation; + QNativeAndroidOptional weightSum; +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDLINEARLAYOUT_P_P_H diff --git a/src/android/widget/qnativeandroidlistview.cpp b/src/android/widget/qnativeandroidlistview.cpp index 5316568..af6a389 100644 --- a/src/android/widget/qnativeandroidlistview.cpp +++ b/src/android/widget/qnativeandroidlistview.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidListView::QNativeAndroidListView(QNativeAndroidContext *context) : - QNativeAndroidAdapterView(context) +QNativeAndroidListView::QNativeAndroidListView(QNativeAndroidContext *context) + : QNativeAndroidAdapterView(context) { } diff --git a/src/android/widget/qnativeandroidnumberpicker.cpp b/src/android/widget/qnativeandroidnumberpicker.cpp index 7254368..10df2d6 100644 --- a/src/android/widget/qnativeandroidnumberpicker.cpp +++ b/src/android/widget/qnativeandroidnumberpicker.cpp @@ -35,18 +35,27 @@ ****************************************************************************/ #include "qnativeandroidnumberpicker_p.h" +#include "qnativeandroidlinearlayout_p_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidNumberPicker::QNativeAndroidNumberPicker(QNativeAndroidContext *context) : - QNativeAndroidLinearLayout(context), m_value(0) +class QNativeAndroidNumberPickerPrivate : public QNativeAndroidLinearLayoutPrivate +{ +public: + int value = 0; + QAndroidJniObject listener; +}; + +QNativeAndroidNumberPicker::QNativeAndroidNumberPicker(QNativeAndroidContext *context) + : QNativeAndroidLinearLayout(*(new QNativeAndroidNumberPickerPrivate), context) { } int QNativeAndroidNumberPicker::value() const { - return m_value; + Q_D(const QNativeAndroidNumberPicker); + return d->value; } void QNativeAndroidNumberPicker::setValue(int value) @@ -57,8 +66,9 @@ void QNativeAndroidNumberPicker::setValue(int value) bool QNativeAndroidNumberPicker::updateValue(int value) { - if (m_value != value) { - m_value = value; + Q_D(QNativeAndroidNumberPicker); + if (d->value != value) { + d->value = value; emit valueChanged(); return true; } @@ -74,20 +84,21 @@ QAndroidJniObject QNativeAndroidNumberPicker::onCreate() void QNativeAndroidNumberPicker::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidNumberPicker); QNativeAndroidLinearLayout::onInflate(instance); - m_listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeNumberPickerListener", + d->listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeNumberPickerListener", "(Landroid/widget/NumberPicker;J)V", instance.object(), reinterpret_cast(this)); static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } - instance.callMethod("setValue", "(I)V", m_value); + instance.callMethod("setValue", "(I)V", d->value); } void QNativeAndroidNumberPicker::onRegisterNativeMethods(jobject listener) diff --git a/src/android/widget/qnativeandroidnumberpicker_p.h b/src/android/widget/qnativeandroidnumberpicker_p.h index 550461a..0394c1d 100644 --- a/src/android/widget/qnativeandroidnumberpicker_p.h +++ b/src/android/widget/qnativeandroidnumberpicker_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidNumberPickerPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidNumberPicker : public QNativeAndroidLinearLayout { Q_OBJECT @@ -77,8 +79,8 @@ private Q_SLOTS: bool updateValue(int value); private: - int m_value; - QAndroidJniObject m_listener; + Q_DISABLE_COPY(QNativeAndroidNumberPicker) + Q_DECLARE_PRIVATE(QNativeAndroidNumberPicker) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidpopupmenu.cpp b/src/android/widget/qnativeandroidpopupmenu.cpp index 6ec9342..dcb6b61 100644 --- a/src/android/widget/qnativeandroidpopupmenu.cpp +++ b/src/android/widget/qnativeandroidpopupmenu.cpp @@ -35,16 +35,26 @@ ****************************************************************************/ #include "qnativeandroidpopupmenu_p.h" +#include "qnativeandroidobject_p_p.h" #include "qtnativeandroidfunctions_p.h" #include "qnativeandroidmenuitem_p.h" +#include "qnativeandroidoptional_p.h" #include "qnativeandroidcontext_p.h" #include "qnativeandroidview_p.h" #include QT_BEGIN_NAMESPACE -QNativeAndroidPopupMenu::QNativeAndroidPopupMenu(QObject *parent) : - QNativeAndroidObject(parent), m_anchor(0) +class QNativeAndroidPopupMenuPrivate : public QNativeAndroidObjectPrivate +{ +public: + QNativeAndroidView *anchor = nullptr; + QNativeAndroidOptional gravity; + QAndroidJniObject listener; +}; + +QNativeAndroidPopupMenu::QNativeAndroidPopupMenu(QObject *parent) + : QNativeAndroidObject(*(new QNativeAndroidPopupMenuPrivate), parent) { } @@ -61,35 +71,40 @@ QList QNativeAndroidPopupMenu::items() const QNativeAndroidView *QNativeAndroidPopupMenu::anchor() const { - return m_anchor; + Q_D(const QNativeAndroidPopupMenu); + return d->anchor; } void QNativeAndroidPopupMenu::setAnchor(QNativeAndroidView *anchor) { - if (m_anchor != anchor) { - m_anchor = anchor; + Q_D(QNativeAndroidPopupMenu); + if (d->anchor != anchor) { + d->anchor = anchor; emit anchorChanged(); } } int QNativeAndroidPopupMenu::gravity() const { - if (m_gravity.isNull()) + Q_D(const QNativeAndroidPopupMenu); + if (d->gravity.isNull()) return 0; // TODO - return m_gravity; + return d->gravity; } void QNativeAndroidPopupMenu::setGravity(int value) { + Q_D(QNativeAndroidPopupMenu); if (value != gravity()) { - m_gravity = value; + d->gravity = value; emit gravityChanged(); } } void QNativeAndroidPopupMenu::show() { - QNativeAndroidView *anchor = m_anchor ? m_anchor : qobject_cast(parent()); + Q_D(QNativeAndroidPopupMenu); + QNativeAndroidView *anchor = d->anchor ? d->anchor : qobject_cast(parent()); if (!anchor) { qWarning() << "PopupMenu parent must be either anchored or in a view."; return; @@ -106,10 +121,10 @@ void QNativeAndroidPopupMenu::show() QtNativeAndroid::callFunction([=]() { QAndroidJniObject popup; - if (!m_gravity.isNull()) { + if (!d->gravity.isNull()) { popup = QAndroidJniObject("android/widget/PopupMenu", "(Landroid/content/Context;Landroid/view/View;I)V", - c.object(), a.object(), m_gravity); + c.object(), a.object(), d->gravity); } else { popup = QAndroidJniObject("android/widget/PopupMenu", "(Landroid/content/Context;Landroid/view/View;)V", diff --git a/src/android/widget/qnativeandroidpopupmenu_p.h b/src/android/widget/qnativeandroidpopupmenu_p.h index 608d028..06d6517 100644 --- a/src/android/widget/qnativeandroidpopupmenu_p.h +++ b/src/android/widget/qnativeandroidpopupmenu_p.h @@ -49,12 +49,12 @@ // #include -#include QT_BEGIN_NAMESPACE class QNativeAndroidView; class QNativeAndroidMenuItem; +class QNativeAndroidPopupMenuPrivate; class Q_NATIVEANDROID_EXPORT QNativeAndroidPopupMenu : public QNativeAndroidObject { @@ -84,9 +84,8 @@ Q_SIGNALS: void itemClick(); private: - QNativeAndroidView *m_anchor; - QNativeAndroidOptional m_gravity; - QAndroidJniObject m_listener; + Q_DISABLE_COPY(QNativeAndroidPopupMenu) + Q_DECLARE_PRIVATE(QNativeAndroidPopupMenu) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidprogressbar.cpp b/src/android/widget/qnativeandroidprogressbar.cpp index 62475fa..343913e 100644 --- a/src/android/widget/qnativeandroidprogressbar.cpp +++ b/src/android/widget/qnativeandroidprogressbar.cpp @@ -35,24 +35,32 @@ ****************************************************************************/ #include "qnativeandroidprogressbar_p.h" +#include "qnativeandroidprogressbar_p_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidProgressBar::QNativeAndroidProgressBar(QNativeAndroidContext *context) : - QNativeAndroidView(context), m_max(100), m_progress(0), m_secondary(0), m_indeterminate(false) +QNativeAndroidProgressBar::QNativeAndroidProgressBar(QNativeAndroidContext *context) + : QNativeAndroidView(*(new QNativeAndroidProgressBarPrivate), context) +{ +} + +QNativeAndroidProgressBar::QNativeAndroidProgressBar(QNativeAndroidProgressBarPrivate &dd, QNativeAndroidContext *context) + : QNativeAndroidView(dd, context) { } bool QNativeAndroidProgressBar::isIndeterminate() const { - return m_indeterminate; + Q_D(const QNativeAndroidProgressBar); + return d->indeterminate; } void QNativeAndroidProgressBar::setIndeterminate(bool indeterminate) { - if (m_indeterminate != indeterminate) { - m_indeterminate = indeterminate; + Q_D(QNativeAndroidProgressBar); + if (d->indeterminate != indeterminate) { + d->indeterminate = indeterminate; QtNativeAndroid::callBoolMethod(instance(), "setIndeterminate", indeterminate); emit indeterminateChanged(); } @@ -60,7 +68,8 @@ void QNativeAndroidProgressBar::setIndeterminate(bool indeterminate) int QNativeAndroidProgressBar::progress() const { - return m_progress; + Q_D(const QNativeAndroidProgressBar); + return d->progress; } void QNativeAndroidProgressBar::setProgress(int progress) @@ -71,8 +80,9 @@ void QNativeAndroidProgressBar::setProgress(int progress) bool QNativeAndroidProgressBar::updateProgress(int progress) { - if (m_progress != progress) { - m_progress = progress; + Q_D(QNativeAndroidProgressBar); + if (d->progress != progress) { + d->progress = progress; emit progressChanged(); return true; } @@ -81,13 +91,15 @@ bool QNativeAndroidProgressBar::updateProgress(int progress) int QNativeAndroidProgressBar::secondaryProgress() const { - return m_secondary; + Q_D(const QNativeAndroidProgressBar); + return d->secondary; } void QNativeAndroidProgressBar::setSecondaryProgress(int progress) { - if (m_secondary != progress) { - m_secondary = progress; + Q_D(QNativeAndroidProgressBar); + if (d->secondary != progress) { + d->secondary = progress; QtNativeAndroid::callIntMethod(instance(), "setSecondaryProgress", progress); emit secondaryProgressChanged(); } @@ -95,13 +107,15 @@ void QNativeAndroidProgressBar::setSecondaryProgress(int progress) int QNativeAndroidProgressBar::max() const { - return m_max; + Q_D(const QNativeAndroidProgressBar); + return d->max; } void QNativeAndroidProgressBar::setMax(int max) { - if (m_max != max) { - m_max = max; + Q_D(QNativeAndroidProgressBar); + if (d->max != max) { + d->max = max; QtNativeAndroid::callIntMethod(instance(), "setMax", max); emit maxChanged(); } @@ -109,14 +123,16 @@ void QNativeAndroidProgressBar::setMax(int max) QNativeAndroidProgressBar::Style QNativeAndroidProgressBar::style() const { - if (m_style.isNull()) + Q_D(const QNativeAndroidProgressBar); + if (d->style.isNull()) return Medium; - return m_style; + return d->style; } void QNativeAndroidProgressBar::setStyle(Style style) { - m_style = style; // TODO: warning after construction or re-construct? + Q_D(QNativeAndroidProgressBar); + d->style = style; // TODO: warning after construction or re-construct? } QAndroidJniObject QNativeAndroidProgressBar::onCreate() @@ -128,16 +144,17 @@ QAndroidJniObject QNativeAndroidProgressBar::onCreate() void QNativeAndroidProgressBar::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidProgressBar); QNativeAndroidView::onInflate(instance); - if (m_progress > 0) - instance.callMethod("setProgress", "(I)V", m_progress); - if (m_secondary > 0) - instance.callMethod("setSecondaryProgress", "(I)V", m_secondary); - if (m_indeterminate) - instance.callMethod("setIndeterminate", "(Z)V", m_indeterminate); - if (m_max != 100) - instance.callMethod("setMax", "(I)V", m_max); + if (d->progress > 0) + instance.callMethod("setProgress", "(I)V", d->progress); + if (d->secondary > 0) + instance.callMethod("setSecondaryProgress", "(I)V", d->secondary); + if (d->indeterminate) + instance.callMethod("setIndeterminate", "(Z)V", d->indeterminate); + if (d->max != 100) + instance.callMethod("setMax", "(I)V", d->max); } QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidprogressbar_p.h b/src/android/widget/qnativeandroidprogressbar_p.h index 2ef99a5..276b80a 100644 --- a/src/android/widget/qnativeandroidprogressbar_p.h +++ b/src/android/widget/qnativeandroidprogressbar_p.h @@ -49,10 +49,11 @@ // #include -#include QT_BEGIN_NAMESPACE +class QNativeAndroidProgressBarPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidProgressBar : public QNativeAndroidView { Q_OBJECT @@ -99,6 +100,8 @@ Q_SIGNALS: void maxChanged(); protected: + QNativeAndroidProgressBar(QNativeAndroidProgressBarPrivate &dd, QNativeAndroidContext *context = nullptr); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; @@ -106,11 +109,8 @@ private Q_SLOTS: bool updateProgress(int progress); private: - int m_max; - int m_progress; - int m_secondary; - bool m_indeterminate; - QNativeAndroidOptional