From ae271cbe7867f8eec9d8382e91d4c026453fb1de Mon Sep 17 00:00:00 2001 From: Sami Kananoja Date: Wed, 28 Sep 2011 11:16:51 +0300 Subject: [PATCH] QInputPanel exposed as a property from QDeclarativeApplication Task-number: QTBUG-21449 Change-Id: I437f80f4d1f0dbb3cb410940213eae50a4cef2cd Reviewed-on: http://codereview.qt-project.org/5852 Sanity-Review: Qt Sanity Bot Reviewed-by: Lars Knoll --- src/declarative/qml/qdeclarativeengine.cpp | 7 +++++++ src/declarative/util/qdeclarativeapplication.cpp | 6 ++++++ src/declarative/util/qdeclarativeapplication_p.h | 2 ++ src/declarative/util/qdeclarativeutilmodule.cpp | 3 ++- .../tst_qdeclarativeapplication.cpp | 15 +++++++++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 1794dbe..5231704 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -286,6 +286,13 @@ of their use. \o Qt.RightToLeft - Text and graphics elements should be positioned from right to left. \endlist + + \row + \o \c application.inputPanel + \o + This read-only property allows access to application's QInputPanel object + and all its properties and slots. See the QInputPanel documentation for + further details. \endtable The following example uses the \c application object to indicate diff --git a/src/declarative/util/qdeclarativeapplication.cpp b/src/declarative/util/qdeclarativeapplication.cpp index e03dce7..765f8dd 100644 --- a/src/declarative/util/qdeclarativeapplication.cpp +++ b/src/declarative/util/qdeclarativeapplication.cpp @@ -42,6 +42,7 @@ #include "qdeclarativeapplication_p.h" #include #include +#include QT_BEGIN_NAMESPACE @@ -82,6 +83,11 @@ Qt::LayoutDirection QDeclarativeApplication::layoutDirection() const return d->layoutDirection; } +QObject *QDeclarativeApplication::inputPanel() const +{ + return qApp ? qApp->inputPanel() : 0; +} + bool QDeclarativeApplication::eventFilter(QObject *obj, QEvent *event) { Q_UNUSED(obj) diff --git a/src/declarative/util/qdeclarativeapplication_p.h b/src/declarative/util/qdeclarativeapplication_p.h index 448d319..aa51085 100644 --- a/src/declarative/util/qdeclarativeapplication_p.h +++ b/src/declarative/util/qdeclarativeapplication_p.h @@ -58,12 +58,14 @@ class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeApplication : public QObject Q_OBJECT Q_PROPERTY(bool active READ active NOTIFY activeChanged) Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection NOTIFY layoutDirectionChanged) + Q_PROPERTY(QObject *inputPanel READ inputPanel CONSTANT) public: explicit QDeclarativeApplication(QObject *parent = 0); virtual ~QDeclarativeApplication(); bool active() const; Qt::LayoutDirection layoutDirection() const; + QObject *inputPanel() const; protected: bool eventFilter(QObject *obj, QEvent *event); diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp index 9012769..18fefa4 100644 --- a/src/declarative/util/qdeclarativeutilmodule.cpp +++ b/src/declarative/util/qdeclarativeutilmodule.cpp @@ -66,6 +66,7 @@ #include "private/qdeclarativexmllistmodel_p.h" #endif #include +#include void QDeclarativeUtilModule::registerBaseTypes(const char *uri, int versionMajor, int versionMinor) { @@ -76,7 +77,7 @@ void QDeclarativeUtilModule::registerBaseTypes(const char *uri, int versionMajor void QDeclarativeUtilModule::defineModule() { qmlRegisterUncreatableType("QtQuick",2,0,"Application", QDeclarativeApplication::tr("Application is an abstract class")); - + qmlRegisterUncreatableType("QtQuick",2,0,"InputPanel", QInputPanel::tr("InputPanel is an abstract class")); qmlRegisterUncreatableType("QtQuick",2,0,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class")); qmlRegisterType("QtQuick",2,0,"Behavior"); diff --git a/tests/auto/declarative/qdeclarativeapplication/tst_qdeclarativeapplication.cpp b/tests/auto/declarative/qdeclarativeapplication/tst_qdeclarativeapplication.cpp index 9bdf9c1..6c0d354 100644 --- a/tests/auto/declarative/qdeclarativeapplication/tst_qdeclarativeapplication.cpp +++ b/tests/auto/declarative/qdeclarativeapplication/tst_qdeclarativeapplication.cpp @@ -45,6 +45,7 @@ #include #include #include +#include class tst_qdeclarativeapplication : public QObject { @@ -55,6 +56,7 @@ public: private slots: void active(); void layoutDirection(); + void inputPanel(); private: QDeclarativeEngine engine; @@ -120,6 +122,19 @@ void tst_qdeclarativeapplication::layoutDirection() QCOMPARE(Qt::LayoutDirection(item->property("layoutDirection").toInt()), Qt::LeftToRight); } +void tst_qdeclarativeapplication::inputPanel() +{ + QDeclarativeComponent component(&engine); + component.setData("import QtQuick 2.0; Item { property variant inputPanel: Qt.application.inputPanel }", QUrl::fromLocalFile("")); + QSGItem *item = qobject_cast(component.create()); + QVERIFY(item); + QSGView view; + item->setParentItem(view.rootObject()); + + // check that the inputPanel property maches with application's input panel + QCOMPARE(qvariant_cast(item->property("inputPanel")), qApp->inputPanel()); +} + QTEST_MAIN(tst_qdeclarativeapplication) #include "tst_qdeclarativeapplication.moc" -- 2.7.4