diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-03-05 01:15:40 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-03-05 01:15:40 (GMT) |
commit | 1cdaca2823a7c09f377ab205e6424e35febcbf2c (patch) | |
tree | 559c1f8c8ea2109945580fe118a6aa213c1eb349 /src/imports/widgets/widgets.cpp | |
parent | 8a026d93a76a61415b4d697991cdd8aee6b76cb9 (diff) | |
parent | 5048b96a14b61329257e153f2551b6fca4519f84 (diff) | |
download | Qt-1cdaca2823a7c09f377ab205e6424e35febcbf2c.zip Qt-1cdaca2823a7c09f377ab205e6424e35febcbf2c.tar.gz Qt-1cdaca2823a7c09f377ab205e6424e35febcbf2c.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-qml: (104 commits)
Include QML doc snippets in examples autotest
Update QML documentation snippets to latest syntax.
MouseRegion is dead. Long live MouseArea.
Compile fix for wince
Update QML PropertyAnimation::easing docs
Add testcase for QTBUG-7730
Add autotests for tab and backtab in Keys and KeyNavigation.
Run signal expressions on attached property objects in correct scope
Fixup test
Add support for tab and backtab in KeyNavigation
Mark QGraphicsItem position properties as FINAL
Move the multimedia files to the correct place.
Fix grammar stringifying "on" as "readonly"
Improve grouped property error messages
Don't mess with highlight size if highlightFollowsCurrentItem is false.
Fix ListView contentHeight calculation.
Remove Qt.playSound()
Add formatting functions to QML's global Qt object.
Signal handler requires exactly one value.
QDeclarativeContext::contextProperty() should also access ids
...
Diffstat (limited to 'src/imports/widgets/widgets.cpp')
-rw-r--r-- | src/imports/widgets/widgets.cpp | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/src/imports/widgets/widgets.cpp b/src/imports/widgets/widgets.cpp new file mode 100644 index 0000000..ec21cc4 --- /dev/null +++ b/src/imports/widgets/widgets.cpp @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtDeclarative/qdeclarativeextensionplugin.h> +#include <QtDeclarative/qdeclarative.h> + +#include "graphicslayouts_p.h" +#include "graphicswidgets_p.h" + +QT_BEGIN_NAMESPACE + +class QGraphicsViewDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QGraphicsScene *scene READ scene WRITE setScene) + Q_CLASSINFO("DefaultProperty", "scene") +public: + QGraphicsViewDeclarativeUI(QObject *other) : QObject(other) {} + + QGraphicsScene *scene() const { return static_cast<QGraphicsView *>(parent())->scene(); } + void setScene(QGraphicsScene *scene) + { + static_cast<QGraphicsView *>(parent())->setScene(scene); + } +}; + +class QGraphicsSceneDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QDeclarativeListProperty<QObject> children READ children) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsSceneDeclarativeUI(QObject *other) : QObject(other) {} + + QDeclarativeListProperty<QObject> children() { return QDeclarativeListProperty<QObject>(this->parent(), 0, children_append); } + +private: + static void children_append(QDeclarativeListProperty<QObject> *prop, QObject *o) { + if (QGraphicsObject *go = qobject_cast<QGraphicsObject *>(o)) + static_cast<QGraphicsScene *>(prop->object)->addItem(go); + } +}; + +class QGraphicsWidgetDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QDeclarativeListProperty<QGraphicsItem> children READ children) + Q_PROPERTY(QGraphicsLayout *layout READ layout WRITE setLayout) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsWidgetDeclarativeUI(QObject *other) : QObject(other) {} + + QDeclarativeListProperty<QGraphicsItem> children() { return QDeclarativeListProperty<QGraphicsItem>(this, 0, children_append); } + + QGraphicsLayout *layout() const { return static_cast<QGraphicsWidget *>(parent())->layout(); } + void setLayout(QGraphicsLayout *lo) + { + static_cast<QGraphicsWidget *>(parent())->setLayout(lo); + } + +private: + void setItemParent(QGraphicsItem *wid) + { + wid->setParentItem(static_cast<QGraphicsWidget *>(parent())); + } + + static void children_append(QDeclarativeListProperty<QGraphicsItem> *prop, QGraphicsItem *i) { + static_cast<QGraphicsWidgetDeclarativeUI*>(prop->object)->setItemParent(i); + } +}; + +class QWidgetsQmlModule : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.widgets")); + + QML_REGISTER_INTERFACE(QGraphicsLayoutItem); + QML_REGISTER_INTERFACE(QGraphicsLayout); + qmlRegisterType<QGraphicsLinearLayoutStretchItemObject>(uri,4,6,"QGraphicsLinearLayoutStretchItem"); + qmlRegisterType<QGraphicsLinearLayoutObject>(uri,4,6,"QGraphicsLinearLayout"); + qmlRegisterType<QGraphicsGridLayoutObject>(uri,4,6,"QGraphicsGridLayout"); + qmlRegisterExtendedType<QGraphicsView, QGraphicsViewDeclarativeUI>(uri,4,6,"QGraphicsView"); + qmlRegisterExtendedType<QGraphicsScene,QGraphicsSceneDeclarativeUI>(uri,4,6,"QGraphicsScene"); + qmlRegisterExtendedType<QGraphicsWidget,QGraphicsWidgetDeclarativeUI>(uri,4,6,"QGraphicsWidget"); + QML_REGISTER_INTERFACE(QGraphicsItem); + } +}; + +QT_END_NAMESPACE + +#include "widgets.moc" + +Q_EXPORT_PLUGIN2(qtwidgetsqmlmodule, QT_PREPEND_NAMESPACE(QWidgetsQmlModule)); + |