diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-12-19 13:00:17 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-12-19 12:01:11 +0000 |
commit | 9a51d857e826cb30d660177789c237852a8cc107 (patch) | |
tree | 062dad799550eda99f0a71fa12213055439eb53e | |
parent | 8419d93e540fe7435883a2933eb6c6243a562f2c (diff) |
Pimplify widget classes
Change-Id: I52a071208fa8824f4044a8947be494d6695c13ea
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
74 files changed, 1339 insertions, 333 deletions
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<QNativeAndroidView*>(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 <QtNativeAndroid/private/qnativeandroidprogressbar_p_p.h> + +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<jlong>(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 <QtNativeAndroid/private/qnativeandroidviewgroup_p_p.h> + +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<void>("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 <QtNativeAndroid/private/qnativeandroidcontextual_p_p.h> + +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 <QtNativeAndroid/private/qnativeandroidtextview_p_p.h> + +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<jlong>(this)); static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } - instance.callMethod<void>("setChecked", "(Z)V", m_checked); + instance.callMethod<void>("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 <QtNativeAndroid/private/qnativeandroidbutton_p_p.h> +#include <QtAndroidExtras/qandroidjniobject.h> + +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 <QtNativeAndroid/private/qnativeandroidviewgroup_p_p.h> + +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<int> 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<void>("setImageURI", "(Landroid/net/Uri;)V", getUri().object()); - if (m_resource > 0) - instance.callMethod<void>("setImageResource", "(I)V", m_resource); - if (!m_tint.isNull()) { + if (d->resource > 0) + instance.callMethod<void>("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<void>("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 <QtNativeAndroid/private/qnativeandroidview_p.h> -#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> #include <QtCore/qurl.h> 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<int> 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<void>("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<void>("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<void>("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<void>("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<void>("setWeightSum", "(J)V", sum); emit weightSumChanged(); @@ -145,19 +161,20 @@ QAndroidJniObject QNativeAndroidLinearLayout::onCreate() void QNativeAndroidLinearLayout::onInflate(QAndroidJniObject &instance) { - if (!m_baselineAligned.isNull()) - instance.callMethod<void>("setBaselineAligned", "(Z)V", m_baselineAligned); - if (!m_measureWithLargestChild.isNull()) - instance.callMethod<void>("setMeasureWithLargestChildEnabled", "(Z)V", m_measureWithLargestChild); - if (!m_orientation.isNull()) - instance.callMethod<void>("setOrientation", "(I)V", m_orientation); - if (!m_weightSum.isNull()) - instance.callMethod<void>("setWeightSum", "(J)V", m_weightSum); + Q_D(QNativeAndroidLinearLayout); + if (!d->baselineAligned.isNull()) + instance.callMethod<void>("setBaselineAligned", "(Z)V", d->baselineAligned); + if (!d->measureWithLargestChild.isNull()) + instance.callMethod<void>("setMeasureWithLargestChildEnabled", "(Z)V", d->measureWithLargestChild); + if (!d->orientation.isNull()) + instance.callMethod<void>("setOrientation", "(I)V", d->orientation); + if (!d->weightSum.isNull()) + instance.callMethod<void>("setWeightSum", "(J)V", d->weightSum); QNativeAndroidViewGroup::onInflate(instance); - if (!m_baselineAlignedChildIndex.isNull()) - instance.callMethod<void>("setBaselineAlignedChildIndex", "(I)V", m_baselineAlignedChildIndex); + if (!d->baselineAlignedChildIndex.isNull()) + instance.callMethod<void>("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 <QtNativeAndroid/private/qnativeandroidviewgroup_p.h> -#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> #include <QtNativeAndroid/private/qnativeandroidlinearlayoutparams_p.h> 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<bool> m_baselineAligned; - QNativeAndroidOptional<bool> m_baselineAlignedChildIndex; - // TODO: Drawable divider - // TODO: int gravity - QNativeAndroidOptional<bool> m_measureWithLargestChild; - QNativeAndroidOptional<Orientation> m_orientation; - QNativeAndroidOptional<qreal> 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 <QtNativeAndroid/private/qnativeandroidviewgroup_p_p.h> +#include <QtNativeAndroid/private/qnativeandroidlinearlayout_p.h> +#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> + +QT_BEGIN_NAMESPACE + +class QNativeAndroidLinearLayoutPrivate : public QNativeAndroidViewGroupPrivate +{ +public: + QNativeAndroidOptional<bool> baselineAligned; + QNativeAndroidOptional<bool> baselineAlignedChildIndex; + // TODO: Drawable divider + // TODO: int gravity + QNativeAndroidOptional<bool> measureWithLargestChild; + QNativeAndroidOptional<QNativeAndroidLinearLayout::Orientation> orientation; + QNativeAndroidOptional<qreal> 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<jlong>(this)); static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } - instance.callMethod<void>("setValue", "(I)V", m_value); + instance.callMethod<void>("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 <QtCore/qdebug.h> QT_BEGIN_NAMESPACE -QNativeAndroidPopupMenu::QNativeAndroidPopupMenu(QObject *parent) : - QNativeAndroidObject(parent), m_anchor(0) +class QNativeAndroidPopupMenuPrivate : public QNativeAndroidObjectPrivate +{ +public: + QNativeAndroidView *anchor = nullptr; + QNativeAndroidOptional<int> gravity; + QAndroidJniObject listener; +}; + +QNativeAndroidPopupMenu::QNativeAndroidPopupMenu(QObject *parent) + : QNativeAndroidObject(*(new QNativeAndroidPopupMenuPrivate), parent) { } @@ -61,35 +71,40 @@ QList<QNativeAndroidMenuItem *> 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<QNativeAndroidView *>(parent()); + Q_D(QNativeAndroidPopupMenu); + QNativeAndroidView *anchor = d->anchor ? d->anchor : qobject_cast<QNativeAndroidView *>(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 <QtNativeAndroid/private/qnativeandroidobject_p.h> -#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> 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<int> 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<void>("setProgress", "(I)V", m_progress); - if (m_secondary > 0) - instance.callMethod<void>("setSecondaryProgress", "(I)V", m_secondary); - if (m_indeterminate) - instance.callMethod<void>("setIndeterminate", "(Z)V", m_indeterminate); - if (m_max != 100) - instance.callMethod<void>("setMax", "(I)V", m_max); + if (d->progress > 0) + instance.callMethod<void>("setProgress", "(I)V", d->progress); + if (d->secondary > 0) + instance.callMethod<void>("setSecondaryProgress", "(I)V", d->secondary); + if (d->indeterminate) + instance.callMethod<void>("setIndeterminate", "(Z)V", d->indeterminate); + if (d->max != 100) + instance.callMethod<void>("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 <QtNativeAndroid/private/qnativeandroidview_p.h> -#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> 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<Style> m_style; + Q_DISABLE_COPY(QNativeAndroidProgressBar) + Q_DECLARE_PRIVATE(QNativeAndroidProgressBar) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidprogressbar_p_p.h b/src/android/widget/qnativeandroidprogressbar_p_p.h new file mode 100644 index 0000000..8aa9420 --- /dev/null +++ b/src/android/widget/qnativeandroidprogressbar_p_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDPROGRESSBAR_P_P_H +#define QNATIVEANDROIDPROGRESSBAR_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 <QtNativeAndroid/private/qnativeandroidview_p_p.h> +#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> +#include <QtNativeAndroid/private/qnativeandroidprogressbar_p.h> + +QT_BEGIN_NAMESPACE + +class QNativeAndroidProgressBarPrivate : public QNativeAndroidViewPrivate +{ +public: + int max = 100; + int progress = 0; + int secondary = 0; + bool indeterminate = false; + QNativeAndroidOptional<QNativeAndroidProgressBar::Style> style; +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDPROGRESSBAR_P_P_H diff --git a/src/android/widget/qnativeandroidradiobutton.cpp b/src/android/widget/qnativeandroidradiobutton.cpp index daf19ee..9a21b2e 100644 --- a/src/android/widget/qnativeandroidradiobutton.cpp +++ b/src/android/widget/qnativeandroidradiobutton.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidRadioButton::QNativeAndroidRadioButton(QNativeAndroidContext *context) : - QNativeAndroidCompoundButton(context) +QNativeAndroidRadioButton::QNativeAndroidRadioButton(QNativeAndroidContext *context) + : QNativeAndroidCompoundButton(context) { } diff --git a/src/android/widget/qnativeandroidradiogroup.cpp b/src/android/widget/qnativeandroidradiogroup.cpp index 7e1770b..eb8d7b1 100644 --- a/src/android/widget/qnativeandroidradiogroup.cpp +++ b/src/android/widget/qnativeandroidradiogroup.cpp @@ -35,19 +35,28 @@ ****************************************************************************/ #include "qnativeandroidradiogroup_p.h" +#include "qnativeandroidlinearlayout_p_p.h" #include "qnativeandroidradiobutton_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidRadioGroup::QNativeAndroidRadioGroup(QNativeAndroidContext *context) : - QNativeAndroidLinearLayout(context), m_checkedButton(0) +class QNativeAndroidRadioGroupPrivate : public QNativeAndroidLinearLayoutPrivate +{ +public: + QAndroidJniObject listener; + QNativeAndroidRadioButton* checkedButton = nullptr; +}; + +QNativeAndroidRadioGroup::QNativeAndroidRadioGroup(QNativeAndroidContext *context) + : QNativeAndroidLinearLayout(*(new QNativeAndroidRadioGroupPrivate), context) { } QNativeAndroidRadioButton *QNativeAndroidRadioGroup::checkedButton() const { - return m_checkedButton; + Q_D(const QNativeAndroidRadioGroup); + return d->checkedButton; } void QNativeAndroidRadioGroup::setCheckedButton(QNativeAndroidRadioButton *button) @@ -70,16 +79,17 @@ QAndroidJniObject QNativeAndroidRadioGroup::onCreate() void QNativeAndroidRadioGroup::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidRadioGroup); QNativeAndroidLinearLayout::onInflate(instance); - m_listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeRadioGroupListener", + d->listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeRadioGroupListener", "(Landroid/widget/RadioGroup;J)V", instance.object(), reinterpret_cast<jlong>(this)); static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } @@ -120,8 +130,9 @@ void QNativeAndroidRadioGroup::updateCheckedButtonId(int checkedId) bool QNativeAndroidRadioGroup::updateCheckedButton(QNativeAndroidRadioButton *button) { - if (m_checkedButton != button) { - m_checkedButton = button; + Q_D(QNativeAndroidRadioGroup); + if (d->checkedButton != button) { + d->checkedButton = button; emit checkedButtonChanged(); return true; } diff --git a/src/android/widget/qnativeandroidradiogroup_p.h b/src/android/widget/qnativeandroidradiogroup_p.h index df67864..2f1b39c 100644 --- a/src/android/widget/qnativeandroidradiogroup_p.h +++ b/src/android/widget/qnativeandroidradiogroup_p.h @@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE class QNativeAndroidRadioButton; +class QNativeAndroidRadioGroupPrivate; class Q_NATIVEANDROID_EXPORT QNativeAndroidRadioGroup : public QNativeAndroidLinearLayout { @@ -83,8 +84,8 @@ private Q_SLOTS: bool updateCheckedButton(QNativeAndroidRadioButton *button); private: - QAndroidJniObject m_listener; - QNativeAndroidRadioButton* m_checkedButton; + Q_DISABLE_COPY(QNativeAndroidRadioGroup) + Q_DECLARE_PRIVATE(QNativeAndroidRadioGroup) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidratingbar.cpp b/src/android/widget/qnativeandroidratingbar.cpp index 29f0683..d9903c2 100644 --- a/src/android/widget/qnativeandroidratingbar.cpp +++ b/src/android/widget/qnativeandroidratingbar.cpp @@ -35,18 +35,27 @@ ****************************************************************************/ #include "qnativeandroidratingbar_p.h" +#include "qnativeandroidabsseekbar_p_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidRatingBar::QNativeAndroidRatingBar(QNativeAndroidContext *context) : - QNativeAndroidAbsSeekBar(context), m_rating(0.0) +class QNativeAndroidRatingBarPrivate : public QNativeAndroidAbsSeekBarPrivate +{ +public: + qreal rating = 0.0; + QAndroidJniObject listener; +}; + +QNativeAndroidRatingBar::QNativeAndroidRatingBar(QNativeAndroidContext *context) + : QNativeAndroidAbsSeekBar(*(new QNativeAndroidRatingBarPrivate), context) { } qreal QNativeAndroidRatingBar::rating() const { - return m_rating; + Q_D(const QNativeAndroidRatingBar); + return d->rating; } void QNativeAndroidRatingBar::setRating(qreal rating) @@ -57,8 +66,9 @@ void QNativeAndroidRatingBar::setRating(qreal rating) bool QNativeAndroidRatingBar::updateRating(qreal rating) { - if (!qFuzzyCompare(m_rating, rating)) { - m_rating = rating; + Q_D(QNativeAndroidRatingBar); + if (!qFuzzyCompare(d->rating, rating)) { + d->rating = rating; emit ratingChanged(); return true; } @@ -74,20 +84,21 @@ QAndroidJniObject QNativeAndroidRatingBar::onCreate() void QNativeAndroidRatingBar::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidRatingBar); QNativeAndroidAbsSeekBar::onInflate(instance); - m_listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeRatingBarListener", + d->listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeRatingBarListener", "(Landroid/widget/RatingBar;J)V", instance.object(), reinterpret_cast<jlong>(this)); static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } - instance.callMethod<void>("setRating", "(F)V", m_rating); + instance.callMethod<void>("setRating", "(F)V", d->rating); } void QNativeAndroidRatingBar::onRegisterNativeMethods(jobject listener) diff --git a/src/android/widget/qnativeandroidratingbar_p.h b/src/android/widget/qnativeandroidratingbar_p.h index 35ba5a5..ee8dd5a 100644 --- a/src/android/widget/qnativeandroidratingbar_p.h +++ b/src/android/widget/qnativeandroidratingbar_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidRatingBarPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidRatingBar : public QNativeAndroidAbsSeekBar { Q_OBJECT @@ -77,8 +79,8 @@ private Q_SLOTS: bool updateRating(qreal rating); private: - qreal m_rating; - QAndroidJniObject m_listener; + Q_DISABLE_COPY(QNativeAndroidRatingBar) + Q_DECLARE_PRIVATE(QNativeAndroidRatingBar) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidrelativelayout.cpp b/src/android/widget/qnativeandroidrelativelayout.cpp index 04dae83..22b2797 100644 --- a/src/android/widget/qnativeandroidrelativelayout.cpp +++ b/src/android/widget/qnativeandroidrelativelayout.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidRelativeLayout::QNativeAndroidRelativeLayout(QNativeAndroidContext *context) : - QNativeAndroidViewGroup(context) +QNativeAndroidRelativeLayout::QNativeAndroidRelativeLayout(QNativeAndroidContext *context) + : QNativeAndroidViewGroup(context) { } diff --git a/src/android/widget/qnativeandroidscrollview.cpp b/src/android/widget/qnativeandroidscrollview.cpp index f54fcb1..5614dde 100644 --- a/src/android/widget/qnativeandroidscrollview.cpp +++ b/src/android/widget/qnativeandroidscrollview.cpp @@ -35,20 +35,30 @@ ****************************************************************************/ #include "qnativeandroidscrollview_p.h" +#include "qnativeandroidframelayout_p_p.h" #include "qtnativeandroidfunctions_p.h" +#include "qnativeandroidoptional_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidScrollView::QNativeAndroidScrollView(QNativeAndroidContext *context) : - QNativeAndroidFrameLayout(context) +class QNativeAndroidScrollViewPrivate : public QNativeAndroidFrameLayoutPrivate +{ +public: + QNativeAndroidOptional<int> scrollX; + QNativeAndroidOptional<int> scrollY; +}; + +QNativeAndroidScrollView::QNativeAndroidScrollView(QNativeAndroidContext *context) + : QNativeAndroidFrameLayout(*(new QNativeAndroidScrollViewPrivate), context) { } int QNativeAndroidScrollView::scrollX() const { - if (m_scrollX.isNull()) + Q_D(const QNativeAndroidScrollView); + if (d->scrollX.isNull()) return 0; - return m_scrollX; + return d->scrollX; } void QNativeAndroidScrollView::setScrollX(int x) @@ -59,8 +69,9 @@ void QNativeAndroidScrollView::setScrollX(int x) bool QNativeAndroidScrollView::updateScrollX(int x) { - if (m_scrollX.isNull() || m_scrollX != x) { - m_scrollX = x; + Q_D(QNativeAndroidScrollView); + if (d->scrollX.isNull() || d->scrollX != x) { + d->scrollX = x; emit scrollXChanged(); } return false; @@ -68,9 +79,10 @@ bool QNativeAndroidScrollView::updateScrollX(int x) int QNativeAndroidScrollView::scrollY() const { - if (m_scrollY.isNull()) + Q_D(const QNativeAndroidScrollView); + if (d->scrollY.isNull()) return 0; - return m_scrollY; + return d->scrollY; } void QNativeAndroidScrollView::setScrollY(int y) @@ -81,8 +93,9 @@ void QNativeAndroidScrollView::setScrollY(int y) bool QNativeAndroidScrollView::updateScrollY(int y) { - if (m_scrollY.isNull() || m_scrollY != y) { - m_scrollY = y; + Q_D(QNativeAndroidScrollView); + if (d->scrollY.isNull() || d->scrollY != y) { + d->scrollY = y; emit scrollYChanged(); } return false; diff --git a/src/android/widget/qnativeandroidscrollview_p.h b/src/android/widget/qnativeandroidscrollview_p.h index 97bc668..d038bb6 100644 --- a/src/android/widget/qnativeandroidscrollview_p.h +++ b/src/android/widget/qnativeandroidscrollview_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidScrollViewPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidScrollView : public QNativeAndroidFrameLayout { Q_OBJECT @@ -83,8 +85,8 @@ private Q_SLOTS: bool updateScrollY(int y); private: - QNativeAndroidOptional<int> m_scrollX; - QNativeAndroidOptional<int> m_scrollY; + Q_DISABLE_COPY(QNativeAndroidScrollView) + Q_DECLARE_PRIVATE(QNativeAndroidScrollView) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidsearchview.cpp b/src/android/widget/qnativeandroidsearchview.cpp index 279d1d5..abb93ed 100644 --- a/src/android/widget/qnativeandroidsearchview.cpp +++ b/src/android/widget/qnativeandroidsearchview.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidSearchView::QNativeAndroidSearchView(QNativeAndroidContext *context) : - QNativeAndroidLinearLayout(context) +QNativeAndroidSearchView::QNativeAndroidSearchView(QNativeAndroidContext *context) + : QNativeAndroidLinearLayout(context) { } diff --git a/src/android/widget/qnativeandroidseekbar.cpp b/src/android/widget/qnativeandroidseekbar.cpp index 4c3c7c1..78c5f43 100644 --- a/src/android/widget/qnativeandroidseekbar.cpp +++ b/src/android/widget/qnativeandroidseekbar.cpp @@ -35,11 +35,18 @@ ****************************************************************************/ #include "qnativeandroidseekbar_p.h" +#include "qnativeandroidabsseekbar_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidSeekBar::QNativeAndroidSeekBar(QNativeAndroidContext *context) : - QNativeAndroidAbsSeekBar(context) +class QNativeAndroidSeekBarPrivate : public QNativeAndroidAbsSeekBarPrivate +{ +public: + QAndroidJniObject listener; +}; + +QNativeAndroidSeekBar::QNativeAndroidSeekBar(QNativeAndroidContext *context) + : QNativeAndroidAbsSeekBar(*(new QNativeAndroidSeekBarPrivate), context) { } @@ -52,16 +59,17 @@ QAndroidJniObject QNativeAndroidSeekBar::onCreate() void QNativeAndroidSeekBar::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidSeekBar); QNativeAndroidAbsSeekBar::onInflate(instance); - m_listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeSeekBarListener", + d->listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeSeekBarListener", "(Landroid/widget/SeekBar;J)V", instance.object(), reinterpret_cast<jlong>(this)); static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } } diff --git a/src/android/widget/qnativeandroidseekbar_p.h b/src/android/widget/qnativeandroidseekbar_p.h index a54eaf0..1cfe021 100644 --- a/src/android/widget/qnativeandroidseekbar_p.h +++ b/src/android/widget/qnativeandroidseekbar_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidSeekBarPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidSeekBar : public QNativeAndroidAbsSeekBar { Q_OBJECT @@ -67,7 +69,8 @@ protected: static void onProgressChanged(JNIEnv *env, jobject object, jlong instance, jint progress, jboolean fromUser); private: - QAndroidJniObject m_listener; + Q_DISABLE_COPY(QNativeAndroidSeekBar) + Q_DECLARE_PRIVATE(QNativeAndroidSeekBar) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidspace.cpp b/src/android/widget/qnativeandroidspace.cpp index d8840b7..7e11e57 100644 --- a/src/android/widget/qnativeandroidspace.cpp +++ b/src/android/widget/qnativeandroidspace.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidSpace::QNativeAndroidSpace(QNativeAndroidContext *context) : - QNativeAndroidView(context) +QNativeAndroidSpace::QNativeAndroidSpace(QNativeAndroidContext *context) + : QNativeAndroidView(context) { } diff --git a/src/android/widget/qnativeandroidspinner.cpp b/src/android/widget/qnativeandroidspinner.cpp index a4881b6..b8acd8c 100644 --- a/src/android/widget/qnativeandroidspinner.cpp +++ b/src/android/widget/qnativeandroidspinner.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidSpinner::QNativeAndroidSpinner(QNativeAndroidContext *context) : - QNativeAndroidAdapterView(context) +QNativeAndroidSpinner::QNativeAndroidSpinner(QNativeAndroidContext *context) + : QNativeAndroidAdapterView(context) { } diff --git a/src/android/widget/qnativeandroidswitch.cpp b/src/android/widget/qnativeandroidswitch.cpp index 5e2479e..133a9ca 100644 --- a/src/android/widget/qnativeandroidswitch.cpp +++ b/src/android/widget/qnativeandroidswitch.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidSwitch::QNativeAndroidSwitch(QNativeAndroidContext *context) : - QNativeAndroidCompoundButton(context) +QNativeAndroidSwitch::QNativeAndroidSwitch(QNativeAndroidContext *context) + : QNativeAndroidCompoundButton(context) { } diff --git a/src/android/widget/qnativeandroidtabhost.cpp b/src/android/widget/qnativeandroidtabhost.cpp index 8b62c3e..2f8702b 100644 --- a/src/android/widget/qnativeandroidtabhost.cpp +++ b/src/android/widget/qnativeandroidtabhost.cpp @@ -35,12 +35,19 @@ ****************************************************************************/ #include "qnativeandroidtabhost_p.h" +#include "qnativeandroidframelayout_p_p.h" #include "qnativeandroidtabspec_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidTabHost::QNativeAndroidTabHost(QNativeAndroidContext *context) : - QNativeAndroidFrameLayout(context) +class QNativeAndroidTabHostPrivate : public QNativeAndroidFrameLayoutPrivate +{ +public: + QAndroidJniObject listener; +}; + +QNativeAndroidTabHost::QNativeAndroidTabHost(QNativeAndroidContext *context) + : QNativeAndroidFrameLayout(*(new QNativeAndroidTabHostPrivate), context) { } @@ -53,16 +60,17 @@ QAndroidJniObject QNativeAndroidTabHost::onCreate() void QNativeAndroidTabHost::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidTabHost); QNativeAndroidFrameLayout::onInflate(instance); - m_listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeTabHostListener", + d->listener = QAndroidJniObject("org/qtproject/qt5/android/bindings/widget/QtNativeTabHostListener", "(Landroid/widget/TabHost;J)V", instance.object(), reinterpret_cast<jlong>(this)); static bool nativeMethodsRegistered = false; if (!nativeMethodsRegistered) { - onRegisterNativeMethods(m_listener.object()); + onRegisterNativeMethods(d->listener.object()); nativeMethodsRegistered = true; } diff --git a/src/android/widget/qnativeandroidtabhost_p.h b/src/android/widget/qnativeandroidtabhost_p.h index ee98dbe..5b7295d 100644 --- a/src/android/widget/qnativeandroidtabhost_p.h +++ b/src/android/widget/qnativeandroidtabhost_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidTabHostPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidTabHost : public QNativeAndroidFrameLayout { Q_OBJECT @@ -70,7 +72,8 @@ protected: static void onTabChanged(JNIEnv *env, jobject object, jlong instance, jstring tabId); private: - QAndroidJniObject m_listener; + Q_DISABLE_COPY(QNativeAndroidTabHost) + Q_DECLARE_PRIVATE(QNativeAndroidTabHost) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidtabspec.cpp b/src/android/widget/qnativeandroidtabspec.cpp index bef07be..05756b1 100644 --- a/src/android/widget/qnativeandroidtabspec.cpp +++ b/src/android/widget/qnativeandroidtabspec.cpp @@ -39,11 +39,18 @@ #include "qnativeandroidview_p.h" #include "qtnativeandroidfunctions_p.h" #include <QtAndroidExtras/qandroidjniobject.h> +#include <QtCore/private/qobject_p.h> QT_BEGIN_NAMESPACE -QNativeAndroidTabSpec::QNativeAndroidTabSpec(QNativeAndroidView *view) : - QObject(view) +class QNativeAndroidTabSpecPrivate : public QObjectPrivate +{ +public: + QString label; +}; + +QNativeAndroidTabSpec::QNativeAndroidTabSpec(QNativeAndroidView *view) + : QObject(*(new QNativeAndroidTabSpecPrivate), view) { QNativeAndroidView *parent = qobject_cast<QNativeAndroidView *>(view->parent()); if (parent) @@ -60,13 +67,15 @@ QNativeAndroidTabSpec *QNativeAndroidTabSpec::qmlAttachedProperties(QObject *obj QString QNativeAndroidTabSpec::label() const { - return m_label; + Q_D(const QNativeAndroidTabSpec); + return d->label; } void QNativeAndroidTabSpec::setLabel(const QString &label) { - if (m_label != label) { - m_label = label; + Q_D(QNativeAndroidTabSpec); + if (d->label != label) { + d->label = label; // TODO: invalidate emit labelChanged(); } @@ -74,6 +83,7 @@ void QNativeAndroidTabSpec::setLabel(const QString &label) void QNativeAndroidTabSpec::setup(QAndroidJniObject &host, int index) { + Q_D(QNativeAndroidTabSpec); int id = -1; QNativeAndroidView *content = qobject_cast<QNativeAndroidView *>(parent()); if (content) @@ -86,7 +96,7 @@ void QNativeAndroidTabSpec::setup(QAndroidJniObject &host, int index) spec.callObjectMethod("setIndicator", "(Ljava/lang/CharSequence;)Landroid/widget/TabHost$TabSpec;", - QAndroidJniObject::fromString(m_label).object()); + QAndroidJniObject::fromString(d->label).object()); if (id != -1) { spec.callObjectMethod("setContent", diff --git a/src/android/widget/qnativeandroidtabspec_p.h b/src/android/widget/qnativeandroidtabspec_p.h index fdaebf1..dafeada 100644 --- a/src/android/widget/qnativeandroidtabspec_p.h +++ b/src/android/widget/qnativeandroidtabspec_p.h @@ -51,13 +51,14 @@ #include <QtNativeAndroid/private/qtnativeandroidglobal_p.h> #include <QtCore/qobject.h> -#include <QtAndroidExtras/qandroidjniobject.h> #include <QtQml/qqml.h> QT_BEGIN_NAMESPACE +class QAndroidJniObject; class QNativeAndroidView; class QNativeAndroidTabHost; +class QNativeAndroidTabSpecPrivate; class Q_NATIVEANDROID_EXPORT QNativeAndroidTabSpec : public QObject { @@ -78,7 +79,8 @@ Q_SIGNALS: void labelChanged(); private: - QString m_label; + Q_DISABLE_COPY(QNativeAndroidTabSpec) + Q_DECLARE_PRIVATE(QNativeAndroidTabSpec) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidtabwidget.cpp b/src/android/widget/qnativeandroidtabwidget.cpp index 86440a7..7579390 100644 --- a/src/android/widget/qnativeandroidtabwidget.cpp +++ b/src/android/widget/qnativeandroidtabwidget.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidTabWidget::QNativeAndroidTabWidget(QNativeAndroidContext *context) : - QNativeAndroidLinearLayout(context) +QNativeAndroidTabWidget::QNativeAndroidTabWidget(QNativeAndroidContext *context) + : QNativeAndroidLinearLayout(context) { setIdentifier(16908307); // TODO: android.R.id.tabs } diff --git a/src/android/widget/qnativeandroidtextview.cpp b/src/android/widget/qnativeandroidtextview.cpp index 0805571..a4a0d37 100644 --- a/src/android/widget/qnativeandroidtextview.cpp +++ b/src/android/widget/qnativeandroidtextview.cpp @@ -35,25 +35,33 @@ ****************************************************************************/ #include "qnativeandroidtextview_p.h" +#include "qnativeandroidtextview_p_p.h" #include "qtnativeandroidfunctions_p.h" #include "qnativeandroidcolor_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidTextView::QNativeAndroidTextView(QNativeAndroidContext *context) : - QNativeAndroidView(context), m_singleLine(false) +QNativeAndroidTextView::QNativeAndroidTextView(QNativeAndroidContext *context) + : QNativeAndroidView(*(new QNativeAndroidTextViewPrivate), context) +{ +} + +QNativeAndroidTextView::QNativeAndroidTextView(QNativeAndroidTextViewPrivate &dd, QNativeAndroidContext *context) + : QNativeAndroidView(dd, context) { } QString QNativeAndroidTextView::text() const { - return m_text; + Q_D(const QNativeAndroidTextView); + return d->text; } void QNativeAndroidTextView::setText(const QString &text) { - if (m_text != text) { - m_text = text; + Q_D(QNativeAndroidTextView); + if (d->text != text) { + d->text = text; QtNativeAndroid::callTextMethod(instance(), "setText", text); emit textChanged(); } @@ -61,15 +69,17 @@ void QNativeAndroidTextView::setText(const QString &text) int QNativeAndroidTextView::textColor() const { - if (m_textColor.isNull()) + Q_D(const QNativeAndroidTextView); + if (d->textColor.isNull()) return QNativeAndroidColor::BLACK; // TODO - return m_textColor; + return d->textColor; } void QNativeAndroidTextView::setTextColor(int color) { + Q_D(QNativeAndroidTextView); if (color != textColor()) { - m_textColor = color; + d->textColor = color; QtNativeAndroid::callIntMethod(instance(), "setTextColor", color); emit textColorChanged(); } @@ -77,15 +87,17 @@ void QNativeAndroidTextView::setTextColor(int color) qreal QNativeAndroidTextView::textSize() const { - if (m_textSize.isNull()) + Q_D(const QNativeAndroidTextView); + if (d->textSize.isNull()) return -1; - return m_textSize; + return d->textSize; } void QNativeAndroidTextView::setTextSize(qreal size) { + Q_D(QNativeAndroidTextView); if (size != textSize()) { - m_textSize = size; + d->textSize = size; QtNativeAndroid::callRealMethod(instance(), "setTextSize", size); emit textSizeChanged(); } @@ -93,13 +105,15 @@ void QNativeAndroidTextView::setTextSize(qreal size) QString QNativeAndroidTextView::hint() const { - return m_hint; + Q_D(const QNativeAndroidTextView); + return d->hint; } void QNativeAndroidTextView::setHint(const QString &hint) { - if (m_hint != hint) { - m_hint = hint; + Q_D(QNativeAndroidTextView); + if (d->hint != hint) { + d->hint = hint; QtNativeAndroid::callTextMethod(instance(), "setHint", hint); emit hintChanged(); } @@ -107,13 +121,15 @@ void QNativeAndroidTextView::setHint(const QString &hint) bool QNativeAndroidTextView::isSingleLine() const { - return m_singleLine; + Q_D(const QNativeAndroidTextView); + return d->singleLine; } void QNativeAndroidTextView::setSingleLine(bool singleLine) { - if (m_singleLine != singleLine) { - m_singleLine = singleLine; + Q_D(QNativeAndroidTextView); + if (d->singleLine != singleLine) { + d->singleLine = singleLine; QtNativeAndroid::callBoolMethod(instance(), "setSingleLine", singleLine); emit singleLineChanged(); } @@ -121,15 +137,17 @@ void QNativeAndroidTextView::setSingleLine(bool singleLine) int QNativeAndroidTextView::inputType() const { - if (m_inputType.isNull()) + Q_D(const QNativeAndroidTextView); + if (d->inputType.isNull()) return 0; // TODO - return m_inputType; + return d->inputType; } void QNativeAndroidTextView::setInputType(int type) { - if (m_inputType.isNull() || m_inputType != type) { - m_inputType = type; + Q_D(QNativeAndroidTextView); + if (d->inputType.isNull() || d->inputType != type) { + d->inputType = type; QtNativeAndroid::callIntMethod(instance(), "setInputType", type); emit inputTypeChanged(); } @@ -144,20 +162,21 @@ QAndroidJniObject QNativeAndroidTextView::onCreate() void QNativeAndroidTextView::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidTextView); QNativeAndroidView::onInflate(instance); - if (!m_text.isNull()) - instance.callMethod<void>("setText", "(Ljava/lang/CharSequence;)V", QAndroidJniObject::fromString(m_text).object()); - if (!m_textColor.isNull()) - instance.callMethod<void>("setTextColor", "(I)V", m_textColor); - if (!m_textSize.isNull()) - instance.callMethod<void>("setTextSize", "(F)V", m_textSize); - if (!m_hint.isNull()) - instance.callMethod<void>("setHint", "(Ljava/lang/CharSequence;)V", QAndroidJniObject::fromString(m_hint).object()); - if (m_singleLine) + if (!d->text.isNull()) + instance.callMethod<void>("setText", "(Ljava/lang/CharSequence;)V", QAndroidJniObject::fromString(d->text).object()); + if (!d->textColor.isNull()) + instance.callMethod<void>("setTextColor", "(I)V", d->textColor); + if (!d->textSize.isNull()) + instance.callMethod<void>("setTextSize", "(F)V", d->textSize); + if (!d->hint.isNull()) + instance.callMethod<void>("setHint", "(Ljava/lang/CharSequence;)V", QAndroidJniObject::fromString(d->hint).object()); + if (d->singleLine) instance.callMethod<void>("setSingleLine"); - if (!m_inputType.isNull()) - instance.callMethod<void>("setInputType", "(I)V", m_inputType); + if (!d->inputType.isNull()) + instance.callMethod<void>("setInputType", "(I)V", d->inputType); } QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidtextview_p.h b/src/android/widget/qnativeandroidtextview_p.h index c5089a5..01602b0 100644 --- a/src/android/widget/qnativeandroidtextview_p.h +++ b/src/android/widget/qnativeandroidtextview_p.h @@ -49,11 +49,12 @@ // #include <QtNativeAndroid/private/qnativeandroidview_p.h> -#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> #include <QtGui/qcolor.h> QT_BEGIN_NAMESPACE +class QNativeAndroidTextViewPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidTextView : public QNativeAndroidView { Q_OBJECT @@ -94,16 +95,14 @@ Q_SIGNALS: void inputTypeChanged(); protected: + QNativeAndroidTextView(QNativeAndroidTextViewPrivate &dd, QNativeAndroidContext *context = nullptr); + QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; private: - QString m_text; - QString m_hint; - QNativeAndroidOptional<int> m_textColor; - QNativeAndroidOptional<qreal> m_textSize; - bool m_singleLine; - QNativeAndroidOptional<int> m_inputType; + Q_DISABLE_COPY(QNativeAndroidTextView) + Q_DECLARE_PRIVATE(QNativeAndroidTextView) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidtextview_p_p.h b/src/android/widget/qnativeandroidtextview_p_p.h new file mode 100644 index 0000000..5bbf85c --- /dev/null +++ b/src/android/widget/qnativeandroidtextview_p_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** 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 QNATIVEANDROIDTEXTVIEW_P_P_H +#define QNATIVEANDROIDTEXTVIEW_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 <QtNativeAndroid/private/qnativeandroidview_p_p.h> +#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> + +QT_BEGIN_NAMESPACE + +class QNativeAndroidTextViewPrivate : public QNativeAndroidViewPrivate +{ +public: + QString text; + QString hint; + QNativeAndroidOptional<int> textColor; + QNativeAndroidOptional<qreal> textSize; + bool singleLine = false; + QNativeAndroidOptional<int> inputType; +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDTEXTVIEW_P_P_H diff --git a/src/android/widget/qnativeandroidtimepicker.cpp b/src/android/widget/qnativeandroidtimepicker.cpp index 8701f0c..3133ef4 100644 --- a/src/android/widget/qnativeandroidtimepicker.cpp +++ b/src/android/widget/qnativeandroidtimepicker.cpp @@ -35,11 +35,17 @@ ****************************************************************************/ #include "qnativeandroidtimepicker_p.h" +#include "qnativeandroidframelayout_p_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidTimePicker::QNativeAndroidTimePicker(QNativeAndroidContext *context) : - QNativeAndroidFrameLayout(context) +class QNativeAndroidTimePickerPrivate : public QNativeAndroidFrameLayoutPrivate +{ +public: +}; + +QNativeAndroidTimePicker::QNativeAndroidTimePicker(QNativeAndroidContext *context) + : QNativeAndroidFrameLayout(*(new QNativeAndroidTimePickerPrivate), context) { } diff --git a/src/android/widget/qnativeandroidtimepicker_p.h b/src/android/widget/qnativeandroidtimepicker_p.h index 10798a7..983692d 100644 --- a/src/android/widget/qnativeandroidtimepicker_p.h +++ b/src/android/widget/qnativeandroidtimepicker_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidTimePickerPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidTimePicker : public QNativeAndroidFrameLayout { Q_OBJECT @@ -62,6 +64,10 @@ public: protected: QAndroidJniObject onCreate() override; void onInflate(QAndroidJniObject &instance) override; + +private: + Q_DISABLE_COPY(QNativeAndroidTimePicker) + Q_DECLARE_PRIVATE(QNativeAndroidTimePicker) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidtoast.cpp b/src/android/widget/qnativeandroidtoast.cpp index 2c743dd..5750832 100644 --- a/src/android/widget/qnativeandroidtoast.cpp +++ b/src/android/widget/qnativeandroidtoast.cpp @@ -35,47 +35,61 @@ ****************************************************************************/ #include "qnativeandroidtoast_p.h" +#include "qnativeandroidobject_p_p.h" #include "qtnativeandroidfunctions_p.h" +#include "qnativeandroidoptional_p.h" #include "qnativeandroidview_p.h" #include <QtCore/qdebug.h> QT_BEGIN_NAMESPACE -QNativeAndroidToast::QNativeAndroidToast(QObject *parent) : - QNativeAndroidObject(parent) +class QNativeAndroidToastPrivate : public QNativeAndroidObjectPrivate +{ +public: + QString text; + QNativeAndroidOptional<int> gravity; +}; + +QNativeAndroidToast::QNativeAndroidToast(QObject *parent) + : QNativeAndroidObject(*(new QNativeAndroidToastPrivate), parent) { } QString QNativeAndroidToast::text() const { - return m_text; + Q_D(const QNativeAndroidToast); + return d->text; } void QNativeAndroidToast::setText(const QString &text) { - if (m_text != text) { - m_text = text; + Q_D(QNativeAndroidToast); + if (d->text != text) { + d->text = text; emit textChanged(); } } int QNativeAndroidToast::gravity() const { - if (m_gravity.isNull()) + Q_D(const QNativeAndroidToast); + if (d->gravity.isNull()) return 0; // TODO - return m_gravity; + return d->gravity; } void QNativeAndroidToast::setGravity(int value) { + Q_D(QNativeAndroidToast); if (value != gravity()) { - m_gravity = value; + d->gravity = value; emit gravityChanged(); } } void QNativeAndroidToast::show() { + Q_D(QNativeAndroidToast); QNativeAndroidView *view = qobject_cast<QNativeAndroidView *>(parent()); if (!view) { qWarning() << "Toast must be in a view."; @@ -90,12 +104,12 @@ void QNativeAndroidToast::show() QtNativeAndroid::callFunction([=]() { QAndroidJniObject toast; - if (!m_text.isNull()) { + if (!d->text.isNull()) { toast = QAndroidJniObject::callStaticObjectMethod("android/widget/Toast", "makeText", "(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;", ctx.object(), - QAndroidJniObject::fromString(m_text).object(), + QAndroidJniObject::fromString(d->text).object(), 0); // TODO: LENGTH_SHORT (0), LENGTH_LONG (1) } else { toast = QAndroidJniObject("android/widget/Toast", @@ -104,8 +118,8 @@ void QNativeAndroidToast::show() } inflate(toast); - if (!m_gravity.isNull()) - toast.callMethod<void>("setGravity", "(I)V", m_gravity); + if (!d->gravity.isNull()) + toast.callMethod<void>("setGravity", "(I)V", d->gravity); toast.callMethod<void>("show"); }); diff --git a/src/android/widget/qnativeandroidtoast_p.h b/src/android/widget/qnativeandroidtoast_p.h index c9037cf..d9f57a9 100644 --- a/src/android/widget/qnativeandroidtoast_p.h +++ b/src/android/widget/qnativeandroidtoast_p.h @@ -49,11 +49,11 @@ // #include <QtNativeAndroid/private/qnativeandroidobject_p.h> -#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> QT_BEGIN_NAMESPACE class QNativeAndroidView; +class QNativeAndroidToastPrivate; class Q_NATIVEANDROID_EXPORT QNativeAndroidToast : public QNativeAndroidObject { @@ -79,8 +79,8 @@ Q_SIGNALS: void gravityChanged(); private: - QString m_text; - QNativeAndroidOptional<int> m_gravity; + Q_DISABLE_COPY(QNativeAndroidToast) + Q_DECLARE_PRIVATE(QNativeAndroidToast) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidtogglebutton.cpp b/src/android/widget/qnativeandroidtogglebutton.cpp index b39d29d..f71b253 100644 --- a/src/android/widget/qnativeandroidtogglebutton.cpp +++ b/src/android/widget/qnativeandroidtogglebutton.cpp @@ -35,24 +35,34 @@ ****************************************************************************/ #include "qnativeandroidtogglebutton_p.h" +#include "qnativeandroidcompoundbutton_p_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidToggleButton::QNativeAndroidToggleButton(QNativeAndroidContext *context) : - QNativeAndroidCompoundButton(context) +class QNativeAndroidToggleButtonPrivate : public QNativeAndroidCompoundButtonPrivate +{ +public: + QString textOn; + QString textOff; +}; + +QNativeAndroidToggleButton::QNativeAndroidToggleButton(QNativeAndroidContext *context) + : QNativeAndroidCompoundButton(*(new QNativeAndroidToggleButtonPrivate), context) { } QString QNativeAndroidToggleButton::textOn() const { - return m_textOn; + Q_D(const QNativeAndroidToggleButton); + return d->textOn; } void QNativeAndroidToggleButton::setTextOn(const QString &text) { - if (m_textOn != text) { - m_textOn = text; + Q_D(QNativeAndroidToggleButton); + if (d->textOn != text) { + d->textOn = text; QtNativeAndroid::callTextMethod(instance(), "setTextOn", text); emit textOnChanged(); } @@ -60,13 +70,15 @@ void QNativeAndroidToggleButton::setTextOn(const QString &text) QString QNativeAndroidToggleButton::textOff() const { - return m_textOff; + Q_D(const QNativeAndroidToggleButton); + return d->textOff; } void QNativeAndroidToggleButton::setTextOff(const QString &text) { - if (m_textOff != text) { - m_textOff = text; + Q_D(QNativeAndroidToggleButton); + if (d->textOff != text) { + d->textOff = text; QtNativeAndroid::callTextMethod(instance(), "setTextOff", text); emit textOffChanged(); } @@ -81,12 +93,13 @@ QAndroidJniObject QNativeAndroidToggleButton::onCreate() void QNativeAndroidToggleButton::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidToggleButton); QNativeAndroidCompoundButton::onInflate(instance); - if (!m_textOn.isNull()) - instance.callMethod<void>("setTextOn", "(Ljava/lang/CharSequence;)V", QAndroidJniObject::fromString(m_textOn).object()); - if (!m_textOff.isNull()) - instance.callMethod<void>("setTextOff", "(Ljava/lang/CharSequence;)V", QAndroidJniObject::fromString(m_textOff).object()); + if (!d->textOn.isNull()) + instance.callMethod<void>("setTextOn", "(Ljava/lang/CharSequence;)V", QAndroidJniObject::fromString(d->textOn).object()); + if (!d->textOff.isNull()) + instance.callMethod<void>("setTextOff", "(Ljava/lang/CharSequence;)V", QAndroidJniObject::fromString(d->textOff).object()); } QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidtogglebutton_p.h b/src/android/widget/qnativeandroidtogglebutton_p.h index ad91ccd..8f8fd33 100644 --- a/src/android/widget/qnativeandroidtogglebutton_p.h +++ b/src/android/widget/qnativeandroidtogglebutton_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidToggleButtonPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidToggleButton : public QNativeAndroidCompoundButton { Q_OBJECT @@ -76,8 +78,8 @@ protected: void onInflate(QAndroidJniObject &instance) override; private: - QString m_textOn; - QString m_textOff; + Q_DISABLE_COPY(QNativeAndroidToggleButton) + Q_DECLARE_PRIVATE(QNativeAndroidToggleButton) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidviewanimator.cpp b/src/android/widget/qnativeandroidviewanimator.cpp index d42701c..3e2066d 100644 --- a/src/android/widget/qnativeandroidviewanimator.cpp +++ b/src/android/widget/qnativeandroidviewanimator.cpp @@ -35,26 +35,29 @@ ****************************************************************************/ #include "qnativeandroidviewanimator_p.h" +#include "qnativeandroidviewanimator_p_p.h" #include "qtnativeandroidfunctions_p.h" QT_BEGIN_NAMESPACE -QNativeAndroidViewAnimator::QNativeAndroidViewAnimator(QNativeAndroidContext *context) : - QNativeAndroidFrameLayout(context) +QNativeAndroidViewAnimator::QNativeAndroidViewAnimator(QNativeAndroidContext *context) + : QNativeAndroidFrameLayout(*(new QNativeAndroidViewAnimatorPrivate), context) { } int QNativeAndroidViewAnimator::displayedChild() const { - if (m_displayedChild.isNull()) + Q_D(const QNativeAndroidViewAnimator); + if (d->displayedChild.isNull()) return 0; - return m_displayedChild; + return d->displayedChild; } void QNativeAndroidViewAnimator::setDisplayedChild(int child) { + Q_D(QNativeAndroidViewAnimator); if (child != displayedChild()) { - m_displayedChild = child; + d->displayedChild = child; QtNativeAndroid::callIntMethod(instance(), "setDisplayedChild", child); emit displayedChildChanged(); } @@ -62,15 +65,17 @@ void QNativeAndroidViewAnimator::setDisplayedChild(int child) int QNativeAndroidViewAnimator::inAnimation() const { - if (m_inAnimation.isNull()) + Q_D(const QNativeAndroidViewAnimator); + if (d->inAnimation.isNull()) return -1; - return m_inAnimation; + return d->inAnimation; } void QNativeAndroidViewAnimator::setInAnimation(int animation) { + Q_D(QNativeAndroidViewAnimator); if (animation != inAnimation()) { - m_inAnimation = animation; + d->inAnimation = animation; if (instance().isValid()) { QtNativeAndroid::callFunction([=]() { instance().callMethod<void>("setInAnimation", "(Landroid/content/Context;I)V", ctx().object(), animation); @@ -83,15 +88,17 @@ void QNativeAndroidViewAnimator::setInAnimation(int animation) int QNativeAndroidViewAnimator::outAnimation() const { - if (m_outAnimation.isNull()) + Q_D(const QNativeAndroidViewAnimator); + if (d->outAnimation.isNull()) return -1; - return m_outAnimation; + return d->outAnimation; } void QNativeAndroidViewAnimator::setOutAnimation(int animation) { + Q_D(QNativeAndroidViewAnimator); if (animation != outAnimation()) { - m_outAnimation = animation; + d->outAnimation = animation; if (instance().isValid()) { QtNativeAndroid::callFunction([=]() { instance().callMethod<void>("setOutAnimation", "(Landroid/content/Context;I)V", ctx().object(), animation); @@ -121,14 +128,15 @@ QAndroidJniObject QNativeAndroidViewAnimator::onCreate() void QNativeAndroidViewAnimator::onInflate(QAndroidJniObject &instance) { + Q_D(QNativeAndroidViewAnimator); QNativeAndroidFrameLayout::onInflate(instance); - if (!m_displayedChild.isNull()) - instance.callMethod<void>("setDisplayedChild", "(I)V", m_displayedChild); - if (!m_inAnimation.isNull()) - instance.callMethod<void>("setInAnimation", "(Landroid/content/Context;I)V", ctx().object(), m_inAnimation); - if (!m_outAnimation.isNull()) - instance.callMethod<void>("setOutAnimation", "(Landroid/content/Context;I)V", ctx().object(), m_outAnimation); + if (!d->displayedChild.isNull()) + instance.callMethod<void>("setDisplayedChild", "(I)V", d->displayedChild); + if (!d->inAnimation.isNull()) + instance.callMethod<void>("setInAnimation", "(Landroid/content/Context;I)V", ctx().object(), d->inAnimation); + if (!d->outAnimation.isNull()) + instance.callMethod<void>("setOutAnimation", "(Landroid/content/Context;I)V", ctx().object(), d->outAnimation); } QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidviewanimator_p.h b/src/android/widget/qnativeandroidviewanimator_p.h index 3bd250e..e7813df 100644 --- a/src/android/widget/qnativeandroidviewanimator_p.h +++ b/src/android/widget/qnativeandroidviewanimator_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QNativeAndroidViewAnimatorPrivate; + class Q_NATIVEANDROID_EXPORT QNativeAndroidViewAnimator : public QNativeAndroidFrameLayout { Q_OBJECT @@ -85,9 +87,8 @@ protected: void onInflate(QAndroidJniObject &instance) override; private: - QNativeAndroidOptional<int> m_displayedChild; - QNativeAndroidOptional<int> m_inAnimation; - QNativeAndroidOptional<int> m_outAnimation; + Q_DISABLE_COPY(QNativeAndroidViewAnimator) + Q_DECLARE_PRIVATE(QNativeAndroidViewAnimator) }; QT_END_NAMESPACE diff --git a/src/android/widget/qnativeandroidviewanimator_p_p.h b/src/android/widget/qnativeandroidviewanimator_p_p.h new file mode 100644 index 0000000..93bea01 --- /dev/null +++ b/src/android/widget/qnativeandroidviewanimator_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 QNATIVEANDROIDVIEWANIMATOR_P_P_H +#define QNATIVEANDROIDVIEWANIMATOR_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 <QtNativeAndroid/private/qnativeandroidframelayout_p_p.h> +#include <QtNativeAndroid/private/qnativeandroidoptional_p.h> + +QT_BEGIN_NAMESPACE + +class QNativeAndroidViewAnimatorPrivate : public QNativeAndroidFrameLayoutPrivate +{ +public: + QNativeAndroidOptional<int> displayedChild; + QNativeAndroidOptional<int> inAnimation; + QNativeAndroidOptional<int> outAnimation; +}; + +QT_END_NAMESPACE + +#endif // QNATIVEANDROIDVIEWANIMATOR_P_P_H diff --git a/src/android/widget/qnativeandroidviewflipper.cpp b/src/android/widget/qnativeandroidviewflipper.cpp index fa46eef..1037fcc 100644 --- a/src/android/widget/qnativeandroidviewflipper.cpp +++ b/src/android/widget/qnativeandroidviewflipper.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidViewFlipper::QNativeAndroidViewFlipper(QNativeAndroidContext *context) : - QNativeAndroidViewAnimator(context) +QNativeAndroidViewFlipper::QNativeAndroidViewFlipper(QNativeAndroidContext *context) + : QNativeAndroidViewAnimator(context) { } diff --git a/src/android/widget/qnativeandroidviewswitcher.cpp b/src/android/widget/qnativeandroidviewswitcher.cpp index e12811a..09dc325 100644 --- a/src/android/widget/qnativeandroidviewswitcher.cpp +++ b/src/android/widget/qnativeandroidviewswitcher.cpp @@ -38,8 +38,8 @@ QT_BEGIN_NAMESPACE -QNativeAndroidViewSwitcher::QNativeAndroidViewSwitcher(QNativeAndroidContext *context) : - QNativeAndroidViewAnimator(context) +QNativeAndroidViewSwitcher::QNativeAndroidViewSwitcher(QNativeAndroidContext *context) + : QNativeAndroidViewAnimator(context) { } diff --git a/src/android/widget/widget.pri b/src/android/widget/widget.pri index d19b477..661f1f6 100644 --- a/src/android/widget/widget.pri +++ b/src/android/widget/widget.pri @@ -2,19 +2,26 @@ INCLUDEPATH += $$PWD HEADERS += \ $$PWD/qnativeandroidabsseekbar_p.h \ + $$PWD/qnativeandroidabsseekbar_p_p.h \ $$PWD/qnativeandroidadapterview_p.h \ + $$PWD/qnativeandroidadapterview_p_p.h \ $$PWD/qnativeandroidarrayadapter_p.h \ $$PWD/qnativeandroidbaseadapter_p.h \ + $$PWD/qnativeandroidbaseadapter_p_p.h \ $$PWD/qnativeandroidbutton_p.h \ + $$PWD/qnativeandroidbutton_p_p.h \ $$PWD/qnativeandroidcalendarview_p.h \ $$PWD/qnativeandroidcheckbox_p.h \ $$PWD/qnativeandroidcompoundbutton_p.h \ + $$PWD/qnativeandroidcompoundbutton_p_p.h \ $$PWD/qnativeandroiddatepicker_p.h \ $$PWD/qnativeandroidedittext_p.h \ $$PWD/qnativeandroidframelayout_p.h \ + $$PWD/qnativeandroidframelayout_p_p.h \ $$PWD/qnativeandroidframelayoutparams_p.h \ $$PWD/qnativeandroidimageview_p.h \ $$PWD/qnativeandroidlinearlayout_p.h \ + $$PWD/qnativeandroidlinearlayout_p_p.h \ $$PWD/qnativeandroidlinearlayoutparams_p.h \ $$PWD/qnativeandroidlistview_p.h \ $$PWD/qnativeandroidmarginlayoutparams_p.h \ @@ -22,6 +29,7 @@ HEADERS += \ $$PWD/qnativeandroidnumberpicker_p.h \ $$PWD/qnativeandroidpopupmenu_p.h \ $$PWD/qnativeandroidprogressbar_p.h \ + $$PWD/qnativeandroidprogressbar_p_p.h \ $$PWD/qnativeandroidradiobutton_p.h \ $$PWD/qnativeandroidradiogroup_p.h \ $$PWD/qnativeandroidratingbar_p.h \ @@ -37,10 +45,12 @@ HEADERS += \ $$PWD/qnativeandroidtabspec_p.h \ $$PWD/qnativeandroidtabwidget_p.h \ $$PWD/qnativeandroidtextview_p.h \ + $$PWD/qnativeandroidtextview_p_p.h \ $$PWD/qnativeandroidtimepicker_p.h \ $$PWD/qnativeandroidtoast_p.h \ $$PWD/qnativeandroidtogglebutton_p.h \ $$PWD/qnativeandroidviewanimator_p.h \ + $$PWD/qnativeandroidviewanimator_p_p.h \ $$PWD/qnativeandroidviewflipper_p.h \ $$PWD/qnativeandroidviewswitcher_p.h |