From 857f7d6505a570d5cbb307763e17784a1cc730ec Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 30 Aug 2011 17:34:39 +0200 Subject: [PATCH 01/68] Add an abstraction layer for the qml designer The Qml Designer for Qt4 is using private headers but this broke very often because nobody outside of the designer team was aware of it. This is an attempt to define a clear interface which the designer is using. Change-Id: I9ad2db234043da8e787024d3c2d346356bbbef47 Reviewed-on: http://codereview.qt.nokia.com/3608 Reviewed-by: Qt Sanity Bot Reviewed-by: Aaron Kennedy --- src/declarative/declarative.pro | 1 + src/declarative/designer/designer.pri | 2 + src/declarative/designer/designersupport.cpp | 406 +++++++++++++++++++ src/declarative/designer/designersupport.h | 149 +++++++ 4 files changed, 558 insertions(+) create mode 100644 src/declarative/designer/designer.pri create mode 100644 src/declarative/designer/designersupport.cpp create mode 100644 src/declarative/designer/designersupport.h diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro index 5e50fa57f5..4d550e481a 100644 --- a/src/declarative/declarative.pro +++ b/src/declarative/declarative.pro @@ -32,6 +32,7 @@ include(debugger/debugger.pri) include(scenegraph/scenegraph.pri) include(items/items.pri) include(particles/particles.pri) +include(designer/designer.pri) symbian: { TARGET.UID3=0x2001E623 diff --git a/src/declarative/designer/designer.pri b/src/declarative/designer/designer.pri new file mode 100644 index 0000000000..c523525977 --- /dev/null +++ b/src/declarative/designer/designer.pri @@ -0,0 +1,2 @@ +HEADERS += designer/designersupport.h +SOURCES += designer/designersupport.cpp diff --git a/src/declarative/designer/designersupport.cpp b/src/declarative/designer/designersupport.cpp new file mode 100644 index 0000000000..824642a989 --- /dev/null +++ b/src/declarative/designer/designersupport.cpp @@ -0,0 +1,406 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module 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 "designersupport.h" +#include "qsgitem_p.h" + +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +DesignerSupport::DesignerSupport() +{ +} + +DesignerSupport::~DesignerSupport() +{ + QHash::iterator iterator; + + for (iterator = m_itemTextureHash.begin(); iterator != m_itemTextureHash.end(); ++iterator) { + QSGShaderEffectTexture *texture = iterator.value(); + QSGItem *item = iterator.key(); + QSGItemPrivate::get(item)->derefFromEffectItem(true); + delete texture; + } +} + +void DesignerSupport::refFromEffectItem(QSGItem *referencedItem, bool hide) +{ + if (referencedItem == 0) + return; + + QSGItemPrivate::get(referencedItem)->refFromEffectItem(hide); + QSGCanvasPrivate::get(referencedItem->canvas())->updateDirtyNode(referencedItem); + + Q_ASSERT(QSGItemPrivate::get(referencedItem)->rootNode); + + if (!m_itemTextureHash.contains(referencedItem)) { + QSGShaderEffectTexture *texture = new QSGShaderEffectTexture(referencedItem); + + texture->setLive(true); + texture->setItem(QSGItemPrivate::get(referencedItem)->rootNode); + texture->setRect(referencedItem->boundingRect()); + texture->setSize(referencedItem->boundingRect().size().toSize()); + texture->setRecursive(true); + texture->setFormat(GL_RGBA8); + texture->setHasMipmaps(false); + + m_itemTextureHash.insert(referencedItem, texture); + } +} + +void DesignerSupport::derefFromEffectItem(QSGItem *referencedItem, bool unhide) +{ + if (referencedItem == 0) + return; + + delete m_itemTextureHash.take(referencedItem); + QSGItemPrivate::get(referencedItem)->derefFromEffectItem(unhide); +} + +QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem) +{ + if (referencedItem == 0 || referencedItem->parentItem() == 0) { + qDebug() << __FILE__ << __LINE__ << "Warning: Item can be rendered."; + return QImage(); + } + + QSGShaderEffectTexture *renderTexture = m_itemTextureHash.value(referencedItem); + + Q_ASSERT(renderTexture); + if (renderTexture == 0) + return QImage(); + renderTexture->setRect(referencedItem->boundingRect()); + renderTexture->setSize(referencedItem->boundingRect().size().toSize()); + renderTexture->updateTexture(); + + QImage renderImage = renderTexture->toImage(); + renderImage = renderImage.mirrored(false, true); + + if (renderImage.size().isEmpty()) + qDebug() << __FILE__ << __LINE__ << "Warning: Image is empty."; + + qDebug() << __FUNCTION__ << renderImage.size(); + + return renderImage; +} + +bool DesignerSupport::isDirty(QSGItem *referencedItem, DirtyType dirtyType) +{ + if (referencedItem == 0) + return false; + + return QSGItemPrivate::get(referencedItem)->dirtyAttributes & dirtyType; +} + +void DesignerSupport::resetDirty(QSGItem *referencedItem) +{ + if (referencedItem == 0) + return; + + QSGItemPrivate::get(referencedItem)->dirtyAttributes = 0x0; + QSGItemPrivate::get(referencedItem)->removeFromDirtyList(); +} + +QTransform DesignerSupport::canvasTransform(QSGItem *referencedItem) +{ + if (referencedItem == 0) + return QTransform(); + + return QSGItemPrivate::get(referencedItem)->itemToCanvasTransform(); +} + +QTransform DesignerSupport::parentTransform(QSGItem *referencedItem) +{ + if (referencedItem == 0) + return QTransform(); + + QTransform parentTransform; + + QSGItemPrivate::get(referencedItem)->itemToParentTransform(parentTransform); + + return parentTransform; +} + +QString propertyNameForAnchorLine(const QSGAnchorLine::AnchorLine &anchorLine) +{ + switch (anchorLine) { + case QSGAnchorLine::Left: return QLatin1String("left"); + case QSGAnchorLine::Right: return QLatin1String("right"); + case QSGAnchorLine::Top: return QLatin1String("top"); + case QSGAnchorLine::Bottom: return QLatin1String("bottom"); + case QSGAnchorLine::HCenter: return QLatin1String("horizontalCenter"); + case QSGAnchorLine::VCenter: return QLatin1String("verticalCenter"); + case QSGAnchorLine::Baseline: return QLatin1String("baseline"); + case QSGAnchorLine::Invalid: + default: return QString(); + } +} + +bool isValidAnchorName(const QString &name) +{ + static QStringList anchorNameList(QStringList() << QLatin1String("anchors.top") + << QLatin1String("anchors.left") + << QLatin1String("anchors.right") + << QLatin1String("anchors.bottom") + << QLatin1String("anchors.verticalCenter") + << QLatin1String("anchors.horizontalCenter") + << QLatin1String("anchors.fill") + << QLatin1String("anchors.centerIn") + << QLatin1String("anchors.baseline")); + + return anchorNameList.contains(name); +} + +bool DesignerSupport::isAnchoredTo(QSGItem *fromItem, QSGItem *toItem) +{ + Q_ASSERT(dynamic_cast(QSGItemPrivate::get(fromItem))); + QSGItemPrivate *fromItemPrivate = static_cast(QSGItemPrivate::get(fromItem)); + QSGAnchors *anchors = fromItemPrivate->anchors(); + return anchors->fill() == toItem + || anchors->centerIn() == toItem + || anchors->bottom().item == toItem + || anchors->top().item == toItem + || anchors->left().item == toItem + || anchors->right().item == toItem + || anchors->verticalCenter().item == toItem + || anchors->horizontalCenter().item == toItem + || anchors->baseline().item == toItem; +} + +bool DesignerSupport::areChildrenAnchoredTo(QSGItem *fromItem, QSGItem *toItem) +{ + foreach (QSGItem *childItem, fromItem->childItems()) { + if (childItem) { + if (isAnchoredTo(childItem, toItem)) + return true; + + if (areChildrenAnchoredTo(childItem, toItem)) + return true; + } + } + + return false; +} + +QSGAnchors *anchors(QSGItem *item) +{ + QSGItemPrivate *itemPrivate = static_cast(QSGItemPrivate::get(item)); + return itemPrivate->anchors(); +} + +QSGAnchors::Anchor anchorLineFlagForName(const QString &name) +{ + if (name == QLatin1String("anchors.top")) + return QSGAnchors::TopAnchor; + + if (name == QLatin1String("anchors.left")) + return QSGAnchors::LeftAnchor; + + if (name == QLatin1String("anchors.bottom")) + return QSGAnchors::BottomAnchor; + + if (name == QLatin1String("anchors.right")) + return QSGAnchors::RightAnchor; + + if (name == QLatin1String("anchors.horizontalCenter")) + return QSGAnchors::HCenterAnchor; + + if (name == QLatin1String("anchors.verticalCenter")) + return QSGAnchors::VCenterAnchor; + + if (name == QLatin1String("anchors.baseline")) + return QSGAnchors::BaselineAnchor; + + + Q_ASSERT_X(false, Q_FUNC_INFO, "wrong anchor name - this should never happen"); + return QSGAnchors::LeftAnchor; +} + +bool DesignerSupport::hasAnchor(QSGItem *item, const QString &name) +{ + if (!isValidAnchorName(name)) + return false; + + if (name == QLatin1String("anchors.fill")) + return anchors(item)->fill() != 0; + + if (name == QLatin1String("anchors.centerIn")) + return anchors(item)->centerIn() != 0; + + if (name == QLatin1String("anchors.right")) + return anchors(item)->right().item != 0; + + if (name == QLatin1String("anchors.top")) + return anchors(item)->top().item != 0; + + if (name == QLatin1String("anchors.left")) + return anchors(item)->left().item != 0; + + if (name == QLatin1String("anchors.bottom")) + return anchors(item)->bottom().item != 0; + + if (name == QLatin1String("anchors.horizontalCenter")) + return anchors(item)->horizontalCenter().item != 0; + + if (name == QLatin1String("anchors.verticalCenter")) + return anchors(item)->verticalCenter().item != 0; + + if (name == QLatin1String("anchors.baseline")) + return anchors(item)->baseline().item != 0; + + return anchors(item)->usedAnchors().testFlag(anchorLineFlagForName(name)); +} + +QSGItem *DesignerSupport::anchorFillTargetItem(QSGItem *item) +{ + return anchors(item)->fill(); +} + +QSGItem *DesignerSupport::anchorCenterInTargetItem(QSGItem *item) +{ + return anchors(item)->centerIn(); +} + + + +QPair DesignerSupport::anchorLineTarget(QSGItem *item, const QString &name, QDeclarativeContext *context) +{ + QObject *targetObject = 0; + QString targetName; + + if (name == QLatin1String("anchors.fill")) { + targetObject = anchors(item)->fill(); + } else if (name == QLatin1String("anchors.centerIn")) { + targetObject = anchors(item)->centerIn(); + } else { + QDeclarativeProperty metaProperty(item, name, context); + if (!metaProperty.isValid()) + return QPair(); + + QSGAnchorLine anchorLine = metaProperty.read().value(); + if (anchorLine.anchorLine != QSGAnchorLine::Invalid) { + targetObject = anchorLine.item; + targetName = propertyNameForAnchorLine(anchorLine.anchorLine); + } + + } + + return QPair(targetName, targetObject); +} + +void DesignerSupport::resetAnchor(QSGItem *item, const QString &name) +{ + if (name == QLatin1String("anchors.fill")) { + anchors(item)->resetFill(); + } else if (name == QLatin1String("anchors.centerIn")) { + anchors(item)->resetCenterIn(); + } else if (name == QLatin1String("anchors.top")) { + anchors(item)->resetTop(); + } else if (name == QLatin1String("anchors.left")) { + anchors(item)->resetLeft(); + } else if (name == QLatin1String("anchors.right")) { + anchors(item)->resetRight(); + } else if (name == QLatin1String("anchors.bottom")) { + anchors(item)->resetBottom(); + } else if (name == QLatin1String("anchors.horizontalCenter")) { + anchors(item)->resetHorizontalCenter(); + } else if (name == QLatin1String("anchors.verticalCenter")) { + anchors(item)->resetVerticalCenter(); + } else if (name == QLatin1String("anchors.baseline")) { + anchors(item)->resetBaseline(); + } +} + +QList DesignerSupport::statesForItem(QSGItem *item) +{ + QList objectList; + QList stateList = QSGItemPrivate::get(item)->_states()->states(); + qCopy(stateList.begin(), stateList.end(), objectList.begin()); + + return objectList; +} + +bool DesignerSupport::isComponentComplete(QSGItem *item) +{ + return static_cast(QSGItemPrivate::get(item))->componentComplete; +} + +int DesignerSupport::borderWidth(QSGItem *item) +{ + QSGRectangle *rectangle = qobject_cast(item); + if (rectangle) + return rectangle->border()->width(); + + return 0; +} + +void DesignerSupport::refreshExpressions(QDeclarativeContext *context) +{ + QDeclarativeContextPrivate::get(context)->data->refreshExpressions(); +} + +void DesignerSupport::setRootItem(QSGView *view, QSGItem *item) +{ + QSGViewPrivate::get(view)->setRootObject(item); +} + +bool DesignerSupport::isValidWidth(QSGItem *item) +{ + return QSGItemPrivate::get(item)->heightValid; +} + +bool DesignerSupport::isValidHeight(QSGItem *item) +{ + return QSGItemPrivate::get(item)->widthValid; +} + +void DesignerSupport::updateDirtyNode(QSGItem *item) +{ + QSGCanvasPrivate::get(item->canvas())->updateDirtyNode(item); +} + +QT_END_NAMESPACE diff --git a/src/declarative/designer/designersupport.h b/src/declarative/designer/designersupport.h new file mode 100644 index 0000000000..0165769506 --- /dev/null +++ b/src/declarative/designer/designersupport.h @@ -0,0 +1,149 @@ +// Commit: +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module 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$ +** +****************************************************************************/ + +#ifndef DESIGNERSUPPORT_H +#define DESIGNERSUPPORT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + + +#include +#include + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QSGItem; +class QSGShaderEffectTexture; +class QImage; +class QTransform; +class QDeclarativeContext; +class QSGView; + + +class Q_DECLARATIVE_EXPORT DesignerSupport +{ +public: + enum DirtyType { + TransformOrigin = 0x00000001, + Transform = 0x00000002, + BasicTransform = 0x00000004, + Position = 0x00000008, + Size = 0x00000010, + + ZValue = 0x00000020, + Content = 0x00000040, + Smooth = 0x00000080, + OpacityValue = 0x00000100, + ChildrenChanged = 0x00000200, + ChildrenStackingChanged = 0x00000400, + ParentChanged = 0x00000800, + + Clip = 0x00001000, + Canvas = 0x00002000, + + EffectReference = 0x00008000, + Visible = 0x00010000, + HideReference = 0x00020000, + + TransformUpdateMask = TransformOrigin | Transform | BasicTransform | Position | Size | Canvas, + ComplexTransformUpdateMask = Transform | Canvas, + ContentUpdateMask = Size | Content | Smooth | Canvas, + ChildrenUpdateMask = ChildrenChanged | ChildrenStackingChanged | EffectReference | Canvas + }; + + + DesignerSupport(); + ~DesignerSupport(); + + void refFromEffectItem(QSGItem *referencedItem, bool hide = true); + void derefFromEffectItem(QSGItem *referencedItem, bool unhide = true); + + QImage renderImageForItem(QSGItem *referencedItem); + + static bool isDirty(QSGItem *referencedItem, DirtyType dirtyType); + static void resetDirty(QSGItem *referencedItem); + + static QTransform canvasTransform(QSGItem *referencedItem); + static QTransform parentTransform(QSGItem *referencedItem); + + static bool isAnchoredTo(QSGItem *fromItem, QSGItem *toItem); + static bool areChildrenAnchoredTo(QSGItem *fromItem, QSGItem *toItem); + static bool hasAnchor(QSGItem *item, const QString &name); + static QSGItem *anchorFillTargetItem(QSGItem *item); + static QSGItem *anchorCenterInTargetItem(QSGItem *item); + static QPair anchorLineTarget(QSGItem *item, const QString &name, QDeclarativeContext *context); + static void resetAnchor(QSGItem *item, const QString &name); + + + static QList statesForItem(QSGItem *item); + + static bool isComponentComplete(QSGItem *item); + + static int borderWidth(QSGItem *item); + + static void refreshExpressions(QDeclarativeContext *context); + + static void setRootItem(QSGView *view, QSGItem *item); + + static bool isValidWidth(QSGItem *item); + static bool isValidHeight(QSGItem *item); + + static void updateDirtyNode(QSGItem *item); + +private: + QHash m_itemTextureHash; +}; + +QT_END_NAMESPACE + +#endif // DESIGNERSUPPORT_H From 463d765e6f7e77c921440bfe76fd246771192f8b Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 09:05:00 +0200 Subject: [PATCH 02/68] Autotests: Silence gdb warning about deprecated conversion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix "warning: deprecated conversion from string constant to ‘char*" Change-Id: Ie8a4b0caba351e5920cc7d3249ee023bfe7675bc Reviewed-on: http://codereview.qt.nokia.com/3934 Reviewed-by: Qt Sanity Bot Reviewed-by: Aurindam Jana --- .../declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp | 3 ++- .../qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp | 3 ++- .../qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp index b47579ea6a..a5a500979f 100644 --- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp +++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp @@ -1209,7 +1209,8 @@ int main(int argc, char *argv[]) char **_argv = new char*[_argc]; for (int i = 0; i < argc; ++i) _argv[i] = argv[i]; - _argv[_argc - 1] = "-qmljsdebugger=port:3768"; + char arg[] = "-qmljsdebugger=port:3768"; + _argv[_argc - 1] = arg; QApplication app(_argc, _argv); tst_QDeclarativeDebug tc; diff --git a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp index d7f53c9620..2ad50b1025 100644 --- a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp +++ b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp @@ -144,7 +144,8 @@ int main(int argc, char *argv[]) char **_argv = new char*[_argc]; for (int i = 0; i < argc; ++i) _argv[i] = argv[i]; - _argv[_argc - 1] = "-qmljsdebugger=port:13770"; + char arg[] = "-qmljsdebugger=port:13770"; + _argv[_argc - 1] = arg; QApplication app(_argc, _argv); tst_QDeclarativeDebugClient tc; diff --git a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp index 74f549c076..3a285e0452 100644 --- a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp +++ b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp @@ -189,7 +189,8 @@ int main(int argc, char *argv[]) char **_argv = new char*[_argc]; for (int i = 0; i < argc; ++i) _argv[i] = argv[i]; - _argv[_argc - 1] = "-qmljsdebugger=port:13769"; + char arg[] = "-qmljsdebugger=port:13769"; + _argv[_argc - 1] = arg; QApplication app(_argc, _argv); tst_QDeclarativeDebugService tc; From 0f56ed1162ac8d5256692766edb47c49ea283e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 31 Aug 2011 13:50:21 +0200 Subject: [PATCH 03/68] Fix build with Clang We have to qualify calls to baseclass functions in templates. See: http://clang.llvm.org/compatibility.html#dep_lookup_bases Change-Id: If779f1789d269f20a0255d63b1a7d6b9fef0118e Reviewed-on: http://codereview.qt.nokia.com/3961 Reviewed-by: Kent Hansen Reviewed-by: Qt Sanity Bot --- src/declarative/qml/qdeclarativevme.cpp | 2 +- src/declarative/qml/v8/qscripttools_p.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp index bf290869b4..0e04f2b43a 100644 --- a/src/declarative/qml/qdeclarativevme.cpp +++ b/src/declarative/qml/qdeclarativevme.cpp @@ -1128,7 +1128,7 @@ void QDeclarativeVMEStack::push(const T &o) { Q_ASSERT(_index <= VLA::size()); if (_index == VLA::size()) - append(o); + this->append(o); else VLA::data()[_index] = o; } diff --git a/src/declarative/qml/v8/qscripttools_p.h b/src/declarative/qml/v8/qscripttools_p.h index c8dace0b9f..a718691556 100644 --- a/src/declarative/qml/v8/qscripttools_p.h +++ b/src/declarative/qml/v8/qscripttools_p.h @@ -51,7 +51,7 @@ public: template void QScriptIntrusiveList::insert(N *n) { - Q_ASSERT_X(!contains(n), Q_FUNC_INFO, "Can't insert a value which is in the list already"); + Q_ASSERT_X(!this->contains(n), Q_FUNC_INFO, "Can't insert a value which is in the list already"); Q_ASSERT_X(!(n->*member).isInList(), Q_FUNC_INFO, "Can't insert a value which is in another list"); QIntrusiveList::insert(n); } @@ -59,7 +59,7 @@ void QScriptIntrusiveList::insert(N *n) template void QScriptIntrusiveList::remove(N *n) { - Q_ASSERT_X(contains(n), Q_FUNC_INFO, "Can't remove a value which is not in the list"); + Q_ASSERT_X(this->contains(n), Q_FUNC_INFO, "Can't remove a value which is not in the list"); QIntrusiveList::remove(n); } From 8804ec49bda8672c5700ab843f2958c3d2bd8e41 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Tue, 30 Aug 2011 17:21:30 +0200 Subject: [PATCH 04/68] Rename QDeclarativeEngineDebugServer to ~Service And fix the file names/location, too Change-Id: If2d5ec0896332896ad11af748ec8f75c39e1555c Reviewed-on: http://codereview.qt.nokia.com/3890 Reviewed-by: Qt Sanity Bot Reviewed-by: Kai Koehne --- src/declarative/debugger/debugger.pri | 6 +- .../debugger/qdeclarativedebug.cpp | 16 ++--- .../qdeclarativeenginedebugservice.cpp} | 60 +++++++++---------- .../qdeclarativeenginedebugservice_p.h} | 20 +++---- src/declarative/qml/qdeclarativecomponent.cpp | 4 +- src/declarative/qml/qdeclarativeengine.cpp | 8 +-- src/declarative/qml/qml.pri | 2 - .../tst_qdeclarativedebug.cpp | 1 - .../tst_qdeclarativedebugclient.cpp | 1 - .../tst_qdeclarativedebugservice.cpp | 1 - 10 files changed, 58 insertions(+), 61 deletions(-) rename src/declarative/{qml/qdeclarativeenginedebug.cpp => debugger/qdeclarativeenginedebugservice.cpp} (90%) rename src/declarative/{qml/qdeclarativeenginedebug_p.h => debugger/qdeclarativeenginedebugservice_p.h} (88%) diff --git a/src/declarative/debugger/debugger.pri b/src/declarative/debugger/debugger.pri index e7462d4e78..8124774761 100644 --- a/src/declarative/debugger/debugger.pri +++ b/src/declarative/debugger/debugger.pri @@ -10,7 +10,8 @@ SOURCES += \ $$PWD/qdeclarativedebughelper.cpp \ $$PWD/qdeclarativedebugserver.cpp \ $$PWD/qdeclarativeinspectorservice.cpp \ - $$PWD/qv8debugservice.cpp + $$PWD/qv8debugservice.cpp \ + $$PWD/qdeclarativeenginedebugservice.cpp HEADERS += \ $$PWD/qdeclarativedebuggerstatus_p.h \ @@ -25,4 +26,5 @@ HEADERS += \ $$PWD/qdeclarativedebugserverconnection_p.h \ $$PWD/qdeclarativeinspectorservice_p.h \ $$PWD/qdeclarativeinspectorinterface_p.h \ - $$PWD/qv8debugservice_p.h + $$PWD/qv8debugservice_p.h \ + $$PWD/qdeclarativeenginedebugservice_p.h diff --git a/src/declarative/debugger/qdeclarativedebug.cpp b/src/declarative/debugger/qdeclarativedebug.cpp index 620ee1d66a..17bd5534ab 100644 --- a/src/declarative/debugger/qdeclarativedebug.cpp +++ b/src/declarative/debugger/qdeclarativedebug.cpp @@ -43,7 +43,7 @@ #include "private/qdeclarativedebugclient_p.h" -#include +#include #include @@ -207,7 +207,7 @@ void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclara void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugObjectReference &o, bool simple) { - QDeclarativeEngineDebugServer::QDeclarativeObjectData data; + QDeclarativeEngineDebugService::QDeclarativeObjectData data; ds >> data; o.m_debugId = data.objectId; o.m_class = data.objectType; @@ -234,7 +234,7 @@ void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugOb ds >> propCount; for (int ii = 0; ii < propCount; ++ii) { - QDeclarativeEngineDebugServer::QDeclarativeObjectProperty data; + QDeclarativeEngineDebugService::QDeclarativeObjectProperty data; ds >> data; QDeclarativeDebugPropertyReference prop; prop.m_objectDebugId = o.m_debugId; @@ -243,21 +243,21 @@ void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugOb prop.m_hasNotifySignal = data.hasNotifySignal; prop.m_valueTypeName = data.valueTypeName; switch (data.type) { - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::Basic: - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::List: - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::SignalProperty: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Basic: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::List: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::SignalProperty: { prop.m_value = data.value; break; } - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::Object: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Object: { QDeclarativeDebugObjectReference obj; obj.m_debugId = prop.m_value.toInt(); prop.m_value = QVariant::fromValue(obj); break; } - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::Unknown: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Unknown: break; } o.m_properties << prop; diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/debugger/qdeclarativeenginedebugservice.cpp similarity index 90% rename from src/declarative/qml/qdeclarativeenginedebug.cpp rename to src/declarative/debugger/qdeclarativeenginedebugservice.cpp index 6c605cbc2b..2e5683c753 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/debugger/qdeclarativeenginedebugservice.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "private/qdeclarativeenginedebug_p.h" +#include "private/qdeclarativeenginedebugservice_p.h" #include "private/qdeclarativeboundsignal_p.h" #include "qdeclarativeengine.h" @@ -59,14 +59,14 @@ QT_BEGIN_NAMESPACE -Q_GLOBAL_STATIC(QDeclarativeEngineDebugServer, qmlEngineDebugServer); +Q_GLOBAL_STATIC(QDeclarativeEngineDebugService, qmlEngineDebugService); -QDeclarativeEngineDebugServer *QDeclarativeEngineDebugServer::instance() +QDeclarativeEngineDebugService *QDeclarativeEngineDebugService::instance() { - return qmlEngineDebugServer(); + return qmlEngineDebugService(); } -QDeclarativeEngineDebugServer::QDeclarativeEngineDebugServer(QObject *parent) +QDeclarativeEngineDebugService::QDeclarativeEngineDebugService(QObject *parent) : QDeclarativeDebugService(QLatin1String("QDeclarativeEngine"), parent), m_watch(new QDeclarativeWatcher(this)) { @@ -75,7 +75,7 @@ QDeclarativeEngineDebugServer::QDeclarativeEngineDebugServer(QObject *parent) } QDataStream &operator<<(QDataStream &ds, - const QDeclarativeEngineDebugServer::QDeclarativeObjectData &data) + const QDeclarativeEngineDebugService::QDeclarativeObjectData &data) { ds << data.url << data.lineNumber << data.columnNumber << data.idString << data.objectName << data.objectType << data.objectId << data.contextId; @@ -83,7 +83,7 @@ QDataStream &operator<<(QDataStream &ds, } QDataStream &operator>>(QDataStream &ds, - QDeclarativeEngineDebugServer::QDeclarativeObjectData &data) + QDeclarativeEngineDebugService::QDeclarativeObjectData &data) { ds >> data.url >> data.lineNumber >> data.columnNumber >> data.idString >> data.objectName >> data.objectType >> data.objectId >> data.contextId; @@ -91,7 +91,7 @@ QDataStream &operator>>(QDataStream &ds, } QDataStream &operator<<(QDataStream &ds, - const QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &data) + const QDeclarativeEngineDebugService::QDeclarativeObjectProperty &data) { ds << (int)data.type << data.name << data.value << data.valueTypeName << data.binding << data.hasNotifySignal; @@ -99,12 +99,12 @@ QDataStream &operator<<(QDataStream &ds, } QDataStream &operator>>(QDataStream &ds, - QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &data) + QDeclarativeEngineDebugService::QDeclarativeObjectProperty &data) { int type; ds >> type >> data.name >> data.value >> data.valueTypeName >> data.binding >> data.hasNotifySignal; - data.type = (QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::Type)type; + data.type = (QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Type)type; return ds; } @@ -131,8 +131,8 @@ static bool hasValidSignal(QObject *object, const QString &propertyName) return true; } -QDeclarativeEngineDebugServer::QDeclarativeObjectProperty -QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) +QDeclarativeEngineDebugService::QDeclarativeObjectProperty +QDeclarativeEngineDebugService::propertyData(QObject *obj, int propIdx) { QDeclarativeObjectProperty rv; @@ -164,7 +164,7 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) return rv; } -QVariant QDeclarativeEngineDebugServer::valueContents(const QVariant &value) const +QVariant QDeclarativeEngineDebugService::valueContents(const QVariant &value) const { int userType = value.userType(); @@ -193,7 +193,7 @@ QVariant QDeclarativeEngineDebugServer::valueContents(const QVariant &value) con return QLatin1String(""); } -void QDeclarativeEngineDebugServer::buildObjectDump(QDataStream &message, +void QDeclarativeEngineDebugService::buildObjectDump(QDataStream &message, QObject *object, bool recur, bool dumpProperties) { message << objectData(object); @@ -264,7 +264,7 @@ void QDeclarativeEngineDebugServer::buildObjectDump(QDataStream &message, message << fakeProperties[ii]; } -void QDeclarativeEngineDebugServer::prepareDeferredObjects(QObject *obj) +void QDeclarativeEngineDebugService::prepareDeferredObjects(QObject *obj) { qmlExecuteDeferred(obj); @@ -276,7 +276,7 @@ void QDeclarativeEngineDebugServer::prepareDeferredObjects(QObject *obj) } -void QDeclarativeEngineDebugServer::buildObjectList(QDataStream &message, QDeclarativeContext *ctxt) +void QDeclarativeEngineDebugService::buildObjectList(QDataStream &message, QDeclarativeContext *ctxt) { QDeclarativeContextData *p = QDeclarativeContextData::get(ctxt); @@ -316,7 +316,7 @@ void QDeclarativeEngineDebugServer::buildObjectList(QDataStream &message, QDecla } } -void QDeclarativeEngineDebugServer::buildStatesList(QDeclarativeContext *ctxt, bool cleanList=false) +void QDeclarativeEngineDebugService::buildStatesList(QDeclarativeContext *ctxt, bool cleanList=false) { if (cleanList) m_allStates.clear(); @@ -333,7 +333,7 @@ void QDeclarativeEngineDebugServer::buildStatesList(QDeclarativeContext *ctxt, b } } -void QDeclarativeEngineDebugServer::buildStatesList(QObject *obj) +void QDeclarativeEngineDebugService::buildStatesList(QObject *obj) { if (QDeclarativeState *state = qobject_cast(obj)) { m_allStates.append(state); @@ -345,8 +345,8 @@ void QDeclarativeEngineDebugServer::buildStatesList(QObject *obj) } } -QDeclarativeEngineDebugServer::QDeclarativeObjectData -QDeclarativeEngineDebugServer::objectData(QObject *object) +QDeclarativeEngineDebugService::QDeclarativeObjectData +QDeclarativeEngineDebugService::objectData(QObject *object) { QDeclarativeData *ddata = QDeclarativeData::get(object); QDeclarativeObjectData rv; @@ -385,7 +385,7 @@ QDeclarativeEngineDebugServer::objectData(QObject *object) return rv; } -void QDeclarativeEngineDebugServer::messageReceived(const QByteArray &message) +void QDeclarativeEngineDebugService::messageReceived(const QByteArray &message) { QDataStream ds(message); @@ -545,7 +545,7 @@ void QDeclarativeEngineDebugServer::messageReceived(const QByteArray &message) } } -void QDeclarativeEngineDebugServer::setBinding(int objectId, +void QDeclarativeEngineDebugService::setBinding(int objectId, const QString &propertyName, const QVariant &expression, bool isLiteralValue, @@ -600,7 +600,7 @@ void QDeclarativeEngineDebugServer::setBinding(int objectId, oldBinding->destroy(); binding->update(); } else { - qWarning() << "QDeclarativeEngineDebugServer::setBinding: unable to set property" << propertyName << "on object" << object; + qWarning() << "QDeclarativeEngineDebugService::setBinding: unable to set property" << propertyName << "on object" << object; } } @@ -613,13 +613,13 @@ void QDeclarativeEngineDebugServer::setBinding(int objectId, propertyChanges->changeExpression(propertyName, expression.toString()); } } else { - qWarning() << "QDeclarativeEngineDebugServer::setBinding: unable to set property" << propertyName << "on object" << object; + qWarning() << "QDeclarativeEngineDebugService::setBinding: unable to set property" << propertyName << "on object" << object; } } } } -void QDeclarativeEngineDebugServer::resetBinding(int objectId, const QString &propertyName) +void QDeclarativeEngineDebugService::resetBinding(int objectId, const QString &propertyName) { QObject *object = objectForId(objectId); QDeclarativeContext *context = qmlContext(object); @@ -664,7 +664,7 @@ void QDeclarativeEngineDebugServer::resetBinding(int objectId, const QString &pr } } -void QDeclarativeEngineDebugServer::setMethodBody(int objectId, const QString &method, const QString &body) +void QDeclarativeEngineDebugService::setMethodBody(int objectId, const QString &method, const QString &body) { QObject *object = objectForId(objectId); QDeclarativeContext *context = qmlContext(object); @@ -703,7 +703,7 @@ void QDeclarativeEngineDebugServer::setMethodBody(int objectId, const QString &m vmeMetaObject->setVmeMethod(prop->coreIndex, QDeclarativeExpressionPrivate::evalFunction(contextData, object, jsfunction, contextData->url.toString(), lineNumber)); } -void QDeclarativeEngineDebugServer::propertyChanged(int id, int objectId, const QMetaProperty &property, const QVariant &value) +void QDeclarativeEngineDebugService::propertyChanged(int id, int objectId, const QMetaProperty &property, const QVariant &value) { QByteArray reply; QDataStream rs(&reply, QIODevice::WriteOnly); @@ -713,7 +713,7 @@ void QDeclarativeEngineDebugServer::propertyChanged(int id, int objectId, const sendMessage(reply); } -void QDeclarativeEngineDebugServer::addEngine(QDeclarativeEngine *engine) +void QDeclarativeEngineDebugService::addEngine(QDeclarativeEngine *engine) { Q_ASSERT(engine); Q_ASSERT(!m_engines.contains(engine)); @@ -721,7 +721,7 @@ void QDeclarativeEngineDebugServer::addEngine(QDeclarativeEngine *engine) m_engines.append(engine); } -void QDeclarativeEngineDebugServer::remEngine(QDeclarativeEngine *engine) +void QDeclarativeEngineDebugService::remEngine(QDeclarativeEngine *engine) { Q_ASSERT(engine); Q_ASSERT(m_engines.contains(engine)); @@ -729,7 +729,7 @@ void QDeclarativeEngineDebugServer::remEngine(QDeclarativeEngine *engine) m_engines.removeAll(engine); } -void QDeclarativeEngineDebugServer::objectCreated(QDeclarativeEngine *engine, QObject *object) +void QDeclarativeEngineDebugService::objectCreated(QDeclarativeEngine *engine, QObject *object) { Q_ASSERT(engine); Q_ASSERT(m_engines.contains(engine)); diff --git a/src/declarative/qml/qdeclarativeenginedebug_p.h b/src/declarative/debugger/qdeclarativeenginedebugservice_p.h similarity index 88% rename from src/declarative/qml/qdeclarativeenginedebug_p.h rename to src/declarative/debugger/qdeclarativeenginedebugservice_p.h index 804a043635..3674b83fe7 100644 --- a/src/declarative/qml/qdeclarativeenginedebug_p.h +++ b/src/declarative/debugger/qdeclarativeenginedebugservice_p.h @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#ifndef QDECLARATIVEENGINEDEBUG_P_H -#define QDECLARATIVEENGINEDEBUG_P_H +#ifndef QDECLARATIVEENGINEDEBUGSERVICE_P_H +#define QDECLARATIVEENGINEDEBUGSERVICE_P_H // // W A R N I N G @@ -67,11 +67,11 @@ class QDeclarativeWatcher; class QDataStream; class QDeclarativeState; -class QDeclarativeEngineDebugServer : public QDeclarativeDebugService +class QDeclarativeEngineDebugService : public QDeclarativeDebugService { Q_OBJECT public: - QDeclarativeEngineDebugServer(QObject * = 0); + QDeclarativeEngineDebugService(QObject * = 0); struct QDeclarativeObjectData { QUrl url; @@ -98,7 +98,7 @@ public: void remEngine(QDeclarativeEngine *); void objectCreated(QDeclarativeEngine *, QObject *); - static QDeclarativeEngineDebugServer *instance(); + static QDeclarativeEngineDebugService *instance(); protected: virtual void messageReceived(const QByteArray &); @@ -123,12 +123,12 @@ private: QDeclarativeWatcher *m_watch; QList > m_allStates; }; -Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugServer::QDeclarativeObjectData &); -Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugServer::QDeclarativeObjectData &); -Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &); -Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &); +Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugService::QDeclarativeObjectData &); +Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugService::QDeclarativeObjectData &); +Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugService::QDeclarativeObjectProperty &); +Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugService::QDeclarativeObjectProperty &); QT_END_NAMESPACE -#endif // QDECLARATIVEENGINEDEBUG_P_H +#endif // QDECLARATIVEENGINEDEBUGSERVICE_P_H diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 49aa6d99b6..c7bc2cdd91 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -53,7 +53,7 @@ #include "private/qdeclarativeglobal_p.h" #include "private/qdeclarativescript_p.h" #include "private/qdeclarativedebugtrace_p.h" -#include "private/qdeclarativeenginedebug_p.h" +#include "private/qdeclarativeenginedebugservice_p.h" #include "private/qv8engine_p.h" #include "private/qv8include_p.h" @@ -952,7 +952,7 @@ QObject * QDeclarativeComponentPrivate::begin(QDeclarativeContextData *parentCon if (enginePriv->isDebugging && rv) { if (!parentContext->isInternal) parentContext->asQDeclarativeContextPrivate()->instances.append(rv); - QDeclarativeEngineDebugServer::instance()->objectCreated(parentContext->engine, rv); + QDeclarativeEngineDebugService::instance()->objectCreated(parentContext->engine, rv); if (isRoot) { QDeclarativeDebugTrace::rangeData(QDeclarativeDebugTrace::Creating, buildTypeNameForDebug(rv->metaObject())); QDeclarativeData *data = QDeclarativeData::get(rv); diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 7e8f93e202..fa7854b456 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -50,7 +50,7 @@ #include "qdeclarativecomponent.h" #include "private/qdeclarativebinding_p_p.h" #include "private/qdeclarativevme_p.h" -#include "private/qdeclarativeenginedebug_p.h" +#include "private/qdeclarativeenginedebugservice_p.h" #include "private/qdeclarativestringconverters_p.h" #include "private/qdeclarativexmlhttprequest_p.h" #include "private/qdeclarativesqldatabase_p.h" @@ -448,9 +448,9 @@ void QDeclarativeEnginePrivate::init() rootContext = new QDeclarativeContext(q,true); if (QCoreApplication::instance()->thread() == q->thread() && - QDeclarativeEngineDebugServer::isDebuggingEnabled()) { + QDeclarativeEngineDebugService::isDebuggingEnabled()) { isDebugging = true; - QDeclarativeEngineDebugServer::instance()->addEngine(q); + QDeclarativeEngineDebugService::instance()->addEngine(q); QV8DebugService::instance()->addEngine(q); } } @@ -515,7 +515,7 @@ QDeclarativeEngine::~QDeclarativeEngine() { Q_D(QDeclarativeEngine); if (d->isDebugging) - QDeclarativeEngineDebugServer::instance()->remEngine(this); + QDeclarativeEngineDebugService::instance()->remEngine(this); // if we are the parent of any of the qobject module api instances, // we need to remove them from our internal list, in order to prevent diff --git a/src/declarative/qml/qml.pri b/src/declarative/qml/qml.pri index 7ef28c0231..61e3aa3ab9 100644 --- a/src/declarative/qml/qml.pri +++ b/src/declarative/qml/qml.pri @@ -23,7 +23,6 @@ SOURCES += \ $$PWD/qdeclarativeinfo.cpp \ $$PWD/qdeclarativeerror.cpp \ $$PWD/qdeclarativescript.cpp \ - $$PWD/qdeclarativeenginedebug.cpp \ $$PWD/qdeclarativerewrite.cpp \ $$PWD/qdeclarativevaluetype.cpp \ $$PWD/qdeclarativefastproperties.cpp \ @@ -81,7 +80,6 @@ HEADERS += \ $$PWD/qdeclarativedata_p.h \ $$PWD/qdeclarativeerror.h \ $$PWD/qdeclarativescript_p.h \ - $$PWD/qdeclarativeenginedebug_p.h \ $$PWD/qdeclarativerewrite_p.h \ $$PWD/qdeclarativevaluetype_p.h \ $$PWD/qdeclarativefastproperties_p.h \ diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp index a5a500979f..632c404f86 100644 --- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp +++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp @@ -54,7 +54,6 @@ #include #include -#include #include #include #include diff --git a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp index 2ad50b1025..ea7104f168 100644 --- a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp +++ b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp @@ -48,7 +48,6 @@ #include #include -#include #include #include "../../../shared/util.h" diff --git a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp index 3a285e0452..286b2589e6 100644 --- a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp +++ b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp @@ -48,7 +48,6 @@ #include #include -#include #include #include From a07f68eff5ac4696a551f083d186a685f7ef043d Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 09:12:39 +0200 Subject: [PATCH 05/68] Debugger: Rename qdeclarativedebug* to qdeclarativeenginedebug* Change-Id: I0c289bdf555aa317dc12c5dbcff0168ebcc7bd50 Reviewed-on: http://codereview.qt.nokia.com/3935 Reviewed-by: Qt Sanity Bot Reviewed-by: Aurindam Jana --- src/declarative/debugger/debugger.pri | 4 ++-- .../{qdeclarativedebug.cpp => qdeclarativeenginedebug.cpp} | 2 +- .../{qdeclarativedebug_p.h => qdeclarativeenginedebug_p.h} | 6 +++--- .../declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp | 2 +- .../qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp | 3 --- .../tst_qdeclarativedebugservice.cpp | 1 - 6 files changed, 7 insertions(+), 11 deletions(-) rename src/declarative/debugger/{qdeclarativedebug.cpp => qdeclarativeenginedebug.cpp} (99%) rename src/declarative/debugger/{qdeclarativedebug_p.h => qdeclarativeenginedebug_p.h} (99%) diff --git a/src/declarative/debugger/debugger.pri b/src/declarative/debugger/debugger.pri index 8124774761..f2790c4ecd 100644 --- a/src/declarative/debugger/debugger.pri +++ b/src/declarative/debugger/debugger.pri @@ -5,7 +5,7 @@ SOURCES += \ $$PWD/qpacketprotocol.cpp \ $$PWD/qdeclarativedebugservice.cpp \ $$PWD/qdeclarativedebugclient.cpp \ - $$PWD/qdeclarativedebug.cpp \ + $$PWD/qdeclarativeenginedebug.cpp \ $$PWD/qdeclarativedebugtrace.cpp \ $$PWD/qdeclarativedebughelper.cpp \ $$PWD/qdeclarativedebugserver.cpp \ @@ -19,7 +19,7 @@ HEADERS += \ $$PWD/qdeclarativedebugservice_p.h \ $$PWD/qdeclarativedebugservice_p_p.h \ $$PWD/qdeclarativedebugclient_p.h \ - $$PWD/qdeclarativedebug_p.h \ + $$PWD/qdeclarativeenginedebug_p.h \ $$PWD/qdeclarativedebugtrace_p.h \ $$PWD/qdeclarativedebughelper_p.h \ $$PWD/qdeclarativedebugserver_p.h \ diff --git a/src/declarative/debugger/qdeclarativedebug.cpp b/src/declarative/debugger/qdeclarativeenginedebug.cpp similarity index 99% rename from src/declarative/debugger/qdeclarativedebug.cpp rename to src/declarative/debugger/qdeclarativeenginedebug.cpp index 17bd5534ab..85ce7108dd 100644 --- a/src/declarative/debugger/qdeclarativedebug.cpp +++ b/src/declarative/debugger/qdeclarativeenginedebug.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "private/qdeclarativedebug_p.h" +#include "private/qdeclarativeenginedebug_p.h" #include "private/qdeclarativedebugclient_p.h" diff --git a/src/declarative/debugger/qdeclarativedebug_p.h b/src/declarative/debugger/qdeclarativeenginedebug_p.h similarity index 99% rename from src/declarative/debugger/qdeclarativedebug_p.h rename to src/declarative/debugger/qdeclarativeenginedebug_p.h index f822637eb4..9b70e1c6bc 100644 --- a/src/declarative/debugger/qdeclarativedebug_p.h +++ b/src/declarative/debugger/qdeclarativeenginedebug_p.h @@ -38,8 +38,8 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef QDECLARATIVEDEBUG_H -#define QDECLARATIVEDEBUG_H +#ifndef QDECLARATIVEENGINEDEBUG_H +#define QDECLARATIVEENGINEDEBUG_H #include #include @@ -384,4 +384,4 @@ Q_DECLARE_METATYPE(QDeclarativeDebugPropertyReference) QT_END_HEADER -#endif // QDECLARATIVEDEBUG_H +#endif // QDECLARATIVEENGINEDEBUG_H diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp index 632c404f86..f4170eacb8 100644 --- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp +++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp @@ -53,7 +53,7 @@ #include #include -#include +#include #include #include #include diff --git a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp index ea7104f168..41486877d6 100644 --- a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp +++ b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp @@ -47,9 +47,6 @@ #include -#include -#include - #include "../../../shared/util.h" #include "../shared/debugutil_p.h" diff --git a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp index 286b2589e6..d849ad2a79 100644 --- a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp +++ b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp @@ -47,7 +47,6 @@ #include -#include #include #include From 8801dd4f173a4e7676400dd18d76d89dfe3b3791 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 31 Aug 2011 18:29:13 +0200 Subject: [PATCH 06/68] Add bounding rectangle for rendering images in designer support Elements can be outside the root items bounding rectange. So we compute the bounding rectangle of an item and its children on the designer side. We exclude all children which are the designer created. Change-Id: I3c4f9ca5291c8f65e3670be1fd0900edf449b46f Reviewed-on: http://codereview.qt.nokia.com/3963 Reviewed-by: Thomas Hartmann --- src/declarative/designer/designersupport.cpp | 8 +++----- src/declarative/designer/designersupport.h | 3 ++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/declarative/designer/designersupport.cpp b/src/declarative/designer/designersupport.cpp index 824642a989..91186a4a2e 100644 --- a/src/declarative/designer/designersupport.cpp +++ b/src/declarative/designer/designersupport.cpp @@ -101,7 +101,7 @@ void DesignerSupport::derefFromEffectItem(QSGItem *referencedItem, bool unhide) QSGItemPrivate::get(referencedItem)->derefFromEffectItem(unhide); } -QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem) +QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem, const QRectF &boundingRect, const QSize &imageSize) { if (referencedItem == 0 || referencedItem->parentItem() == 0) { qDebug() << __FILE__ << __LINE__ << "Warning: Item can be rendered."; @@ -113,8 +113,8 @@ QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem) Q_ASSERT(renderTexture); if (renderTexture == 0) return QImage(); - renderTexture->setRect(referencedItem->boundingRect()); - renderTexture->setSize(referencedItem->boundingRect().size().toSize()); + renderTexture->setRect(boundingRect); + renderTexture->setSize(imageSize); renderTexture->updateTexture(); QImage renderImage = renderTexture->toImage(); @@ -123,8 +123,6 @@ QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem) if (renderImage.size().isEmpty()) qDebug() << __FILE__ << __LINE__ << "Warning: Image is empty."; - qDebug() << __FUNCTION__ << renderImage.size(); - return renderImage; } diff --git a/src/declarative/designer/designersupport.h b/src/declarative/designer/designersupport.h index 0165769506..5e5b38b46c 100644 --- a/src/declarative/designer/designersupport.h +++ b/src/declarative/designer/designersupport.h @@ -57,6 +57,7 @@ #include #include +#include QT_BEGIN_NAMESPACE @@ -108,7 +109,7 @@ public: void refFromEffectItem(QSGItem *referencedItem, bool hide = true); void derefFromEffectItem(QSGItem *referencedItem, bool unhide = true); - QImage renderImageForItem(QSGItem *referencedItem); + QImage renderImageForItem(QSGItem *referencedItem, const QRectF &boundingRect, const QSize &imageSize); static bool isDirty(QSGItem *referencedItem, DirtyType dirtyType); static void resetDirty(QSGItem *referencedItem); From 6fbc4b7e7e5aed8739ca1143e0fc1e38b8c8e17a Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 29 Aug 2011 15:33:36 +1000 Subject: [PATCH 07/68] Batch view changes instead of applying them immediately If there are multiple changes to be applied to a view before the next repaint, collate them using QDeclarativeChangeSet and apply the changes as a group on the next layout(). (Note that changes to the current index are applied in sequence as changes are received, since changing it out of order produces different results.) Previously, any itemsInserted(), itemsRemoved() and itemsMoved() changes were immediately applied and items were repositioned immediately. In this situation if the same indexes changed multiple times between repaints, this could lead to redundant changes and bugs arising from multiple changes to the same items. Functions that will execute differently depending on whether pending view changes have been applied (e.g. count(), currentIndex(), highlight()) now call applyPendingChanges() before proceeding to ensure they are executed on a view that is up to date. Also, itemsMoved() operations that moved item/s backwards will now properly move backwards instead of being adjusted to a forward movement (which was implemented recently with e2b5681b1adab83555c7307b05f508d796a1152b) since backwards movements can be implemented more easily with the batched changes which translates moves into insert/remove actions. Change-Id: If9b39755898e8d2ed7e4bc61288206d5f1d653fd Reviewed-on: http://codereview.qt.nokia.com/3697 Reviewed-by: Qt Sanity Bot Reviewed-by: Martin Jones --- src/declarative/items/qsggridview.cpp | 375 ++++------------ src/declarative/items/qsggridview_p.h | 5 - src/declarative/items/qsgitemview.cpp | 344 +++++++++++++-- src/declarative/items/qsgitemview_p.h | 6 +- src/declarative/items/qsgitemview_p_p.h | 36 +- src/declarative/items/qsglistview.cpp | 409 ++++-------------- src/declarative/items/qsglistview_p.h | 5 - .../qsggridview/tst_qsggridview.cpp | 297 ++++++++++++- .../qsglistview/tst_qsglistview.cpp | 328 +++++++++++++- 9 files changed, 1095 insertions(+), 710 deletions(-) diff --git a/src/declarative/items/qsggridview.cpp b/src/declarative/items/qsggridview.cpp index bc4954a168..f0956367c5 100644 --- a/src/declarative/items/qsggridview.cpp +++ b/src/declarative/items/qsggridview.cpp @@ -166,6 +166,9 @@ public: virtual FxViewItem *newViewItem(int index, QSGItem *item); virtual void repositionPackageItemAt(QSGItem *item, int index); + virtual void resetItemPosition(FxViewItem *item, FxViewItem *toItem); + virtual void resetFirstItemPosition(); + virtual void moveItemBy(FxViewItem *item, const QList &items, const QList &movedBackwards); virtual void createHighlight(); virtual void updateHighlight(); @@ -173,6 +176,7 @@ public: virtual void setPosition(qreal pos); virtual void layoutVisibleItems(); + bool applyInsertionChange(const QDeclarativeChangeSet::Insert &, QList *, QList*, FxViewItem *); virtual qreal headerSize() const; virtual qreal footerSize() const; @@ -560,6 +564,24 @@ void QSGGridViewPrivate::repositionPackageItemAt(QSGItem *item, int index) } } +void QSGGridViewPrivate::resetItemPosition(FxViewItem *item, FxViewItem *toItem) +{ + FxGridItemSG *toGridItem = static_cast(toItem); + static_cast(item)->setPosition(toGridItem->colPos(), toGridItem->rowPos()); +} + +void QSGGridViewPrivate::resetFirstItemPosition() +{ + FxGridItemSG *item = static_cast(visibleItems.first()); + item->setPosition(0, 0); +} + +void QSGGridViewPrivate::moveItemBy(FxViewItem *item, const QList &forwards, const QList &backwards) +{ + int moveCount = forwards.count() - backwards.count(); + FxGridItemSG *gridItem = static_cast(item); + gridItem->setPosition(gridItem->colPos(), gridItem->rowPos() + ((moveCount / columns) * rowSize())); +} void QSGGridViewPrivate::createHighlight() { @@ -602,6 +624,8 @@ void QSGGridViewPrivate::createHighlight() void QSGGridViewPrivate::updateHighlight() { + applyPendingChanges(); + if ((!currentItem && highlight) || (currentItem && !highlight)) createHighlight(); bool strictHighlight = haveHighlightRange && highlightRange == QSGGridView::StrictlyEnforceRange; @@ -1370,6 +1394,7 @@ void QSGGridView::setCellWidth(int cellWidth) d->cellWidth = qMax(1, cellWidth); d->updateViewport(); emit cellWidthChanged(); + d->forceLayout = true; d->layout(); } } @@ -1387,6 +1412,7 @@ void QSGGridView::setCellHeight(int cellHeight) d->cellHeight = qMax(1, cellHeight); d->updateViewport(); emit cellHeightChanged(); + d->forceLayout = true; d->layout(); } } @@ -1688,349 +1714,95 @@ void QSGGridView::moveCurrentIndexRight() } } - -void QSGGridView::itemsInserted(int modelIndex, int count) +bool QSGGridViewPrivate::applyInsertionChange(const QDeclarativeChangeSet::Insert &change, QList *movedBackwards, QList *addedItems, FxViewItem *firstVisible) { - Q_D(QSGGridView); - if (!isComponentComplete() || !d->model || !d->model->isValid()) - return; + Q_Q(QSGGridView); + + int modelIndex = change.index; + int count = change.count; + + int index = visibleItems.count() ? mapFromModel(modelIndex) : 0; - int index = d->visibleItems.count() ? d->mapFromModel(modelIndex) : 0; if (index < 0) { - int i = d->visibleItems.count() - 1; - while (i > 0 && d->visibleItems.at(i)->index == -1) + int i = visibleItems.count() - 1; + while (i > 0 && visibleItems.at(i)->index == -1) --i; - if (d->visibleItems.at(i)->index + 1 == modelIndex) { + if (visibleItems.at(i)->index + 1 == modelIndex) { // Special case of appending an item to the model. - index = d->visibleIndex + d->visibleItems.count(); + index = visibleIndex + visibleItems.count(); } else { - if (modelIndex <= d->visibleIndex) { + if (modelIndex <= visibleIndex) { // Insert before visible items - d->visibleIndex += count; - for (int i = 0; i < d->visibleItems.count(); ++i) { - FxViewItem *item = d->visibleItems.at(i); + visibleIndex += count; + for (int i = 0; i < visibleItems.count(); ++i) { + FxViewItem *item = visibleItems.at(i); if (item->index != -1 && item->index >= modelIndex) item->index += count; } } - if (d->currentIndex >= modelIndex) { - // adjust current item index - d->currentIndex += count; - if (d->currentItem) - d->currentItem->index = d->currentIndex; - emit currentIndexChanged(); - } - d->scheduleLayout(); - d->itemCount += count; - emit countChanged(); - return; + return true; } } int insertCount = count; - if (index < d->visibleIndex && d->visibleItems.count()) { - insertCount -= d->visibleIndex - index; - index = d->visibleIndex; - modelIndex = d->visibleIndex; + if (index < visibleIndex && visibleItems.count()) { + insertCount -= visibleIndex - index; + index = visibleIndex; + modelIndex = visibleIndex; } - qreal tempPos = d->isRightToLeftTopToBottom() ? -d->position()-d->size()+width()+1 : d->position(); - int to = d->buffer+tempPos+d->size()-1; + qreal tempPos = isRightToLeftTopToBottom() ? -position()-size()+q->width()+1 : position(); + int to = buffer+tempPos+size()-1; int colPos = 0; int rowPos = 0; - if (d->visibleItems.count()) { - index -= d->visibleIndex; - if (index < d->visibleItems.count()) { - FxGridItemSG *gridItem = static_cast(d->visibleItems.at(index)); + if (visibleItems.count()) { + index -= visibleIndex; + if (index < visibleItems.count()) { + FxGridItemSG *gridItem = static_cast(visibleItems.at(index)); colPos = gridItem->colPos(); rowPos = gridItem->rowPos(); } else { // appending items to visible list - FxGridItemSG *gridItem = static_cast(d->visibleItems.at(index-1)); - colPos = gridItem->colPos() + d->colSize(); + FxGridItemSG *gridItem = static_cast(visibleItems.at(index-1)); + colPos = gridItem->colPos() + colSize(); rowPos = gridItem->rowPos(); - if (colPos > d->colSize() * (d->columns-1)) { + if (colPos > colSize() * (columns-1)) { colPos = 0; - rowPos += d->rowSize(); + rowPos += rowSize(); } } } // Update the indexes of the following visible items. - for (int i = 0; i < d->visibleItems.count(); ++i) { - FxViewItem *item = d->visibleItems.at(i); + for (int i = 0; i < visibleItems.count(); ++i) { + FxViewItem *item = visibleItems.at(i); if (item->index != -1 && item->index >= modelIndex) item->index += count; } - bool addedVisible = false; - QList added; int i = 0; - while (i < insertCount && rowPos <= to + d->rowSize()*(d->columns - (colPos/d->colSize()))/qreal(d->columns)) { - if (!addedVisible) { - d->scheduleLayout(); - addedVisible = true; + bool prevAddedCount = addedItems->count(); + while (i < insertCount && rowPos <= to + rowSize()*(columns - (colPos/colSize()))/qreal(columns)) { + FxViewItem *item = 0; + if (change.isMove() && (item = currentChanges.removedItems.take(change.moveKey(modelIndex + i)))) { + if (item->index > modelIndex + i) + movedBackwards->append(item); + item->index = modelIndex + i; } - FxGridItemSG *item = static_cast(d->createItem(modelIndex + i)); - d->visibleItems.insert(index, item); - item->setPosition(colPos, rowPos); - added.append(item); - colPos += d->colSize(); - if (colPos > d->colSize() * (d->columns-1)) { + if (!item) + item = createItem(modelIndex + i); + visibleItems.insert(index, item); + addedItems->append(item); + colPos += colSize(); + if (colPos > colSize() * (columns-1)) { colPos = 0; - rowPos += d->rowSize(); + rowPos += rowSize(); } ++index; ++i; } - if (i < insertCount) { - // We didn't insert all our new items, which means anything - // beyond the current index is not visible - remove it. - while (d->visibleItems.count() > index) { - d->releaseItem(d->visibleItems.takeLast()); - } - } - // update visibleIndex - d->visibleIndex = 0; - for (QList::Iterator it = d->visibleItems.begin(); it != d->visibleItems.end(); ++it) { - if ((*it)->index != -1) { - d->visibleIndex = (*it)->index; - break; - } - } - - if (d->itemCount && d->currentIndex >= modelIndex) { - // adjust current item index - d->currentIndex += count; - if (d->currentItem) { - d->currentItem->index = d->currentIndex; - static_cast(d->currentItem)->setPosition(d->colPosAt(d->currentIndex), d->rowPosAt(d->currentIndex)); - } - emit currentIndexChanged(); - } else if (d->itemCount == 0 && (!d->currentIndex || (d->currentIndex < 0 && !d->currentIndexCleared))) { - setCurrentIndex(0); - } - - // everything is in order now - emit add() signal - for (int j = 0; j < added.count(); ++j) - added.at(j)->attached->emitAdd(); - - d->itemCount += count; - emit countChanged(); -} - -void QSGGridView::itemsRemoved(int modelIndex, int count) -{ - Q_D(QSGGridView); - if (!isComponentComplete() || !d->model || !d->model->isValid()) - return; - - d->itemCount -= count; - bool currentRemoved = d->currentIndex >= modelIndex && d->currentIndex < modelIndex + count; - bool removedVisible = false; - - // Remove the items from the visible list, skipping anything already marked for removal - QList::Iterator it = d->visibleItems.begin(); - while (it != d->visibleItems.end()) { - FxViewItem *item = *it; - if (item->index == -1 || item->index < modelIndex) { - // already removed, or before removed items - if (item->index < modelIndex && !removedVisible) { - d->scheduleLayout(); - removedVisible = true; - } - ++it; - } else if (item->index >= modelIndex + count) { - // after removed items - item->index -= count; - ++it; - } else { - // removed item - if (!removedVisible) { - d->scheduleLayout(); - removedVisible = true; - } - item->attached->emitRemove(); - if (item->attached->delayRemove()) { - item->index = -1; - connect(item->attached, SIGNAL(delayRemoveChanged()), this, SLOT(destroyRemoved()), Qt::QueuedConnection); - ++it; - } else { - it = d->visibleItems.erase(it); - d->releaseItem(item); - } - } - } - - // update visibleIndex - d->visibleIndex = 0; - for (it = d->visibleItems.begin(); it != d->visibleItems.end(); ++it) { - if ((*it)->index != -1) { - d->visibleIndex = (*it)->index; - break; - } - } - - // fix current - if (d->currentIndex >= modelIndex + count) { - d->currentIndex -= count; - if (d->currentItem) - d->currentItem->index -= count; - emit currentIndexChanged(); - } else if (currentRemoved) { - // current item has been removed. - d->releaseItem(d->currentItem); - d->currentItem = 0; - d->currentIndex = -1; - if (d->itemCount) - d->updateCurrent(qMin(modelIndex, d->itemCount-1)); - else - emit currentIndexChanged(); - } - - if (removedVisible && d->visibleItems.isEmpty()) { - d->timeline.clear(); - if (d->itemCount == 0) { - d->setPosition(d->contentStartPosition()); - d->updateHeader(); - d->updateFooter(); - } - } - - emit countChanged(); -} - - -void QSGGridView::itemsMoved(int from, int to, int count) -{ - Q_D(QSGGridView); - if (!isComponentComplete() || !d->isValid()) - return; - d->updateUnrequestedIndexes(); - - if (d->visibleItems.isEmpty()) { - d->refill(); - return; - } - - d->moveReason = QSGGridViewPrivate::Other; - - bool movingBackwards = from > to; - d->adjustMoveParameters(&from, &to, &count); - - QHash moved; - int moveByCount = 0; - FxGridItemSG *firstVisible = static_cast(d->firstVisibleItem()); - int firstItemIndex = firstVisible ? firstVisible->index : -1; - - // if visibleItems.first() is above the content start pos, and the items - // beneath it are moved, ensure this first item is later repositioned correctly - // (to above the next visible item) so that subsequent layout() is correct - bool repositionFirstItem = firstVisible - && d->visibleItems.first()->position() < firstVisible->position() - && from > d->visibleItems.first()->index; - - QList::Iterator it = d->visibleItems.begin(); - while (it != d->visibleItems.end()) { - FxViewItem *item = *it; - if (item->index >= from && item->index < from + count) { - // take the items that are moving - item->index += (to-from); - moved.insert(item->index, static_cast(item)); - if (repositionFirstItem) - moveByCount++; - it = d->visibleItems.erase(it); - } else { - if (item->index > from && item->index != -1) { - // move everything after the moved items. - item->index -= count; - if (item->index < d->visibleIndex) - d->visibleIndex = item->index; - } - ++it; - } - } - - int movedCount = 0; - int endIndex = d->visibleIndex; - it = d->visibleItems.begin(); - while (it != d->visibleItems.end()) { - FxViewItem *item = *it; - if (movedCount < count && item->index >= to && item->index < to + count) { - // place items in the target position, reusing any existing items - int targetIndex = item->index + movedCount; - FxGridItemSG *movedItem = moved.take(targetIndex); - if (!movedItem) - movedItem = static_cast(d->createItem(targetIndex)); - it = d->visibleItems.insert(it, movedItem); - ++it; - ++movedCount; - } else { - if (item->index != -1) { - if (item->index >= to) { - // update everything after the moved items. - item->index += count; - } - endIndex = item->index; - } - ++it; - } - } - - // If we have moved items to the end of the visible items - // then add any existing moved items that we have - while (FxGridItemSG *item = moved.take(endIndex+1)) { - d->visibleItems.append(item); - ++endIndex; - } - - // update visibleIndex - for (it = d->visibleItems.begin(); it != d->visibleItems.end(); ++it) { - if ((*it)->index != -1) { - d->visibleIndex = (*it)->index; - break; - } - } - - // if first visible item is moving but another item is moving up to replace it, - // do this positioning now to avoid shifting all content forwards - if (movingBackwards && firstItemIndex >= 0) { - for (it = d->visibleItems.begin(); it != d->visibleItems.end(); ++it) { - if ((*it)->index == firstItemIndex) { - static_cast(*it)->setPosition(firstVisible->colPos(), - firstVisible->rowPos()); - break; - } - } - } - - // Fix current index - if (d->currentIndex >= 0 && d->currentItem) { - int oldCurrent = d->currentIndex; - d->currentIndex = d->model->indexOf(d->currentItem->item, this); - if (oldCurrent != d->currentIndex) { - d->currentItem->index = d->currentIndex; - emit currentIndexChanged(); - } - } - - // Whatever moved items remain are no longer visible items. - while (moved.count()) { - int idx = moved.begin().key(); - FxGridItemSG *item = moved.take(idx); - if (d->currentItem && item->item == d->currentItem->item) - item->setPosition(d->colPosAt(idx), d->rowPosAt(idx)); - d->releaseItem(item); - } - - // Ensure we don't cause an ugly list scroll. - if (d->visibleItems.count() && moveByCount > 0) { - FxGridItemSG *first = static_cast(d->visibleItems.first()); - first->setPosition(first->colPos(), first->rowPos() + ((moveByCount / d->columns) * d->rowSize())); - } - - d->layout(); + return addedItems->count() > prevAddedCount; } /*! @@ -2098,6 +1870,7 @@ void QSGGridView::itemsMoved(int from, int to, int count) \bold Note: methods should only be called after the Component has completed. */ + QSGGridViewAttached *QSGGridView::qmlAttachedProperties(QObject *obj) { return new QSGGridViewAttached(obj); diff --git a/src/declarative/items/qsggridview_p.h b/src/declarative/items/qsggridview_p.h index ae4ce346db..1cdf81d213 100644 --- a/src/declarative/items/qsggridview_p.h +++ b/src/declarative/items/qsggridview_p.h @@ -109,11 +109,6 @@ Q_SIGNALS: protected: virtual void viewportMoved(); virtual void keyPressEvent(QKeyEvent *); - -private Q_SLOTS: - void itemsInserted(int index, int count); - void itemsRemoved(int index, int count); - void itemsMoved(int from, int to, int count); }; class QSGGridViewAttached : public QSGItemViewAttached diff --git a/src/declarative/items/qsgitemview.cpp b/src/declarative/items/qsgitemview.cpp index 5543f12f6d..c28fbb1532 100644 --- a/src/declarative/items/qsgitemview.cpp +++ b/src/declarative/items/qsgitemview.cpp @@ -58,6 +58,102 @@ FxViewItem::~FxViewItem() } } + +QSGItemViewChangeSet::QSGItemViewChangeSet() + : active(false) +{ + reset(); +} + +bool QSGItemViewChangeSet::hasPendingChanges() const +{ + return !pendingChanges.isEmpty(); +} + +void QSGItemViewChangeSet::doInsert(int index, int count) +{ + pendingChanges.insert(index, count); + + if (newCurrentIndex >= index) { + // adjust current item index + newCurrentIndex += count; + currentChanged = true; + } else if (newCurrentIndex < 0) { + newCurrentIndex = 0; + currentChanged = true; + } + + itemCount += count; +} + +void QSGItemViewChangeSet::doRemove(int index, int count) +{ + itemCount -= count; + pendingChanges.remove(index, count); + + if (newCurrentIndex >= index + count) { + newCurrentIndex -= count; + currentChanged = true; + } else if (newCurrentIndex >= index && newCurrentIndex < index + count) { + // current item has been removed. + currentRemoved = true; + newCurrentIndex = -1; + if (itemCount) + newCurrentIndex = qMin(index, itemCount-1); + currentChanged = true; + } +} + +void QSGItemViewChangeSet::doMove(int from, int to, int count) +{ + pendingChanges.move(from, to, count); + + if (to > from) { + if (newCurrentIndex >= from) { + if (newCurrentIndex < from + count) + newCurrentIndex += (to-from); + else if (newCurrentIndex < to + count) + newCurrentIndex -= count; + } + currentChanged = true; + } else if (to < from) { + if (newCurrentIndex >= to) { + if (newCurrentIndex >= from && newCurrentIndex < from + count) + newCurrentIndex -= (from-to); + else if (newCurrentIndex < from) + newCurrentIndex += count; + } + currentChanged = true; + } +} + +void QSGItemViewChangeSet::QSGItemViewChangeSet::doChange(int index, int count) +{ + pendingChanges.change(index, count); +} + +void QSGItemViewChangeSet::prepare(int currentIndex, int count) +{ + if (active) + return; + reset(); + active = true; + itemCount = count; + newCurrentIndex = currentIndex; +} + +void QSGItemViewChangeSet::reset() +{ + itemCount = 0; + newCurrentIndex = -1; + pendingChanges.clear(); + removedItems.clear(); + active = false; + currentChanged = false; + currentRemoved = false; +} + + QSGItemView::QSGItemView(QSGFlickablePrivate &dd, QSGItem *parent) : QSGFlickable(dd, parent) { @@ -81,6 +177,7 @@ QSGItem *QSGItemView::currentItem() const Q_D(const QSGItemView); if (!d->currentItem) return 0; + const_cast(d)->applyPendingChanges(); return d->currentItem->item; } @@ -213,14 +310,16 @@ void QSGItemView::setDelegate(QDeclarativeComponent *delegate) int QSGItemView::count() const { Q_D(const QSGItemView); - if (d->model) - return d->model->count(); - return 0; + if (!d->model) + return 0; + const_cast(d)->applyPendingChanges(); + return d->model->count(); } int QSGItemView::currentIndex() const { Q_D(const QSGItemView); + const_cast(d)->applyPendingChanges(); return d->currentIndex; } @@ -230,6 +329,8 @@ void QSGItemView::setCurrentIndex(int index) if (d->requestedIndex >= 0) // currently creating item return; d->currentIndexCleared = (index == -1); + + d->applyPendingChanges(); if (index == d->currentIndex) return; if (isComponentComplete() && d->isValid()) { @@ -313,6 +414,7 @@ QDeclarativeComponent *QSGItemView::header() const QSGItem *QSGItemView::headerItem() const { Q_D(const QSGItemView); + const_cast(d)->applyPendingChanges(); return d->header ? d->header->item : 0; } @@ -320,6 +422,7 @@ void QSGItemView::setHeader(QDeclarativeComponent *headerComponent) { Q_D(QSGItemView); if (d->headerComponent != headerComponent) { + d->applyPendingChanges(); delete d->header; d->header = 0; d->headerComponent = headerComponent; @@ -348,6 +451,7 @@ QDeclarativeComponent *QSGItemView::footer() const QSGItem *QSGItemView::footerItem() const { Q_D(const QSGItemView); + const_cast(d)->applyPendingChanges(); return d->footer ? d->footer->item : 0; } @@ -355,6 +459,7 @@ void QSGItemView::setFooter(QDeclarativeComponent *footerComponent) { Q_D(QSGItemView); if (d->footerComponent != footerComponent) { + d->applyPendingChanges(); delete d->footer; d->footer = 0; d->footerComponent = footerComponent; @@ -373,6 +478,7 @@ void QSGItemView::setFooter(QDeclarativeComponent *footerComponent) QDeclarativeComponent *QSGItemView::highlight() const { Q_D(const QSGItemView); + const_cast(d)->applyPendingChanges(); return d->highlightComponent; } @@ -380,6 +486,7 @@ void QSGItemView::setHighlight(QDeclarativeComponent *highlightComponent) { Q_D(QSGItemView); if (highlightComponent != d->highlightComponent) { + d->applyPendingChanges(); d->highlightComponent = highlightComponent; d->createHighlight(); if (d->currentItem) @@ -391,9 +498,8 @@ void QSGItemView::setHighlight(QDeclarativeComponent *highlightComponent) QSGItem *QSGItemView::highlightItem() const { Q_D(const QSGItemView); - if (!d->highlight) - return 0; - return d->highlight->item; + const_cast(d)->applyPendingChanges(); + return d->highlight ? d->highlight->item : 0; } bool QSGItemView::highlightFollowsCurrentItem() const @@ -506,10 +612,10 @@ void QSGItemViewPrivate::positionViewAtIndex(int index, int mode) return; if (mode < QSGItemView::Beginning || mode > QSGItemView::Contain) return; + + applyPendingChanges(); int idx = qMax(qMin(index, model->count()-1), 0); - if (layoutScheduled) - layout(); qreal pos = isContentFlowReversed() ? -position() - size() : position(); FxViewItem *item = visibleItem(idx); qreal maxExtent; @@ -614,6 +720,12 @@ int QSGItemView::indexAt(qreal x, qreal y) const return -1; } +void QSGItemViewPrivate::applyPendingChanges() +{ + Q_Q(QSGItemView); + if (q->isComponentComplete() && currentChanges.hasPendingChanges()) + layout(); +} // for debugging only void QSGItemViewPrivate::checkVisible() const @@ -629,8 +741,6 @@ void QSGItemViewPrivate::checkVisible() const } } - - void QSGItemViewPrivate::itemGeometryChanged(QSGItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) { Q_Q(QSGItemView); @@ -668,11 +778,51 @@ void QSGItemView::destroyRemoved() d->layout(); } -void QSGItemView::itemsChanged(int, int) +void QSGItemView::itemsInserted(int index, int count) { Q_D(QSGItemView); - d->updateSections(); - d->layout(); + if (!isComponentComplete() || !d->model || !d->model->isValid()) + return; + + d->currentChanges.prepare(d->currentIndex, d->itemCount); + d->currentChanges.doInsert(index, count); + d->scheduleLayout(); +} + +void QSGItemView::itemsRemoved(int index, int count) +{ + Q_D(QSGItemView); + if (!isComponentComplete() || !d->model || !d->model->isValid()) + return; + + d->currentChanges.prepare(d->currentIndex, d->itemCount); + d->currentChanges.doRemove(index, count); + d->scheduleLayout(); +} + +void QSGItemView::itemsMoved(int from, int to, int count) +{ + Q_D(QSGItemView); + if (!isComponentComplete() || !d->model || !d->model->isValid()) + return; + + if (from == to || count <= 0 || from < 0 || to < 0) + return; + + d->currentChanges.prepare(d->currentIndex, d->itemCount); + d->currentChanges.doMove(from, to, count); + d->scheduleLayout(); +} + +void QSGItemView::itemsChanged(int index, int count) +{ + Q_D(QSGItemView); + if (!isComponentComplete() || !d->model || !d->model->isValid()) + return; + + d->currentChanges.prepare(d->currentIndex, d->itemCount); + d->currentChanges.doChange(index, count); + d->scheduleLayout(); } void QSGItemView::modelReset() @@ -796,7 +946,6 @@ void QSGItemView::trackedPositionChanged() } } - void QSGItemView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { Q_D(QSGItemView); @@ -1017,7 +1166,7 @@ QSGItemViewPrivate::QSGItemViewPrivate() , headerComponent(0), header(0), footerComponent(0), footer(0) , minExtent(0), maxExtent(0) , ownModel(false), wrap(false), lazyRelease(false), deferredRelease(false) - , layoutScheduled(false), inViewportMoved(false), currentIndexCleared(false) + , layoutScheduled(false), inApplyModelChanges(false), inViewportMoved(false), forceLayout(false), currentIndexCleared(false) , haveHighlightRange(false), autoHighlight(true), highlightRangeStartValid(false), highlightRangeEndValid(false) , minExtentDirty(true), maxExtentDirty(true) { @@ -1082,7 +1231,7 @@ FxViewItem *QSGItemViewPrivate::firstVisibleItem() const { const qreal pos = isContentFlowReversed() ? -position()-size() : position(); for (int i = 0; i < visibleItems.count(); ++i) { FxViewItem *item = visibleItems.at(i); - if (item->index != -1 && item->endPosition() >= pos) + if (item->index != -1 && item->endPosition() > pos) return item; } return visibleItems.count() ? visibleItems.first() : 0; @@ -1105,18 +1254,6 @@ int QSGItemViewPrivate::mapFromModel(int modelIndex) const return -1; // Not in visibleList } -void QSGItemViewPrivate::adjustMoveParameters(int *from, int *to, int *count) const -{ - if (*from > *to) { - // Only move forwards - flip if backwards moving - int tfrom = *from; - int tto = *to; - *from = tto; - *to = tto + *count; - *count = tfrom - tto; - } -} - void QSGItemViewPrivate::init() { Q_Q(QSGItemView); @@ -1130,6 +1267,8 @@ void QSGItemViewPrivate::init() void QSGItemViewPrivate::updateCurrent(int modelIndex) { Q_Q(QSGItemView); + applyPendingChanges(); + if (!q->isComponentComplete() || !isValid() || modelIndex < 0 || modelIndex >= model->count()) { if (currentItem) { currentItem->attached->setIsCurrentItem(false); @@ -1168,6 +1307,7 @@ void QSGItemViewPrivate::updateCurrent(int modelIndex) void QSGItemViewPrivate::clear() { + currentChanges.reset(); timeline.clear(); for (int i = 0; i < visibleItems.count(); ++i) @@ -1207,6 +1347,9 @@ void QSGItemViewPrivate::refill(qreal from, qreal to, bool doBuffer) if (!isValid() || !q->isComponentComplete()) return; + currentChanges.reset(); + + int prevCount = itemCount; itemCount = model->count(); qreal bufferFrom = from - buffer; qreal bufferTo = to + buffer; @@ -1240,12 +1383,15 @@ void QSGItemViewPrivate::refill(qreal from, qreal to, bool doBuffer) } lazyRelease = false; + if (prevCount != itemCount) + emit q->countChanged(); } void QSGItemViewPrivate::regenerate() { Q_Q(QSGItemView); if (q->isComponentComplete()) { + currentChanges.reset(); delete header; header = 0; delete footer; @@ -1290,6 +1436,10 @@ void QSGItemViewPrivate::layout() return; } + if (!applyModelChanges() && !forceLayout) + return; + forceLayout = false; + layoutVisibleItems(); refill(); @@ -1297,6 +1447,7 @@ void QSGItemViewPrivate::layout() maxExtentDirty = true; updateHighlight(); + if (!q->isMoving() && !q->isFlicking()) { fixupPosition(); refill(); @@ -1308,6 +1459,132 @@ void QSGItemViewPrivate::layout() updateUnrequestedPositions(); } +bool QSGItemViewPrivate::applyModelChanges() +{ + Q_Q(QSGItemView); + if (!q->isComponentComplete() || !currentChanges.hasPendingChanges() || inApplyModelChanges) + return false; + inApplyModelChanges = true; + + updateUnrequestedIndexes(); + moveReason = QSGItemViewPrivate::Other; + + int prevCount = itemCount; + bool removedVisible = false; + + FxViewItem *firstVisible = firstVisibleItem(); + FxViewItem *origVisibleItemsFirst = visibleItems.count() ? visibleItems.first() : 0; + int firstItemIndex = firstVisible ? firstVisible->index : -1; + QList removedBeforeFirstVisible; + + const QVector &removals = currentChanges.pendingChanges.removes(); + for (int i=0; i::Iterator it = visibleItems.begin(); + while (it != visibleItems.end()) { + FxViewItem *item = *it; + if (item->index == -1 || item->index < removals[i].index) { + // already removed, or before removed items + if (item->index < removals[i].index && !removedVisible) + removedVisible = true; + ++it; + } else if (item->index >= removals[i].index + removals[i].count) { + // after removed items + item->index -= removals[i].count; + ++it; + } else { + // removed item + removedVisible = true; + item->attached->emitRemove(); + if (item->attached->delayRemove()) { + item->index = -1; + QObject::connect(item->attached, SIGNAL(delayRemoveChanged()), q, SLOT(destroyRemoved()), Qt::QueuedConnection); + ++it; + } else { + if (firstVisible && item->position() < firstVisible->position() && item != visibleItems.first()) + removedBeforeFirstVisible.append(item); + if (removals[i].isMove()) { + currentChanges.removedItems.insert(removals[i].moveKey(item->index), item); + } else { + if (item == firstVisible) + firstVisible = 0; + currentChanges.removedItems.insertMulti(QDeclarativeChangeSet::MoveKey(), item); + } + it = visibleItems.erase(it); + } + } + } + + } + if (!removals.isEmpty()) + updateVisibleIndex(); + + const QVector &insertions = currentChanges.pendingChanges.inserts(); + bool addedVisible = false; + QList addedItems; + QList movedBackwards; + + for (int i=0; iattached->emitAdd(); + + // if first visible item is moving but another item is moving up to replace it, + // do this positioning now to avoid shifting all content forwards + if (firstVisible && firstItemIndex >= 0) { + for (int i=0; iindex == firstItemIndex) { + resetItemPosition(movedBackwards[i], firstVisible); + movedBackwards.removeAt(i); + break; + } + } + } + + // Ensure we don't cause an ugly list scroll + if (firstVisible && visibleItems.count() && visibleItems.first() != firstVisible) { + // ensure first item is placed at correct postion if moving backward + // since it will be used to position all subsequent items + if (movedBackwards.count() && origVisibleItemsFirst) + resetItemPosition(visibleItems.first(), origVisibleItemsFirst); + moveItemBy(visibleItems.first(), removedBeforeFirstVisible, movedBackwards); + } + + // Whatever removed/moved items remain are no longer visible items. + for (QHash::Iterator it = currentChanges.removedItems.begin(); + it != currentChanges.removedItems.end(); ++it) { + releaseItem(it.value()); + } + currentChanges.removedItems.clear(); + + if (currentChanges.currentChanged) { + if (currentChanges.currentRemoved && currentItem) { + currentItem->attached->setIsCurrentItem(false); + releaseItem(currentItem); + currentItem = 0; + } + if (!currentIndexCleared) + updateCurrent(currentChanges.newCurrentIndex); + } + currentChanges.reset(); + + updateSections(); + if (prevCount != itemCount) + emit q->countChanged(); + + inApplyModelChanges = false; + return removedVisible || addedVisible || !currentChanges.pendingChanges.changes().isEmpty(); +} + FxViewItem *QSGItemViewPrivate::createItem(int modelIndex) { Q_Q(QSGItemView); @@ -1415,4 +1692,15 @@ void QSGItemViewPrivate::updateUnrequestedPositions() repositionPackageItemAt(it.key(), it.value()); } +void QSGItemViewPrivate::updateVisibleIndex() +{ + visibleIndex = 0; + for (QList::Iterator it = visibleItems.begin(); it != visibleItems.end(); ++it) { + if ((*it)->index != -1) { + visibleIndex = (*it)->index; + break; + } + } +} + QT_END_NAMESPACE diff --git a/src/declarative/items/qsgitemview_p.h b/src/declarative/items/qsgitemview_p.h index b784015f66..b1093ffdbe 100644 --- a/src/declarative/items/qsgitemview_p.h +++ b/src/declarative/items/qsgitemview_p.h @@ -191,13 +191,17 @@ protected: protected slots: virtual void updateSections() {} void destroyRemoved(); - void itemsChanged(int index, int count); void createdItem(int index, QSGItem *item); void modelReset(); void destroyingItem(QSGItem *item); void animStopped(); void trackedPositionChanged(); + void itemsInserted(int index, int count); + void itemsRemoved(int index, int count); + void itemsMoved(int from, int to, int count); + void itemsChanged(int index, int count); + private: Q_DECLARE_PRIVATE(QSGItemView) }; diff --git a/src/declarative/items/qsgitemview_p_p.h b/src/declarative/items/qsgitemview_p_p.h index f20f4cca3e..e2e222ba36 100644 --- a/src/declarative/items/qsgitemview_p_p.h +++ b/src/declarative/items/qsgitemview_p_p.h @@ -45,6 +45,7 @@ #include "qsgitemview_p.h" #include "qsgflickable_p_p.h" #include "qsgvisualitemmodel_p.h" +#include QT_BEGIN_HEADER @@ -73,6 +74,30 @@ public: QSGItemViewAttached *attached; }; +class QSGItemViewChangeSet +{ +public: + QSGItemViewChangeSet(); + + bool hasPendingChanges() const; + void prepare(int currentIndex, int count); + void reset(); + + void doInsert(int index, int count); + void doRemove(int index, int count); + void doMove(int from, int to, int count); + void doChange(int index, int count); + + int itemCount; + int newCurrentIndex; + QDeclarativeChangeSet pendingChanges; + QHash removedItems; + + bool active : 1; + bool currentChanged : 1; + bool currentRemoved : 1; +}; + class QSGItemViewPrivate : public QSGFlickablePrivate { Q_DECLARE_PUBLIC(QSGItemView) @@ -92,7 +117,6 @@ public: FxViewItem *visibleItem(int modelIndex) const; FxViewItem *firstVisibleItem() const; int mapFromModel(int modelIndex) const; - void adjustMoveParameters(int *from, int *to, int *count) const; virtual void init(); virtual void clear(); @@ -115,7 +139,10 @@ public: void updateTrackedItem(); void updateUnrequestedIndexes(); void updateUnrequestedPositions(); + void updateVisibleIndex(); void positionViewAtIndex(int index, int mode); + void applyPendingChanges(); + bool applyModelChanges(); void checkVisible() const; @@ -135,6 +162,7 @@ public: FxViewItem *trackedItem; QHash unrequestedItems; int requestedIndex; + QSGItemViewChangeSet currentChanges; // XXX split into struct QDeclarativeComponent *highlightComponent; @@ -157,7 +185,9 @@ public: bool lazyRelease : 1; bool deferredRelease : 1; bool layoutScheduled : 1; + bool inApplyModelChanges : 1; bool inViewportMoved : 1; + bool forceLayout : 1; bool currentIndexCleared : 1; bool haveHighlightRange : 1; bool autoHighlight : 1; @@ -195,9 +225,13 @@ protected: virtual FxViewItem *newViewItem(int index, QSGItem *item) = 0; virtual void repositionPackageItemAt(QSGItem *item, int index) = 0; + virtual void resetItemPosition(FxViewItem *item, FxViewItem *toItem) = 0; + virtual void resetFirstItemPosition() = 0; + virtual void moveItemBy(FxViewItem *item, const QList &, const QList &) = 0; virtual void layoutVisibleItems() = 0; virtual void changedVisibleIndex(int newIndex) = 0; + virtual bool applyInsertionChange(const QDeclarativeChangeSet::Insert &, QList *, QList *, FxViewItem *) = 0; virtual void initializeViewItem(FxViewItem *) {} virtual void initializeCurrentItem() {} diff --git a/src/declarative/items/qsglistview.cpp b/src/declarative/items/qsglistview.cpp index 3be4a4bd58..82a2dd7774 100644 --- a/src/declarative/items/qsglistview.cpp +++ b/src/declarative/items/qsglistview.cpp @@ -209,6 +209,9 @@ public: virtual void initializeViewItem(FxViewItem *item); virtual void releaseItem(FxViewItem *item); virtual void repositionPackageItemAt(QSGItem *item, int index); + virtual void resetItemPosition(FxViewItem *item, FxViewItem *toItem); + virtual void resetFirstItemPosition(); + virtual void moveItemBy(FxViewItem *item, const QList &items, const QList &movedBackwards); virtual void createHighlight(); virtual void updateHighlight(); @@ -216,6 +219,7 @@ public: virtual void setPosition(qreal pos); virtual void layoutVisibleItems(); + bool applyInsertionChange(const QDeclarativeChangeSet::Insert &, QList *, QList *, FxViewItem *firstVisible); virtual void updateSections(); void createSection(FxListItemSG *); @@ -684,6 +688,27 @@ void QSGListViewPrivate::repositionPackageItemAt(QSGItem *item, int index) } } +void QSGListViewPrivate::resetItemPosition(FxViewItem *item, FxViewItem *toItem) +{ + static_cast(item)->setPosition(toItem->position()); +} + +void QSGListViewPrivate::resetFirstItemPosition() +{ + FxListItemSG *item = static_cast(visibleItems.first()); + item->setPosition(0); +} + +void QSGListViewPrivate::moveItemBy(FxViewItem *item, const QList &forwards, const QList &backwards) +{ + qreal pos = 0; + for (int i=0; isize(); + for (int i=0; isize(); + static_cast(item)->setPosition(item->position() + pos); +} + void QSGListViewPrivate::createHighlight() { Q_Q(QSGListView); @@ -733,6 +758,8 @@ void QSGListViewPrivate::createHighlight() void QSGListViewPrivate::updateHighlight() { + applyPendingChanges(); + if ((!currentItem && highlight) || (currentItem && !highlight)) createHighlight(); bool strictHighlight = haveHighlightRange && highlightRange == QSGListView::StrictlyEnforceRange; @@ -1009,6 +1036,7 @@ void QSGListViewPrivate::itemGeometryChanged(QSGItem *item, const QRectF &newGeo if (item != contentItem && (!highlight || item != highlight->item)) { if ((orient == QSGListView::Vertical && newGeometry.height() != oldGeometry.height()) || (orient == QSGListView::Horizontal && newGeometry.width() != oldGeometry.width())) { + forceLayout = true; scheduleLayout(); } } @@ -1565,6 +1593,7 @@ void QSGListView::setSpacing(qreal spacing) Q_D(QSGListView); if (spacing != d->spacing) { d->spacing = spacing; + d->forceLayout = true; d->layout(); emit spacingChanged(); } @@ -2067,373 +2096,107 @@ void QSGListView::updateSections() roles << d->sectionCriteria->property().toUtf8(); d->model->setWatchedRoles(roles); d->updateSections(); - if (d->itemCount) + if (d->itemCount) { + d->forceLayout = true; d->layout(); + } } } -void QSGListView::itemsInserted(int modelIndex, int count) +bool QSGListViewPrivate::applyInsertionChange(const QDeclarativeChangeSet::Insert &change, QList *movedBackwards, QList *addedItems, FxViewItem *firstVisible) { - Q_D(QSGListView); - if (!isComponentComplete() || !d->model || !d->model->isValid()) - return; - d->updateUnrequestedIndexes(); - d->moveReason = QSGListViewPrivate::Other; + Q_Q(QSGListView); + + int modelIndex = change.index; + int count = change.count; + + + qreal tempPos = isRightToLeft() ? -position()-size() : position(); + int index = visibleItems.count() ? mapFromModel(modelIndex) : 0; - qreal tempPos = d->isRightToLeft() ? -d->position()-d->size() : d->position(); - int index = d->visibleItems.count() ? d->mapFromModel(modelIndex) : 0; if (index < 0) { - int i = d->visibleItems.count() - 1; - while (i > 0 && d->visibleItems.at(i)->index == -1) + int i = visibleItems.count() - 1; + while (i > 0 && visibleItems.at(i)->index == -1) --i; - if (i == 0 && d->visibleItems.first()->index == -1) { + if (i == 0 && visibleItems.first()->index == -1) { // there are no visible items except items marked for removal - index = d->visibleItems.count(); - } else if (d->visibleItems.at(i)->index + 1 == modelIndex - && d->visibleItems.at(i)->endPosition() <= d->buffer+tempPos+d->size()) { + index = visibleItems.count(); + } else if (visibleItems.at(i)->index + 1 == modelIndex + && visibleItems.at(i)->endPosition() <= buffer+tempPos+size()) { // Special case of appending an item to the model. - index = d->visibleItems.count(); + index = visibleItems.count(); } else { - if (modelIndex < d->visibleIndex) { + if (modelIndex < visibleIndex) { // Insert before visible items - d->visibleIndex += count; - for (int i = 0; i < d->visibleItems.count(); ++i) { - FxViewItem *item = d->visibleItems.at(i); + visibleIndex += count; + for (int i = 0; i < visibleItems.count(); ++i) { + FxViewItem *item = visibleItems.at(i); if (item->index != -1 && item->index >= modelIndex) item->index += count; } } - if (d->currentIndex >= modelIndex) { - // adjust current item index - d->currentIndex += count; - if (d->currentItem) - d->currentItem->index = d->currentIndex; - emit currentIndexChanged(); - } - d->scheduleLayout(); - d->itemCount += count; - emit countChanged(); - return; + return true; } } // index can be the next item past the end of the visible items list (i.e. appended) int pos = 0; - if (d->visibleItems.count()) { - pos = index < d->visibleItems.count() ? d->visibleItems.at(index)->position() - : d->visibleItems.last()->endPosition()+d->spacing; + if (visibleItems.count()) { + pos = index < visibleItems.count() ? visibleItems.at(index)->position() + : visibleItems.last()->endPosition()+spacing; } - int initialPos = pos; - int diff = 0; - QList added; - bool addedVisible = false; - FxViewItem *firstVisible = d->firstVisibleItem(); + int prevAddedCount = addedItems->count(); if (firstVisible && pos < firstVisible->position()) { // Insert items before the visible item. int insertionIdx = index; int i = 0; - int from = tempPos - d->buffer; + int from = tempPos - buffer; + for (i = count-1; i >= 0 && pos > from; --i) { - if (!addedVisible) { - d->scheduleLayout(); - addedVisible = true; + FxViewItem *item = 0; + if (change.isMove() && (item = currentChanges.removedItems.take(change.moveKey(modelIndex + i)))) { + if (item->index > modelIndex + i) + movedBackwards->append(item); + item->index = modelIndex + i; } - FxListItemSG *item = static_cast(d->createItem(modelIndex + i)); - d->visibleItems.insert(insertionIdx, item); - pos -= item->size() + d->spacing; - item->setPosition(pos); + if (!item) + item = createItem(modelIndex + i); + + visibleItems.insert(insertionIdx, item); + addedItems->append(item); + pos -= item->size() + spacing; index++; } - if (i >= 0) { - // If we didn't insert all our new items - anything - // before the current index is not visible - remove it. - while (insertionIdx--) { - FxListItemSG *item = static_cast(d->visibleItems.takeFirst()); - if (item->index != -1) - d->visibleIndex++; - d->releaseItem(item); - } - } else { - // adjust pos of items before inserted items. - for (int i = insertionIdx-1; i >= 0; i--) { - FxListItemSG *listItem = static_cast(d->visibleItems.at(i)); - listItem->setPosition(listItem->position() - (initialPos - pos)); - } - } } else { int i = 0; - int to = d->buffer+tempPos+d->size(); + int to = buffer+tempPos+size(); for (i = 0; i < count && pos <= to; ++i) { - if (!addedVisible) { - d->scheduleLayout(); - addedVisible = true; + FxViewItem *item = 0; + if (change.isMove() && (item = currentChanges.removedItems.take(change.moveKey(modelIndex + i)))) { + if (item->index > modelIndex + i) + movedBackwards->append(item); + item->index = modelIndex + i; } - FxListItemSG *item = static_cast(d->createItem(modelIndex + i)); - d->visibleItems.insert(index, item); - item->setPosition(pos); - added.append(item); - pos += item->size() + d->spacing; + if (!item) + item = createItem(modelIndex + i); + + visibleItems.insert(index, item); + addedItems->append(item); + pos += item->size() + spacing; ++index; } - if (i != count) { - // We didn't insert all our new items, which means anything - // beyond the current index is not visible - remove it. - while (d->visibleItems.count() > index) - d->releaseItem(d->visibleItems.takeLast()); - } - diff = pos - initialPos; } - if (d->itemCount && d->currentIndex >= modelIndex) { - // adjust current item index - d->currentIndex += count; - if (d->currentItem) { - d->currentItem->index = d->currentIndex; - static_cast(d->currentItem)->setPosition(static_cast(d->currentItem)->position() + diff); - } - emit currentIndexChanged(); - } else if (!d->itemCount && (!d->currentIndex || (d->currentIndex < 0 && !d->currentIndexCleared))) { - d->updateCurrent(0); - } - // Update the indexes of the following visible items. - for (; index < d->visibleItems.count(); ++index) { - FxViewItem *item = d->visibleItems.at(index); - if (d->currentItem && item->item != d->currentItem->item) - static_cast(item)->setPosition(item->position() + diff); + + for (; index < visibleItems.count(); ++index) { + FxViewItem *item = visibleItems.at(index); if (item->index != -1) item->index += count; } - // everything is in order now - emit add() signal - for (int j = 0; j < added.count(); ++j) - added.at(j)->attached->emitAdd(); - d->updateSections(); - d->itemCount += count; - emit countChanged(); + return addedItems->count() > prevAddedCount; } -void QSGListView::itemsRemoved(int modelIndex, int count) -{ - Q_D(QSGListView); - if (!isComponentComplete() || !d->model || !d->model->isValid()) - return; - d->moveReason = QSGListViewPrivate::Other; - d->updateUnrequestedIndexes(); - d->itemCount -= count; - - FxViewItem *firstVisible = d->firstVisibleItem(); - int preRemovedSize = 0; - bool removedVisible = false; - // Remove the items from the visible list, skipping anything already marked for removal - QList::Iterator it = d->visibleItems.begin(); - while (it != d->visibleItems.end()) { - FxViewItem *item = *it; - if (item->index == -1 || item->index < modelIndex) { - // already removed, or before removed items - ++it; - } else if (item->index >= modelIndex + count) { - // after removed items - item->index -= count; - ++it; - } else { - // removed item - if (!removedVisible) { - d->scheduleLayout(); - removedVisible = true; - } - item->attached->emitRemove(); - if (item->attached->delayRemove()) { - item->index = -1; - connect(item->attached, SIGNAL(delayRemoveChanged()), this, SLOT(destroyRemoved()), Qt::QueuedConnection); - ++it; - } else { - if (item == firstVisible) - firstVisible = 0; - if (firstVisible && item->position() < firstVisible->position()) - preRemovedSize += item->size(); - it = d->visibleItems.erase(it); - d->releaseItem(item); - } - } - } - - if (firstVisible && d->visibleItems.first() != firstVisible) - static_cast(d->visibleItems.first())->setPosition(d->visibleItems.first()->position() + preRemovedSize); - - // update visibleIndex - bool haveVisibleIndex = false; - for (it = d->visibleItems.begin(); it != d->visibleItems.end(); ++it) { - if ((*it)->index != -1) { - d->visibleIndex = (*it)->index; - haveVisibleIndex = true; - break; - } - } - - // fix current - if (d->currentIndex >= modelIndex + count) { - d->currentIndex -= count; - if (d->currentItem) - d->currentItem->index -= count; - emit currentIndexChanged(); - } else if (d->currentIndex >= modelIndex && d->currentIndex < modelIndex + count) { - // current item has been removed. - if (d->currentItem) { - d->currentItem->attached->setIsCurrentItem(false); - d->releaseItem(d->currentItem); - d->currentItem = 0; - } - d->currentIndex = -1; - if (d->itemCount) - d->updateCurrent(qMin(modelIndex, d->itemCount-1)); - else - emit currentIndexChanged(); - } - - if (!haveVisibleIndex) { - d->timeline.clear(); - if (removedVisible && d->itemCount == 0) { - d->visibleIndex = 0; - d->visiblePos = 0; - d->setPosition(d->contentStartPosition()); - d->updateHeader(); - d->updateFooter(); - } else { - if (modelIndex < d->visibleIndex) - d->visibleIndex = modelIndex+1; - d->visibleIndex = qMax(qMin(d->visibleIndex, d->itemCount-1), 0); - } - } - - d->updateSections(); - emit countChanged(); -} - -void QSGListView::itemsMoved(int from, int to, int count) -{ - Q_D(QSGListView); - if (!isComponentComplete() || !d->isValid()) - return; - d->updateUnrequestedIndexes(); - - if (d->visibleItems.isEmpty()) { - d->refill(); - return; - } - - d->moveReason = QSGListViewPrivate::Other; - - bool movingBackwards = from > to; - d->adjustMoveParameters(&from, &to, &count); - - QHash moved; - int moveBy = 0; - FxViewItem *firstVisible = d->firstVisibleItem(); - int firstItemIndex = firstVisible ? firstVisible->index : -1; - - // if visibleItems.first() is above the content start pos, and the items - // beneath it are moved, ensure this first item is later repositioned correctly - // (to above the next visible item) so that subsequent layout() is correct - bool repositionFirstItem = firstVisible - && d->visibleItems.first()->position() < firstVisible->position() - && from > d->visibleItems.first()->index; - - QList::Iterator it = d->visibleItems.begin(); - while (it != d->visibleItems.end()) { - FxViewItem *item = *it; - if (item->index >= from && item->index < from + count) { - // take the items that are moving - item->index += (to-from); - moved.insert(item->index, item); - if (repositionFirstItem) - moveBy += item->size(); - it = d->visibleItems.erase(it); - } else { - // move everything after the moved items. - if (item->index > from && item->index != -1) - item->index -= count; - ++it; - } - } - - int movedCount = 0; - int endIndex = d->visibleIndex; - it = d->visibleItems.begin(); - while (it != d->visibleItems.end()) { - FxViewItem *item = *it; - if (movedCount < count && item->index >= to && item->index < to + count) { - // place items in the target position, reusing any existing items - int targetIndex = item->index + movedCount; - FxViewItem *movedItem = moved.take(targetIndex); - if (!movedItem) - movedItem = d->createItem(targetIndex); - it = d->visibleItems.insert(it, movedItem); - ++it; - ++movedCount; - } else { - if (item->index != -1) { - if (item->index >= to) { - // update everything after the moved items. - item->index += count; - } - endIndex = item->index; - } - ++it; - } - } - - // If we have moved items to the end of the visible items - // then add any existing moved items that we have - while (FxViewItem *item = moved.take(endIndex+1)) { - d->visibleItems.append(item); - ++endIndex; - } - - // update visibleIndex - for (it = d->visibleItems.begin(); it != d->visibleItems.end(); ++it) { - if ((*it)->index != -1) { - d->visibleIndex = (*it)->index; - break; - } - } - - // if first visible item is moving but another item is moving up to replace it, - // do this positioning now to avoid shifting all content forwards - if (movingBackwards && firstItemIndex >= 0) { - for (it = d->visibleItems.begin(); it != d->visibleItems.end(); ++it) { - if ((*it)->index == firstItemIndex) { - static_cast(*it)->setPosition(firstVisible->position()); - break; - } - } - } - - // Fix current index - if (d->currentIndex >= 0 && d->currentItem) { - int oldCurrent = d->currentIndex; - d->currentIndex = d->model->indexOf(d->currentItem->item, this); - if (oldCurrent != d->currentIndex) { - d->currentItem->index = d->currentIndex; - emit currentIndexChanged(); - } - } - - // Whatever moved items remain are no longer visible items. - while (moved.count()) { - int idx = moved.begin().key(); - FxViewItem *item = moved.take(idx); - if (d->currentItem && item->item == d->currentItem->item) - static_cast(item)->setPosition(d->positionAt(idx)); - d->releaseItem(item); - } - - // Ensure we don't cause an ugly list scroll. - if (d->visibleItems.count()) - static_cast(d->visibleItems.first())->setPosition(d->visibleItems.first()->position() + moveBy); - - d->updateSections(); - d->layout(); -} /*! \qmlmethod QtQuick2::ListView::positionViewAtIndex(int index, PositionMode mode) diff --git a/src/declarative/items/qsglistview_p.h b/src/declarative/items/qsglistview_p.h index e45e16b85d..8ff4b05346 100644 --- a/src/declarative/items/qsglistview_p.h +++ b/src/declarative/items/qsglistview_p.h @@ -166,11 +166,6 @@ protected: protected Q_SLOTS: void updateSections(); - -private Q_SLOTS: - void itemsInserted(int index, int count); - void itemsRemoved(int index, int count); - void itemsMoved(int from, int to, int count); }; class QSGListViewAttached : public QSGItemViewAttached diff --git a/tests/auto/declarative/qsggridview/tst_qsggridview.cpp b/tests/auto/declarative/qsggridview/tst_qsggridview.cpp index 49c3080a1c..ae4ca7d7fa 100644 --- a/tests/auto/declarative/qsggridview/tst_qsggridview.cpp +++ b/tests/auto/declarative/qsggridview/tst_qsggridview.cpp @@ -78,6 +78,8 @@ private slots: void clear(); void moved(); void moved_data(); + void multipleChanges(); + void multipleChanges_data(); void swapWithFirstItem(); void changeFlow(); void currentIndex(); @@ -150,6 +152,8 @@ void tst_QSGGridView::cleanupTestCase() { } + + class TestModel : public QAbstractListModel { public: @@ -196,6 +200,13 @@ public: emit endInsertRows(); } + void insertItems(int index, const QList > &items) { + emit beginInsertRows(QModelIndex(), index, index + items.count() - 1); + for (int i=0; i(items[i].first, items[i].second)); + emit endInsertRows(); + } + void removeItem(int index) { emit beginRemoveRows(QModelIndex(), index, index); list.removeAt(index); @@ -355,8 +366,8 @@ void tst_QSGGridView::inserted() QTRY_VERIFY(contentItem != 0); model.insertItem(1, "Will", "9876"); - QCOMPARE(canvas->rootObject()->property("count").toInt(), model.count()); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item QSGText *name = findItem(contentItem, "textName", 1); @@ -434,7 +445,7 @@ void tst_QSGGridView::removed() QTRY_VERIFY(contentItem != 0); model.removeItem(1); - QCOMPARE(canvas->rootObject()->property("count").toInt(), model.count()); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); QSGText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); @@ -443,6 +454,7 @@ void tst_QSGGridView::removed() QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); + // Checks that onRemove is called QString removed = canvas->rootObject()->property("removed").toString(); QTRY_COMPARE(removed, QString("Item1")); @@ -452,13 +464,13 @@ void tst_QSGGridView::removed() for (int i = 0; i < model.count() && i < itemCount; ++i) { QSGItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); QTRY_VERIFY(item->y() == (i/3)*60); } // Remove first item (which is the current item); model.removeItem(0); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); name = findItem(contentItem, "textName", 0); QTRY_VERIFY(name != 0); @@ -467,25 +479,25 @@ void tst_QSGGridView::removed() QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(0)); + // Confirm items positioned correctly itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QSGItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); QTRY_VERIFY(item->y() == (i/3)*60); } // Remove items not visible model.removeItem(25); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); // Confirm items positioned correctly itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QSGItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); QTRY_VERIFY(item->y() == (i/3)*60); } @@ -498,12 +510,12 @@ void tst_QSGGridView::removed() QTRY_COMPARE(gridview->contentY(), 120.0); model.removeItem(1); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); // Confirm items positioned correctly for (int i = 6; i < 18; ++i) { QSGItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); QTRY_VERIFY(item->y() == (i/3)*60); } @@ -511,20 +523,19 @@ void tst_QSGGridView::removed() // Remove currentIndex QSGItem *oldCurrent = gridview->currentItem(); model.removeItem(9); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); QTRY_COMPARE(gridview->currentIndex(), 9); QTRY_VERIFY(gridview->currentItem() != oldCurrent); gridview->setContentY(0); // let transitions settle. - QTest::qWait(100); + QTest::qWait(300); // Confirm items positioned correctly itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QSGItem *item = findItem(contentItem, "wrapper", i); - if (!item) qWarning() << "Item" << i << "not found"; - QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); QTRY_VERIFY(item->y() == (i/3)*60); } @@ -587,7 +598,7 @@ void tst_QSGGridView::clear() // confirm sanity when adding an item to cleared list model.addItem("New", "1"); - QVERIFY(gridview->count() == 1); + QTRY_COMPARE(gridview->count(), 1); QVERIFY(gridview->currentItem() != 0); QVERIFY(gridview->currentIndex() == 0); @@ -631,10 +642,12 @@ void tst_QSGGridView::moved() gridview->setContentY(contentY); model.moveItems(from, to, count); + // wait for items to move + QTest::qWait(300); + // Confirm items positioned correctly and indexes correct int firstVisibleIndex = qCeil(contentY / 60.0) * 3; int itemCount = findItems(contentItem, "wrapper").count(); - for (int i = firstVisibleIndex; i < model.count() && i < itemCount; ++i) { if (i >= firstVisibleIndex + 18) // index has moved out of view continue; @@ -678,12 +691,12 @@ void tst_QSGGridView::moved_data() QTest::newRow("move 1 forwards, from non-visible -> visible") << 120.0 // show 6-23 << 1 << 23 << 1 - << 0.0; + << 0.0; // only 1 item was removed from the 1st row, so it doesn't move down QTest::newRow("move 1 forwards, from non-visible -> visible (move first item)") << 120.0 // // show 6-23 << 0 << 6 << 1 - << 0.0; + << 0.0; // only 1 item was removed from the 1st row, so it doesn't move down QTest::newRow("move 1 forwards, from visible -> non-visible") << 0.0 @@ -701,6 +714,11 @@ void tst_QSGGridView::moved_data() << 10 << 5 << 1 << 0.0; + QTest::newRow("move 1 backwards, within visible items (to first index)") + << 0.0 + << 10 << 0 << 1 + << 0.0; + QTest::newRow("move 1 backwards, from non-visible -> visible") << 0.0 << 28 << 8 << 1 @@ -714,12 +732,12 @@ void tst_QSGGridView::moved_data() QTest::newRow("move 1 backwards, from visible -> non-visible") << 120.0 // show 6-23 << 7 << 1 << 1 - << 60.0 * 2; // this results in a forward movement that removes 6 items (2 rows) + << 0.0; // only 1 item moved back, so items shift accordingly and first row doesn't move QTest::newRow("move 1 backwards, from visible -> non-visible (move first item)") << 120.0 // show 6-23 << 7 << 0 << 1 - << 60.0 * 2; // first visible item moved, so all items shift 2 rows down with it + << 0.0; // only 1 item moved back, so items shift accordingly and first row doesn't move QTest::newRow("move multiple forwards, within visible items") @@ -730,12 +748,12 @@ void tst_QSGGridView::moved_data() QTest::newRow("move multiple forwards, from non-visible -> visible") << 120.0 // show 6-23 << 1 << 6 << 3 - << 60.0; // top row moved, all items should shift down by 1 row + << 60.0; // 1st row (it's above visible area) disappears, 0 drops down 1 row, first visible item (6) stays where it is QTest::newRow("move multiple forwards, from non-visible -> visible (move first item)") << 120.0 // show 6-23 << 0 << 6 << 3 - << 60.0; // top row moved, all items should shift down by 1 row + << 60.0; // top row moved and shifted to below 3rd row, all items should shift down by 1 row QTest::newRow("move multiple forwards, from visible -> non-visible") << 0.0 @@ -766,14 +784,248 @@ void tst_QSGGridView::moved_data() QTest::newRow("move multiple backwards, from visible -> non-visible") << 120.0 // show 6-23 << 16 << 1 << 3 - << 60.0 * 5; // this results in a forward movement that removes 15 items (5 rows) + << -60.0; // to minimize movement, items are added above visible area, all items move up by 1 row QTest::newRow("move multiple backwards, from visible -> non-visible (move first item)") << 120.0 // show 6-23 << 16 << 0 << 3 - << 60.0 * 5; // this results in a forward movement that removes 16 items (5 rows) + << -60.0; // 16,17,18 move to above item 0, all items move up by 1 row } +struct ListChange { + enum { Inserted, Removed, Moved, SetCurrent } type; + int index; + int count; + int to; // Move + + static ListChange insert(int index, int count = 1) { ListChange c = { Inserted, index, count, -1 }; return c; } + static ListChange remove(int index, int count = 1) { ListChange c = { Removed, index, count, -1 }; return c; } + static ListChange move(int index, int to, int count) { ListChange c = { Moved, index, count, to }; return c; } + static ListChange setCurrent(int index) { ListChange c = { SetCurrent, index, -1, -1 }; return c; } +}; +Q_DECLARE_METATYPE(QList) + +void tst_QSGGridView::multipleChanges() +{ + QFETCH(int, startCount); + QFETCH(QList, changes); + QFETCH(int, newCount); + QFETCH(int, newCurrentIndex); + + QSGView *canvas = createView(); + canvas->show(); + + TestModel model; + for (int i = 0; i < startCount; i++) + model.addItem("Item" + QString::number(i), ""); + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testRightToLeft", QVariant(false)); + ctxt->setContextProperty("testTopToBottom", QVariant(false)); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview1.qml")); + qApp->processEvents(); + + QSGGridView *gridview = findItem(canvas->rootObject(), "grid"); + QTRY_VERIFY(gridview != 0); + + for (int i=0; i > items; + for (int j=changes[i].index; jsetCurrentIndex(changes[i].index); + break; + } + } + + QTRY_COMPARE(gridview->count(), newCount); + QCOMPARE(gridview->count(), model.count()); + QTRY_COMPARE(gridview->currentIndex(), newCurrentIndex); + + QSGText *name; + QSGText *number; + QSGItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); + int itemCount = findItems(contentItem, "wrapper").count(); + for (int i=0; i < model.count() && i < itemCount; ++i) { + QSGItem *item = findItem(contentItem, "wrapper", i); + QVERIFY2(item, QTest::toString(QString("Item %1 not found").arg(i))); + name = findItem(contentItem, "textName", i); + QVERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); + number = findItem(contentItem, "textNumber", i); + QVERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); + } + + delete canvas; +} + +void tst_QSGGridView::multipleChanges_data() +{ + QTest::addColumn("startCount"); + QTest::addColumn >("changes"); + QTest::addColumn("newCount"); + QTest::addColumn("newCurrentIndex"); + + QList changes; + + for (int i=1; i<30; i++) + changes << ListChange::remove(0); + QTest::newRow("remove all but 1, first->last") << 30 << changes << 1 << 0; + + changes << ListChange::remove(0); + QTest::newRow("remove all") << 30 << changes << 0 << -1; + + changes.clear(); + changes << ListChange::setCurrent(29); + for (int i=29; i>0; i--) + changes << ListChange::remove(i); + QTest::newRow("remove last (current) -> first") << 30 << changes << 1 << 0; + + QTest::newRow("remove then insert at 0") << 10 << (QList() + << ListChange::remove(0, 1) + << ListChange::insert(0, 1) + ) << 10 << 1; + + QTest::newRow("remove then insert at non-zero index") << 10 << (QList() + << ListChange::setCurrent(2) + << ListChange::remove(2, 1) + << ListChange::insert(2, 1) + ) << 10 << 3; + + QTest::newRow("remove current then insert below it") << 10 << (QList() + << ListChange::setCurrent(1) + << ListChange::remove(1, 3) + << ListChange::insert(2, 2) + ) << 9 << 1; + + QTest::newRow("remove current index then move it down") << 10 << (QList() + << ListChange::setCurrent(2) + << ListChange::remove(1, 3) + << ListChange::move(1, 5, 1) + ) << 7 << 5; + + QTest::newRow("remove current index then move it up") << 10 << (QList() + << ListChange::setCurrent(5) + << ListChange::remove(4, 3) + << ListChange::move(4, 1, 1) + ) << 7 << 1; + + + QTest::newRow("insert multiple times") << 0 << (QList() + << ListChange::insert(0, 2) + << ListChange::insert(0, 4) + << ListChange::insert(0, 6) + ) << 12 << 10; + + QTest::newRow("insert multiple times with current index changes") << 0 << (QList() + << ListChange::insert(0, 2) + << ListChange::insert(0, 4) + << ListChange::insert(0, 6) + << ListChange::setCurrent(3) + << ListChange::insert(3, 2) + ) << 14 << 5; + + QTest::newRow("insert and remove all") << 0 << (QList() + << ListChange::insert(0, 30) + << ListChange::remove(0, 30) + ) << 0 << -1; + + QTest::newRow("insert and remove current") << 30 << (QList() + << ListChange::insert(1) + << ListChange::setCurrent(1) + << ListChange::remove(1) + ) << 30 << 1; + + QTest::newRow("insert before 0, then remove cross section of new and old items") << 10 << (QList() + << ListChange::insert(0, 10) + << ListChange::remove(5, 10) + ) << 10 << 5; + + QTest::newRow("insert multiple, then move new items to end") << 10 << (QList() + << ListChange::insert(0, 3) + << ListChange::move(0, 10, 3) + ) << 13 << 0; + + QTest::newRow("insert multiple, then move new and some old items to end") << 10 << (QList() + << ListChange::insert(0, 3) + << ListChange::move(0, 8, 5) + ) << 13 << 11; + + QTest::newRow("insert multiple at end, then move new and some old items to start") << 10 << (QList() + << ListChange::setCurrent(9) + << ListChange::insert(10, 3) + << ListChange::move(8, 0, 5) + ) << 13 << 1; + + + QTest::newRow("move back and forth to same index") << 10 << (QList() + << ListChange::setCurrent(1) + << ListChange::move(1, 2, 2) + << ListChange::move(2, 1, 2) + ) << 10 << 1; + + QTest::newRow("move forwards then back") << 10 << (QList() + << ListChange::setCurrent(2) + << ListChange::move(1, 2, 3) + << ListChange::move(3, 0, 5) + ) << 10 << 0; + + QTest::newRow("move current, then remove it") << 10 << (QList() + << ListChange::setCurrent(5) + << ListChange::move(5, 0, 1) + << ListChange::remove(0) + ) << 9 << 0; + + QTest::newRow("move current, then insert before it") << 10 << (QList() + << ListChange::setCurrent(5) + << ListChange::move(5, 0, 1) + << ListChange::insert(0) + ) << 11 << 1; + + QTest::newRow("move multiple, then remove them") << 10 << (QList() + << ListChange::setCurrent(1) + << ListChange::move(5, 1, 3) + << ListChange::remove(1, 3) + ) << 7 << 1; + + QTest::newRow("move multiple, then insert before them") << 10 << (QList() + << ListChange::setCurrent(5) + << ListChange::move(5, 1, 3) + << ListChange::insert(1, 5) + ) << 15 << 6; + + QTest::newRow("move multiple, then insert after them") << 10 << (QList() + << ListChange::setCurrent(3) + << ListChange::move(0, 1, 2) + << ListChange::insert(3, 5) + ) << 15 << 8; + + + QTest::newRow("clear current") << 0 << (QList() + << ListChange::insert(0, 5) + << ListChange::setCurrent(-1) + << ListChange::remove(0, 5) + << ListChange::insert(0, 5) + ) << 5 << -1; +} + + void tst_QSGGridView::swapWithFirstItem() { // QTBUG_9697 @@ -2375,10 +2627,11 @@ void tst_QSGGridView::onAdd() items << qMakePair(QString("value %1").arg(i), QString::number(i)); model.addItems(items); + QTRY_COMPARE(model.count(), qobject_cast(canvas->rootObject())->count()); qApp->processEvents(); QVariantList result = object->property("addedDelegates").toList(); - QCOMPARE(result.count(), items.count()); + QTRY_COMPARE(result.count(), items.count()); for (int i=0; isetSource(QUrl::fromLocalFile(SRCDIR "/data/attachedSignals.qml")); QObject *object = canvas->rootObject(); - qApp->processEvents(); - model.removeItems(indexToRemove, removeCount); - qApp->processEvents(); + QTRY_COMPARE(model.count(), qobject_cast(canvas->rootObject())->count()); QCOMPARE(object->property("removedDelegateCount"), QVariant(removeCount)); delete canvas; diff --git a/tests/auto/declarative/qsglistview/tst_qsglistview.cpp b/tests/auto/declarative/qsglistview/tst_qsglistview.cpp index 45a32da768..df4c5bc35b 100644 --- a/tests/auto/declarative/qsglistview/tst_qsglistview.cpp +++ b/tests/auto/declarative/qsglistview/tst_qsglistview.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include "../../../shared/util.h" #include "incrementalmodel.h" #include @@ -90,6 +91,9 @@ private slots: void qAbstractItemModel_moved(); void qAbstractItemModel_moved_data(); + void multipleChanges(); + void multipleChanges_data(); + void qListModelInterface_clear(); void qAbstractItemModel_clear(); @@ -294,6 +298,12 @@ public: emit itemsInserted(index, 1); } + void insertItems(int index, const QList > &items) { + for (int i=0; i(items[i].first, items[i].second)); + emit itemsInserted(index, items.count()); + } + void removeItem(int index) { list.removeAt(index); emit itemsRemoved(index, 1); @@ -378,6 +388,13 @@ public: emit endInsertRows(); } + void insertItems(int index, const QList > &items) { + emit beginInsertRows(QModelIndex(), index, index+items.count()-1); + for (int i=0; i(items[i].first, items[i].second)); + emit endInsertRows(); + } + void removeItem(int index) { emit beginRemoveRows(QModelIndex(), index, index); list.removeAt(index); @@ -544,6 +561,7 @@ template void tst_QSGListView::inserted() { QSGView *canvas = createView(); + canvas->show(); T model; model.addItem("Fred", "12345"); @@ -567,6 +585,7 @@ void tst_QSGListView::inserted() model.insertItem(1, "Will", "9876"); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item QSGText *name = findItem(contentItem, "textName", 1); @@ -584,7 +603,7 @@ void tst_QSGListView::inserted() model.insertItem(0, "Foo", "1111"); // zero index, and current item - QCOMPARE(canvas->rootObject()->property("count").toInt(), model.count()); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item name = findItem(contentItem, "textName", 0); @@ -625,6 +644,8 @@ void tst_QSGListView::inserted() // QTBUG-19675 model.clear(); model.insertItem(0, "Hello", "1234"); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); + QSGItem *item = findItem(contentItem, "wrapper", 0); QVERIFY(item); QCOMPARE(item->y(), 0.); @@ -660,7 +681,7 @@ void tst_QSGListView::removed(bool animated) QTRY_VERIFY(contentItem != 0); model.removeItem(1); - QCOMPARE(canvas->rootObject()->property("count").toInt(), model.count()); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); QSGText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); @@ -680,8 +701,7 @@ void tst_QSGListView::removed(bool animated) // Remove first item (which is the current item); model.removeItem(0); // post: top item starts at 20 - - QTest::qWait(300); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); name = findItem(contentItem, "textName", 0); QTRY_VERIFY(name != 0); @@ -701,7 +721,7 @@ void tst_QSGListView::removed(bool animated) // Remove items not visible model.removeItem(18); - qApp->processEvents(); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); // Confirm items positioned correctly itemCount = findItems(contentItem, "wrapper").count(); @@ -717,7 +737,7 @@ void tst_QSGListView::removed(bool animated) listview->setCurrentIndex(10); model.removeItem(1); // post: top item will be at 40 - qApp->processEvents(); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); // Confirm items positioned correctly for (int i = 2; i < 18; ++i) { @@ -769,7 +789,7 @@ void tst_QSGListView::removed(bool animated) // remove all visible items model.removeItems(1, 18); - QTest::qWait(300); + QTRY_COMPARE(listview->count() , model.count()); // Confirm items positioned correctly itemCount = findItems(contentItem, "wrapper").count(); @@ -781,10 +801,13 @@ void tst_QSGListView::removed(bool animated) } model.removeItems(1, 17); -// QTest::qWait(300); + QTRY_COMPARE(listview->count() , model.count()); model.removeItems(2, 1); + QTRY_COMPARE(listview->count() , model.count()); + model.addItem("New", "1"); + QTRY_COMPARE(listview->count() , model.count()); QTRY_VERIFY(name = findItem(contentItem, "textName", model.count()-1)); QCOMPARE(name->text(), QString("New")); @@ -889,12 +912,23 @@ void tst_QSGListView::moved() listview->setContentY(contentY); model.moveItems(from, to, count); - qApp->processEvents(); + + // wait for items to move + QTest::qWait(300); + + QList items = findItems(contentItem, "wrapper"); + int firstVisibleIndex = -1; + for (int i=0; iy() >= contentY) { + QDeclarativeExpression e(qmlContext(items[i]), items[i], "index"); + firstVisibleIndex = e.evaluate().toInt(); + break; + } + } + QVERIFY2(firstVisibleIndex >= 0, QTest::toString(firstVisibleIndex)); // Confirm items positioned correctly and indexes correct - int firstVisibleIndex = qCeil(contentY / 20.0); int itemCount = findItems(contentItem, "wrapper").count(); - for (int i = firstVisibleIndex; i < model.count() && i < itemCount; ++i) { if (i >= firstVisibleIndex + 16) // index has moved out of view continue; @@ -937,12 +971,12 @@ void tst_QSGListView::moved_data() QTest::newRow("move 1 forwards, from non-visible -> visible") << 80.0 // show 4-19 << 1 << 18 << 1 - << 20.0; + << 20.0; // removed 1 item above the first visible, so item 0 should drop down by 1 to minimize movement QTest::newRow("move 1 forwards, from non-visible -> visible (move first item)") << 80.0 // show 4-19 << 0 << 4 << 1 - << 20.0; + << 20.0; // first item has moved to below item4, everything drops down by size of 1 item QTest::newRow("move 1 forwards, from visible -> non-visible") << 0.0 @@ -960,6 +994,11 @@ void tst_QSGListView::moved_data() << 4 << 1 << 1 << 0.0; + QTest::newRow("move 1 backwards, within visible items (to first index)") + << 0.0 + << 4 << 0 << 1 + << 0.0; + QTest::newRow("move 1 backwards, from non-visible -> visible") << 0.0 << 20 << 4 << 1 @@ -973,12 +1012,12 @@ void tst_QSGListView::moved_data() QTest::newRow("move 1 backwards, from visible -> non-visible") << 80.0 // show 4-19 << 16 << 1 << 1 - << 20.0 * 15; // this results in a forward movement that removes 15 items + << -20.0; // to minimize movement, item 0 moves to -20, and other items do not move QTest::newRow("move 1 backwards, from visible -> non-visible (move first item)") << 80.0 // show 4-19 << 16 << 0 << 1 - << 20.0 * 16; // everything should move to after item 16 + << -20.0; // to minimize movement, item 16 (now at 0) moves to -20, and other items do not move QTest::newRow("move multiple forwards, within visible items") @@ -1025,12 +1064,248 @@ void tst_QSGListView::moved_data() QTest::newRow("move multiple backwards, from visible -> non-visible") << 80.0 // show 4-19 << 16 << 1 << 3 - << 20.0 * 15; // this results in a forward movement that removes 15 items + << -20.0 * 3; // to minimize movement, 0 moves by -60, and other items do not move QTest::newRow("move multiple backwards, from visible -> non-visible (move first item)") << 80.0 // show 4-19 << 16 << 0 << 3 - << 20.0 * 16; + << -20.0 * 3; // to minimize movement, 16,17,18 move to above item 0, and other items do not move +} + + +struct ListChange { + enum { Inserted, Removed, Moved, SetCurrent } type; + int index; + int count; + int to; // Move + + static ListChange insert(int index, int count = 1) { ListChange c = { Inserted, index, count, -1 }; return c; } + static ListChange remove(int index, int count = 1) { ListChange c = { Removed, index, count, -1 }; return c; } + static ListChange move(int index, int to, int count) { ListChange c = { Moved, index, count, to }; return c; } + static ListChange setCurrent(int index) { ListChange c = { SetCurrent, index, -1, -1 }; return c; } +}; +Q_DECLARE_METATYPE(QList) + +void tst_QSGListView::multipleChanges() +{ + QFETCH(int, startCount); + QFETCH(QList, changes); + QFETCH(int, newCount); + QFETCH(int, newCurrentIndex); + + QSGView *canvas = createView(); + canvas->show(); + + TestModel model; + for (int i = 0; i < startCount; i++) + model.addItem("Item" + QString::number(i), ""); + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + + TestObject *testObject = new TestObject; + ctxt->setContextProperty("testObject", testObject); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); + qApp->processEvents(); + + QSGListView *listview = findItem(canvas->rootObject(), "list"); + QTRY_VERIFY(listview != 0); + + for (int i=0; i > items; + for (int j=changes[i].index; jsetCurrentIndex(changes[i].index); + break; + } + } + + QTRY_COMPARE(listview->count(), newCount); + QCOMPARE(listview->count(), model.count()); + QTRY_COMPARE(listview->currentIndex(), newCurrentIndex); + + QSGText *name; + QSGText *number; + QSGItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); + int itemCount = findItems(contentItem, "wrapper").count(); + for (int i=0; i < model.count() && i < itemCount; ++i) { + QSGItem *item = findItem(contentItem, "wrapper", i); + QVERIFY2(item, QTest::toString(QString("Item %1 not found").arg(i))); + name = findItem(contentItem, "textName", i); + QVERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); + number = findItem(contentItem, "textNumber", i); + QVERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); + } + + delete testObject; + delete canvas; +} + +void tst_QSGListView::multipleChanges_data() +{ + QTest::addColumn("startCount"); + QTest::addColumn >("changes"); + QTest::addColumn("newCount"); + QTest::addColumn("newCurrentIndex"); + + QList changes; + + for (int i=1; i<30; i++) + changes << ListChange::remove(0); + QTest::newRow("remove all but 1, first->last") << 30 << changes << 1 << 0; + + changes << ListChange::remove(0); + QTest::newRow("remove all") << 30 << changes << 0 << -1; + + changes.clear(); + changes << ListChange::setCurrent(29); + for (int i=29; i>0; i--) + changes << ListChange::remove(i); + QTest::newRow("remove last (current) -> first") << 30 << changes << 1 << 0; + + QTest::newRow("remove then insert at 0") << 10 << (QList() + << ListChange::remove(0, 1) + << ListChange::insert(0, 1) + ) << 10 << 1; + + QTest::newRow("remove then insert at non-zero index") << 10 << (QList() + << ListChange::setCurrent(2) + << ListChange::remove(2, 1) + << ListChange::insert(2, 1) + ) << 10 << 3; + + QTest::newRow("remove current then insert below it") << 10 << (QList() + << ListChange::setCurrent(1) + << ListChange::remove(1, 3) + << ListChange::insert(2, 2) + ) << 9 << 1; + + QTest::newRow("remove current index then move it down") << 10 << (QList() + << ListChange::setCurrent(2) + << ListChange::remove(1, 3) + << ListChange::move(1, 5, 1) + ) << 7 << 5; + + QTest::newRow("remove current index then move it up") << 10 << (QList() + << ListChange::setCurrent(5) + << ListChange::remove(4, 3) + << ListChange::move(4, 1, 1) + ) << 7 << 1; + + + QTest::newRow("insert multiple times") << 0 << (QList() + << ListChange::insert(0, 2) + << ListChange::insert(0, 4) + << ListChange::insert(0, 6) + ) << 12 << 10; + + QTest::newRow("insert multiple times with current index changes") << 0 << (QList() + << ListChange::insert(0, 2) + << ListChange::insert(0, 4) + << ListChange::insert(0, 6) + << ListChange::setCurrent(3) + << ListChange::insert(3, 2) + ) << 14 << 5; + + QTest::newRow("insert and remove all") << 0 << (QList() + << ListChange::insert(0, 30) + << ListChange::remove(0, 30) + ) << 0 << -1; + + QTest::newRow("insert and remove current") << 30 << (QList() + << ListChange::insert(1) + << ListChange::setCurrent(1) + << ListChange::remove(1) + ) << 30 << 1; + + QTest::newRow("insert before 0, then remove cross section of new and old items") << 10 << (QList() + << ListChange::insert(0, 10) + << ListChange::remove(5, 10) + ) << 10 << 5; + + QTest::newRow("insert multiple, then move new items to end") << 10 << (QList() + << ListChange::insert(0, 3) + << ListChange::move(0, 10, 3) + ) << 13 << 0; + + QTest::newRow("insert multiple, then move new and some old items to end") << 10 << (QList() + << ListChange::insert(0, 3) + << ListChange::move(0, 8, 5) + ) << 13 << 11; + + QTest::newRow("insert multiple at end, then move new and some old items to start") << 10 << (QList() + << ListChange::setCurrent(9) + << ListChange::insert(10, 3) + << ListChange::move(8, 0, 5) + ) << 13 << 1; + + + QTest::newRow("move back and forth to same index") << 10 << (QList() + << ListChange::setCurrent(1) + << ListChange::move(1, 2, 2) + << ListChange::move(2, 1, 2) + ) << 10 << 1; + + QTest::newRow("move forwards then back") << 10 << (QList() + << ListChange::setCurrent(2) + << ListChange::move(1, 2, 3) + << ListChange::move(3, 0, 5) + ) << 10 << 0; + + QTest::newRow("move current, then remove it") << 10 << (QList() + << ListChange::setCurrent(5) + << ListChange::move(5, 0, 1) + << ListChange::remove(0) + ) << 9 << 0; + + QTest::newRow("move current, then insert before it") << 10 << (QList() + << ListChange::setCurrent(5) + << ListChange::move(5, 0, 1) + << ListChange::insert(0) + ) << 11 << 1; + + QTest::newRow("move multiple, then remove them") << 10 << (QList() + << ListChange::setCurrent(1) + << ListChange::move(5, 1, 3) + << ListChange::remove(1, 3) + ) << 7 << 1; + + QTest::newRow("move multiple, then insert before them") << 10 << (QList() + << ListChange::setCurrent(5) + << ListChange::move(5, 1, 3) + << ListChange::insert(1, 5) + ) << 15 << 6; + + QTest::newRow("move multiple, then insert after them") << 10 << (QList() + << ListChange::setCurrent(3) + << ListChange::move(0, 1, 2) + << ListChange::insert(3, 5) + ) << 15 << 8; + + + QTest::newRow("clear current") << 0 << (QList() + << ListChange::insert(0, 5) + << ListChange::setCurrent(-1) + << ListChange::remove(0, 5) + << ListChange::insert(0, 5) + ) << 5 << -1; } void tst_QSGListView::swapWithFirstItem() @@ -1167,6 +1442,7 @@ void tst_QSGListView::enforceRange_withoutHighlight() void tst_QSGListView::spacing() { QSGView *canvas = createView(); + canvas->show(); TestModel model; for (int i = 0; i < 30; i++) @@ -1226,6 +1502,7 @@ void tst_QSGListView::spacing() void tst_QSGListView::sections() { QSGView *canvas = createView(); + canvas->show(); TestModel model; for (int i = 0; i < 30; i++) @@ -1257,6 +1534,7 @@ void tst_QSGListView::sections() // Remove section boundary model.removeItem(5); + QTRY_COMPARE(listview->count(), model.count()); // New section header created QSGItem *item = findItem(contentItem, "wrapper", 5); @@ -1264,6 +1542,7 @@ void tst_QSGListView::sections() QTRY_COMPARE(item->height(), 40.0); model.insertItem(3, "New Item", "0"); + QTRY_COMPARE(listview->count(), model.count()); // Section header moved item = findItem(contentItem, "wrapper", 5); @@ -1276,6 +1555,7 @@ void tst_QSGListView::sections() // insert item which will become a section header model.insertItem(6, "Replace header", "1"); + QTRY_COMPARE(listview->count(), model.count()); item = findItem(contentItem, "wrapper", 6); QTRY_VERIFY(item); @@ -1304,6 +1584,7 @@ void tst_QSGListView::sections() // check that headers change when item changes listview->setContentY(0); model.modifyItem(0, "changed", "2"); + QTest::qWait(300); item = findItem(contentItem, "wrapper", 1); QTRY_VERIFY(item); @@ -1315,6 +1596,7 @@ void tst_QSGListView::sections() void tst_QSGListView::sectionsDelegate() { QSGView *canvas = createView(); + canvas->show(); TestModel model; for (int i = 0; i < 30; i++) @@ -1353,6 +1635,7 @@ void tst_QSGListView::sectionsDelegate() model.modifyItem(2, "Three", "aaa"); model.modifyItem(3, "Four", "aaa"); model.modifyItem(4, "Five", "aaa"); + QTest::qWait(300); for (int i = 0; i < 3; ++i) { QSGItem *item = findItem(contentItem, @@ -1363,7 +1646,7 @@ void tst_QSGListView::sectionsDelegate() // remove section boundary model.removeItem(5); - qApp->processEvents(); + QTRY_COMPARE(listview->count(), model.count()); for (int i = 0; i < 3; ++i) { QSGItem *item = findItem(contentItem, "sect_" + (i == 0 ? QString("aaa") : QString::number(i))); @@ -2694,6 +2977,7 @@ void tst_QSGListView::resizeDelegate() listview->setCurrentIndex(25); listview->setContentY(0); + QTest::qWait(300); for (int i = 0; i < 16; ++i) { QSGItem *item = findItem(contentItem, "wrapper", i); @@ -2905,8 +3189,7 @@ void tst_QSGListView::onAdd() for (int i=0; iprocessEvents(); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); QVariantList result = object->property("addedDelegates").toList(); QCOMPARE(result.count(), items.count()); @@ -2952,10 +3235,9 @@ void tst_QSGListView::onRemove() canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/attachedSignals.qml")); QObject *object = canvas->rootObject(); - qApp->processEvents(); - model.removeItems(indexToRemove, removeCount); - qApp->processEvents(); + QTRY_COMPARE(canvas->rootObject()->property("count").toInt(), model.count()); + QCOMPARE(object->property("removedDelegateCount"), QVariant(removeCount)); delete canvas; From 1dd8b509074ba60da671f7671f8cf09c3fc001ae Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Tue, 30 Aug 2011 16:02:41 +1000 Subject: [PATCH 08/68] Remove scheduleLayout() and layoutScheduled No longer necessary since views now call QSGItem::polish() which does its own layout scheduling and only does layouts when necessary Change-Id: I7d265fcf4177344c4ba10600b551a5545284316f Reviewed-on: http://codereview.qt.nokia.com/3843 Reviewed-by: Qt Sanity Bot Reviewed-by: Martin Jones --- src/declarative/items/qsggridview.cpp | 2 +- src/declarative/items/qsgitemview.cpp | 20 +++++--------------- src/declarative/items/qsgitemview_p_p.h | 2 -- src/declarative/items/qsglistview.cpp | 2 +- 4 files changed, 7 insertions(+), 19 deletions(-) diff --git a/src/declarative/items/qsggridview.cpp b/src/declarative/items/qsggridview.cpp index f0956367c5..50ea86ab04 100644 --- a/src/declarative/items/qsggridview.cpp +++ b/src/declarative/items/qsggridview.cpp @@ -774,7 +774,7 @@ void QSGGridViewPrivate::itemGeometryChanged(QSGItem *item, const QRectF &newGeo if (item == q) { if (newGeometry.height() != oldGeometry.height() || newGeometry.width() != oldGeometry.width()) { updateViewport(); - scheduleLayout(); + q->polish(); } } } diff --git a/src/declarative/items/qsgitemview.cpp b/src/declarative/items/qsgitemview.cpp index c28fbb1532..cd598e9a28 100644 --- a/src/declarative/items/qsgitemview.cpp +++ b/src/declarative/items/qsgitemview.cpp @@ -786,7 +786,7 @@ void QSGItemView::itemsInserted(int index, int count) d->currentChanges.prepare(d->currentIndex, d->itemCount); d->currentChanges.doInsert(index, count); - d->scheduleLayout(); + polish(); } void QSGItemView::itemsRemoved(int index, int count) @@ -797,7 +797,7 @@ void QSGItemView::itemsRemoved(int index, int count) d->currentChanges.prepare(d->currentIndex, d->itemCount); d->currentChanges.doRemove(index, count); - d->scheduleLayout(); + polish(); } void QSGItemView::itemsMoved(int from, int to, int count) @@ -811,7 +811,7 @@ void QSGItemView::itemsMoved(int from, int to, int count) d->currentChanges.prepare(d->currentIndex, d->itemCount); d->currentChanges.doMove(from, to, count); - d->scheduleLayout(); + polish(); } void QSGItemView::itemsChanged(int index, int count) @@ -822,7 +822,7 @@ void QSGItemView::itemsChanged(int index, int count) d->currentChanges.prepare(d->currentIndex, d->itemCount); d->currentChanges.doChange(index, count); - d->scheduleLayout(); + polish(); } void QSGItemView::modelReset() @@ -1166,7 +1166,7 @@ QSGItemViewPrivate::QSGItemViewPrivate() , headerComponent(0), header(0), footerComponent(0), footer(0) , minExtent(0), maxExtent(0) , ownModel(false), wrap(false), lazyRelease(false), deferredRelease(false) - , layoutScheduled(false), inApplyModelChanges(false), inViewportMoved(false), forceLayout(false), currentIndexCleared(false) + , inApplyModelChanges(false), inViewportMoved(false), forceLayout(false), currentIndexCleared(false) , haveHighlightRange(false), autoHighlight(true), highlightRangeStartValid(false), highlightRangeEndValid(false) , minExtentDirty(true), maxExtentDirty(true) { @@ -1406,15 +1406,6 @@ void QSGItemViewPrivate::regenerate() } } -void QSGItemViewPrivate::scheduleLayout() -{ - Q_Q(QSGItemView); - if (!layoutScheduled) { - layoutScheduled = true; - q->polish(); - } -} - void QSGItemViewPrivate::updateViewport() { Q_Q(QSGItemView); @@ -1429,7 +1420,6 @@ void QSGItemViewPrivate::updateViewport() void QSGItemViewPrivate::layout() { Q_Q(QSGItemView); - layoutScheduled = false; if (!isValid() && !visibleItems.count()) { clear(); setPosition(contentStartPosition()); diff --git a/src/declarative/items/qsgitemview_p_p.h b/src/declarative/items/qsgitemview_p_p.h index e2e222ba36..243045526a 100644 --- a/src/declarative/items/qsgitemview_p_p.h +++ b/src/declarative/items/qsgitemview_p_p.h @@ -126,7 +126,6 @@ public: void layout(); void refill(); void refill(qreal from, qreal to, bool doBuffer = false); - void scheduleLayout(); void mirrorChange(); FxViewItem *createItem(int modelIndex); @@ -184,7 +183,6 @@ public: bool wrap : 1; bool lazyRelease : 1; bool deferredRelease : 1; - bool layoutScheduled : 1; bool inApplyModelChanges : 1; bool inViewportMoved : 1; bool forceLayout : 1; diff --git a/src/declarative/items/qsglistview.cpp b/src/declarative/items/qsglistview.cpp index 82a2dd7774..73bbd87e2a 100644 --- a/src/declarative/items/qsglistview.cpp +++ b/src/declarative/items/qsglistview.cpp @@ -1037,7 +1037,7 @@ void QSGListViewPrivate::itemGeometryChanged(QSGItem *item, const QRectF &newGeo if ((orient == QSGListView::Vertical && newGeometry.height() != oldGeometry.height()) || (orient == QSGListView::Horizontal && newGeometry.width() != oldGeometry.width())) { forceLayout = true; - scheduleLayout(); + q->polish(); } } } From d481f2ff518df1e44103d1850e7d52bd69260c34 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 31 Aug 2011 12:36:32 +1000 Subject: [PATCH 09/68] Allow reference to signals using 'on' handler syntax. This will allow APIs like the following: trigger: mouseArea.onClicked However, signal handlers will not be callable from QML: mouseArea.onClicked() //throws exception Change-Id: I2ef5cb4e1f3ed4814ef590962391e1b14e3f0c43 Reviewed-on: http://codereview.qt.nokia.com/3683 Reviewed-by: Qt Sanity Bot Reviewed-by: Aaron Kennedy --- .../qml/ftw/qmetaobjectbuilder.cpp | 10 +++- .../qml/qdeclarativepropertycache.cpp | 33 ++++++++++ .../qml/qdeclarativepropertycache_p.h | 5 +- src/declarative/qml/v8/qv8engine_p.h | 2 +- src/declarative/qml/v8/qv8qobjectwrapper.cpp | 57 ++++++++++++++---- src/declarative/qml/v8/qv8qobjectwrapper_p.h | 2 + .../data/signalHandlers.qml | 60 +++++++++++++++++++ .../tst_qdeclarativeecmascript.cpp | 31 ++++++++++ 8 files changed, 185 insertions(+), 15 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/signalHandlers.qml diff --git a/src/declarative/qml/ftw/qmetaobjectbuilder.cpp b/src/declarative/qml/ftw/qmetaobjectbuilder.cpp index f5e8369ebc..e52b9e1172 100644 --- a/src/declarative/qml/ftw/qmetaobjectbuilder.cpp +++ b/src/declarative/qml/ftw/qmetaobjectbuilder.cpp @@ -155,6 +155,7 @@ struct QMetaObjectPrivate int enumeratorCount, enumeratorData; int constructorCount, constructorData; int flags; + int signalCount; }; static inline const QMetaObjectPrivate *priv(const uint* data) @@ -1206,7 +1207,7 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf, QMetaObjectPrivate *pmeta = reinterpret_cast(buf + size); int pmetaSize = size; - dataIndex = 13; // Number of fields in the QMetaObjectPrivate. + dataIndex = 14; // Number of fields in the QMetaObjectPrivate. for (index = 0; index < d->properties.size(); ++index) { if (d->properties[index].notifySignal != -1) { hasNotifySignals = true; @@ -1214,9 +1215,10 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf, } } if (buf) { - pmeta->revision = 3; + pmeta->revision = 4; pmeta->flags = d->flags; pmeta->className = 0; // Class name is always the first string. + //pmeta->signalCount is handled in the "output method loop" as an optimization. pmeta->classInfoCount = d->classInfoNames.size(); pmeta->classInfoData = dataIndex; @@ -1274,7 +1276,7 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf, } // Reset the current data position to just past the QMetaObjectPrivate. - dataIndex = 13; + dataIndex = 14; // Add the class name to the string table. int offset = 0; @@ -1312,6 +1314,8 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf, data[dataIndex + 2] = ret; data[dataIndex + 3] = tag; data[dataIndex + 4] = attrs; + if (method->methodType() == QMetaMethod::Signal) + pmeta->signalCount++; } dataIndex += 5; } diff --git a/src/declarative/qml/qdeclarativepropertycache.cpp b/src/declarative/qml/qdeclarativepropertycache.cpp index 406e43fc21..05232d981a 100644 --- a/src/declarative/qml/qdeclarativepropertycache.cpp +++ b/src/declarative/qml/qdeclarativepropertycache.cpp @@ -313,10 +313,14 @@ void QDeclarativePropertyCache::append(QDeclarativeEngine *engine, const QMetaOb allowedRevisionCache.append(0); int methodCount = metaObject->methodCount(); + Q_ASSERT(QMetaObjectPrivate::get(metaObject)->revision >= 4); + int signalCount = QMetaObjectPrivate::get(metaObject)->signalCount; // 3 to block the destroyed signal and the deleteLater() slot int methodOffset = qMax(3, metaObject->methodOffset()); methodIndexCache.resize(methodCount - methodIndexCacheStart); + signalHandlerIndexCache.resize(signalCount); + int signalHandlerIndex = 0; for (int ii = methodOffset; ii < methodCount; ++ii) { QMetaMethod m = metaObject->method(ii); if (m.access() == QMetaMethod::Private) @@ -329,6 +333,7 @@ void QDeclarativePropertyCache::append(QDeclarativeEngine *engine, const QMetaOb while (*cptr != '(') { Q_ASSERT(*cptr != 0); utf8 |= *cptr & 0x80; ++cptr; } Data *data = &methodIndexCache[ii - methodIndexCacheStart]; + Data *sigdata = 0; data->lazyLoad(m); @@ -342,6 +347,12 @@ void QDeclarativePropertyCache::append(QDeclarativeEngine *engine, const QMetaOb data->metaObjectOffset = allowedRevisionCache.count() - 1; + if (data->isSignal()) { + sigdata = &signalHandlerIndexCache[signalHandlerIndex]; + *sigdata = *data; + sigdata->flags |= Data::IsSignalHandler; + } + Data *old = 0; if (utf8) { @@ -349,11 +360,33 @@ void QDeclarativePropertyCache::append(QDeclarativeEngine *engine, const QMetaOb if (Data **it = stringCache.value(methodName)) old = *it; stringCache.insert(methodName, data); + + if (data->isSignal()) { + QHashedString on(QStringLiteral("on") % methodName.at(0).toUpper() % methodName.midRef(1)); + stringCache.insert(on, sigdata); + ++signalHandlerIndex; + } } else { QHashedCStringRef methodName(signature, cptr - signature); if (Data **it = stringCache.value(methodName)) old = *it; stringCache.insert(methodName, data); + + if (data->isSignal()) { + int length = methodName.length(); + + char str[length + 3]; + str[0] = 'o'; + str[1] = 'n'; + str[2] = toupper(signature[0]); + if (length > 1) + memcpy(&str[3], &signature[1], length - 1); + str[length + 2] = '\0'; + + QHashedString on(QString::fromLatin1(str)); + stringCache.insert(on, sigdata); + ++signalHandlerIndex; + } } if (old) { diff --git a/src/declarative/qml/qdeclarativepropertycache_p.h b/src/declarative/qml/qdeclarativepropertycache_p.h index 8a1da1929c..33565c4d45 100644 --- a/src/declarative/qml/qdeclarativepropertycache_p.h +++ b/src/declarative/qml/qdeclarativepropertycache_p.h @@ -104,9 +104,10 @@ public: IsSignal = 0x00008000, // Function is a signal IsVMESignal = 0x00010000, // Signal was added by QML IsV8Function = 0x00020000, // Function takes QDeclarativeV8Function* args + IsSignalHandler = 0x00040000, // Function is a signal handler // Internal QDeclarativePropertyCache flags - NotFullyResolved = 0x00040000 // True if the type data is to be lazily resolved + NotFullyResolved = 0x00080000 // True if the type data is to be lazily resolved }; Q_DECLARE_FLAGS(Flags, Flag) @@ -133,6 +134,7 @@ public: bool isSignal() const { return flags & IsSignal; } bool isVMESignal() const { return flags & IsVMESignal; } bool isV8Function() const { return flags & IsV8Function; } + bool isSignalHandler() const { return flags & IsSignalHandler; } union { int propType; // When !NotFullyResolved @@ -221,6 +223,7 @@ private: IndexCache propertyIndexCache; IndexCache methodIndexCache; + IndexCache signalHandlerIndexCache; StringCache stringCache; AllowedRevisionCache allowedRevisionCache; v8::Persistent constructor; diff --git a/src/declarative/qml/v8/qv8engine_p.h b/src/declarative/qml/v8/qv8engine_p.h index bd5f360748..ab4da423ee 100644 --- a/src/declarative/qml/v8/qv8engine_p.h +++ b/src/declarative/qml/v8/qv8engine_p.h @@ -135,7 +135,7 @@ public: QV8ObjectResource(QV8Engine *engine) : engine(engine) { Q_ASSERT(engine); } enum ResourceType { ContextType, QObjectType, TypeType, ListType, VariantType, ValueTypeType, XMLHttpRequestType, DOMNodeType, SQLDatabaseType, - ListModelType, Context2DType, ParticleDataType }; + ListModelType, Context2DType, ParticleDataType, SignalHandlerType }; virtual ResourceType resourceType() const = 0; QV8Engine *engine; diff --git a/src/declarative/qml/v8/qv8qobjectwrapper.cpp b/src/declarative/qml/v8/qv8qobjectwrapper.cpp index 52e106494c..bf8dcea51b 100644 --- a/src/declarative/qml/v8/qv8qobjectwrapper.cpp +++ b/src/declarative/qml/v8/qv8qobjectwrapper.cpp @@ -109,6 +109,16 @@ public: QV8QObjectWrapper *wrapper; }; +class QV8SignalHandlerResource : public QV8ObjectResource +{ + V8_RESOURCE_TYPE(SignalHandlerType) +public: + QV8SignalHandlerResource(QV8Engine *engine, QObject *object, int index); + + QDeclarativeGuard object; + int index; +}; + namespace { struct MetaCallArgument { inline MetaCallArgument(); @@ -152,6 +162,11 @@ QV8QObjectResource::QV8QObjectResource(QV8Engine *engine, QObject *object) { } +QV8SignalHandlerResource::QV8SignalHandlerResource(QV8Engine *engine, QObject *object, int index) +: QV8ObjectResource(engine), object(object), index(index) +{ +} + static QAtomicInt objectIdCounter(1); QV8QObjectWrapper::QV8QObjectWrapper() @@ -177,6 +192,7 @@ void QV8QObjectWrapper::destroy() qPersistentDispose(m_hiddenObject); qPersistentDispose(m_destroySymbol); qPersistentDispose(m_toStringSymbol); + qPersistentDispose(m_signalHandlerConstructor); qPersistentDispose(m_methodConstructor); qPersistentDispose(m_constructor); } @@ -278,10 +294,21 @@ void QV8QObjectWrapper::init(QV8Engine *engine) m_methodConstructor = qPersistentNew(createFn); } + v8::Local connect = V8FUNCTION(Connect, engine); + v8::Local disconnect = V8FUNCTION(Disconnect, engine); + + { + v8::Local ft = v8::FunctionTemplate::New(); + ft->InstanceTemplate()->SetHasExternalResource(true); + ft->PrototypeTemplate()->Set(v8::String::New("connect"), connect, v8::DontEnum); + ft->PrototypeTemplate()->Set(v8::String::New("disconnect"), disconnect, v8::DontEnum); + m_signalHandlerConstructor = qPersistentNew(ft->GetFunction()); + } + { v8::Local prototype = engine->global()->Get(v8::String::New("Function"))->ToObject()->Get(v8::String::New("prototype"))->ToObject(); - prototype->Set(v8::String::New("connect"), V8FUNCTION(Connect, engine), v8::DontEnum); - prototype->Set(v8::String::New("disconnect"), V8FUNCTION(Disconnect, engine), v8::DontEnum); + prototype->Set(v8::String::New("connect"), connect, v8::DontEnum); + prototype->Set(v8::String::New("disconnect"), disconnect, v8::DontEnum); } } @@ -461,6 +488,11 @@ v8::Handle QV8QObjectWrapper::GetProperty(QV8Engine *engine, QObject return ((QDeclarativeVMEMetaObject *)(object->metaObject()))->vmeMethod(result->coreIndex); } else if (result->isV8Function()) { return MethodClosure::createWithGlobal(engine, object, objectHandle, result->coreIndex); + } else if (result->isSignalHandler()) { + v8::Local handler = engine->qobjectWrapper()->m_signalHandlerConstructor->NewInstance(); + QV8SignalHandlerResource *r = new QV8SignalHandlerResource(engine, object, result->coreIndex); + handler->SetExternalResource(r); + return handler; } else { return MethodClosure::create(engine, object, objectHandle, result->coreIndex); } @@ -998,6 +1030,17 @@ v8::Handle QV8QObjectWrapper::newQObject(QObject *object) } } +QPair QV8QObjectWrapper::ExtractQtSignal(QV8Engine *engine, v8::Handle object) +{ + if (object->IsFunction()) + return ExtractQtMethod(engine, v8::Handle::Cast(object)); + + if (QV8SignalHandlerResource *resource = v8_resource_cast(object)) + return qMakePair(resource->object.data(), resource->index); + + return qMakePair((QObject *)0, -1); +} + QPair QV8QObjectWrapper::ExtractQtMethod(QV8Engine *engine, v8::Handle function) { v8::ScriptOrigin origin = function->GetScriptOrigin(); @@ -1166,10 +1209,7 @@ v8::Handle QV8QObjectWrapper::Connect(const v8::Arguments &args) QV8Engine *engine = V8ENGINE(); - if (!args.This()->IsFunction()) - V8THROW_ERROR("Function.prototype.connect: this object is not a signal"); - - QPair signalInfo = ExtractQtMethod(engine, v8::Handle::Cast(args.This())); + QPair signalInfo = ExtractQtSignal(engine, args.This()); QObject *signalObject = signalInfo.first; int signalIndex = signalInfo.second; @@ -1228,10 +1268,7 @@ v8::Handle QV8QObjectWrapper::Disconnect(const v8::Arguments &args) QV8Engine *engine = V8ENGINE(); - if (!args.This()->IsFunction()) - V8THROW_ERROR("Function.prototype.disconnect: this object is not a signal"); - - QPair signalInfo = ExtractQtMethod(engine, v8::Handle::Cast(args.This())); + QPair signalInfo = ExtractQtSignal(engine, args.This()); QObject *signalObject = signalInfo.first; int signalIndex = signalInfo.second; diff --git a/src/declarative/qml/v8/qv8qobjectwrapper_p.h b/src/declarative/qml/v8/qv8qobjectwrapper_p.h index d0a489bed8..be118a9c34 100644 --- a/src/declarative/qml/v8/qv8qobjectwrapper_p.h +++ b/src/declarative/qml/v8/qv8qobjectwrapper_p.h @@ -111,11 +111,13 @@ private: static v8::Handle Disconnect(const v8::Arguments &args); static v8::Handle Invoke(const v8::Arguments &args); static QPair ExtractQtMethod(QV8Engine *, v8::Handle); + static QPair ExtractQtSignal(QV8Engine *, v8::Handle); QV8Engine *m_engine; quint32 m_id; v8::Persistent m_constructor; v8::Persistent m_methodConstructor; + v8::Persistent m_signalHandlerConstructor; v8::Persistent m_toStringSymbol; v8::Persistent m_destroySymbol; QHashedV8String m_toStringString; diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/signalHandlers.qml b/tests/auto/declarative/qdeclarativeecmascript/data/signalHandlers.qml new file mode 100644 index 0000000000..975be1b2ad --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/signalHandlers.qml @@ -0,0 +1,60 @@ +import Qt.test 1.0 +import QtQuick 2.0 + +QtObject { + id: root + + property int count: 0 + signal testSignal + onTestSignal: count++ + + property int funcCount: 0 + function testFunction() { + funcCount++; + } + + //should increment count + function testSignalCall() { + testSignal() + } + + //should NOT increment count, and should throw an exception + property string errorString + function testSignalHandlerCall() { + try { + onTestSignal() + } catch (error) { + errorString = error.toString(); + } + } + + //should increment funcCount once + function testSignalConnection() { + testSignal.connect(testFunction) + testSignal(); + testSignal.disconnect(testFunction) + testSignal(); + } + + //should increment funcCount once + function testSignalHandlerConnection() { + onTestSignal.connect(testFunction) + testSignal(); + onTestSignal.disconnect(testFunction) + testSignal(); + } + + //should be defined + property bool definedResult: false + function testSignalDefined() { + if (testSignal !== undefined) + definedResult = true; + } + + //should be defined + property bool definedHandlerResult: false + function testSignalHandlerDefined() { + if (onTestSignal !== undefined) + definedHandlerResult = true; + } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index f14db0a330..ba1aaca034 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -188,6 +188,7 @@ private slots: void realToInt(); void dynamicString(); void include(); + void signalHandlers(); void callQtInvokables(); void invokableObjectArg(); @@ -3597,6 +3598,36 @@ void tst_qdeclarativeecmascript::include() } } +void tst_qdeclarativeecmascript::signalHandlers() +{ + QDeclarativeComponent component(&engine, TEST_FILE("signalHandlers.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QVERIFY(o->property("count").toInt() == 0); + QMetaObject::invokeMethod(o, "testSignalCall"); + QCOMPARE(o->property("count").toInt(), 1); + + QMetaObject::invokeMethod(o, "testSignalHandlerCall"); + QCOMPARE(o->property("count").toInt(), 1); + QCOMPARE(o->property("errorString").toString(), QLatin1String("TypeError: Property 'onTestSignal' of object [object Object] is not a function")); + + QVERIFY(o->property("funcCount").toInt() == 0); + QMetaObject::invokeMethod(o, "testSignalConnection"); + QCOMPARE(o->property("funcCount").toInt(), 1); + + QMetaObject::invokeMethod(o, "testSignalHandlerConnection"); + QCOMPARE(o->property("funcCount").toInt(), 2); + + QMetaObject::invokeMethod(o, "testSignalDefined"); + QCOMPARE(o->property("definedResult").toBool(), true); + + QMetaObject::invokeMethod(o, "testSignalHandlerDefined"); + QCOMPARE(o->property("definedHandlerResult").toBool(), true); + + delete o; +} + void tst_qdeclarativeecmascript::qtbug_10696() { QDeclarativeComponent component(&engine, TEST_FILE("qtbug_10696.qml")); From 6080375fed90c09bfabb96a0319817f14f693b05 Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Mon, 22 Aug 2011 15:51:28 +1000 Subject: [PATCH 10/68] Allow conversion of QObject Module API to QVariant This commit adds a conversion codepath for QV8TypeResource to QVariant where the resource contains a QObject module API. This allows such a module API to be used as the "target" in a Connections element. Task-number: QTBUG-20937 Change-Id: I9214b531968f2e6981a86e643859a97297c6a02a Reviewed-on: http://codereview.qt.nokia.com/3286 Reviewed-by: Chris Adams Reviewed-by: Qt Sanity Bot --- src/declarative/qml/v8/qv8engine.cpp | 3 +- src/declarative/qml/v8/qv8typewrapper.cpp | 28 ++++++++ src/declarative/qml/v8/qv8typewrapper_p.h | 1 + .../data/moduleapi-target.qml | 22 +++++++ .../tst_qdeclarativeconnection.cpp | 64 +++++++++++++++++++ 5 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 tests/auto/declarative/qdeclarativeconnection/data/moduleapi-target.qml diff --git a/src/declarative/qml/v8/qv8engine.cpp b/src/declarative/qml/v8/qv8engine.cpp index 8eaf9024ea..5b74f48170 100644 --- a/src/declarative/qml/v8/qv8engine.cpp +++ b/src/declarative/qml/v8/qv8engine.cpp @@ -208,7 +208,6 @@ QVariant QV8Engine::toVariant(v8::Handle value, int typeHint) if (r) { switch (r->resourceType()) { case QV8ObjectResource::ContextType: - case QV8ObjectResource::TypeType: case QV8ObjectResource::XMLHttpRequestType: case QV8ObjectResource::DOMNodeType: case QV8ObjectResource::SQLDatabaseType: @@ -216,6 +215,8 @@ QVariant QV8Engine::toVariant(v8::Handle value, int typeHint) case QV8ObjectResource::Context2DType: case QV8ObjectResource::ParticleDataType: return QVariant(); + case QV8ObjectResource::TypeType: + return m_typeWrapper.toVariant(r); case QV8ObjectResource::QObjectType: return qVariantFromValue(m_qobjectWrapper.toQObject(r)); case QV8ObjectResource::ListType: diff --git a/src/declarative/qml/v8/qv8typewrapper.cpp b/src/declarative/qml/v8/qv8typewrapper.cpp index f46aaab320..c89d5ab8ae 100644 --- a/src/declarative/qml/v8/qv8typewrapper.cpp +++ b/src/declarative/qml/v8/qv8typewrapper.cpp @@ -128,6 +128,34 @@ v8::Local QV8TypeWrapper::newObject(QObject *o, QDeclarativeTypeName return rv; } +QVariant QV8TypeWrapper::toVariant(QV8ObjectResource *r) +{ + Q_ASSERT(r->resourceType() == QV8ObjectResource::TypeType); + QV8TypeResource *resource = static_cast(r); + QV8Engine *v8engine = resource->engine; + + if (resource->typeNamespace) { + if (QDeclarativeMetaType::ModuleApiInstance *moduleApi = resource->typeNamespace->moduleApi(resource->importNamespace)) { + if (moduleApi->scriptCallback) { + moduleApi->scriptApi = moduleApi->scriptCallback(v8engine->engine(), v8engine->engine()); + moduleApi->scriptCallback = 0; + moduleApi->qobjectCallback = 0; + } else if (moduleApi->qobjectCallback) { + moduleApi->qobjectApi = moduleApi->qobjectCallback(v8engine->engine(), v8engine->engine()); + moduleApi->scriptCallback = 0; + moduleApi->qobjectCallback = 0; + } + + if (moduleApi->qobjectApi) { + return QVariant::fromValue(moduleApi->qobjectApi); + } + } + } + + // only QObject Module API can be converted to a variant. + return QVariant(); +} + v8::Handle QV8TypeWrapper::Getter(v8::Local property, const v8::AccessorInfo &info) { diff --git a/src/declarative/qml/v8/qv8typewrapper_p.h b/src/declarative/qml/v8/qv8typewrapper_p.h index 2e79946a6e..f9309f8e28 100644 --- a/src/declarative/qml/v8/qv8typewrapper_p.h +++ b/src/declarative/qml/v8/qv8typewrapper_p.h @@ -75,6 +75,7 @@ public: v8::Local newObject(QObject *, QDeclarativeType *, TypeNameMode = IncludeEnums); v8::Local newObject(QObject *, QDeclarativeTypeNameCache *, const void *, TypeNameMode = IncludeEnums); + QVariant toVariant(QV8ObjectResource *); private: static v8::Handle Getter(v8::Local property, diff --git a/tests/auto/declarative/qdeclarativeconnection/data/moduleapi-target.qml b/tests/auto/declarative/qdeclarativeconnection/data/moduleapi-target.qml new file mode 100644 index 0000000000..8803f24542 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeconnection/data/moduleapi-target.qml @@ -0,0 +1,22 @@ +import QtQuick 2.0 +import MyTestModuleApi 1.0 as MyTestModuleApi + +Item { + id: rootObject + objectName: "rootObject" + property int newIntPropValue: 12 + + property int moduleIntPropChangedCount: 0 + property int moduleOtherSignalCount: 0 + + function setModuleIntProp() { + MyTestModuleApi.intProp = newIntPropValue; + newIntPropValue = newIntPropValue + 1; + } + + Connections { + target: MyTestModuleApi + onIntPropChanged: moduleIntPropChangedCount = moduleIntPropChangedCount + 1; + onOtherSignal: moduleOtherSignalCount = moduleOtherSignalCount + 1; + } +} diff --git a/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp b/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp index 37cce5c578..c726fde0e8 100644 --- a/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp +++ b/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp @@ -68,6 +68,7 @@ private slots: void unknownSignals(); void errors_data(); void errors(); + void moduleApiTarget(); private: QDeclarativeEngine engine; @@ -229,6 +230,69 @@ void tst_qdeclarativeconnection::errors() QCOMPARE(errors.at(0).description(), error); } + +class MyTestModuleApi : public QObject +{ +Q_OBJECT +Q_PROPERTY(int intProp READ intProp WRITE setIntProp NOTIFY intPropChanged) + +public: + MyTestModuleApi(QObject *parent = 0) : QObject(parent), m_intProp(0), m_changeCount(0) {} + ~MyTestModuleApi() {} + + Q_INVOKABLE int otherMethod(int val) { return val + 4; } + + int intProp() const { return m_intProp; } + void setIntProp(int val) + { + if (++m_changeCount % 3 == 0) emit otherSignal(); + m_intProp = val; emit intPropChanged(); + } + +signals: + void intPropChanged(); + void otherSignal(); + +private: + int m_intProp; + int m_changeCount; +}; + +static QObject *module_api_factory(QDeclarativeEngine *engine, QJSEngine *scriptEngine) +{ + Q_UNUSED(engine) + Q_UNUSED(scriptEngine) + MyTestModuleApi *api = new MyTestModuleApi(); + return api; +} + +// QTBUG-20937 +void tst_qdeclarativeconnection::moduleApiTarget() +{ + qmlRegisterModuleApi("MyTestModuleApi", 1, 0, module_api_factory); + QDeclarativeComponent component(&engine, QUrl(SRCDIR "/data/moduleapi-target.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("moduleIntPropChangedCount").toInt(), 0); + QCOMPARE(object->property("moduleOtherSignalCount").toInt(), 0); + + QMetaObject::invokeMethod(object, "setModuleIntProp"); + QCOMPARE(object->property("moduleIntPropChangedCount").toInt(), 1); + QCOMPARE(object->property("moduleOtherSignalCount").toInt(), 0); + + QMetaObject::invokeMethod(object, "setModuleIntProp"); + QCOMPARE(object->property("moduleIntPropChangedCount").toInt(), 2); + QCOMPARE(object->property("moduleOtherSignalCount").toInt(), 0); + + // the module API emits otherSignal every 3 times the int property changes. + QMetaObject::invokeMethod(object, "setModuleIntProp"); + QCOMPARE(object->property("moduleIntPropChangedCount").toInt(), 3); + QCOMPARE(object->property("moduleOtherSignalCount").toInt(), 1); + + delete object; +} + QTEST_MAIN(tst_qdeclarativeconnection) #include "tst_qdeclarativeconnection.moc" From 23c826303436f438aaac6f3edc87e1d5b22ee549 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 1 Sep 2011 13:52:23 +1000 Subject: [PATCH 11/68] Don't emit attached add() and remove() for moved items Regression from 6fbc4b7e7e5aed8739ca1143e0fc1e38b8c8e17a Change-Id: I0bcd55548dca1559deea0d66112e7cdeb3da4ed9 Reviewed-on: http://codereview.qt.nokia.com/4023 Reviewed-by: Bea Lam Reviewed-by: Qt Sanity Bot --- src/declarative/items/qsggridview.cpp | 3 ++- src/declarative/items/qsgitemview.cpp | 6 ++++-- src/declarative/items/qsglistview.cpp | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/declarative/items/qsggridview.cpp b/src/declarative/items/qsggridview.cpp index 50ea86ab04..1d4e8313b4 100644 --- a/src/declarative/items/qsggridview.cpp +++ b/src/declarative/items/qsggridview.cpp @@ -1792,7 +1792,8 @@ bool QSGGridViewPrivate::applyInsertionChange(const QDeclarativeChangeSet::Inser if (!item) item = createItem(modelIndex + i); visibleItems.insert(index, item); - addedItems->append(item); + if (!change.isMove()) + addedItems->append(item); colPos += colSize(); if (colPos > colSize() * (columns-1)) { colPos = 0; diff --git a/src/declarative/items/qsgitemview.cpp b/src/declarative/items/qsgitemview.cpp index cd598e9a28..401a17e2b7 100644 --- a/src/declarative/items/qsgitemview.cpp +++ b/src/declarative/items/qsgitemview.cpp @@ -1487,8 +1487,10 @@ bool QSGItemViewPrivate::applyModelChanges() } else { // removed item removedVisible = true; - item->attached->emitRemove(); - if (item->attached->delayRemove()) { + if (!removals[i].isMove()) + item->attached->emitRemove(); + + if (item->attached->delayRemove() && !removals[i].isMove()) { item->index = -1; QObject::connect(item->attached, SIGNAL(delayRemoveChanged()), q, SLOT(destroyRemoved()), Qt::QueuedConnection); ++it; diff --git a/src/declarative/items/qsglistview.cpp b/src/declarative/items/qsglistview.cpp index 73bbd87e2a..321c66c41a 100644 --- a/src/declarative/items/qsglistview.cpp +++ b/src/declarative/items/qsglistview.cpp @@ -2164,7 +2164,8 @@ bool QSGListViewPrivate::applyInsertionChange(const QDeclarativeChangeSet::Inser item = createItem(modelIndex + i); visibleItems.insert(insertionIdx, item); - addedItems->append(item); + if (!change.isMove()) + addedItems->append(item); pos -= item->size() + spacing; index++; } @@ -2182,7 +2183,8 @@ bool QSGListViewPrivate::applyInsertionChange(const QDeclarativeChangeSet::Inser item = createItem(modelIndex + i); visibleItems.insert(index, item); - addedItems->append(item); + if (!change.isMove()) + addedItems->append(item); pos += item->size() + spacing; ++index; } From 46ce1f72e53920c6a077cc4dd14979cbf9a01a4f Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Wed, 24 Aug 2011 14:51:35 +1000 Subject: [PATCH 12/68] Update toys examples to QtQuick 2.0 and remove obsolete files Change-Id: I5ca6a459df532a5c551430f3f1029ec961a75233 Reviewed-on: http://codereview.qt.nokia.com/3441 Reviewed-by: Qt Sanity Bot Reviewed-by: Alan Alpert --- .../declarative/toys/clocks/clocks.desktop | 11 - examples/declarative/toys/clocks/clocks.png | Bin 3400 -> 0 bytes examples/declarative/toys/clocks/clocks.pro | 39 --- examples/declarative/toys/clocks/clocks.qml | 2 +- examples/declarative/toys/clocks/clocks.svg | 93 -------- .../declarative/toys/clocks/content/Clock.qml | 2 +- .../toys/clocks/content/QuitButton.qml | 2 +- examples/declarative/toys/clocks/main.cpp | 54 ----- .../declarative/toys/clocks/qml/clocks.qml | 59 ----- .../toys/clocks/qml/content/Clock.qml | 124 ---------- .../toys/clocks/qml/content/QuitButton.qml | 52 ---- .../toys/clocks/qml/content/background.png | Bin 46895 -> 0 bytes .../toys/clocks/qml/content/center.png | Bin 765 -> 0 bytes .../toys/clocks/qml/content/clock-night.png | Bin 23359 -> 0 bytes .../toys/clocks/qml/content/clock.png | Bin 20653 -> 0 bytes .../toys/clocks/qml/content/hour.png | Bin 625 -> 0 bytes .../toys/clocks/qml/content/minute.png | Bin 625 -> 0 bytes .../toys/clocks/qml/content/quit.png | Bin 583 -> 0 bytes .../toys/clocks/qml/content/second.png | Bin 303 -> 0 bytes .../qmlapplicationviewer.cpp | 197 ---------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------ .../toys/corkboards/{ => content}/Day.qml | 2 +- .../toys/corkboards/{qml => content}/cork.jpg | Bin .../{qml => content}/note-yellow.png | Bin .../toys/corkboards/{qml => content}/tack.png | Bin .../toys/corkboards/corkboards.desktop | 11 - .../toys/corkboards/corkboards.png | Bin 3400 -> 0 bytes .../toys/corkboards/corkboards.pro | 39 --- .../toys/corkboards/corkboards.qml | 3 +- .../toys/corkboards/corkboards.svg | 93 -------- examples/declarative/toys/corkboards/main.cpp | 54 ----- .../declarative/toys/corkboards/qml/Day.qml | 153 ------------ .../toys/corkboards/qml/corkboards.qml | 115 --------- .../qmlapplicationviewer.cpp | 197 ---------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------ .../dynamicscene/{qml => content}/Button.qml | 2 +- .../{qml => content}/GenericSceneItem.qml | 2 +- .../{qml => content}/PaletteItem.qml | 2 +- .../{qml => content}/PerspectiveItem.qml | 2 +- .../dynamicscene/{qml => content}/Sun.qml | 4 +- .../dynamicscene/{qml => content}/images/NOTE | 0 .../{qml => content}/images/face-smile.png | Bin .../{qml => content}/images/moon.png | Bin .../{qml => content}/images/rabbit_brown.png | Bin .../{qml => content}/images/rabbit_bw.png | Bin .../{qml => content}/images/star.png | Bin .../{qml => content}/images/sun.png | Bin .../{qml => content}/images/tree_s.png | Bin .../{qml/qml => content}/itemCreation.js | 0 .../toys/dynamicscene/dynamicscene.desktop | 11 - .../toys/dynamicscene/dynamicscene.png | Bin 3400 -> 0 bytes .../toys/dynamicscene/dynamicscene.pro | 39 --- .../toys/dynamicscene/dynamicscene.qml | 50 ++-- .../toys/dynamicscene/dynamicscene.svg | 93 -------- .../declarative/toys/dynamicscene/main.cpp | 54 ----- .../toys/dynamicscene/qml/dynamicscene.qml | 223 ------------------ .../toys/dynamicscene/qml/qml/Button.qml | 80 ------- .../dynamicscene/qml/qml/GenericSceneItem.qml | 49 ---- .../toys/dynamicscene/qml/qml/PaletteItem.qml | 59 ----- .../dynamicscene/qml/qml/PerspectiveItem.qml | 65 ----- .../toys/dynamicscene/qml/qml/Sun.qml | 78 ------ .../qmlapplicationviewer.cpp | 197 ---------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------ .../toys/tic-tac-toe/content/Button.qml | 2 +- .../toys/tic-tac-toe/content/TicTac.qml | 2 +- .../{qml => }/content/pics/board.png | Bin .../tic-tac-toe/{qml => }/content/pics/o.png | Bin .../tic-tac-toe/{qml => }/content/pics/x.png | Bin .../{qml => }/content/tic-tac-toe.js | 0 .../declarative/toys/tic-tac-toe/main.cpp | 54 ----- .../toys/tic-tac-toe/qml/content/Button.qml | 79 ------- .../toys/tic-tac-toe/qml/content/TicTac.qml | 60 ----- .../toys/tic-tac-toe/qml/tic-tac-toe.qml | 123 ---------- .../qmlapplicationviewer.cpp | 197 ---------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------ .../toys/tic-tac-toe/tic-tac-toe.pro | 39 --- .../toys/tic-tac-toe/tic-tac-toe.qml | 2 +- .../toys/tic-tac-toe/tictactoe.desktop | 11 - .../toys/tic-tac-toe/tictactoe.png | Bin 3400 -> 0 bytes .../toys/tic-tac-toe/tictactoe.pro | 39 --- .../toys/tic-tac-toe/tictactoe.svg | 93 -------- examples/declarative/toys/tvtennis/main.cpp | 54 ----- .../toys/tvtennis/qml/tvtennis.qml | 109 --------- .../qmlapplicationviewer.cpp | 197 ---------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------ .../toys/tvtennis/tvtennis.desktop | 11 - .../declarative/toys/tvtennis/tvtennis.png | Bin 3400 -> 0 bytes .../declarative/toys/tvtennis/tvtennis.pro | 39 --- .../declarative/toys/tvtennis/tvtennis.qml | 2 +- .../declarative/toys/tvtennis/tvtennis.svg | 93 -------- 95 files changed, 48 insertions(+), 4635 deletions(-) delete mode 100644 examples/declarative/toys/clocks/clocks.desktop delete mode 100644 examples/declarative/toys/clocks/clocks.png delete mode 100644 examples/declarative/toys/clocks/clocks.pro delete mode 100644 examples/declarative/toys/clocks/clocks.svg delete mode 100644 examples/declarative/toys/clocks/main.cpp delete mode 100644 examples/declarative/toys/clocks/qml/clocks.qml delete mode 100644 examples/declarative/toys/clocks/qml/content/Clock.qml delete mode 100644 examples/declarative/toys/clocks/qml/content/QuitButton.qml delete mode 100644 examples/declarative/toys/clocks/qml/content/background.png delete mode 100644 examples/declarative/toys/clocks/qml/content/center.png delete mode 100644 examples/declarative/toys/clocks/qml/content/clock-night.png delete mode 100644 examples/declarative/toys/clocks/qml/content/clock.png delete mode 100644 examples/declarative/toys/clocks/qml/content/hour.png delete mode 100644 examples/declarative/toys/clocks/qml/content/minute.png delete mode 100644 examples/declarative/toys/clocks/qml/content/quit.png delete mode 100644 examples/declarative/toys/clocks/qml/content/second.png delete mode 100644 examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/toys/corkboards/{ => content}/Day.qml (99%) rename examples/declarative/toys/corkboards/{qml => content}/cork.jpg (100%) rename examples/declarative/toys/corkboards/{qml => content}/note-yellow.png (100%) rename examples/declarative/toys/corkboards/{qml => content}/tack.png (100%) delete mode 100644 examples/declarative/toys/corkboards/corkboards.desktop delete mode 100644 examples/declarative/toys/corkboards/corkboards.png delete mode 100644 examples/declarative/toys/corkboards/corkboards.pro delete mode 100644 examples/declarative/toys/corkboards/corkboards.svg delete mode 100644 examples/declarative/toys/corkboards/main.cpp delete mode 100644 examples/declarative/toys/corkboards/qml/Day.qml delete mode 100644 examples/declarative/toys/corkboards/qml/corkboards.qml delete mode 100644 examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/toys/dynamicscene/{qml => content}/Button.qml (99%) rename examples/declarative/toys/dynamicscene/{qml => content}/GenericSceneItem.qml (99%) rename examples/declarative/toys/dynamicscene/{qml => content}/PaletteItem.qml (99%) rename examples/declarative/toys/dynamicscene/{qml => content}/PerspectiveItem.qml (99%) rename examples/declarative/toys/dynamicscene/{qml => content}/Sun.qml (97%) rename examples/declarative/toys/dynamicscene/{qml => content}/images/NOTE (100%) rename examples/declarative/toys/dynamicscene/{qml => content}/images/face-smile.png (100%) rename examples/declarative/toys/dynamicscene/{qml => content}/images/moon.png (100%) rename examples/declarative/toys/dynamicscene/{qml => content}/images/rabbit_brown.png (100%) rename examples/declarative/toys/dynamicscene/{qml => content}/images/rabbit_bw.png (100%) rename examples/declarative/toys/dynamicscene/{qml => content}/images/star.png (100%) rename examples/declarative/toys/dynamicscene/{qml => content}/images/sun.png (100%) rename examples/declarative/toys/dynamicscene/{qml => content}/images/tree_s.png (100%) rename examples/declarative/toys/dynamicscene/{qml/qml => content}/itemCreation.js (100%) delete mode 100644 examples/declarative/toys/dynamicscene/dynamicscene.desktop delete mode 100644 examples/declarative/toys/dynamicscene/dynamicscene.png delete mode 100644 examples/declarative/toys/dynamicscene/dynamicscene.pro delete mode 100644 examples/declarative/toys/dynamicscene/dynamicscene.svg delete mode 100644 examples/declarative/toys/dynamicscene/main.cpp delete mode 100644 examples/declarative/toys/dynamicscene/qml/dynamicscene.qml delete mode 100644 examples/declarative/toys/dynamicscene/qml/qml/Button.qml delete mode 100644 examples/declarative/toys/dynamicscene/qml/qml/GenericSceneItem.qml delete mode 100644 examples/declarative/toys/dynamicscene/qml/qml/PaletteItem.qml delete mode 100644 examples/declarative/toys/dynamicscene/qml/qml/PerspectiveItem.qml delete mode 100644 examples/declarative/toys/dynamicscene/qml/qml/Sun.qml delete mode 100644 examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/toys/tic-tac-toe/{qml => }/content/pics/board.png (100%) rename examples/declarative/toys/tic-tac-toe/{qml => }/content/pics/o.png (100%) rename examples/declarative/toys/tic-tac-toe/{qml => }/content/pics/x.png (100%) rename examples/declarative/toys/tic-tac-toe/{qml => }/content/tic-tac-toe.js (100%) delete mode 100644 examples/declarative/toys/tic-tac-toe/main.cpp delete mode 100644 examples/declarative/toys/tic-tac-toe/qml/content/Button.qml delete mode 100644 examples/declarative/toys/tic-tac-toe/qml/content/TicTac.qml delete mode 100644 examples/declarative/toys/tic-tac-toe/qml/tic-tac-toe.qml delete mode 100644 examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/toys/tic-tac-toe/tic-tac-toe.pro delete mode 100644 examples/declarative/toys/tic-tac-toe/tictactoe.desktop delete mode 100644 examples/declarative/toys/tic-tac-toe/tictactoe.png delete mode 100644 examples/declarative/toys/tic-tac-toe/tictactoe.pro delete mode 100644 examples/declarative/toys/tic-tac-toe/tictactoe.svg delete mode 100644 examples/declarative/toys/tvtennis/main.cpp delete mode 100644 examples/declarative/toys/tvtennis/qml/tvtennis.qml delete mode 100644 examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/toys/tvtennis/tvtennis.desktop delete mode 100644 examples/declarative/toys/tvtennis/tvtennis.png delete mode 100644 examples/declarative/toys/tvtennis/tvtennis.pro delete mode 100644 examples/declarative/toys/tvtennis/tvtennis.svg diff --git a/examples/declarative/toys/clocks/clocks.desktop b/examples/declarative/toys/clocks/clocks.desktop deleted file mode 100644 index 96afae607f..0000000000 --- a/examples/declarative/toys/clocks/clocks.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=clocks -Exec=/opt/usr/bin/clocks -Icon=clocks -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/toys/clocks/clocks.png b/examples/declarative/toys/clocks/clocks.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/toys/clocks/content/Clock.qml b/examples/declarative/toys/clocks/content/Clock.qml index 9bf96dce8b..07504b1210 100644 --- a/examples/declarative/toys/clocks/content/Clock.qml +++ b/examples/declarative/toys/clocks/content/Clock.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: clock diff --git a/examples/declarative/toys/clocks/content/QuitButton.qml b/examples/declarative/toys/clocks/content/QuitButton.qml index 39f8f77e33..7ab91c4376 100644 --- a/examples/declarative/toys/clocks/content/QuitButton.qml +++ b/examples/declarative/toys/clocks/content/QuitButton.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { source: "quit.png" scale: quitMouse.pressed ? 0.8 : 1.0 diff --git a/examples/declarative/toys/clocks/main.cpp b/examples/declarative/toys/clocks/main.cpp deleted file mode 100644 index 09055d1a52..0000000000 --- a/examples/declarative/toys/clocks/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/clocks.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/toys/clocks/qml/clocks.qml b/examples/declarative/toys/clocks/qml/clocks.qml deleted file mode 100644 index 3354f11e66..0000000000 --- a/examples/declarative/toys/clocks/qml/clocks.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" - -Rectangle { - width: 640; height: 240 - color: "#646464" - - Row { - anchors.centerIn: parent - Clock { city: "New York"; shift: -4 } - Clock { city: "Mumbai"; shift: 5.5 } - Clock { city: "Tokyo"; shift: 9 } - } - QuitButton { - anchors.right: parent.right - anchors.top: parent.top - anchors.margins: 10 - } -} diff --git a/examples/declarative/toys/clocks/qml/content/Clock.qml b/examples/declarative/toys/clocks/qml/content/Clock.qml deleted file mode 100644 index 09e8393128..0000000000 --- a/examples/declarative/toys/clocks/qml/content/Clock.qml +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: clock - width: 200; height: 230 - - property alias city: cityLabel.text - property int hours - property int minutes - property int seconds - property real shift - property bool night: false - - function timeChanged() { - var date = new Date; - hours = shift ? date.getUTCHours() + Math.floor(clock.shift) : date.getHours() - night = ( hours < 7 || hours > 19 ) - minutes = shift ? date.getUTCMinutes() + ((clock.shift % 1) * 60) : date.getMinutes() - seconds = date.getUTCSeconds(); - } - - Timer { - interval: 100; running: true; repeat: true; - onTriggered: clock.timeChanged() - } - - Image { id: background; source: "clock.png"; visible: clock.night == false } - Image { source: "clock-night.png"; visible: clock.night == true } - - - Image { - x: 92.5; y: 27 - source: "hour.png" - smooth: true - transform: Rotation { - id: hourRotation - origin.x: 7.5; origin.y: 73; - angle: (clock.hours * 30) + (clock.minutes * 0.5) - Behavior on angle { - SpringAnimation { spring: 2; damping: 0.2; modulus: 360 } - } - } - } - - Image { - x: 93.5; y: 17 - source: "minute.png" - smooth: true - transform: Rotation { - id: minuteRotation - origin.x: 6.5; origin.y: 83; - angle: clock.minutes * 6 - Behavior on angle { - SpringAnimation { spring: 2; damping: 0.2; modulus: 360 } - } - } - } - - Image { - x: 97.5; y: 20 - source: "second.png" - smooth: true - transform: Rotation { - id: secondRotation - origin.x: 2.5; origin.y: 80; - angle: clock.seconds * 6 - Behavior on angle { - SpringAnimation { spring: 2; damping: 0.2; modulus: 360 } - } - } - } - - Image { - anchors.centerIn: background; source: "center.png" - } - - Text { - id: cityLabel - y: 200; anchors.horizontalCenter: parent.horizontalCenter - color: "white" - font.bold: true; font.pixelSize: 14 - style: Text.Raised; styleColor: "black" - } -} diff --git a/examples/declarative/toys/clocks/qml/content/QuitButton.qml b/examples/declarative/toys/clocks/qml/content/QuitButton.qml deleted file mode 100644 index cbbf916a4b..0000000000 --- a/examples/declarative/toys/clocks/qml/content/QuitButton.qml +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -Image { - source: "quit.png" - scale: quitMouse.pressed ? 0.8 : 1.0 - smooth: quitMouse.pressed - MouseArea { - id: quitMouse - anchors.fill: parent - anchors.margins: -10 - onClicked: Qt.quit() - } -} diff --git a/examples/declarative/toys/clocks/qml/content/background.png b/examples/declarative/toys/clocks/qml/content/background.png deleted file mode 100644 index a885950862ff9d709c70209d44d8af063939ae95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46895 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 LNkvXXu0mjflDQJ; diff --git a/examples/declarative/toys/clocks/qml/content/center.png b/examples/declarative/toys/clocks/qml/content/center.png deleted file mode 100644 index 7fbd802a44e4242cb2ce11fd78efa0e2e9123591..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 765 zcmVwm?cmZyN`*KT0&&bzT5WB7@L(auxOrlE<9L|IL z&i8)L&uf>4S*T)OE8F->35(24d5sX5GeKScQ1}Zk0{U)AOeg56F@@r z9&i_k$@vIi#IHYN1sVpTz-?fBeSQ6DCX;#L`@V5q_xHlW!biXb&PAI*M>7u%0F42O z&CSilY&QEQkw`q(Y+9|>+rz`dd@7ZCCyf6B4GRvyQa(U#F>=uz;8CGacvY|0gJD{& zR*!%=;GskpvRQC?*oNeXsg;$Lg75nb(|9~ScW`jV&hDzY)D;F81#ZpE%q)7I$4wLnZ)|KVO0gq?V>GZMsffhm@h95(I@ZZ# z@|p5Cm%2j9NTbnchQr~}K4*QUR;xAXnTaa{0<=q|(&w9`!7|R}a-RSX+iE?)KF|i5 zdwY9dZUWrtbf{D+rE0Z$O1Fn?9|syZpgTcsu~% z2a54IaFR}^*UIJc*Fkx8UH5EjYin(1XXi+K>f-M$<%5e|vAb&Q;)&8-GE=~VTrQWI zpPx@oPftIdoSeL0E|vh*lr=Z!!jm-Q2}+N`W?w>U9_n|b&dh-G77}8A*@a$++Si(L{Cv$O@m%xtVMFJ vUl6^??F-^D;CUJdtS*47?_QuH>?{8O-DBHcK9x2C00000NkvXXu0mjfY~)gG diff --git a/examples/declarative/toys/clocks/qml/content/clock-night.png b/examples/declarative/toys/clocks/qml/content/clock-night.png deleted file mode 100644 index cc7151a397e16b6d6e2bbe6b1a59d43d09d76a89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23359 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 diff --git a/examples/declarative/toys/clocks/qml/content/clock.png b/examples/declarative/toys/clocks/qml/content/clock.png deleted file mode 100644 index 462edacc0eaae9f2789ba6ae2c92ed533bba7207..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20653 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�$@7S8U3ymd7s7tyOHWAvUm z!t8j;y?C2<2}e`&NBs zk|RSR9_R4Kg=Z_uc_R(0ACjxF<KbE$Lo&3+4H z^-oQ4`H5?8exV)c>u1Dr0kTvFTg+)a8?8bsZwpqqX4r2oz8QT40DQmj`P6*QrBm>V7YV%01x_JADEx%^ zYr);e3s%p$=CZLzuClr$rRa0A`ju}-P<7iI{`Q`4)24ZEZqVnxG9SyXV&z_!Wd`%z zcVvG&ybwli^(yJ@>A{_Ob>)%J!=DGKNXOy1Jtb*^m!xa}Mzho4i2eXqq#bjk9FMd^ z8V^ntW~3cz#40NrK_b|AKh5Pl@X5^Qj`XWG zg1NcPnfY(~#SJg#&X_g6_1DAEkoGm=6g)pmB&Gv`&Ugwe?Xb-v3K2s;3O&vdUn>)6 zNbhzTNrphVr~;_n>$V{lZjvIRlU&TIiaBFql|r3%7EpzD`Zl=;nN&^^4*{)Byzpbgy7Ztu1Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05S=eKQo^I00HqyL_t(o!|j;6j?+LChQH(WKrRH9n~*5B+Xf+}qoCp?QbhDr+aW4C zdL)WeG|*73Qt}2#5GYa#8lHeyT5%Jx6^|Vs3TCpi3#*N^(5!rAP(?i zpbcDdi`#BafhF)0_yH_{<^G;j-Z65HSAi?QwQje2qu=lE8e?QQ9DbTiCZB$!PRzWG#b6g^IYfixlNKp zlO)mkd~WkR*XeZn9N2LsMIPI@O}e#MEZ(MRdQ(+f!4V-MX{XaUXti1ofGWn%B2ph!ja_4( zllQqksv7%D*vIGV-L8MJ_1E)%V^D@!@0!USLDI&%-Tf!(+)zhuk*v@?gELHWx3HVl3-#ZiS4OG{=?eVR(k3}SQ z4HfIgcM*xLwNJwSkc5pTA8#HNca1U6fcp;rT~QQIAHFmn!*#y^s*t+D3$g`_00000 LNkvXXu0mjfjzPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05TtA>xRw%00HqyL_t(o!{wO0j?+L8fWO%|770J$s8EVS0#RN|$77_WqdO@D#YwzF zQsph6q@&?ABGEeN5LNhz?tJXf%o=NP@WtU|M~t+J=8lH8w8rzgYVaAXtQF)NbbYoOc(p3G*mm#fw4({j1|oMqYhd_F$|o&k?c z$4P0>0C<>X+1vGceG&pR8jU`V$Kw~kIq(Jeo)AfzrjMnt82bJGIM#9eDMGar2~Dbc z%cPR{zmaMssiJHlu@`A?^Q0;eRi?UYgu2B*)FwBg`kN!&oKJD|>hjcx)N9wLMxs9`<{e7>)D_3?Qbu$pY$hFJ3sqOT zr3pU0HwA!=s=hNTe7MaiqGvBO&o5r3X?iIl&sFt9p69OvA?W@B51fzRJAdej00000 LNkvXXu0mjfJuMrm diff --git a/examples/declarative/toys/clocks/qml/content/quit.png b/examples/declarative/toys/clocks/qml/content/quit.png deleted file mode 100644 index b822057d4e6a6ac5ed2b7d20fb27d5368b0e831b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)iLVjkLUbqUBm)|aiE*K3 zcJA~s1Q&7dB@h+jHEskYS%e6>@m-Yfs4;jc7hOGcW~w{mf!>^|^Q)qYI!%m`7$cH` zr2CS3Wp1xe(q&0^tGO!nNK%yaN7CX5*sP>qsb;Cn2X_y^1E5C{0eI-{H>e4BzXYrT z?UcIh?n?kIN%w$TnYzC~&&*Z^u#3PmU_4WECjcwJm&{-Qmfih&1)FKWz5#DrF-F{d z0@wf!*X(o=aNv0j_8piqvk$EpW4ZdVgdWNi!~~DkVAE!{1<(f*Iti@Tpt;zEL2*v~ zFtg9V8Q|*(*bksv#fElR+39g$6F69d?EoD!+Z-GS!*c;RLjLf}7zd8#28KX)?*gy( z00Z#Y-4_}`cb`t!z6Pv}G2n^2U&(^*J_Wo6_GgNBC@vv~K6Ur`U0}l2YOrmf3!Dbj zfX+ejmOH?k2JF04~q4ZzJB>?d%c!~o3f6VRb}hJ(=tW&^O0R?T7S zgH>ksu?Bq!Tq~R90ZH#tv)q<+c7z6dQj({d7n0ijj$J|5B%S+@U%)9z%Ow_L3 Vh5vkKWu5>4002ovPDHLkV1nYy`N{wQ diff --git a/examples/declarative/toys/clocks/qml/content/second.png b/examples/declarative/toys/clocks/qml/content/second.png deleted file mode 100644 index 4aa9fb5e8ee10bceed60233801f6cafbbc601362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^tUw&f!3HE7ALAcI9 z%{-)-#I>01eJJ1I*m*ivo;z>;fApF7?nmi?*OJbCk6Ba6-}}@5-m_hw^uNY#bn7wL uw$wt4`T4tTa)qAq@q#bR-xN5-FuuQc`KERIYhIw!89ZJ6T-G@yGywn$272fK diff --git a/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/toys/clocks/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/toys/corkboards/Day.qml b/examples/declarative/toys/corkboards/content/Day.qml similarity index 99% rename from examples/declarative/toys/corkboards/Day.qml rename to examples/declarative/toys/corkboards/content/Day.qml index ad992a1409..a905c26f6c 100644 --- a/examples/declarative/toys/corkboards/Day.qml +++ b/examples/declarative/toys/corkboards/content/Day.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Component { Item { diff --git a/examples/declarative/toys/corkboards/qml/cork.jpg b/examples/declarative/toys/corkboards/content/cork.jpg similarity index 100% rename from examples/declarative/toys/corkboards/qml/cork.jpg rename to examples/declarative/toys/corkboards/content/cork.jpg diff --git a/examples/declarative/toys/corkboards/qml/note-yellow.png b/examples/declarative/toys/corkboards/content/note-yellow.png similarity index 100% rename from examples/declarative/toys/corkboards/qml/note-yellow.png rename to examples/declarative/toys/corkboards/content/note-yellow.png diff --git a/examples/declarative/toys/corkboards/qml/tack.png b/examples/declarative/toys/corkboards/content/tack.png similarity index 100% rename from examples/declarative/toys/corkboards/qml/tack.png rename to examples/declarative/toys/corkboards/content/tack.png diff --git a/examples/declarative/toys/corkboards/corkboards.desktop b/examples/declarative/toys/corkboards/corkboards.desktop deleted file mode 100644 index fcd20027a1..0000000000 --- a/examples/declarative/toys/corkboards/corkboards.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=corkboards -Exec=/opt/usr/bin/corkboards -Icon=corkboards -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/toys/corkboards/corkboards.png b/examples/declarative/toys/corkboards/corkboards.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/toys/corkboards/main.cpp b/examples/declarative/toys/corkboards/main.cpp deleted file mode 100644 index 984ca0f599..0000000000 --- a/examples/declarative/toys/corkboards/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/corkboards.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/toys/corkboards/qml/Day.qml b/examples/declarative/toys/corkboards/qml/Day.qml deleted file mode 100644 index 6afa12ec00..0000000000 --- a/examples/declarative/toys/corkboards/qml/Day.qml +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Component { - Item { - property variant stickies - - id: page - width: ListView.view.width+40; height: ListView.view.height - - - Image { - source: "cork.jpg" - width: page.ListView.view.width - height: page.ListView.view.height - fillMode: Image.PreserveAspectCrop - clip: true - } - - MouseArea { - anchors.fill: parent - onClicked: page.focus = false; - } - - Text { - text: name; x: 15; y: 8; height: 40; width: 370 - font.pixelSize: 18; font.bold: true; color: "white" - style: Text.Outline; styleColor: "black" - } - - Repeater { - model: notes - Item { - id: stickyPage - - property int randomX: Math.random() * (page.ListView.view.width-0.5*stickyImage.width) +100 - property int randomY: Math.random() * (page.ListView.view.height-0.5*stickyImage.height) +50 - - x: randomX; y: randomY - - rotation: -flickable.horizontalVelocity / 100; - Behavior on rotation { - SpringAnimation { spring: 2.0; damping: 0.15 } - } - - Item { - id: sticky - scale: 0.7 - - Image { - id: stickyImage - x: 8 + -width * 0.6 / 2; y: -20 - source: "note-yellow.png" - scale: 0.6; transformOrigin: Item.TopLeft - smooth: true - } - - TextEdit { - id: myText - x: -104; y: 36; width: 215; height: 200 - smooth: true - font.pixelSize: 24 - readOnly: false - rotation: -8 - text: noteText - } - - Item { - x: stickyImage.x; y: -20 - width: stickyImage.width * stickyImage.scale - height: stickyImage.height * stickyImage.scale - - MouseArea { - id: mouse - anchors.fill: parent - drag.target: stickyPage - drag.axis: Drag.XandYAxis - drag.minimumY: 0 - drag.maximumY: page.height - 80 - drag.minimumX: 100 - drag.maximumX: page.width - 140 - onClicked: { myText.focus = true; myText.openSoftwareInputPanel(); } - } - } - } - - Image { - x: -width / 2; y: -height * 0.5 / 2 - source: "tack.png" - scale: 0.7; transformOrigin: Item.TopLeft - } - - states: State { - name: "pressed" - when: mouse.pressed - PropertyChanges { target: sticky; rotation: 8; scale: 1 } - PropertyChanges { target: page; z: 8 } - } - - transitions: Transition { - NumberAnimation { properties: "rotation,scale"; duration: 200 } - } - } - } - } -} - - - - - - - - diff --git a/examples/declarative/toys/corkboards/qml/corkboards.qml b/examples/declarative/toys/corkboards/qml/corkboards.qml deleted file mode 100644 index 14bc5f0b01..0000000000 --- a/examples/declarative/toys/corkboards/qml/corkboards.qml +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 800; height: 480 - color: "#464646" - - ListModel { - id: list - - ListElement { - name: "Sunday" - notes: [ - ListElement { noteText: "Lunch" }, - ListElement { noteText: "Birthday Party" } - ] - } - - ListElement { - name: "Monday" - notes: [ - ListElement { noteText: "Pickup kids from\nschool\n4.30pm" }, - ListElement { noteText: "Checkout Qt" }, ListElement { noteText: "Read email" } - ] - } - - ListElement { - name: "Tuesday" - notes: [ - ListElement { noteText: "Walk dog" }, - ListElement { noteText: "Buy newspaper" } - ] - } - - ListElement { - name: "Wednesday" - notes: [ ListElement { noteText: "Cook dinner" } ] - } - - ListElement { - name: "Thursday" - notes: [ - ListElement { noteText: "Meeting\n5.30pm" }, - ListElement { noteText: "Weed garden" } - ] - } - - ListElement { - name: "Friday" - notes: [ - ListElement { noteText: "More work" }, - ListElement { noteText: "Grocery shopping" } - ] - } - - ListElement { - name: "Saturday" - notes: [ - ListElement { noteText: "Drink" }, - ListElement { noteText: "Download Qt\nPlay with QML" } - ] - } - } - - ListView { - id: flickable - - anchors.fill: parent - focus: true - highlightRangeMode: ListView.StrictlyEnforceRange - orientation: ListView.Horizontal - snapMode: ListView.SnapOneItem - model: list - delegate: Day { } - } -} diff --git a/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/toys/corkboards/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/toys/dynamicscene/qml/Button.qml b/examples/declarative/toys/dynamicscene/content/Button.qml similarity index 99% rename from examples/declarative/toys/dynamicscene/qml/Button.qml rename to examples/declarative/toys/dynamicscene/content/Button.qml index 8cb9b58047..c224cfe7ea 100644 --- a/examples/declarative/toys/dynamicscene/qml/Button.qml +++ b/examples/declarative/toys/dynamicscene/content/Button.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: container diff --git a/examples/declarative/toys/dynamicscene/qml/GenericSceneItem.qml b/examples/declarative/toys/dynamicscene/content/GenericSceneItem.qml similarity index 99% rename from examples/declarative/toys/dynamicscene/qml/GenericSceneItem.qml rename to examples/declarative/toys/dynamicscene/content/GenericSceneItem.qml index 26db1595c4..16c38fbee0 100644 --- a/examples/declarative/toys/dynamicscene/qml/GenericSceneItem.qml +++ b/examples/declarative/toys/dynamicscene/content/GenericSceneItem.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { property bool created: false diff --git a/examples/declarative/toys/dynamicscene/qml/PaletteItem.qml b/examples/declarative/toys/dynamicscene/content/PaletteItem.qml similarity index 99% rename from examples/declarative/toys/dynamicscene/qml/PaletteItem.qml rename to examples/declarative/toys/dynamicscene/content/PaletteItem.qml index 10680f3a2f..c57ce3cdfd 100644 --- a/examples/declarative/toys/dynamicscene/qml/PaletteItem.qml +++ b/examples/declarative/toys/dynamicscene/content/PaletteItem.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "itemCreation.js" as Code Image { diff --git a/examples/declarative/toys/dynamicscene/qml/PerspectiveItem.qml b/examples/declarative/toys/dynamicscene/content/PerspectiveItem.qml similarity index 99% rename from examples/declarative/toys/dynamicscene/qml/PerspectiveItem.qml rename to examples/declarative/toys/dynamicscene/content/PerspectiveItem.qml index 5b6fbb3edc..cc074622ad 100644 --- a/examples/declarative/toys/dynamicscene/qml/PerspectiveItem.qml +++ b/examples/declarative/toys/dynamicscene/content/PerspectiveItem.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { id: rootItem diff --git a/examples/declarative/toys/dynamicscene/qml/Sun.qml b/examples/declarative/toys/dynamicscene/content/Sun.qml similarity index 97% rename from examples/declarative/toys/dynamicscene/qml/Sun.qml rename to examples/declarative/toys/dynamicscene/content/Sun.qml index df3246d356..831a456d4f 100644 --- a/examples/declarative/toys/dynamicscene/qml/Sun.qml +++ b/examples/declarative/toys/dynamicscene/content/Sun.qml @@ -38,13 +38,13 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { id: sun property bool created: false - property string source: "../images/sun.png" + property string image: "images/sun.png" source: image diff --git a/examples/declarative/toys/dynamicscene/qml/images/NOTE b/examples/declarative/toys/dynamicscene/content/images/NOTE similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/images/NOTE rename to examples/declarative/toys/dynamicscene/content/images/NOTE diff --git a/examples/declarative/toys/dynamicscene/qml/images/face-smile.png b/examples/declarative/toys/dynamicscene/content/images/face-smile.png similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/images/face-smile.png rename to examples/declarative/toys/dynamicscene/content/images/face-smile.png diff --git a/examples/declarative/toys/dynamicscene/qml/images/moon.png b/examples/declarative/toys/dynamicscene/content/images/moon.png similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/images/moon.png rename to examples/declarative/toys/dynamicscene/content/images/moon.png diff --git a/examples/declarative/toys/dynamicscene/qml/images/rabbit_brown.png b/examples/declarative/toys/dynamicscene/content/images/rabbit_brown.png similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/images/rabbit_brown.png rename to examples/declarative/toys/dynamicscene/content/images/rabbit_brown.png diff --git a/examples/declarative/toys/dynamicscene/qml/images/rabbit_bw.png b/examples/declarative/toys/dynamicscene/content/images/rabbit_bw.png similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/images/rabbit_bw.png rename to examples/declarative/toys/dynamicscene/content/images/rabbit_bw.png diff --git a/examples/declarative/toys/dynamicscene/qml/images/star.png b/examples/declarative/toys/dynamicscene/content/images/star.png similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/images/star.png rename to examples/declarative/toys/dynamicscene/content/images/star.png diff --git a/examples/declarative/toys/dynamicscene/qml/images/sun.png b/examples/declarative/toys/dynamicscene/content/images/sun.png similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/images/sun.png rename to examples/declarative/toys/dynamicscene/content/images/sun.png diff --git a/examples/declarative/toys/dynamicscene/qml/images/tree_s.png b/examples/declarative/toys/dynamicscene/content/images/tree_s.png similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/images/tree_s.png rename to examples/declarative/toys/dynamicscene/content/images/tree_s.png diff --git a/examples/declarative/toys/dynamicscene/qml/qml/itemCreation.js b/examples/declarative/toys/dynamicscene/content/itemCreation.js similarity index 100% rename from examples/declarative/toys/dynamicscene/qml/qml/itemCreation.js rename to examples/declarative/toys/dynamicscene/content/itemCreation.js diff --git a/examples/declarative/toys/dynamicscene/dynamicscene.desktop b/examples/declarative/toys/dynamicscene/dynamicscene.desktop deleted file mode 100644 index c5170c641e..0000000000 --- a/examples/declarative/toys/dynamicscene/dynamicscene.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=dynamicscene -Exec=/opt/usr/bin/dynamicscene -Icon=dynamicscene -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/toys/dynamicscene/dynamicscene.png b/examples/declarative/toys/dynamicscene/dynamicscene.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/toys/dynamicscene/main.cpp b/examples/declarative/toys/dynamicscene/main.cpp deleted file mode 100644 index 5dfbb60066..0000000000 --- a/examples/declarative/toys/dynamicscene/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/dynamicscene.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/toys/dynamicscene/qml/dynamicscene.qml b/examples/declarative/toys/dynamicscene/qml/dynamicscene.qml deleted file mode 100644 index 5f14e1df76..0000000000 --- a/examples/declarative/toys/dynamicscene/qml/dynamicscene.qml +++ /dev/null @@ -1,223 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import Qt.labs.particles 1.0 -import "qml" - -Item { - id: window - - property int activeSuns: 0 - - //This is a desktop-sized example - width: 800; height: 480 - - - MouseArea { - anchors.fill: parent - onClicked: window.focus = false; - } - - //This is the message box that pops up when there's an error - Rectangle { - id: dialog - - opacity: 0 - anchors.centerIn: parent - width: dialogText.width + 6; height: dialogText.height + 6 - border.color: 'black' - color: 'lightsteelblue' - z: 65535 //Arbitrary number chosen to be above all the items, including the scaled perspective ones. - - function show(str){ - dialogText.text = str; - dialogAnim.start(); - } - - Text { - id: dialogText - x: 3; y: 3 - font.pixelSize: 14 - } - - SequentialAnimation { - id: dialogAnim - NumberAnimation { target: dialog; property:"opacity"; to: 1; duration: 1000 } - PauseAnimation { duration: 5000 } - NumberAnimation { target: dialog; property:"opacity"; to: 0; duration: 1000 } - } - } - - // sky - Rectangle { - id: sky - anchors { left: parent.left; top: parent.top; right: toolbox.right; bottom: parent.verticalCenter } - gradient: Gradient { - GradientStop { id: gradientStopA; position: 0.0; color: "#0E1533" } - GradientStop { id: gradientStopB; position: 1.0; color: "#437284" } - } - } - - // stars (when there's no sun) - Particles { - id: stars - x: 0; y: 0; width: parent.width; height: parent.height / 2 - source: "images/star.png" - angleDeviation: 360 - velocity: 0; velocityDeviation: 0 - count: parent.width / 10 - fadeInDuration: 2800 - opacity: 1 - } - - // ground - Rectangle { - id: ground - z: 2 // just above the sun so that the sun can set behind it - anchors { left: parent.left; top: parent.verticalCenter; right: toolbox.left; bottom: parent.bottom } - gradient: Gradient { - GradientStop { position: 0.0; color: "ForestGreen" } - GradientStop { position: 1.0; color: "DarkGreen" } - } - } - - SystemPalette { id: activePalette } - - // right-hand panel - Rectangle { - id: toolbox - - width: 380 - color: activePalette.window - anchors { right: parent.right; top: parent.top; bottom: parent.bottom } - - Column { - anchors.centerIn: parent - spacing: 8 - - Text { text: "Drag an item into the scene." } - - Rectangle { - width: palette.width + 10; height: palette.height + 10 - border.color: "black" - - Row { - id: palette - anchors.centerIn: parent - spacing: 8 - - PaletteItem { - anchors.verticalCenter: parent.verticalCenter - componentFile: "Sun.qml" - image: "../images/sun.png" - } - PaletteItem { - anchors.verticalCenter: parent.verticalCenter - componentFile: "GenericSceneItem.qml" - image: "../images/moon.png" - } - PaletteItem { - anchors.verticalCenter: parent.verticalCenter - componentFile: "PerspectiveItem.qml" - image: "../images/tree_s.png" - } - PaletteItem { - anchors.verticalCenter: parent.verticalCenter - componentFile: "PerspectiveItem.qml" - image: "../images/rabbit_brown.png" - } - PaletteItem { - anchors.verticalCenter: parent.verticalCenter - componentFile: "PerspectiveItem.qml" - image: "../images/rabbit_bw.png" - } - } - } - - Text { text: "Active Suns: " + activeSuns } - - Rectangle { width: parent.width; height: 1; color: "black" } - - Text { text: "Arbitrary QML:" } - - Rectangle { - width: 360; height: 240 - - TextEdit { - id: qmlText - anchors.fill: parent; anchors.margins: 5 - readOnly: false - font.pixelSize: 14 - wrapMode: TextEdit.WordWrap - - text: "import QtQuick 1.0\nImage {\n id: smile\n x: 360 * Math.random()\n y: 180 * Math.random() \n source: 'images/face-smile.png'\n NumberAnimation on opacity { \n to: 0; duration: 1500\n }\n Component.onCompleted: smile.destroy(1500);\n}" - } - } - - Button { - text: "Create" - onClicked: { - try { - Qt.createQmlObject(qmlText.text, window, 'CustomObject'); - } catch(err) { - dialog.show('Error on line ' + err.qmlErrors[0].lineNumber + '\n' + err.qmlErrors[0].message); - } - } - } - } - } - - //Day state, for when a sun is added to the scene - states: State { - name: "Day" - when: window.activeSuns > 0 - - PropertyChanges { target: gradientStopA; color: "DeepSkyBlue" } - PropertyChanges { target: gradientStopB; color: "SkyBlue" } - PropertyChanges { target: stars; opacity: 0 } - } - - transitions: Transition { - PropertyAnimation { duration: 3000 } - ColorAnimation { duration: 3000 } - } - -} diff --git a/examples/declarative/toys/dynamicscene/qml/qml/Button.qml b/examples/declarative/toys/dynamicscene/qml/qml/Button.qml deleted file mode 100644 index 8da799e054..0000000000 --- a/examples/declarative/toys/dynamicscene/qml/qml/Button.qml +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: container - - property variant text - signal clicked - - height: text.height + 10; width: text.width + 20 - border.width: 1 - radius: 4 - smooth: true - - gradient: Gradient { - GradientStop { - position: 0.0 - color: !mouseArea.pressed ? activePalette.light : activePalette.button - } - GradientStop { - position: 1.0 - color: !mouseArea.pressed ? activePalette.button : activePalette.dark - } - } - - SystemPalette { id: activePalette } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: container.clicked() - } - - Text { - id: text - anchors.centerIn:parent - font.pointSize: 10 - text: parent.text - color: activePalette.buttonText - } -} diff --git a/examples/declarative/toys/dynamicscene/qml/qml/GenericSceneItem.qml b/examples/declarative/toys/dynamicscene/qml/qml/GenericSceneItem.qml deleted file mode 100644 index 739141293d..0000000000 --- a/examples/declarative/toys/dynamicscene/qml/qml/GenericSceneItem.qml +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - property bool created: false - property string image - - source: image - -} diff --git a/examples/declarative/toys/dynamicscene/qml/qml/PaletteItem.qml b/examples/declarative/toys/dynamicscene/qml/qml/PaletteItem.qml deleted file mode 100644 index cf5395fd5f..0000000000 --- a/examples/declarative/toys/dynamicscene/qml/qml/PaletteItem.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "itemCreation.js" as Code - -Image { - id: paletteItem - - property string componentFile - property string image - - source: image - - MouseArea { - anchors.fill: parent - - onPressed: Code.startDrag(mouse); - onPositionChanged: Code.continueDrag(mouse); - onReleased: Code.endDrag(mouse); - } -} diff --git a/examples/declarative/toys/dynamicscene/qml/qml/PerspectiveItem.qml b/examples/declarative/toys/dynamicscene/qml/qml/PerspectiveItem.qml deleted file mode 100644 index 6536df3636..0000000000 --- a/examples/declarative/toys/dynamicscene/qml/qml/PerspectiveItem.qml +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - id: rootItem - - property bool created: false - property string image - - property double scaledBottom: y + (height + height*scale) / 2 - property bool onLand: scaledBottom > window.height / 2 - - source: image - opacity: onLand ? 1 : 0.25 - scale: Math.max((y + height - 250) * 0.01, 0.3) - smooth: true - - onCreatedChanged: { - if (created && !onLand) - rootItem.destroy(); - else - z = scaledBottom; - } - - onYChanged: z = scaledBottom; -} diff --git a/examples/declarative/toys/dynamicscene/qml/qml/Sun.qml b/examples/declarative/toys/dynamicscene/qml/qml/Sun.qml deleted file mode 100644 index 5b28b39834..0000000000 --- a/examples/declarative/toys/dynamicscene/qml/qml/Sun.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - id: sun - - property bool created: false - property string image: "../images/sun.png" - - source: image - - // once item is created, start moving offscreen - NumberAnimation on y { - to: window.height / 2 - running: created - onRunningChanged: { - if (running) - duration = (window.height - sun.y) * 10; - else - state = "OffScreen" - } - } - - states: State { - name: "OffScreen" - StateChangeScript { - script: { sun.created = false; sun.destroy() } - } - } - - onCreatedChanged: { - if (created) { - sun.z = 1; // above the sky but below the ground layer - window.activeSuns++; - } else { - window.activeSuns--; - } - } -} diff --git a/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/toys/dynamicscene/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/toys/tic-tac-toe/content/Button.qml b/examples/declarative/toys/tic-tac-toe/content/Button.qml index 35de2cc689..38e58de4c1 100644 --- a/examples/declarative/toys/tic-tac-toe/content/Button.qml +++ b/examples/declarative/toys/tic-tac-toe/content/Button.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: container diff --git a/examples/declarative/toys/tic-tac-toe/content/TicTac.qml b/examples/declarative/toys/tic-tac-toe/content/TicTac.qml index dd4de5e86c..835064b764 100644 --- a/examples/declarative/toys/tic-tac-toe/content/TicTac.qml +++ b/examples/declarative/toys/tic-tac-toe/content/TicTac.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { signal clicked diff --git a/examples/declarative/toys/tic-tac-toe/qml/content/pics/board.png b/examples/declarative/toys/tic-tac-toe/content/pics/board.png similarity index 100% rename from examples/declarative/toys/tic-tac-toe/qml/content/pics/board.png rename to examples/declarative/toys/tic-tac-toe/content/pics/board.png diff --git a/examples/declarative/toys/tic-tac-toe/qml/content/pics/o.png b/examples/declarative/toys/tic-tac-toe/content/pics/o.png similarity index 100% rename from examples/declarative/toys/tic-tac-toe/qml/content/pics/o.png rename to examples/declarative/toys/tic-tac-toe/content/pics/o.png diff --git a/examples/declarative/toys/tic-tac-toe/qml/content/pics/x.png b/examples/declarative/toys/tic-tac-toe/content/pics/x.png similarity index 100% rename from examples/declarative/toys/tic-tac-toe/qml/content/pics/x.png rename to examples/declarative/toys/tic-tac-toe/content/pics/x.png diff --git a/examples/declarative/toys/tic-tac-toe/qml/content/tic-tac-toe.js b/examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js similarity index 100% rename from examples/declarative/toys/tic-tac-toe/qml/content/tic-tac-toe.js rename to examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js diff --git a/examples/declarative/toys/tic-tac-toe/main.cpp b/examples/declarative/toys/tic-tac-toe/main.cpp deleted file mode 100644 index 5804d67961..0000000000 --- a/examples/declarative/toys/tic-tac-toe/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/tic-tac-toe.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/toys/tic-tac-toe/qml/content/Button.qml b/examples/declarative/toys/tic-tac-toe/qml/content/Button.qml deleted file mode 100644 index 403d587833..0000000000 --- a/examples/declarative/toys/tic-tac-toe/qml/content/Button.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: container - - property string text - property bool pressed: false - - signal clicked - - width: buttonLabel.width + 20; height: buttonLabel.height + 6 - border { width: 1; color: Qt.darker(container.color) } - radius: 8 - color: "lightgray" - smooth: true - - gradient: Gradient { - GradientStop { - position: 0.0 - color: container.pressed ? "darkgray" : "white" - } - GradientStop { - position: 1.0 - color: container.color - } - } - - MouseArea { - anchors.fill: parent - onClicked: container.clicked() - } - - Text { - id: buttonLabel - anchors.centerIn: container - text: container.text - font.pixelSize: 14 - } -} diff --git a/examples/declarative/toys/tic-tac-toe/qml/content/TicTac.qml b/examples/declarative/toys/tic-tac-toe/qml/content/TicTac.qml deleted file mode 100644 index 7e507364a2..0000000000 --- a/examples/declarative/toys/tic-tac-toe/qml/content/TicTac.qml +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - signal clicked - - states: [ - State { name: "X"; PropertyChanges { target: image; source: "pics/x.png" } }, - State { name: "O"; PropertyChanges { target: image; source: "pics/o.png" } } - ] - - Image { - id: image - anchors.centerIn: parent - } - - MouseArea { - anchors.fill: parent - onClicked: parent.clicked() - } -} diff --git a/examples/declarative/toys/tic-tac-toe/qml/tic-tac-toe.qml b/examples/declarative/toys/tic-tac-toe/qml/tic-tac-toe.qml deleted file mode 100644 index c60f2dfeaa..0000000000 --- a/examples/declarative/toys/tic-tac-toe/qml/tic-tac-toe.qml +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" -import "content/tic-tac-toe.js" as Logic - -Rectangle { - id: game - - property bool running: true - property real difficulty: 1.0 //chance it will actually think - - width: display.width; height: display.height + 10 - - Image { - id: boardImage - source: "content/pics/board.png" - } - - - Column { - id: display - - Grid { - id: board - width: boardImage.width; height: boardImage.height - columns: 3 - - Repeater { - model: 9 - - TicTac { - width: board.width/3 - height: board.height/3 - - onClicked: { - if (game.running && Logic.canPlayAtPos(index)) { - if (!Logic.makeMove(index, "X")) - Logic.computerTurn(); - } - } - } - } - } - - Row { - spacing: 4 - anchors.horizontalCenter: parent.horizontalCenter - - Button { - text: "Hard" - pressed: game.difficulty == 1.0 - onClicked: { game.difficulty = 1.0 } - } - Button { - text: "Moderate" - pressed: game.difficulty == 0.8 - onClicked: { game.difficulty = 0.8 } - } - Button { - text: "Easy" - pressed: game.difficulty == 0.2 - onClicked: { game.difficulty = 0.2 } - } - } - } - - - Text { - id: messageDisplay - anchors.centerIn: parent - color: "blue" - style: Text.Outline; styleColor: "white" - font.pixelSize: 50; font.bold: true - visible: false - - Timer { - running: messageDisplay.visible - onTriggered: { - messageDisplay.visible = false; - Logic.restartGame(); - } - } - } -} diff --git a/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/toys/tic-tac-toe/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/toys/tic-tac-toe/tic-tac-toe.pro b/examples/declarative/toys/tic-tac-toe/tic-tac-toe.pro deleted file mode 100644 index 2e1fbd39fb..0000000000 --- a/examples/declarative/toys/tic-tac-toe/tic-tac-toe.pro +++ /dev/null @@ -1,39 +0,0 @@ -# Add more folders to ship with the application, here -folder_01.source = qml -folder_01.target = qml -DEPLOYMENTFOLDERS = folder_01 - -# Additional import path used to resolve QML modules in Creator's code model -QML_IMPORT_PATH = - -# Avoid auto screen rotation -DEFINES += ORIENTATIONLOCK - -# Needs to be defined for Symbian -#DEFINES += NETWORKACCESS - -symbian:TARGET.UID3 = 0xEFDDF868 - -# Smart Installer package's UID -# This UID is from the protected range -# and therefore the package will fail to install if self-signed -# By default qmake uses the unprotected range value if unprotected UID is defined for the application -# and 0x2002CCCF value if protected UID is given to the application -#symbian:DEPLOYMENT.installer_header = 0x2002CCCF - -# Define QMLJSDEBUGGER to allow debugging of QML in debug builds -# (This might significantly increase build time) -# DEFINES += QMLJSDEBUGGER - -# If your application uses the Qt Mobility libraries, uncomment -# the following lines and add the respective components to the -# MOBILITY variable. -# CONFIG += mobility -# MOBILITY += - -# The .cpp file which was generated for your project. Feel free to hack it. -SOURCES += main.cpp - -# Please do not modify the following two lines. Required for deployment. -include(qmlapplicationviewer/qmlapplicationviewer.pri) -qtcAddDeployment() diff --git a/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml b/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml index 87e3e2ec64..2cd1350934 100644 --- a/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml +++ b/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" import "content/tic-tac-toe.js" as Logic diff --git a/examples/declarative/toys/tic-tac-toe/tictactoe.desktop b/examples/declarative/toys/tic-tac-toe/tictactoe.desktop deleted file mode 100644 index e66569c497..0000000000 --- a/examples/declarative/toys/tic-tac-toe/tictactoe.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=tic-tac-toe -Exec=/opt/usr/bin/tic-tac-toe -Icon=tic-tac-toe -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/toys/tic-tac-toe/tictactoe.png b/examples/declarative/toys/tic-tac-toe/tictactoe.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/toys/tvtennis/main.cpp b/examples/declarative/toys/tvtennis/main.cpp deleted file mode 100644 index e5329b6e82..0000000000 --- a/examples/declarative/toys/tvtennis/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/tvtennis.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/toys/tvtennis/qml/tvtennis.qml b/examples/declarative/toys/tvtennis/qml/tvtennis.qml deleted file mode 100644 index 805666d5c7..0000000000 --- a/examples/declarative/toys/tvtennis/qml/tvtennis.qml +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: page - width: 640; height: 480 - color: "Black" - - // Make a ball to bounce - Rectangle { - id: ball - - // Add a property for the target y coordinate - property variant direction : "right" - - x: 20; width: 20; height: 20; z: 1 - color: "Lime" - - // Move the ball to the right and back to the left repeatedly - SequentialAnimation on x { - loops: Animation.Infinite - NumberAnimation { to: page.width - 40; duration: 2000 } - PropertyAction { target: ball; property: "direction"; value: "left" } - NumberAnimation { to: 20; duration: 2000 } - PropertyAction { target: ball; property: "direction"; value: "right" } - } - - // Make y move with a velocity of 200 - Behavior on y { SpringAnimation{ velocity: 200; } - } - - Component.onCompleted: y = page.height-10; // start the ball motion - - // Detect the ball hitting the top or bottom of the view and bounce it - onYChanged: { - if (y <= 0) { - y = page.height - 20; - } else if (y >= page.height - 20) { - y = 0; - } - } - } - - // Place bats to the left and right of the view, following the y - // coordinates of the ball. - Rectangle { - id: leftBat - color: "Lime" - x: 2; width: 20; height: 90 - y: ball.direction == 'left' ? ball.y - 45 : page.height/2 -45; - Behavior on y { SpringAnimation{ velocity: 300 } } - } - Rectangle { - id: rightBat - color: "Lime" - x: page.width - 22; width: 20; height: 90 - y: ball.direction == 'right' ? ball.y - 45 : page.height/2 -45; - Behavior on y { SpringAnimation{ velocity: 300 } } - } - - // The rest, to make it look realistic, if neither ever scores... - Rectangle { color: "Lime"; x: page.width/2-80; y: 0; width: 40; height: 60 } - Rectangle { color: "Black"; x: page.width/2-70; y: 10; width: 20; height: 40 } - Rectangle { color: "Lime"; x: page.width/2+40; y: 0; width: 40; height: 60 } - Rectangle { color: "Black"; x: page.width/2+50; y: 10; width: 20; height: 40 } - Repeater { - model: page.height / 20 - Rectangle { color: "Lime"; x: page.width/2-5; y: index * 20; width: 10; height: 10 } - } -} diff --git a/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/toys/tvtennis/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/toys/tvtennis/tvtennis.desktop b/examples/declarative/toys/tvtennis/tvtennis.desktop deleted file mode 100644 index e9ca1b9a13..0000000000 --- a/examples/declarative/toys/tvtennis/tvtennis.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=tvtennis -Exec=/opt/usr/bin/tvtennis -Icon=tvtennis -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/toys/tvtennis/tvtennis.png b/examples/declarative/toys/tvtennis/tvtennis.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - From 8a64e8a0dbc8ffedd77eb30fb0371eeb1c0dc12f Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Thu, 25 Aug 2011 12:46:03 +1000 Subject: [PATCH 13/68] Update animation examples to QtQuick 2.0 and remove obsolete files. Change-Id: If29cf056b37fbc45e29d81dac43414261aa74034 Reviewed-on: http://codereview.qt.nokia.com/3545 Reviewed-by: Qt Sanity Bot Reviewed-by: Alan Alpert --- .../animation/basics/basics.qmlproject | 16 -- .../animation/basics/color-animation.qml | 31 ++- .../color-animation/coloranimation.desktop | 11 - .../basics/color-animation/coloranimation.png | Bin 3400 -> 0 bytes .../basics/color-animation/coloranimation.pro | 39 ---- .../basics/color-animation/coloranimation.svg | 93 --------- .../animation/basics/color-animation/main.cpp | 54 ----- .../color-animation/qml/color-animation.qml | 110 ---------- .../qml/property-animation.qml | 105 ---------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../qml => }/images/face-smile.png | Bin .../{color-animation/qml => }/images/moon.png | Bin .../qml => }/images/shadow.png | Bin .../{color-animation/qml => }/images/star.png | Bin .../{color-animation/qml => }/images/sun.png | Bin .../animation/basics/property-animation.qml | 2 +- .../basics/property-animation/main.cpp | 54 ----- .../propertyanimation.desktop | 11 - .../property-animation/propertyanimation.png | Bin 3400 -> 0 bytes .../property-animation/propertyanimation.pro | 39 ---- .../property-animation/propertyanimation.svg | 93 --------- .../qml/color-animation.qml | 110 ---------- .../qml/images/face-smile.png | Bin 15408 -> 0 bytes .../property-animation/qml/images/moon.png | Bin 2433 -> 0 bytes .../property-animation/qml/images/shadow.png | Bin 425 -> 0 bytes .../property-animation/qml/images/star.png | Bin 349 -> 0 bytes .../property-animation/qml/images/sun.png | Bin 8153 -> 0 bytes .../qml/property-animation.qml | 105 ---------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../qtc_packaging/debian_fremantle/README | 6 - .../qtc_packaging/debian_fremantle/changelog | 5 - .../qtc_packaging/debian_fremantle/compat | 1 - .../qtc_packaging/debian_fremantle/control | 13 -- .../qtc_packaging/debian_fremantle/copyright | 40 ---- .../qtc_packaging/debian_fremantle/rules | 91 -------- .../animation/behaviors/SideRect.qml | 2 +- .../animation/behaviors/behavior-example.qml | 2 +- .../behavior-example/behaviorexample.desktop | 11 - .../behavior-example/behaviorexample.png | Bin 3400 -> 0 bytes .../behavior-example/behaviorexample.pro | 39 ---- .../behavior-example/behaviorexample.svg | 93 --------- .../behaviors/behavior-example/main.cpp | 54 ----- .../behavior-example/qml/SideRect.qml | 62 ------ .../behavior-example/qml/behavior-example.qml | 118 ----------- .../behavior-example/qml/wigglytext.qml | 108 ---------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../animation/behaviors/behaviors.qmlproject | 16 -- .../animation/behaviors/wigglytext.qml | 2 +- .../animation/easing/content/QuitButton.qml | 2 +- .../easing/{qml => }/content/quit.png | Bin .../animation/easing/easing.desktop | 11 - .../declarative/animation/easing/easing.png | Bin 3400 -> 0 bytes .../declarative/animation/easing/easing.pro | 39 ---- .../declarative/animation/easing/easing.qml | 2 +- .../declarative/animation/easing/easing.svg | 93 --------- .../declarative/animation/easing/main.cpp | 54 ----- .../easing/qml/content/QuitButton.qml | 52 ----- .../animation/easing/qml/easing.qml | 159 -------------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../declarative/animation/states/main.cpp | 54 ----- .../animation/states/qml/states.qml | 101 --------- .../animation/states/qml/transitions.qml | 130 ------------ .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../animation/states/{qml => }/qt-logo.png | Bin .../animation/states/states.desktop | 11 - .../declarative/animation/states/states.png | Bin 3400 -> 0 bytes .../declarative/animation/states/states.pro | 39 ---- .../declarative/animation/states/states.qml | 2 +- .../declarative/animation/states/states.svg | 93 --------- .../animation/states/transitions.qml | 2 +- 80 files changed, 29 insertions(+), 4501 deletions(-) delete mode 100644 examples/declarative/animation/basics/basics.qmlproject delete mode 100644 examples/declarative/animation/basics/color-animation/coloranimation.desktop delete mode 100644 examples/declarative/animation/basics/color-animation/coloranimation.png delete mode 100644 examples/declarative/animation/basics/color-animation/coloranimation.pro delete mode 100644 examples/declarative/animation/basics/color-animation/coloranimation.svg delete mode 100644 examples/declarative/animation/basics/color-animation/main.cpp delete mode 100644 examples/declarative/animation/basics/color-animation/qml/color-animation.qml delete mode 100644 examples/declarative/animation/basics/color-animation/qml/property-animation.qml delete mode 100644 examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/animation/basics/{color-animation/qml => }/images/face-smile.png (100%) rename examples/declarative/animation/basics/{color-animation/qml => }/images/moon.png (100%) rename examples/declarative/animation/basics/{color-animation/qml => }/images/shadow.png (100%) rename examples/declarative/animation/basics/{color-animation/qml => }/images/star.png (100%) rename examples/declarative/animation/basics/{color-animation/qml => }/images/sun.png (100%) delete mode 100644 examples/declarative/animation/basics/property-animation/main.cpp delete mode 100644 examples/declarative/animation/basics/property-animation/propertyanimation.desktop delete mode 100644 examples/declarative/animation/basics/property-animation/propertyanimation.png delete mode 100644 examples/declarative/animation/basics/property-animation/propertyanimation.pro delete mode 100644 examples/declarative/animation/basics/property-animation/propertyanimation.svg delete mode 100644 examples/declarative/animation/basics/property-animation/qml/color-animation.qml delete mode 100644 examples/declarative/animation/basics/property-animation/qml/images/face-smile.png delete mode 100644 examples/declarative/animation/basics/property-animation/qml/images/moon.png delete mode 100644 examples/declarative/animation/basics/property-animation/qml/images/shadow.png delete mode 100644 examples/declarative/animation/basics/property-animation/qml/images/star.png delete mode 100644 examples/declarative/animation/basics/property-animation/qml/images/sun.png delete mode 100644 examples/declarative/animation/basics/property-animation/qml/property-animation.qml delete mode 100644 examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/README delete mode 100644 examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/changelog delete mode 100644 examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/compat delete mode 100644 examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/control delete mode 100644 examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/copyright delete mode 100755 examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/rules delete mode 100644 examples/declarative/animation/behaviors/behavior-example/behaviorexample.desktop delete mode 100644 examples/declarative/animation/behaviors/behavior-example/behaviorexample.png delete mode 100644 examples/declarative/animation/behaviors/behavior-example/behaviorexample.pro delete mode 100644 examples/declarative/animation/behaviors/behavior-example/behaviorexample.svg delete mode 100644 examples/declarative/animation/behaviors/behavior-example/main.cpp delete mode 100644 examples/declarative/animation/behaviors/behavior-example/qml/SideRect.qml delete mode 100644 examples/declarative/animation/behaviors/behavior-example/qml/behavior-example.qml delete mode 100644 examples/declarative/animation/behaviors/behavior-example/qml/wigglytext.qml delete mode 100644 examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/animation/behaviors/behaviors.qmlproject rename examples/declarative/animation/easing/{qml => }/content/quit.png (100%) delete mode 100644 examples/declarative/animation/easing/easing.desktop delete mode 100644 examples/declarative/animation/easing/easing.png delete mode 100644 examples/declarative/animation/easing/easing.pro delete mode 100644 examples/declarative/animation/easing/easing.svg delete mode 100644 examples/declarative/animation/easing/main.cpp delete mode 100644 examples/declarative/animation/easing/qml/content/QuitButton.qml delete mode 100644 examples/declarative/animation/easing/qml/easing.qml delete mode 100644 examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/animation/states/main.cpp delete mode 100644 examples/declarative/animation/states/qml/states.qml delete mode 100644 examples/declarative/animation/states/qml/transitions.qml delete mode 100644 examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/animation/states/{qml => }/qt-logo.png (100%) delete mode 100644 examples/declarative/animation/states/states.desktop delete mode 100644 examples/declarative/animation/states/states.png delete mode 100644 examples/declarative/animation/states/states.pro delete mode 100644 examples/declarative/animation/states/states.svg diff --git a/examples/declarative/animation/basics/basics.qmlproject b/examples/declarative/animation/basics/basics.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/animation/basics/basics.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/animation/basics/color-animation.qml b/examples/declarative/animation/basics/color-animation.qml index 2609166418..a83dbab569 100644 --- a/examples/declarative/animation/basics/color-animation.qml +++ b/examples/declarative/animation/basics/color-animation.qml @@ -38,8 +38,8 @@ ** ****************************************************************************/ -import QtQuick 1.0 -import Qt.labs.particles 1.0 +import QtQuick 2.0 +import QtQuick.Particles 2.0 Item { id: window @@ -80,14 +80,25 @@ Item { source: "images/moon.png"; y: parent.height - 74; anchors.horizontalCenter: parent.horizontalCenter rotation: -parent.rotation } - Particles { - x: 0; y: parent.height/2; width: parent.width; height: parent.height/2 - source: "images/star.png"; angleDeviation: 360; velocity: 0 - velocityDeviation: 0; count: parent.width / 10; fadeInDuration: 2800 - SequentialAnimation on opacity { - loops: Animation.Infinite - NumberAnimation { from: 0; to: 1; duration: 5000 } - NumberAnimation { from: 1; to: 0; duration: 5000 } + ParticleSystem { + id: particlesystem + x: 0; y: parent.height/2 + width: parent.width; height: parent.height/2 + ImageParticle { + source: "images/star.png" + particles: ["star"] + color: "#00333333" + SequentialAnimation on opacity { + loops: Animation.Infinite + NumberAnimation { from: 0; to: 1; duration: 5000 } + NumberAnimation { from: 1; to: 0; duration: 5000 } + } + } + Emitter { + particle: "star" + anchors.fill: parent + emitRate: parent.width / 50 + lifeSpan: 5000 } } } diff --git a/examples/declarative/animation/basics/color-animation/coloranimation.desktop b/examples/declarative/animation/basics/color-animation/coloranimation.desktop deleted file mode 100644 index b6df2d04c4..0000000000 --- a/examples/declarative/animation/basics/color-animation/coloranimation.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=color-animation -Exec=/opt/usr/bin/color-animation -Icon=color-animation -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/animation/basics/color-animation/coloranimation.png b/examples/declarative/animation/basics/color-animation/coloranimation.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/animation/basics/color-animation/main.cpp b/examples/declarative/animation/basics/color-animation/main.cpp deleted file mode 100644 index 1a5dcd5e91..0000000000 --- a/examples/declarative/animation/basics/color-animation/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/color-animation.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/animation/basics/color-animation/qml/color-animation.qml b/examples/declarative/animation/basics/color-animation/qml/color-animation.qml deleted file mode 100644 index 809f391a0b..0000000000 --- a/examples/declarative/animation/basics/color-animation/qml/color-animation.qml +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import Qt.labs.particles 1.0 - -Item { - id: window - width: 640; height: 480 - - // Let's draw the sky... - Rectangle { - anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } - gradient: Gradient { - GradientStop { - position: 0.0 - SequentialAnimation on color { - loops: Animation.Infinite - ColorAnimation { from: "DeepSkyBlue"; to: "#0E1533"; duration: 5000 } - ColorAnimation { from: "#0E1533"; to: "DeepSkyBlue"; duration: 5000 } - } - } - GradientStop { - position: 1.0 - SequentialAnimation on color { - loops: Animation.Infinite - ColorAnimation { from: "SkyBlue"; to: "#437284"; duration: 5000 } - ColorAnimation { from: "#437284"; to: "SkyBlue"; duration: 5000 } - } - } - } - } - - // the sun, moon, and stars - Item { - width: parent.width; height: 2 * parent.height - NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite } - Image { - source: "images/sun.png"; y: 10; anchors.horizontalCenter: parent.horizontalCenter - rotation: -3 * parent.rotation - } - Image { - source: "images/moon.png"; y: parent.height - 74; anchors.horizontalCenter: parent.horizontalCenter - rotation: -parent.rotation - } - Particles { - x: 0; y: parent.height/2; width: parent.width; height: parent.height/2 - source: "images/star.png"; angleDeviation: 360; velocity: 0 - velocityDeviation: 0; count: parent.width / 10; fadeInDuration: 2800 - SequentialAnimation on opacity { - loops: Animation.Infinite - NumberAnimation { from: 0; to: 1; duration: 5000 } - NumberAnimation { from: 1; to: 0; duration: 5000 } - } - } - } - - // ...and the ground. - Rectangle { - anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } - gradient: Gradient { - GradientStop { - position: 0.0 - SequentialAnimation on color { - loops: Animation.Infinite - ColorAnimation { from: "ForestGreen"; to: "#001600"; duration: 5000 } - ColorAnimation { from: "#001600"; to: "ForestGreen"; duration: 5000 } - } - } - GradientStop { position: 1.0; color: "DarkGreen" } - } - } -} diff --git a/examples/declarative/animation/basics/color-animation/qml/property-animation.qml b/examples/declarative/animation/basics/color-animation/qml/property-animation.qml deleted file mode 100644 index 0a5b3530bc..0000000000 --- a/examples/declarative/animation/basics/color-animation/qml/property-animation.qml +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: window - width: 320; height: 480 - - // Let's draw the sky... - Rectangle { - anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } - gradient: Gradient { - GradientStop { position: 0.0; color: "DeepSkyBlue" } - GradientStop { position: 1.0; color: "LightSkyBlue" } - } - } - - // ...and the ground. - Rectangle { - anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } - gradient: Gradient { - GradientStop { position: 0.0; color: "ForestGreen" } - GradientStop { position: 1.0; color: "DarkGreen" } - } - } - - // The shadow for the smiley face - Image { - anchors.horizontalCenter: parent.horizontalCenter - y: smiley.minHeight + 58 - source: "images/shadow.png" - - // The scale property depends on the y position of the smiley face. - scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight) - } - - Image { - id: smiley - property int maxHeight: window.height / 3 - property int minHeight: 2 * window.height / 3 - - anchors.horizontalCenter: parent.horizontalCenter - y: minHeight - source: "images/face-smile.png" - - // Animate the y property. Setting loops to Animation.Infinite makes the - // animation repeat indefinitely, otherwise it would only run once. - SequentialAnimation on y { - loops: Animation.Infinite - - // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function - NumberAnimation { - from: smiley.minHeight; to: smiley.maxHeight - easing.type: Easing.OutExpo; duration: 300 - } - - // Then move back to minHeight in 1 second, using the OutBounce easing function - NumberAnimation { - from: smiley.maxHeight; to: smiley.minHeight - easing.type: Easing.OutBounce; duration: 1000 - } - - // Then pause for 500ms - PauseAnimation { duration: 500 } - } - } -} diff --git a/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/animation/basics/color-animation/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/animation/basics/color-animation/qml/images/face-smile.png b/examples/declarative/animation/basics/images/face-smile.png similarity index 100% rename from examples/declarative/animation/basics/color-animation/qml/images/face-smile.png rename to examples/declarative/animation/basics/images/face-smile.png diff --git a/examples/declarative/animation/basics/color-animation/qml/images/moon.png b/examples/declarative/animation/basics/images/moon.png similarity index 100% rename from examples/declarative/animation/basics/color-animation/qml/images/moon.png rename to examples/declarative/animation/basics/images/moon.png diff --git a/examples/declarative/animation/basics/color-animation/qml/images/shadow.png b/examples/declarative/animation/basics/images/shadow.png similarity index 100% rename from examples/declarative/animation/basics/color-animation/qml/images/shadow.png rename to examples/declarative/animation/basics/images/shadow.png diff --git a/examples/declarative/animation/basics/color-animation/qml/images/star.png b/examples/declarative/animation/basics/images/star.png similarity index 100% rename from examples/declarative/animation/basics/color-animation/qml/images/star.png rename to examples/declarative/animation/basics/images/star.png diff --git a/examples/declarative/animation/basics/color-animation/qml/images/sun.png b/examples/declarative/animation/basics/images/sun.png similarity index 100% rename from examples/declarative/animation/basics/color-animation/qml/images/sun.png rename to examples/declarative/animation/basics/images/sun.png diff --git a/examples/declarative/animation/basics/property-animation.qml b/examples/declarative/animation/basics/property-animation.qml index f678280d04..462e397c6a 100644 --- a/examples/declarative/animation/basics/property-animation.qml +++ b/examples/declarative/animation/basics/property-animation.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: window diff --git a/examples/declarative/animation/basics/property-animation/main.cpp b/examples/declarative/animation/basics/property-animation/main.cpp deleted file mode 100644 index 2a84ef09ac..0000000000 --- a/examples/declarative/animation/basics/property-animation/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/property-animation.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/animation/basics/property-animation/propertyanimation.desktop b/examples/declarative/animation/basics/property-animation/propertyanimation.desktop deleted file mode 100644 index 6155c2f79b..0000000000 --- a/examples/declarative/animation/basics/property-animation/propertyanimation.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=property-animation -Exec=/opt/usr/bin/property-animation -Icon=property-animation -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/animation/basics/property-animation/propertyanimation.png b/examples/declarative/animation/basics/property-animation/propertyanimation.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/animation/basics/property-animation/qml/color-animation.qml b/examples/declarative/animation/basics/property-animation/qml/color-animation.qml deleted file mode 100644 index 809f391a0b..0000000000 --- a/examples/declarative/animation/basics/property-animation/qml/color-animation.qml +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import Qt.labs.particles 1.0 - -Item { - id: window - width: 640; height: 480 - - // Let's draw the sky... - Rectangle { - anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } - gradient: Gradient { - GradientStop { - position: 0.0 - SequentialAnimation on color { - loops: Animation.Infinite - ColorAnimation { from: "DeepSkyBlue"; to: "#0E1533"; duration: 5000 } - ColorAnimation { from: "#0E1533"; to: "DeepSkyBlue"; duration: 5000 } - } - } - GradientStop { - position: 1.0 - SequentialAnimation on color { - loops: Animation.Infinite - ColorAnimation { from: "SkyBlue"; to: "#437284"; duration: 5000 } - ColorAnimation { from: "#437284"; to: "SkyBlue"; duration: 5000 } - } - } - } - } - - // the sun, moon, and stars - Item { - width: parent.width; height: 2 * parent.height - NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite } - Image { - source: "images/sun.png"; y: 10; anchors.horizontalCenter: parent.horizontalCenter - rotation: -3 * parent.rotation - } - Image { - source: "images/moon.png"; y: parent.height - 74; anchors.horizontalCenter: parent.horizontalCenter - rotation: -parent.rotation - } - Particles { - x: 0; y: parent.height/2; width: parent.width; height: parent.height/2 - source: "images/star.png"; angleDeviation: 360; velocity: 0 - velocityDeviation: 0; count: parent.width / 10; fadeInDuration: 2800 - SequentialAnimation on opacity { - loops: Animation.Infinite - NumberAnimation { from: 0; to: 1; duration: 5000 } - NumberAnimation { from: 1; to: 0; duration: 5000 } - } - } - } - - // ...and the ground. - Rectangle { - anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } - gradient: Gradient { - GradientStop { - position: 0.0 - SequentialAnimation on color { - loops: Animation.Infinite - ColorAnimation { from: "ForestGreen"; to: "#001600"; duration: 5000 } - ColorAnimation { from: "#001600"; to: "ForestGreen"; duration: 5000 } - } - } - GradientStop { position: 1.0; color: "DarkGreen" } - } - } -} diff --git a/examples/declarative/animation/basics/property-animation/qml/images/face-smile.png b/examples/declarative/animation/basics/property-animation/qml/images/face-smile.png deleted file mode 100644 index 3d66d725781730c7a9376a25113164f8882d9795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15408 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 SNxgs4ATkn);&q}%LH`e8$k9yz diff --git a/examples/declarative/animation/basics/property-animation/qml/images/moon.png b/examples/declarative/animation/basics/property-animation/qml/images/moon.png deleted file mode 100644 index 9407b2b4f012de17999fb3695ddc14fb5787289e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2433 zcmV-{34Zp8P)Px#32;bRa{vGvuK)lWuK`{fksJU300(qQO+^RT2NVkw8~1$KVgLXD0%A)?L;(MX zkIcUS00{+2L_t(&-tE|F$ff652k_thY-fGXyUt{pOvqU4l8PpwVhOc1)R=;_9|WyZ zLM+ira0?<9W5h3Q6)l1vgo?IG)nXN?A!$i1)j~*dr5Y0rW^pnz$;@Ql{k&&+c0bH9 zQk_ZOi79@W>*0KP4)=ZipX>VH%m2^SxEfdEYWzP(cs+yKi{rxAylP+HWZ?=E6V>s# z^8@BP@r**r9t&l0^#@8gdjd+HBvJdsN@Dnago1GTwE ztyC(sA_t}-joMtHHF2PndD9^L&M)0AeKjIPmuLP{qlZ2^xFu7VqqbwuOsz((QmGWE za zEYnpBT9KY(?|a~TrR^0}AnbJ?`N__;b5o_r8X~1!xqwkC95HfKY-T35uTd$@&AlX* zX#{h%9 z3TI`8-~C6&KR8w$t_AU*9qZnfixy8(0TmbP0}8w1ugMoZ(ojA78QuJA{~9PYQgQ;#DN22U-hqE@RHLSrN)MJJ?wbd zIa^A{6iR!dcV6gRstK2`NhGd0Q_$bgtJ+Gb7RfEdU4Xv>=^5BU#{IbFJex^mL5vBT^$W zbiuM)_4U&yjvTTA^CTWJUl8!(WZM#@b%|Og5!C1_>=>x^t!vE^Dm(NSpZ%B|T@N)2#UY*}B>SW{TBsn%FA(MWBXiA07rvqSC! zNt4Ygt-gsywmADEjm%u5BNIv8U@DVpwNkmD<65guc|ql7bGy!{G@fgL1M{uHYFk*>?&mj`nF|SsYbA-)f!7wA|0iG%uwybw)QY2Y&)f$QfkT2 znvRaqVzRMDWNM;SIjfc1lSyqDiN#hFHVq9#60NRQ(2<%I-+AG10CdXuxzb$idILSz zxzRDL%v>gu$_@4O&=aXlP0a;;y9PG&WO`N&b+r1fk%>+pJvd|q2Ia~>j2&pzI+i55 zQp-9LBkTIu6;$@kq&oVxM2iiF4eNqaw)OQaS+*wDK6}mdPyhn;osUhbj#w(SV$GJh z3LTlLMk+|vhL#QV1*;OwHTpJ0#&T1!8(fQhQyyQ+57`3ET`y)|&GifoB@Vn`SFkKK zGt?D}q=t@LM%Suct)RtNs!?bS9B9S5YV+z_z7WcA$O}nx-K6*MzFZ>F*EKNL*iovL z5ibLbmUDDM38V)K+ObBWBF%z;Q>Drm$K ziAdkvH3s@d5<#xj)6=@fH%O&AR`d+@KCwPIG=M<;qo?|x-nX|9U^hAHhz&uH| zpk06{%;e@Ojanr&GPPrN>Xrvb`te)^uz^ro-dAGqidl-VDD(_j5oxZ_5N){@kko~~t$pv10XA=z4upfy(+pSk}2 zyC3b%{!b3cMF^6AUjNMx_3pdAvnnyyml_zNkh9Rs7uUi?@xIv(9=Z9!yZ${ZUfU}> zoJ$s;?tkjL_I@$FV=Z(AvA!FWUeX96g<6YRD^)((|Jb`9IkvAljA?mjpRi7z9{uS% z+V`h-4Tp)yH8Q&*UBRv#Lv>kyIs3!!`Qr7vN%02yg#YcCh&Ov*I)3twmdPx#0%A)?L;(MXkIcUS000SaNLh0L01egv01egwkZ*aM00007bV*G`2iXc00xlLP z#V}X^00AvYL_t(2&sCDmNl}EMEjCrA2w=vc5!OUM!FuD-_qwCu z^ZIk5D1g1};DjS(oC+vrU?eAsfYNG&Q)L-!!IU*zr^u&;}%JHDzo8btuQ^bBfVmTJZVFZXTRuy2CrP* zT!PphT5-)`(2H-=@k)Vt<;gk3%#kNYmKlWzY$75$v}x%FIigLAuX-!tj^E%PUE_#&1J>;Bn(m#0}>+tzhKNaRv)bo>$a@~7Ni*txp8b$W75xsJQ)&K2Nfd>P4e_{{OW z(~I@y#8eivb^SXekx4GghgWPVlaP+9 zNOe3isi&#jPHSy0`-1#=FN)3@_pe!NQI(jQonrCMFf2u6*?}!tHM6v??l8Obck?;Z rp!JTQUY&A`>woHd{mlRRh4lbP0l+XkKyuFM8 diff --git a/examples/declarative/animation/basics/property-animation/qml/images/sun.png b/examples/declarative/animation/basics/property-animation/qml/images/sun.png deleted file mode 100644 index 7713ca5ce7d1223430594e4d79632a70257dce05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8153 zcmV;~A12_5P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iOM@ z5+^2qR+x?e03TUNL_t(|+U%LxlO@M>-oKMeRo%LK-+Q~KyJtmX8w?hL08COc1&gAM zut6)R2+EG|1H%uF@S7g&(6i}3!45z9$uD+eiCWarIqh0fr!GQVN8^r~8YOT{Tfz`J2phPG;f%+o!~S@AoG9i1DAD6!&;--lRg z-5&@aKy*3?s#Wmc3LrS&(|r9DvcCY!eh~5ZI)s_=9{^sU+E{^FUIzGImwKZum}mF@ z^tVLeWe7k5pJE`)5X_&n$4-EBMXmfc;57xH2NdR3e?}77YQ;k%1Msyc3HG$cYoDFI z=SrcaR&`|XM4w_HSTEIw=0660E|{?jvE2z70E|?q1`+1g=qhG}2%ymfP?ZF(Y2+dJ zphcDkHBv>u0rGqQL%#7T1F{Ma35|0I@L!%2<<$R(@xLkcKLF2;nZ`AI^ARaT0Mv`x zodBB#AQu%mBp8HYGX%l_XW#M3TTg0V9aSyC$qW`Vk&e2Q}P;#H+D}^DSaq#}SZA5b#+YWCQ%9 zqpHvgRNJg*%?Z`PnA5Yz;FGwM2Z-I#eIxlc?Q>BT@Zg`KYX1eqb2|kLJ_mAPP1qgGg8z0Rk^x~V&3Gaf( zyIov3?FnYc-CMEObZT+?bW;l#z*p-fB*9LsvBx5*ahpYYoGD*|cdJBn9MT?#N_s%r zlestsVasc27nHQvs5Jz`MYXRpH?|rflsC`T1h|3pM;ZSo5Ch*0Q%fB2f@b1(ekwrL*WCsUn!6Yfc>_IIMiTP z%*gP)Re|cs3VuhW$oF=9(K;s%Pp-T8Y9{MD8vW`+KCcQXOw5{`(1%q(o(7G(B+z7- z1nj$|1c*Z~5E0ZWyx(OuB|PqvcXeprBg-2=-V~CREKby%bv+SZyNMbU-dOY)pQ@sf zX8zjpqF0ENb~|ZyQR$U>ti&*-Gw{DMApF|XgnpCF`RkO8Pow_a<)|oU%~D zK3zq8D*?oasqq;xSlQ&(&4O#&ZIQ%ZV4dv|%a~PCVH=+<@+>rCaUxH0@4Rali9gF; zgi;r*D>9JEMPX$ubu9K(AQB>1Ctqwac$Iu;*hUY@VCxN5gTUu8%ludsVP0U|jRc`5 zIKO~O8tZ1#5|r)Z)n^R9n-G!@2!Ay8^o?H($UK$avE8m1x9e*65{iY`dR+Xhq}3}8 z(b~?EerD@vw2`)2qOzUAbV8)@-vu=`sNN?oBI@La&V6!~y}ZFu97h1?kgEihWI_;p*cMl^Q@EfCGr{>Utllw$KfZI_y zLIR5_3L=1i{FMM+oB-Kf(7^N2%Ixet1X~m+0?pQTNGF;^(e^fccCepx_pXi~48#*l zjdNck)m{XsC}k!h;bu_yL!Aq7De|iH8t?&Ze+Pq$f9M^*cXMIQe5cmX>*SgNd%Z

b<3iL|%8C*7t4{PmZnxpJ}Z9PFOkp z6d-M>3?ybC#H@Fsd*6g{XG7!x_5?Up`T%S+vi0*kyz#C5)@gITwHRF{ALk(RI?yDp zkBC+Nj@&9`9U99xXO&4>ZsH(?Bn+g5(%bdFee!5O5?SkN^O> z_bvEN$L#rzcYwDVFd@wDCI*+knO2S^7rH0IR|QoD962VUOLW*|#e=mePL%&3pneS7Q1e=jUi_aXKLa04=yJ+g!AsV!b!oyPDV2_p{~N$d{lk3$@vc*0xZnU_*%@AoY*cQ(Z-^-o| zbVUWLCqQbi)EFcRKo~%pY5Y(YP^FhMiMgM*=d!okn774|3Xse}!2sd%3IYnl{ddv_ zvm~i;eJkU7{uqy%kI>EIEVf$%Y4!{b0Q}({2%`~1Q6MN`RDuAJ_fQ`{L%!T5^urKK zpC|rt#p3;d7x(m~W1x?6+0xmDk}HhknnHyl#GwFyTr z39-8)g4`gr0v!nR8=z!_AWaZPN(5X)E=Zb2lNq;KyO!wVfP8J;<9s_uwiLrq565+g z{^tg$ZZX?>hcZ6HDrs_fK$N@j{x#RaZqZS7K(-`E=Ti_97=9{s)Fyz$owz|_4rA(h z?&rl21A@Vrws``ily{R%CA5QTDX2qGy6M-FEp@fFFnE6p>R_ zY&@Vuw(3z-4lt5q`qH=T&yOMhw$yXynO;0U;=lUB7)iC^6s-vEw1I?J?G7NgM@93q z)+bB-3kOeyl7(ynqLKn41BsyY9&{wh6A!u*KR}p)AsjgdO<6Dl6V2Mbl<-qH(%%Nc zrGNqy=1@%_Or6@kl$@wME1No`<38{;j*t^-X&LKMv42Vk(@5dOEnGR=qJQzf{U;Bq zCqZbhNdECD4M&Xj_Sjd`>mt`9Wcnd?wFe1lkJVs&u$lE_-*sdgkad7m3iv)Cnjonr zFd%p~a53}KY%{Mzcs4`$!!u--^XI{J4w!{4y#r%V`UIi|$WngaJ)9Tv8C4CI8tkv!u%|4zSI@I>6GcS3VkY} zLz$*N)<#!Ix*AlHlFD`%t_7!#k9Xag5=^27hzfzE1KV{FMIbSSLFA?|1eKcmDVRG( z0P#J`hvz`RATB)}!I&;Vw)vzVlx-0aWR(#NS&wdokHm6;*##-l_$><4%bwK%$#xxb zvBws`K8&iSeenJm*VhSe{EQhw^a}I$zv^9$jTB4}aRt^kBB`3*=N-0onW0x;(k`h{ z#oD1Rwu@#|0b~qNK$E};48U$3pp{u^E@m@gl78=`Tl$#Va2_{A>6s@W;HOZC4B$5> z{g4!s_#|Qr6*9)VMa>-_?I^8pk*`&psh(nA?UJh`9AJ|Qe+bVGtUVVC$}ct`fAc!= z*Wu}bt6qJiD#bThVqzH)GXCio_o#0wLZl5QaX{=m;Hu2(Og7YKG4^$80V2W_#^eQQ z3dJ*sI{;N?Fyw4j%wosK0AcV93MMe-*##~GyFCCSK+!B%J5T_K5by)jC{pxf6dACN zg~z)0&agEDwz46#3gMAJ_yovPChZU`l`wwn?-xU8cC09mJbRE${#>YKNbHdzQ{VNu zeOEvvurf~)vmlut6Cpqvw~H>4M7sRDZ=oy;O(_L=TB#~mSs=k38OdeucopOqopp7h84N|h492`Xr}=(`G5`k5 z3SbQ)HSL<@?Ldop!8&^dh6Bif*#K-ouwa@U6^J{1k+`cr%@ejoo@~Vn_HB55NqBjk ze7wmj=wsCI2&!^F%PcJ$zf!{Z*epXdIk9HE_yrQXpde__WH3B-sCvVN4Ls#FQd!+o z)^WM(2+Bbc0AU^*?u`+IyV@Q^1wa;r`L%g%GS4(T3!-<`AMms1&$1HDo-byisYn4r zF!D4TLl#?5*l@&~Qpi1vWTdMoa1MTzz@K<8Lz83tA9;MfQ@F36EQ+T?T}cGP6xz#t z2goZznuy?pGlzkJu$uQ3fYFM z^Z?ZtLg%ou(A6S^GyiXAs#J>q)gH^WL#hWnKpC;8?On2tu1e9)Uj`7isS9 zG(Wt7!(Gtk>3Duq_$d_P`M_t!cS`+v5qF=M%mfZAl{T5?Ik>n3TRG)8+@QlVTPXCF zxDgDC@1jtG3lEnOd}ifA5xfFJzyFF?w?7uY{+==e8xi@6KITJ9#yiYiQIHZ znjTZW44E!NWs6Z|x0g{4c)mL#Vs1a{Jc>xp;zuwq@n`pVT7id5r+HfnUW6F5AxBG)#VL~c^PaK776gBH+0FNIVV_Sb)Jk(8rc^#tF$2zb0l@9Pn5Qt_Hvi~!FQ zaVfAbC8iIY9~`3sPy{*>!U-He0W9yT-Q6^;mSWPgSDdDBFzx{0SwG(2ZnFWPrPV=v z0zMkT2iCbTBNvQ`P#~*D_RMOoMmC4PVV-^tmd=7d5<_@;NggRp5h#U-JVL1<*#V9w zNF>R^pin6}JwhQyQ7DE~OA?&Lc(5%S#oAW{<5t3GYslD2{7N7>Pj#a9OcNxyTs};`N}4|N>F8E#r{}E1NKoO8IS}7p5R!)rDK@Lz$o0=aJq@+ z{lEJepbCm_L^^J`&^cOSr&a`8&BzS28Bmy++N$X9Unf=xlWa05@bK1wO0ko(iZuXp z0OANV145_(2xoIj6J%DD*?mjH#AX0aXjNs5Rm zc#Lh_E8$#((HD@0xAMy?J`P=`^w8q)hQV)cdZM3`c8?Mce%KIbkwRA0Hmqqi6itCV zKrl$Tv2y~HhMWaeDx$4M9pl}4zU)SM8BrJ_bYN3T%|&1@L98cGfN%nX5l;Y3myVnz z41aqjFvP4tv+%3|p2iw>Gy&j^1J9Lt*dd@h!ObwNjxmk{VtIf{@&R`b5<=xPvc_U{ z+&%D0pcbMqsormmof%>8bC{m#fc=1vPqUd21_vm0@#5uo4`tThH zepIXQ;nsuUo5Q!v^Q!Nah&@O-_)?G#LIcn0uH1`ee^P(e0ke4sv@fi z>MwVZbt|M@A6t)S%*QR!AM<_AL%syO7Dz9~+O7VirmXC7*67miazaV{qC@hkP)R^S zuEJH1lRCHtk>{PoxH@R&x6EOFf?_7p7MOi@@XCPn5hMmnnhcDD26I^Y7&L*R0nn`W z$YzgMqW1Mer1>^`2HAoSIsS3c_ape)NLiuxNNzP3eb+2yX1ccUH(FX5IgQ)L^4` zG936kd^o)}d}ed0!lIF1(}-x8H3#bY>zaAH>J-9aN|B)a!{%d zpB3;&Fm@SfqDIX#tq+=wW(!3oNRQW{F`#(+(4}oF2NmN{4%`K&eNk)k!Tu#whGUAp z=>ZhD*Z8hV6(4K-#up_rQ)Q{FAKkhsg;C(;7KjW~|B4rVDNW;1VVfs=r?RViLIk55 zgA>@YfwB&0CSbn}IG$t(7z>IDupWcd5RefF1ZD%c@eIZxd|oQsD=+Q9k4pY|1~-~4 z6J&)tsGq97-d@I=u&TrP(sMA`bqYow7|w^TIWVfdHJ0BUTKDwYh867EqltYf;5(*#Kl+K*kY7REG#_AXNd$01#rj({%;B9fR{Be5uJ2Nf>4TWSPoj zQ@+)EFnl$RI#pt|4&Z$tGEDBLly)Crt5-?#%aAxv*WT{aKi^?|$oOV0fV3LzEJp}S z^veQa0DpN}!acmkg?!HI!Ff{RX|C?|P`PzMjy1DYCm6otkp;tD`Qq;7(J~KhFABX> z@hrJS1kw^vv%_ca!G2b36@X6xGX}C;I@ML1i>JH8xRL!&lIDHbIymdD67f5bdJ`PS zB**V@-du*2O$KfXVXxpzKS=3kjRDi@j|lwB0eSr?f&S_mNUS*CdxwR7QndDZ6z{&z zecGeE{s3fFAvF%Xk3IwKpYU06b6kucKDZ{A%z-=MlAd!`I|~zF~)_kLh51lObcWl@_#a zkWara168ZFXk1g>6V}>mws4WjeLGG6Z#CD}BFAxszf)b+mzkc~*_*VhMG20Lk)3;N z2SKjnA;!VrK#1{U@=x-ZH|ICRF9wqkgo6_$;DAFg39%9)Yop6*rPa)ic4u~Hdiq-3 zRdu`!$Yx}t6dX>Uugj#VTx1%S%10SRii1!Ize^;Q-I2D#khWl< zy5Pg#I!P~5wW>IrOc6|XP{kv*eoQ*MOJOe+LM@`vLyBYu>o1sUu`BQ3;9>POg#QEl z!Ar!oI>Q#82(o=Bv+OztYl5mNCiyPR`N%ezB+vRRN+DGD2dwfA<@OqSvuCLYE%L>u z;Tf>yHk0U*Ot%0QmYIdH8ZPX>sR#-y@bx{B#W_0_ATn*B{5`jDfey}f3B_*^XQO5k zHmY9xJOX`ytq)+|ZHLa#94@=)uoeBZLmiX@3oan7bINH7aGlB_X2$5Gse`xDT zfTe!q;{GlycA)QD9EB(xXJqn3h{Z+t#$%0lt?5i{tj8`}1B0%@wh!Rcb(nC6IoJXF z+a9T#?Bp%DU<=mYhVw_@UJ4h2LeZ3r^7a#7EE{%hhB|Pi-+S z!r{ubT7;tp-dW|sW`oK83spU!g(N4>4M{I(Ah-jL_Q35CvD$A0?;T|{gCXQG}5>9NCT;^V}0ke7Q$yeW6Eg#dZwnFG443MLUOhel%YXeAp_gwUEDm^I-0<=? zyDx1ky8cYTf^HMqHNbaaTM=ZF3W^Ks>Vj&?!goiAEtsdoh~V3lRa7z4E}3BJLc7X& zH&jc5O(*=GkT)IgB@cN%M|K*zw8&LdKr>2YVHvIMrgzo|L<$VDA?vW63yyrRx zp*J(1s(I^~F1L#oqSgU8^WQdb3tn59(fBPvO zfL^?9=~Bw4LZ;fZ$FcJd%V;4R6JZXku`F+Vm65w!uq-LW3@+ACG$AbuVWh?@n;M-P z8jG%ip&aR&CSV4K#%qlx2pI5fBYR7g3-r`ACI$epHW}E~6zC4)Q>WWyhVaki(v#T; zozww9nnD;W1avn?L^;BOQ670AJwT=C*#b}C@U-x$mfzI6-{Tqfnx)b z23J4FbujMRz%4KUqQapyz3o=|%coJu>|r5EX}$QkDvW$c)dV$6lc81&ZW+Wnx5^2l zni3gUyHY>+ri_=3gV$&bh6GWST%%Ohdh@Q3%uCD_GrI@u7s#)#d-I2i!^#H9q~3Wl zI!!`m0B{h_94nD6A~{^ikxeuD(K|pV(MUWC67ZzZke0dFGsmW;&({W}V~}Y$^ztee z66;lsU*Few#*!bgah*xh_TxDr)CGhqQ?Ii}I4xkF+i_n3vJE=?;TP#+->)!V+bcim z@|D*-esftcpS%~p_Z8y1=ayaO_dba&&96`Pf`F?)9lP%kf_ZMI6Fh_96#j{^|GW}0 z{{s9!NVem+Rb?Xn#CPn^65a`9(y1jx>-h`QiOF93v3$rq -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/animation/basics/property-animation/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/README b/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/README deleted file mode 100644 index 3f1e89dd6a..0000000000 --- a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/README +++ /dev/null @@ -1,6 +0,0 @@ -The Debian Package propertyanimation ----------------------------- - -Comments regarding the Package - - -- Daniel Molkentin Thu, 18 Nov 2010 16:22:35 +0100 diff --git a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/changelog b/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/changelog deleted file mode 100644 index 4e1c4df9bc..0000000000 --- a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/changelog +++ /dev/null @@ -1,5 +0,0 @@ -propertyanimation (0.0.1) unstable; urgency=low - - * Initial Release. - - -- Daniel Molkentin Thu, 18 Nov 2010 16:22:35 +0100 diff --git a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/compat b/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/compat deleted file mode 100644 index 7f8f011eb7..0000000000 --- a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/control b/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/control deleted file mode 100644 index cc2e5efa6d..0000000000 --- a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: propertyanimation -Section: user/hidden -Priority: optional -Maintainer: Daniel Molkentin -Build-Depends: debhelper (>= 5), libqt4-dev -Standards-Version: 3.7.3 -Homepage: - -Package: propertyanimation -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: - diff --git a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/copyright b/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/copyright deleted file mode 100644 index e197e3725c..0000000000 --- a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/copyright +++ /dev/null @@ -1,40 +0,0 @@ -This package was debianized by Daniel Molkentin on -Thu, 18 Nov 2010 16:22:35 +0100. - -It was downloaded from - -Upstream Author(s): - - - - -Copyright: - - - - -License: - - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. - -The Debian packaging is (C) 2010, Daniel Molkentin and -is licensed under the GPL, see above. - - -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. diff --git a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/rules b/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/rules deleted file mode 100755 index e83893240c..0000000000 --- a/examples/declarative/animation/basics/property-animation/qtc_packaging/debian_fremantle/rules +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - - - - - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - - touch configure-stamp - - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #docbook-to-man debian/propertyanimation.sgml > propertyanimation.1 - - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - $(MAKE) clean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/propertyanimation. - $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/propertyanimation install - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs - dh_installdocs - dh_installexamples -# dh_install -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - # dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb - # dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/examples/declarative/animation/behaviors/SideRect.qml b/examples/declarative/animation/behaviors/SideRect.qml index 1ba681eae8..fb00cde5ba 100644 --- a/examples/declarative/animation/behaviors/SideRect.qml +++ b/examples/declarative/animation/behaviors/SideRect.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: myRect diff --git a/examples/declarative/animation/behaviors/behavior-example.qml b/examples/declarative/animation/behaviors/behavior-example.qml index 55c912a98b..1759298067 100644 --- a/examples/declarative/animation/behaviors/behavior-example.qml +++ b/examples/declarative/animation/behaviors/behavior-example.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { width: 600; height: 400 diff --git a/examples/declarative/animation/behaviors/behavior-example/behaviorexample.desktop b/examples/declarative/animation/behaviors/behavior-example/behaviorexample.desktop deleted file mode 100644 index 95af0172b6..0000000000 --- a/examples/declarative/animation/behaviors/behavior-example/behaviorexample.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=behavior-example -Exec=/opt/usr/bin/behavior-example -Icon=behavior-example -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/animation/behaviors/behavior-example/behaviorexample.png b/examples/declarative/animation/behaviors/behavior-example/behaviorexample.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 zcmV-O4Y%@%P)ht(u000b3 zNkl+r+m%F_C;*wliAId+l;Bw~NnREVgX6DSfv+(~Ms$%J>UH~1TiKG?i==6q;ABhC^ z?Fa;PP1zvRpk{yshy{xNzW=_}wlshM$8bMz0ywE)|E?{*$bARG!R}74&+E~=fBGSCH_q~3rZLE`kFZF`Zg5p_(F9S`V+!f^EBN1AfbVO>l zV*?2wmM7*K$N;DTgsUiqL8d@0kV=|_n&`jpzizedO9)tWdFTh8K`^#$^77P!9khgW zY!Rx>mStcADTf#t1$7O$0t|o*0XKn3gatG^hba2{-neB1+ztE?*sLjd^k^HO+7rUI z#U<*@0G0o{w7eb^h!lqynFTclTrU#CporX1FqyNMH+0Ern&N9m&#V&xj_U(F2mB2J zt<46%_t{NEnvD|IFZF~~d&Uw1T_g&S##v*=ONjw)029C*A{l`GV{0SE$m`(;jw}{N znskEx<>q}Q<12YZEl*LE3Ih306gaq~kqj^oOalLlQhy0dt;u@8$p7^Lt&4>oL!oPx z#8s8=%aut5!dB!t3TKe~K&L~H1lMXjK+#OKRHI5GD|IzkUH?i3OO@}-LaMj9G8lz# z%l5CTmMR6d2)5Xi&TXYMH@9`QFE#2K3&XXz*HoZoHYmE}} z2gzCqV(C$)Qa4CsW6qOGtI%%!WV`fQi$l5ySZr*mjmtm*mMy$LnBc~UpU3Zbir>EL z5q7k1!|(B;ltK`4R+^dg2p6W_d^>jD_u(zaPCr^^8@hrk3G%j4n9z3e5I$h zHt*%PdcQ(f^FBoE0!itt&AS&D@SD9H-ToBEcllZB+s zk=+N-HEn5kb?LNr0_tj96^ef~kie^2ICbnKhHki|lDRofU;aApOn#Gh#$V=lzx5aV z$Jx^^nO%`X>~HULygE0g(X z`b{py-oel{4)1Lt5=ryItKVXDcD&f3()r}32l444EK3-kNE2=Dpl9>WCG-onSlD9c zr%N?M8yN>I$G3v%iKcWshT`^}P5k(+E4)4M9*-UV z&4O$+)XU|82r~)zlcQfDWVF&5ZZFgaJuU2x93q*UBV#3rrAM(ON9|alVFXl)&YX@% zrn2~rAcuB*qU@=(8D~0mGavLg@|)W{pqZSz_G=dbK~FOQb~8TtAx|87jOIX-tF6w^ zE}q=qk0lm!nQ>k||12}9;gZF6-KIckC(i%2z(g#|rlvN!+qYIAV1cALUyv7|DWDVZ zX$(wW$FeP#{K4*hcr=|#P$&$|hffa@Fv3e>f?B$+m4Id1%9%neo+H}QK_nQiKtO_= zl`f2u2zU)e(5EpuKSS2cx#Vx(wu^As=Cu#baASJJRhKn0OvcBFC8vpJ=CQ?My|Bz# zz=^_Co`6)^qH{|deviLQGGit4^Rx(EQ~10ZbLj+GD@TChb9=j@^z6)V>N`*Kk5B$J ze{}qdg}TxBWxn^(KOkbGYZ?h_s*YG=wFFc=3zU$c6s9F)Od%3%#;D-BreyPxTM?QD z9z!FUO_9xIol|}uej|j>6Ch{jux$5pqD;~k-A=y!k1x!=$7+wtBz2KR47Sqly&wN$2gymjWt&D)GPzc~L zAmG!PO3acmvt?3VJ(xek7m2e4a;8m_*N@k56OcCJydSwcE%(-LUHTXJ-cXJh2-bmfHU`sYDbPJpf{I$AtTF3d1C zH&IsaGnxn(&H4YF1v8Tqk{O%MaC?~t#L~l6(YG zroAqg9-GOc<1ITrCv$U*#4lBy$A<1jDGgg}EZeNG>nIwv2-NKXBF;O*?VUc}xNw${ z*m#*_PwU-;JgtCDCMW!QFwTLkdpNTDPM6%s!bPT2Hw$NqtmQsLwFSE9^d4klv>kuu zZd!fa1c|QgD-B(7M^6)jQ&;)P2R|#5j5hUhWb30~dpLW3j%=!huYUfIUD+N> zOg@-AL&i!H^y~OMFf=vnYA0y4aPszNc=n-}`150b%a-Pyg-mjzVN^c`m%|q5>GIPZ z)p_a6zw_{cV|2Afi)<>LquYK5zrCH-%oUz{_%43qwmV&I49%Y7;>=qpG@632BkJd8 z7tS&=JI>a~=7L-}5GEW5uWK#(MxIsFk7E1)e|s&!n>Mz1-0J+_UopfA-KH za&OO}CBYF)r*3lQ+IL8s3xE?@_8p8cZ(Za0(=T#kW(3nRvBe^5rI<=y=iJzj8B1J2 z)xTk_2vt0wIwK;&mJTnEe7cPvy!#3vUx24S_hs6eA~m`ZMiwsd)1j9bUbs-$5k#P~ z)x#6V+ZdaEotMsDX783=1ie1uxfx>V5#reyZ0s7Z)YeMCilGpJ-Ccf~Lpndd_+765 z+a;d7>m;AnImz;OWWy}P>n)oTRnX!^lEY3ZF{6#Dc zP3eWtdbxc=2v{URq3CS&v1OCaF9zOYVEn2}rp4FECpsQLQ$~gR152@@J>5iMHTEp9 zmbgOTwypq)+ybwkf6Hx_(&+2{0*~+cD~@)35x?GCF?F^=+yrLVZhq-;c$IqD0$m+m zc5U(T@;g7`=FF(8-fuK>pz}eFZ2dewBe?pGiugIGL}Lk9BRn3({hx|39KXWzKl+!7 zC&mJ5-bPt0t45OC0A2y;?_2xbL3dhw4R4!7U~7k$#~*0t+{M#;_4_fNIQ%GkqPqzC z{Fru@iNqkLopCayuA3jF3DBx@F$?M&px$p>POu^EIL3&;mUb_j@9_{%y~nH9KjiJH zFn*68OEP4v6sDamNuAY`{8WHU0^b1jB8W8VcDg$bSTz|%BSf72I~;Uwcw}XkOeQa- zN>|#7#+$$bFbQ%K=Z5G-Q2zs*1I$KV%`Xz*a{tmd#PwW{T{?%<;++x}lOt6OjpN+* zyh-s&?Bdn?QBX0Q%hnAW@#+Lr-J9yYq*QhOS|x@K=8e3ZH*^eS1|bPb`j36QKfG8Z zAP&3?+zy0mKT_2r@`lPZFbrxaZ{(t(qreQ11hK(Sf8VPgtFe^{`1WNu)oTGS0vV9M z1KO%TqAZ*rM@-}VIAYK-Qmz0)j`740Nr19ZN&5TVzSVZtAOOgdU;^L7B5vsF1ravm zc*acLs3D53I|MQUY8q4m3!7f(?^>Tb{p$($g#A)4e1B9s{@lL%?>o@kZ5V1WZ~Qcn zz|bu+Ir<-X<5ugvfemb60~^@D1~#yPwc`H(pHeSaefwW^{L9a%BKPWN%_+ eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/animation/behaviors/behavior-example/main.cpp b/examples/declarative/animation/behaviors/behavior-example/main.cpp deleted file mode 100644 index 601371cf3d..0000000000 --- a/examples/declarative/animation/behaviors/behavior-example/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/behavior-example.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/animation/behaviors/behavior-example/qml/SideRect.qml b/examples/declarative/animation/behaviors/behavior-example/qml/SideRect.qml deleted file mode 100644 index 951742173b..0000000000 --- a/examples/declarative/animation/behaviors/behavior-example/qml/SideRect.qml +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: myRect - - property string text - - width: 75; height: 50 - radius: 6 - color: "#646464" - border.width: 4; border.color: "white" - - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - focusRect.x = myRect.x; - focusRect.y = myRect.y; - focusRect.text = myRect.text; - } - } -} diff --git a/examples/declarative/animation/behaviors/behavior-example/qml/behavior-example.qml b/examples/declarative/animation/behaviors/behavior-example/qml/behavior-example.qml deleted file mode 100644 index 3e050abd22..0000000000 --- a/examples/declarative/animation/behaviors/behavior-example/qml/behavior-example.qml +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 600; height: 400 - color: "#343434" - - Rectangle { - anchors.centerIn: parent - width: 200; height: 200 - radius: 30 - color: "transparent" - border.width: 4; border.color: "white" - - - SideRect { - id: leftRect - anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.left } - text: "Left" - } - - SideRect { - id: rightRect - anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.right } - text: "Right" - } - - SideRect { - id: topRect - anchors { verticalCenter: parent.top; horizontalCenter: parent.horizontalCenter } - text: "Top" - } - - SideRect { - id: bottomRect - anchors { verticalCenter: parent.bottom; horizontalCenter: parent.horizontalCenter } - text: "Bottom" - } - - - Rectangle { - id: focusRect - - property string text - - x: 62; y: 75; width: 75; height: 50 - radius: 6 - border.width: 4; border.color: "white" - color: "firebrick" - - // Set an 'elastic' behavior on the focusRect's x property. - Behavior on x { - NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 } - } - - // Set an 'elastic' behavior on the focusRect's y property. - Behavior on y { - NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 } - } - - Text { - id: focusText - text: focusRect.text - anchors.centerIn: parent - color: "white" - font.pixelSize: 16; font.bold: true - - // Set a behavior on the focusText's x property: - // Set the opacity to 0, set the new text value, then set the opacity back to 1. - Behavior on text { - SequentialAnimation { - NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 } - NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 } - } - } - } - } - } -} diff --git a/examples/declarative/animation/behaviors/behavior-example/qml/wigglytext.qml b/examples/declarative/animation/behaviors/behavior-example/qml/wigglytext.qml deleted file mode 100644 index 6cd93abbd6..0000000000 --- a/examples/declarative/animation/behaviors/behavior-example/qml/wigglytext.qml +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: container - - property string text: "Drag this text..." - property bool animated: true - - width: 640; height: 480; color: "#474747"; focus: true - - Keys.onPressed: { - if (event.key == Qt.Key_Delete || event.key == Qt.Key_Backspace) - container.remove() - else if (event.text != "") { - container.append(event.text) - } - } - - function append(text) { - container.animated = false - var lastLetter = container.children[container.children.length - 1] - var newLetter = letterComponent.createObject(container) - newLetter.text = text - newLetter.follow = lastLetter - container.animated = true - } - - function remove() { - if (container.children.length) - container.children[container.children.length - 1].destroy() - } - - function doLayout() { - var follow = null - for (var i = 0; i < container.text.length; ++i) { - var newLetter = letterComponent.createObject(container) - newLetter.text = container.text[i] - newLetter.follow = follow - follow = newLetter - } - } - - Component { - id: letterComponent - Text { - id: letter - property variant follow - - x: follow ? follow.x + follow.width : container.width / 3 - y: follow ? follow.y : container.height / 2 - - font.pixelSize: 40; font.bold: true - color: "#999999"; styleColor: "#222222"; style: Text.Raised - - MouseArea { - anchors.fill: parent - drag.target: letter; drag.axis: Drag.XandYAxis - onPressed: letter.color = "#dddddd" - onReleased: letter.color = "#999999" - } - - Behavior on x { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } - Behavior on y { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } - } - } - - Component.onCompleted: doLayout() -} diff --git a/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/animation/behaviors/behavior-example/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/animation/behaviors/behaviors.qmlproject b/examples/declarative/animation/behaviors/behaviors.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/animation/behaviors/behaviors.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/animation/behaviors/wigglytext.qml b/examples/declarative/animation/behaviors/wigglytext.qml index 0a2d028588..28e356d172 100644 --- a/examples/declarative/animation/behaviors/wigglytext.qml +++ b/examples/declarative/animation/behaviors/wigglytext.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: container diff --git a/examples/declarative/animation/easing/content/QuitButton.qml b/examples/declarative/animation/easing/content/QuitButton.qml index 39f8f77e33..7ab91c4376 100644 --- a/examples/declarative/animation/easing/content/QuitButton.qml +++ b/examples/declarative/animation/easing/content/QuitButton.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { source: "quit.png" scale: quitMouse.pressed ? 0.8 : 1.0 diff --git a/examples/declarative/animation/easing/qml/content/quit.png b/examples/declarative/animation/easing/content/quit.png similarity index 100% rename from examples/declarative/animation/easing/qml/content/quit.png rename to examples/declarative/animation/easing/content/quit.png diff --git a/examples/declarative/animation/easing/easing.desktop b/examples/declarative/animation/easing/easing.desktop deleted file mode 100644 index 56437b5efb..0000000000 --- a/examples/declarative/animation/easing/easing.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=easing -Exec=/opt/usr/bin/easing -Icon=easing -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/animation/easing/easing.png b/examples/declarative/animation/easing/easing.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 zcmV-O4Y%@%P)ht(u000b3 zNkl+r+m%F_C;*wliAId+l;Bw~NnREVgX6DSfv+(~Ms$%J>UH~1TiKG?i==6q;ABhC^ z?Fa;PP1zvRpk{yshy{xNzW=_}wlshM$8bMz0ywE)|E?{*$bARG!R}74&+E~=fBGSCH_q~3rZLE`kFZF`Zg5p_(F9S`V+!f^EBN1AfbVO>l zV*?2wmM7*K$N;DTgsUiqL8d@0kV=|_n&`jpzizedO9)tWdFTh8K`^#$^77P!9khgW zY!Rx>mStcADTf#t1$7O$0t|o*0XKn3gatG^hba2{-neB1+ztE?*sLjd^k^HO+7rUI z#U<*@0G0o{w7eb^h!lqynFTclTrU#CporX1FqyNMH+0Ern&N9m&#V&xj_U(F2mB2J zt<46%_t{NEnvD|IFZF~~d&Uw1T_g&S##v*=ONjw)029C*A{l`GV{0SE$m`(;jw}{N znskEx<>q}Q<12YZEl*LE3Ih306gaq~kqj^oOalLlQhy0dt;u@8$p7^Lt&4>oL!oPx z#8s8=%aut5!dB!t3TKe~K&L~H1lMXjK+#OKRHI5GD|IzkUH?i3OO@}-LaMj9G8lz# z%l5CTmMR6d2)5Xi&TXYMH@9`QFE#2K3&XXz*HoZoHYmE}} z2gzCqV(C$)Qa4CsW6qOGtI%%!WV`fQi$l5ySZr*mjmtm*mMy$LnBc~UpU3Zbir>EL z5q7k1!|(B;ltK`4R+^dg2p6W_d^>jD_u(zaPCr^^8@hrk3G%j4n9z3e5I$h zHt*%PdcQ(f^FBoE0!itt&AS&D@SD9H-ToBEcllZB+s zk=+N-HEn5kb?LNr0_tj96^ef~kie^2ICbnKhHki|lDRofU;aApOn#Gh#$V=lzx5aV z$Jx^^nO%`X>~HULygE0g(X z`b{py-oel{4)1Lt5=ryItKVXDcD&f3()r}32l444EK3-kNE2=Dpl9>WCG-onSlD9c zr%N?M8yN>I$G3v%iKcWshT`^}P5k(+E4)4M9*-UV z&4O$+)XU|82r~)zlcQfDWVF&5ZZFgaJuU2x93q*UBV#3rrAM(ON9|alVFXl)&YX@% zrn2~rAcuB*qU@=(8D~0mGavLg@|)W{pqZSz_G=dbK~FOQb~8TtAx|87jOIX-tF6w^ zE}q=qk0lm!nQ>k||12}9;gZF6-KIckC(i%2z(g#|rlvN!+qYIAV1cALUyv7|DWDVZ zX$(wW$FeP#{K4*hcr=|#P$&$|hffa@Fv3e>f?B$+m4Id1%9%neo+H}QK_nQiKtO_= zl`f2u2zU)e(5EpuKSS2cx#Vx(wu^As=Cu#baASJJRhKn0OvcBFC8vpJ=CQ?My|Bz# zz=^_Co`6)^qH{|deviLQGGit4^Rx(EQ~10ZbLj+GD@TChb9=j@^z6)V>N`*Kk5B$J ze{}qdg}TxBWxn^(KOkbGYZ?h_s*YG=wFFc=3zU$c6s9F)Od%3%#;D-BreyPxTM?QD z9z!FUO_9xIol|}uej|j>6Ch{jux$5pqD;~k-A=y!k1x!=$7+wtBz2KR47Sqly&wN$2gymjWt&D)GPzc~L zAmG!PO3acmvt?3VJ(xek7m2e4a;8m_*N@k56OcCJydSwcE%(-LUHTXJ-cXJh2-bmfHU`sYDbPJpf{I$AtTF3d1C zH&IsaGnxn(&H4YF1v8Tqk{O%MaC?~t#L~l6(YG zroAqg9-GOc<1ITrCv$U*#4lBy$A<1jDGgg}EZeNG>nIwv2-NKXBF;O*?VUc}xNw${ z*m#*_PwU-;JgtCDCMW!QFwTLkdpNTDPM6%s!bPT2Hw$NqtmQsLwFSE9^d4klv>kuu zZd!fa1c|QgD-B(7M^6)jQ&;)P2R|#5j5hUhWb30~dpLW3j%=!huYUfIUD+N> zOg@-AL&i!H^y~OMFf=vnYA0y4aPszNc=n-}`150b%a-Pyg-mjzVN^c`m%|q5>GIPZ z)p_a6zw_{cV|2Afi)<>LquYK5zrCH-%oUz{_%43qwmV&I49%Y7;>=qpG@632BkJd8 z7tS&=JI>a~=7L-}5GEW5uWK#(MxIsFk7E1)e|s&!n>Mz1-0J+_UopfA-KH za&OO}CBYF)r*3lQ+IL8s3xE?@_8p8cZ(Za0(=T#kW(3nRvBe^5rI<=y=iJzj8B1J2 z)xTk_2vt0wIwK;&mJTnEe7cPvy!#3vUx24S_hs6eA~m`ZMiwsd)1j9bUbs-$5k#P~ z)x#6V+ZdaEotMsDX783=1ie1uxfx>V5#reyZ0s7Z)YeMCilGpJ-Ccf~Lpndd_+765 z+a;d7>m;AnImz;OWWy}P>n)oTRnX!^lEY3ZF{6#Dc zP3eWtdbxc=2v{URq3CS&v1OCaF9zOYVEn2}rp4FECpsQLQ$~gR152@@J>5iMHTEp9 zmbgOTwypq)+ybwkf6Hx_(&+2{0*~+cD~@)35x?GCF?F^=+yrLVZhq-;c$IqD0$m+m zc5U(T@;g7`=FF(8-fuK>pz}eFZ2dewBe?pGiugIGL}Lk9BRn3({hx|39KXWzKl+!7 zC&mJ5-bPt0t45OC0A2y;?_2xbL3dhw4R4!7U~7k$#~*0t+{M#;_4_fNIQ%GkqPqzC z{Fru@iNqkLopCayuA3jF3DBx@F$?M&px$p>POu^EIL3&;mUb_j@9_{%y~nH9KjiJH zFn*68OEP4v6sDamNuAY`{8WHU0^b1jB8W8VcDg$bSTz|%BSf72I~;Uwcw}XkOeQa- zN>|#7#+$$bFbQ%K=Z5G-Q2zs*1I$KV%`Xz*a{tmd#PwW{T{?%<;++x}lOt6OjpN+* zyh-s&?Bdn?QBX0Q%hnAW@#+Lr-J9yYq*QhOS|x@K=8e3ZH*^eS1|bPb`j36QKfG8Z zAP&3?+zy0mKT_2r@`lPZFbrxaZ{(t(qreQ11hK(Sf8VPgtFe^{`1WNu)oTGS0vV9M z1KO%TqAZ*rM@-}VIAYK-Qmz0)j`740Nr19ZN&5TVzSVZtAOOgdU;^L7B5vsF1ravm zc*acLs3D53I|MQUY8q4m3!7f(?^>Tb{p$($g#A)4e1B9s{@lL%?>o@kZ5V1WZ~Qcn zz|bu+Ir<-X<5ugvfemb60~^@D1~#yPwc`H(pHeSaefwW^{L9a%BKPWN%_+ eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/animation/easing/main.cpp b/examples/declarative/animation/easing/main.cpp deleted file mode 100644 index c0151a1002..0000000000 --- a/examples/declarative/animation/easing/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/easing.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/animation/easing/qml/content/QuitButton.qml b/examples/declarative/animation/easing/qml/content/QuitButton.qml deleted file mode 100644 index cbbf916a4b..0000000000 --- a/examples/declarative/animation/easing/qml/content/QuitButton.qml +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -Image { - source: "quit.png" - scale: quitMouse.pressed ? 0.8 : 1.0 - smooth: quitMouse.pressed - MouseArea { - id: quitMouse - anchors.fill: parent - anchors.margins: -10 - onClicked: Qt.quit() - } -} diff --git a/examples/declarative/animation/easing/qml/easing.qml b/examples/declarative/animation/easing/qml/easing.qml deleted file mode 100644 index fd974d9b59..0000000000 --- a/examples/declarative/animation/easing/qml/easing.qml +++ /dev/null @@ -1,159 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" - -Rectangle { - id: window - width: 600; height: 460; color: "#232323" - - ListModel { - id: easingTypes - ListElement { name: "Easing.Linear"; type: Easing.Linear; ballColor: "DarkRed" } - ListElement { name: "Easing.InQuad"; type: Easing.InQuad; ballColor: "IndianRed" } - ListElement { name: "Easing.OutQuad"; type: Easing.OutQuad; ballColor: "Salmon" } - ListElement { name: "Easing.InOutQuad"; type: Easing.InOutQuad; ballColor: "Tomato" } - ListElement { name: "Easing.OutInQuad"; type: Easing.OutInQuad; ballColor: "DarkOrange" } - ListElement { name: "Easing.InCubic"; type: Easing.InCubic; ballColor: "Gold" } - ListElement { name: "Easing.OutCubic"; type: Easing.OutCubic; ballColor: "Yellow" } - ListElement { name: "Easing.InOutCubic"; type: Easing.InOutCubic; ballColor: "PeachPuff" } - ListElement { name: "Easing.OutInCubic"; type: Easing.OutInCubic; ballColor: "Thistle" } - ListElement { name: "Easing.InQuart"; type: Easing.InQuart; ballColor: "Orchid" } - ListElement { name: "Easing.OutQuart"; type: Easing.OutQuart; ballColor: "Purple" } - ListElement { name: "Easing.InOutQuart"; type: Easing.InOutQuart; ballColor: "SlateBlue" } - ListElement { name: "Easing.OutInQuart"; type: Easing.OutInQuart; ballColor: "Chartreuse" } - ListElement { name: "Easing.InQuint"; type: Easing.InQuint; ballColor: "LimeGreen" } - ListElement { name: "Easing.OutQuint"; type: Easing.OutQuint; ballColor: "SeaGreen" } - ListElement { name: "Easing.InOutQuint"; type: Easing.InOutQuint; ballColor: "DarkGreen" } - ListElement { name: "Easing.OutInQuint"; type: Easing.OutInQuint; ballColor: "Olive" } - ListElement { name: "Easing.InSine"; type: Easing.InSine; ballColor: "DarkSeaGreen" } - ListElement { name: "Easing.OutSine"; type: Easing.OutSine; ballColor: "Teal" } - ListElement { name: "Easing.InOutSine"; type: Easing.InOutSine; ballColor: "Turquoise" } - ListElement { name: "Easing.OutInSine"; type: Easing.OutInSine; ballColor: "SteelBlue" } - ListElement { name: "Easing.InExpo"; type: Easing.InExpo; ballColor: "SkyBlue" } - ListElement { name: "Easing.OutExpo"; type: Easing.OutExpo; ballColor: "RoyalBlue" } - ListElement { name: "Easing.InOutExpo"; type: Easing.InOutExpo; ballColor: "MediumBlue" } - ListElement { name: "Easing.OutInExpo"; type: Easing.OutInExpo; ballColor: "MidnightBlue" } - ListElement { name: "Easing.InCirc"; type: Easing.InCirc; ballColor: "CornSilk" } - ListElement { name: "Easing.OutCirc"; type: Easing.OutCirc; ballColor: "Bisque" } - ListElement { name: "Easing.InOutCirc"; type: Easing.InOutCirc; ballColor: "RosyBrown" } - ListElement { name: "Easing.OutInCirc"; type: Easing.OutInCirc; ballColor: "SandyBrown" } - ListElement { name: "Easing.InElastic"; type: Easing.InElastic; ballColor: "DarkGoldenRod" } - ListElement { name: "Easing.OutElastic"; type: Easing.OutElastic; ballColor: "Chocolate" } - ListElement { name: "Easing.InOutElastic"; type: Easing.InOutElastic; ballColor: "SaddleBrown" } - ListElement { name: "Easing.OutInElastic"; type: Easing.OutInElastic; ballColor: "Brown" } - ListElement { name: "Easing.InBack"; type: Easing.InBack; ballColor: "Maroon" } - ListElement { name: "Easing.OutBack"; type: Easing.OutBack; ballColor: "LavenderBlush" } - ListElement { name: "Easing.InOutBack"; type: Easing.InOutBack; ballColor: "MistyRose" } - ListElement { name: "Easing.OutInBack"; type: Easing.OutInBack; ballColor: "Gainsboro" } - ListElement { name: "Easing.OutBounce"; type: Easing.OutBounce; ballColor: "Silver" } - ListElement { name: "Easing.InBounce"; type: Easing.InBounce; ballColor: "DimGray" } - ListElement { name: "Easing.InOutBounce"; type: Easing.InOutBounce; ballColor: "SlateGray" } - ListElement { name: "Easing.OutInBounce"; type: Easing.OutInBounce; ballColor: "DarkSlateGray" } - } - - Component { - id: delegate - - Item { - height: 56; width: window.width - - Text { text: name; anchors.centerIn: parent; color: "White" } - - Rectangle { - id: slot1; color: "#121212"; x: 30; height: 46; width: 46 - border.color: "#343434"; border.width: 1; radius: 12 - anchors.verticalCenter: parent.verticalCenter - } - - Rectangle { - id: slot2; color: "#121212"; x: window.width - 76; height: 46; width: 46 - border.color: "#343434"; border.width: 1; radius: 12 - anchors.verticalCenter: parent.verticalCenter - } - - Rectangle { - id: rect; x: 30; color: "#454545" - border.color: "White"; border.width: 2 - height: 46; width: 46; radius: 12 - anchors.verticalCenter: parent.verticalCenter - - MouseArea { - onClicked: if (rect.state == '') rect.state = "right"; else rect.state = '' - anchors.fill: parent - anchors.margins: -5 // Make MouseArea bigger than the rectangle, itself - } - - states : State { - name: "right" - PropertyChanges { target: rect; x: window.width - 76; color: ballColor } - } - - transitions: Transition { - NumberAnimation { properties: "x"; easing.type: type; duration: 1000 } - ColorAnimation { properties: "color"; easing.type: type; duration: 1000 } - } - } - } - } - - Flickable { - anchors.fill: parent - contentHeight: layout.height+50 - Rectangle { - id: titlePane - color: "#444444" - height: 35 - anchors { top: parent.top; left: parent.left; right: parent.right } - QuitButton { - id: quitButton - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: 10 - } - } - Column { - id: layout - anchors { top: titlePane.bottom; topMargin: 10; left: parent.left; right: parent.right } - Repeater { model: easingTypes; delegate: delegate } - } - } -} diff --git a/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/animation/easing/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/animation/states/main.cpp b/examples/declarative/animation/states/main.cpp deleted file mode 100644 index 0f4161f0cc..0000000000 --- a/examples/declarative/animation/states/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/states.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/animation/states/qml/states.qml b/examples/declarative/animation/states/qml/states.qml deleted file mode 100644 index a9046eb018..0000000000 --- a/examples/declarative/animation/states/qml/states.qml +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: page - width: 640; height: 480 - color: "#343434" - - Image { - id: userIcon - x: topLeftRect.x; y: topLeftRect.y - source: "qt-logo.png" - } - - Rectangle { - id: topLeftRect - - anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } - width: 46; height: 54 - color: "Transparent"; border.color: "Gray"; radius: 6 - - // Clicking in here sets the state to the default state, returning the image to - // its initial position - MouseArea { anchors.fill: parent; onClicked: page.state = '' } - } - - Rectangle { - id: middleRightRect - - anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } - width: 46; height: 54 - color: "Transparent"; border.color: "Gray"; radius: 6 - - // Clicking in here sets the state to 'middleRight' - MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } - } - - Rectangle { - id: bottomLeftRect - - anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } - width: 46; height: 54 - color: "Transparent"; border.color: "Gray"; radius: 6 - - // Clicking in here sets the state to 'bottomLeft' - MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } - } - - states: [ - // In state 'middleRight', move the image to middleRightRect - State { - name: "middleRight" - PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } - }, - - // In state 'bottomLeft', move the image to bottomLeftRect - State { - name: "bottomLeft" - PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } - } - ] -} diff --git a/examples/declarative/animation/states/qml/transitions.qml b/examples/declarative/animation/states/qml/transitions.qml deleted file mode 100644 index ea73b829f4..0000000000 --- a/examples/declarative/animation/states/qml/transitions.qml +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -/* - This is exactly the same as states.qml, except that we have appended - a set of transitions to apply animations when the item changes - between each state. -*/ - -Rectangle { - id: page - width: 640; height: 480 - color: "#343434" - - Image { - id: userIcon - x: topLeftRect.x; y: topLeftRect.y - source: "qt-logo.png" - } - - Rectangle { - id: topLeftRect - - anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } - width: 46; height: 54 - color: "Transparent"; border.color: "Gray"; radius: 6 - - // Clicking in here sets the state to the default state, returning the image to - // its initial position - MouseArea { anchors.fill: parent; onClicked: page.state = '' } - } - - Rectangle { - id: middleRightRect - - anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } - width: 46; height: 54 - color: "Transparent"; border.color: "Gray"; radius: 6 - - // Clicking in here sets the state to 'middleRight' - MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } - } - - Rectangle { - id: bottomLeftRect - - anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } - width: 46; height: 54 - color: "Transparent"; border.color: "Gray"; radius: 6 - - // Clicking in here sets the state to 'bottomLeft' - MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } - } - - states: [ - // In state 'middleRight', move the image to middleRightRect - State { - name: "middleRight" - PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } - }, - - // In state 'bottomLeft', move the image to bottomLeftRect - State { - name: "bottomLeft" - PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } - } - ] - - // Transitions define how the properties change when the item moves between each state - transitions: [ - - // When transitioning to 'middleRight' move x,y over a duration of 1 second, - // with OutBounce easing function. - Transition { - from: "*"; to: "middleRight" - NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce; duration: 1000 } - }, - - // When transitioning to 'bottomLeft' move x,y over a duration of 2 seconds, - // with InOutQuad easing function. - Transition { - from: "*"; to: "bottomLeft" - NumberAnimation { properties: "x,y"; easing.type: Easing.InOutQuad; duration: 2000 } - }, - - // For any other state changes move x,y linearly over duration of 200ms. - Transition { - NumberAnimation { properties: "x,y"; duration: 200 } - } - ] -} diff --git a/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/animation/states/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/animation/states/qml/qt-logo.png b/examples/declarative/animation/states/qt-logo.png similarity index 100% rename from examples/declarative/animation/states/qml/qt-logo.png rename to examples/declarative/animation/states/qt-logo.png diff --git a/examples/declarative/animation/states/states.desktop b/examples/declarative/animation/states/states.desktop deleted file mode 100644 index 31eb8d5d52..0000000000 --- a/examples/declarative/animation/states/states.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=states -Exec=/opt/usr/bin/states -Icon=states -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/animation/states/states.png b/examples/declarative/animation/states/states.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/animation/states/transitions.qml b/examples/declarative/animation/states/transitions.qml index 531f309a44..4fd13eb5b9 100644 --- a/examples/declarative/animation/states/transitions.qml +++ b/examples/declarative/animation/states/transitions.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 /* This is exactly the same as states.qml, except that we have appended From 0fb0d434b4e5745712ff31c6f9f4dd686e404893 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Thu, 25 Aug 2011 13:55:54 +1000 Subject: [PATCH 14/68] Update calculator, i18n, imageelements examples to QtQuick 2.0 Change-Id: Ib506f6b1daf431135c6608bdf1c5ea3afe08b213 Reviewed-on: http://codereview.qt.nokia.com/3551 Reviewed-by: Qt Sanity Bot Reviewed-by: Alan Alpert --- .../declarative/calculator/Core/Button.qml | 2 +- .../declarative/calculator/Core/Display.qml | 2 +- .../declarative/calculator/calculator.qml | 2 +- .../calculator/calculator.qmlproject | 16 -- examples/declarative/i18n/i18n.desktop | 11 - examples/declarative/i18n/i18n.png | Bin 3400 -> 0 bytes examples/declarative/i18n/i18n.pro | 39 ---- examples/declarative/i18n/i18n.qml | 8 +- examples/declarative/i18n/i18n.svg | 93 --------- .../declarative/i18n/{qml => }/i18n/base.ts | 0 .../i18n/{qml => }/i18n/qml_en_AU.ts | 0 .../declarative/i18n/{qml => }/i18n/qml_fr.ts | 0 examples/declarative/i18n/main.cpp | 54 ----- examples/declarative/i18n/qml/i18n.qml | 78 ------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../borderimage/borderimage.desktop | 11 - .../imageelements/borderimage/borderimage.png | Bin 3400 -> 0 bytes .../imageelements/borderimage/borderimage.pro | 39 ---- .../imageelements/borderimage/borderimage.qml | 2 +- .../imageelements/borderimage/borderimage.svg | 93 --------- .../borderimage/content/MyBorderImage.qml | 2 +- .../borderimage/content/ShadowRectangle.qml | 2 +- .../borderimage/{qml => }/content/bw.png | Bin .../{qml => }/content/colors-round.sci | 0 .../{qml => }/content/colors-stretch.sci | 0 .../borderimage/{qml => }/content/colors.png | Bin .../borderimage/{qml => }/content/shadow.png | Bin .../imageelements/borderimage/main.cpp | 54 ----- .../borderimage/qml/borderimage.qml | 97 --------- .../borderimage/qml/content/MyBorderImage.qml | 90 -------- .../qml/content/ShadowRectangle.qml | 54 ----- .../imageelements/borderimage/qml/shadows.qml | 64 ------ .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../qtc_packaging/debian_fremantle/README | 6 - .../qtc_packaging/debian_fremantle/changelog | 5 - .../qtc_packaging/debian_fremantle/compat | 1 - .../qtc_packaging/debian_fremantle/control | 13 -- .../qtc_packaging/debian_fremantle/copyright | 40 ---- .../qtc_packaging/debian_fremantle/rules | 91 -------- .../imageelements/borderimage/shadows.qml | 2 +- 44 files changed, 11 insertions(+), 1820 deletions(-) delete mode 100644 examples/declarative/calculator/calculator.qmlproject delete mode 100644 examples/declarative/i18n/i18n.desktop delete mode 100644 examples/declarative/i18n/i18n.png delete mode 100644 examples/declarative/i18n/i18n.pro delete mode 100644 examples/declarative/i18n/i18n.svg rename examples/declarative/i18n/{qml => }/i18n/base.ts (100%) rename examples/declarative/i18n/{qml => }/i18n/qml_en_AU.ts (100%) rename examples/declarative/i18n/{qml => }/i18n/qml_fr.ts (100%) delete mode 100644 examples/declarative/i18n/main.cpp delete mode 100644 examples/declarative/i18n/qml/i18n.qml delete mode 100644 examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/imageelements/borderimage/borderimage.desktop delete mode 100644 examples/declarative/imageelements/borderimage/borderimage.png delete mode 100644 examples/declarative/imageelements/borderimage/borderimage.pro delete mode 100644 examples/declarative/imageelements/borderimage/borderimage.svg rename examples/declarative/imageelements/borderimage/{qml => }/content/bw.png (100%) rename examples/declarative/imageelements/borderimage/{qml => }/content/colors-round.sci (100%) rename examples/declarative/imageelements/borderimage/{qml => }/content/colors-stretch.sci (100%) rename examples/declarative/imageelements/borderimage/{qml => }/content/colors.png (100%) rename examples/declarative/imageelements/borderimage/{qml => }/content/shadow.png (100%) delete mode 100644 examples/declarative/imageelements/borderimage/main.cpp delete mode 100644 examples/declarative/imageelements/borderimage/qml/borderimage.qml delete mode 100644 examples/declarative/imageelements/borderimage/qml/content/MyBorderImage.qml delete mode 100644 examples/declarative/imageelements/borderimage/qml/content/ShadowRectangle.qml delete mode 100644 examples/declarative/imageelements/borderimage/qml/shadows.qml delete mode 100644 examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/README delete mode 100644 examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/changelog delete mode 100644 examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/compat delete mode 100644 examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/control delete mode 100644 examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/copyright delete mode 100755 examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/rules diff --git a/examples/declarative/calculator/Core/Button.qml b/examples/declarative/calculator/Core/Button.qml index c5ec39cea8..9080c2472e 100644 --- a/examples/declarative/calculator/Core/Button.qml +++ b/examples/declarative/calculator/Core/Button.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 BorderImage { id: button diff --git a/examples/declarative/calculator/Core/Display.qml b/examples/declarative/calculator/Core/Display.qml index 5e27897bae..a847cb8983 100644 --- a/examples/declarative/calculator/Core/Display.qml +++ b/examples/declarative/calculator/Core/Display.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 BorderImage { id: image diff --git a/examples/declarative/calculator/calculator.qml b/examples/declarative/calculator/calculator.qml index c844c710aa..06f08eeb86 100644 --- a/examples/declarative/calculator/calculator.qml +++ b/examples/declarative/calculator/calculator.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "Core" import "Core/calculator.js" as CalcEngine diff --git a/examples/declarative/calculator/calculator.qmlproject b/examples/declarative/calculator/calculator.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/calculator/calculator.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/i18n/i18n.desktop b/examples/declarative/i18n/i18n.desktop deleted file mode 100644 index 8dd6e345da..0000000000 --- a/examples/declarative/i18n/i18n.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=i18n -Exec=/opt/usr/bin/i18n -Icon=i18n -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/i18n/i18n.png b/examples/declarative/i18n/i18n.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/i18n/qml/i18n/base.ts b/examples/declarative/i18n/i18n/base.ts similarity index 100% rename from examples/declarative/i18n/qml/i18n/base.ts rename to examples/declarative/i18n/i18n/base.ts diff --git a/examples/declarative/i18n/qml/i18n/qml_en_AU.ts b/examples/declarative/i18n/i18n/qml_en_AU.ts similarity index 100% rename from examples/declarative/i18n/qml/i18n/qml_en_AU.ts rename to examples/declarative/i18n/i18n/qml_en_AU.ts diff --git a/examples/declarative/i18n/qml/i18n/qml_fr.ts b/examples/declarative/i18n/i18n/qml_fr.ts similarity index 100% rename from examples/declarative/i18n/qml/i18n/qml_fr.ts rename to examples/declarative/i18n/i18n/qml_fr.ts diff --git a/examples/declarative/i18n/main.cpp b/examples/declarative/i18n/main.cpp deleted file mode 100644 index bc650f277a..0000000000 --- a/examples/declarative/i18n/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/i18n.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/i18n/qml/i18n.qml b/examples/declarative/i18n/qml/i18n.qml deleted file mode 100644 index 219deda894..0000000000 --- a/examples/declarative/i18n/qml/i18n.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -// -// The QML runtime automatically loads a translation from the i18n subdirectory of the root -// QML file, based on the system language. -// -// The files are created/updated by running: -// -// lupdate i18n.qml -ts i18n/base.ts -// -// Translations for new languages are created by copying i18n/base.ts to i18n/qml_.ts -// The .ts files can then be edited with Linguist: -// -// linguist i18n/qml_fr.ts -// -// The run-time translation files are then generaeted by running: -// -// lrelease i18n/*.ts -// - -Rectangle { - width: 640; height: 480 - - Column { - anchors.fill: parent; spacing: 20 - - Text { - text: "If a translation is available for the system language (eg. French) then the - string below will translated (eg. 'Bonjour'). Otherwise it will show 'Hello'." - width: parent.width; wrapMode: Text.WordWrap - } - - Text { - text: qsTr("Hello") - font.pointSize: 25; anchors.horizontalCenter: parent.horizontalCenter - } - } -} diff --git a/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/i18n/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/imageelements/borderimage/borderimage.desktop b/examples/declarative/imageelements/borderimage/borderimage.desktop deleted file mode 100644 index 35f4d2bb03..0000000000 --- a/examples/declarative/imageelements/borderimage/borderimage.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=borderimage -Exec=/opt/usr/bin/borderimage -Icon=borderimage -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/imageelements/borderimage/borderimage.png b/examples/declarative/imageelements/borderimage/borderimage.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/imageelements/borderimage/content/MyBorderImage.qml b/examples/declarative/imageelements/borderimage/content/MyBorderImage.qml index 8ace6e1bf4..4ad69fdb1d 100644 --- a/examples/declarative/imageelements/borderimage/content/MyBorderImage.qml +++ b/examples/declarative/imageelements/borderimage/content/MyBorderImage.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: container diff --git a/examples/declarative/imageelements/borderimage/content/ShadowRectangle.qml b/examples/declarative/imageelements/borderimage/content/ShadowRectangle.qml index 722beae6ce..4d0df21459 100644 --- a/examples/declarative/imageelements/borderimage/content/ShadowRectangle.qml +++ b/examples/declarative/imageelements/borderimage/content/ShadowRectangle.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { property alias color : rectangle.color diff --git a/examples/declarative/imageelements/borderimage/qml/content/bw.png b/examples/declarative/imageelements/borderimage/content/bw.png similarity index 100% rename from examples/declarative/imageelements/borderimage/qml/content/bw.png rename to examples/declarative/imageelements/borderimage/content/bw.png diff --git a/examples/declarative/imageelements/borderimage/qml/content/colors-round.sci b/examples/declarative/imageelements/borderimage/content/colors-round.sci similarity index 100% rename from examples/declarative/imageelements/borderimage/qml/content/colors-round.sci rename to examples/declarative/imageelements/borderimage/content/colors-round.sci diff --git a/examples/declarative/imageelements/borderimage/qml/content/colors-stretch.sci b/examples/declarative/imageelements/borderimage/content/colors-stretch.sci similarity index 100% rename from examples/declarative/imageelements/borderimage/qml/content/colors-stretch.sci rename to examples/declarative/imageelements/borderimage/content/colors-stretch.sci diff --git a/examples/declarative/imageelements/borderimage/qml/content/colors.png b/examples/declarative/imageelements/borderimage/content/colors.png similarity index 100% rename from examples/declarative/imageelements/borderimage/qml/content/colors.png rename to examples/declarative/imageelements/borderimage/content/colors.png diff --git a/examples/declarative/imageelements/borderimage/qml/content/shadow.png b/examples/declarative/imageelements/borderimage/content/shadow.png similarity index 100% rename from examples/declarative/imageelements/borderimage/qml/content/shadow.png rename to examples/declarative/imageelements/borderimage/content/shadow.png diff --git a/examples/declarative/imageelements/borderimage/main.cpp b/examples/declarative/imageelements/borderimage/main.cpp deleted file mode 100644 index c8a9b85b78..0000000000 --- a/examples/declarative/imageelements/borderimage/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/shadows.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/imageelements/borderimage/qml/borderimage.qml b/examples/declarative/imageelements/borderimage/qml/borderimage.qml deleted file mode 100644 index 53e35f97e8..0000000000 --- a/examples/declarative/imageelements/borderimage/qml/borderimage.qml +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" - -Rectangle { - id: page - width: 1030; height: 540 - - Grid { - anchors.centerIn: parent; spacing: 20 - - MyBorderImage { - minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240 - source: "content/colors.png"; margin: 30 - } - - MyBorderImage { - minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240 - source: "content/colors.png"; margin: 30 - horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat - } - - MyBorderImage { - minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240 - source: "content/colors.png"; margin: 30 - horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat - } - - MyBorderImage { - minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240 - source: "content/colors.png"; margin: 30 - horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round - } - - MyBorderImage { - minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200 - source: "content/bw.png"; margin: 10 - } - - MyBorderImage { - minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200 - source: "content/bw.png"; margin: 10 - horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat - } - - MyBorderImage { - minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200 - source: "content/bw.png"; margin: 10 - horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat - } - - MyBorderImage { - minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200 - source: "content/bw.png"; margin: 10 - horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round - } - } -} diff --git a/examples/declarative/imageelements/borderimage/qml/content/MyBorderImage.qml b/examples/declarative/imageelements/borderimage/qml/content/MyBorderImage.qml deleted file mode 100644 index 96495cbefa..0000000000 --- a/examples/declarative/imageelements/borderimage/qml/content/MyBorderImage.qml +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: container - - property alias horizontalMode: image.horizontalTileMode - property alias verticalMode: image.verticalTileMode - property alias source: image.source - - property int minWidth - property int minHeight - property int maxWidth - property int maxHeight - property int margin - - width: 240; height: 240 - - BorderImage { - id: image; anchors.centerIn: parent - - SequentialAnimation on width { - loops: Animation.Infinite - NumberAnimation { - from: container.minWidth; to: container.maxWidth - duration: 2000; easing.type: Easing.InOutQuad - } - NumberAnimation { - from: container.maxWidth; to: container.minWidth - duration: 2000; easing.type: Easing.InOutQuad - } - } - - SequentialAnimation on height { - loops: Animation.Infinite - NumberAnimation { - from: container.minHeight; to: container.maxHeight - duration: 2000; easing.type: Easing.InOutQuad - } - NumberAnimation { - from: container.maxHeight; to: container.minHeight - duration: 2000; easing.type: Easing.InOutQuad - } - } - - border.top: container.margin - border.left: container.margin - border.bottom: container.margin - border.right: container.margin - } -} diff --git a/examples/declarative/imageelements/borderimage/qml/content/ShadowRectangle.qml b/examples/declarative/imageelements/borderimage/qml/content/ShadowRectangle.qml deleted file mode 100644 index 839ecf1177..0000000000 --- a/examples/declarative/imageelements/borderimage/qml/content/ShadowRectangle.qml +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - property alias color : rectangle.color - - BorderImage { - anchors.fill: rectangle - anchors { leftMargin: -6; topMargin: -6; rightMargin: -8; bottomMargin: -8 } - border { left: 10; top: 10; right: 10; bottom: 10 } - source: "shadow.png"; smooth: true - } - - Rectangle { id: rectangle; anchors.fill: parent } -} diff --git a/examples/declarative/imageelements/borderimage/qml/shadows.qml b/examples/declarative/imageelements/borderimage/qml/shadows.qml deleted file mode 100644 index d547f63eac..0000000000 --- a/examples/declarative/imageelements/borderimage/qml/shadows.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" - -Rectangle { - id: window - - width: 480; height: 320 - color: "gray" - - ShadowRectangle { - anchors.centerIn: parent; width: 250; height: 250 - color: "lightsteelblue" - } - - ShadowRectangle { - anchors.centerIn: parent; width: 200; height: 200 - color: "steelblue" - } - - ShadowRectangle { - anchors.centerIn: parent; width: 150; height: 150 - color: "thistle" - } -} diff --git a/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/imageelements/borderimage/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/README b/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/README deleted file mode 100644 index 421e6e32ba..0000000000 --- a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/README +++ /dev/null @@ -1,6 +0,0 @@ -The Debian Package borderimage ----------------------------- - -Comments regarding the Package - - -- Daniel Molkentin Thu, 18 Nov 2010 16:13:09 +0100 diff --git a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/changelog b/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/changelog deleted file mode 100644 index 77071e007a..0000000000 --- a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/changelog +++ /dev/null @@ -1,5 +0,0 @@ -borderimage (0.0.1) unstable; urgency=low - - * Initial Release. - - -- Daniel Molkentin Thu, 18 Nov 2010 16:13:09 +0100 diff --git a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/compat b/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/compat deleted file mode 100644 index 7f8f011eb7..0000000000 --- a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/control b/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/control deleted file mode 100644 index 4bdc93ef3e..0000000000 --- a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: borderimage -Section: user/hidden -Priority: optional -Maintainer: Daniel Molkentin -Build-Depends: debhelper (>= 5), libqt4-dev -Standards-Version: 3.7.3 -Homepage: - -Package: borderimage -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: - diff --git a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/copyright b/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/copyright deleted file mode 100644 index e1c7a293e9..0000000000 --- a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/copyright +++ /dev/null @@ -1,40 +0,0 @@ -This package was debianized by Daniel Molkentin on -Thu, 18 Nov 2010 16:13:09 +0100. - -It was downloaded from - -Upstream Author(s): - - - - -Copyright: - - - - -License: - - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. - -The Debian packaging is (C) 2010, Daniel Molkentin and -is licensed under the GPL, see above. - - -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. diff --git a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/rules b/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/rules deleted file mode 100755 index 3799b01dd7..0000000000 --- a/examples/declarative/imageelements/borderimage/qtc_packaging/debian_fremantle/rules +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - - - - - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - - touch configure-stamp - - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #docbook-to-man debian/borderimage.sgml > borderimage.1 - - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - $(MAKE) clean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/borderimage. - $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/borderimage install - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs - dh_installdocs - dh_installexamples -# dh_install -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - # dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb - # dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/examples/declarative/imageelements/borderimage/shadows.qml b/examples/declarative/imageelements/borderimage/shadows.qml index b48ab84d5f..ebc2cdadcf 100644 --- a/examples/declarative/imageelements/borderimage/shadows.qml +++ b/examples/declarative/imageelements/borderimage/shadows.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" Rectangle { From cb113fad18ce211a1672e59f8513b6ae83ab77c6 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Thu, 25 Aug 2011 15:11:13 +1000 Subject: [PATCH 15/68] Update rssnews, focus and positioners examples to QtQuick 2.0 Change-Id: I187acb734e78552088b85503dd3542e1b1101944 Reviewed-on: http://codereview.qt.nokia.com/3556 Reviewed-by: Qt Sanity Bot Reviewed-by: Alan Alpert --- .../keyinteraction/focus/Core/ContextMenu.qml | 2 +- .../keyinteraction/focus/Core/GridMenu.qml | 2 +- .../keyinteraction/focus/Core/ListMenu.qml | 2 +- .../focus/Core/ListViewDelegate.qml | 2 +- .../focus/{qml => }/Core/images/arrow.png | Bin .../focus/{qml => }/Core/images/qt-logo.png | Bin .../keyinteraction/focus/focus.desktop | 11 - .../keyinteraction/focus/focus.png | Bin 3400 -> 0 bytes .../keyinteraction/focus/focus.pro | 39 --- .../keyinteraction/focus/focus.qml | 2 +- .../keyinteraction/focus/focus.svg | 93 ------- .../declarative/keyinteraction/focus/main.cpp | 54 ---- .../focus/qml/Core/ContextMenu.qml | 65 ----- .../focus/qml/Core/GridMenu.qml | 105 -------- .../focus/qml/Core/ListMenu.qml | 105 -------- .../focus/qml/Core/ListViewDelegate.qml | 85 ------ .../keyinteraction/focus/qml/focus.qml | 111 -------- .../qmlapplicationviewer.cpp | 197 -------------- .../qmlapplicationviewer.h | 79 ------ .../qmlapplicationviewer.pri | 154 ----------- .../positioners/{ => content}/Button.qml | 2 +- .../positioners/{qml => content}/add.png | Bin .../positioners/{qml => content}/del.png | Bin examples/declarative/positioners/main.cpp | 54 ---- .../positioners-attachedproperties.qml | 40 +++ .../positioners/positioners.desktop | 11 - .../declarative/positioners/positioners.png | Bin 3400 -> 0 bytes .../declarative/positioners/positioners.pro | 39 --- .../declarative/positioners/positioners.qml | 13 +- .../declarative/positioners/positioners.svg | 93 ------- .../declarative/positioners/qml/Button.qml | 78 ------ .../positioners/qml/positioners.qml | 253 ------------------ .../qmlapplicationviewer.cpp | 197 -------------- .../qmlapplicationviewer.h | 79 ------ .../qmlapplicationviewer.pri | 154 ----------- .../rssnews/content/BusyIndicator.qml | 2 +- .../rssnews/content/CategoryDelegate.qml | 2 +- .../rssnews/content/NewsDelegate.qml | 2 +- .../declarative/rssnews/content/RssFeeds.qml | 2 +- .../declarative/rssnews/content/ScrollBar.qml | 2 +- examples/declarative/rssnews/rssnews.qml | 2 +- 41 files changed, 64 insertions(+), 2069 deletions(-) rename examples/declarative/keyinteraction/focus/{qml => }/Core/images/arrow.png (100%) rename examples/declarative/keyinteraction/focus/{qml => }/Core/images/qt-logo.png (100%) delete mode 100644 examples/declarative/keyinteraction/focus/focus.desktop delete mode 100644 examples/declarative/keyinteraction/focus/focus.png delete mode 100644 examples/declarative/keyinteraction/focus/focus.pro delete mode 100644 examples/declarative/keyinteraction/focus/focus.svg delete mode 100644 examples/declarative/keyinteraction/focus/main.cpp delete mode 100644 examples/declarative/keyinteraction/focus/qml/Core/ContextMenu.qml delete mode 100644 examples/declarative/keyinteraction/focus/qml/Core/GridMenu.qml delete mode 100644 examples/declarative/keyinteraction/focus/qml/Core/ListMenu.qml delete mode 100644 examples/declarative/keyinteraction/focus/qml/Core/ListViewDelegate.qml delete mode 100644 examples/declarative/keyinteraction/focus/qml/focus.qml delete mode 100644 examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/positioners/{ => content}/Button.qml (99%) rename examples/declarative/positioners/{qml => content}/add.png (100%) rename examples/declarative/positioners/{qml => content}/del.png (100%) delete mode 100644 examples/declarative/positioners/main.cpp delete mode 100644 examples/declarative/positioners/positioners.desktop delete mode 100644 examples/declarative/positioners/positioners.png delete mode 100644 examples/declarative/positioners/positioners.pro delete mode 100644 examples/declarative/positioners/positioners.svg delete mode 100644 examples/declarative/positioners/qml/Button.qml delete mode 100644 examples/declarative/positioners/qml/positioners.qml delete mode 100644 examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.pri diff --git a/examples/declarative/keyinteraction/focus/Core/ContextMenu.qml b/examples/declarative/keyinteraction/focus/Core/ContextMenu.qml index d43daf0bd3..bdd7cd94d7 100644 --- a/examples/declarative/keyinteraction/focus/Core/ContextMenu.qml +++ b/examples/declarative/keyinteraction/focus/Core/ContextMenu.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 FocusScope { id: container diff --git a/examples/declarative/keyinteraction/focus/Core/GridMenu.qml b/examples/declarative/keyinteraction/focus/Core/GridMenu.qml index 224d38b057..fe55b0a73a 100644 --- a/examples/declarative/keyinteraction/focus/Core/GridMenu.qml +++ b/examples/declarative/keyinteraction/focus/Core/GridMenu.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 FocusScope { property alias interactive: gridView.interactive diff --git a/examples/declarative/keyinteraction/focus/Core/ListMenu.qml b/examples/declarative/keyinteraction/focus/Core/ListMenu.qml index 29650dcb6f..626dfb6e08 100644 --- a/examples/declarative/keyinteraction/focus/Core/ListMenu.qml +++ b/examples/declarative/keyinteraction/focus/Core/ListMenu.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 FocusScope { clip: true diff --git a/examples/declarative/keyinteraction/focus/Core/ListViewDelegate.qml b/examples/declarative/keyinteraction/focus/Core/ListViewDelegate.qml index 8f9d022971..66384458f1 100644 --- a/examples/declarative/keyinteraction/focus/Core/ListViewDelegate.qml +++ b/examples/declarative/keyinteraction/focus/Core/ListViewDelegate.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: container diff --git a/examples/declarative/keyinteraction/focus/qml/Core/images/arrow.png b/examples/declarative/keyinteraction/focus/Core/images/arrow.png similarity index 100% rename from examples/declarative/keyinteraction/focus/qml/Core/images/arrow.png rename to examples/declarative/keyinteraction/focus/Core/images/arrow.png diff --git a/examples/declarative/keyinteraction/focus/qml/Core/images/qt-logo.png b/examples/declarative/keyinteraction/focus/Core/images/qt-logo.png similarity index 100% rename from examples/declarative/keyinteraction/focus/qml/Core/images/qt-logo.png rename to examples/declarative/keyinteraction/focus/Core/images/qt-logo.png diff --git a/examples/declarative/keyinteraction/focus/focus.desktop b/examples/declarative/keyinteraction/focus/focus.desktop deleted file mode 100644 index 68513b3f89..0000000000 --- a/examples/declarative/keyinteraction/focus/focus.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=focus -Exec=/opt/usr/bin/focus -Icon=focus -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/keyinteraction/focus/focus.png b/examples/declarative/keyinteraction/focus/focus.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/keyinteraction/focus/main.cpp b/examples/declarative/keyinteraction/focus/main.cpp deleted file mode 100644 index 2f4deff9ef..0000000000 --- a/examples/declarative/keyinteraction/focus/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/focus.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/keyinteraction/focus/qml/Core/ContextMenu.qml b/examples/declarative/keyinteraction/focus/qml/Core/ContextMenu.qml deleted file mode 100644 index 79273ad130..0000000000 --- a/examples/declarative/keyinteraction/focus/qml/Core/ContextMenu.qml +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -FocusScope { - id: container - - property bool open: false - - Item { - anchors.fill: parent - - Rectangle { - anchors.fill: parent - color: "#D1DBBD" - focus: true - Keys.onRightPressed: mainView.focus = true - - Text { - anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; margins: 30 } - color: "black" - font.pixelSize: 14 - text: "Context Menu" - } - } - } -} diff --git a/examples/declarative/keyinteraction/focus/qml/Core/GridMenu.qml b/examples/declarative/keyinteraction/focus/qml/Core/GridMenu.qml deleted file mode 100644 index 263adad732..0000000000 --- a/examples/declarative/keyinteraction/focus/qml/Core/GridMenu.qml +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -FocusScope { - property alias interactive: gridView.interactive - - onActiveFocusChanged: { - if (activeFocus) - mainView.state = "" - } - - Rectangle { - anchors.fill: parent - clip: true - gradient: Gradient { - GradientStop { position: 0.0; color: "#193441" } - GradientStop { position: 1.0; color: Qt.darker("#193441") } - } - - GridView { - id: gridView - anchors.fill: parent; anchors.leftMargin: 20; anchors.rightMargin: 20 - cellWidth: 152; cellHeight: 152 - focus: true - model: 12 - - KeyNavigation.down: listMenu - KeyNavigation.left: contextMenu - - delegate: Item { - id: container - width: GridView.view.cellWidth; height: GridView.view.cellHeight - - Rectangle { - id: content - color: "transparent" - smooth: true - anchors.fill: parent; anchors.margins: 20; radius: 10 - - Rectangle { color: "#91AA9D"; anchors.fill: parent; anchors.margins: 3; radius: 8; smooth: true } - Image { source: "images/qt-logo.png"; anchors.centerIn: parent; smooth: true } - } - - MouseArea { - id: mouseArea - anchors.fill: parent - hoverEnabled: true - - onClicked: { - GridView.view.currentIndex = index - container.forceActiveFocus() - } - } - - states: State { - name: "active"; when: container.activeFocus - PropertyChanges { target: content; color: "#FCFFF5"; scale: 1.1 } - } - - transitions: Transition { - NumberAnimation { properties: "scale"; duration: 100 } - } - } - } - } -} diff --git a/examples/declarative/keyinteraction/focus/qml/Core/ListMenu.qml b/examples/declarative/keyinteraction/focus/qml/Core/ListMenu.qml deleted file mode 100644 index cefc9a354e..0000000000 --- a/examples/declarative/keyinteraction/focus/qml/Core/ListMenu.qml +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -FocusScope { - clip: true - - onActiveFocusChanged: { - if (activeFocus) - mainView.state = "showListViews" - } - - ListView { - id: list1 - y: activeFocus ? 10 : 40; width: parent.width / 3; height: parent.height - 20 - focus: true - KeyNavigation.up: gridMenu; KeyNavigation.left: contextMenu; KeyNavigation.right: list2 - model: 10; cacheBuffer: 200 - delegate: ListViewDelegate {} - - Behavior on y { - NumberAnimation { duration: 600; easing.type: Easing.OutQuint } - } - } - - ListView { - id: list2 - y: activeFocus ? 10 : 40; x: parseInt(parent.width / 3); width: parent.width / 3; height: parent.height - 20 - KeyNavigation.up: gridMenu; KeyNavigation.left: list1; KeyNavigation.right: list3 - model: 10; cacheBuffer: 200 - delegate: ListViewDelegate {} - - Behavior on y { - NumberAnimation { duration: 600; easing.type: Easing.OutQuint } - } - } - - ListView { - id: list3 - y: activeFocus ? 10 : 40; x: parseInt(2 * parent.width / 3); width: parent.width / 3; height: parent.height - 20 - KeyNavigation.up: gridMenu; KeyNavigation.left: list2 - model: 10; cacheBuffer: 200 - delegate: ListViewDelegate {} - - Behavior on y { - NumberAnimation { duration: 600; easing.type: Easing.OutQuint } - } - } - - Rectangle { width: parent.width; height: 1; color: "#D1DBBD" } - - Rectangle { - y: 1; width: parent.width; height: 10 - gradient: Gradient { - GradientStop { position: 0.0; color: "#3E606F" } - GradientStop { position: 1.0; color: "transparent" } - } - } - - Rectangle { - y: parent.height - 10; width: parent.width; height: 10 - gradient: Gradient { - GradientStop { position: 1.0; color: "#3E606F" } - GradientStop { position: 0.0; color: "transparent" } - } - } -} diff --git a/examples/declarative/keyinteraction/focus/qml/Core/ListViewDelegate.qml b/examples/declarative/keyinteraction/focus/qml/Core/ListViewDelegate.qml deleted file mode 100644 index 7b63cd8d9e..0000000000 --- a/examples/declarative/keyinteraction/focus/qml/Core/ListViewDelegate.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: container - width: ListView.view.width; height: 60; anchors.leftMargin: 10; anchors.rightMargin: 10 - - Rectangle { - id: content - anchors.centerIn: parent; width: container.width - 40; height: container.height - 10 - color: "transparent" - smooth: true - radius: 10 - - Rectangle { anchors.fill: parent; anchors.margins: 3; color: "#91AA9D"; smooth: true; radius: 8 } - } - - Text { - id: label - anchors.centerIn: content - text: "List element " + (index + 1) - color: "#193441" - font.pixelSize: 14 - } - - MouseArea { - id: mouseArea - anchors.fill: parent - hoverEnabled: true - - onClicked: { - ListView.view.currentIndex = index - container.forceActiveFocus() - } - } - - states: State { - name: "active"; when: container.activeFocus - PropertyChanges { target: content; color: "#FCFFF5"; scale: 1.1 } - PropertyChanges { target: label; font.pixelSize: 16 } - } - - transitions: Transition { - NumberAnimation { properties: "scale"; duration: 100 } - } -} diff --git a/examples/declarative/keyinteraction/focus/qml/focus.qml b/examples/declarative/keyinteraction/focus/qml/focus.qml deleted file mode 100644 index e2115d84c3..0000000000 --- a/examples/declarative/keyinteraction/focus/qml/focus.qml +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "Core" - -Rectangle { - id: window - - width: 800; height: 480 - color: "#3E606F" - - FocusScope { - id: mainView - - width: parent.width; height: parent.height - focus: true - - GridMenu { - id: gridMenu - width: parent.width; height: 320 - - focus: true - interactive: parent.activeFocus - } - - ListMenu { - id: listMenu - y: 320; width: parent.width; height: 320 - } - - Rectangle { - id: shade - anchors.fill: parent - color: "black" - opacity: 0 - } - - states: State { - name: "showListViews" - PropertyChanges { target: gridMenu; y: -160 } - PropertyChanges { target: listMenu; y: 160 } - } - - transitions: Transition { - NumberAnimation { properties: "y"; duration: 600; easing.type: Easing.OutQuint } - } - } - - Image { - source: "Core/images/arrow.png" - rotation: 90 - anchors.verticalCenter: parent.verticalCenter - - MouseArea { - anchors.fill: parent; anchors.margins: -10 - onClicked: window.state = "contextMenuOpen" - } - } - - ContextMenu { id: contextMenu; x: -265; width: 260; height: parent.height } - - states: State { - name: "contextMenuOpen" - when: !mainView.activeFocus - PropertyChanges { target: contextMenu; x: 0; open: true } - PropertyChanges { target: mainView; x: 130 } - PropertyChanges { target: shade; opacity: 0.25 } - } - - transitions: Transition { - NumberAnimation { properties: "x,opacity"; duration: 600; easing.type: Easing.OutQuint } - } -} diff --git a/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/keyinteraction/focus/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/positioners/Button.qml b/examples/declarative/positioners/content/Button.qml similarity index 99% rename from examples/declarative/positioners/Button.qml rename to examples/declarative/positioners/content/Button.qml index 25907c0d23..9c49afdc20 100644 --- a/examples/declarative/positioners/Button.qml +++ b/examples/declarative/positioners/content/Button.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: page diff --git a/examples/declarative/positioners/qml/add.png b/examples/declarative/positioners/content/add.png similarity index 100% rename from examples/declarative/positioners/qml/add.png rename to examples/declarative/positioners/content/add.png diff --git a/examples/declarative/positioners/qml/del.png b/examples/declarative/positioners/content/del.png similarity index 100% rename from examples/declarative/positioners/qml/del.png rename to examples/declarative/positioners/content/del.png diff --git a/examples/declarative/positioners/main.cpp b/examples/declarative/positioners/main.cpp deleted file mode 100644 index fe93a52c06..0000000000 --- a/examples/declarative/positioners/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/positioners.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/positioners/positioners-attachedproperties.qml b/examples/declarative/positioners/positioners-attachedproperties.qml index 49638683e4..f226b6b946 100644 --- a/examples/declarative/positioners/positioners-attachedproperties.qml +++ b/examples/declarative/positioners/positioners-attachedproperties.qml @@ -1,3 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + import QtQuick 2.0 Rectangle { diff --git a/examples/declarative/positioners/positioners.desktop b/examples/declarative/positioners/positioners.desktop deleted file mode 100644 index 16b8efcf3a..0000000000 --- a/examples/declarative/positioners/positioners.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=positioners -Exec=/opt/usr/bin/positioners -Icon=positioners -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/positioners/positioners.png b/examples/declarative/positioners/positioners.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/positioners/qml/Button.qml b/examples/declarative/positioners/qml/Button.qml deleted file mode 100644 index 32e59933c8..0000000000 --- a/examples/declarative/positioners/qml/Button.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: page - - property string text - property string icon - signal clicked - - border.color: "black"; color: "steelblue"; radius: 5 - width: pix.width + textelement.width + 13 - height: pix.height + 10 - - Image { id: pix; x: 5; y:5; source: parent.icon } - - Text { - id: textelement - text: page.text; color: "white" - x: pix.width + pix.x + 3 - anchors.verticalCenter: pix.verticalCenter - } - - MouseArea { - id: mr - anchors.fill: parent - onClicked: { parent.focus = true; page.clicked() } - } - - states: State { - name: "pressed"; when: mr.pressed - PropertyChanges { target: textelement; x: 5 } - PropertyChanges { target: pix; x: textelement.x + textelement.width + 3 } - } - - transitions: Transition { - NumberAnimation { properties: "x,left"; easing.type: Easing.InOutQuad; duration: 200 } - } -} diff --git a/examples/declarative/positioners/qml/positioners.qml b/examples/declarative/positioners/qml/positioners.qml deleted file mode 100644 index 6ae265e01b..0000000000 --- a/examples/declarative/positioners/qml/positioners.qml +++ /dev/null @@ -1,253 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: page - width: 420; height: 420 - - Column { - id: layout1 - y: 0 - move: Transition { - NumberAnimation { properties: "y"; easing.type: Easing.OutBounce } - } - add: Transition { - NumberAnimation { properties: "y"; easing.type: Easing.OutQuad } - } - - Rectangle { color: "red"; width: 100; height: 50; border.color: "black"; radius: 15 } - - Rectangle { - id: blueV1 - width: 100; height: 50 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "green"; width: 100; height: 50; border.color: "black"; radius: 15 } - - Rectangle { - id: blueV2 - width: 100; height: 50 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "orange"; width: 100; height: 50; border.color: "black"; radius: 15 } - } - - Row { - id: layout2 - y: 300 - move: Transition { - NumberAnimation { properties: "x"; easing.type: Easing.OutBounce } - } - add: Transition { - NumberAnimation { properties: "x"; easing.type: Easing.OutQuad } - } - - Rectangle { color: "red"; width: 50; height: 100; border.color: "black"; radius: 15 } - - Rectangle { - id: blueH1 - width: 50; height: 100 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "green"; width: 50; height: 100; border.color: "black"; radius: 15 } - - Rectangle { - id: blueH2 - width: 50; height: 100 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "orange"; width: 50; height: 100; border.color: "black"; radius: 15 } - } - - Button { - x: 135; y: 90 - text: "Remove" - icon: "del.png" - - onClicked: { - blueH2.opacity = 0 - blueH1.opacity = 0 - blueV1.opacity = 0 - blueV2.opacity = 0 - blueG1.opacity = 0 - blueG2.opacity = 0 - blueG3.opacity = 0 - blueF1.opacity = 0 - blueF2.opacity = 0 - blueF3.opacity = 0 - } - } - - Button { - x: 145; y: 140 - text: "Add" - icon: "add.png" - - onClicked: { - blueH2.opacity = 1 - blueH1.opacity = 1 - blueV1.opacity = 1 - blueV2.opacity = 1 - blueG1.opacity = 1 - blueG2.opacity = 1 - blueG3.opacity = 1 - blueF1.opacity = 1 - blueF2.opacity = 1 - blueF3.opacity = 1 - } - } - - Grid { - x: 260; y: 0 - columns: 3 - - move: Transition { - NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce } - } - - add: Transition { - NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce } - } - - Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } - - Rectangle { - id: blueG1 - width: 50; height: 50 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "green"; width: 50; height: 50; border.color: "black"; radius: 15 } - - Rectangle { - id: blueG2 - width: 50; height: 50 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 } - - Rectangle { - id: blueG3 - width: 50; height: 50 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } - Rectangle { color: "green"; width: 50; height: 50; border.color: "black"; radius: 15 } - Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 } - } - - Flow { - id: layout4 - x: 260; y: 250; width: 150 - - move: Transition { - NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce } - } - - add: Transition { - NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce } - } - - Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } - - Rectangle { - id: blueF1 - width: 60; height: 50 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "green"; width: 30; height: 50; border.color: "black"; radius: 15 } - - Rectangle { - id: blueF2 - width: 60; height: 50 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 } - - Rectangle { - id: blueF3 - width: 40; height: 50 - color: "lightsteelblue" - border.color: "black" - radius: 15 - Behavior on opacity { NumberAnimation {} } - } - - Rectangle { color: "red"; width: 80; height: 50; border.color: "black"; radius: 15 } - } - -} diff --git a/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/positioners/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/rssnews/content/BusyIndicator.qml b/examples/declarative/rssnews/content/BusyIndicator.qml index 3ee30d962b..58d4cf3311 100644 --- a/examples/declarative/rssnews/content/BusyIndicator.qml +++ b/examples/declarative/rssnews/content/BusyIndicator.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { id: container diff --git a/examples/declarative/rssnews/content/CategoryDelegate.qml b/examples/declarative/rssnews/content/CategoryDelegate.qml index 0ae9fbec13..5c59c4faac 100644 --- a/examples/declarative/rssnews/content/CategoryDelegate.qml +++ b/examples/declarative/rssnews/content/CategoryDelegate.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: delegate diff --git a/examples/declarative/rssnews/content/NewsDelegate.qml b/examples/declarative/rssnews/content/NewsDelegate.qml index 061abb24fa..2af748b743 100644 --- a/examples/declarative/rssnews/content/NewsDelegate.qml +++ b/examples/declarative/rssnews/content/NewsDelegate.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: delegate diff --git a/examples/declarative/rssnews/content/RssFeeds.qml b/examples/declarative/rssnews/content/RssFeeds.qml index 09b1ad808c..5cde42a9ae 100644 --- a/examples/declarative/rssnews/content/RssFeeds.qml +++ b/examples/declarative/rssnews/content/RssFeeds.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 ListModel { id: rssFeeds diff --git a/examples/declarative/rssnews/content/ScrollBar.qml b/examples/declarative/rssnews/content/ScrollBar.qml index e54be7b6a8..505ca0b1a6 100644 --- a/examples/declarative/rssnews/content/ScrollBar.qml +++ b/examples/declarative/rssnews/content/ScrollBar.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: container diff --git a/examples/declarative/rssnews/rssnews.qml b/examples/declarative/rssnews/rssnews.qml index b2057a9ed3..ddbfdd9ee3 100644 --- a/examples/declarative/rssnews/rssnews.qml +++ b/examples/declarative/rssnews/rssnews.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" Rectangle { From d1c1ea4c4a1fa222391b8221ada5b8bdf0054eab Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Fri, 26 Aug 2011 09:23:28 +1000 Subject: [PATCH 16/68] Update modelviews examples to QtQuick 2.0 Also make abstractitemmodel example compile in 5.0 and remove obsolete files. Change-Id: Ic09f3878bb0b070e0f77398599d39952758acb8f Reviewed-on: http://codereview.qt.nokia.com/3615 Reviewed-by: Qt Sanity Bot Reviewed-by: Bea Lam --- .../modelviews/Delegate/Delegate.desktop | 11 - .../modelviews/Delegate/Delegate.png | Bin 3400 -> 0 bytes .../modelviews/Delegate/Delegate.pro | 39 ---- .../Delegate/{qml => }/Delegate.qml | 2 +- .../modelviews/Delegate/Delegate.svg | 93 -------- .../declarative/modelviews/Delegate/main.cpp | 14 -- .../qmlapplicationviewer.cpp | 157 -------------- .../qmlapplicationviewer.h | 39 ---- .../qmlapplicationviewer.pri | 154 ------------- .../modelviews/Delegate/{qml => }/view.qml | 2 +- .../abstractitemmodel/abstractitemmodel.pro | 2 +- .../modelviews/abstractitemmodel/main.cpp | 4 +- .../gridview-example/gridviewexample.desktop | 11 - .../gridview-example/gridviewexample.png | Bin 3400 -> 0 bytes .../gridview-example/gridviewexample.pro | 39 ---- .../gridview-example/gridviewexample.svg | 93 -------- .../modelviews/gridview-example/main.cpp | 54 ----- .../gridview-example/qml/gridview-example.qml | 89 -------- .../qmlapplicationviewer.cpp | 197 ----------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------- .../modelviews/gridview/gridview-example.qml | 2 +- .../modelviews/gridview/gridview.qmlproject | 16 -- .../qml => gridview}/pics/AddressBook_48.png | Bin .../qml => gridview}/pics/AudioPlayer_48.png | Bin .../qml => gridview}/pics/Camera_48.png | Bin .../qml => gridview}/pics/DateBook_48.png | Bin .../qml => gridview}/pics/EMail_48.png | Bin .../qml => gridview}/pics/TodoList_48.png | Bin .../qml => gridview}/pics/VideoPlayer_48.png | Bin .../modelviews/listview/content/PetsModel.qml | 2 +- .../listview/content/PressAndHoldButton.qml | 2 +- .../listview/content/RecipesModel.qml | 2 +- .../listview/content/TextButton.qml | 2 +- .../qml => }/content/pics/fruit-salad.jpg | Bin .../qml => }/content/pics/hamburger.jpg | Bin .../qml => }/content/pics/lemonade.jpg | Bin .../qml => }/content/pics/moreDown.png | Bin .../qml => }/content/pics/moreUp.png | Bin .../qml => }/content/pics/pancakes.jpg | Bin .../qml => }/content/pics/vegetable-soup.jpg | Bin .../modelviews/listview/dynamiclist.qml | 2 +- .../listview/dynamiclist/dynamiclist.desktop | 11 - .../listview/dynamiclist/dynamiclist.png | Bin 3400 -> 0 bytes .../listview/dynamiclist/dynamiclist.pro | 39 ---- .../listview/dynamiclist/dynamiclist.svg | 93 -------- .../modelviews/listview/dynamiclist/main.cpp | 54 ----- .../dynamiclist/qml/content/PetsModel.qml | 98 --------- .../qml/content/PressAndHoldButton.qml | 82 ------- .../dynamiclist/qml/content/RecipesModel.qml | 129 ----------- .../dynamiclist/qml/content/TextButton.qml | 78 ------- .../qml/content/pics/arrow-down.png | Bin 594 -> 0 bytes .../dynamiclist/qml/content/pics/arrow-up.png | Bin 692 -> 0 bytes .../qml/content/pics/list-delete.png | Bin 831 -> 0 bytes .../qml/content/pics/minus-sign.png | Bin 250 -> 0 bytes .../qml/content/pics/plus-sign.png | Bin 462 -> 0 bytes .../listview/dynamiclist/qml/dynamiclist.qml | 203 ------------------ .../dynamiclist/qml/expandingdelegates.qml | 202 ----------------- .../listview/dynamiclist/qml/highlight.qml | 99 --------- .../dynamiclist/qml/highlightranges.qml | 122 ----------- .../listview/dynamiclist/qml/sections.qml | 87 -------- .../qmlapplicationviewer.cpp | 197 ----------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------- .../listview/expandingdelegates.qml | 2 +- .../expandingdelegates.desktop | 11 - .../expandingdelegates/expandingdelegates.png | Bin 3400 -> 0 bytes .../expandingdelegates/expandingdelegates.pro | 39 ---- .../expandingdelegates/expandingdelegates.svg | 93 -------- .../listview/expandingdelegates/main.cpp | 54 ----- .../qml/content/PetsModel.qml | 98 --------- .../qml/content/PressAndHoldButton.qml | 82 ------- .../qml/content/RecipesModel.qml | 129 ----------- .../qml/content/TextButton.qml | 78 ------- .../qml/content/pics/arrow-down.png | Bin 594 -> 0 bytes .../qml/content/pics/arrow-up.png | Bin 692 -> 0 bytes .../qml/content/pics/fruit-salad.jpg | Bin 17952 -> 0 bytes .../qml/content/pics/hamburger.jpg | Bin 8572 -> 0 bytes .../qml/content/pics/lemonade.jpg | Bin 6645 -> 0 bytes .../qml/content/pics/list-delete.png | Bin 831 -> 0 bytes .../qml/content/pics/minus-sign.png | Bin 250 -> 0 bytes .../qml/content/pics/moreDown.png | Bin 217 -> 0 bytes .../qml/content/pics/moreUp.png | Bin 212 -> 0 bytes .../qml/content/pics/pancakes.jpg | Bin 9163 -> 0 bytes .../qml/content/pics/plus-sign.png | Bin 462 -> 0 bytes .../qml/content/pics/vegetable-soup.jpg | Bin 8639 -> 0 bytes .../expandingdelegates/qml/dynamiclist.qml | 203 ------------------ .../qml/expandingdelegates.qml | 202 ----------------- .../expandingdelegates/qml/highlight.qml | 99 --------- .../qml/highlightranges.qml | 122 ----------- .../expandingdelegates/qml/sections.qml | 87 -------- .../qmlapplicationviewer.cpp | 197 ----------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------- .../qtc_packaging/debian_fremantle/README | 6 - .../qtc_packaging/debian_fremantle/changelog | 5 - .../qtc_packaging/debian_fremantle/compat | 1 - .../qtc_packaging/debian_fremantle/control | 13 -- .../qtc_packaging/debian_fremantle/copyright | 40 ---- .../qtc_packaging/debian_fremantle/rules | 91 -------- .../modelviews/listview/highlight.qml | 2 +- .../listview/highlight/highlight.desktop | 11 - .../listview/highlight/highlight.png | Bin 3400 -> 0 bytes .../listview/highlight/highlight.pro | 39 ---- .../listview/highlight/highlight.svg | 93 -------- .../modelviews/listview/highlight/main.cpp | 54 ----- .../highlight/qml/content/PetsModel.qml | 98 --------- .../qml/content/PressAndHoldButton.qml | 82 ------- .../highlight/qml/content/RecipesModel.qml | 129 ----------- .../highlight/qml/content/TextButton.qml | 78 ------- .../highlight/qml/content/pics/arrow-down.png | Bin 594 -> 0 bytes .../highlight/qml/content/pics/arrow-up.png | Bin 692 -> 0 bytes .../qml/content/pics/fruit-salad.jpg | Bin 17952 -> 0 bytes .../highlight/qml/content/pics/hamburger.jpg | Bin 8572 -> 0 bytes .../highlight/qml/content/pics/lemonade.jpg | Bin 6645 -> 0 bytes .../qml/content/pics/list-delete.png | Bin 831 -> 0 bytes .../highlight/qml/content/pics/minus-sign.png | Bin 250 -> 0 bytes .../highlight/qml/content/pics/moreDown.png | Bin 217 -> 0 bytes .../highlight/qml/content/pics/moreUp.png | Bin 212 -> 0 bytes .../highlight/qml/content/pics/pancakes.jpg | Bin 9163 -> 0 bytes .../highlight/qml/content/pics/plus-sign.png | Bin 462 -> 0 bytes .../qml/content/pics/vegetable-soup.jpg | Bin 8639 -> 0 bytes .../listview/highlight/qml/dynamiclist.qml | 203 ------------------ .../highlight/qml/expandingdelegates.qml | 202 ----------------- .../listview/highlight/qml/highlight.qml | 99 --------- .../highlight/qml/highlightranges.qml | 122 ----------- .../listview/highlight/qml/sections.qml | 87 -------- .../qmlapplicationviewer.cpp | 197 ----------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------- .../qtc_packaging/debian_fremantle/README | 6 - .../qtc_packaging/debian_fremantle/changelog | 5 - .../qtc_packaging/debian_fremantle/compat | 1 - .../qtc_packaging/debian_fremantle/control | 13 -- .../qtc_packaging/debian_fremantle/copyright | 40 ---- .../qtc_packaging/debian_fremantle/rules | 91 -------- .../modelviews/listview/highlightranges.qml | 2 +- .../highlightranges/highlightranges.desktop | 11 - .../highlightranges/highlightranges.png | Bin 3400 -> 0 bytes .../highlightranges/highlightranges.pro | 39 ---- .../highlightranges/highlightranges.svg | 93 -------- .../listview/highlightranges/main.cpp | 54 ----- .../highlightranges/qml/content/PetsModel.qml | 98 --------- .../qml/content/PressAndHoldButton.qml | 82 ------- .../qml/content/RecipesModel.qml | 129 ----------- .../qml/content/TextButton.qml | 78 ------- .../qml/content/pics/arrow-down.png | Bin 594 -> 0 bytes .../qml/content/pics/arrow-up.png | Bin 692 -> 0 bytes .../qml/content/pics/fruit-salad.jpg | Bin 17952 -> 0 bytes .../qml/content/pics/hamburger.jpg | Bin 8572 -> 0 bytes .../qml/content/pics/lemonade.jpg | Bin 6645 -> 0 bytes .../qml/content/pics/list-delete.png | Bin 831 -> 0 bytes .../qml/content/pics/minus-sign.png | Bin 250 -> 0 bytes .../qml/content/pics/moreDown.png | Bin 217 -> 0 bytes .../qml/content/pics/moreUp.png | Bin 212 -> 0 bytes .../qml/content/pics/pancakes.jpg | Bin 9163 -> 0 bytes .../qml/content/pics/plus-sign.png | Bin 462 -> 0 bytes .../qml/content/pics/vegetable-soup.jpg | Bin 8639 -> 0 bytes .../highlightranges/qml/dynamiclist.qml | 203 ------------------ .../qml/expandingdelegates.qml | 202 ----------------- .../highlightranges/qml/highlight.qml | 99 --------- .../highlightranges/qml/highlightranges.qml | 122 ----------- .../listview/highlightranges/qml/sections.qml | 87 -------- .../qmlapplicationviewer.cpp | 197 ----------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------- .../modelviews/listview/listview.qmlproject | 16 -- .../modelviews/listview/sections.qml | 2 +- .../modelviews/listview/sections/main.cpp | 54 ----- .../sections/qml/content/PetsModel.qml | 98 --------- .../qml/content/PressAndHoldButton.qml | 82 ------- .../sections/qml/content/RecipesModel.qml | 129 ----------- .../sections/qml/content/TextButton.qml | 78 ------- .../sections/qml/content/pics/arrow-down.png | Bin 594 -> 0 bytes .../sections/qml/content/pics/arrow-up.png | Bin 692 -> 0 bytes .../sections/qml/content/pics/fruit-salad.jpg | Bin 17952 -> 0 bytes .../sections/qml/content/pics/hamburger.jpg | Bin 8572 -> 0 bytes .../sections/qml/content/pics/lemonade.jpg | Bin 6645 -> 0 bytes .../sections/qml/content/pics/list-delete.png | Bin 831 -> 0 bytes .../sections/qml/content/pics/minus-sign.png | Bin 250 -> 0 bytes .../sections/qml/content/pics/moreDown.png | Bin 217 -> 0 bytes .../sections/qml/content/pics/moreUp.png | Bin 212 -> 0 bytes .../sections/qml/content/pics/pancakes.jpg | Bin 9163 -> 0 bytes .../sections/qml/content/pics/plus-sign.png | Bin 462 -> 0 bytes .../qml/content/pics/vegetable-soup.jpg | Bin 8639 -> 0 bytes .../listview/sections/qml/dynamiclist.qml | 203 ------------------ .../sections/qml/expandingdelegates.qml | 202 ----------------- .../listview/sections/qml/highlight.qml | 99 --------- .../listview/sections/qml/highlightranges.qml | 122 ----------- .../listview/sections/qml/sections.qml | 87 -------- .../qmlapplicationviewer.cpp | 197 ----------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------- .../listview/sections/sections.desktop | 11 - .../modelviews/listview/sections/sections.png | Bin 3400 -> 0 bytes .../modelviews/listview/sections/sections.pro | 39 ---- .../modelviews/listview/sections/sections.svg | 93 -------- .../modelviews/package/Delegate.qml | 2 +- .../modelviews/package/package.qmlproject | 16 -- .../declarative/modelviews/package/view.qml | 2 +- .../{qml => content}/ParallaxView.qml | 2 +- .../parallax/{qml => content}/Smiley.qml | 6 +- .../{ => content}/pics/background.jpg | Bin .../{ => content}/pics/face-smile.png | Bin .../parallax/{ => content}/pics/home-page.svg | 0 .../parallax/{ => content}/pics/shadow.png | Bin .../{ => content}/pics/yast-joystick.png | Bin .../parallax/{ => content}/pics/yast-wol.png | Bin .../modelviews/parallax/parallax.qml | 12 +- .../modelviews/parallax/parallax.qmlproject | 16 -- .../modelviews/pathview-example/main.cpp | 54 ----- .../pathview-example/pathviewexample.desktop | 11 - .../pathview-example/pathviewexample.png | Bin 3400 -> 0 bytes .../pathview-example/pathviewexample.pro | 39 ---- .../pathview-example/pathviewexample.svg | 93 -------- .../pathview-example/qml/pathview-example.qml | 109 ---------- .../qmlapplicationviewer.cpp | 197 ----------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------- .../qtc_packaging/debian_fremantle/README | 6 - .../qtc_packaging/debian_fremantle/changelog | 5 - .../qtc_packaging/debian_fremantle/compat | 1 - .../qtc_packaging/debian_fremantle/control | 13 -- .../qtc_packaging/debian_fremantle/copyright | 40 ---- .../qtc_packaging/debian_fremantle/rules | 91 -------- .../modelviews/pathview/pathview-example.qml | 2 +- .../modelviews/pathview/pathview.qmlproject | 16 -- .../qml => pathview}/pics/AddressBook_48.png | Bin .../qml => pathview}/pics/AudioPlayer_48.png | Bin .../qml => pathview}/pics/Camera_48.png | Bin .../qml => pathview}/pics/DateBook_48.png | Bin .../qml => pathview}/pics/EMail_48.png | Bin .../qml => pathview}/pics/TodoList_48.png | Bin .../qml => pathview}/pics/VideoPlayer_48.png | Bin .../modelviews/visualitemmodel/main.cpp | 54 ----- .../visualitemmodel/qml/visualitemmodel.qml | 107 --------- .../qmlapplicationviewer.cpp | 197 ----------------- .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 ------------- .../visualitemmodel/visualitemmodel.desktop | 11 - .../visualitemmodel/visualitemmodel.png | Bin 3400 -> 0 bytes .../visualitemmodel/visualitemmodel.pro | 39 ---- .../visualitemmodel/visualitemmodel.qml | 2 +- .../visualitemmodel/visualitemmodel.svg | 93 -------- 244 files changed, 29 insertions(+), 11905 deletions(-) delete mode 100644 examples/declarative/modelviews/Delegate/Delegate.desktop delete mode 100644 examples/declarative/modelviews/Delegate/Delegate.png delete mode 100644 examples/declarative/modelviews/Delegate/Delegate.pro rename examples/declarative/modelviews/Delegate/{qml => }/Delegate.qml (99%) delete mode 100644 examples/declarative/modelviews/Delegate/Delegate.svg delete mode 100644 examples/declarative/modelviews/Delegate/main.cpp delete mode 100644 examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/modelviews/Delegate/{qml => }/view.qml (99%) delete mode 100644 examples/declarative/modelviews/gridview-example/gridviewexample.desktop delete mode 100644 examples/declarative/modelviews/gridview-example/gridviewexample.png delete mode 100644 examples/declarative/modelviews/gridview-example/gridviewexample.pro delete mode 100644 examples/declarative/modelviews/gridview-example/gridviewexample.svg delete mode 100644 examples/declarative/modelviews/gridview-example/main.cpp delete mode 100644 examples/declarative/modelviews/gridview-example/qml/gridview-example.qml delete mode 100644 examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/modelviews/gridview/gridview.qmlproject rename examples/declarative/modelviews/{gridview-example/qml => gridview}/pics/AddressBook_48.png (100%) rename examples/declarative/modelviews/{gridview-example/qml => gridview}/pics/AudioPlayer_48.png (100%) rename examples/declarative/modelviews/{gridview-example/qml => gridview}/pics/Camera_48.png (100%) rename examples/declarative/modelviews/{gridview-example/qml => gridview}/pics/DateBook_48.png (100%) rename examples/declarative/modelviews/{gridview-example/qml => gridview}/pics/EMail_48.png (100%) rename examples/declarative/modelviews/{gridview-example/qml => gridview}/pics/TodoList_48.png (100%) rename examples/declarative/modelviews/{gridview-example/qml => gridview}/pics/VideoPlayer_48.png (100%) rename examples/declarative/modelviews/listview/{dynamiclist/qml => }/content/pics/fruit-salad.jpg (100%) rename examples/declarative/modelviews/listview/{dynamiclist/qml => }/content/pics/hamburger.jpg (100%) rename examples/declarative/modelviews/listview/{dynamiclist/qml => }/content/pics/lemonade.jpg (100%) rename examples/declarative/modelviews/listview/{dynamiclist/qml => }/content/pics/moreDown.png (100%) rename examples/declarative/modelviews/listview/{dynamiclist/qml => }/content/pics/moreUp.png (100%) rename examples/declarative/modelviews/listview/{dynamiclist/qml => }/content/pics/pancakes.jpg (100%) rename examples/declarative/modelviews/listview/{dynamiclist/qml => }/content/pics/vegetable-soup.jpg (100%) delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/dynamiclist.desktop delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/dynamiclist.png delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/dynamiclist.pro delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/dynamiclist.svg delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/main.cpp delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/PetsModel.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/PressAndHoldButton.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/RecipesModel.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/TextButton.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/arrow-down.png delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/arrow-up.png delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/list-delete.png delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/minus-sign.png delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/plus-sign.png delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/dynamiclist.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/expandingdelegates.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/highlight.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/highlightranges.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qml/sections.qml delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.desktop delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.png delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.pro delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.svg delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/main.cpp delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/PetsModel.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/PressAndHoldButton.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/RecipesModel.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/TextButton.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/arrow-down.png delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/arrow-up.png delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/fruit-salad.jpg delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/hamburger.jpg delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/lemonade.jpg delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/list-delete.png delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/minus-sign.png delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/moreDown.png delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/moreUp.png delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/pancakes.jpg delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/plus-sign.png delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/vegetable-soup.jpg delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/dynamiclist.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/expandingdelegates.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/highlight.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/highlightranges.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qml/sections.qml delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/README delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/changelog delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/compat delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/control delete mode 100644 examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/copyright delete mode 100755 examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/rules delete mode 100644 examples/declarative/modelviews/listview/highlight/highlight.desktop delete mode 100644 examples/declarative/modelviews/listview/highlight/highlight.png delete mode 100644 examples/declarative/modelviews/listview/highlight/highlight.pro delete mode 100644 examples/declarative/modelviews/listview/highlight/highlight.svg delete mode 100644 examples/declarative/modelviews/listview/highlight/main.cpp delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/PetsModel.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/PressAndHoldButton.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/RecipesModel.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/TextButton.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/arrow-down.png delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/arrow-up.png delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/fruit-salad.jpg delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/hamburger.jpg delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/lemonade.jpg delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/list-delete.png delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/minus-sign.png delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/moreDown.png delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/moreUp.png delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/pancakes.jpg delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/plus-sign.png delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/content/pics/vegetable-soup.jpg delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/dynamiclist.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/expandingdelegates.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/highlight.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/highlightranges.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qml/sections.qml delete mode 100644 examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/README delete mode 100644 examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/changelog delete mode 100644 examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/compat delete mode 100644 examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/control delete mode 100644 examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/copyright delete mode 100755 examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/rules delete mode 100644 examples/declarative/modelviews/listview/highlightranges/highlightranges.desktop delete mode 100644 examples/declarative/modelviews/listview/highlightranges/highlightranges.png delete mode 100644 examples/declarative/modelviews/listview/highlightranges/highlightranges.pro delete mode 100644 examples/declarative/modelviews/listview/highlightranges/highlightranges.svg delete mode 100644 examples/declarative/modelviews/listview/highlightranges/main.cpp delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/PetsModel.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/PressAndHoldButton.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/RecipesModel.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/TextButton.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/arrow-down.png delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/arrow-up.png delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/fruit-salad.jpg delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/hamburger.jpg delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/lemonade.jpg delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/list-delete.png delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/minus-sign.png delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/moreDown.png delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/moreUp.png delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/pancakes.jpg delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/plus-sign.png delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/content/pics/vegetable-soup.jpg delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/dynamiclist.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/expandingdelegates.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/highlight.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/highlightranges.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qml/sections.qml delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/modelviews/listview/listview.qmlproject delete mode 100644 examples/declarative/modelviews/listview/sections/main.cpp delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/PetsModel.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/PressAndHoldButton.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/RecipesModel.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/TextButton.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/arrow-down.png delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/arrow-up.png delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/fruit-salad.jpg delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/hamburger.jpg delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/lemonade.jpg delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/list-delete.png delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/minus-sign.png delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/moreDown.png delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/moreUp.png delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/pancakes.jpg delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/plus-sign.png delete mode 100644 examples/declarative/modelviews/listview/sections/qml/content/pics/vegetable-soup.jpg delete mode 100644 examples/declarative/modelviews/listview/sections/qml/dynamiclist.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qml/expandingdelegates.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qml/highlight.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qml/highlightranges.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qml/sections.qml delete mode 100644 examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/modelviews/listview/sections/sections.desktop delete mode 100644 examples/declarative/modelviews/listview/sections/sections.png delete mode 100644 examples/declarative/modelviews/listview/sections/sections.pro delete mode 100644 examples/declarative/modelviews/listview/sections/sections.svg delete mode 100644 examples/declarative/modelviews/package/package.qmlproject rename examples/declarative/modelviews/parallax/{qml => content}/ParallaxView.qml (99%) rename examples/declarative/modelviews/parallax/{qml => content}/Smiley.qml (96%) rename examples/declarative/modelviews/parallax/{ => content}/pics/background.jpg (100%) rename examples/declarative/modelviews/parallax/{ => content}/pics/face-smile.png (100%) rename examples/declarative/modelviews/parallax/{ => content}/pics/home-page.svg (100%) rename examples/declarative/modelviews/parallax/{ => content}/pics/shadow.png (100%) rename examples/declarative/modelviews/parallax/{ => content}/pics/yast-joystick.png (100%) rename examples/declarative/modelviews/parallax/{ => content}/pics/yast-wol.png (100%) delete mode 100644 examples/declarative/modelviews/parallax/parallax.qmlproject delete mode 100644 examples/declarative/modelviews/pathview-example/main.cpp delete mode 100644 examples/declarative/modelviews/pathview-example/pathviewexample.desktop delete mode 100644 examples/declarative/modelviews/pathview-example/pathviewexample.png delete mode 100644 examples/declarative/modelviews/pathview-example/pathviewexample.pro delete mode 100644 examples/declarative/modelviews/pathview-example/pathviewexample.svg delete mode 100644 examples/declarative/modelviews/pathview-example/qml/pathview-example.qml delete mode 100644 examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/README delete mode 100644 examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/changelog delete mode 100644 examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/compat delete mode 100644 examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/control delete mode 100644 examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/copyright delete mode 100755 examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/rules delete mode 100644 examples/declarative/modelviews/pathview/pathview.qmlproject rename examples/declarative/modelviews/{pathview-example/qml => pathview}/pics/AddressBook_48.png (100%) rename examples/declarative/modelviews/{pathview-example/qml => pathview}/pics/AudioPlayer_48.png (100%) rename examples/declarative/modelviews/{pathview-example/qml => pathview}/pics/Camera_48.png (100%) rename examples/declarative/modelviews/{pathview-example/qml => pathview}/pics/DateBook_48.png (100%) rename examples/declarative/modelviews/{pathview-example/qml => pathview}/pics/EMail_48.png (100%) rename examples/declarative/modelviews/{pathview-example/qml => pathview}/pics/TodoList_48.png (100%) rename examples/declarative/modelviews/{pathview-example/qml => pathview}/pics/VideoPlayer_48.png (100%) delete mode 100644 examples/declarative/modelviews/visualitemmodel/main.cpp delete mode 100644 examples/declarative/modelviews/visualitemmodel/qml/visualitemmodel.qml delete mode 100644 examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/modelviews/visualitemmodel/visualitemmodel.desktop delete mode 100644 examples/declarative/modelviews/visualitemmodel/visualitemmodel.png delete mode 100644 examples/declarative/modelviews/visualitemmodel/visualitemmodel.pro delete mode 100644 examples/declarative/modelviews/visualitemmodel/visualitemmodel.svg diff --git a/examples/declarative/modelviews/Delegate/Delegate.desktop b/examples/declarative/modelviews/Delegate/Delegate.desktop deleted file mode 100644 index 9815dedb52..0000000000 --- a/examples/declarative/modelviews/Delegate/Delegate.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=Delegate -Exec=/opt/usr/bin/Delegate -Icon=Delegate -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/Delegate/Delegate.png b/examples/declarative/modelviews/Delegate/Delegate.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/modelviews/Delegate/main.cpp b/examples/declarative/modelviews/Delegate/main.cpp deleted file mode 100644 index 22252ce4a7..0000000000 --- a/examples/declarative/modelviews/Delegate/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/Delegate.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 11bedd1914..0000000000 --- a/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index 143c17b802..0000000000 --- a/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,39 +0,0 @@ -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/Delegate/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/Delegate/qml/view.qml b/examples/declarative/modelviews/Delegate/view.qml similarity index 99% rename from examples/declarative/modelviews/Delegate/qml/view.qml rename to examples/declarative/modelviews/Delegate/view.qml index cbe8f0689f..89fed86aa6 100644 --- a/examples/declarative/modelviews/Delegate/qml/view.qml +++ b/examples/declarative/modelviews/Delegate/view.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { color: "white" diff --git a/examples/declarative/modelviews/abstractitemmodel/abstractitemmodel.pro b/examples/declarative/modelviews/abstractitemmodel/abstractitemmodel.pro index 55e67f34e6..760a8dca55 100644 --- a/examples/declarative/modelviews/abstractitemmodel/abstractitemmodel.pro +++ b/examples/declarative/modelviews/abstractitemmodel/abstractitemmodel.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += declarative +QT += declarative qtquick1 RESOURCES += abstractitemmodel.qrc diff --git a/examples/declarative/modelviews/abstractitemmodel/main.cpp b/examples/declarative/modelviews/abstractitemmodel/main.cpp index f60c9b8fac..7f3c574178 100644 --- a/examples/declarative/modelviews/abstractitemmodel/main.cpp +++ b/examples/declarative/modelviews/abstractitemmodel/main.cpp @@ -38,8 +38,8 @@ ** ****************************************************************************/ #include "model.h" -#include -#include +#include +#include #include diff --git a/examples/declarative/modelviews/gridview-example/gridviewexample.desktop b/examples/declarative/modelviews/gridview-example/gridviewexample.desktop deleted file mode 100644 index 1ba59a4190..0000000000 --- a/examples/declarative/modelviews/gridview-example/gridviewexample.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=gridview-example -Exec=/opt/usr/bin/gridview-example -Icon=gridview-example -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/gridview-example/gridviewexample.png b/examples/declarative/modelviews/gridview-example/gridviewexample.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/modelviews/gridview-example/main.cpp b/examples/declarative/modelviews/gridview-example/main.cpp deleted file mode 100644 index 54f49ad50d..0000000000 --- a/examples/declarative/modelviews/gridview-example/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/gridview-example.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/gridview-example/qml/gridview-example.qml b/examples/declarative/modelviews/gridview-example/qml/gridview-example.qml deleted file mode 100644 index 85fefda273..0000000000 --- a/examples/declarative/modelviews/gridview-example/qml/gridview-example.qml +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 300; height: 400 - color: "white" - - ListModel { - id: appModel - ListElement { name: "Music"; icon: "pics/AudioPlayer_48.png" } - ListElement { name: "Movies"; icon: "pics/VideoPlayer_48.png" } - ListElement { name: "Camera"; icon: "pics/Camera_48.png" } - ListElement { name: "Calendar"; icon: "pics/DateBook_48.png" } - ListElement { name: "Messaging"; icon: "pics/EMail_48.png" } - ListElement { name: "Todo List"; icon: "pics/TodoList_48.png" } - ListElement { name: "Contacts"; icon: "pics/AddressBook_48.png" } - } - - Component { - id: appDelegate - - Item { - width: 100; height: 100 - - Image { - id: myIcon - y: 20; anchors.horizontalCenter: parent.horizontalCenter - source: icon - } - Text { - anchors { top: myIcon.bottom; horizontalCenter: parent.horizontalCenter } - text: name - } - } - } - - Component { - id: appHighlight - Rectangle { width: 80; height: 80; color: "lightsteelblue" } - } - - GridView { - anchors.fill: parent - cellWidth: 100; cellHeight: 100 - highlight: appHighlight - focus: true - model: appModel - delegate: appDelegate - } -} diff --git a/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/gridview-example/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/gridview/gridview-example.qml b/examples/declarative/modelviews/gridview/gridview-example.qml index 85bd2f15c1..f6bbcc3890 100644 --- a/examples/declarative/modelviews/gridview/gridview-example.qml +++ b/examples/declarative/modelviews/gridview/gridview-example.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { width: 300; height: 400 diff --git a/examples/declarative/modelviews/gridview/gridview.qmlproject b/examples/declarative/modelviews/gridview/gridview.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/modelviews/gridview/gridview.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/modelviews/gridview-example/qml/pics/AddressBook_48.png b/examples/declarative/modelviews/gridview/pics/AddressBook_48.png similarity index 100% rename from examples/declarative/modelviews/gridview-example/qml/pics/AddressBook_48.png rename to examples/declarative/modelviews/gridview/pics/AddressBook_48.png diff --git a/examples/declarative/modelviews/gridview-example/qml/pics/AudioPlayer_48.png b/examples/declarative/modelviews/gridview/pics/AudioPlayer_48.png similarity index 100% rename from examples/declarative/modelviews/gridview-example/qml/pics/AudioPlayer_48.png rename to examples/declarative/modelviews/gridview/pics/AudioPlayer_48.png diff --git a/examples/declarative/modelviews/gridview-example/qml/pics/Camera_48.png b/examples/declarative/modelviews/gridview/pics/Camera_48.png similarity index 100% rename from examples/declarative/modelviews/gridview-example/qml/pics/Camera_48.png rename to examples/declarative/modelviews/gridview/pics/Camera_48.png diff --git a/examples/declarative/modelviews/gridview-example/qml/pics/DateBook_48.png b/examples/declarative/modelviews/gridview/pics/DateBook_48.png similarity index 100% rename from examples/declarative/modelviews/gridview-example/qml/pics/DateBook_48.png rename to examples/declarative/modelviews/gridview/pics/DateBook_48.png diff --git a/examples/declarative/modelviews/gridview-example/qml/pics/EMail_48.png b/examples/declarative/modelviews/gridview/pics/EMail_48.png similarity index 100% rename from examples/declarative/modelviews/gridview-example/qml/pics/EMail_48.png rename to examples/declarative/modelviews/gridview/pics/EMail_48.png diff --git a/examples/declarative/modelviews/gridview-example/qml/pics/TodoList_48.png b/examples/declarative/modelviews/gridview/pics/TodoList_48.png similarity index 100% rename from examples/declarative/modelviews/gridview-example/qml/pics/TodoList_48.png rename to examples/declarative/modelviews/gridview/pics/TodoList_48.png diff --git a/examples/declarative/modelviews/gridview-example/qml/pics/VideoPlayer_48.png b/examples/declarative/modelviews/gridview/pics/VideoPlayer_48.png similarity index 100% rename from examples/declarative/modelviews/gridview-example/qml/pics/VideoPlayer_48.png rename to examples/declarative/modelviews/gridview/pics/VideoPlayer_48.png diff --git a/examples/declarative/modelviews/listview/content/PetsModel.qml b/examples/declarative/modelviews/listview/content/PetsModel.qml index d7375a73af..e55d274fa2 100644 --- a/examples/declarative/modelviews/listview/content/PetsModel.qml +++ b/examples/declarative/modelviews/listview/content/PetsModel.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 ListModel { ListElement { diff --git a/examples/declarative/modelviews/listview/content/PressAndHoldButton.qml b/examples/declarative/modelviews/listview/content/PressAndHoldButton.qml index b79b5cbb25..61cb37d602 100644 --- a/examples/declarative/modelviews/listview/content/PressAndHoldButton.qml +++ b/examples/declarative/modelviews/listview/content/PressAndHoldButton.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { id: container diff --git a/examples/declarative/modelviews/listview/content/RecipesModel.qml b/examples/declarative/modelviews/listview/content/RecipesModel.qml index 893d6397b3..39ae73a3ea 100644 --- a/examples/declarative/modelviews/listview/content/RecipesModel.qml +++ b/examples/declarative/modelviews/listview/content/RecipesModel.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 ListModel { ListElement { diff --git a/examples/declarative/modelviews/listview/content/TextButton.qml b/examples/declarative/modelviews/listview/content/TextButton.qml index 9eef671fad..88fe347d2e 100644 --- a/examples/declarative/modelviews/listview/content/TextButton.qml +++ b/examples/declarative/modelviews/listview/content/TextButton.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: container diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/fruit-salad.jpg b/examples/declarative/modelviews/listview/content/pics/fruit-salad.jpg similarity index 100% rename from examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/fruit-salad.jpg rename to examples/declarative/modelviews/listview/content/pics/fruit-salad.jpg diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/hamburger.jpg b/examples/declarative/modelviews/listview/content/pics/hamburger.jpg similarity index 100% rename from examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/hamburger.jpg rename to examples/declarative/modelviews/listview/content/pics/hamburger.jpg diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/lemonade.jpg b/examples/declarative/modelviews/listview/content/pics/lemonade.jpg similarity index 100% rename from examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/lemonade.jpg rename to examples/declarative/modelviews/listview/content/pics/lemonade.jpg diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/moreDown.png b/examples/declarative/modelviews/listview/content/pics/moreDown.png similarity index 100% rename from examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/moreDown.png rename to examples/declarative/modelviews/listview/content/pics/moreDown.png diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/moreUp.png b/examples/declarative/modelviews/listview/content/pics/moreUp.png similarity index 100% rename from examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/moreUp.png rename to examples/declarative/modelviews/listview/content/pics/moreUp.png diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/pancakes.jpg b/examples/declarative/modelviews/listview/content/pics/pancakes.jpg similarity index 100% rename from examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/pancakes.jpg rename to examples/declarative/modelviews/listview/content/pics/pancakes.jpg diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/vegetable-soup.jpg b/examples/declarative/modelviews/listview/content/pics/vegetable-soup.jpg similarity index 100% rename from examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/vegetable-soup.jpg rename to examples/declarative/modelviews/listview/content/pics/vegetable-soup.jpg diff --git a/examples/declarative/modelviews/listview/dynamiclist.qml b/examples/declarative/modelviews/listview/dynamiclist.qml index 350a337c05..6e4b93ac89 100644 --- a/examples/declarative/modelviews/listview/dynamiclist.qml +++ b/examples/declarative/modelviews/listview/dynamiclist.qml @@ -37,7 +37,7 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" // This example shows how items can be dynamically added to and removed from diff --git a/examples/declarative/modelviews/listview/dynamiclist/dynamiclist.desktop b/examples/declarative/modelviews/listview/dynamiclist/dynamiclist.desktop deleted file mode 100644 index d056093dfe..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/dynamiclist.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=dynamiclist -Exec=/opt/usr/bin/dynamiclist -Icon=dynamiclist -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/listview/dynamiclist/dynamiclist.png b/examples/declarative/modelviews/listview/dynamiclist/dynamiclist.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/modelviews/listview/dynamiclist/main.cpp b/examples/declarative/modelviews/listview/dynamiclist/main.cpp deleted file mode 100644 index 757b1135b7..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/dynamiclist.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/PetsModel.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/content/PetsModel.qml deleted file mode 100644 index 5220763813..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/content/PetsModel.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - name: "Polly" - type: "Parrot" - age: 12 - size: "Small" - } - ListElement { - name: "Penny" - type: "Turtle" - age: 4 - size: "Small" - } - ListElement { - name: "Warren" - type: "Rabbit" - age: 2 - size: "Small" - } - ListElement { - name: "Spot" - type: "Dog" - age: 9 - size: "Medium" - } - ListElement { - name: "Schrödinger" - type: "Cat" - age: 2 - size: "Medium" - } - ListElement { - name: "Joey" - type: "Kangaroo" - age: 1 - size: "Medium" - } - ListElement { - name: "Kimba" - type: "Bunny" - age: 65 - size: "Large" - } - ListElement { - name: "Rover" - type: "Dog" - age: 5 - size: "Large" - } - ListElement { - name: "Tiny" - type: "Elephant" - age: 15 - size: "Large" - } -} diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/PressAndHoldButton.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/content/PressAndHoldButton.qml deleted file mode 100644 index d6808a49c3..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/content/PressAndHoldButton.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - id: container - - property int repeatDelay: 300 - property int repeatDuration: 75 - property bool pressed: false - - signal clicked - - scale: pressed ? 0.9 : 1 - - function release() { - autoRepeatClicks.stop() - container.pressed = false - } - - SequentialAnimation on pressed { - id: autoRepeatClicks - running: false - - PropertyAction { target: container; property: "pressed"; value: true } - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDelay } - - SequentialAnimation { - loops: Animation.Infinite - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDuration } - } - } - - MouseArea { - anchors.fill: parent - - onPressed: autoRepeatClicks.start() - onReleased: container.release() - onCanceled: container.release() - } -} - diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/RecipesModel.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/content/RecipesModel.qml deleted file mode 100644 index 6056b90382..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/content/RecipesModel.qml +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - title: "Pancakes" - picture: "content/pics/pancakes.jpg" - ingredients: " -

    -
  • 1 cup (150g) self-raising flour -
  • 1 tbs caster sugar -
  • 3/4 cup (185ml) milk -
  • 1 egg -
- " - method: " -
    -
  1. Sift flour and sugar together into a bowl. Add a pinch of salt. -
  2. Beat milk and egg together, then add to dry ingredients. Beat until smooth. -
  3. Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. -
  4. Turn over and cook other side until golden. -
- " - } - ListElement { - title: "Fruit Salad" - picture: "content/pics/fruit-salad.jpg" - ingredients: "* Seasonal Fruit" - method: "* Chop fruit and place in a bowl." - } - ListElement { - title: "Vegetable Soup" - picture: "content/pics/vegetable-soup.jpg" - ingredients: " -
    -
  • 1 onion -
  • 1 turnip -
  • 1 potato -
  • 1 carrot -
  • 1 head of celery -
  • 1 1/2 litres of water -
- " - method: " -
    -
  1. Chop vegetables. -
  2. Boil in water until vegetables soften. -
  3. Season with salt and pepper to taste. -
- " - } - ListElement { - title: "Hamburger" - picture: "content/pics/hamburger.jpg" - ingredients: " -
    -
  • 500g minced beef -
  • Seasoning -
  • lettuce, tomato, onion, cheese -
  • 1 hamburger bun for each burger -
- " - method: " -
    -
  1. Mix the beef, together with seasoning, in a food processor. -
  2. Shape the beef into burgers. -
  3. Grill the burgers for about 5 mins on each side (until cooked through) -
  4. Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. -
- " - } - ListElement { - title: "Lemonade" - picture: "content/pics/lemonade.jpg" - ingredients: " -
    -
  • 1 cup Lemon Juice -
  • 1 cup Sugar -
  • 6 Cups of Water (2 cups warm water, 4 cups cold water) -
- " - method: " -
    -
  1. Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. -
  2. Pour in lemon juice, stir again, and add 4 cups of cold water. -
  3. Chill or serve over ice cubes. -
- " - } -} diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/TextButton.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/content/TextButton.qml deleted file mode 100644 index f26d775f2c..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/content/TextButton.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: container - - property alias text: label.text - - signal clicked - - width: label.width + 20; height: label.height + 6 - smooth: true - radius: 10 - - gradient: Gradient { - GradientStop { id: gradientStop; position: 0.0; color: palette.light } - GradientStop { position: 1.0; color: palette.button } - } - - SystemPalette { id: palette } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: { container.clicked() } - } - - Text { - id: label - anchors.centerIn: parent - } - - states: State { - name: "pressed" - when: mouseArea.pressed - PropertyChanges { target: gradientStop; color: palette.dark } - } -} - diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/arrow-down.png b/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/arrow-down.png deleted file mode 100644 index 29d1d4439a139c662aecca94b6f43a465cfb9cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0j z)Xz`TU>wKswOeUBH_Vo3LZ*V4p&U4v;LVFDq!ObUNJtQHC_UYOy}c$4_Z z287Mpy&>Gkk3$;%;XTGD)-SARcb^V+y#l_lys$a@k{nD+qgKLE+C6xLudGK{sd70w zcE71nDjtqr6rQslcH!s21HbzIZLG4Ku(F%O+U^xp_O4>4nBl-LJ{^?W2788E7ww3c$dW3qz>Ki(HSZqJlD~5#;x#SD}gQ7 zgv0(;bxhbL9Yezjn5K`uZiTiRwq2=|ckJ6DkxX7Tsy45p8>IMse%D zf;Vqf6vh<#P(J!fv{R}3IKcTOvuzkL=(>--JPth;j^KP+u2DCF7oBg1O2Gjh4p2raNh0iv$(l~TMx4kdC6q9nEA|`**D{}k#dX8|6LB>7#;)I^Ped=4Hzs5}YJfl=IMqVOwV3TOn<`fg+FtutHTOl+p4ItW@S@UCRT$s#e2Vdg=lo5D}~>p3$197_jRp z=YhPc7Gm8z$3=Kf7AcnG)$Gyx5pjP)J5;=W_SftyqWmZ>V+N`!8lA3I}LdVVyM axbX+reAIe(fQ}9T0000R5;6h zl}l(-K@^6Q=FtdACA#^NDs^{Lp)6)L zgDB5eX;UdG_4H6F7*yIgXmIAu0!5NyOCtSU7G=!;6%|3j{gliox-!pOK?G(o&X({YLK$5)lC7F{VZbo703UCXA=&? zO>Nu>w#%A8Rp;5oKacEBBT*BGX+{#I_yE%2i8f!~SeeejbP6SvLH5VQ-~o6A-hwe1 z-+)oOG3-#N-p|7H3rxph%DcJ`E`ihFDtIo2X&L#)9#wa!-__Ey=>18UreVqnx(m*O z14e_~1JA$~|`2HhU^Ra!WRl)GgiU zYU$BXh#q3R4$gpm?mF#|Br$YH!gK>%1c$VCx82fBJaI+hxwpFb)g=^Dbv{zQc<7+k z9t8>W67osVx3S=)K2n#oseNr$I`ov*vgsc2h}xyrpv>h+JHeJUF8ZjWkj` zH1UE>PMpf&iLCQ!iioCJ)~Hi?YjvJaK8_pg59Au!plIt&?SDO~mzDzYD;xj-002ov JPDHLkV1h`%ho%4k diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/minus-sign.png b/examples/declarative/modelviews/listview/dynamiclist/qml/content/pics/minus-sign.png deleted file mode 100644 index d6f233d7399c4c07c6c66775f7806acac84b1870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6P60k4u0Wb3;FYqWamwl0TmSYg zzPEV)f9L4=uDMg50*&A=3GxeOV9U{Bm1EIh)b!)dNY8G|=4l2>MR>Y6hE&9zJ@3ia zpuppBkxMsqLg3#2p{{ow4y^sCTR&@AtNcZ-!c0XiUIF(fS@*p4-Mvkxubuwr)McGB zHm7G5zmh%w<-tAQYwQ=f{_Q#i|$63?4Gdn(WDhGy5?S*zvKV>UH^L*-tUX z$Jv{I&ffC7bM{5Qj4e}Ezbj}vVjnSc;_|19_y1onFfAQuu24ykUoZnB3o9G9teS?7 zt9NpGMrLu#@0UVzfU@^IT^vIy;%X<}%xf{=arHKHYQL~@ZfotgwYUG*$MH^!I&%2V z@)sJL`rl4pesV%`$+ja*^=&3!b{Hmgs`72G$lh?~sgSmhV3T|L)#5pvnp5W$R3F&x zq^-&N)%9FO2FOm@bA*rKR&a{^p(h(SexKRzobg)f!S5Tb z0(ReeejodN_$Ob%pPGvI-{X5McZ=;}w|{;sE!Zmj;a8K;+WTSWrcUlO+qsq1zw`F> zL$~g{I69@}|MDjqpAy@zuKLv`b1gzCeQUnq?;S;@b8|k;l-+S#KOj|nW)fHH0-#SB NJYD@<);T3K0RYVY#HauO diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/dynamiclist.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/dynamiclist.qml deleted file mode 100644 index f25f0fab23..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/dynamiclist.qml +++ /dev/null @@ -1,203 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ -import QtQuick 1.0 -import "content" - -// This example shows how items can be dynamically added to and removed from -// a ListModel, and how these list modifications can be animated. - -Rectangle { - id: container - width: 500; height: 400 - color: "#343434" - - // The model: - ListModel { - id: fruitModel - - ListElement { - name: "Apple"; cost: 2.45 - attributes: [ - ListElement { description: "Core" }, - ListElement { description: "Deciduous" } - ] - } - ListElement { - name: "Banana"; cost: 1.95 - attributes: [ - ListElement { description: "Tropical" }, - ListElement { description: "Seedless" } - ] - } - ListElement { - name: "Cumquat"; cost: 3.25 - attributes: [ - ListElement { description: "Citrus" } - ] - } - ListElement { - name: "Durian"; cost: 9.95 - attributes: [ - ListElement { description: "Tropical" }, - ListElement { description: "Smelly" } - ] - } - } - - // The delegate for each fruit in the model: - Component { - id: listDelegate - - Item { - id: delegateItem - width: listView.width; height: 55 - clip: true - - Row { - anchors.verticalCenter: parent.verticalCenter - spacing: 10 - - Column { - Image { - source: "content/pics/arrow-up.png" - MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index, index-1, 1) } - } - Image { source: "content/pics/arrow-down.png" - MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index, index+1, 1) } - } - } - - Column { - anchors.verticalCenter: parent.verticalCenter - - Text { - text: name - font.pixelSize: 15 - color: "white" - } - Row { - spacing: 5 - Repeater { - model: attributes - Text { text: description; color: "White" } - } - } - } - } - - Row { - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - spacing: 10 - - PressAndHoldButton { - anchors.verticalCenter: parent.verticalCenter - source: "content/pics/plus-sign.png" - onClicked: fruitModel.setProperty(index, "cost", cost + 0.25) - } - - Text { - id: costText - anchors.verticalCenter: parent.verticalCenter - text: '$' + Number(cost).toFixed(2) - font.pixelSize: 15 - color: "white" - font.bold: true - } - - PressAndHoldButton { - anchors.verticalCenter: parent.verticalCenter - source: "content/pics/minus-sign.png" - onClicked: fruitModel.setProperty(index, "cost", Math.max(0,cost-0.25)) - } - - Image { - source: "content/pics/list-delete.png" - MouseArea { anchors.fill:parent; onClicked: fruitModel.remove(index) } - } - } - - // Animate adding and removing of items: - - ListView.onAdd: SequentialAnimation { - PropertyAction { target: delegateItem; property: "height"; value: 0 } - NumberAnimation { target: delegateItem; property: "height"; to: 55; duration: 250; easing.type: Easing.InOutQuad } - } - - ListView.onRemove: SequentialAnimation { - PropertyAction { target: delegateItem; property: "ListView.delayRemove"; value: true } - NumberAnimation { target: delegateItem; property: "height"; to: 0; duration: 250; easing.type: Easing.InOutQuad } - - // Make sure delayRemove is set back to false so that the item can be destroyed - PropertyAction { target: delegateItem; property: "ListView.delayRemove"; value: false } - } - } - } - - // The view: - ListView { - id: listView - anchors.fill: parent; anchors.margins: 20 - model: fruitModel - delegate: listDelegate - } - - Row { - anchors { left: parent.left; bottom: parent.bottom; margins: 20 } - spacing: 10 - - TextButton { - text: "Add an item" - onClicked: { - fruitModel.append({ - "name": "Pizza Margarita", - "cost": 5.95, - "attributes": [{"description": "Cheese"}, {"description": "Tomato"}] - }) - } - } - - TextButton { - text: "Remove all items" - onClicked: fruitModel.clear() - } - } -} - diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/expandingdelegates.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/expandingdelegates.qml deleted file mode 100644 index bd3d3a9cd2..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/expandingdelegates.qml +++ /dev/null @@ -1,202 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" - -// This example illustrates expanding a list item to show a more detailed view. - -Rectangle { - id: page - width: 400; height: 240 - color: "black" - - // Delegate for the recipes. This delegate has two modes: - // 1. List mode (default), which just shows the picture and title of the recipe. - // 2. Details mode, which also shows the ingredients and method. - Component { - id: recipeDelegate - - Item { - id: recipe - - // Create a property to contain the visibility of the details. - // We can bind multiple element's opacity to this one property, - // rather than having a "PropertyChanges" line for each element we - // want to fade. - property real detailsOpacity : 0 - - width: listView.width - height: 70 - - // A simple rounded rectangle for the background - Rectangle { - id: background - x: 2; y: 2; width: parent.width - x*2; height: parent.height - y*2 - color: "ivory" - border.color: "orange" - radius: 5 - } - - // This mouse region covers the entire delegate. - // When clicked it changes mode to 'Details'. If we are already - // in Details mode, then no change will happen. - MouseArea { - anchors.fill: parent - onClicked: recipe.state = 'Details'; - } - - // Lay out the page: picture, title and ingredients at the top, and method at the - // bottom. Note that elements that should not be visible in the list - // mode have their opacity set to recipe.detailsOpacity. - Row { - id: topLayout - x: 10; y: 10; height: recipeImage.height; width: parent.width - spacing: 10 - - Image { - id: recipeImage - width: 50; height: 50 - source: picture - } - - Column { - width: background.width - recipeImage.width - 20; height: recipeImage.height - spacing: 5 - - Text { - text: title - font.bold: true; font.pointSize: 16 - } - - Text { - text: "Ingredients" - font.pointSize: 12; font.bold: true - opacity: recipe.detailsOpacity - } - - Text { - text: ingredients - wrapMode: Text.WordWrap - width: parent.width - opacity: recipe.detailsOpacity - } - } - } - - Item { - id: details - x: 10; width: parent.width - 20 - anchors { top: topLayout.bottom; topMargin: 10; bottom: parent.bottom; bottomMargin: 10 } - opacity: recipe.detailsOpacity - - Text { - id: methodTitle - anchors.top: parent.top - text: "Method" - font.pointSize: 12; font.bold: true - } - - Flickable { - id: flick - width: parent.width - anchors { top: methodTitle.bottom; bottom: parent.bottom } - contentHeight: methodText.height - clip: true - - Text { id: methodText; text: method; wrapMode: Text.WordWrap; width: details.width } - } - - Image { - anchors { right: flick.right; top: flick.top } - source: "content/pics/moreUp.png" - opacity: flick.atYBeginning ? 0 : 1 - } - - Image { - anchors { right: flick.right; bottom: flick.bottom } - source: "content/pics/moreDown.png" - opacity: flick.atYEnd ? 0 : 1 - } - } - - // A button to close the detailed view, i.e. set the state back to default (''). - TextButton { - y: 10 - anchors { right: background.right; rightMargin: 10 } - opacity: recipe.detailsOpacity - text: "Close" - - onClicked: recipe.state = ''; - } - - states: State { - name: "Details" - - PropertyChanges { target: background; color: "white" } - PropertyChanges { target: recipeImage; width: 130; height: 130 } // Make picture bigger - PropertyChanges { target: recipe; detailsOpacity: 1; x: 0 } // Make details visible - PropertyChanges { target: recipe; height: listView.height } // Fill the entire list area with the detailed view - - // Move the list so that this item is at the top. - PropertyChanges { target: recipe.ListView.view; explicit: true; contentY: recipe.y } - - // Disallow flicking while we're in detailed view - PropertyChanges { target: recipe.ListView.view; interactive: false } - } - - transitions: Transition { - // Make the state changes smooth - ParallelAnimation { - ColorAnimation { property: "color"; duration: 500 } - NumberAnimation { duration: 300; properties: "detailsOpacity,x,contentY,height,width" } - } - } - } - } - - // The actual list - ListView { - id: listView - anchors.fill: parent - model: RecipesModel {} - delegate: recipeDelegate - } -} diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/highlight.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/highlight.qml deleted file mode 100644 index 249c73b3a0..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/highlight.qml +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// This example shows how to create your own highlight delegate for a ListView -// that uses a SpringAnimation to provide custom movement when the -// highlight bar is moved between items. - -import QtQuick 1.0 -import "content" - -Rectangle { - width: 200; height: 300 - - // Define a delegate component. A component will be - // instantiated for each visible item in the list. - Component { - id: petDelegate - Item { - id: wrapper - width: 200; height: 55 - Column { - Text { text: 'Name: ' + name } - Text { text: 'Type: ' + type } - Text { text: 'Age: ' + age } - } - // indent the item if it is the current item - states: State { - name: "Current" - when: wrapper.ListView.isCurrentItem - PropertyChanges { target: wrapper; x: 20 } - } - transitions: Transition { - NumberAnimation { properties: "x"; duration: 200 } - } - } - } - - // Define a highlight with customised movement between items. - Component { - id: highlightBar - Rectangle { - width: 200; height: 50 - color: "#FFFF88" - y: listView.currentItem.y; - Behavior on y { SpringAnimation { spring: 2; damping: 0.1 } } - } - } - - ListView { - id: listView - width: 200; height: parent.height - - model: PetsModel {} - delegate: petDelegate - focus: true - - // Set the highlight delegate. Note we must also set highlightFollowsCurrentItem - // to false so the highlight delegate can control how the highlight is moved. - highlight: highlightBar - highlightFollowsCurrentItem: false - } -} diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/highlightranges.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/highlightranges.qml deleted file mode 100644 index 58d37a3787..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/highlightranges.qml +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" - -Rectangle { - id: root - property int current: 0 - width: 600; height: 300 - - // This example shows the same model in three different ListView items, - // with different highlight ranges. The highlight ranges are set by the - // preferredHighlightBegin and preferredHighlightEnd properties in ListView. - // - // The first ListView does not set a highlight range, so its currentItem - // can move freely within the visible area. If it moves outside the - // visible area, the view is automatically scrolled to keep the current - // item visible. - // - // The second ListView sets a highlight range which attempts to keep the - // current item within the the bounds of the range. However, - // items will not scroll beyond the beginning or end of the view, - // forcing the highlight to move outside the range at the ends. - // - // The third ListView sets the highlightRangeMode to StrictlyEnforceRange - // and sets a range smaller than the height of an item. This - // forces the current item to change when the view is flicked, - // since the highlight is unable to move. - // - // All ListViews bind their currentIndex to the root.current property. - // The first ListView sets root.current whenever its currentIndex changes - // due to keyboard interaction. - // Flicking the third ListView with the mouse also changes root.current. - - ListView { - id: list1 - width: 200; height: parent.height - model: PetsModel {} - delegate: petDelegate - - highlight: Rectangle { color: "lightsteelblue" } - currentIndex: root.current - onCurrentIndexChanged: root.current = currentIndex - focus: true - } - - ListView { - id: list2 - x: list1.width - width: 200; height: parent.height - model: PetsModel {} - delegate: petDelegate - - highlight: Rectangle { color: "yellow" } - currentIndex: root.current - preferredHighlightBegin: 80; preferredHighlightEnd: 220 - highlightRangeMode: ListView.ApplyRange - } - - ListView { - id: list3 - x: list1.width + list2.width - width: 200; height: parent.height - model: PetsModel {} - delegate: petDelegate - - highlight: Rectangle { color: "yellow" } - currentIndex: root.current - onCurrentIndexChanged: root.current = currentIndex - preferredHighlightBegin: 125; preferredHighlightEnd: 125 - highlightRangeMode: ListView.StrictlyEnforceRange - } - - // The delegate for each list - Component { - id: petDelegate - Column { - width: 200 - Text { text: 'Name: ' + name } - Text { text: 'Type: ' + type } - Text { text: 'Age: ' + age } - } - } -} diff --git a/examples/declarative/modelviews/listview/dynamiclist/qml/sections.qml b/examples/declarative/modelviews/listview/dynamiclist/qml/sections.qml deleted file mode 100644 index 32488998a2..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qml/sections.qml +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// This example shows how a ListView can be separated into sections using -// the ListView.section attached property. - -import QtQuick 1.0 - -//! [0] -Rectangle { - id: container - width: 200 - height: 250 - - ListModel { - id: animalsModel - ListElement { name: "Parrot"; size: "Small" } - ListElement { name: "Guinea pig"; size: "Small" } - ListElement { name: "Dog"; size: "Medium" } - ListElement { name: "Cat"; size: "Medium" } - ListElement { name: "Elephant"; size: "Large" } - } - - // The delegate for each section header - Component { - id: sectionHeading - Rectangle { - width: container.width - height: childrenRect.height - color: "lightsteelblue" - - Text { - text: section - font.bold: true - } - } - } - - ListView { - anchors.fill: parent - model: animalsModel - delegate: Text { text: name } - - section.property: "size" - section.criteria: ViewSection.FullString - section.delegate: sectionHeading - } -} -//! [0] - diff --git a/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/listview/dynamiclist/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/listview/expandingdelegates.qml b/examples/declarative/modelviews/listview/expandingdelegates.qml index d961aba1ff..4bb42a1644 100644 --- a/examples/declarative/modelviews/listview/expandingdelegates.qml +++ b/examples/declarative/modelviews/listview/expandingdelegates.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" // This example illustrates expanding a list item to show a more detailed view. diff --git a/examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.desktop b/examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.desktop deleted file mode 100644 index 6113e0004e..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=expandingdelegates -Exec=/opt/usr/bin/expandingdelegates -Icon=expandingdelegates -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.png b/examples/declarative/modelviews/listview/expandingdelegates/expandingdelegates.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/modelviews/listview/expandingdelegates/main.cpp b/examples/declarative/modelviews/listview/expandingdelegates/main.cpp deleted file mode 100644 index b411dff2ec..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/expandingdelegates.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/PetsModel.qml b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/PetsModel.qml deleted file mode 100644 index 5220763813..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/PetsModel.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - name: "Polly" - type: "Parrot" - age: 12 - size: "Small" - } - ListElement { - name: "Penny" - type: "Turtle" - age: 4 - size: "Small" - } - ListElement { - name: "Warren" - type: "Rabbit" - age: 2 - size: "Small" - } - ListElement { - name: "Spot" - type: "Dog" - age: 9 - size: "Medium" - } - ListElement { - name: "Schrödinger" - type: "Cat" - age: 2 - size: "Medium" - } - ListElement { - name: "Joey" - type: "Kangaroo" - age: 1 - size: "Medium" - } - ListElement { - name: "Kimba" - type: "Bunny" - age: 65 - size: "Large" - } - ListElement { - name: "Rover" - type: "Dog" - age: 5 - size: "Large" - } - ListElement { - name: "Tiny" - type: "Elephant" - age: 15 - size: "Large" - } -} diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/PressAndHoldButton.qml b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/PressAndHoldButton.qml deleted file mode 100644 index d6808a49c3..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/PressAndHoldButton.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - id: container - - property int repeatDelay: 300 - property int repeatDuration: 75 - property bool pressed: false - - signal clicked - - scale: pressed ? 0.9 : 1 - - function release() { - autoRepeatClicks.stop() - container.pressed = false - } - - SequentialAnimation on pressed { - id: autoRepeatClicks - running: false - - PropertyAction { target: container; property: "pressed"; value: true } - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDelay } - - SequentialAnimation { - loops: Animation.Infinite - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDuration } - } - } - - MouseArea { - anchors.fill: parent - - onPressed: autoRepeatClicks.start() - onReleased: container.release() - onCanceled: container.release() - } -} - diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/RecipesModel.qml b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/RecipesModel.qml deleted file mode 100644 index 6056b90382..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/RecipesModel.qml +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - title: "Pancakes" - picture: "content/pics/pancakes.jpg" - ingredients: " -
    -
  • 1 cup (150g) self-raising flour -
  • 1 tbs caster sugar -
  • 3/4 cup (185ml) milk -
  • 1 egg -
- " - method: " -
    -
  1. Sift flour and sugar together into a bowl. Add a pinch of salt. -
  2. Beat milk and egg together, then add to dry ingredients. Beat until smooth. -
  3. Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. -
  4. Turn over and cook other side until golden. -
- " - } - ListElement { - title: "Fruit Salad" - picture: "content/pics/fruit-salad.jpg" - ingredients: "* Seasonal Fruit" - method: "* Chop fruit and place in a bowl." - } - ListElement { - title: "Vegetable Soup" - picture: "content/pics/vegetable-soup.jpg" - ingredients: " -
    -
  • 1 onion -
  • 1 turnip -
  • 1 potato -
  • 1 carrot -
  • 1 head of celery -
  • 1 1/2 litres of water -
- " - method: " -
    -
  1. Chop vegetables. -
  2. Boil in water until vegetables soften. -
  3. Season with salt and pepper to taste. -
- " - } - ListElement { - title: "Hamburger" - picture: "content/pics/hamburger.jpg" - ingredients: " -
    -
  • 500g minced beef -
  • Seasoning -
  • lettuce, tomato, onion, cheese -
  • 1 hamburger bun for each burger -
- " - method: " -
    -
  1. Mix the beef, together with seasoning, in a food processor. -
  2. Shape the beef into burgers. -
  3. Grill the burgers for about 5 mins on each side (until cooked through) -
  4. Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. -
- " - } - ListElement { - title: "Lemonade" - picture: "content/pics/lemonade.jpg" - ingredients: " -
    -
  • 1 cup Lemon Juice -
  • 1 cup Sugar -
  • 6 Cups of Water (2 cups warm water, 4 cups cold water) -
- " - method: " -
    -
  1. Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. -
  2. Pour in lemon juice, stir again, and add 4 cups of cold water. -
  3. Chill or serve over ice cubes. -
- " - } -} diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/TextButton.qml b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/TextButton.qml deleted file mode 100644 index f26d775f2c..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/TextButton.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: container - - property alias text: label.text - - signal clicked - - width: label.width + 20; height: label.height + 6 - smooth: true - radius: 10 - - gradient: Gradient { - GradientStop { id: gradientStop; position: 0.0; color: palette.light } - GradientStop { position: 1.0; color: palette.button } - } - - SystemPalette { id: palette } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: { container.clicked() } - } - - Text { - id: label - anchors.centerIn: parent - } - - states: State { - name: "pressed" - when: mouseArea.pressed - PropertyChanges { target: gradientStop; color: palette.dark } - } -} - diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/arrow-down.png b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/arrow-down.png deleted file mode 100644 index 29d1d4439a139c662aecca94b6f43a465cfb9cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 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
    Xa0J+Cqb@y0X@UA1qxbVygysgL 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

    FZF`jvSR<4M^u{n>eZ4w{*(QWa@(hp~>) z;}xi9k7xHuaSGuaId=0Iv~xcEh{g;#B0ZqoAL$P^T2)Y67wJx3o~#RVnP~{5j==Ze z52v}0^VypxyRG78*+*w-X1<%^1E*N#G7;p2WtNGZqV{--+%^s-_FdN}Mu_2sh$t0! z5Evzyb#jC$+0oN_^<~ALG%#bF%rVg%J0d@FnYl}*f@s8@#tuYu*wqs~XO#V1Ux=~r z^CMsL{b8N{&&cNn(EEv0_)T{Zg&?WzQ47XMrODMvyns11Luw)oFIwFQe_Ho^auj$v zQm@V@U`27VmiD&tpK_&;X9wq8x%UCsw;0c^sjKV7>DGUKg00?>nch`q)lT_5Yhn27 zeJQ;mB)H!Y!E4pTB!!mwPX}rqRlg`#y-|r38z?gNcp%kY7@_Pf#(P}Y8;RiOslIOu zefP}AU#Z|O1HQavM=k$lmIUc6@2m;Pso&yT2u2s^dn(7&F`wg>)MK~iVrRw2qGlZx zCpq|aLt3CStWZs0(-_Y#_sHf^m&zIYm9St{+>;fBR7dhL;|u*H&b#_9S}rqRoefb2 zEd{IGjy;iAMi|Wcjtwsy`EZks1pSXf5v~#96wEr`;&QAtc}?$CPdTxnEx@8{Ss@*} z7%DwVPxwq)zPJR02bHj|Dn^1Sk52wng&7$99YlIUt-i)}_%s-~^_6`y%X`fo&(ylN zkQqH7|9}kTUNlvcX5-T4Hw1gqqmL$2V!qfNiETw_zc_z@hI2#bs|l z1cob=-2l#=b)>p;^{yx2CqtRip>6|p%b!4c)p}kCSiF*AMzvD~A0@k^e2tEGJ!T<= zGkn!6vxZi__VVZe5-Yq#lh57xMg2-h`}*~5E~#RPy8(!wvE~L~jMW5H5KlHxR9Z<9 z(*CN;_NF+|c&HWCatkbbUp)A0H-%>F$sva9`oo4FO-9ve!o;{#d1+!uR7QoPe4Bfm z240;?{TfP9`I9ujTVyd=!E{(*#nSygKX%D>zBDzLxQ?x;_N88L?>FCt{~nWmoi3-A%+dc8^B)rfz?cd!41IIenRT|hM9B8BnkNwG5es?p0pP^kC z;8-rRnzX8I&$G(0c67|Oh`f)E9&*(WVER0B_(dYw9`!tJEE(s8f>`4+=@*wQbQfSs z*G<}w8x{Fu58?_$nLSs<;85wUY^`6lj1{>xIaH zDd*CBuY}F>Q`Fwc+}3^xsA337ck)_%Gb(?(ioWIdRJb%G@1n*#EK zYReB^oMPNe-W#;u{sha0Qf4DOvtWuH@w552Tmp%Nc`f$r8T60d+8amlU*3X2-$UWW TjHpMXLJ%Uz{||!d&CLG-28JV1 diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/lemonade.jpg b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/lemonade.jpg deleted file mode 100644 index db445c9ac876ccfb959d8e3c0219e89a1cb2aafd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6645 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 diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/list-delete.png b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/list-delete.png deleted file mode 100644 index df2a147d246ef62d628d73db36b0b24af98a2ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)R5;6h zl}l(-K@^6Q=FtdACA#^NDs^{Lp)6)L zgDB5eX;UdG_4H6F7*yIgXmIAu0!5NyOCtSU7G=!;6%|3j{gliox-!pOK?G(o&X({YLK$5)lC7F{VZbo703UCXA=&? zO>Nu>w#%A8Rp;5oKacEBBT*BGX+{#I_yE%2i8f!~SeeejbP6SvLH5VQ-~o6A-hwe1 z-+)oOG3-#N-p|7H3rxph%DcJ`E`ihFDtIo2X&L#)9#wa!-__Ey=>18UreVqnx(m*O z14e_~1JA$~|`2HhU^Ra!WRl)GgiU zYU$BXh#q3R4$gpm?mF#|Br$YH!gK>%1c$VCx82fBJaI+hxwpFb)g=^Dbv{zQc<7+k z9t8>W67osVx3S=)K2n#oseNr$I`ov*vgsc2h}xyrpv>h+JHeJUF8ZjWkj` zH1UE>PMpf&iLCQ!iioCJ)~Hi?YjvJaK8_pg59Au!plIt&?SDO~mzDzYD;xj-002ov JPDHLkV1h`%ho%4k diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/minus-sign.png b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/minus-sign.png deleted file mode 100644 index d6f233d7399c4c07c6c66775f7806acac84b1870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6P60k4u0Wb3;FYqWamwl0TmSYg zzPEV)f9L4=uDMg50*&A=3GxeOV9U{Bm1EIh)b!)dNY8G|=4l2>MR>Y6hE&9zJ@3ia zpuppBkxMsqLg3#2p{{ow4y^sCTR&@AtNcZ-!c0XiUIF(fS@*p4-Mvkxubuwr)McGB zHm7G5zmh%w<-tAQYwQ=f{_Q#1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr*h!Q?HqR018Q#xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~MKgx;TbNTux3{AeNAlknp4bh#UKVNeKyw z85dYLe3aa%k>K*&_>m!J9*44?cEJw8^_?w@3@_9;nLjU4H38~p@O1TaS?83{1OTR# BJd^+c diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/moreUp.png b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/moreUp.png deleted file mode 100644 index fefb9c9098a4550c504c900edb15808788812e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr-)N5C6Th1`0`*xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~P6ex;TbNTux3<5dPyXo^WJwgW&8%|08@- tQxbsSP&$*(oQV^dQYLTM**~%I6;S;)cJ@c9k@`Tb44$rjF6*2UngHSdJrV!_ diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/pancakes.jpg b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/pancakes.jpg deleted file mode 100644 index 60c439638e4d183e483a18542fcb2ee6443051bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9163 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 diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/plus-sign.png b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/plus-sign.png deleted file mode 100644 index 40df1134f8472f399adfa5c8c66c50a98d3bacc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6y#YQUu0Wa$(6{&=P?uNAhRG|R zPhIi|$63?4Gdn(WDhGy5?S*zvKV>UH^L*-tUX z$Jv{I&ffC7bM{5Qj4e}Ezbj}vVjnSc;_|19_y1onFfAQuu24ykUoZnB3o9G9teS?7 zt9NpGMrLu#@0UVzfU@^IT^vIy;%X<}%xf{=arHKHYQL~@ZfotgwYUG*$MH^!I&%2V z@)sJL`rl4pesV%`$+ja*^=&3!b{Hmgs`72G$lh?~sgSmhV3T|L)#5pvnp5W$R3F&x zq^-&N)%9FO2FOm@bA*rKR&a{^p(h(SexKRzobg)f!S5Tb z0(ReeejodN_$Ob%pPGvI-{X5McZ=;}w|{;sE!Zmj;a8K;+WTSWrcUlO+qsq1zw`F> zL$~g{I69@}|MDjqpAy@zuKLv`b1gzCeQUnq?;S;@b8|k;l-+S#KOj|nW)fHH0-#SB NJYD@<);T3K0RYVY#HauO diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/vegetable-soup.jpg b/examples/declarative/modelviews/listview/expandingdelegates/qml/content/pics/vegetable-soup.jpg deleted file mode 100644 index 9dce33204181c919fd2dcd83bb0df18f456cca52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8639 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 -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/README b/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/README deleted file mode 100644 index 1ceed78db4..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/README +++ /dev/null @@ -1,6 +0,0 @@ -The Debian Package expandingdelegates ----------------------------- - -Comments regarding the Package - - -- Daniel Molkentin Thu, 18 Nov 2010 17:28:38 +0100 diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/changelog b/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/changelog deleted file mode 100644 index 5161d7d624..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/changelog +++ /dev/null @@ -1,5 +0,0 @@ -expandingdelegates (0.0.1) unstable; urgency=low - - * Initial Release. - - -- Daniel Molkentin Thu, 18 Nov 2010 17:28:38 +0100 diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/compat b/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/compat deleted file mode 100644 index 7f8f011eb7..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/control b/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/control deleted file mode 100644 index 6993cea518..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: expandingdelegates -Section: user/hidden -Priority: optional -Maintainer: Daniel Molkentin -Build-Depends: debhelper (>= 5), libqt4-dev -Standards-Version: 3.7.3 -Homepage: - -Package: expandingdelegates -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: - diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/copyright b/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/copyright deleted file mode 100644 index 6185298041..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/copyright +++ /dev/null @@ -1,40 +0,0 @@ -This package was debianized by Daniel Molkentin on -Thu, 18 Nov 2010 17:28:38 +0100. - -It was downloaded from - -Upstream Author(s): - - - - -Copyright: - - - - -License: - - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. - -The Debian packaging is (C) 2010, Daniel Molkentin and -is licensed under the GPL, see above. - - -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. diff --git a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/rules b/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/rules deleted file mode 100755 index 96213efd2b..0000000000 --- a/examples/declarative/modelviews/listview/expandingdelegates/qtc_packaging/debian_fremantle/rules +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - - - - - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - - touch configure-stamp - - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #docbook-to-man debian/expandingdelegates.sgml > expandingdelegates.1 - - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - $(MAKE) clean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/expandingdelegates. - $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/expandingdelegates install - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs - dh_installdocs - dh_installexamples -# dh_install -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - # dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb - # dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/examples/declarative/modelviews/listview/highlight.qml b/examples/declarative/modelviews/listview/highlight.qml index e9e269f6e4..6b049bd788 100644 --- a/examples/declarative/modelviews/listview/highlight.qml +++ b/examples/declarative/modelviews/listview/highlight.qml @@ -42,7 +42,7 @@ // that uses a SpringAnimation to provide custom movement when the // highlight bar is moved between items. -import QtQuick 1.0 +import QtQuick 2.0 import "content" Rectangle { diff --git a/examples/declarative/modelviews/listview/highlight/highlight.desktop b/examples/declarative/modelviews/listview/highlight/highlight.desktop deleted file mode 100644 index 5348e40e9c..0000000000 --- a/examples/declarative/modelviews/listview/highlight/highlight.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=highlight -Exec=/opt/usr/bin/highlight -Icon=highlight -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/listview/highlight/highlight.png b/examples/declarative/modelviews/listview/highlight/highlight.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/modelviews/listview/highlight/main.cpp b/examples/declarative/modelviews/listview/highlight/main.cpp deleted file mode 100644 index 7b8cdf2119..0000000000 --- a/examples/declarative/modelviews/listview/highlight/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockPortrait); - viewer.setMainQmlFile(QLatin1String("qml/qml/highlight.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/PetsModel.qml b/examples/declarative/modelviews/listview/highlight/qml/content/PetsModel.qml deleted file mode 100644 index 5220763813..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qml/content/PetsModel.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - name: "Polly" - type: "Parrot" - age: 12 - size: "Small" - } - ListElement { - name: "Penny" - type: "Turtle" - age: 4 - size: "Small" - } - ListElement { - name: "Warren" - type: "Rabbit" - age: 2 - size: "Small" - } - ListElement { - name: "Spot" - type: "Dog" - age: 9 - size: "Medium" - } - ListElement { - name: "Schrödinger" - type: "Cat" - age: 2 - size: "Medium" - } - ListElement { - name: "Joey" - type: "Kangaroo" - age: 1 - size: "Medium" - } - ListElement { - name: "Kimba" - type: "Bunny" - age: 65 - size: "Large" - } - ListElement { - name: "Rover" - type: "Dog" - age: 5 - size: "Large" - } - ListElement { - name: "Tiny" - type: "Elephant" - age: 15 - size: "Large" - } -} diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/PressAndHoldButton.qml b/examples/declarative/modelviews/listview/highlight/qml/content/PressAndHoldButton.qml deleted file mode 100644 index d6808a49c3..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qml/content/PressAndHoldButton.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - id: container - - property int repeatDelay: 300 - property int repeatDuration: 75 - property bool pressed: false - - signal clicked - - scale: pressed ? 0.9 : 1 - - function release() { - autoRepeatClicks.stop() - container.pressed = false - } - - SequentialAnimation on pressed { - id: autoRepeatClicks - running: false - - PropertyAction { target: container; property: "pressed"; value: true } - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDelay } - - SequentialAnimation { - loops: Animation.Infinite - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDuration } - } - } - - MouseArea { - anchors.fill: parent - - onPressed: autoRepeatClicks.start() - onReleased: container.release() - onCanceled: container.release() - } -} - diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/RecipesModel.qml b/examples/declarative/modelviews/listview/highlight/qml/content/RecipesModel.qml deleted file mode 100644 index 6056b90382..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qml/content/RecipesModel.qml +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - title: "Pancakes" - picture: "content/pics/pancakes.jpg" - ingredients: " -

      -
    • 1 cup (150g) self-raising flour -
    • 1 tbs caster sugar -
    • 3/4 cup (185ml) milk -
    • 1 egg -
    - " - method: " -
      -
    1. Sift flour and sugar together into a bowl. Add a pinch of salt. -
    2. Beat milk and egg together, then add to dry ingredients. Beat until smooth. -
    3. Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. -
    4. Turn over and cook other side until golden. -
    - " - } - ListElement { - title: "Fruit Salad" - picture: "content/pics/fruit-salad.jpg" - ingredients: "* Seasonal Fruit" - method: "* Chop fruit and place in a bowl." - } - ListElement { - title: "Vegetable Soup" - picture: "content/pics/vegetable-soup.jpg" - ingredients: " -
      -
    • 1 onion -
    • 1 turnip -
    • 1 potato -
    • 1 carrot -
    • 1 head of celery -
    • 1 1/2 litres of water -
    - " - method: " -
      -
    1. Chop vegetables. -
    2. Boil in water until vegetables soften. -
    3. Season with salt and pepper to taste. -
    - " - } - ListElement { - title: "Hamburger" - picture: "content/pics/hamburger.jpg" - ingredients: " -
      -
    • 500g minced beef -
    • Seasoning -
    • lettuce, tomato, onion, cheese -
    • 1 hamburger bun for each burger -
    - " - method: " -
      -
    1. Mix the beef, together with seasoning, in a food processor. -
    2. Shape the beef into burgers. -
    3. Grill the burgers for about 5 mins on each side (until cooked through) -
    4. Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. -
    - " - } - ListElement { - title: "Lemonade" - picture: "content/pics/lemonade.jpg" - ingredients: " -
      -
    • 1 cup Lemon Juice -
    • 1 cup Sugar -
    • 6 Cups of Water (2 cups warm water, 4 cups cold water) -
    - " - method: " -
      -
    1. Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. -
    2. Pour in lemon juice, stir again, and add 4 cups of cold water. -
    3. Chill or serve over ice cubes. -
    - " - } -} diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/TextButton.qml b/examples/declarative/modelviews/listview/highlight/qml/content/TextButton.qml deleted file mode 100644 index f26d775f2c..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qml/content/TextButton.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: container - - property alias text: label.text - - signal clicked - - width: label.width + 20; height: label.height + 6 - smooth: true - radius: 10 - - gradient: Gradient { - GradientStop { id: gradientStop; position: 0.0; color: palette.light } - GradientStop { position: 1.0; color: palette.button } - } - - SystemPalette { id: palette } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: { container.clicked() } - } - - Text { - id: label - anchors.centerIn: parent - } - - states: State { - name: "pressed" - when: mouseArea.pressed - PropertyChanges { target: gradientStop; color: palette.dark } - } -} - diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/pics/arrow-down.png b/examples/declarative/modelviews/listview/highlight/qml/content/pics/arrow-down.png deleted file mode 100644 index 29d1d4439a139c662aecca94b6f43a465cfb9cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 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
      Xa0J+Cqb@y0X@UA1qxbVygysgL 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

      FZF`jvSR<4M^u{n>eZ4w{*(QWa@(hp~>) z;}xi9k7xHuaSGuaId=0Iv~xcEh{g;#B0ZqoAL$P^T2)Y67wJx3o~#RVnP~{5j==Ze z52v}0^VypxyRG78*+*w-X1<%^1E*N#G7;p2WtNGZqV{--+%^s-_FdN}Mu_2sh$t0! z5Evzyb#jC$+0oN_^<~ALG%#bF%rVg%J0d@FnYl}*f@s8@#tuYu*wqs~XO#V1Ux=~r z^CMsL{b8N{&&cNn(EEv0_)T{Zg&?WzQ47XMrODMvyns11Luw)oFIwFQe_Ho^auj$v zQm@V@U`27VmiD&tpK_&;X9wq8x%UCsw;0c^sjKV7>DGUKg00?>nch`q)lT_5Yhn27 zeJQ;mB)H!Y!E4pTB!!mwPX}rqRlg`#y-|r38z?gNcp%kY7@_Pf#(P}Y8;RiOslIOu zefP}AU#Z|O1HQavM=k$lmIUc6@2m;Pso&yT2u2s^dn(7&F`wg>)MK~iVrRw2qGlZx zCpq|aLt3CStWZs0(-_Y#_sHf^m&zIYm9St{+>;fBR7dhL;|u*H&b#_9S}rqRoefb2 zEd{IGjy;iAMi|Wcjtwsy`EZks1pSXf5v~#96wEr`;&QAtc}?$CPdTxnEx@8{Ss@*} z7%DwVPxwq)zPJR02bHj|Dn^1Sk52wng&7$99YlIUt-i)}_%s-~^_6`y%X`fo&(ylN zkQqH7|9}kTUNlvcX5-T4Hw1gqqmL$2V!qfNiETw_zc_z@hI2#bs|l z1cob=-2l#=b)>p;^{yx2CqtRip>6|p%b!4c)p}kCSiF*AMzvD~A0@k^e2tEGJ!T<= zGkn!6vxZi__VVZe5-Yq#lh57xMg2-h`}*~5E~#RPy8(!wvE~L~jMW5H5KlHxR9Z<9 z(*CN;_NF+|c&HWCatkbbUp)A0H-%>F$sva9`oo4FO-9ve!o;{#d1+!uR7QoPe4Bfm z240;?{TfP9`I9ujTVyd=!E{(*#nSygKX%D>zBDzLxQ?x;_N88L?>FCt{~nWmoi3-A%+dc8^B)rfz?cd!41IIenRT|hM9B8BnkNwG5es?p0pP^kC z;8-rRnzX8I&$G(0c67|Oh`f)E9&*(WVER0B_(dYw9`!tJEE(s8f>`4+=@*wQbQfSs z*G<}w8x{Fu58?_$nLSs<;85wUY^`6lj1{>xIaH zDd*CBuY}F>Q`Fwc+}3^xsA337ck)_%Gb(?(ioWIdRJb%G@1n*#EK zYReB^oMPNe-W#;u{sha0Qf4DOvtWuH@w552Tmp%Nc`f$r8T60d+8amlU*3X2-$UWW TjHpMXLJ%Uz{||!d&CLG-28JV1 diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/pics/lemonade.jpg b/examples/declarative/modelviews/listview/highlight/qml/content/pics/lemonade.jpg deleted file mode 100644 index db445c9ac876ccfb959d8e3c0219e89a1cb2aafd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6645 zcmbW5cT^MI*YAfeMUY+uq7*^8Ql&nkfXV}i5JHa#h=37MkQP9s2QW%iq$nK%gdS?> zpaLRYKmtiXMl7doq*rYpMd{|(a|$7o<@0wm5u#$K>ay@o{oWm{xtqmfYZ^Tr}qIy zZYG|KSFSVjTDq`E`0`zic>C#$q+xX@|Gg2ClFw+P{N?ND*!aZc)Q{;IJb}2lw7jzVYmL0~dv|aD zfO7cfA1*q8;lE@3C)xkT#eK>}e<}+j%RgLn^Z}>Nz|F{X@d`7~bxRf(UtWo;5oh=e z-+rp@WR+CCN8*3*Y=lifN)0bf{s-;9k^SF+z54$m`%kd{#We$PFwmWf$G{C307ps) z*^l%HxysU#Uw^JXE65uOP>qE zF5~3SO-b>?k6hMyD9?a>`=V^0QcuiNXFJEfnoeC#@oVQ2V{AmvnFPzy4;h8{!`wa9 zmzH{LCcj@ywkv!ZFG80**#8n(Ou08TjMHq!QYOgszdL5&Xi$V2dtt0yvdo3Gse~Af z&e&V|TJvjxyOKz;*M$)u*TK_%_6@jr=?P4pQkLk_*Mv-D&$ck!c-&(Y%Q-u1w@SW( z@Zt9o*p#@{fsZbbIeut>r2)z;KeFbzsd5ybg=20ij2vl?B})%VF*i>ti7yqrZ8qW) zo=%yj&!U?GGTX_5wq(v+qMjxm(*0r9f>YPtcHG|#{CLy`6B+bc_CgZ&FWb^JEl2KQ zD2ReC30&#MNsLsqnpHXm)+ov?dS^;a*^u)cgYFp3p_l++MvtK+q**!hZ2(@|ckIeX z`tdav>-#K82*Y1LnmW-`@CUU+1N^s+_+^BicZOgvnpB37P5q0WGmky)esA|^gZbG; zylB1*gZWnZyJNl)`!75VOT!Suh2ZDIIRZn#;Vh1UpIR-S{QfnmA#%s@=YUAWvH;{F z_~V6HEmFoTaq;m zV8m#r^}IZW*IPoB(>?00Xo)_QISvG>mH?9lyZ{?eZw6hpVg6Ioum<_k6;aVFPwg%H@iIhbUqYw>-VBQ;gZ4j>O%S%B>oBFw%uD(oB!8!dxvo3c z7lnNd=P>%*N|rj2Bs)#nWPm3`7iqw(UaWXe=59C#T!G?)&yKx8(vR?z2%U~j)@?r^ zNBB&>)Hfv^QuvGzxg@Z-D7!cG$Gn1XWZ^F6|HwT(mWHdWu|7`t#$ z^S0zIu}-ALR=Z`~2`M za^K9FVuYVNkI(HIaK|=d>Kdx+uR7x_E=?#N6s7&30YL}iq0!Ih>v= z;Cip?c-bYQaaNh#6WoCLugeZY+17bK6)-8Lf2drVln-PFlN3TQ{3gi?#~y-`8k5q- zWlI<3mK8ktCNi^115my#!f9X?)y$a*bsE4)btbho^CyjGf)dKVLOu7VUYhvAo`Z%& zOM-Ze!&~1oIq14U?9h}We0D`@x=1?$uCc%IL8{)nq>w4R*_DyJi8v$@#L(TQB{?(z zUwD!q`2AYOk@t4n*;DE@b@#I2d{ zMOmr$W-eFow`uC#xr!2jrq-hhrb{KawA?Qp$H1-KM|8esk&Bs`2wQSU0IsXF(=zZ z9jLqq;{vyiDk*C)YF?T+Sg^s z_31zT7l<_AAzyksS^c<8X|`mfRiHH2aO^U}&bz61ff)Qdl0m<6l)XDT5pGuT!)d*U zAg^b?{msFZ;pS`#0GMxIAFWrLkI#fgg~P(n*`n`xh zT7=0kG9Y0nA&}FE5#P&yEv3l0Go4}mcpAV=NsDj@gw{$xjL2P~ zmp~DjTcxPLux==(YAk8g&e;TeDUI2>YW-!9)&-*OlnGhBYZ9wL;>6%h`&b2vJ*4Oj zRhODTl0@tz+kAA;aOc^86JF(5?cA4eSHZOMU%!-MD;%o7C|BjH41?dAlY&LF{Lq4e zT6o{x^ouj|D`bB}T zv|_xns4Z24v^oDu|Dtnff&;1fI8$0K!0SZ^0q1bKjnhA5cr83TbFE+N_c8BZQ(@|G zaN{`D0VZ9Ukbiq=*v*zO-&o6X5-cwAa81i1qcF_-^2)Q`$D)zYr_9X2EWLXu0wUs`B=z=tC9HH?9>MC4-q>bL2< zWtYs~Ikq>R5-yhC2v#b$pmVpm%Ys8c7zy`;#tPb8#a5_qr3CS0PY%&#>9`g=GitIp z-B9u~3RZW>PokIB?ZIjIdk>l$nj_r7Z~TSs8|xgO4VFXRqr{H+jWvlnjyVtv2Q^+6zv~opX+@f z+eJ>BdOsdEjMXM-#^`geiJ;?JVfX|^iyrN?EsT2n#79pTRm|7u8y-)=_l&QyUPwd` zvGj0X3KVY;UENLK;yDy)8`@mj>@Bk!mW)Xba2K|gPj0br-jnH5j>+XbnJc2mcjj=8 zek3!u8KjAIkOiRLXuIWTL+T&RvxkX#s>~KC4K8iVR1yINX{X zQ?{X=86k4DY4!#j5Q&Y$0PnAV!e^Vs{T(W#u`7cos+4IMG50l=Vd}I9vv8PN{%$n= zy3hJteNXZwx_gBrRNWORPP$){ty7j`a0me{VoHFX)75zKXBg>H-8za-tva%NC{uKu z8^y;WMO_gy4=ZTmo(r4ScocC@QL;~Z#!k|C}~Os9W>ya z35MlRWKU%6LFkbYpEbw7W(WCxeYHSd$67KQ)shn6vl58FsVCTscEijbP6R90eby)X zcl7JB?Q6?(n2V&#rIt)45v3m@60@LJf9_bYQZSwEe02u(3O4zWYA!x2oZUt2sM0M- zh1cvR5}0eEJla#KaAmSm5{YOMi9dLqZos~7^Y>Dv(yTypj$_JmzLlk?(~OI+xWuaT ziU}5-$LzhC{Zy%Dr(+rr-D(|Q?H{W6s`aCv9nnBxU@T?@;2<=bnR6v-GkvNeLtgqp z<1(#1mYc_<5^t>^uheDTZxS;U4Tf~B1Tkx1g#_)c~K z6G#5p7)HMf+>R?7xzF*_C+v^RPxvR)&5S2a;|ly@ZoAB_=y1@#2%U61T5f~u^F;s6 zFL!R`RYCGW-q`HcFO*rnFgUsNvX0JS4r*bJ{^;%qVSM-afth-o#?EJ0WW~5|mWeEf zG3R`S{=_%R+ELd$=bjJdI?TU<(hYg(@R#6K91bv-ObTDh3R-*vEO=u&GW`g})(ZRajNrvYblxk@~FodUaicch0C{B64i`IdFgsHQa} z{P2IEo$KiKN8RJFCOouV+fpr`GURCzr&4#nwCjVVy;Mb>gtgn;tgaXu-j1XJf_oid zPM|K-IUkFkQn7nC4k4^0+<-{?#(a_MvZhGI5z_HXo5f-pN{{Shu%9sHRO9wmZONzj zJu8T^GqD}J-x8(+KQnfRxFLQn{nyk;K|?Bt8jOvd?Yd)tn-Kc(=L8{JL}$cz_um|< zdD8p!F`S>!&Z)^_Oa?ENp%1JX``4SXZ_ruo9t(c+uc0D!0*BV#zFueA_vVLQ7?e$k z>p3TcB4SpW!D1HM7x&eJt97kVo-?+Qn;1HA!<)Wk8E;PzA5#t?gT(Mi<@M6m06~O2 z$cU_jM1B5lKNsC(BRBc`@@w#gg{0yfy=I%j@jP}<4?Ri4ev&Ynez`bGDXFNN)Ze$c z_&$FMZs?xvt`n8CER~xcVuOxVeA^C#iHxd)&15>y8*AsfScd9H)OYO^^duI6&N`7*Yc|=;UYMmYkD(|J zwg$8oTAls!X@L8&d@di__{Qs%8mQBkmC)D2-j3WE53W{oS#7V%Mek+Vtkyi28ZPLPrN8a|$X<(O#H8%CYt5&A>U!0`+N%KCgCcKd~i8jMR3xbnff< z=|Wx9PY}yvCkC+WCopr>qwz(q{o~J*OANWaNNu-vcW_+|md(Ruz&h%dYuxA_u-+78PNs1zZhD5 zc{_IsW@I$P93fs>gp|0wVIgk1l^ERj6FKmfa?cw?-fG{b0XOb>eIBW^kGf;q{q};G zz3SA?!U=PAt5Z39$Qk0;NA2j1O2)f=-J+4dRsFyR=+vIm`q9Mj=ch`q$!4RP0sTX% zw++`BUHwuF+%0jf+r58YU|jIZmk5Lzolrw6sH)6uR`3BH+}Zi-bD!#HO9ih{pptoM z**9f>J3;2ZT`oemjCGXTt;YAtk#Y0wXJt3C?8n6ofy)ph+^Qj5Bx+0h2 zhxa)*Y}^sPlsSAH7dztziqrnG9zvAw&b=#e`YKNknRvP?p~)5yEO>`FwuMhO%{uN) zx+TjJ`lG*yZXX4$vVI)Kcz#95`}pD3!co@g;loD#Zk8q}IDhx}Z*M=nKL}ZLnaaN{ z{y&0{(X$Zqlab>OaLfAV(p8v73mArbiw5+YLTaY;$jaT^fnyya+tHV@W-CkGrE3NS z15yX|A$`VAe`tOFcI7Y8j7X|QI03}wDfq|ijbBssD_7lqHdEsQ;^{f*I#`)+6)TA} zO51Ju@iDuIliUGF1+bZ4+hvT{lK%n+ku`fkjD8*KV-w;ip0f6G?17Y#KwC8?*!V~KfvY`&SmSg2BPp8bD7@AzdS#xLi zM-LaTIGGm`wqr7*7>;iA>hm@x1u;7rGtcfyHa-Z!T15r29r&$J=%8ox7 z>oIzDVg2u-^dtpN{+?O=g6vIs6s(D;FWp5Ijrm_{N|&Dyy*P7pT|8@V7;S&LoDV{v zH77&j{GYqc_Ddbe%^9GN{6y>pN-Uv0abHlJjbea5f2g2rJu|P;SMXGTiI!9*s(kIffHagJrkapU@XB#gzts(5|8S=y zJJ0-dQ04vkt|2+B&hjrI_MQRsoaB{1+xm%Y!Bz^J=_ uTZbc9Eh3J3I=xQgMFj55!Ye6+?6`!4EEp^b0IN*;2w5QSzd8eL`ab~gaP&n0 diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/pics/list-delete.png b/examples/declarative/modelviews/listview/highlight/qml/content/pics/list-delete.png deleted file mode 100644 index df2a147d246ef62d628d73db36b0b24af98a2ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)R5;6h zl}l(-K@^6Q=FtdACA#^NDs^{Lp)6)L zgDB5eX;UdG_4H6F7*yIgXmIAu0!5NyOCtSU7G=!;6%|3j{gliox-!pOK?G(o&X({YLK$5)lC7F{VZbo703UCXA=&? zO>Nu>w#%A8Rp;5oKacEBBT*BGX+{#I_yE%2i8f!~SeeejbP6SvLH5VQ-~o6A-hwe1 z-+)oOG3-#N-p|7H3rxph%DcJ`E`ihFDtIo2X&L#)9#wa!-__Ey=>18UreVqnx(m*O z14e_~1JA$~|`2HhU^Ra!WRl)GgiU zYU$BXh#q3R4$gpm?mF#|Br$YH!gK>%1c$VCx82fBJaI+hxwpFb)g=^Dbv{zQc<7+k z9t8>W67osVx3S=)K2n#oseNr$I`ov*vgsc2h}xyrpv>h+JHeJUF8ZjWkj` zH1UE>PMpf&iLCQ!iioCJ)~Hi?YjvJaK8_pg59Au!plIt&?SDO~mzDzYD;xj-002ov JPDHLkV1h`%ho%4k diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/pics/minus-sign.png b/examples/declarative/modelviews/listview/highlight/qml/content/pics/minus-sign.png deleted file mode 100644 index d6f233d7399c4c07c6c66775f7806acac84b1870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6P60k4u0Wb3;FYqWamwl0TmSYg zzPEV)f9L4=uDMg50*&A=3GxeOV9U{Bm1EIh)b!)dNY8G|=4l2>MR>Y6hE&9zJ@3ia zpuppBkxMsqLg3#2p{{ow4y^sCTR&@AtNcZ-!c0XiUIF(fS@*p4-Mvkxubuwr)McGB zHm7G5zmh%w<-tAQYwQ=f{_Q#1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr*h!Q?HqR018Q#xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~MKgx;TbNTux3{AeNAlknp4bh#UKVNeKyw z85dYLe3aa%k>K*&_>m!J9*44?cEJw8^_?w@3@_9;nLjU4H38~p@O1TaS?83{1OTR# BJd^+c diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/pics/moreUp.png b/examples/declarative/modelviews/listview/highlight/qml/content/pics/moreUp.png deleted file mode 100644 index fefb9c9098a4550c504c900edb15808788812e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr-)N5C6Th1`0`*xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~P6ex;TbNTux3<5dPyXo^WJwgW&8%|08@- tQxbsSP&$*(oQV^dQYLTM**~%I6;S;)cJ@c9k@`Tb44$rjF6*2UngHSdJrV!_ diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/pics/pancakes.jpg b/examples/declarative/modelviews/listview/highlight/qml/content/pics/pancakes.jpg deleted file mode 100644 index 60c439638e4d183e483a18542fcb2ee6443051bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9163 zcmb7JRZtwjvR#4`B)Bi`?hxErNN{&|cPD6YSTrO^aCccW!8Jf|TP(=p?s~cPs$RX{ zcc!L4rl(K${LIvxeqDUs0DMrC1IYp4;NSoXZv*hU2_TU5wX+5QK7R%<0{{S&xA}(G z7XYrbyOo)zl_jN*ou@6OJm|CP>k2>`fC!I(fB=v9W)Kk(k&w|*kl%py{yi!>HWm&J zHWoHEE&&-KE*=R!HZ~Cz5eYdt1qB5zAvG;Ekd_Qc0sJos+*>Fz5;7(V3MLQ_8xQ#Z z#%nhK8wJn=Xo82M2E4t!^78< z+F=;IWm+{z(^Jw#Sl%9>14(pXQ(x`7L0{1gFr6!`o`EFRCa!ZgP8%U+$^KBXn>2gS zB#jfp)Xw@fL1g8JKViU?xTZO}pR#E9xwU!7R2H)}G%9d^es?IT<5BfT2PQXij=Jin zh73eGJ8H*rn#=MGlI{5;0x8AWxG|au?Qp08H;&r?#?1X0g=mDbRib=@?`S*@PunN=lXEL8aW(we86<(H#yp zD>u`H=x_gpS~Yfp1w9DGbepQO$TwGqk~nX^iJVmVoY2-Ugb)kpL$&L);Q={EP|@dC z0C4th3ieAF`)LNXAdT%bY0@E3MpRdHFuH`4UXbF}vd;O_Q- z^{=6TzqJZ~pTs7Wc=zYHThna~lD2Y#9>W{i z)g%yy$9ruh2Z3MQI8_xnQYbIBC@ZN@M1#a{t>ZbAZ5=DX zi?S%jy<|h{FHlu0Sr_k%mtUk3Ulkq;8yY&?z!3vPFUvx74Ag*$K%!)M0J;jS4O z(lTFt`ho0D=kJ|UlEnVdf%wO*iv3&!?b{ZmU#nla89c=-@ZM`pSM7jL*<8pA(_aB) z)ji09-4&vmhmT;Tt6|0&Qi1HodxD%)(YaQ?>VA&h0*S2yq7c4`e=hF$AhIx`}$9@>-^I5wDr$%z;lC6 zp;}&`8vjEdV8c4pc+oU}?(ZiKTI#Wd_XPzOx zMx(#YetLP#J0^4?0p@<)18BJdF^$8eN-O3?JHGjZ^VBl5nD%t{y@;%%Q7?}Z%?G$q*l2sD>w_NdS5LCJ zpAMfDeet7Jx077`stN>v_-C;&Vm6YKhuBf49wk>A#Ibh`LRPX8Du4XMW(%wBD~Kw{ zY<}~d{I24RFQWlA{c!W5y~F{*i|%P;S{hN7{r0xr-p%}YS`n3Gx?)LT8~g!_BT&=0 z=0M?NfC@Sw<)3u4Im7QRHFC+CgN5aIh<i6juz60pAa&^+^veB+E>s>i6rc z;!?w@u7GPL(bvFV_Q+y8D3;neUurEt61fCLeFbEM zZ$B^n*6(zBA~Ln%VZXeSr~k5I0E&Umr0(-(b3}}FumTtsHG|mVgbBq$7B#&)R0w2y zdPv*0#O7jxFsk60b%(jpY9wyOjb|bHE<#kYk*xISCqmFHCUnMIW})i z5#bS3mpGnGx3p@?%&(~gK@J2D=*QITaw(^vox%m^Zk-`y>YwWHI&~%OP=y4y^NJm2 zNx+d>azD*li4uVl>ys`k6genK>fhJA?C88$A0ZUIj0>L)It?5dip>kb}6i zD#?=$IVVP6yTPIf1(xi<i5W?M1NgHE5HBxpnJ-vo`yAx1hWjvNVx&_}(=IPY2LGV6?ovD7 zcGZ&3pnhmQ4%QwN0l6+-AV*G?|AgGC^$AQ8smrgyPgE&?)B5X==&Tsg{_CaE|7rEN zqZW{*wi5nEe82natpDmCweg~UH7W{Lg)e{#!6BgMw}WZL(Ly>&+SKlMrBEJ|19KFi z^cDN<3*EW(saF7IlY>H)qjf{rt!hH2!H=#iz%3fjb}P}dt*2yh=E#CFUlrAl=S(jG z<7fkiXiJ&ZX96oq96__ZVXc`D=#t7}QE9x4`o!vMRL@iy8y1J)MU9$tm#*Zpd#(w4 z8+i@vLy2P}EgHrNnheQjZcLPXeNX+!KO7hXP&f2+%LJ~}T+G1zwO0VBu|x8MQ3~8` z_pyY5)Q``0=)T~j&9_U0DmYhBZwE1Ao(p=Z0&!4?=N3#?VRjoXK8^9n;$<-~-9gW! zdNJXwaC-!Q(&+S_Ke=VEr)G!Q2%?FMh^1>>BdfF5&$`euk6Xc6HkqT~FbZnoj+n!Lo8yWtmFokv~B;w zoITPy5++$q@&E=;X%$=^Pa+a0IrIwMHkKN!m>bFzZUjd_gPSx?dAOX^# zul>W@m_wmb--5FG-QEEZ8*_d9f|sg8)((<|+T?8Gs}o8|HSYs1W%Q_3S1g=N@BBNt zW#Tbc|I*t0k}u6snL16`>%=(*xxOc}7@KdJq7k@Y>+^MDGNche;+sH3^l@;qi&vo4 zOCF$?lej=Iujb$$L!Lw*f{(fK>Av|{@@v6Lb`6RwYSYxmRpU=)J!nXxtsX!ilz{9Q_T(ljq zt^U%C()Uh~@4)jmz*gku;Zt7&IhHvjUC+`i@8f7r0P%FvbDlPFS=A;rAf~?G zSxqdMgJ{G|vDT_>Yi%N>r2g>dzJ!=mGX=6VwlwVpI7H8~X0lGV4KeIe26wAfjw}V+ z{@A6+&tI`o#BChs2R0vINYS&>dnCfVM6PuD87)>^0xm;gxr5~faVuR*2+a4pMf=s8 z|Fi=!uPWR7FM+74aRzyMb`VvlRAV1CsMC44+`YFk9}~%-ejxDi@3WbQRhdjKlchQw z@i6tT(CM0go%M;kVp_Ant5t%^FB9yDsOPm611Zp}vgWqLZRRnaEfjzd8rHw-;ffXv z^^Kh2onY&iEHX^dAm*c2fZZxJDr-}hl~mOTje){yj8w2l9?^zj!oi zT^So>-}wh({(3lAH2Zr1jpMC&ru|9Ad@oAXH0$xM{3LB^{EN|H0o2m>vY=d#hcs6J z8=7ao3@sEItLvAu7uq9~?+qS~TN+St)vX=OoydK^`M|ca0BX*V7s?w z#-nue?3Qcq38FQ8ohxT|@X&SjBwE|^(E81ToJzD7KFq|#AetoM_gx94bwl(4_P_lo z78VO6bDK$jgOJcpE3!D7mu@W!%$-i#j$_)C;AT@v@yL?39>E2byh zlfRt3*lCzV2i52mNPshG{f}#28dchS1*WIG0x9P*wf0(%6W0k<#NfC7UX)%5K7@a= z!B$lM+XvO+Iddqd{M(#$e5#=IS=yc$wL4KVr}|2W<#BG~Or8;1-E(`YbU?Yqn(xQT z6=0N3&Z%HDlq4Z?eyVGs=2#@0ZP8ZKKJncE7kyKtQi*?AhF!ovVA`2o<&Qqcdy8Mm z`pA0lC$Ov9{NN7`Q3riT>f)4vZ5Oq9bS4<8)W;(*KC361_7n`scVS8xt>q=g6a8RZ zBPCYHSAZ=-b87yd>544Mj_96OKmZx`E8z0`{isrU2d;dtoTf~y%J_kP_KU!EQ;z&B zN1{i(-p3jz7&CCA_A8#V?mM1rSIJ_&+M4kW(g!pn&zhR; zS;$(O1is=i@dgeTOrylEAktf|67w(j7FF~sU<4_2|5hE;{O#A^=LxKQ(ILpgY?o|l zbFS)2JnKD}=y~o4<*6=&StY+TijNh{hpI(m88pW1oT$w03WDuxI8wJha=H#}VxsqB!-} zi%HHn<-T@9ML#uS>*Nz%+0YA9B}>5N3tc74jH4fvf_?vyxKl{Z!X^FXYZuEw3rC4V zsvV4qO3>KXih&ZgXO}X&Ss`GkH|Co0P{FtyO_dftu|vW1jCCv#*Z&*4!YU!=H)bKl zX+VEBans09-k;8wD^lH-Cf2FSVKQMP!HaR6I~VtGV})XI-nu5s)IFXjl1pPq;<{>U z3k3Z{8BR=oBCWm^YWp`WJGoXgadE`d4N4Y*ZyWgWkW|;xAc#gYy&!|ENTY4E-G;e1 z$y^Bdq|TKT655uXK}4C0%*W)^ZOU1LMHbt1x`MvHZ$W)bh&}lZL>gmZmMl-1R4v;I z8LO&yl~334C#Vc4?Axd;>@_$M8deqBnocmdjzg6@Bp*AV9Xglr2;bIu#xK9umRFc< z|LKW9p|%!t;NL_-@p+QO(AQ^yi|8-Y{hWf3*b?yo&B!c7fPbq`(vkQp8p!QhwEkF4 zd$YE$UV|o5m3VRuXz@5bZ*M{HAV%{&1S>W)OB){KmhQ=y8xxX@)F{`O|vrFzf> z3}n%Kq>`@N%5V>O7ClhjGe&}>;A2-64fpt&OWX(54;>l|hpkv*H;&dH>FJQM3p3vG zCK&@iYxh*YC;eeTEQTiCWOI%`C?_iPTwz^FYH09D#PrATD4vl*yH)3pmaV{yGMn8#S0jIt>~< zRzV3{;fk7cJMgXK-A;6AKr=M1eQe%*l>UgS&1dDp$znv8C37LnP0g;SWI-`uOTKfu zT%1c~dx+Q1^3kh_B)n8Y9yn#k`_qj0}pnM~yeUyMDwRc)T ze%Y&Pr$q$Ske;9PjKe`<$ftL#?!!VMA^a$;q5 zGs1?$VHzpCzZ)`oLHx88VitEQt|9Z$hY!3Nm-U)M^x;zaOq}j0y!0L9#AZ7mKKiK4 zdY=4*q!@riP;8bjfQ00Y*F7cGIwkZFLc(3&V#H3X3lWd_1>nyGFT}q;9mL^#o4PaT zqp=xXxC3CZoB3WJ7Mkp;pwTDhQe3%ck7(+5dUOkWwi+JlpM40n+X#J_KQyUjPL7K0 z;mw7VEDzjhIO?lW(ggc594dLc$pdd%wTLhpX~<$3N)4e#wyAPGGOF-(;S+%a9R4d~ zy?i*gKZvqHF`R7(Uoa)hO>8oRco?B-m@01ABqs} zl;z=xSgslNL2dkJKtcYv!1Fps^bplAzPG#aGH1(n!7N-h?s(LR{J9`l8?D8jo%`Ch zRx~dq(5@bt`%<1h*Hsm$e!pZ zlmEOpPK64aDHZu3MiZ@El&a+L#GiLaDw+NlOZ`U&@${rC1HCsr7iD0m%#Ddvq=NiP zjOI4XjrLjSx$FxYZj~b!O;}O*m#5nsUexM1*6lSD%r*QrOl>+xp4t>0q0@9aIo&@o zci!;b*J91f7Y?>ZPbhIB>Hxj^l@*G|wfHB-=9I(Aqkq^mE0A%X(43#>@sDnrsw;Ha z?dIE$7&A2c6e!}az4YKTv>AEqxUTc z{~EqH5Js&3!mx7YkFUb<|0)mKve6`)bE&m$kf!-q{>*&T79AgD7zJ`I1ExmCT|qTx-B z$3B*ODG{!CW^ll*ZYn!Su@f$KrU0)2nC*hjSxB!)Q>|5e_0?NoZrc=`B zkW&1T7U)~@)W7#fd$*s3w4X0Uln#Kw&b&MIM$Ht?(rMsvV9=ZgbCB9uVyvsWG zz6UkmSfqJ%saziLI^U5F&U33_ow~UsNwSz0(B`&AJJY`IPBI;@Zfh9bRop+hiW`u5 z%I_BMeDhQea$Gc)@=?L*!!1fN;1|<40Nf|R)G~d)F+_)A-;Tm(*9{fBa9lf6y9e5C z(QYMkWrv77E_^Sp?&rV!m=>#gNLKu&FU~AbN20reekIiDe-|zv-3nZ+7jUZ3ZN*)`u@J`ggRG~&4vGOgy5jU z1Y$tJ{=!4f#!QvkH^WhH`J{Fg($H4`o7VjI1IHFu;J&9odsljdExr3=Aop*|k;kD0 ze0$@*QqSriwj|Px>#O|irDXUB7lM};L&XSnjV*f}CXITA13opw9hR-GD535F0Sj#O zRp~Q~|3zg;(gyhQ&gsRIjeB4I6QF z%Jk#hTMggeE?}|Ev|d-0b%1C$F7;G*SK!0W+nPZZG>tw#b-+a5qR2F`y;lc$b_{E) z33dbk0v2HX>Ic*qi1!Gmkg@2#gU037M{bxC?xZNN zB>W>+r?ieo5*^deyccQKj0IO2h{BI8u#TPCE($RH=mA*N$k)-U3!mn``n9x6^jchA zh1J>t|AQgr=tuMrdxIITE*+I$i8JMn3|2Oa5VXz*jK2DZX>S${XBOb;k*!t*$O5c* zIM85&6Uo9f_)lz)e89!wU;k8RRlkCQ)(GsspXQQhhZ05^O}e#aML-b;pg*{S$Xn8YR08iqv%UxSvAdAfc`wzpSix>b@bW zA^foRr|^k=iIlkCcTkk2q_}k5F6^y+`OWu?IPF|2HR7xzfwf;4SbC!wk(bkw-0_1Z z(JlUAR;Pno&J@`eQ*WE>SzKfR-UfHC;GbMPDp@kt8pB=Le8%nN7#S*FBY`1;+9gCx zv(uq=mR>&)*U8$dt2Mq-@t>iByd(BOfc9T%CA?46K~p#grZzrA)Zed6q89QjJ|-5s zXRvPEMgF*=8M`k0NW7nz`3+i>P;FB7j_#}{k=qyAf3Cq)wabXr61U|1+$|QiS8Zaf z@bgz_HEZ&zU-6c+(C{SWru4GRPM_CCabFW;t*Y+OOty_F!O(X5%*Zy;93q;RRAI#G z-M|PWleRv6QeEY=_s>pn%I{XTM9jin>0)ErfxL)QYto4x1+cF}89bc)yu4g&oJ*9l zCU%j9Ts#i7AN zGa>Dl2ma+8e7zsj2Z(2_9;XGE#yo zt+3o#5>lTOH4-NFp;-4Z|9R}(3{12{`O%0ZH9eIFC13s6;!z8zmmV!sdw zIPF^vz5%ZQy_gShgz$0ughBZE>j3ojFs21z30{Jm?)VKiIn5)4%gD#Ixy^J#3*s6( zvTx;VRk4dJhT~OV8+O0vqU7ZiH1SU*DaPZ1)iymJ$A+d0j288bsFZ%#W>Z|U+s#!| zId24~lLT?oZ->~!5awZ))usCi>K<&VaCq4wIOt`!$fIH7=*y!2MD#_+nm%#%igu^? zInFgaC|nG(;DTVOic5v@cSKS71E*~|^bI)P?X4}Q(yk>quE;w^lm{3%r~a!>_jjD5 z5!iW>+5!6?L;@^h49RS$qwI~4XWHX3+Uwq0%)8RzAeBDLH=dg2(U4S}*d-KyL$aXZ!NeqL3Dd~L+`Gk1$M`$3`zFsj7@~>!{bdbDwGr{x=*;Q_K zPs+%y=@OEifCawF%_Gj%&eK=@b^#aGl4j%L@6WkPZM&V`6qLz1(LrfCMo23f?LZL% z0j$W;FGaBB+UN(BQsPA3IOpKoF?lxLN@3kOrw!ekc(@Tj5c6c;kptvU`?-RoAGJn1 zmh3fs)45ooa|>tq7;bpdqdj#0n53_?3b8rc9*)?LYm6k5h1DTh4!Ia(){Ai?I_17# z|4OySNPRWVp05R3cOxI9c&*N@SARdvpk{x}!mE}V|F3J_%g))bBDE!~$Q`P*DN_v1 ztLC$Oq|zPgpmy|5W-hmJVRqXO`XEv8Z&T8pC*Hee8R<(hW9|lWTKqHPJ)9h%`>MPo z;h{*~<0yeE5inroSV%+ruOYjet6>Lk5b8$~wpWQt>7l2mdM~RGiS*}923>y>IK1Ih z@YB;57t{RLJ;c1m+^VX|1eb{B@5imIK=h_0=TTU1ZpJNHA`1hO(a~MET?fL9-G+t= zH~u9&^aZi402 kloJ4g_|nrpLclW{oZWEU1GaPNX%`6gvQ}@|hF+Kc10I&IUjP6A diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/pics/plus-sign.png b/examples/declarative/modelviews/listview/highlight/qml/content/pics/plus-sign.png deleted file mode 100644 index 40df1134f8472f399adfa5c8c66c50a98d3bacc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6y#YQUu0Wa$(6{&=P?uNAhRG|R zPhIi|$63?4Gdn(WDhGy5?S*zvKV>UH^L*-tUX z$Jv{I&ffC7bM{5Qj4e}Ezbj}vVjnSc;_|19_y1onFfAQuu24ykUoZnB3o9G9teS?7 zt9NpGMrLu#@0UVzfU@^IT^vIy;%X<}%xf{=arHKHYQL~@ZfotgwYUG*$MH^!I&%2V z@)sJL`rl4pesV%`$+ja*^=&3!b{Hmgs`72G$lh?~sgSmhV3T|L)#5pvnp5W$R3F&x zq^-&N)%9FO2FOm@bA*rKR&a{^p(h(SexKRzobg)f!S5Tb z0(ReeejodN_$Ob%pPGvI-{X5McZ=;}w|{;sE!Zmj;a8K;+WTSWrcUlO+qsq1zw`F> zL$~g{I69@}|MDjqpAy@zuKLv`b1gzCeQUnq?;S;@b8|k;l-+S#KOj|nW)fHH0-#SB NJYD@<);T3K0RYVY#HauO diff --git a/examples/declarative/modelviews/listview/highlight/qml/content/pics/vegetable-soup.jpg b/examples/declarative/modelviews/listview/highlight/qml/content/pics/vegetable-soup.jpg deleted file mode 100644 index 9dce33204181c919fd2dcd83bb0df18f456cca52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8639 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 -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/README b/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/README deleted file mode 100644 index 37e930ad1d..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/README +++ /dev/null @@ -1,6 +0,0 @@ -The Debian Package highlight ----------------------------- - -Comments regarding the Package - - -- Daniel Molkentin Thu, 18 Nov 2010 17:33:55 +0100 diff --git a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/changelog b/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/changelog deleted file mode 100644 index 43e669b50d..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/changelog +++ /dev/null @@ -1,5 +0,0 @@ -highlight (0.0.1) unstable; urgency=low - - * Initial Release. - - -- Daniel Molkentin Thu, 18 Nov 2010 17:33:55 +0100 diff --git a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/compat b/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/compat deleted file mode 100644 index 7f8f011eb7..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/control b/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/control deleted file mode 100644 index 0ed2ce2d00..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: highlight -Section: user/hidden -Priority: optional -Maintainer: Daniel Molkentin -Build-Depends: debhelper (>= 5), libqt4-dev -Standards-Version: 3.7.3 -Homepage: - -Package: highlight -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: - diff --git a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/copyright b/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/copyright deleted file mode 100644 index b795943e8a..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/copyright +++ /dev/null @@ -1,40 +0,0 @@ -This package was debianized by Daniel Molkentin on -Thu, 18 Nov 2010 17:33:55 +0100. - -It was downloaded from - -Upstream Author(s): - - - - -Copyright: - - - - -License: - - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. - -The Debian packaging is (C) 2010, Daniel Molkentin and -is licensed under the GPL, see above. - - -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. diff --git a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/rules b/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/rules deleted file mode 100755 index 986e3ee119..0000000000 --- a/examples/declarative/modelviews/listview/highlight/qtc_packaging/debian_fremantle/rules +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - - - - - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - - touch configure-stamp - - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #docbook-to-man debian/highlight.sgml > highlight.1 - - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - $(MAKE) clean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/highlight. - $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/highlight install - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs - dh_installdocs - dh_installexamples -# dh_install -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - # dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb - # dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/examples/declarative/modelviews/listview/highlightranges.qml b/examples/declarative/modelviews/listview/highlightranges.qml index cad40e76bf..4c5ef2364d 100644 --- a/examples/declarative/modelviews/listview/highlightranges.qml +++ b/examples/declarative/modelviews/listview/highlightranges.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" Rectangle { diff --git a/examples/declarative/modelviews/listview/highlightranges/highlightranges.desktop b/examples/declarative/modelviews/listview/highlightranges/highlightranges.desktop deleted file mode 100644 index 57200be95e..0000000000 --- a/examples/declarative/modelviews/listview/highlightranges/highlightranges.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=highlightranges -Exec=/opt/usr/bin/highlightranges -Icon=highlightranges -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/listview/highlightranges/highlightranges.png b/examples/declarative/modelviews/listview/highlightranges/highlightranges.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/modelviews/listview/highlightranges/main.cpp b/examples/declarative/modelviews/listview/highlightranges/main.cpp deleted file mode 100644 index fad8f0cfbf..0000000000 --- a/examples/declarative/modelviews/listview/highlightranges/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/highlightranges.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/PetsModel.qml b/examples/declarative/modelviews/listview/highlightranges/qml/content/PetsModel.qml deleted file mode 100644 index 5220763813..0000000000 --- a/examples/declarative/modelviews/listview/highlightranges/qml/content/PetsModel.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - name: "Polly" - type: "Parrot" - age: 12 - size: "Small" - } - ListElement { - name: "Penny" - type: "Turtle" - age: 4 - size: "Small" - } - ListElement { - name: "Warren" - type: "Rabbit" - age: 2 - size: "Small" - } - ListElement { - name: "Spot" - type: "Dog" - age: 9 - size: "Medium" - } - ListElement { - name: "Schrödinger" - type: "Cat" - age: 2 - size: "Medium" - } - ListElement { - name: "Joey" - type: "Kangaroo" - age: 1 - size: "Medium" - } - ListElement { - name: "Kimba" - type: "Bunny" - age: 65 - size: "Large" - } - ListElement { - name: "Rover" - type: "Dog" - age: 5 - size: "Large" - } - ListElement { - name: "Tiny" - type: "Elephant" - age: 15 - size: "Large" - } -} diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/PressAndHoldButton.qml b/examples/declarative/modelviews/listview/highlightranges/qml/content/PressAndHoldButton.qml deleted file mode 100644 index d6808a49c3..0000000000 --- a/examples/declarative/modelviews/listview/highlightranges/qml/content/PressAndHoldButton.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - id: container - - property int repeatDelay: 300 - property int repeatDuration: 75 - property bool pressed: false - - signal clicked - - scale: pressed ? 0.9 : 1 - - function release() { - autoRepeatClicks.stop() - container.pressed = false - } - - SequentialAnimation on pressed { - id: autoRepeatClicks - running: false - - PropertyAction { target: container; property: "pressed"; value: true } - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDelay } - - SequentialAnimation { - loops: Animation.Infinite - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDuration } - } - } - - MouseArea { - anchors.fill: parent - - onPressed: autoRepeatClicks.start() - onReleased: container.release() - onCanceled: container.release() - } -} - diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/RecipesModel.qml b/examples/declarative/modelviews/listview/highlightranges/qml/content/RecipesModel.qml deleted file mode 100644 index 6056b90382..0000000000 --- a/examples/declarative/modelviews/listview/highlightranges/qml/content/RecipesModel.qml +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - title: "Pancakes" - picture: "content/pics/pancakes.jpg" - ingredients: " -

        -
      • 1 cup (150g) self-raising flour -
      • 1 tbs caster sugar -
      • 3/4 cup (185ml) milk -
      • 1 egg -
      - " - method: " -
        -
      1. Sift flour and sugar together into a bowl. Add a pinch of salt. -
      2. Beat milk and egg together, then add to dry ingredients. Beat until smooth. -
      3. Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. -
      4. Turn over and cook other side until golden. -
      - " - } - ListElement { - title: "Fruit Salad" - picture: "content/pics/fruit-salad.jpg" - ingredients: "* Seasonal Fruit" - method: "* Chop fruit and place in a bowl." - } - ListElement { - title: "Vegetable Soup" - picture: "content/pics/vegetable-soup.jpg" - ingredients: " -
        -
      • 1 onion -
      • 1 turnip -
      • 1 potato -
      • 1 carrot -
      • 1 head of celery -
      • 1 1/2 litres of water -
      - " - method: " -
        -
      1. Chop vegetables. -
      2. Boil in water until vegetables soften. -
      3. Season with salt and pepper to taste. -
      - " - } - ListElement { - title: "Hamburger" - picture: "content/pics/hamburger.jpg" - ingredients: " -
        -
      • 500g minced beef -
      • Seasoning -
      • lettuce, tomato, onion, cheese -
      • 1 hamburger bun for each burger -
      - " - method: " -
        -
      1. Mix the beef, together with seasoning, in a food processor. -
      2. Shape the beef into burgers. -
      3. Grill the burgers for about 5 mins on each side (until cooked through) -
      4. Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. -
      - " - } - ListElement { - title: "Lemonade" - picture: "content/pics/lemonade.jpg" - ingredients: " -
        -
      • 1 cup Lemon Juice -
      • 1 cup Sugar -
      • 6 Cups of Water (2 cups warm water, 4 cups cold water) -
      - " - method: " -
        -
      1. Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. -
      2. Pour in lemon juice, stir again, and add 4 cups of cold water. -
      3. Chill or serve over ice cubes. -
      - " - } -} diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/TextButton.qml b/examples/declarative/modelviews/listview/highlightranges/qml/content/TextButton.qml deleted file mode 100644 index f26d775f2c..0000000000 --- a/examples/declarative/modelviews/listview/highlightranges/qml/content/TextButton.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: container - - property alias text: label.text - - signal clicked - - width: label.width + 20; height: label.height + 6 - smooth: true - radius: 10 - - gradient: Gradient { - GradientStop { id: gradientStop; position: 0.0; color: palette.light } - GradientStop { position: 1.0; color: palette.button } - } - - SystemPalette { id: palette } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: { container.clicked() } - } - - Text { - id: label - anchors.centerIn: parent - } - - states: State { - name: "pressed" - when: mouseArea.pressed - PropertyChanges { target: gradientStop; color: palette.dark } - } -} - diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/arrow-down.png b/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/arrow-down.png deleted file mode 100644 index 29d1d4439a139c662aecca94b6f43a465cfb9cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 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
        Xa0J+Cqb@y0X@UA1qxbVygysgL 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

        FZF`jvSR<4M^u{n>eZ4w{*(QWa@(hp~>) z;}xi9k7xHuaSGuaId=0Iv~xcEh{g;#B0ZqoAL$P^T2)Y67wJx3o~#RVnP~{5j==Ze z52v}0^VypxyRG78*+*w-X1<%^1E*N#G7;p2WtNGZqV{--+%^s-_FdN}Mu_2sh$t0! z5Evzyb#jC$+0oN_^<~ALG%#bF%rVg%J0d@FnYl}*f@s8@#tuYu*wqs~XO#V1Ux=~r z^CMsL{b8N{&&cNn(EEv0_)T{Zg&?WzQ47XMrODMvyns11Luw)oFIwFQe_Ho^auj$v zQm@V@U`27VmiD&tpK_&;X9wq8x%UCsw;0c^sjKV7>DGUKg00?>nch`q)lT_5Yhn27 zeJQ;mB)H!Y!E4pTB!!mwPX}rqRlg`#y-|r38z?gNcp%kY7@_Pf#(P}Y8;RiOslIOu zefP}AU#Z|O1HQavM=k$lmIUc6@2m;Pso&yT2u2s^dn(7&F`wg>)MK~iVrRw2qGlZx zCpq|aLt3CStWZs0(-_Y#_sHf^m&zIYm9St{+>;fBR7dhL;|u*H&b#_9S}rqRoefb2 zEd{IGjy;iAMi|Wcjtwsy`EZks1pSXf5v~#96wEr`;&QAtc}?$CPdTxnEx@8{Ss@*} z7%DwVPxwq)zPJR02bHj|Dn^1Sk52wng&7$99YlIUt-i)}_%s-~^_6`y%X`fo&(ylN zkQqH7|9}kTUNlvcX5-T4Hw1gqqmL$2V!qfNiETw_zc_z@hI2#bs|l z1cob=-2l#=b)>p;^{yx2CqtRip>6|p%b!4c)p}kCSiF*AMzvD~A0@k^e2tEGJ!T<= zGkn!6vxZi__VVZe5-Yq#lh57xMg2-h`}*~5E~#RPy8(!wvE~L~jMW5H5KlHxR9Z<9 z(*CN;_NF+|c&HWCatkbbUp)A0H-%>F$sva9`oo4FO-9ve!o;{#d1+!uR7QoPe4Bfm z240;?{TfP9`I9ujTVyd=!E{(*#nSygKX%D>zBDzLxQ?x;_N88L?>FCt{~nWmoi3-A%+dc8^B)rfz?cd!41IIenRT|hM9B8BnkNwG5es?p0pP^kC z;8-rRnzX8I&$G(0c67|Oh`f)E9&*(WVER0B_(dYw9`!tJEE(s8f>`4+=@*wQbQfSs z*G<}w8x{Fu58?_$nLSs<;85wUY^`6lj1{>xIaH zDd*CBuY}F>Q`Fwc+}3^xsA337ck)_%Gb(?(ioWIdRJb%G@1n*#EK zYReB^oMPNe-W#;u{sha0Qf4DOvtWuH@w552Tmp%Nc`f$r8T60d+8amlU*3X2-$UWW TjHpMXLJ%Uz{||!d&CLG-28JV1 diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/lemonade.jpg b/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/lemonade.jpg deleted file mode 100644 index db445c9ac876ccfb959d8e3c0219e89a1cb2aafd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6645 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 diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/list-delete.png b/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/list-delete.png deleted file mode 100644 index df2a147d246ef62d628d73db36b0b24af98a2ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)R5;6h zl}l(-K@^6Q=FtdACA#^NDs^{Lp)6)L zgDB5eX;UdG_4H6F7*yIgXmIAu0!5NyOCtSU7G=!;6%|3j{gliox-!pOK?G(o&X({YLK$5)lC7F{VZbo703UCXA=&? zO>Nu>w#%A8Rp;5oKacEBBT*BGX+{#I_yE%2i8f!~SeeejbP6SvLH5VQ-~o6A-hwe1 z-+)oOG3-#N-p|7H3rxph%DcJ`E`ihFDtIo2X&L#)9#wa!-__Ey=>18UreVqnx(m*O z14e_~1JA$~|`2HhU^Ra!WRl)GgiU zYU$BXh#q3R4$gpm?mF#|Br$YH!gK>%1c$VCx82fBJaI+hxwpFb)g=^Dbv{zQc<7+k z9t8>W67osVx3S=)K2n#oseNr$I`ov*vgsc2h}xyrpv>h+JHeJUF8ZjWkj` zH1UE>PMpf&iLCQ!iioCJ)~Hi?YjvJaK8_pg59Au!plIt&?SDO~mzDzYD;xj-002ov JPDHLkV1h`%ho%4k diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/minus-sign.png b/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/minus-sign.png deleted file mode 100644 index d6f233d7399c4c07c6c66775f7806acac84b1870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6P60k4u0Wb3;FYqWamwl0TmSYg zzPEV)f9L4=uDMg50*&A=3GxeOV9U{Bm1EIh)b!)dNY8G|=4l2>MR>Y6hE&9zJ@3ia zpuppBkxMsqLg3#2p{{ow4y^sCTR&@AtNcZ-!c0XiUIF(fS@*p4-Mvkxubuwr)McGB zHm7G5zmh%w<-tAQYwQ=f{_Q#1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr*h!Q?HqR018Q#xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~MKgx;TbNTux3{AeNAlknp4bh#UKVNeKyw z85dYLe3aa%k>K*&_>m!J9*44?cEJw8^_?w@3@_9;nLjU4H38~p@O1TaS?83{1OTR# BJd^+c diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/moreUp.png b/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/moreUp.png deleted file mode 100644 index fefb9c9098a4550c504c900edb15808788812e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr-)N5C6Th1`0`*xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~P6ex;TbNTux3<5dPyXo^WJwgW&8%|08@- tQxbsSP&$*(oQV^dQYLTM**~%I6;S;)cJ@c9k@`Tb44$rjF6*2UngHSdJrV!_ diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/pancakes.jpg b/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/pancakes.jpg deleted file mode 100644 index 60c439638e4d183e483a18542fcb2ee6443051bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9163 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 diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/plus-sign.png b/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/plus-sign.png deleted file mode 100644 index 40df1134f8472f399adfa5c8c66c50a98d3bacc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6y#YQUu0Wa$(6{&=P?uNAhRG|R zPhIi|$63?4Gdn(WDhGy5?S*zvKV>UH^L*-tUX z$Jv{I&ffC7bM{5Qj4e}Ezbj}vVjnSc;_|19_y1onFfAQuu24ykUoZnB3o9G9teS?7 zt9NpGMrLu#@0UVzfU@^IT^vIy;%X<}%xf{=arHKHYQL~@ZfotgwYUG*$MH^!I&%2V z@)sJL`rl4pesV%`$+ja*^=&3!b{Hmgs`72G$lh?~sgSmhV3T|L)#5pvnp5W$R3F&x zq^-&N)%9FO2FOm@bA*rKR&a{^p(h(SexKRzobg)f!S5Tb z0(ReeejodN_$Ob%pPGvI-{X5McZ=;}w|{;sE!Zmj;a8K;+WTSWrcUlO+qsq1zw`F> zL$~g{I69@}|MDjqpAy@zuKLv`b1gzCeQUnq?;S;@b8|k;l-+S#KOj|nW)fHH0-#SB NJYD@<);T3K0RYVY#HauO diff --git a/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/vegetable-soup.jpg b/examples/declarative/modelviews/listview/highlightranges/qml/content/pics/vegetable-soup.jpg deleted file mode 100644 index 9dce33204181c919fd2dcd83bb0df18f456cca52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8639 zcmb7pXEYpM(D$-fNwgINQ6fupQ4?*I=tQ?V(OJFs5)y*2SV0J@x7DK8Kce?lRz!{7 zdoRK3d7pFM@9*3*^JVV+&D?YEoS8Fo|L1-YK&C9OBoDyB!2u{fEWrH|fJ)96ZUX?Q zsscCw007|wKhXUwKn8#h#KXe_;y(y{e0%~B5h3V-NS{1;L07rhW~H6ZwG)00Y3mg zfH*G!xL_P080WqVKnDQe0v~RH^S|ysNIZNX0SFg|5b&T?AOqmy0D(9J56*+|LHGaw z4lWQ69}FO8;v;zaQd-lT!Yvd;$^R|^qV;Q>S->JJyK+q1ed+K>NJhuQGpFj)XJmE9 z0}w6F|26afi~s;YJRDqn0KtQf4Gh4=#lia@2LA5`99#epjQ3#Ur8NFiO$x}n1ar60 z`xyWc@Bs!41Op@i6XX+)AcDV&zV`sLw!s|urc*qxOS2tjBttTK=eN8ycf+mMRjyMJ zfs#a8C+C}wDNpF3i1HV)@cRAUI~vIpEttL&$CZ&BXgpOi1y&+EtPaa0`_)rcTOZ)W zNERyVVow}-^INQzqBneg94_vw9wHWy~_hwv0v zne21z9STOtJ!fDpWy)i`WjmAz4?Uv|gL69cQTnKaTb!CP3m%a=B>>d>Q(OJ3>T?Mu z$$gUzFPkAw_kfzMU7gf_&|}%uD_oIV!6th|ugG02TsiS()X*UQ9uQ#m;b`={gwjNG zJz`$nCFTzD7~TA@?;e0a&}SB<$x*`c7@Bz>UD4SqNfhG2_Hk>y>h9XW~wR8iN)fSKsS ziT>Hs32AS@3!(R>Ry#VQiZ1W2F0~PpC1;3&igxsFy{xzj@*Fbc8p_zLF&bd_tSzsw z^C{b=(%3RiaH3c{zMqM!6dEKLZ6uC;z0fVkg&#G~4d#6l(&QS_LOA8I@7h%zG-*4B zQ)AS74{*#JEKi=a(PP~Y2nYy#c!iXioIS>l=x-%q#UM^%#{jyxe_hnK8n;5DdqS=3 zZ{{u2CSQ5)r%FfG*JLH#x(0or-J)K9ra3)JmmBCkL&2K<*y;h6p731EQ8w@LtyQTM>W9ikbAi?Vxgi zc0f**`hNunXbmgv5=+2QvU8;Hwnyd*ub|9G0ox*&5NaCuIz((x@Kc9JdH~Kuxfi$B z`JhW^t`e{>mz0v<#Zz*Y^JANqP{M+ks`dxh;KhsbrRdkbx`OI_?Q@;C`_PEy`svrt zgcG*0c>v=0FYTJU003#$5idxgjFFdR9xZ<(chaI`od~YPt^q$S&Zo7Gp-OsT;u#6b|R3)I3bKoarQ6r z(G0JIe{NF+m$`2BWzvbZo{sY1MS31Xz|7Xb%4WMme(2x0=IN75<6-ve4Y$dhfO%xp zW7fZy1g)BBcV$Twb zB=25NZB^(kZ!y2d-@j1oA|fa<3}@&PO*|d>K7PJ1K&!t|6fLOUfoR~~D>&b2vn@#o zhr*txuU>x9KEak}KQ9GXhPCco@v@}nqXSZh(Z1(^yA^$!I z`QxN@A5F)Cf@1FX9aC>1%`=85=}(z}wP5(fSd*PsvnlsUzEICQWEYkFJ8L3j_-*fs z4=5XOyLg*`;{Z=>in#V3=#wO;6Bgz?u>7xv0#j;r7j}5C6_4d=Nn!>tWdyWioU|TpdS`# z{-Qu4!C!3H-B`VLu-mG5+XhAySbgEI#MAafW!VNUP~An@BhD50eIw>DIPHANGug26 z-Or(f-NQcd*47VD?Hf4`!x@J_l407|acoq7Ley$^!c}CCQ6G4{Jl)8lEP4B9j`=iZPDOBpDIOWAQ^3AtGB7>ONB+GRr@x*!dRz`NyD^-9G|pYj1;=Y zZ@jS7e|KKn=6WO~QCkuIbY?c(>o<)FJzRd-HocDwCv=Iyb}gT30R4!4+s;xz&d|DJ zKtBhkx1vIH5nJ|Lk=?stPFAZ=WH!HAOqE$K@^N8r_$vD`!yG-BQ#&Em+kyo(X&=%0 zl83UL!dnX>!Wk#9Ho@ zuBssV(KF{q#w8>Q!kfMr+N}J!vi4tk@8bj|sOW(e$%Q2dgC8yV(Sk}M;M~JDRY_Qd zLPLI<|K6^8wwRD_?KyIGp?!Y2QbbAd0F?d06RXF`Ez3AwTrl|2$8Bxv_#OZayme_Z zX5$E$Q9?b^xvWdKrJa_*NQ|<(5Z3J^kWKM+@Hx|62c8wnSBFrM*vRL~PhPPvYXpx< z47Z*hY&Y|0&3ii5d^00i&)S2qk)FBx{>1rbuoxS7qax#$-O?{-(i+LUX7bqgOXLCG zS>MG&1=70FXtdbSV_^A&gTA4MK=KPl|L@F!MfZhQ4_lhp8poTnUj${(vY5T%Nitjb zMMKME&12qryqW>JS3fE#3AN8d2o~7uU-VMMg;{O&gDNz$7WZ^&z>h`kwDXfl{^j6TiuAf*APvFAL#W;Sq5rgtHueG47c)BB2Z|78L zkh%xsWU-baOyE20Q5Tz?27TR%gKDr9OI($5kou_*4vMuc_p^Mzu4Yg=6FsP*jMCE> zms*B>qh3kSONjwD{y>z@1%3+*M?}XP?IERxB6QykDME@?>HIAVeZo1FfBy|%=O zM?Vth`zJ%aaVzA#TZWjTWb~~rwiOAtdQnU-&^xIAm$RHLUluzGC-9+}Jr6Dj;NqqI zQ<$I0&+O*Me>Q3JsIaaV(nI7SHLv;84fTC8!uc-ETvK_d_(?ov?(Gjoe#wnNrCn?r zB~(>aTe738^cdgtIf_8S|782>ouQ+nw_BY7$37S)qh$K6jZy_SiuLc6di;3a9&MSI z!msf>CAMi={#6B32qLWYeG09d#)K5XIQkj<%03w5ty^9drkrMwqZg%;O)3U?*;&q%I+e{T4UYEhL1bf|Ih zX}hHOw({USb@jxU8YDmY4U0aHq0GTvL2`~f6)?DSjsACyrZhFbJUSNy5+1*9+DmwM zB;SoA9B9Ru(wZV=Rq}}k4LCBFC&>SE`jz4&`Oyq#nW#@3F6g*um-=coegL8Uv zvZ3CD0z^Fl*~rk9QA$}Sz<#}OXjnzC`?MZ*exD{?lF0r0-ernIceh*8M($BTsge@X z_7|7Cn!Au;ev0?}KFvq*Pw6MI6gu9kzrOx*R884!tDp1|_+{Q$>`uUxy826ENGQu2 zu`pRPuA|+|^^pJ=gA@T}ss*QAA(Evj60jh%O&?Cu0cpCOP1BC^a*45-m&QN?YEDst z5x~jy)*g3RY?*-9x6fjU#h-)9|0GYkL$mU8Wh2VYu|+*h35~3A1JZL)>~=CzOD)I1 z7LhS~B<~+4d=Fq~GYNV-%QL`zY}jle=%8+ZLlh&4c6o)V1l$T8Tklj|ppE`Bc{>jy z|88T~ueV6%s<-KT?Vw!U@ZJO_VW4zMAB_|(+2L}l(Wya`^R2!~f5`N};@~ld?$)`< z9nM}Z5f{)q#U9crZEuZIs_p1{F$P^T^gmw(R*6DX+FUGz}?s> z9q3`t&DaP_6S0hSmF=qgyD&pgr`BZ@OKOco=UbBN{+yk{mE>s+^4e&%V^PWU7z;EH z5GH$`v0d(K7{+4z)vo`AEu;uwhyGfoGxTFwKQvYY-xwE!`qb7f1LvKy%!gb05xJ1; z@~Eq)V6;Y!i+L#RYgIU8i)+bLGRj497t;FwFl6bt2?2xNq<3n?!^WVp$jBsLqQKjl zsjBss8T8hVrnok<1mP3Yx3;siWf&8Vym%?^j>06<&sUo_umQDw;lc0YJRv5pt(^&E ztA&G!8qb@n$>wf2naQ#a*uU{RQj^9>mnLsXA+<`BBtCdg&`@)LQg$*v6zuiajYSrB zsOjv@`QrxG%C#7?S*9ruR%39!H-}OfBcDyF!A-~I@uWL`=gn9;5UWyXlzI#uW%3H@ z!AqQy-dtvf`B|r08_UmA6YDunu)qS{#@=y$Oft!3j4V)M3&O#Rx!D;UP?Zb*)=xDV ztxiVV@R~UsGbMj3vY?{;1pJL3wX#}Py|A@yw*xQQLv}QVFB@0?JZ6OzLplhE8^~P! zaS-WSlh9(g;+Z@?hlz(?`H!CQp<8+sAh1hKVnBY7jF1wz@Ca_6^kDpI7ee z6oxMVCgeY|%WZ6AnGz%B!d4P{QpblsNb{>#B9`LykV5!!S}M#*2K+FAVEX?Q${P&3 zER@O=c&TR@AXB=i?ho5H+-}NC)JS%0N$3Q_b@6~P|i2QkZNKk{EBkr9W@bB5n#V$ujC?f{P zFWkiie9D+!oNj>PB+~i=bSBBqk*(I!IyJq`fbIx05eY^$uhQuS>1o0>9dAcu|IOTD z+!1ZRb;Fd*%xtWqjA@F0-zKQ^WIsOGoCLULoP$qf56EPx(?j&$d( zvgj?>oMbktXe+*VxcD0%3B=D(-7cuKN|~O)1>)7l5swjttVvV^ts&w2Nnndd2aoSa zOZ|Z8LOVv~XaHOKtY*9vyCp>?>@s8J7Z4KhxlUtPV~rg`%*T>7a|8L9I41TK~$0OOP7LJhx2V^LqJPu>F zs1*ll*~Lt^i?*pgFu*8rbs$h#kiKV$*cuE+=JFLl2Cbi6d@D>f4?P3B}exHh*xWn3+__zsm-^+rt@2%dUe zkc-BAk7Kqp@eaP6(8ExAsE7{bm8;92jq{AEjf^hKXT)DHjZzID6d_{RF*+K7x+U`!O_(;e1@pi?L$6VQ!oEamh)cJL!C^1pFjs%Bs+zuM@?@fMEo}Rl487aD@goX5q}_8 zVDHsCx2?ns&^fOJ2fH===L<7$w5#vg)HBQ%)Sl++ZoIjx+2(?{{E@zh5=Qg5@^@lh ztp)ya&-oVON$FlM({`^4?=Fx;;kY^E<|hj2|0En&|@g{)DMLy&mS)^sINjY+YGvmlB%PU&45QVG@OZ)ctuD7 z5e>*DbvketT1$!ltB8kb%A9S{(Y#mv!%{BK_&*{3(Y)wQ`E!}R*f?aS1mE@MLazZ= z3d2#k_Junu`|_V)zq5&Ktgeq7HTj%UfSgS|R=@Q;x+ZPQO6rA9$1&9FebZQ;24{^D zCmU07^PKZ6qV;KL;?77#J*VO9*4BoQ21ZqYH_E>bs&qDKUjl~{YH!Z@`PrwLs7!Gd zjj?QD+>;ch{i`6QrJtG${br=Tb|C$U{M<4OZlLNiE=^?~+SQ+l=X+v5l87@(xb>9t z1`6sbhIKG|ec_^Z7h#FpBq%;{ddm0SX+$2BqP|r4L+gSaY$B0{ehz6^g#EMr;G_G& zW&LD9J>e8!87nh0=&3ngI@XKY0_gTqV}!45RRWei#gq7-jKrj^37$VB|9`wifT#U5 zr=o^UcU6zis9UFM_Uu>?tf*Gu>_6qZFoQV2)y7WY)E~onO;!2RNE3Pe?8AW|`2;!j z!`fnsgBz}x7N@ms!Ju=y!lJK>XbxM&OQMZ}oKc#~ZG&fKT?9*<7*0Q@MPkKTWG$Y~ zd-2E9Jvn-Xih1NQ10=AB<~$`1G??F6eRekGb~OSSSzV!K@!wAK9ZxCJ`PIA@xdi477!bDWz_`)YbN zPV{lufALk=&;AG8{2`CZ4{@YPaa$Pgoi)MOd2@dMElU^CE`HYppA{p*zJ1j&-ocy~e-WX04gHRk#eqGYe^BQ^E|vd6U;bCXwa$bS?$xA-+$>KR&oVgC5h=cQ>WwC9HIl~d~)xZ6DXP$d&7^#WF-wacafhQlen~_oS5AvGPpKjAYFKnC{Hd=#dI^H@3lAu( zJi>&!IbqB0)ir$1LI58NJuZz3k;NcE!|7!!HLrledS4lAKh>xeo;bp9WWDsI6SRBqS}Wi;EGa;G|Y zPJc<-nCkS3Gzdsk@wBh<{qA=v<9Z7X2E2Ei5lv zaa6al%wcAS{uOYeM^F$}-9^PVBkmKXhVloaP2Wuj>zs7NL4ymQyz+SqNkre8EAShx zdk7b26lSbhJP{yw6|%qK%R(3LQ3w(KDBg zT&MTOyqyO@0oojqeKCuDy+!j^{#KbxnB?-*>PXJA>mHD+DOR`5u3}jIaVq>}WXoU= zk#rk~aqoHOF>x{C6?C<-YsA0u-0i-;DY(Rgzm} zWN4YE1{Hjdn?yu(-8wC^F^Qy81>&b^OV*8lbd~I2<-a2a#jR}gznp*E=3AHePssL( z>o4I1Z6Sr1n#ER1PEY0N*|^eEFv&?5{7OvhU~u>4h=0KLyn%vCS>EL!{kv`^P)n%1 zN)U*#AVEc2ow!Krf?v)6S*1uy9(eYB@;?P4$=%;Z(p?6)9%;XDt-&C%puRWBA$*! z4?A$V6_VC)AaRS0&xEfx(IT(r5BGKDBPn^x8W_}71ALI8(W%xE8M$yZ@9Il)hELeD zsk(CtOOLKKeKVXXiEEo4Mh$=mP%E=05xZsS9Z%NvRzo4VSuq+0D$-h9@jHP`Y2`2J zFm4Xy-Pv8=dM!1{_H{N}7!|z;p?^tx(B<~KV#xMUosRmUCx;~~vl45$BNfScM?2JWU_x5+g9ZfgM!3g!B{N7gch|Ak%PFwLB?rQ0we({mR-&%I z3VZq=N?OhZ;#kiSia7cY?B94!FWxs%Vo*aQ$K7au4{%Eok~KkPBQUlfhrNp+Ei>{< zp%~VWfYrqI>&5)+3PkcLd;O!YCA4XaB=ps&ZLX7_mR$aoJ-h(gv}DGwNaZKWgY@Fx zDPhhY%nP|b@t8GwfrE^vLAhCog`X4R7XFU>_~K!b0cx=?%Bx;k+E33>pDhST8;}{i zbl#2M&2uH;_vmA#`E@pa$>e9QB-a1IJ&r7xBsvd8I~&BUtY%hd7rAuX3$por=i+8m!NY&B!rE+-2 zry$7ejtKp->6u(#6@;>f+Zb8736Bu*jKz&9(iZ2`pFMubw(X&4&^P=_yd}5PE7c7N01w{%izO53r9Q#N?4(lW~bX?xY^Jk5qFZ;m&ZZ z89H6UV$!ONZh~lXR00MCe)iz}V_v~b$eFwn<1a(=XDUpi4Mk+@OFom`t%CWh`*+3f z0cxJd)OnwyxRVvjjLmfBm^uCmsTssws849=>GV4Wuh0A(gV2H1A1h?00&Jz#h9lg& zDoJ$Pa zI3plq3TuqgMPhF$yq-3zePxnKn&Sse=ync^myN)bsG;Jls(6IFFC#kUF>G6A1>xqQ zl&}z=LX3oe#d!{@APuFLLndC)&qI?M`hpCwqRMXNRfkokzKAZ}UNHa9le@<+HVvT- zafvVXKCw)kGM2Y`q^AW(Tkv)52-=#vWl^YEmdr?|jzxU#a62J!m?5vh)S_ -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/listview/highlightranges/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/listview/listview.qmlproject b/examples/declarative/modelviews/listview/listview.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/modelviews/listview/listview.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/modelviews/listview/sections.qml b/examples/declarative/modelviews/listview/sections.qml index 30c5a489fd..09e58be5d6 100644 --- a/examples/declarative/modelviews/listview/sections.qml +++ b/examples/declarative/modelviews/listview/sections.qml @@ -41,7 +41,7 @@ // This example shows how a ListView can be separated into sections using // the ListView.section attached property. -import QtQuick 1.0 +import QtQuick 2.0 //! [0] Rectangle { diff --git a/examples/declarative/modelviews/listview/sections/main.cpp b/examples/declarative/modelviews/listview/sections/main.cpp deleted file mode 100644 index 7b827c7046..0000000000 --- a/examples/declarative/modelviews/listview/sections/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockPortrait); - viewer.setMainQmlFile(QLatin1String("qml/qml/sections.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/listview/sections/qml/content/PetsModel.qml b/examples/declarative/modelviews/listview/sections/qml/content/PetsModel.qml deleted file mode 100644 index 5220763813..0000000000 --- a/examples/declarative/modelviews/listview/sections/qml/content/PetsModel.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - name: "Polly" - type: "Parrot" - age: 12 - size: "Small" - } - ListElement { - name: "Penny" - type: "Turtle" - age: 4 - size: "Small" - } - ListElement { - name: "Warren" - type: "Rabbit" - age: 2 - size: "Small" - } - ListElement { - name: "Spot" - type: "Dog" - age: 9 - size: "Medium" - } - ListElement { - name: "Schrödinger" - type: "Cat" - age: 2 - size: "Medium" - } - ListElement { - name: "Joey" - type: "Kangaroo" - age: 1 - size: "Medium" - } - ListElement { - name: "Kimba" - type: "Bunny" - age: 65 - size: "Large" - } - ListElement { - name: "Rover" - type: "Dog" - age: 5 - size: "Large" - } - ListElement { - name: "Tiny" - type: "Elephant" - age: 15 - size: "Large" - } -} diff --git a/examples/declarative/modelviews/listview/sections/qml/content/PressAndHoldButton.qml b/examples/declarative/modelviews/listview/sections/qml/content/PressAndHoldButton.qml deleted file mode 100644 index d6808a49c3..0000000000 --- a/examples/declarative/modelviews/listview/sections/qml/content/PressAndHoldButton.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - id: container - - property int repeatDelay: 300 - property int repeatDuration: 75 - property bool pressed: false - - signal clicked - - scale: pressed ? 0.9 : 1 - - function release() { - autoRepeatClicks.stop() - container.pressed = false - } - - SequentialAnimation on pressed { - id: autoRepeatClicks - running: false - - PropertyAction { target: container; property: "pressed"; value: true } - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDelay } - - SequentialAnimation { - loops: Animation.Infinite - ScriptAction { script: container.clicked() } - PauseAnimation { duration: repeatDuration } - } - } - - MouseArea { - anchors.fill: parent - - onPressed: autoRepeatClicks.start() - onReleased: container.release() - onCanceled: container.release() - } -} - diff --git a/examples/declarative/modelviews/listview/sections/qml/content/RecipesModel.qml b/examples/declarative/modelviews/listview/sections/qml/content/RecipesModel.qml deleted file mode 100644 index 6056b90382..0000000000 --- a/examples/declarative/modelviews/listview/sections/qml/content/RecipesModel.qml +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -ListModel { - ListElement { - title: "Pancakes" - picture: "content/pics/pancakes.jpg" - ingredients: " -

          -
        • 1 cup (150g) self-raising flour -
        • 1 tbs caster sugar -
        • 3/4 cup (185ml) milk -
        • 1 egg -
        - " - method: " -
          -
        1. Sift flour and sugar together into a bowl. Add a pinch of salt. -
        2. Beat milk and egg together, then add to dry ingredients. Beat until smooth. -
        3. Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. -
        4. Turn over and cook other side until golden. -
        - " - } - ListElement { - title: "Fruit Salad" - picture: "content/pics/fruit-salad.jpg" - ingredients: "* Seasonal Fruit" - method: "* Chop fruit and place in a bowl." - } - ListElement { - title: "Vegetable Soup" - picture: "content/pics/vegetable-soup.jpg" - ingredients: " -
          -
        • 1 onion -
        • 1 turnip -
        • 1 potato -
        • 1 carrot -
        • 1 head of celery -
        • 1 1/2 litres of water -
        - " - method: " -
          -
        1. Chop vegetables. -
        2. Boil in water until vegetables soften. -
        3. Season with salt and pepper to taste. -
        - " - } - ListElement { - title: "Hamburger" - picture: "content/pics/hamburger.jpg" - ingredients: " -
          -
        • 500g minced beef -
        • Seasoning -
        • lettuce, tomato, onion, cheese -
        • 1 hamburger bun for each burger -
        - " - method: " -
          -
        1. Mix the beef, together with seasoning, in a food processor. -
        2. Shape the beef into burgers. -
        3. Grill the burgers for about 5 mins on each side (until cooked through) -
        4. Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. -
        - " - } - ListElement { - title: "Lemonade" - picture: "content/pics/lemonade.jpg" - ingredients: " -
          -
        • 1 cup Lemon Juice -
        • 1 cup Sugar -
        • 6 Cups of Water (2 cups warm water, 4 cups cold water) -
        - " - method: " -
          -
        1. Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. -
        2. Pour in lemon juice, stir again, and add 4 cups of cold water. -
        3. Chill or serve over ice cubes. -
        - " - } -} diff --git a/examples/declarative/modelviews/listview/sections/qml/content/TextButton.qml b/examples/declarative/modelviews/listview/sections/qml/content/TextButton.qml deleted file mode 100644 index f26d775f2c..0000000000 --- a/examples/declarative/modelviews/listview/sections/qml/content/TextButton.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: container - - property alias text: label.text - - signal clicked - - width: label.width + 20; height: label.height + 6 - smooth: true - radius: 10 - - gradient: Gradient { - GradientStop { id: gradientStop; position: 0.0; color: palette.light } - GradientStop { position: 1.0; color: palette.button } - } - - SystemPalette { id: palette } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: { container.clicked() } - } - - Text { - id: label - anchors.centerIn: parent - } - - states: State { - name: "pressed" - when: mouseArea.pressed - PropertyChanges { target: gradientStop; color: palette.dark } - } -} - diff --git a/examples/declarative/modelviews/listview/sections/qml/content/pics/arrow-down.png b/examples/declarative/modelviews/listview/sections/qml/content/pics/arrow-down.png deleted file mode 100644 index 29d1d4439a139c662aecca94b6f43a465cfb9cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 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
          Xa0J+Cqb@y0X@UA1qxbVygysgL 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

          FZF`jvSR<4M^u{n>eZ4w{*(QWa@(hp~>) z;}xi9k7xHuaSGuaId=0Iv~xcEh{g;#B0ZqoAL$P^T2)Y67wJx3o~#RVnP~{5j==Ze z52v}0^VypxyRG78*+*w-X1<%^1E*N#G7;p2WtNGZqV{--+%^s-_FdN}Mu_2sh$t0! z5Evzyb#jC$+0oN_^<~ALG%#bF%rVg%J0d@FnYl}*f@s8@#tuYu*wqs~XO#V1Ux=~r z^CMsL{b8N{&&cNn(EEv0_)T{Zg&?WzQ47XMrODMvyns11Luw)oFIwFQe_Ho^auj$v zQm@V@U`27VmiD&tpK_&;X9wq8x%UCsw;0c^sjKV7>DGUKg00?>nch`q)lT_5Yhn27 zeJQ;mB)H!Y!E4pTB!!mwPX}rqRlg`#y-|r38z?gNcp%kY7@_Pf#(P}Y8;RiOslIOu zefP}AU#Z|O1HQavM=k$lmIUc6@2m;Pso&yT2u2s^dn(7&F`wg>)MK~iVrRw2qGlZx zCpq|aLt3CStWZs0(-_Y#_sHf^m&zIYm9St{+>;fBR7dhL;|u*H&b#_9S}rqRoefb2 zEd{IGjy;iAMi|Wcjtwsy`EZks1pSXf5v~#96wEr`;&QAtc}?$CPdTxnEx@8{Ss@*} z7%DwVPxwq)zPJR02bHj|Dn^1Sk52wng&7$99YlIUt-i)}_%s-~^_6`y%X`fo&(ylN zkQqH7|9}kTUNlvcX5-T4Hw1gqqmL$2V!qfNiETw_zc_z@hI2#bs|l z1cob=-2l#=b)>p;^{yx2CqtRip>6|p%b!4c)p}kCSiF*AMzvD~A0@k^e2tEGJ!T<= zGkn!6vxZi__VVZe5-Yq#lh57xMg2-h`}*~5E~#RPy8(!wvE~L~jMW5H5KlHxR9Z<9 z(*CN;_NF+|c&HWCatkbbUp)A0H-%>F$sva9`oo4FO-9ve!o;{#d1+!uR7QoPe4Bfm z240;?{TfP9`I9ujTVyd=!E{(*#nSygKX%D>zBDzLxQ?x;_N88L?>FCt{~nWmoi3-A%+dc8^B)rfz?cd!41IIenRT|hM9B8BnkNwG5es?p0pP^kC z;8-rRnzX8I&$G(0c67|Oh`f)E9&*(WVER0B_(dYw9`!tJEE(s8f>`4+=@*wQbQfSs z*G<}w8x{Fu58?_$nLSs<;85wUY^`6lj1{>xIaH zDd*CBuY}F>Q`Fwc+}3^xsA337ck)_%Gb(?(ioWIdRJb%G@1n*#EK zYReB^oMPNe-W#;u{sha0Qf4DOvtWuH@w552Tmp%Nc`f$r8T60d+8amlU*3X2-$UWW TjHpMXLJ%Uz{||!d&CLG-28JV1 diff --git a/examples/declarative/modelviews/listview/sections/qml/content/pics/lemonade.jpg b/examples/declarative/modelviews/listview/sections/qml/content/pics/lemonade.jpg deleted file mode 100644 index db445c9ac876ccfb959d8e3c0219e89a1cb2aafd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6645 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 diff --git a/examples/declarative/modelviews/listview/sections/qml/content/pics/list-delete.png b/examples/declarative/modelviews/listview/sections/qml/content/pics/list-delete.png deleted file mode 100644 index df2a147d246ef62d628d73db36b0b24af98a2ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)R5;6h zl}l(-K@^6Q=FtdACA#^NDs^{Lp)6)L zgDB5eX;UdG_4H6F7*yIgXmIAu0!5NyOCtSU7G=!;6%|3j{gliox-!pOK?G(o&X({YLK$5)lC7F{VZbo703UCXA=&? zO>Nu>w#%A8Rp;5oKacEBBT*BGX+{#I_yE%2i8f!~SeeejbP6SvLH5VQ-~o6A-hwe1 z-+)oOG3-#N-p|7H3rxph%DcJ`E`ihFDtIo2X&L#)9#wa!-__Ey=>18UreVqnx(m*O z14e_~1JA$~|`2HhU^Ra!WRl)GgiU zYU$BXh#q3R4$gpm?mF#|Br$YH!gK>%1c$VCx82fBJaI+hxwpFb)g=^Dbv{zQc<7+k z9t8>W67osVx3S=)K2n#oseNr$I`ov*vgsc2h}xyrpv>h+JHeJUF8ZjWkj` zH1UE>PMpf&iLCQ!iioCJ)~Hi?YjvJaK8_pg59Au!plIt&?SDO~mzDzYD;xj-002ov JPDHLkV1h`%ho%4k diff --git a/examples/declarative/modelviews/listview/sections/qml/content/pics/minus-sign.png b/examples/declarative/modelviews/listview/sections/qml/content/pics/minus-sign.png deleted file mode 100644 index d6f233d7399c4c07c6c66775f7806acac84b1870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6P60k4u0Wb3;FYqWamwl0TmSYg zzPEV)f9L4=uDMg50*&A=3GxeOV9U{Bm1EIh)b!)dNY8G|=4l2>MR>Y6hE&9zJ@3ia zpuppBkxMsqLg3#2p{{ow4y^sCTR&@AtNcZ-!c0XiUIF(fS@*p4-Mvkxubuwr)McGB zHm7G5zmh%w<-tAQYwQ=f{_Q#1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr*h!Q?HqR018Q#xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~MKgx;TbNTux3{AeNAlknp4bh#UKVNeKyw z85dYLe3aa%k>K*&_>m!J9*44?cEJw8^_?w@3@_9;nLjU4H38~p@O1TaS?83{1OTR# BJd^+c diff --git a/examples/declarative/modelviews/listview/sections/qml/content/pics/moreUp.png b/examples/declarative/modelviews/listview/sections/qml/content/pics/moreUp.png deleted file mode 100644 index fefb9c9098a4550c504c900edb15808788812e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr-)N5C6Th1`0`*xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~P6ex;TbNTux3<5dPyXo^WJwgW&8%|08@- tQxbsSP&$*(oQV^dQYLTM**~%I6;S;)cJ@c9k@`Tb44$rjF6*2UngHSdJrV!_ diff --git a/examples/declarative/modelviews/listview/sections/qml/content/pics/pancakes.jpg b/examples/declarative/modelviews/listview/sections/qml/content/pics/pancakes.jpg deleted file mode 100644 index 60c439638e4d183e483a18542fcb2ee6443051bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9163 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 diff --git a/examples/declarative/modelviews/listview/sections/qml/content/pics/plus-sign.png b/examples/declarative/modelviews/listview/sections/qml/content/pics/plus-sign.png deleted file mode 100644 index 40df1134f8472f399adfa5c8c66c50a98d3bacc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6y#YQUu0Wa$(6{&=P?uNAhRG|R zPhIi|$63?4Gdn(WDhGy5?S*zvKV>UH^L*-tUX z$Jv{I&ffC7bM{5Qj4e}Ezbj}vVjnSc;_|19_y1onFfAQuu24ykUoZnB3o9G9teS?7 zt9NpGMrLu#@0UVzfU@^IT^vIy;%X<}%xf{=arHKHYQL~@ZfotgwYUG*$MH^!I&%2V z@)sJL`rl4pesV%`$+ja*^=&3!b{Hmgs`72G$lh?~sgSmhV3T|L)#5pvnp5W$R3F&x zq^-&N)%9FO2FOm@bA*rKR&a{^p(h(SexKRzobg)f!S5Tb z0(ReeejodN_$Ob%pPGvI-{X5McZ=;}w|{;sE!Zmj;a8K;+WTSWrcUlO+qsq1zw`F> zL$~g{I69@}|MDjqpAy@zuKLv`b1gzCeQUnq?;S;@b8|k;l-+S#KOj|nW)fHH0-#SB NJYD@<);T3K0RYVY#HauO diff --git a/examples/declarative/modelviews/listview/sections/qml/content/pics/vegetable-soup.jpg b/examples/declarative/modelviews/listview/sections/qml/content/pics/vegetable-soup.jpg deleted file mode 100644 index 9dce33204181c919fd2dcd83bb0df18f456cca52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8639 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 -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/listview/sections/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/listview/sections/sections.desktop b/examples/declarative/modelviews/listview/sections/sections.desktop deleted file mode 100644 index c11801e623..0000000000 --- a/examples/declarative/modelviews/listview/sections/sections.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=sections -Exec=/opt/usr/bin/sections -Icon=sections -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/listview/sections/sections.png b/examples/declarative/modelviews/listview/sections/sections.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/modelviews/package/Delegate.qml b/examples/declarative/modelviews/package/Delegate.qml index 24abc5de75..ae1dffb63b 100644 --- a/examples/declarative/modelviews/package/Delegate.qml +++ b/examples/declarative/modelviews/package/Delegate.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 //![0] Package { diff --git a/examples/declarative/modelviews/package/package.qmlproject b/examples/declarative/modelviews/package/package.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/modelviews/package/package.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/modelviews/package/view.qml b/examples/declarative/modelviews/package/view.qml index 1715ba1dfd..7adbb80fc7 100644 --- a/examples/declarative/modelviews/package/view.qml +++ b/examples/declarative/modelviews/package/view.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { color: "white" diff --git a/examples/declarative/modelviews/parallax/qml/ParallaxView.qml b/examples/declarative/modelviews/parallax/content/ParallaxView.qml similarity index 99% rename from examples/declarative/modelviews/parallax/qml/ParallaxView.qml rename to examples/declarative/modelviews/parallax/content/ParallaxView.qml index 9ad636fad6..287358250a 100644 --- a/examples/declarative/modelviews/parallax/qml/ParallaxView.qml +++ b/examples/declarative/modelviews/parallax/content/ParallaxView.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: root diff --git a/examples/declarative/modelviews/parallax/qml/Smiley.qml b/examples/declarative/modelviews/parallax/content/Smiley.qml similarity index 96% rename from examples/declarative/modelviews/parallax/qml/Smiley.qml rename to examples/declarative/modelviews/parallax/content/Smiley.qml index c964f50dd9..9538a99a57 100644 --- a/examples/declarative/modelviews/parallax/qml/Smiley.qml +++ b/examples/declarative/modelviews/parallax/content/Smiley.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 // This is taken from the declarative animation/basics/property-animation.qml // example @@ -50,7 +50,7 @@ Item { Image { anchors.horizontalCenter: parent.horizontalCenter y: smiley.minHeight + 58 - source: "../pics/shadow.png" + source: "pics/shadow.png" scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight) } @@ -62,7 +62,7 @@ Item { anchors.horizontalCenter: parent.horizontalCenter y: minHeight - source: "../pics/face-smile.png" + source: "pics/face-smile.png" SequentialAnimation on y { loops: Animation.Infinite diff --git a/examples/declarative/modelviews/parallax/pics/background.jpg b/examples/declarative/modelviews/parallax/content/pics/background.jpg similarity index 100% rename from examples/declarative/modelviews/parallax/pics/background.jpg rename to examples/declarative/modelviews/parallax/content/pics/background.jpg diff --git a/examples/declarative/modelviews/parallax/pics/face-smile.png b/examples/declarative/modelviews/parallax/content/pics/face-smile.png similarity index 100% rename from examples/declarative/modelviews/parallax/pics/face-smile.png rename to examples/declarative/modelviews/parallax/content/pics/face-smile.png diff --git a/examples/declarative/modelviews/parallax/pics/home-page.svg b/examples/declarative/modelviews/parallax/content/pics/home-page.svg similarity index 100% rename from examples/declarative/modelviews/parallax/pics/home-page.svg rename to examples/declarative/modelviews/parallax/content/pics/home-page.svg diff --git a/examples/declarative/modelviews/parallax/pics/shadow.png b/examples/declarative/modelviews/parallax/content/pics/shadow.png similarity index 100% rename from examples/declarative/modelviews/parallax/pics/shadow.png rename to examples/declarative/modelviews/parallax/content/pics/shadow.png diff --git a/examples/declarative/modelviews/parallax/pics/yast-joystick.png b/examples/declarative/modelviews/parallax/content/pics/yast-joystick.png similarity index 100% rename from examples/declarative/modelviews/parallax/pics/yast-joystick.png rename to examples/declarative/modelviews/parallax/content/pics/yast-joystick.png diff --git a/examples/declarative/modelviews/parallax/pics/yast-wol.png b/examples/declarative/modelviews/parallax/content/pics/yast-wol.png similarity index 100% rename from examples/declarative/modelviews/parallax/pics/yast-wol.png rename to examples/declarative/modelviews/parallax/content/pics/yast-wol.png diff --git a/examples/declarative/modelviews/parallax/parallax.qml b/examples/declarative/modelviews/parallax/parallax.qml index 0fdc5e3345..93181c667e 100644 --- a/examples/declarative/modelviews/parallax/parallax.qml +++ b/examples/declarative/modelviews/parallax/parallax.qml @@ -38,9 +38,9 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "../../toys/clocks/content" // for loading the Clock element -import "qml" +import "content" Rectangle { width: 320; height: 480 @@ -48,22 +48,22 @@ Rectangle { ParallaxView { id: parallax anchors.fill: parent - background: "pics/background.jpg" + background: "content/pics/background.jpg" Item { - property url icon: "pics/yast-wol.png" + property url icon: "content/pics/yast-wol.png" width: 320; height: 480 Clock { anchors.centerIn: parent } } Item { - property url icon: "pics/home-page.svg" + property url icon: "content/pics/home-page.svg" width: 320; height: 480 Smiley { } } Item { - property url icon: "pics/yast-joystick.png" + property url icon: "content/pics/yast-joystick.png" width: 320; height: 480 Loader { diff --git a/examples/declarative/modelviews/parallax/parallax.qmlproject b/examples/declarative/modelviews/parallax/parallax.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/modelviews/parallax/parallax.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/modelviews/pathview-example/main.cpp b/examples/declarative/modelviews/pathview-example/main.cpp deleted file mode 100644 index 85d682d896..0000000000 --- a/examples/declarative/modelviews/pathview-example/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/pathview-example.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/pathview-example/pathviewexample.desktop b/examples/declarative/modelviews/pathview-example/pathviewexample.desktop deleted file mode 100644 index 30d29e3242..0000000000 --- a/examples/declarative/modelviews/pathview-example/pathviewexample.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=pathview-example -Exec=/opt/usr/bin/pathview-example -Icon=pathview-example -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/pathview-example/pathviewexample.png b/examples/declarative/modelviews/pathview-example/pathviewexample.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/modelviews/pathview-example/qml/pathview-example.qml b/examples/declarative/modelviews/pathview-example/qml/pathview-example.qml deleted file mode 100644 index 267c57c869..0000000000 --- a/examples/declarative/modelviews/pathview-example/qml/pathview-example.qml +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 400; height: 240 - color: "white" - - ListModel { - id: appModel - ListElement { name: "Music"; icon: "pics/AudioPlayer_48.png" } - ListElement { name: "Movies"; icon: "pics/VideoPlayer_48.png" } - ListElement { name: "Camera"; icon: "pics/Camera_48.png" } - ListElement { name: "Calendar"; icon: "pics/DateBook_48.png" } - ListElement { name: "Messaging"; icon: "pics/EMail_48.png" } - ListElement { name: "Todo List"; icon: "pics/TodoList_48.png" } - ListElement { name: "Contacts"; icon: "pics/AddressBook_48.png" } - } - - Component { - id: appDelegate - Item { - width: 100; height: 100 - scale: PathView.iconScale - - Image { - id: myIcon - y: 20; anchors.horizontalCenter: parent.horizontalCenter - source: icon - smooth: true - } - Text { - anchors { top: myIcon.bottom; horizontalCenter: parent.horizontalCenter } - text: name - smooth: true - } - - MouseArea { - anchors.fill: parent - onClicked: view.currentIndex = index - } - } - } - - Component { - id: appHighlight - Rectangle { width: 80; height: 80; color: "lightsteelblue" } - } - - PathView { - Keys.onRightPressed: if (!moving) { incrementCurrentIndex(); console.log(moving) } - Keys.onLeftPressed: if (!moving) decrementCurrentIndex() - id: view - anchors.fill: parent - highlight: appHighlight - preferredHighlightBegin: 0.5 - preferredHighlightEnd: 0.5 - focus: true - model: appModel - delegate: appDelegate - path: Path { - startX: 10 - startY: 50 - PathAttribute { name: "iconScale"; value: 0.5 } - PathQuad { x: 200; y: 150; controlX: 50; controlY: 200 } - PathAttribute { name: "iconScale"; value: 1.0 } - PathQuad { x: 390; y: 50; controlX: 350; controlY: 200 } - PathAttribute { name: "iconScale"; value: 0.5 } - } - } -} diff --git a/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/pathview-example/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/README b/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/README deleted file mode 100644 index 0d8225202e..0000000000 --- a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/README +++ /dev/null @@ -1,6 +0,0 @@ -The Debian Package pathviewexample ----------------------------- - -Comments regarding the Package - - -- Daniel Molkentin Thu, 18 Nov 2010 17:48:31 +0100 diff --git a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/changelog b/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/changelog deleted file mode 100644 index ab74121717..0000000000 --- a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/changelog +++ /dev/null @@ -1,5 +0,0 @@ -pathviewexample (0.0.1) unstable; urgency=low - - * Initial Release. - - -- Daniel Molkentin Thu, 18 Nov 2010 17:48:31 +0100 diff --git a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/compat b/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/compat deleted file mode 100644 index 7f8f011eb7..0000000000 --- a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/control b/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/control deleted file mode 100644 index c931a891f2..0000000000 --- a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: pathviewexample -Section: user/hidden -Priority: optional -Maintainer: Daniel Molkentin -Build-Depends: debhelper (>= 5), libqt4-dev -Standards-Version: 3.7.3 -Homepage: - -Package: pathviewexample -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: - diff --git a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/copyright b/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/copyright deleted file mode 100644 index f848d27ec1..0000000000 --- a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/copyright +++ /dev/null @@ -1,40 +0,0 @@ -This package was debianized by Daniel Molkentin on -Thu, 18 Nov 2010 17:48:31 +0100. - -It was downloaded from - -Upstream Author(s): - - - - -Copyright: - - - - -License: - - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. - -The Debian packaging is (C) 2010, Daniel Molkentin and -is licensed under the GPL, see above. - - -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. diff --git a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/rules b/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/rules deleted file mode 100755 index c604e5dc1f..0000000000 --- a/examples/declarative/modelviews/pathview-example/qtc_packaging/debian_fremantle/rules +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - - - - - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - - touch configure-stamp - - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #docbook-to-man debian/pathviewexample.sgml > pathviewexample.1 - - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - $(MAKE) clean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/pathviewexample. - $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/pathviewexample install - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs - dh_installdocs - dh_installexamples -# dh_install -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - # dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb - # dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/examples/declarative/modelviews/pathview/pathview-example.qml b/examples/declarative/modelviews/pathview/pathview-example.qml index bddab8fd3d..40b413f3ac 100644 --- a/examples/declarative/modelviews/pathview/pathview-example.qml +++ b/examples/declarative/modelviews/pathview/pathview-example.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { width: 400; height: 240 diff --git a/examples/declarative/modelviews/pathview/pathview.qmlproject b/examples/declarative/modelviews/pathview/pathview.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/modelviews/pathview/pathview.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/modelviews/pathview-example/qml/pics/AddressBook_48.png b/examples/declarative/modelviews/pathview/pics/AddressBook_48.png similarity index 100% rename from examples/declarative/modelviews/pathview-example/qml/pics/AddressBook_48.png rename to examples/declarative/modelviews/pathview/pics/AddressBook_48.png diff --git a/examples/declarative/modelviews/pathview-example/qml/pics/AudioPlayer_48.png b/examples/declarative/modelviews/pathview/pics/AudioPlayer_48.png similarity index 100% rename from examples/declarative/modelviews/pathview-example/qml/pics/AudioPlayer_48.png rename to examples/declarative/modelviews/pathview/pics/AudioPlayer_48.png diff --git a/examples/declarative/modelviews/pathview-example/qml/pics/Camera_48.png b/examples/declarative/modelviews/pathview/pics/Camera_48.png similarity index 100% rename from examples/declarative/modelviews/pathview-example/qml/pics/Camera_48.png rename to examples/declarative/modelviews/pathview/pics/Camera_48.png diff --git a/examples/declarative/modelviews/pathview-example/qml/pics/DateBook_48.png b/examples/declarative/modelviews/pathview/pics/DateBook_48.png similarity index 100% rename from examples/declarative/modelviews/pathview-example/qml/pics/DateBook_48.png rename to examples/declarative/modelviews/pathview/pics/DateBook_48.png diff --git a/examples/declarative/modelviews/pathview-example/qml/pics/EMail_48.png b/examples/declarative/modelviews/pathview/pics/EMail_48.png similarity index 100% rename from examples/declarative/modelviews/pathview-example/qml/pics/EMail_48.png rename to examples/declarative/modelviews/pathview/pics/EMail_48.png diff --git a/examples/declarative/modelviews/pathview-example/qml/pics/TodoList_48.png b/examples/declarative/modelviews/pathview/pics/TodoList_48.png similarity index 100% rename from examples/declarative/modelviews/pathview-example/qml/pics/TodoList_48.png rename to examples/declarative/modelviews/pathview/pics/TodoList_48.png diff --git a/examples/declarative/modelviews/pathview-example/qml/pics/VideoPlayer_48.png b/examples/declarative/modelviews/pathview/pics/VideoPlayer_48.png similarity index 100% rename from examples/declarative/modelviews/pathview-example/qml/pics/VideoPlayer_48.png rename to examples/declarative/modelviews/pathview/pics/VideoPlayer_48.png diff --git a/examples/declarative/modelviews/visualitemmodel/main.cpp b/examples/declarative/modelviews/visualitemmodel/main.cpp deleted file mode 100644 index 1b265025e6..0000000000 --- a/examples/declarative/modelviews/visualitemmodel/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/visualitemmodel.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/modelviews/visualitemmodel/qml/visualitemmodel.qml b/examples/declarative/modelviews/visualitemmodel/qml/visualitemmodel.qml deleted file mode 100644 index 15f2f1152c..0000000000 --- a/examples/declarative/modelviews/visualitemmodel/qml/visualitemmodel.qml +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// This example demonstrates placing items in a view using -// a VisualItemModel - -import QtQuick 1.0 - -Rectangle { - color: "lightgray" - width: 240 - height: 320 - - VisualItemModel { - id: itemModel - - Rectangle { - width: view.width; height: view.height - color: "#FFFEF0" - Text { text: "Page 1"; font.bold: true; anchors.centerIn: parent } - } - Rectangle { - width: view.width; height: view.height - color: "#F0FFF7" - Text { text: "Page 2"; font.bold: true; anchors.centerIn: parent } - } - Rectangle { - width: view.width; height: view.height - color: "#F4F0FF" - Text { text: "Page 3"; font.bold: true; anchors.centerIn: parent } - } - } - - ListView { - id: view - anchors { fill: parent; bottomMargin: 30 } - model: itemModel - preferredHighlightBegin: 0; preferredHighlightEnd: 0 - highlightRangeMode: ListView.StrictlyEnforceRange - orientation: ListView.Horizontal - snapMode: ListView.SnapOneItem; flickDeceleration: 2000 - } - - Rectangle { - width: 240; height: 30 - anchors { top: view.bottom; bottom: parent.bottom } - color: "gray" - - Row { - anchors.centerIn: parent - spacing: 20 - - Repeater { - model: itemModel.count - - Rectangle { - width: 5; height: 5 - radius: 3 - color: view.currentIndex == index ? "blue" : "white" - - MouseArea { - width: 20; height: 20 - anchors.centerIn: parent - onClicked: view.currentIndex = index - } - } - } - } - } -} diff --git a/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/modelviews/visualitemmodel/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/modelviews/visualitemmodel/visualitemmodel.desktop b/examples/declarative/modelviews/visualitemmodel/visualitemmodel.desktop deleted file mode 100644 index ae40ec030f..0000000000 --- a/examples/declarative/modelviews/visualitemmodel/visualitemmodel.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=visualitemmodel -Exec=/opt/usr/bin/visualitemmodel -Icon=visualitemmodel -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/modelviews/visualitemmodel/visualitemmodel.png b/examples/declarative/modelviews/visualitemmodel/visualitemmodel.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - From 5177355828774bf75a853a64303cf0137ecc429a Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Fri, 26 Aug 2011 10:31:39 +1000 Subject: [PATCH 17/68] Update text examples to QtQuick 2.0, remove obsolete files Change-Id: I7181c3d26e85459597f06bba174885ced40ffe1d Reviewed-on: http://codereview.qt.nokia.com/3618 Reviewed-by: Qt Sanity Bot Reviewed-by: Bea Lam --- .../declarative/text/fonts/availableFonts.qml | 2 +- .../availableFonts/availableFonts.desktop | 11 - .../fonts/availableFonts/availableFonts.png | Bin 3400 -> 0 bytes .../fonts/availableFonts/availableFonts.pro | 39 --- .../fonts/availableFonts/availableFonts.svg | 93 ------ .../text/fonts/availableFonts/main.cpp | 14 - .../availableFonts/qml/availableFonts.qml | 57 ---- .../text/fonts/availableFonts/qml/banner.qml | 61 ---- .../text/fonts/availableFonts/qml/fonts.qml | 104 ------- .../text/fonts/availableFonts/qml/hello.qml | 79 ----- .../qmlapplicationviewer.cpp | 157 ---------- .../qmlapplicationviewer.h | 39 --- .../qmlapplicationviewer.pri | 154 ---------- examples/declarative/text/fonts/banner.qml | 2 +- .../text/fonts/banner/banner.desktop | 11 - .../declarative/text/fonts/banner/banner.png | Bin 3400 -> 0 bytes .../declarative/text/fonts/banner/banner.pro | 39 --- .../declarative/text/fonts/banner/banner.svg | 93 ------ .../declarative/text/fonts/banner/main.cpp | 54 ---- .../text/fonts/banner/qml/availableFonts.qml | 57 ---- .../text/fonts/banner/qml/banner.qml | 61 ---- .../text/fonts/banner/qml/fonts.qml | 104 ------- .../fonts/banner/qml/fonts/tarzeau_ocr_a.ttf | Bin 24544 -> 0 bytes .../text/fonts/banner/qml/hello.qml | 79 ----- .../qmlapplicationviewer.cpp | 197 ------------ .../qmlapplicationviewer.h | 79 ----- .../qmlapplicationviewer.pri | 154 ---------- .../qml => content}/fonts/tarzeau_ocr_a.ttf | Bin examples/declarative/text/fonts/fonts.qml | 4 +- .../declarative/text/fonts/fonts.qmlproject | 16 - .../text/fonts/fonts/fonts.desktop | 11 - .../declarative/text/fonts/fonts/fonts.png | Bin 3400 -> 0 bytes .../declarative/text/fonts/fonts/fonts.pro | 39 --- .../declarative/text/fonts/fonts/fonts.svg | 93 ------ .../declarative/text/fonts/fonts/main.cpp | 54 ---- .../text/fonts/fonts/qml/availableFonts.qml | 57 ---- .../text/fonts/fonts/qml/banner.qml | 61 ---- .../text/fonts/fonts/qml/fonts.qml | 104 ------- .../fonts/fonts/qml/fonts/tarzeau_ocr_a.ttf | Bin 24544 -> 0 bytes .../text/fonts/fonts/qml/hello.qml | 79 ----- .../qmlapplicationviewer.cpp | 197 ------------ .../qmlapplicationviewer.h | 79 ----- .../qmlapplicationviewer.pri | 154 ---------- examples/declarative/text/fonts/hello.qml | 2 +- .../text/fonts/hello/hello.desktop | 11 - .../declarative/text/fonts/hello/hello.png | Bin 3400 -> 0 bytes .../declarative/text/fonts/hello/hello.pro | 39 --- .../declarative/text/fonts/hello/hello.svg | 93 ------ .../declarative/text/fonts/hello/main.cpp | 54 ---- .../text/fonts/hello/qml/availableFonts.qml | 57 ---- .../text/fonts/hello/qml/banner.qml | 61 ---- .../text/fonts/hello/qml/fonts.qml | 104 ------- .../fonts/hello/qml/fonts/tarzeau_ocr_a.ttf | Bin 24544 -> 0 bytes .../text/fonts/hello/qml/hello.qml | 79 ----- .../qmlapplicationviewer.cpp | 197 ------------ .../qmlapplicationviewer.h | 79 ----- .../qmlapplicationviewer.pri | 154 ---------- .../declarative/text/textselection/main.cpp | 54 ---- .../{qml => }/pics/endHandle.png | Bin .../{qml => }/pics/endHandle.sci | 0 .../{qml => }/pics/startHandle.png | Bin .../{qml => }/pics/startHandle.sci | 0 .../text/textselection/qml/textselection.qml | 290 ------------------ .../qmlapplicationviewer.cpp | 197 ------------ .../qmlapplicationviewer.h | 79 ----- .../qmlapplicationviewer.pri | 154 ---------- .../text/textselection/textselection.desktop | 11 - .../text/textselection/textselection.png | Bin 3400 -> 0 bytes .../text/textselection/textselection.pro | 39 --- .../text/textselection/textselection.qml | 2 +- .../text/textselection/textselection.svg | 93 ------ 71 files changed, 6 insertions(+), 4531 deletions(-) delete mode 100644 examples/declarative/text/fonts/availableFonts/availableFonts.desktop delete mode 100644 examples/declarative/text/fonts/availableFonts/availableFonts.png delete mode 100644 examples/declarative/text/fonts/availableFonts/availableFonts.pro delete mode 100644 examples/declarative/text/fonts/availableFonts/availableFonts.svg delete mode 100644 examples/declarative/text/fonts/availableFonts/main.cpp delete mode 100644 examples/declarative/text/fonts/availableFonts/qml/availableFonts.qml delete mode 100644 examples/declarative/text/fonts/availableFonts/qml/banner.qml delete mode 100644 examples/declarative/text/fonts/availableFonts/qml/fonts.qml delete mode 100644 examples/declarative/text/fonts/availableFonts/qml/hello.qml delete mode 100644 examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/text/fonts/banner/banner.desktop delete mode 100644 examples/declarative/text/fonts/banner/banner.png delete mode 100644 examples/declarative/text/fonts/banner/banner.pro delete mode 100644 examples/declarative/text/fonts/banner/banner.svg delete mode 100644 examples/declarative/text/fonts/banner/main.cpp delete mode 100644 examples/declarative/text/fonts/banner/qml/availableFonts.qml delete mode 100644 examples/declarative/text/fonts/banner/qml/banner.qml delete mode 100644 examples/declarative/text/fonts/banner/qml/fonts.qml delete mode 100644 examples/declarative/text/fonts/banner/qml/fonts/tarzeau_ocr_a.ttf delete mode 100644 examples/declarative/text/fonts/banner/qml/hello.qml delete mode 100644 examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/text/fonts/{availableFonts/qml => content}/fonts/tarzeau_ocr_a.ttf (100%) delete mode 100644 examples/declarative/text/fonts/fonts.qmlproject delete mode 100644 examples/declarative/text/fonts/fonts/fonts.desktop delete mode 100644 examples/declarative/text/fonts/fonts/fonts.png delete mode 100644 examples/declarative/text/fonts/fonts/fonts.pro delete mode 100644 examples/declarative/text/fonts/fonts/fonts.svg delete mode 100644 examples/declarative/text/fonts/fonts/main.cpp delete mode 100644 examples/declarative/text/fonts/fonts/qml/availableFonts.qml delete mode 100644 examples/declarative/text/fonts/fonts/qml/banner.qml delete mode 100644 examples/declarative/text/fonts/fonts/qml/fonts.qml delete mode 100644 examples/declarative/text/fonts/fonts/qml/fonts/tarzeau_ocr_a.ttf delete mode 100644 examples/declarative/text/fonts/fonts/qml/hello.qml delete mode 100644 examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/text/fonts/hello/hello.desktop delete mode 100644 examples/declarative/text/fonts/hello/hello.png delete mode 100644 examples/declarative/text/fonts/hello/hello.pro delete mode 100644 examples/declarative/text/fonts/hello/hello.svg delete mode 100644 examples/declarative/text/fonts/hello/main.cpp delete mode 100644 examples/declarative/text/fonts/hello/qml/availableFonts.qml delete mode 100644 examples/declarative/text/fonts/hello/qml/banner.qml delete mode 100644 examples/declarative/text/fonts/hello/qml/fonts.qml delete mode 100644 examples/declarative/text/fonts/hello/qml/fonts/tarzeau_ocr_a.ttf delete mode 100644 examples/declarative/text/fonts/hello/qml/hello.qml delete mode 100644 examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/text/textselection/main.cpp rename examples/declarative/text/textselection/{qml => }/pics/endHandle.png (100%) rename examples/declarative/text/textselection/{qml => }/pics/endHandle.sci (100%) rename examples/declarative/text/textselection/{qml => }/pics/startHandle.png (100%) rename examples/declarative/text/textselection/{qml => }/pics/startHandle.sci (100%) delete mode 100644 examples/declarative/text/textselection/qml/textselection.qml delete mode 100644 examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/text/textselection/textselection.desktop delete mode 100644 examples/declarative/text/textselection/textselection.png delete mode 100644 examples/declarative/text/textselection/textselection.pro delete mode 100644 examples/declarative/text/textselection/textselection.svg diff --git a/examples/declarative/text/fonts/availableFonts.qml b/examples/declarative/text/fonts/availableFonts.qml index 58073ac072..2033808398 100644 --- a/examples/declarative/text/fonts/availableFonts.qml +++ b/examples/declarative/text/fonts/availableFonts.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { width: 480; height: 640; color: "steelblue" diff --git a/examples/declarative/text/fonts/availableFonts/availableFonts.desktop b/examples/declarative/text/fonts/availableFonts/availableFonts.desktop deleted file mode 100644 index 708a8cfe7b..0000000000 --- a/examples/declarative/text/fonts/availableFonts/availableFonts.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=availableFonts -Exec=/opt/usr/bin/availableFonts -Icon=availableFonts -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/text/fonts/availableFonts/availableFonts.png b/examples/declarative/text/fonts/availableFonts/availableFonts.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/text/fonts/availableFonts/main.cpp b/examples/declarative/text/fonts/availableFonts/main.cpp deleted file mode 100644 index 06e56bbaac..0000000000 --- a/examples/declarative/text/fonts/availableFonts/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/availableFonts.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/text/fonts/availableFonts/qml/availableFonts.qml b/examples/declarative/text/fonts/availableFonts/qml/availableFonts.qml deleted file mode 100644 index 4966a415c2..0000000000 --- a/examples/declarative/text/fonts/availableFonts/qml/availableFonts.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 480; height: 640; color: "steelblue" - - ListView { - anchors.fill: parent; model: Qt.fontFamilies() - - delegate: Item { - height: 40; width: ListView.view.width - Text { - anchors.centerIn: parent - text: modelData; font.family: modelData; font.pixelSize: 24; color: "white" - } - } - } -} diff --git a/examples/declarative/text/fonts/availableFonts/qml/banner.qml b/examples/declarative/text/fonts/availableFonts/qml/banner.qml deleted file mode 100644 index d722468917..0000000000 --- a/examples/declarative/text/fonts/availableFonts/qml/banner.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: screen - - property int pixelSize: screen.height * 1.25 - property color textColor: "lightsteelblue" - property string text: "Hello world! " - - width: 640; height: 320 - color: "steelblue" - - Row { - y: -screen.height / 4.5 - - NumberAnimation on x { from: 0; to: -text.width; duration: 6000; loops: Animation.Infinite } - Text { id: text; font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - } -} diff --git a/examples/declarative/text/fonts/availableFonts/qml/fonts.qml b/examples/declarative/text/fonts/availableFonts/qml/fonts.qml deleted file mode 100644 index ae48f2424d..0000000000 --- a/examples/declarative/text/fonts/availableFonts/qml/fonts.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - property string myText: "The quick brown fox jumps over the lazy dog." - - width: 800; height: 480 - color: "steelblue" - - FontLoader { id: fixedFont; name: "Courier" } - FontLoader { id: localFont; source: "fonts/tarzeau_ocr_a.ttf" } - FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" } - - Column { - anchors { fill: parent; leftMargin: 10; rightMargin: 10 } - spacing: 15 - - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideRight - font.family: "Times"; font.pointSize: 42 - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideLeft - font { family: "Times"; pointSize: 42; capitalization: Font.AllUppercase } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideMiddle - font { family: fixedFont.name; pointSize: 42; weight: Font.Bold; capitalization: Font.AllLowercase } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideRight - font { family: fixedFont.name; pointSize: 42; italic: true; capitalization: Font.SmallCaps } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideLeft - font { family: localFont.name; pointSize: 42; capitalization: Font.Capitalize } - } - Text { - text: { - if (webFont.status == FontLoader.Ready) myText - else if (webFont.status == FontLoader.Loading) "Loading..." - else if (webFont.status == FontLoader.Error) "Error loading font" - } - color: "lightsteelblue" - width: parent.width - elide: Text.ElideMiddle - font.family: webFont.name; font.pointSize: 42 - } - } -} diff --git a/examples/declarative/text/fonts/availableFonts/qml/hello.qml b/examples/declarative/text/fonts/availableFonts/qml/hello.qml deleted file mode 100644 index 3aaf0fe704..0000000000 --- a/examples/declarative/text/fonts/availableFonts/qml/hello.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: screen - - width: 800; height: 480 - color: "black" - - Item { - id: container - x: screen.width / 2; y: screen.height / 2 - - Text { - id: text - anchors.centerIn: parent - color: "white" - text: "Hello world!" - font.pixelSize: 60 - smooth: true - - SequentialAnimation on font.letterSpacing { - loops: Animation.Infinite; - NumberAnimation { from: 0; to: 150; easing.type: Easing.InQuad; duration: 3000 } - ScriptAction { - script: { - container.y = (screen.height / 4) + (Math.random() * screen.height / 2) - container.x = (screen.width / 4) + (Math.random() * screen.width / 2) - } - } - } - - SequentialAnimation on opacity { - loops: Animation.Infinite; - NumberAnimation { from: 1; to: 0; duration: 2600 } - PauseAnimation { duration: 400 } - } - } - } -} diff --git a/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 11bedd1914..0000000000 --- a/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index 143c17b802..0000000000 --- a/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,39 +0,0 @@ -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/text/fonts/availableFonts/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/text/fonts/banner.qml b/examples/declarative/text/fonts/banner.qml index 7d5ce2e2e5..91554e2941 100644 --- a/examples/declarative/text/fonts/banner.qml +++ b/examples/declarative/text/fonts/banner.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: screen diff --git a/examples/declarative/text/fonts/banner/banner.desktop b/examples/declarative/text/fonts/banner/banner.desktop deleted file mode 100644 index 3cc66c528d..0000000000 --- a/examples/declarative/text/fonts/banner/banner.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=banner -Exec=/opt/usr/bin/banner -Icon=banner -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/text/fonts/banner/banner.png b/examples/declarative/text/fonts/banner/banner.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/text/fonts/banner/main.cpp b/examples/declarative/text/fonts/banner/main.cpp deleted file mode 100644 index a61e2724e5..0000000000 --- a/examples/declarative/text/fonts/banner/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/banner.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/text/fonts/banner/qml/availableFonts.qml b/examples/declarative/text/fonts/banner/qml/availableFonts.qml deleted file mode 100644 index 4966a415c2..0000000000 --- a/examples/declarative/text/fonts/banner/qml/availableFonts.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 480; height: 640; color: "steelblue" - - ListView { - anchors.fill: parent; model: Qt.fontFamilies() - - delegate: Item { - height: 40; width: ListView.view.width - Text { - anchors.centerIn: parent - text: modelData; font.family: modelData; font.pixelSize: 24; color: "white" - } - } - } -} diff --git a/examples/declarative/text/fonts/banner/qml/banner.qml b/examples/declarative/text/fonts/banner/qml/banner.qml deleted file mode 100644 index d722468917..0000000000 --- a/examples/declarative/text/fonts/banner/qml/banner.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: screen - - property int pixelSize: screen.height * 1.25 - property color textColor: "lightsteelblue" - property string text: "Hello world! " - - width: 640; height: 320 - color: "steelblue" - - Row { - y: -screen.height / 4.5 - - NumberAnimation on x { from: 0; to: -text.width; duration: 6000; loops: Animation.Infinite } - Text { id: text; font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - } -} diff --git a/examples/declarative/text/fonts/banner/qml/fonts.qml b/examples/declarative/text/fonts/banner/qml/fonts.qml deleted file mode 100644 index ae48f2424d..0000000000 --- a/examples/declarative/text/fonts/banner/qml/fonts.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - property string myText: "The quick brown fox jumps over the lazy dog." - - width: 800; height: 480 - color: "steelblue" - - FontLoader { id: fixedFont; name: "Courier" } - FontLoader { id: localFont; source: "fonts/tarzeau_ocr_a.ttf" } - FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" } - - Column { - anchors { fill: parent; leftMargin: 10; rightMargin: 10 } - spacing: 15 - - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideRight - font.family: "Times"; font.pointSize: 42 - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideLeft - font { family: "Times"; pointSize: 42; capitalization: Font.AllUppercase } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideMiddle - font { family: fixedFont.name; pointSize: 42; weight: Font.Bold; capitalization: Font.AllLowercase } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideRight - font { family: fixedFont.name; pointSize: 42; italic: true; capitalization: Font.SmallCaps } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideLeft - font { family: localFont.name; pointSize: 42; capitalization: Font.Capitalize } - } - Text { - text: { - if (webFont.status == FontLoader.Ready) myText - else if (webFont.status == FontLoader.Loading) "Loading..." - else if (webFont.status == FontLoader.Error) "Error loading font" - } - color: "lightsteelblue" - width: parent.width - elide: Text.ElideMiddle - font.family: webFont.name; font.pointSize: 42 - } - } -} diff --git a/examples/declarative/text/fonts/banner/qml/fonts/tarzeau_ocr_a.ttf b/examples/declarative/text/fonts/banner/qml/fonts/tarzeau_ocr_a.ttf deleted file mode 100644 index cf93f9651fc0988d55a8df32f131a8125ff3fe99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24544 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 -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/text/fonts/banner/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/text/fonts/availableFonts/qml/fonts/tarzeau_ocr_a.ttf b/examples/declarative/text/fonts/content/fonts/tarzeau_ocr_a.ttf similarity index 100% rename from examples/declarative/text/fonts/availableFonts/qml/fonts/tarzeau_ocr_a.ttf rename to examples/declarative/text/fonts/content/fonts/tarzeau_ocr_a.ttf diff --git a/examples/declarative/text/fonts/fonts.qml b/examples/declarative/text/fonts/fonts.qml index 8dd6b1978b..9056554303 100644 --- a/examples/declarative/text/fonts/fonts.qml +++ b/examples/declarative/text/fonts/fonts.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { property string myText: "The quick brown fox jumps over the lazy dog." @@ -47,7 +47,7 @@ Rectangle { color: "steelblue" FontLoader { id: fixedFont; name: "Courier" } - FontLoader { id: localFont; source: "fonts/tarzeau_ocr_a.ttf" } + FontLoader { id: localFont; source: "content/fonts/tarzeau_ocr_a.ttf" } FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" } Column { diff --git a/examples/declarative/text/fonts/fonts.qmlproject b/examples/declarative/text/fonts/fonts.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/text/fonts/fonts.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/text/fonts/fonts/fonts.desktop b/examples/declarative/text/fonts/fonts/fonts.desktop deleted file mode 100644 index ffb31e918d..0000000000 --- a/examples/declarative/text/fonts/fonts/fonts.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=fonts -Exec=/opt/usr/bin/fonts -Icon=fonts -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/text/fonts/fonts/fonts.png b/examples/declarative/text/fonts/fonts/fonts.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/text/fonts/fonts/main.cpp b/examples/declarative/text/fonts/fonts/main.cpp deleted file mode 100644 index 4b70cac690..0000000000 --- a/examples/declarative/text/fonts/fonts/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/fonts.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/text/fonts/fonts/qml/availableFonts.qml b/examples/declarative/text/fonts/fonts/qml/availableFonts.qml deleted file mode 100644 index 4966a415c2..0000000000 --- a/examples/declarative/text/fonts/fonts/qml/availableFonts.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 480; height: 640; color: "steelblue" - - ListView { - anchors.fill: parent; model: Qt.fontFamilies() - - delegate: Item { - height: 40; width: ListView.view.width - Text { - anchors.centerIn: parent - text: modelData; font.family: modelData; font.pixelSize: 24; color: "white" - } - } - } -} diff --git a/examples/declarative/text/fonts/fonts/qml/banner.qml b/examples/declarative/text/fonts/fonts/qml/banner.qml deleted file mode 100644 index d722468917..0000000000 --- a/examples/declarative/text/fonts/fonts/qml/banner.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: screen - - property int pixelSize: screen.height * 1.25 - property color textColor: "lightsteelblue" - property string text: "Hello world! " - - width: 640; height: 320 - color: "steelblue" - - Row { - y: -screen.height / 4.5 - - NumberAnimation on x { from: 0; to: -text.width; duration: 6000; loops: Animation.Infinite } - Text { id: text; font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - } -} diff --git a/examples/declarative/text/fonts/fonts/qml/fonts.qml b/examples/declarative/text/fonts/fonts/qml/fonts.qml deleted file mode 100644 index ae48f2424d..0000000000 --- a/examples/declarative/text/fonts/fonts/qml/fonts.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - property string myText: "The quick brown fox jumps over the lazy dog." - - width: 800; height: 480 - color: "steelblue" - - FontLoader { id: fixedFont; name: "Courier" } - FontLoader { id: localFont; source: "fonts/tarzeau_ocr_a.ttf" } - FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" } - - Column { - anchors { fill: parent; leftMargin: 10; rightMargin: 10 } - spacing: 15 - - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideRight - font.family: "Times"; font.pointSize: 42 - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideLeft - font { family: "Times"; pointSize: 42; capitalization: Font.AllUppercase } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideMiddle - font { family: fixedFont.name; pointSize: 42; weight: Font.Bold; capitalization: Font.AllLowercase } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideRight - font { family: fixedFont.name; pointSize: 42; italic: true; capitalization: Font.SmallCaps } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideLeft - font { family: localFont.name; pointSize: 42; capitalization: Font.Capitalize } - } - Text { - text: { - if (webFont.status == FontLoader.Ready) myText - else if (webFont.status == FontLoader.Loading) "Loading..." - else if (webFont.status == FontLoader.Error) "Error loading font" - } - color: "lightsteelblue" - width: parent.width - elide: Text.ElideMiddle - font.family: webFont.name; font.pointSize: 42 - } - } -} diff --git a/examples/declarative/text/fonts/fonts/qml/fonts/tarzeau_ocr_a.ttf b/examples/declarative/text/fonts/fonts/qml/fonts/tarzeau_ocr_a.ttf deleted file mode 100644 index cf93f9651fc0988d55a8df32f131a8125ff3fe99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24544 zcmd^nd6*nmb#L9exAyL?uHKiKo}TVmw9L}8^++RWv|83;ti`sBWlOTG#g;AEk}N>- zioqCv#uDI#hcT-IUIM{+fe;pBz>owC$@^I1#DuIic|1Pg5eMRY@8Q<_oqMaMTZ_p{ z{>{uMbyamu_r2$y<#&GP+|rn)X$kGE8rQB~yY|vI%wF_`uWH(^Z{TXzg=;QYt2MQI zasF|fS2kTTI{wBd@5yNzyAJ2u_8i)MxQjQwplSR&xb_Eo-h8a8_39@y&3G%`7uW8- z`S9t}_+)L@2XSs+d+@~mA71?G3Qe=_*R-uayKdj^y+8T1wjA&M4F8(f;ez=;bQ7P| zhx5Mc4jnt*cVh{k$G)m*dhFm$dv^cx_kJ{q&%Ybz=Aqrk53_aJJ$Qc|?yugs`_R6R zf6@Purfolt_n$v})6K_z@vhxdnzmyN&bMhaSNwZz=g6sD{?cD-9{&lhXkS14xA@NR zb?fP-ex)ej)Yf#miXZ%qD4cF;+x2hLseYyWBsz?K1YKde_I6FkOZ1ma-nAmUh3VgB zztRl+^?mv?xOTsKWq+@Y;qUNOrW4)?angD8vw8modvRRtTg9uV7irruw&!t9bHR@q zk$R1e)jMbX|99Fqwd=K4@lXD;f#|5?Rbzg~*{isl{^t5K{}ShKJL4{OPx!eV@2D$} zoO9*%?z~>>y!S5ocaO+xk7(DN=Tmk^*TT7MJ!{7Q6;Gi#q&-?!s2`ug8EHxv^zuFO zHHj-R?N04?w8ypI(>|+xUi*snC)#(lzta9y`%T{}*ei4m?|wqQ`$u^98*}fjz`OeC z+coXo;t? z=nWTd+Pr1!C6`{d?eaHXvHi-ccI@1B_3mr-?A^Ej+UpKnf5X8;H{Nvk$kCgRz3I(w zIey}nTW`DljyvCaSE)#%Ip0r(F81JGl@9Qe*0gdr9rV(F;ZJ*t(Ur4alV_cGoCfMx z`pb^X=RX|R_G`~*zhoJfP&o(fesE726v7XzZu)?eR~=|4(8=;)98Q^Vj+x^;^kx$$OG71Z#s| zq-Ii2rrq?h^k>t*%3PQEM%K*k%zifea&9(vNA6eo75N_&78RZ>{Gzy~c&d~v?JqrB zdZj#B-dTRU{FAOk*P^axyRYhgwz9eMot|dTKUFtWf4_IA_uk&`)V9~YSZ~(9*SELt zx&BrCe=txOxNhJ_gN?ycgFl?NX5Jn1em4J_`EUNO{)>fY+TY>7Khu6rO4;9>sIYu4 zUtt;3GOYxw*9HgZcXE1`F-yE*WnlZ3U`$xPom{!uacqw>#dUw>{r@ z&`7}O=sUiN|9;H2l4hry6XUt|cbNE!5q%lHX+)oFPB(uk_Fk5866#A5Znfq(Npoy6 zl{8J;W1H!#6Hf8PBF15G9t4+MY$bz5Dch6Zb3IIYwf-^?gvOefMn2cWx*4Wo`nsHw zspiv!NjI0XWo%TZHwOo%Ca0Ty(@pk!X`k;f9HHyn5)r|B7Yzun8n?!1%d ziX~rXS<}^D;;z2QaN6R~)AHlhFA zupyII*#qoz7%MCsW0f+=Wz`^QMED(H7!?N9t4|Fl?1W`B7`J1A>$$eWS%Vp#r@y2m z?|SyHg=5Ec#)WOW;@3&xyS9=ETcxjNzoWr%M6%Ce&h=3?!ls)K@~?hqft9k|eBSul zb0U{=T=p@>bSsrzfQ4q(U?z``!FaDfeOk(P2q(c3)*dP?-$E87v(`d3wUj|srkhw` z{C2Y?j18VT#dL1PQm*F&=Ew*;b&~TWCK1Fe&PPYsV{FxfZ|Q}|8B-}?Jn zOX~OS zUIz-N;|A9kuN|}vsb^{ookN=c{x8W9lTk1>aQdU{oj`DwTDKy`zy?PfjZyX^ed%l8 zc=rc5U%gm(mIk*GT%2E8ix`>nMW@=Jdl+@Jx)Izx&=4377 zvx)H~Z15N2+H1{XP_h}bOF`DSm2ob*f*y~hQ`a9zr*tEp88JC$w;I`GneHlQ{&DAy z9Xq$?dwU1**}YQ5%|y0tUSZa=34^iLRfZQ!W|`hCmM>qig2Oh_1=h+E{yXlPS`e>1KLhs*zwm%a2b?Hj zibgp|Ir;ubA+tI92>H%ZMvjJUvh1X1=s%)p>T^C| znTG6!HOIq9L90G--V=%+r1$k<ZiD84{{KJ~#y(VYiF-i6EB?#29|gIx-%@kZcpG z+K5EOe!(o)>S3(X-A$Uo%e69RM~*OFs)q;i3gfO5%r4R277D>L^?SKzidJ>&mMwto zm`mtOrnIY|@#DD(D149fBp99YU!mTk*QC1; z4PRm0;2-|Tdv7V*X=o9*oTO;&4BdilJo+fTBjdGgdX_8Lhq-6Rf6eMbIy1|6yLtkO z8GVQ=c-0-#6~b8*z;U#F!b)u$$qF$F0>W(Q7e@%G1Qn#NL*JEikW-gyyqt|P91wI+ zt{E~Nz+Ge-8T?&^ji;J;J3qq4YI+7Al+RH}#)l8Eb@f_*Mle4m;^{=mbX~otS}KWR z#+Yde%kA3SC*MvRupY>&T1^*C?!iWc%MbCwLa&ze!~q=^$8^DR>=UfU&Fc-5J&sq~ zkMT;gz-^(wWCW=}ioOIT#O&vRE#=P!CO1@n+U`BqDH>dl@<5s!H zsXCRC{h~1#7du6a|G@MTX331Ze1w(w8g4%C#9J@xtA)vgCzc)@wF?dMKXdVuywBT| z{b1HTtU;5PqVt)2QC1U4Pf9#LSg+ObrmttA{T0@Os0Ynku1`(EC6BQGlwVqA^;wOI z$WHgi0plP&eP~fkR2p`#jmw7!2Ql3dTkBT$Hj(gk)6j!O18iVX$`Ha&3Sm?i74+P6 z)%@Up*kPFiM)$>2nY^{i0_K|C92f&8W4QVOCy~a*OwxGsxZQoFt_xn=G+it;Hx~^g zA-XZVxmGNSo{L8y-`DY0ukXd6*Wo&hX&beD6zfR(`5dAEDWw#)G;Vn=y*z0xP%6To zPRieQ^k;{FLG@V`c1{R*(6W6O7Kj;Utn5=+7%Z?=s#>%V=Hc3tOZwbzS>x*v-I$TF zSrs=+n1TQRKksJo20ZQ@@wrp$Yu|IVSx#|LZgn8k( z!%i9nS3LF~mK+pz&S$QVyuU<&q?a)5OgjQ(W%wt7${Q9E_>mB;(VUdPa}uTw1(wog zKehXeAeRn!Cg=FJzUZwg3|zdaxA*9dycJL81Hz`sbUGi{QZg1WcK9$nWHFH{Lye7MmG1Zl5-=U=H{E15i!Q~r_Pka{`q0Cs8~B|K zU7Rli9Filr_*w^slgL-jji$3q0wiGSz;{f(ex1HPSFT^DX0>j8gz3zU z8`MlTY`pR+<`A~yj_HWoZ_{tRBV+oO4TtpT2cZe2dP(fREE8f*0Ax&|7qfBQ4?Zd~ z5}@ng(KPm9?1O{ajDjkimL1i%C0WwGkSK;)ePu_Qh-yMqEd1#WL5@ZL$%id zUN;>#sjI7k6@bKDBW-jGmS@7S-FHfnyR&YXjUf?p^<5A#l0nBYTkqol`ADYRipdTL zOwo*Tk_TiiF$j52ErD=-g(}I?$nCX3rUF=_`VBw(8He$wGmNL>F|TZ~OlG>7$uO&o zh+tS*Ec1Q)_wVBXpWMzEJ8lKJLUI4N{Odu5j>whoDl0W9ceRfY{(on5WMp(MOG!*Dn^_)Ej)Ig0Cm}GJn#4i9#MzP= zm{=|_W|p*%bWxHvF*&8IL&qoBUhB`NrY1XV;tH~L=_Ai47E-b~y5MyzV`7>lf@Q_8 zM8vaU%GP8TM*@k=9Y)DwZNtAO#RApAyaCxB_T2)%eg1ksX-LLEZ9PGsX=| zZ`~U+ym%^Za+3k~9gi7S>)m2%Bo016iYTG}j)al>eG-)&-x`x2O7zHXEGU>4gU3wI zOL)B1jr5nXxM_N^I6}og#&xk(*{dDjLW3bbhdYo6(gCnH5e|G1(Q=2fm~p8LSa`{- zB=p=kIS@(6 zOvFdakMaY&+hJ_pJbiMC8P4c9>+dHpZp>d$EHYhxfTC-5C||Va&lj%6uhkD`i(r66 zsTLR6jIK}WeqYQrEK#j20qB;I)ZS#oU9o--Qa5AXSkSBnS2Cm9D0eLcbzJIp)2;V6 zt39P|2eCezV^o`Ym91)XK1ww(Rm%)ns8OUJp)2kYit_;n!PqX{3^JLF1zkn*BNJjc zSVOpuXnj#6ZP!5}`1s=>ppfBEJbM-Y{TQ)eL1ep`g!~GLyt#}Ca8TrDmr)QVx5qx^ zdPQ3o=3y>5J&zwYh3-|eN&T<^cMC^r9M+|wSp_o{bKWD88S^_PaN2w9Sjy}Hg65~} z{)Th#2Di~~y_*vyhp~JU{}IoH8XCfns~x zU^w*+LtKsA7egCrE?u(`JZY@gYnu@p9@H))xv7LOn-8^{9KW8S@hka3cvd#b^s#b- z(XnI`XW1k)UFrEWECzsL3PRp!*q$8v^dj9)rSeGMPo46(VR*%quP>S=Q0RD;QHHiI zTEx8sOv-h9aq5)t9oL6ld3@0##vD>vn$Y_7qYZ|vy_^C861#<+fV;@Kd4U9fw6T7@ z$T|iyyKq~hp4Of2TH1^FN=@4_QA&*;3x2 zfE@8}=W*ue#X97zcj!oArFY*Dg0&6Hlgc|M;m{+9w(g?90YW>IKR(kJgISa8v2-i6 zQm^Qp1Tryt=Em8;PFdhb%oy83E;1yLLDB{UrXa@{lJ7_dSP^{bW5kE2n^ooObE3$+`0!n};u;paG{XBLR3{>9qZ<)MLeiqk^Q?(aLB< zLLz_BK)rZDGG;nX>psKpN)~Jcgg2S6Yz_iBlh$9m%P#3G)8p&<9S%OBgDa_M101#1y$`s~? z_PbBVx&{%+jY7I)J@_Dd;&BBBUwDC8xkAmp|NbYRiiXDRg%$JXRxMA?k2o($bv^Nf z*^|i=38sb=uKybN+>K|B3G@PqDyoUdm6Il{Pk=_iB95>+g@q_ss|@XYgDnY$xI_84 zT-;B7QbE+Go|H3qz$_wP50a{0p)ZO0}B z*x=2btP#M4k!qC04#aa3IpzoUL|=&cP1F3;`V)Xx0#<$-2p&@^`i^cY^`^d^&pS;Iu;0Wod(Uc3;P9dNzV4T71;v0b5^16(E2sWN}$18|O( zBi(P?En1GD-v_Yy+PBuP2eClw3%*h2Xe2wBOSpm^O9>@iD#;is;zb3C&nCOTNu~}=m7m1=4M(pIi+3ohRG#m~N+NP@+opp* zH62~np(H!n#>FpdqtL?T(#~=u$GIe_y})z+k$~1jScr;hCDCiU@QE5+!`pw?xYou+-U6o#43Y4ECc=7kt0XGi+^YM@&y#-(@mkwM^fGG zg0HHMb|h`H%$Qqx8TZ0UmE{&uq6P3a9j|1};f4rtoYVAxDnK3 z#%=2bO~N}=)Voqur+efl3`xTR4CILvBKIjD~P5)HMEDr#?2~XZ{(sUq-!}u*Uer zjO5@X?{* z|Aw?@m~&_yA^sDc`90*&kaC$CkO|a#x#>ANJL(_@L(Yczdrs?=?#5K|t{W&_ZfQM@ z7oC|Lc{~Io*o%lgupTrIKnCWE4A4X-=eCh__@DlXaDe&a5Eu!kU9(DS>ofp4l7bwX zWEBVzg&9^9;mKoCT4I?H)9W=oyyCdBJX;pNK&yjrUpS));+-&AFPW~wmiT!(Aa=pc zf}j#qyEPLrWGe+!+Rki>xVfk9*f!>nPaCkC*J+99nBSGeG%&Tygjb?j&^$*Z>Xb7k zoI<(l5~v7n3TxJ&BbHMljgSgFQwxhuYU!|6GW@5f>%>hEuS-Itzd$DRF?-RV@1(#Q zSbfzIyJ!t|nYz(EXcz6_-af>Ab5+BdSz;70SDhQC>wsdnbY4z7sbw3C^neGlH{rS^ z=z(b`{M5orLGPJH4w<`^DP~ZjmdU#_==de)W@A?oyHnV z2N*U^y&I-v3*;AR<8OXsW@;u~j4x0Po&1)Pe@7NFUK} z#%sq-v(RN?LY1$%h(xWqh7EA7sA$piE!T7Nrr$&m*j%VOE*0Hu(NU~;SteqH5@15jE6H3%s0 zEb!v$bR>(L=$swJFLQ?z$$^H`bS@Zm5UT1!?kaa`eh{xXTz?zjlWz8x=UWBK_Y&`F3QGK`G7=DHVlOqmZFf~s)vR{e-!_(X=*0m}X+BqgX!jV3fW@F0K2?p>7PlM4gGG>u^4q===f^WCej?jW}* z1N$4E&E*OXNVv^;jxb{L{ARclOh@!}8P{IkmqJHis(;(HV4g~_r!Z-l%gC-`lrq7t{bMkHiz`LEHg|S6p+WF^vKe?|^@#|LP>L6MuLdVzNazcQggIf?M zZjmrrbt|!Z*;V1UuV2q>P;=5f{o&_0vFJo`*cMEzt(O;_t(T;ow44+y1eQWbzs}6<|^(&y}~*t0VZnSSw5{5ZSet0il@hx=*Njrew#PW)iU7O`7}mhV@JkI{j-M zmUPDkt*6a?@_FstVF_t2306Y#GkU}-?De{`NLP{Qz@?nqDCWb{pRYMf)*;#zh|Yd7 z;uv19QHwexDev(@o;1pNNI$_lMG8p9M6-}?P})CRjt>F2uj>o0QV`uNUaH9{33 z+u-Q!TS&Bws)){64rKQTd{+i}HS(^I|H~zz8no`R08VU*`juXb96}GqC$Guy!TuU; zY&PN?u|6y2+Xw843vnWeYj7{!Yov&3$rqlS1GR7YQmdfL9@q!NSUq&*jo+aDrK zL>x>iVWn2B31rQjO56GrPq^5+&|YiBEvvN-30oyHEu)cTC7{NjYb8ZwN{4jTBD04c z5}88Uwg63ApJf+u-;dQ2)Up%ik7q4%?&>3V-l_Yxl}c1lRe71Ue$4&(iJ0#4JMTEM ztD^-pT;jI-Xn8L zqdzm>$TxZzm8An(LN)7wBBHzUFv=}Yjp|&zt=!F$rPlN$pP5;@lv!zXA)>UwMn*wo zCIZh+0Dg=NV{y`L*W+y7z%RL^^;qj;Xg7eju^gYXE>>Q(3P2y|UPrkl;iQ6&=CveQ0N*)_ZWa)SL@Z*tDPfg@;WNm=;T`F{NUgK06W<+hBsHVlFK0%D?;+)&E-1X z(^jIMIi6^6fPHmA->?M-G~c?ArA2SA@|~+z1_9e(m1nz0;~aR=8M|k~%8k1Y|7scK zA*>nNC#{h&9W9&CJ=kZEK*nmtj7-+ZfCc4fCCgWu)~Sbs#S84EY}5;FbZBU~krIA> zGS+we0cUESxA5kLMq&qA(LRwEnUZzt6bBX+^XBWrBO)C{l(R_pctOg@bjuss>qouq zBif42^+Own4BvIqM49J}>at5gibbJ_a5^EpHlyc$!Ds4-)PN zvc#xq+##$0j8|DnJ_pCG3ds@Tpe0qYkfIK8(}RzElwrithy zZoLh?YdYJ_6WkaX^m?wlUEai#=+?K=i3Ea=nGm<$f~>anAs(Ph2q4p}R);G=921Ra zEXvh&5Pz*1kuAD<03xQqw%g@pG{VH&eQR^>Hw1Ivvext? zHk=WsUi&siMcyuo*P$X(g@R6AI+5W&s`mg8|4&0ph`LFHEucQ{(4t#Oh+?WuPNcV_fAm^wQk_HNlyqpEN7!DOThG7KI z2@;j*U&vaF${X?57`YU00(G}|g31bp6?0`hFOExzIA{i%4MJV1tebE>#&t#-ovy-5 zivy@PBI1@xl98MPQLX>g`Uw^^|B-vT2{ECS%kIACBe{G&&$9n8qxLaSQ2bHruZM<( zEQaZ3%Cd;|U?@cM;UQN2`BEFr1ZU{;9L74UH%^zE1K@22Mj=7^mF_n+2|s*xFC5y7 zE%x-&*h(baU?{c$EpqF*lgJDh!qlIBTDQ+>f^!qT&s#rWt-s)YGVUg=4BF#vzs-ON zXR>$;7R82mTK2%T@!-tddPyCs@UgSC$mby#l!l0nKv+;(&kkM6m69ejYEGRBJJ&{N z5W7Tn?G#`@=5)%d^k324n>E=LSJVa~wTcf-^_;lkL+|LGi-7ezK5*hhW7?I%ZTrG1 zjhFi1EG^q;V}HasZK^R>DtzHD9bnV>DrUX#g2Ohx@4rQ*!Ag(++P46$Wks;3lGK|l ztd_~xAI8|KHjlok{S6%mv`Vo;7J1TP1s4_Wx5}fw>ZHhb?8Iwb4|UEVKn)9Ga3!+NQzYOuCUAj+w1@F{KVJnz&xO zOAnXd(eFSPpxl$x#&30PA$@98%TQ`4<%a%*j!G~KXZ9eEY8c>v!J|ZV;A`-s_CQ@9 z%`Ylnz}Uc=oKpbqC{xQhQg7jE4R|)npWtt$V?|(-EjZ*0h=o+?QnWMV^Bk#tKEO7J znT@H98zJio!ip)r0MKto`#bd3hp|BX6i*JUGpS|OYD%}W$?HylfH|t3GA|GTA$b1l|vbK%Tq03a1;u*;A z>E?5MVjA48__Co}@xYDwG0}Qiq!Yy0P{HkAERm{%htPi|@?GdBi`J|R6obw}RWAV! z&A`)#zGG6l%Bc1v$uL+iGMWl&LUg0LY9*BBnnqhZCKsVU0tF3Bb8z4l{hBTL7yv5@ z5ZFMLnFPC9n`enFt8?+eu3qADd#ermzya`*pu$S#?kyQvvIeK{cjh(MNYWN`idb{O z#00v?JWGe4^;Qp?w|r(s1TpLg5Jn~sm&x7kTEkiEjMi$B7G`S<;(y7R%hsYq>#uNT z=Z#t&1P<%2G>n8}V1Y;$p?9lzK8Hiq>W|)>mENY_p5GpdLr;pwg*I zeOXCdigruBO}4-3Ccj+Aez=80hFeGj4$)SW0gm3Zu&*2mGByOpuulMNXSUpzC|-Hc z9qo-(z}Z2Lb_F}QoVk6HDoJj=NP1}M>jf$zD_6qe_y*)cxIdfp9P@f~5TgN4JkB%ph-DRdW4+Nem|S-OG(~JQVN&h&U##tFdyMw3qp8UT z7CBsVT5Ab8=3oa+xKUNJeE;gttIODE>(+fog|c0T57KwT#lNB`-yxJ!)G}{sZW7l!XjD?872DP?-bs ztTh{xy`?^{8=Nhg+R@7OtT;+ z0N2g5yPzP{Cx-;XDqP;Ga!_GVg3xs*`iP^}~PCkY?Sl*+qd zdlDuhofv4T23bVgCPuK5>I2YD{QqGESnn%B_2vc^DGAmD<0e zwp79Ds)uG$!p3W(7WDSqd#+vd$84iIly2Ka2_AveJ(d6k2JCE*$D&e#S_Jc2n+;<=0A+aBA0-lJ7)@X?_|2rCDG8G6-~a&nsH{t!u{r*1W^}aSUtB)D2Cp^apGK^)Cf?Z1?Qs^Ti@4u@{VdG9V zT*nhwG(E#(nyNpAJrx)}I4M~uMDU{>BawDQ9ctvuJBm3(DyTO7=QusOz_DPE6BE=E z3+*%>en>U{P2fkQGX~GyASy*Stnq}89-zDtW-T|>KM#Oyrkw)yibZ=Te(%$|(VI@B ze??;O&)f;4V*De}d74Y)zu=1Fjq70R=$f)tw`(Jmiz%8#m?~c}bZPd8^ z+Dtl$_5zT}k*|6cbQ}f90O5KCsm30_mNwHc;lg_7iQHSX)Qwo+gf2(>?x+Ey|CJz4` zO_FsO(j|C*8pk!TferAL+avj9NC}AgQm-_wl-k4+ zO3xYHorFuhFXj7iL*>54Jjc>eA+FEsD_0B#0t~zX8VzML3up-Jvo$Ie#47afrPK5n z1Q@oYMZp%zs|XtoZPUQv&gbI7**Uq)dEJ{{vicwX%z52gIQlm3E2G0{6P8+aILVQ#b{>jv zk!O%On_TgMK>!$^(USLE7trC8<7 z($&hB`05KR+svZPh`@UxYuL%fi-0}zDS5?YgGikyggNnUuRdXa-x;fWU3gXixJUwZ z62N2%d4wiB(g7KtV_bg);kXnY*?~(L+E4||j{LR8qkfdr(}@40+LHFp+cQ^AuAkah zBY-CwrlZ zrW@Vv7MtSL1$Nz@*K1&3A^JpJ6z*w5uKj;SuRyNzMkF<)(T0AxX*)(8zOOz6&`Sc- zw?RC^@Ge~<2r_Abj%dK$q?KA`R!6Mu+wI{Vu?8)XxL6eF^bJ>L5$I@RrD3y6*(FBT zcHEC-=ZylZuzIzDWCw>pBD&Ypk8M82rI+G?F8W4pNDNGJBMeM=!g+C%iYQ7#ua`Ic z=MfU7fr6l$!$wcR&X+cv4-lP`D4YinL9DMG0aZ+rv2(kQoF{FV13$klPiXrD>cVU) zW6EY!XlPbxL~15kLsCCFvFA6-j@=E68me?2utPeDQ2@;S!h;FQt;yS0wws ztayFFrcIL}GUfGGZ6{NVUhMWNt+nSR`Hiz(QAw^uh`ktfo{0Hkrd#W#mNQh!a zS0a;elg9No@HmtW#iz@^9e;%%HT_97y>w&*X6*bX1)51Kme1N5y4ut5qBr8JWKXeuTSTD&b}`czA%0MmRLq zWs)_3Lj96nZYR6vkIfsPSf_d)o>BW1udWiP+la6h- z6VsBO|KE6?iQGjGR!@OGam_X0@LZVO^k@Q5NZ83@2D`(Cx@!K48GEz`d2oA|Euyvl zB@h}MEkFLmQkX!>DY(E|k3MQ7Z1N4l%>^#@8duR!n1^FCMtwS#(?{>TNK>P&Vf@vsN*cWAV>BLHq2>(*iaBJFIEnGCH1b+@Mj zANtmq349;WeXI)Tj=7X{ZkLVLBVl+Necy>1*j5j$E9E9I#nueMZJfgy`ABYi`VH#W zaC-a3O!h`MPOKo-N^(|Z)jh84jG8F1gL7(9);=maC8K)h$SKuOrJB&T)~;2Bnq(4t z%!ThMsHC=t#s8&e3=q%k@z1GzXm+Bb8K+uo|9p5eDE944isQ z@9jcG4x%-Dzo*Krq?h%Q7VoJ7J;Cn-EAblAFRU7UOa84EwrB z^v9_ByL~&~aRnail`G}M*V!{79(V1W)EAZW&qlgWX6u3IwT>&}6Kl)L)QrpkS-b~a|&>N1O+8@DH zGfWO58+@61XFH$5BuSu#B_jp3fY0$m5F{o1)DkT*v1;248@Fg@n-qe6Qn)sv3JI@~))ThaLB_at=WwS)oBsh9RB8!rZgm=rLwt z3W}X;cY{!$yxV;$Cg3Ew^HWRs;wP|y-^NkBV;A zBC88GA#$s~;O*OE(B3ytk=?S5mr}CKrF*fw+r^9Ywg3{^F;DeSO&g>xYt& zi>>D}pCj@^p+h`RAu-$5u|!c6}!LBl#_&T{0W51 zu*24GuCTM|?s<4h)9jc(zu(BXLND5h$q7GvKnZSN<}~V5YSXr!{-64l`funNcj;h0 zGKBf;5{3k_^_$jfXwJQ__2w1`M|$e?r*XIXxn6rAJZ73;8^dEf6q)S|kGa;%o(hiz z?)i)G*wB*fH{r3V2|bUeBtV(*u|L2+b<8xItqhNKEygy7$6Q;*_Jzj+_k24%Hnb}H zVR&q6wjS43Ye$hK?beRr|Gioje836(e+jOW2xf45%iEzE%`dUb4)v|&7j+56g4b$FTJXJN3@%9bp)TV5BH%#X7$m1yN~VL zTfOE)^^)ChI=1iV&}GAyZo2&9UF%j}bkSAerAvm#hNp(d$A-tJ#+!>4jp2DD!($VZ zi>q%raO}G3+M8}Xw)Uo@*Y2y1jWnwBt~++@@XYAweq7y8S4VE%KXT)~WB9I35aCvc zMBB7_EB=3jl;Z(N?+{M*?LF`&yq<4*BefKfhjf` zxN_Df5QiXtPQM)kAqzO`M?T${MR%R`raJw)_P5$&8g{snp)f=HiM9ti_8zR)d$rq8 zeRzlVKIo&s^TSQpm906Nt9f{ia~xLW!%GL)p_N9JIg2MN=kcWFBA&He#?HNNbQtzv z7QI?ctHYP~gXI{6uFMCcwh%fy4DpU)o?{p}>Dv_aa2k5J7$RN*MrWBei<;gFEZizA z;2P}$EYgM0?e%yv -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/text/fonts/fonts/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/text/fonts/hello.qml b/examples/declarative/text/fonts/hello.qml index ad8e6f2b1d..d648108d0d 100644 --- a/examples/declarative/text/fonts/hello.qml +++ b/examples/declarative/text/fonts/hello.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: screen diff --git a/examples/declarative/text/fonts/hello/hello.desktop b/examples/declarative/text/fonts/hello/hello.desktop deleted file mode 100644 index ad55aade26..0000000000 --- a/examples/declarative/text/fonts/hello/hello.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=hello -Exec=/opt/usr/bin/hello -Icon=hello -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/text/fonts/hello/hello.png b/examples/declarative/text/fonts/hello/hello.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/text/fonts/hello/main.cpp b/examples/declarative/text/fonts/hello/main.cpp deleted file mode 100644 index ad9494a62e..0000000000 --- a/examples/declarative/text/fonts/hello/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/hello.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/text/fonts/hello/qml/availableFonts.qml b/examples/declarative/text/fonts/hello/qml/availableFonts.qml deleted file mode 100644 index 4966a415c2..0000000000 --- a/examples/declarative/text/fonts/hello/qml/availableFonts.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 480; height: 640; color: "steelblue" - - ListView { - anchors.fill: parent; model: Qt.fontFamilies() - - delegate: Item { - height: 40; width: ListView.view.width - Text { - anchors.centerIn: parent - text: modelData; font.family: modelData; font.pixelSize: 24; color: "white" - } - } - } -} diff --git a/examples/declarative/text/fonts/hello/qml/banner.qml b/examples/declarative/text/fonts/hello/qml/banner.qml deleted file mode 100644 index d722468917..0000000000 --- a/examples/declarative/text/fonts/hello/qml/banner.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: screen - - property int pixelSize: screen.height * 1.25 - property color textColor: "lightsteelblue" - property string text: "Hello world! " - - width: 640; height: 320 - color: "steelblue" - - Row { - y: -screen.height / 4.5 - - NumberAnimation on x { from: 0; to: -text.width; duration: 6000; loops: Animation.Infinite } - Text { id: text; font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } - } -} diff --git a/examples/declarative/text/fonts/hello/qml/fonts.qml b/examples/declarative/text/fonts/hello/qml/fonts.qml deleted file mode 100644 index ae48f2424d..0000000000 --- a/examples/declarative/text/fonts/hello/qml/fonts.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - property string myText: "The quick brown fox jumps over the lazy dog." - - width: 800; height: 480 - color: "steelblue" - - FontLoader { id: fixedFont; name: "Courier" } - FontLoader { id: localFont; source: "fonts/tarzeau_ocr_a.ttf" } - FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" } - - Column { - anchors { fill: parent; leftMargin: 10; rightMargin: 10 } - spacing: 15 - - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideRight - font.family: "Times"; font.pointSize: 42 - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideLeft - font { family: "Times"; pointSize: 42; capitalization: Font.AllUppercase } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideMiddle - font { family: fixedFont.name; pointSize: 42; weight: Font.Bold; capitalization: Font.AllLowercase } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideRight - font { family: fixedFont.name; pointSize: 42; italic: true; capitalization: Font.SmallCaps } - } - Text { - text: myText - color: "lightsteelblue" - width: parent.width - elide: Text.ElideLeft - font { family: localFont.name; pointSize: 42; capitalization: Font.Capitalize } - } - Text { - text: { - if (webFont.status == FontLoader.Ready) myText - else if (webFont.status == FontLoader.Loading) "Loading..." - else if (webFont.status == FontLoader.Error) "Error loading font" - } - color: "lightsteelblue" - width: parent.width - elide: Text.ElideMiddle - font.family: webFont.name; font.pointSize: 42 - } - } -} diff --git a/examples/declarative/text/fonts/hello/qml/fonts/tarzeau_ocr_a.ttf b/examples/declarative/text/fonts/hello/qml/fonts/tarzeau_ocr_a.ttf deleted file mode 100644 index cf93f9651fc0988d55a8df32f131a8125ff3fe99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24544 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 -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/text/fonts/hello/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/text/textselection/main.cpp b/examples/declarative/text/textselection/main.cpp deleted file mode 100644 index 94227ff2af..0000000000 --- a/examples/declarative/text/textselection/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/textselection.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/text/textselection/qml/pics/endHandle.png b/examples/declarative/text/textselection/pics/endHandle.png similarity index 100% rename from examples/declarative/text/textselection/qml/pics/endHandle.png rename to examples/declarative/text/textselection/pics/endHandle.png diff --git a/examples/declarative/text/textselection/qml/pics/endHandle.sci b/examples/declarative/text/textselection/pics/endHandle.sci similarity index 100% rename from examples/declarative/text/textselection/qml/pics/endHandle.sci rename to examples/declarative/text/textselection/pics/endHandle.sci diff --git a/examples/declarative/text/textselection/qml/pics/startHandle.png b/examples/declarative/text/textselection/pics/startHandle.png similarity index 100% rename from examples/declarative/text/textselection/qml/pics/startHandle.png rename to examples/declarative/text/textselection/pics/startHandle.png diff --git a/examples/declarative/text/textselection/qml/pics/startHandle.sci b/examples/declarative/text/textselection/pics/startHandle.sci similarity index 100% rename from examples/declarative/text/textselection/qml/pics/startHandle.sci rename to examples/declarative/text/textselection/pics/startHandle.sci diff --git a/examples/declarative/text/textselection/qml/textselection.qml b/examples/declarative/text/textselection/qml/textselection.qml deleted file mode 100644 index b02b10632b..0000000000 --- a/examples/declarative/text/textselection/qml/textselection.qml +++ /dev/null @@ -1,290 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** 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. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 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 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -import QtQuick 1.0 - -Rectangle { - id: editor - color: "lightGrey" - width: 640; height: 480 - - Rectangle { - color: "white" - anchors.fill: parent - anchors.margins: 20 - - BorderImage { - id: startHandle - source: "pics/startHandle.sci" - opacity: 0.0 - width: 10 - x: edit.positionToRectangle(edit.selectionStart).x - flick.contentX-width - y: edit.positionToRectangle(edit.selectionStart).y - flick.contentY - height: edit.positionToRectangle(edit.selectionStart).height - } - - BorderImage { - id: endHandle - source: "pics/endHandle.sci" - opacity: 0.0 - width: 10 - x: edit.positionToRectangle(edit.selectionEnd).x - flick.contentX - y: edit.positionToRectangle(edit.selectionEnd).y - flick.contentY - height: edit.positionToRectangle(edit.selectionEnd).height - } - - Flickable { - id: flick - - anchors.fill: parent - contentWidth: edit.paintedWidth - contentHeight: edit.paintedHeight - interactive: true - clip: true - - function ensureVisible(r) { - if (contentX >= r.x) - contentX = r.x; - else if (contentX+width <= r.x+r.width) - contentX = r.x+r.width-width; - if (contentY >= r.y) - contentY = r.y; - else if (contentY+height <= r.y+r.height) - contentY = r.y+r.height-height; - } - - TextEdit { - id: edit - width: flick.width - height: flick.height - focus: true - wrapMode: TextEdit.Wrap - - onCursorRectangleChanged: flick.ensureVisible(cursorRectangle) - - text: "

          Text Selection

          " - +"

          This example is a whacky text selection mechanisms, showing how these can be implemented in the TextEdit element, to cater for whatever style is appropriate for the target platform." - +"

          Press-and-hold to select a word, then drag the selection handles." - +"

          Drag outside the selection to scroll the text." - +"

          Click inside the selection to cut/copy/paste/cancel selection." - +"

          It's too whacky to let you paste if there is no current selection." - - MouseArea { - property string drag: "" - property int pressPos - - x: -startHandle.width - y: 0 - width: parent.width+startHandle.width+endHandle.width - height: parent.height - - onPressAndHold: { - if (editor.state == "") { - edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y); - edit.selectWord(); - editor.state = "selection" - } - } - - onClicked: { - if (editor.state == "") { - edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y); - if (!edit.focus) - edit.focus = true; - edit.openSoftwareInputPanel(); - } - } - - function hitHandle(h,x,y) { - return x>=h.x+flick.contentX && x=h.y+flick.contentY && y= edit.selectionStart && pos <= edit.selectionEnd) { - drag = "selection" - flick.interactive = false - } else { - drag = "" - flick.interactive = true - } - } - } - } - - onReleased: { - if (editor.state == "selection") { - if (drag == "selection") { - editor.state = "menu" - } - drag = "" - } - flick.interactive = true - } - - onPositionChanged: { - if (editor.state == "selection" && drag != "") { - if (drag == "start") { - var pos = edit.positionAt(mouse.x+x+startHandle.width/2,mouse.y+y); - var e = edit.selectionEnd; - if (e < pos) - e = pos; - edit.select(pos,e); - } else if (drag == "end") { - var pos = edit.positionAt(mouse.x+x-endHandle.width/2,mouse.y+y); - var s = edit.selectionStart; - if (s > pos) - s = pos; - edit.select(s,pos); - } - } - } - } - } - } - - Item { - id: menu - opacity: 0.0 - width: 100 - height: 120 - anchors.centerIn: parent - - Rectangle { - border.width: 1 - border.color: "darkBlue" - radius: 15 - color: "#806080FF" - anchors.fill: parent - } - - Column { - anchors.centerIn: parent - spacing: 8 - - Rectangle { - border.width: 1 - border.color: "darkBlue" - color: "#ff7090FF" - width: 60 - height: 16 - - Text { anchors.centerIn: parent; text: "Cut" } - - MouseArea { - anchors.fill: parent - onClicked: { edit.cut(); editor.state = "" } - } - } - - Rectangle { - border.width: 1 - border.color: "darkBlue" - color: "#ff7090FF" - width: 60 - height: 16 - - Text { anchors.centerIn: parent; text: "Copy" } - - MouseArea { - anchors.fill: parent - onClicked: { edit.copy(); editor.state = "selection" } - } - } - - Rectangle { - border.width: 1 - border.color: "darkBlue" - color: "#ff7090FF" - width: 60 - height: 16 - - Text { anchors.centerIn: parent; text: "Paste" } - - MouseArea { - anchors.fill: parent - onClicked: { edit.paste(); edit.cursorPosition = edit.selectionEnd; editor.state = "" } - } - } - - Rectangle { - border.width: 1 - border.color: "darkBlue" - color: "#ff7090FF" - width: 60 - height: 16 - - Text { anchors.centerIn: parent; text: "Deselect" } - - MouseArea { - anchors.fill: parent - onClicked: { - edit.cursorPosition = edit.selectionEnd; - edit.select(edit.cursorPosition, edit.cursorPosition); - editor.state = "" - } - } - } - } - } - } - - states: [ - State { - name: "selection" - PropertyChanges { target: startHandle; opacity: 1.0 } - PropertyChanges { target: endHandle; opacity: 1.0 } - }, - State { - name: "menu" - PropertyChanges { target: startHandle; opacity: 0.5 } - PropertyChanges { target: endHandle; opacity: 0.5 } - PropertyChanges { target: menu; opacity: 1.0 } - } - ] -} diff --git a/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/text/textselection/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/text/textselection/textselection.desktop b/examples/declarative/text/textselection/textselection.desktop deleted file mode 100644 index 87e2ac0a29..0000000000 --- a/examples/declarative/text/textselection/textselection.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=textselection -Exec=/opt/usr/bin/textselection -Icon=textselection -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/text/textselection/textselection.png b/examples/declarative/text/textselection/textselection.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - From 04f75faee3f7aedd10748a00d83ff87a97c223e6 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Fri, 26 Aug 2011 11:51:32 +1000 Subject: [PATCH 18/68] Update various examples to QtQuick 2.0 And remove many duplicate and obsolete files Change-Id: I5416b2b276893d85233918b1a24a30659830d42e Reviewed-on: http://codereview.qt.nokia.com/3623 Reviewed-by: Qt Sanity Bot Reviewed-by: Bea Lam --- .../declarative/sqllocalstorage/hello.qml | 2 +- .../threadedlistmodel/timedisplay.qml | 2 +- .../threading/workerscript/workerscript.qml | 2 +- .../gestures/experimental-gestures.qml | 76 ------- .../experimentalgestures.desktop | 11 - .../experimentalgestures.png | Bin 3400 -> 0 bytes .../experimentalgestures.pro | 39 ---- .../experimentalgestures.svg | 93 --------- .../gestures/experimental-gestures/main.cpp | 54 ----- .../qml/experimental-gestures.qml | 76 ------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../mousearea/mousearea-example.qml | 2 +- .../mousearea/mousearea-example/main.cpp | 54 ----- .../mouseareaexample.desktop | 11 - .../mousearea-example/mouseareaexample.png | Bin 3400 -> 0 bytes .../mousearea-example/mouseareaexample.pro | 39 ---- .../mousearea-example/mouseareaexample.svg | 93 --------- .../qml/mousearea-example.qml | 112 ---------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../mousearea/mousearea.qmlproject | 16 -- .../pincharea/flickresize.qml | 2 +- .../pincharea/pincharea.qmlproject | 18 -- .../touchinteraction/touchinteraction.pro | 4 - .../dialcontrol/content/Dial.qml | 2 +- .../dialcontrol/content/QuitButton.qml | 2 +- .../{qml => }/content/background.png | Bin .../dialcontrol/{qml => }/content/needle.png | Bin .../{qml => }/content/needle_shadow.png | Bin .../dialcontrol/{qml => }/content/overlay.png | Bin .../dialcontrol/{qml => }/content/quit.png | Bin .../dialcontrol/dialcontrol.desktop | 11 - .../ui-components/dialcontrol/dialcontrol.png | Bin 3400 -> 0 bytes .../ui-components/dialcontrol/dialcontrol.pro | 39 ---- .../ui-components/dialcontrol/dialcontrol.qml | 2 +- .../ui-components/dialcontrol/dialcontrol.svg | 93 --------- .../ui-components/dialcontrol/main.cpp | 54 ----- .../dialcontrol/qml/content/Dial.qml | 86 -------- .../dialcontrol/qml/content/QuitButton.qml | 52 ----- .../dialcontrol/qml/dialcontrol.qml | 98 --------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../flipable/{qml => }/content/5_heart.png | Bin .../flipable/{qml => }/content/9_club.png | Bin .../ui-components/flipable/content/Card.qml | 2 +- .../flipable/{qml => }/content/back.png | Bin .../ui-components/flipable/flipable.desktop | 11 - .../ui-components/flipable/flipable.png | Bin 3400 -> 0 bytes .../ui-components/flipable/flipable.pro | 39 ---- .../ui-components/flipable/flipable.qml | 2 +- .../ui-components/flipable/flipable.svg | 93 --------- .../ui-components/flipable/main.cpp | 54 ----- .../flipable/qml/content/Card.qml | 80 ------- .../ui-components/flipable/qml/flipable.qml | 55 ----- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../declarative/ui-components/main/main.cpp | 54 ----- .../ui-components/main/main.desktop | 11 - .../declarative/ui-components/main/main.png | Bin 3400 -> 0 bytes .../declarative/ui-components/main/main.pro | 39 ---- .../declarative/ui-components/main/main.svg | 93 --------- .../ui-components/main/qml/ScrollBar.qml | 74 ------- .../ui-components/main/qml/SearchBox.qml | 109 ---------- .../ui-components/main/qml/TabWidget.qml | 102 --------- .../main/qml/content/ProgressBar.qml | 83 -------- .../main/qml/content/Spinner.qml | 70 ------- .../ui-components/main/qml/main.qml | 99 --------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../progressbar/content/ProgressBar.qml | 2 +- .../content/background.png | Bin .../ui-components/progressbar/main.cpp | 54 ----- .../ui-components/progressbar/main.qml | 2 +- .../progressbar/progressbar.desktop | 11 - .../ui-components/progressbar/progressbar.png | Bin 3400 -> 0 bytes .../ui-components/progressbar/progressbar.pro | 39 ---- .../ui-components/progressbar/progressbar.svg | 93 --------- .../progressbar/qml/content/ProgressBar.qml | 83 -------- .../progressbar/qml/content/background.png | Bin 426 -> 0 bytes .../ui-components/progressbar/qml/main.qml | 73 ------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../ui-components/scrollbar/ScrollBar.qml | 2 +- .../ui-components/scrollbar/main.qml | 2 +- .../qml => scrollbar}/pics/niagara_falls.jpg | Bin .../ui-components/searchbox/SearchBox.qml | 2 +- .../{main/qml => searchbox}/images/clear.png | Bin .../images/lineedit-bg-focus.png | Bin .../qml => searchbox}/images/lineedit-bg.png | Bin .../ui-components/searchbox/main.qml | 2 +- .../slideswitch/content/Switch.qml | 2 +- .../{qml => }/content/background.svg | 0 .../slideswitch/{qml => }/content/knob.svg | 0 .../ui-components/slideswitch/main.cpp | 54 ----- .../slideswitch/qml/content/Switch.qml | 117 ----------- .../slideswitch/qml/slideswitch.qml | 51 ----- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../qtc_packaging/debian_fremantle/README | 6 - .../qtc_packaging/debian_fremantle/changelog | 5 - .../qtc_packaging/debian_fremantle/compat | 1 - .../qtc_packaging/debian_fremantle/control | 13 -- .../qtc_packaging/debian_fremantle/copyright | 40 ---- .../qtc_packaging/debian_fremantle/rules | 91 -------- .../slideswitch/slideswitch.desktop | 11 - .../ui-components/slideswitch/slideswitch.png | Bin 3400 -> 0 bytes .../ui-components/slideswitch/slideswitch.pro | 39 ---- .../ui-components/slideswitch/slideswitch.qml | 2 +- .../ui-components/slideswitch/slideswitch.svg | 93 --------- .../ui-components/spinner/content/Spinner.qml | 2 +- .../qml => spinner}/content/spinner-bg.png | Bin .../content/spinner-select.png | Bin .../ui-components/spinner/main.qml | 2 +- .../ui-components/tabwidget/TabWidget.qml | 2 +- .../ui-components/tabwidget/main.qml | 2 +- .../{main/qml => tabwidget}/tab.png | Bin .../xml/xmlhttprequest-example/main.cpp | 54 ----- .../qml/xmlhttprequest-example.qml | 95 --------- .../qmlapplicationviewer.cpp | 197 ------------------ .../qmlapplicationviewer.h | 79 ------- .../qmlapplicationviewer.pri | 154 -------------- .../xmlhttprequestexample.desktop | 11 - .../xmlhttprequestexample.png | Bin 3400 -> 0 bytes .../xmlhttprequestexample.pro | 39 ---- .../xmlhttprequestexample.svg | 93 --------- .../qml => xmlhttprequest}/data.xml | 0 .../xmlhttprequest/xmlhttprequest-example.qml | 2 +- .../xmlhttprequest/xmlhttprequest.qmlproject | 16 -- 136 files changed, 23 insertions(+), 6840 deletions(-) delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures.qml delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.desktop delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.png delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.pro delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.svg delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/main.cpp delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/qml/experimental-gestures.qml delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/main.cpp delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.desktop delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.png delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.pro delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.svg delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/qml/mousearea-example.qml delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/touchinteraction/mousearea/mousearea.qmlproject delete mode 100644 examples/declarative/touchinteraction/pincharea/pincharea.qmlproject delete mode 100644 examples/declarative/touchinteraction/touchinteraction.pro rename examples/declarative/ui-components/dialcontrol/{qml => }/content/background.png (100%) rename examples/declarative/ui-components/dialcontrol/{qml => }/content/needle.png (100%) rename examples/declarative/ui-components/dialcontrol/{qml => }/content/needle_shadow.png (100%) rename examples/declarative/ui-components/dialcontrol/{qml => }/content/overlay.png (100%) rename examples/declarative/ui-components/dialcontrol/{qml => }/content/quit.png (100%) delete mode 100644 examples/declarative/ui-components/dialcontrol/dialcontrol.desktop delete mode 100644 examples/declarative/ui-components/dialcontrol/dialcontrol.png delete mode 100644 examples/declarative/ui-components/dialcontrol/dialcontrol.pro delete mode 100644 examples/declarative/ui-components/dialcontrol/dialcontrol.svg delete mode 100644 examples/declarative/ui-components/dialcontrol/main.cpp delete mode 100644 examples/declarative/ui-components/dialcontrol/qml/content/Dial.qml delete mode 100644 examples/declarative/ui-components/dialcontrol/qml/content/QuitButton.qml delete mode 100644 examples/declarative/ui-components/dialcontrol/qml/dialcontrol.qml delete mode 100644 examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/ui-components/flipable/{qml => }/content/5_heart.png (100%) rename examples/declarative/ui-components/flipable/{qml => }/content/9_club.png (100%) rename examples/declarative/ui-components/flipable/{qml => }/content/back.png (100%) delete mode 100644 examples/declarative/ui-components/flipable/flipable.desktop delete mode 100644 examples/declarative/ui-components/flipable/flipable.png delete mode 100644 examples/declarative/ui-components/flipable/flipable.pro delete mode 100644 examples/declarative/ui-components/flipable/flipable.svg delete mode 100644 examples/declarative/ui-components/flipable/main.cpp delete mode 100644 examples/declarative/ui-components/flipable/qml/content/Card.qml delete mode 100644 examples/declarative/ui-components/flipable/qml/flipable.qml delete mode 100644 examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/ui-components/main/main.cpp delete mode 100644 examples/declarative/ui-components/main/main.desktop delete mode 100644 examples/declarative/ui-components/main/main.png delete mode 100644 examples/declarative/ui-components/main/main.pro delete mode 100644 examples/declarative/ui-components/main/main.svg delete mode 100644 examples/declarative/ui-components/main/qml/ScrollBar.qml delete mode 100644 examples/declarative/ui-components/main/qml/SearchBox.qml delete mode 100644 examples/declarative/ui-components/main/qml/TabWidget.qml delete mode 100644 examples/declarative/ui-components/main/qml/content/ProgressBar.qml delete mode 100644 examples/declarative/ui-components/main/qml/content/Spinner.qml delete mode 100644 examples/declarative/ui-components/main/qml/main.qml delete mode 100644 examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/ui-components/{main/qml => progressbar}/content/background.png (100%) delete mode 100644 examples/declarative/ui-components/progressbar/main.cpp delete mode 100644 examples/declarative/ui-components/progressbar/progressbar.desktop delete mode 100644 examples/declarative/ui-components/progressbar/progressbar.png delete mode 100644 examples/declarative/ui-components/progressbar/progressbar.pro delete mode 100644 examples/declarative/ui-components/progressbar/progressbar.svg delete mode 100644 examples/declarative/ui-components/progressbar/qml/content/ProgressBar.qml delete mode 100644 examples/declarative/ui-components/progressbar/qml/content/background.png delete mode 100644 examples/declarative/ui-components/progressbar/qml/main.qml delete mode 100644 examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.pri rename examples/declarative/ui-components/{main/qml => scrollbar}/pics/niagara_falls.jpg (100%) rename examples/declarative/ui-components/{main/qml => searchbox}/images/clear.png (100%) rename examples/declarative/ui-components/{main/qml => searchbox}/images/lineedit-bg-focus.png (100%) rename examples/declarative/ui-components/{main/qml => searchbox}/images/lineedit-bg.png (100%) rename examples/declarative/ui-components/slideswitch/{qml => }/content/background.svg (100%) rename examples/declarative/ui-components/slideswitch/{qml => }/content/knob.svg (100%) delete mode 100644 examples/declarative/ui-components/slideswitch/main.cpp delete mode 100644 examples/declarative/ui-components/slideswitch/qml/content/Switch.qml delete mode 100644 examples/declarative/ui-components/slideswitch/qml/slideswitch.qml delete mode 100644 examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/README delete mode 100644 examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/changelog delete mode 100644 examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/compat delete mode 100644 examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/control delete mode 100644 examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/copyright delete mode 100755 examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/rules delete mode 100644 examples/declarative/ui-components/slideswitch/slideswitch.desktop delete mode 100644 examples/declarative/ui-components/slideswitch/slideswitch.png delete mode 100644 examples/declarative/ui-components/slideswitch/slideswitch.pro delete mode 100644 examples/declarative/ui-components/slideswitch/slideswitch.svg rename examples/declarative/ui-components/{main/qml => spinner}/content/spinner-bg.png (100%) rename examples/declarative/ui-components/{main/qml => spinner}/content/spinner-select.png (100%) rename examples/declarative/ui-components/{main/qml => tabwidget}/tab.png (100%) delete mode 100644 examples/declarative/xml/xmlhttprequest-example/main.cpp delete mode 100644 examples/declarative/xml/xmlhttprequest-example/qml/xmlhttprequest-example.qml delete mode 100644 examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.cpp delete mode 100644 examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.h delete mode 100644 examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.pri delete mode 100644 examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.desktop delete mode 100644 examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.png delete mode 100644 examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.pro delete mode 100644 examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.svg rename examples/declarative/xml/{xmlhttprequest-example/qml => xmlhttprequest}/data.xml (100%) delete mode 100644 examples/declarative/xml/xmlhttprequest/xmlhttprequest.qmlproject diff --git a/examples/declarative/sqllocalstorage/hello.qml b/examples/declarative/sqllocalstorage/hello.qml index 489dd50822..4527e78aec 100644 --- a/examples/declarative/sqllocalstorage/hello.qml +++ b/examples/declarative/sqllocalstorage/hello.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ //![0] -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { color: "white" diff --git a/examples/declarative/threading/threadedlistmodel/timedisplay.qml b/examples/declarative/threading/threadedlistmodel/timedisplay.qml index 42d1345292..8037e5a611 100644 --- a/examples/declarative/threading/threadedlistmodel/timedisplay.qml +++ b/examples/declarative/threading/threadedlistmodel/timedisplay.qml @@ -39,7 +39,7 @@ ****************************************************************************/ // ![0] -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { color: "white" diff --git a/examples/declarative/threading/workerscript/workerscript.qml b/examples/declarative/threading/workerscript/workerscript.qml index f3ba4811cd..b4d56de836 100644 --- a/examples/declarative/threading/workerscript/workerscript.qml +++ b/examples/declarative/threading/workerscript/workerscript.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { width: 480; height: 320 diff --git a/examples/declarative/touchinteraction/gestures/experimental-gestures.qml b/examples/declarative/touchinteraction/gestures/experimental-gestures.qml deleted file mode 100644 index c607194351..0000000000 --- a/examples/declarative/touchinteraction/gestures/experimental-gestures.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import Qt.labs.gestures 1.0 - -// Only works on platforms with Touch support. - -Rectangle { - id: rect - width: 320 - height: 180 - - Text { - anchors.centerIn: parent - text: "Tap / TapAndHold / Pan / Pinch / Swipe\nOnly works on platforms with Touch support." - horizontalAlignment: Text.Center - } - - GestureArea { - anchors.fill: parent - focus: true - - // Only some of the many gesture properties are shown. See Gesture documentation. - - onTap: - console.log("tap pos = (",gesture.position.x,",",gesture.position.y,")") - onTapAndHold: - console.log("tap and hold pos = (",gesture.position.x,",",gesture.position.y,")") - onPan: - console.log("pan delta = (",gesture.delta.x,",",gesture.delta.y,") acceleration = ",gesture.acceleration) - onPinch: - console.log("pinch center = (",gesture.centerPoint.x,",",gesture.centerPoint.y,") rotation =",gesture.rotationAngle," scale =",gesture.scaleFactor) - onSwipe: - console.log("swipe angle=",gesture.swipeAngle) - onGesture: - console.log("gesture hot spot = (",gesture.hotSpot.x,",",gesture.hotSpot.y,")") - } -} diff --git a/examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.desktop b/examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.desktop deleted file mode 100644 index aa5062e673..0000000000 --- a/examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=experimental-gestures -Exec=/opt/usr/bin/experimental-gestures -Icon=experimental-gestures -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.png b/examples/declarative/touchinteraction/gestures/experimental-gestures/experimentalgestures.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/touchinteraction/gestures/experimental-gestures/main.cpp b/examples/declarative/touchinteraction/gestures/experimental-gestures/main.cpp deleted file mode 100644 index 08268613a8..0000000000 --- a/examples/declarative/touchinteraction/gestures/experimental-gestures/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/experimental-gestures.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/touchinteraction/gestures/experimental-gestures/qml/experimental-gestures.qml b/examples/declarative/touchinteraction/gestures/experimental-gestures/qml/experimental-gestures.qml deleted file mode 100644 index 6a4cb3d066..0000000000 --- a/examples/declarative/touchinteraction/gestures/experimental-gestures/qml/experimental-gestures.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import Qt.labs.gestures 1.0 - -// Only works on platforms with Touch support. - -Rectangle { - id: rect - width: 320 - height: 180 - - Text { - anchors.centerIn: parent - text: "Tap / TapAndHold / Pan / Pinch / Swipe\nOnly works on platforms with Touch support." - horizontalAlignment: Text.Center - } - - GestureArea { - anchors.fill: parent - focus: true - - // Only some of the many gesture properties are shown. See Gesture documentation. - - onTap: - console.log("tap pos = (",gesture.position.x,",",gesture.position.y,")") - onTapAndHold: - console.log("tap and hold pos = (",gesture.position.x,",",gesture.position.y,")") - onPan: - console.log("pan delta = (",gesture.delta.x,",",gesture.delta.y,") acceleration = ",gesture.acceleration) - onPinch: - console.log("pinch center = (",gesture.centerPoint.x,",",gesture.centerPoint.y,") rotation =",gesture.rotationAngle," scale =",gesture.scaleFactor) - onSwipe: - console.log("swipe angle=",gesture.swipeAngle) - onGesture: - console.log("gesture hot spot = (",gesture.hotSpot.x,",",gesture.hotSpot.y,")") - } -} diff --git a/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/touchinteraction/gestures/experimental-gestures/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example.qml b/examples/declarative/touchinteraction/mousearea/mousearea-example.qml index 889a6d063f..85dcef34e8 100644 --- a/examples/declarative/touchinteraction/mousearea/mousearea-example.qml +++ b/examples/declarative/touchinteraction/mousearea/mousearea-example.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: box diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example/main.cpp b/examples/declarative/touchinteraction/mousearea/mousearea-example/main.cpp deleted file mode 100644 index db7fd5ab2d..0000000000 --- a/examples/declarative/touchinteraction/mousearea/mousearea-example/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/mousearea-example.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.desktop b/examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.desktop deleted file mode 100644 index 2306ece95f..0000000000 --- a/examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=mousearea-example -Exec=/opt/usr/bin/mousearea-example -Icon=mousearea-example -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.png b/examples/declarative/touchinteraction/mousearea/mousearea-example/mouseareaexample.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 zcmV-O4Y%@%P)ht(u000b3 zNkl+r+m%F_C;*wliAId+l;Bw~NnREVgX6DSfv+(~Ms$%J>UH~1TiKG?i==6q;ABhC^ z?Fa;PP1zvRpk{yshy{xNzW=_}wlshM$8bMz0ywE)|E?{*$bARG!R}74&+E~=fBGSCH_q~3rZLE`kFZF`Zg5p_(F9S`V+!f^EBN1AfbVO>l zV*?2wmM7*K$N;DTgsUiqL8d@0kV=|_n&`jpzizedO9)tWdFTh8K`^#$^77P!9khgW zY!Rx>mStcADTf#t1$7O$0t|o*0XKn3gatG^hba2{-neB1+ztE?*sLjd^k^HO+7rUI z#U<*@0G0o{w7eb^h!lqynFTclTrU#CporX1FqyNMH+0Ern&N9m&#V&xj_U(F2mB2J zt<46%_t{NEnvD|IFZF~~d&Uw1T_g&S##v*=ONjw)029C*A{l`GV{0SE$m`(;jw}{N znskEx<>q}Q<12YZEl*LE3Ih306gaq~kqj^oOalLlQhy0dt;u@8$p7^Lt&4>oL!oPx z#8s8=%aut5!dB!t3TKe~K&L~H1lMXjK+#OKRHI5GD|IzkUH?i3OO@}-LaMj9G8lz# z%l5CTmMR6d2)5Xi&TXYMH@9`QFE#2K3&XXz*HoZoHYmE}} z2gzCqV(C$)Qa4CsW6qOGtI%%!WV`fQi$l5ySZr*mjmtm*mMy$LnBc~UpU3Zbir>EL z5q7k1!|(B;ltK`4R+^dg2p6W_d^>jD_u(zaPCr^^8@hrk3G%j4n9z3e5I$h zHt*%PdcQ(f^FBoE0!itt&AS&D@SD9H-ToBEcllZB+s zk=+N-HEn5kb?LNr0_tj96^ef~kie^2ICbnKhHki|lDRofU;aApOn#Gh#$V=lzx5aV z$Jx^^nO%`X>~HULygE0g(X z`b{py-oel{4)1Lt5=ryItKVXDcD&f3()r}32l444EK3-kNE2=Dpl9>WCG-onSlD9c zr%N?M8yN>I$G3v%iKcWshT`^}P5k(+E4)4M9*-UV z&4O$+)XU|82r~)zlcQfDWVF&5ZZFgaJuU2x93q*UBV#3rrAM(ON9|alVFXl)&YX@% zrn2~rAcuB*qU@=(8D~0mGavLg@|)W{pqZSz_G=dbK~FOQb~8TtAx|87jOIX-tF6w^ zE}q=qk0lm!nQ>k||12}9;gZF6-KIckC(i%2z(g#|rlvN!+qYIAV1cALUyv7|DWDVZ zX$(wW$FeP#{K4*hcr=|#P$&$|hffa@Fv3e>f?B$+m4Id1%9%neo+H}QK_nQiKtO_= zl`f2u2zU)e(5EpuKSS2cx#Vx(wu^As=Cu#baASJJRhKn0OvcBFC8vpJ=CQ?My|Bz# zz=^_Co`6)^qH{|deviLQGGit4^Rx(EQ~10ZbLj+GD@TChb9=j@^z6)V>N`*Kk5B$J ze{}qdg}TxBWxn^(KOkbGYZ?h_s*YG=wFFc=3zU$c6s9F)Od%3%#;D-BreyPxTM?QD z9z!FUO_9xIol|}uej|j>6Ch{jux$5pqD;~k-A=y!k1x!=$7+wtBz2KR47Sqly&wN$2gymjWt&D)GPzc~L zAmG!PO3acmvt?3VJ(xek7m2e4a;8m_*N@k56OcCJydSwcE%(-LUHTXJ-cXJh2-bmfHU`sYDbPJpf{I$AtTF3d1C zH&IsaGnxn(&H4YF1v8Tqk{O%MaC?~t#L~l6(YG zroAqg9-GOc<1ITrCv$U*#4lBy$A<1jDGgg}EZeNG>nIwv2-NKXBF;O*?VUc}xNw${ z*m#*_PwU-;JgtCDCMW!QFwTLkdpNTDPM6%s!bPT2Hw$NqtmQsLwFSE9^d4klv>kuu zZd!fa1c|QgD-B(7M^6)jQ&;)P2R|#5j5hUhWb30~dpLW3j%=!huYUfIUD+N> zOg@-AL&i!H^y~OMFf=vnYA0y4aPszNc=n-}`150b%a-Pyg-mjzVN^c`m%|q5>GIPZ z)p_a6zw_{cV|2Afi)<>LquYK5zrCH-%oUz{_%43qwmV&I49%Y7;>=qpG@632BkJd8 z7tS&=JI>a~=7L-}5GEW5uWK#(MxIsFk7E1)e|s&!n>Mz1-0J+_UopfA-KH za&OO}CBYF)r*3lQ+IL8s3xE?@_8p8cZ(Za0(=T#kW(3nRvBe^5rI<=y=iJzj8B1J2 z)xTk_2vt0wIwK;&mJTnEe7cPvy!#3vUx24S_hs6eA~m`ZMiwsd)1j9bUbs-$5k#P~ z)x#6V+ZdaEotMsDX783=1ie1uxfx>V5#reyZ0s7Z)YeMCilGpJ-Ccf~Lpndd_+765 z+a;d7>m;AnImz;OWWy}P>n)oTRnX!^lEY3ZF{6#Dc zP3eWtdbxc=2v{URq3CS&v1OCaF9zOYVEn2}rp4FECpsQLQ$~gR152@@J>5iMHTEp9 zmbgOTwypq)+ybwkf6Hx_(&+2{0*~+cD~@)35x?GCF?F^=+yrLVZhq-;c$IqD0$m+m zc5U(T@;g7`=FF(8-fuK>pz}eFZ2dewBe?pGiugIGL}Lk9BRn3({hx|39KXWzKl+!7 zC&mJ5-bPt0t45OC0A2y;?_2xbL3dhw4R4!7U~7k$#~*0t+{M#;_4_fNIQ%GkqPqzC z{Fru@iNqkLopCayuA3jF3DBx@F$?M&px$p>POu^EIL3&;mUb_j@9_{%y~nH9KjiJH zFn*68OEP4v6sDamNuAY`{8WHU0^b1jB8W8VcDg$bSTz|%BSf72I~;Uwcw}XkOeQa- zN>|#7#+$$bFbQ%K=Z5G-Q2zs*1I$KV%`Xz*a{tmd#PwW{T{?%<;++x}lOt6OjpN+* zyh-s&?Bdn?QBX0Q%hnAW@#+Lr-J9yYq*QhOS|x@K=8e3ZH*^eS1|bPb`j36QKfG8Z zAP&3?+zy0mKT_2r@`lPZFbrxaZ{(t(qreQ11hK(Sf8VPgtFe^{`1WNu)oTGS0vV9M z1KO%TqAZ*rM@-}VIAYK-Qmz0)j`740Nr19ZN&5TVzSVZtAOOgdU;^L7B5vsF1ravm zc*acLs3D53I|MQUY8q4m3!7f(?^>Tb{p$($g#A)4e1B9s{@lL%?>o@kZ5V1WZ~Qcn zz|bu+Ir<-X<5ugvfemb60~^@D1~#yPwc`H(pHeSaefwW^{L9a%BKPWN%_+ eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example/qml/mousearea-example.qml b/examples/declarative/touchinteraction/mousearea/mousearea-example/qml/mousearea-example.qml deleted file mode 100644 index 8dacc05eba..0000000000 --- a/examples/declarative/touchinteraction/mousearea/mousearea-example/qml/mousearea-example.qml +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - id: box - width: 350; height: 250 - - Rectangle { - id: redSquare - width: 80; height: 80 - anchors.top: parent.top; anchors.left: parent.left; anchors.margins: 10 - color: "red" - - Text { text: "Click"; font.pixelSize: 16; anchors.centerIn: parent } - - MouseArea { - anchors.fill: parent - hoverEnabled: true - acceptedButtons: Qt.LeftButton | Qt.RightButton - - onEntered: info.text = 'Entered' - onExited: info.text = 'Exited (pressed=' + pressed + ')' - - onPressed: { - info.text = 'Pressed (button=' + (mouse.button == Qt.RightButton ? 'right' : 'left') - + ' shift=' + (mouse.modifiers & Qt.ShiftModifier ? 'true' : 'false') + ')' - var posInBox = redSquare.mapToItem(box, mouse.x, mouse.y) - posInfo.text = + mouse.x + ',' + mouse.y + ' in square' - + ' (' + posInBox.x + ',' + posInBox.y + ' in window)' - } - - onReleased: { - info.text = 'Released (isClick=' + mouse.isClick + ' wasHeld=' + mouse.wasHeld + ')' - posInfo.text = '' - } - - onPressAndHold: info.text = 'Press and hold' - onClicked: info.text = 'Clicked (wasHeld=' + mouse.wasHeld + ')' - onDoubleClicked: info.text = 'Double clicked' - } - } - - Rectangle { - id: blueSquare - width: 80; height: 80 - x: box.width - width - 10; y: 10 // making this item draggable, so don't use anchors - color: "blue" - - Text { text: "Drag"; font.pixelSize: 16; color: "white"; anchors.centerIn: parent } - - MouseArea { - anchors.fill: parent - drag.target: blueSquare - drag.axis: Drag.XandYAxis - drag.minimumX: 0 - drag.maximumX: box.width - parent.width - drag.minimumY: 0 - drag.maximumY: box.height - parent.width - } - } - - Text { - id: info - anchors.bottom: posInfo.top; anchors.horizontalCenter: parent.horizontalCenter; anchors.margins: 30 - - onTextChanged: console.log(text) - } - - Text { - id: posInfo - anchors.bottom: parent.bottom; anchors.horizontalCenter: parent.horizontalCenter; anchors.margins: 30 - } -} diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/touchinteraction/mousearea/mousearea-example/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/touchinteraction/mousearea/mousearea.qmlproject b/examples/declarative/touchinteraction/mousearea/mousearea.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/touchinteraction/mousearea/mousearea.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/touchinteraction/pincharea/flickresize.qml b/examples/declarative/touchinteraction/pincharea/flickresize.qml index cf5278d346..02637b37d0 100644 --- a/examples/declarative/touchinteraction/pincharea/flickresize.qml +++ b/examples/declarative/touchinteraction/pincharea/flickresize.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.1 +import QtQuick 2.0 Rectangle { width: 640 diff --git a/examples/declarative/touchinteraction/pincharea/pincharea.qmlproject b/examples/declarative/touchinteraction/pincharea/pincharea.qmlproject deleted file mode 100644 index e5262175c5..0000000000 --- a/examples/declarative/touchinteraction/pincharea/pincharea.qmlproject +++ /dev/null @@ -1,18 +0,0 @@ -/* File generated by QtCreator */ - -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/declarative/touchinteraction/touchinteraction.pro b/examples/declarative/touchinteraction/touchinteraction.pro deleted file mode 100644 index 1beaeab3c4..0000000000 --- a/examples/declarative/touchinteraction/touchinteraction.pro +++ /dev/null @@ -1,4 +0,0 @@ -TEMPLATE = subdirs -SUBDIRS = gestures \ - mousearea \ - pincharea diff --git a/examples/declarative/ui-components/dialcontrol/content/Dial.qml b/examples/declarative/ui-components/dialcontrol/content/Dial.qml index 5b3799211e..a69ad521bd 100644 --- a/examples/declarative/ui-components/dialcontrol/content/Dial.qml +++ b/examples/declarative/ui-components/dialcontrol/content/Dial.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: root diff --git a/examples/declarative/ui-components/dialcontrol/content/QuitButton.qml b/examples/declarative/ui-components/dialcontrol/content/QuitButton.qml index 39f8f77e33..7ab91c4376 100644 --- a/examples/declarative/ui-components/dialcontrol/content/QuitButton.qml +++ b/examples/declarative/ui-components/dialcontrol/content/QuitButton.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { source: "quit.png" scale: quitMouse.pressed ? 0.8 : 1.0 diff --git a/examples/declarative/ui-components/dialcontrol/qml/content/background.png b/examples/declarative/ui-components/dialcontrol/content/background.png similarity index 100% rename from examples/declarative/ui-components/dialcontrol/qml/content/background.png rename to examples/declarative/ui-components/dialcontrol/content/background.png diff --git a/examples/declarative/ui-components/dialcontrol/qml/content/needle.png b/examples/declarative/ui-components/dialcontrol/content/needle.png similarity index 100% rename from examples/declarative/ui-components/dialcontrol/qml/content/needle.png rename to examples/declarative/ui-components/dialcontrol/content/needle.png diff --git a/examples/declarative/ui-components/dialcontrol/qml/content/needle_shadow.png b/examples/declarative/ui-components/dialcontrol/content/needle_shadow.png similarity index 100% rename from examples/declarative/ui-components/dialcontrol/qml/content/needle_shadow.png rename to examples/declarative/ui-components/dialcontrol/content/needle_shadow.png diff --git a/examples/declarative/ui-components/dialcontrol/qml/content/overlay.png b/examples/declarative/ui-components/dialcontrol/content/overlay.png similarity index 100% rename from examples/declarative/ui-components/dialcontrol/qml/content/overlay.png rename to examples/declarative/ui-components/dialcontrol/content/overlay.png diff --git a/examples/declarative/ui-components/dialcontrol/qml/content/quit.png b/examples/declarative/ui-components/dialcontrol/content/quit.png similarity index 100% rename from examples/declarative/ui-components/dialcontrol/qml/content/quit.png rename to examples/declarative/ui-components/dialcontrol/content/quit.png diff --git a/examples/declarative/ui-components/dialcontrol/dialcontrol.desktop b/examples/declarative/ui-components/dialcontrol/dialcontrol.desktop deleted file mode 100644 index d12a374c09..0000000000 --- a/examples/declarative/ui-components/dialcontrol/dialcontrol.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=dialcontrol -Exec=/opt/usr/bin/dialcontrol -Icon=dialcontrol -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/ui-components/dialcontrol/dialcontrol.png b/examples/declarative/ui-components/dialcontrol/dialcontrol.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/ui-components/dialcontrol/main.cpp b/examples/declarative/ui-components/dialcontrol/main.cpp deleted file mode 100644 index 8b7bb6abf3..0000000000 --- a/examples/declarative/ui-components/dialcontrol/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/dialcontrol.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/ui-components/dialcontrol/qml/content/Dial.qml b/examples/declarative/ui-components/dialcontrol/qml/content/Dial.qml deleted file mode 100644 index 2f1d27ab95..0000000000 --- a/examples/declarative/ui-components/dialcontrol/qml/content/Dial.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: root - property real value : 0 - - width: 210; height: 210 - - Image { source: "background.png" } - -//! [needle_shadow] - Image { - x: 96 - y: 35 - source: "needle_shadow.png" - transform: Rotation { - origin.x: 9; origin.y: 67 - angle: needleRotation.angle - } - } -//! [needle_shadow] -//! [needle] - Image { - id: needle - x: 98; y: 33 - smooth: true - source: "needle.png" - transform: Rotation { - id: needleRotation - origin.x: 5; origin.y: 65 - //! [needle angle] - angle: Math.min(Math.max(-130, root.value*2.6 - 130), 133) - Behavior on angle { - SpringAnimation { - spring: 1.4 - damping: .15 - } - } - //! [needle angle] - } - } -//! [needle] -//! [overlay] - Image { x: 21; y: 18; source: "overlay.png" } -//! [overlay] -} diff --git a/examples/declarative/ui-components/dialcontrol/qml/content/QuitButton.qml b/examples/declarative/ui-components/dialcontrol/qml/content/QuitButton.qml deleted file mode 100644 index cbbf916a4b..0000000000 --- a/examples/declarative/ui-components/dialcontrol/qml/content/QuitButton.qml +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -Image { - source: "quit.png" - scale: quitMouse.pressed ? 0.8 : 1.0 - smooth: quitMouse.pressed - MouseArea { - id: quitMouse - anchors.fill: parent - anchors.margins: -10 - onClicked: Qt.quit() - } -} diff --git a/examples/declarative/ui-components/dialcontrol/qml/dialcontrol.qml b/examples/declarative/ui-components/dialcontrol/qml/dialcontrol.qml deleted file mode 100644 index c66dcddbda..0000000000 --- a/examples/declarative/ui-components/dialcontrol/qml/dialcontrol.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [imports] -import QtQuick 1.0 -import "content" -//! [imports] - -//! [0] -Rectangle { - color: "#545454" - width: 300; height: 300 - - // Dial with a slider to adjust it - Dial { - id: dial - anchors.centerIn: parent - value: slider.x * 100 / (container.width - 34) - } - - Rectangle { - id: container - anchors { bottom: parent.bottom; left: parent.left - right: parent.right; leftMargin: 20; rightMargin: 20 - bottomMargin: 10 - } - height: 16 - - radius: 8 - opacity: 0.7 - smooth: true - gradient: Gradient { - GradientStop { position: 0.0; color: "gray" } - GradientStop { position: 1.0; color: "white" } - } - - Rectangle { - id: slider - x: 1; y: 1; width: 30; height: 14 - radius: 6 - smooth: true - gradient: Gradient { - GradientStop { position: 0.0; color: "#424242" } - GradientStop { position: 1.0; color: "black" } - } - - MouseArea { - anchors.fill: parent - anchors.margins: -16 // Increase mouse area a lot outside the slider - drag.target: parent; drag.axis: Drag.XAxis - drag.minimumX: 2; drag.maximumX: container.width - 32 - } - } - } - QuitButton { - anchors.right: parent.right - anchors.top: parent.top - anchors.margins: 10 - } -} -//! [0] diff --git a/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/ui-components/dialcontrol/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/ui-components/flipable/qml/content/5_heart.png b/examples/declarative/ui-components/flipable/content/5_heart.png similarity index 100% rename from examples/declarative/ui-components/flipable/qml/content/5_heart.png rename to examples/declarative/ui-components/flipable/content/5_heart.png diff --git a/examples/declarative/ui-components/flipable/qml/content/9_club.png b/examples/declarative/ui-components/flipable/content/9_club.png similarity index 100% rename from examples/declarative/ui-components/flipable/qml/content/9_club.png rename to examples/declarative/ui-components/flipable/content/9_club.png diff --git a/examples/declarative/ui-components/flipable/content/Card.qml b/examples/declarative/ui-components/flipable/content/Card.qml index 6574733abb..e8159e65d8 100644 --- a/examples/declarative/ui-components/flipable/content/Card.qml +++ b/examples/declarative/ui-components/flipable/content/Card.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Flipable { id: container diff --git a/examples/declarative/ui-components/flipable/qml/content/back.png b/examples/declarative/ui-components/flipable/content/back.png similarity index 100% rename from examples/declarative/ui-components/flipable/qml/content/back.png rename to examples/declarative/ui-components/flipable/content/back.png diff --git a/examples/declarative/ui-components/flipable/flipable.desktop b/examples/declarative/ui-components/flipable/flipable.desktop deleted file mode 100644 index 640d99dfdb..0000000000 --- a/examples/declarative/ui-components/flipable/flipable.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=flipable -Exec=/opt/usr/bin/flipable -Icon=flipable -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/ui-components/flipable/flipable.png b/examples/declarative/ui-components/flipable/flipable.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/ui-components/flipable/main.cpp b/examples/declarative/ui-components/flipable/main.cpp deleted file mode 100644 index feb8121241..0000000000 --- a/examples/declarative/ui-components/flipable/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/flipable.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/ui-components/flipable/qml/content/Card.qml b/examples/declarative/ui-components/flipable/qml/content/Card.qml deleted file mode 100644 index 32c4ed124c..0000000000 --- a/examples/declarative/ui-components/flipable/qml/content/Card.qml +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Flipable { - id: container - - property alias image: frontImage.source - property bool flipped: true - property int xAxis: 0 - property int yAxis: 0 - property int angle: 0 - - width: front.width; height: front.height - - front: Image { id: frontImage; smooth: true } - back: Image { source: "back.png"; smooth: true } - - state: "back" - - MouseArea { anchors.fill: parent; onClicked: container.flipped = !container.flipped } - - transform: Rotation { - id: rotation; origin.x: container.width / 2; origin.y: container.height / 2 - axis.x: container.xAxis; axis.y: container.yAxis; axis.z: 0 - } - - states: State { - name: "back"; when: container.flipped - PropertyChanges { target: rotation; angle: container.angle } - } - - transitions: Transition { - ParallelAnimation { - NumberAnimation { target: rotation; properties: "angle"; duration: 600 } - SequentialAnimation { - NumberAnimation { target: container; property: "scale"; to: 0.75; duration: 300 } - NumberAnimation { target: container; property: "scale"; to: 1.0; duration: 300 } - } - } - } -} diff --git a/examples/declarative/ui-components/flipable/qml/flipable.qml b/examples/declarative/ui-components/flipable/qml/flipable.qml deleted file mode 100644 index 51867f9dac..0000000000 --- a/examples/declarative/ui-components/flipable/qml/flipable.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" - -Rectangle { - id: window - - width: 480; height: 320 - color: "darkgreen" - - Row { - anchors.centerIn: parent; spacing: 30 - Card { image: "content/9_club.png"; angle: 180; yAxis: 1 } - Card { image: "content/5_heart.png"; angle: 540; xAxis: 1 } - } -} diff --git a/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/ui-components/flipable/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/ui-components/main/main.cpp b/examples/declarative/ui-components/main/main.cpp deleted file mode 100644 index d60f16d2d2..0000000000 --- a/examples/declarative/ui-components/main/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/main.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/ui-components/main/main.desktop b/examples/declarative/ui-components/main/main.desktop deleted file mode 100644 index 157fa32764..0000000000 --- a/examples/declarative/ui-components/main/main.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=main -Exec=/opt/usr/bin/main -Icon=main -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/ui-components/main/main.png b/examples/declarative/ui-components/main/main.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/ui-components/main/qml/ScrollBar.qml b/examples/declarative/ui-components/main/qml/ScrollBar.qml deleted file mode 100644 index faa501a593..0000000000 --- a/examples/declarative/ui-components/main/qml/ScrollBar.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: scrollBar - - // The properties that define the scrollbar's state. - // position and pageSize are in the range 0.0 - 1.0. They are relative to the - // height of the page, i.e. a pageSize of 0.5 means that you can see 50% - // of the height of the view. - // orientation can be either Qt.Vertical or Qt.Horizontal - property real position - property real pageSize - property variant orientation : Qt.Vertical - - // A light, semi-transparent background - Rectangle { - id: background - anchors.fill: parent - radius: orientation == Qt.Vertical ? (width/2 - 1) : (height/2 - 1) - color: "white" - opacity: 0.3 - } - - // Size the bar to the required size, depending upon the orientation. - Rectangle { - x: orientation == Qt.Vertical ? 1 : (scrollBar.position * (scrollBar.width-2) + 1) - y: orientation == Qt.Vertical ? (scrollBar.position * (scrollBar.height-2) + 1) : 1 - width: orientation == Qt.Vertical ? (parent.width-2) : (scrollBar.pageSize * (scrollBar.width-2)) - height: orientation == Qt.Vertical ? (scrollBar.pageSize * (scrollBar.height-2)) : (parent.height-2) - radius: orientation == Qt.Vertical ? (width/2 - 1) : (height/2 - 1) - color: "black" - opacity: 0.7 - } -} diff --git a/examples/declarative/ui-components/main/qml/SearchBox.qml b/examples/declarative/ui-components/main/qml/SearchBox.qml deleted file mode 100644 index f54954ae00..0000000000 --- a/examples/declarative/ui-components/main/qml/SearchBox.qml +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -FocusScope { - id: focusScope - width: 250; height: 28 - - BorderImage { - source: "images/lineedit-bg.png" - width: parent.width; height: parent.height - border { left: 4; top: 4; right: 4; bottom: 4 } - } - - BorderImage { - source: "images/lineedit-bg-focus.png" - width: parent.width; height: parent.height - border { left: 4; top: 4; right: 4; bottom: 4 } - visible: parent.activeFocus ? true : false - } - - Text { - id: typeSomething - anchors.fill: parent; anchors.leftMargin: 8 - verticalAlignment: Text.AlignVCenter - text: "Type something..." - color: "gray" - font.italic: true - } - - MouseArea { - anchors.fill: parent - onClicked: { focusScope.focus = true; textInput.openSoftwareInputPanel(); } - } - - TextInput { - id: textInput - anchors { left: parent.left; leftMargin: 8; right: clear.left; rightMargin: 8; verticalCenter: parent.verticalCenter } - focus: true - selectByMouse: true - } - - Image { - id: clear - anchors { right: parent.right; rightMargin: 8; verticalCenter: parent.verticalCenter } - source: "images/clear.png" - opacity: 0 - - MouseArea { - anchors.fill: parent - onClicked: { textInput.text = ''; focusScope.focus = true; textInput.openSoftwareInputPanel(); } - } - } - - states: State { - name: "hasText"; when: textInput.text != '' - PropertyChanges { target: typeSomething; opacity: 0 } - PropertyChanges { target: clear; opacity: 1 } - } - - transitions: [ - Transition { - from: ""; to: "hasText" - NumberAnimation { exclude: typeSomething; properties: "opacity" } - }, - Transition { - from: "hasText"; to: "" - NumberAnimation { properties: "opacity" } - } - ] -} diff --git a/examples/declarative/ui-components/main/qml/TabWidget.qml b/examples/declarative/ui-components/main/qml/TabWidget.qml deleted file mode 100644 index f066fd2eb9..0000000000 --- a/examples/declarative/ui-components/main/qml/TabWidget.qml +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: tabWidget - - // Setting the default property to stack.children means any child items - // of the TabWidget are actually added to the 'stack' item's children. - // See the "Extending Types from QML" documentation for details on default - // properties. - default property alias content: stack.children - - property int current: 0 - - onCurrentChanged: setOpacities() - Component.onCompleted: setOpacities() - - function setOpacities() { - for (var i = 0; i < stack.children.length; ++i) { - stack.children[i].opacity = (i == current ? 1 : 0) - } - } - - Row { - id: header - - Repeater { - model: stack.children.length - delegate: Rectangle { - width: tabWidget.width / stack.children.length; height: 36 - - Rectangle { - width: parent.width; height: 1 - anchors { bottom: parent.bottom; bottomMargin: 1 } - color: "#acb2c2" - } - BorderImage { - anchors { fill: parent; leftMargin: 2; topMargin: 5; rightMargin: 1 } - border { left: 7; right: 7 } - source: "tab.png" - visible: tabWidget.current == index - } - Text { - horizontalAlignment: Qt.AlignHCenter; verticalAlignment: Qt.AlignVCenter - anchors.fill: parent - text: stack.children[index].title - elide: Text.ElideRight - font.bold: tabWidget.current == index - } - MouseArea { - anchors.fill: parent - onClicked: tabWidget.current = index - } - } - } - } - - Item { - id: stack - width: tabWidget.width - anchors.top: header.bottom; anchors.bottom: tabWidget.bottom - } -} diff --git a/examples/declarative/ui-components/main/qml/content/ProgressBar.qml b/examples/declarative/ui-components/main/qml/content/ProgressBar.qml deleted file mode 100644 index e92342adcf..0000000000 --- a/examples/declarative/ui-components/main/qml/content/ProgressBar.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: progressbar - - property int minimum: 0 - property int maximum: 100 - property int value: 0 - property alias color: gradient1.color - property alias secondColor: gradient2.color - - width: 250; height: 23 - clip: true - - BorderImage { - source: "background.png" - width: parent.width; height: parent.height - border { left: 4; top: 4; right: 4; bottom: 4 } - } - - Rectangle { - id: highlight - - property int widthDest: ((progressbar.width * (value - minimum)) / (maximum - minimum) - 6) - - width: highlight.widthDest - Behavior on width { SmoothedAnimation { velocity: 1200 } } - - anchors { left: parent.left; top: parent.top; bottom: parent.bottom; margins: 3 } - radius: 1 - gradient: Gradient { - GradientStop { id: gradient1; position: 0.0 } - GradientStop { id: gradient2; position: 1.0 } - } - - } - Text { - anchors { right: highlight.right; rightMargin: 6; verticalCenter: parent.verticalCenter } - color: "white" - font.bold: true - text: Math.floor((value - minimum) / (maximum - minimum) * 100) + '%' - } -} diff --git a/examples/declarative/ui-components/main/qml/content/Spinner.qml b/examples/declarative/ui-components/main/qml/content/Spinner.qml deleted file mode 100644 index 853c787ea4..0000000000 --- a/examples/declarative/ui-components/main/qml/content/Spinner.qml +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Image { - property alias model: view.model - property alias delegate: view.delegate - property alias currentIndex: view.currentIndex - property real itemHeight: 30 - - source: "spinner-bg.png" - clip: true - - PathView { - id: view - anchors.fill: parent - - pathItemCount: height/itemHeight - preferredHighlightBegin: 0.5 - preferredHighlightEnd: 0.5 - highlight: Image { source: "spinner-select.png"; width: view.width; height: itemHeight+4 } - dragMargin: view.width/2 - - path: Path { - startX: view.width/2; startY: -itemHeight/2 - PathLine { x: view.width/2; y: view.pathItemCount*itemHeight + itemHeight } - } - } - - Keys.onDownPressed: view.incrementCurrentIndex() - Keys.onUpPressed: view.decrementCurrentIndex() -} diff --git a/examples/declarative/ui-components/main/qml/main.qml b/examples/declarative/ui-components/main/qml/main.qml deleted file mode 100644 index 842ef1a0a6..0000000000 --- a/examples/declarative/ui-components/main/qml/main.qml +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -TabWidget { - id: tabs - width: 640; height: 480 - - Rectangle { - property string title: "Red" - anchors.fill: parent - color: "#e3e3e3" - - Rectangle { - anchors.fill: parent; anchors.margins: 20 - color: "#ff7f7f" - Text { - width: parent.width - 20 - anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter - text: "Roses are red" - font.pixelSize: 20 - wrapMode: Text.WordWrap - } - } - } - - Rectangle { - property string title: "Green" - anchors.fill: parent - color: "#e3e3e3" - - Rectangle { - anchors.fill: parent; anchors.margins: 20 - color: "#7fff7f" - Text { - width: parent.width - 20 - anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter - text: "Flower stems are green" - font.pixelSize: 20 - wrapMode: Text.WordWrap - } - } - } - - Rectangle { - property string title: "Blue" - anchors.fill: parent; color: "#e3e3e3" - - Rectangle { - anchors.fill: parent; anchors.margins: 20 - color: "#7f7fff" - Text { - width: parent.width - 20 - anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter - text: "Violets are blue" - font.pixelSize: 20 - wrapMode: Text.WordWrap - } - } - } -} diff --git a/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/ui-components/main/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/ui-components/progressbar/content/ProgressBar.qml b/examples/declarative/ui-components/progressbar/content/ProgressBar.qml index 75dc48871d..25dd1a7737 100644 --- a/examples/declarative/ui-components/progressbar/content/ProgressBar.qml +++ b/examples/declarative/ui-components/progressbar/content/ProgressBar.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: progressbar diff --git a/examples/declarative/ui-components/main/qml/content/background.png b/examples/declarative/ui-components/progressbar/content/background.png similarity index 100% rename from examples/declarative/ui-components/main/qml/content/background.png rename to examples/declarative/ui-components/progressbar/content/background.png diff --git a/examples/declarative/ui-components/progressbar/main.cpp b/examples/declarative/ui-components/progressbar/main.cpp deleted file mode 100644 index be38af0784..0000000000 --- a/examples/declarative/ui-components/progressbar/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); - viewer.setMainQmlFile(QLatin1String("qml/qml/main.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/ui-components/progressbar/main.qml b/examples/declarative/ui-components/progressbar/main.qml index 313aaa3f4f..1aa3554843 100644 --- a/examples/declarative/ui-components/progressbar/main.qml +++ b/examples/declarative/ui-components/progressbar/main.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" Rectangle { diff --git a/examples/declarative/ui-components/progressbar/progressbar.desktop b/examples/declarative/ui-components/progressbar/progressbar.desktop deleted file mode 100644 index 3fb6f218f7..0000000000 --- a/examples/declarative/ui-components/progressbar/progressbar.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=progressbar -Exec=/opt/usr/bin/progressbar -Icon=progressbar -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/ui-components/progressbar/progressbar.png b/examples/declarative/ui-components/progressbar/progressbar.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/ui-components/progressbar/qml/content/ProgressBar.qml b/examples/declarative/ui-components/progressbar/qml/content/ProgressBar.qml deleted file mode 100644 index e92342adcf..0000000000 --- a/examples/declarative/ui-components/progressbar/qml/content/ProgressBar.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Item { - id: progressbar - - property int minimum: 0 - property int maximum: 100 - property int value: 0 - property alias color: gradient1.color - property alias secondColor: gradient2.color - - width: 250; height: 23 - clip: true - - BorderImage { - source: "background.png" - width: parent.width; height: parent.height - border { left: 4; top: 4; right: 4; bottom: 4 } - } - - Rectangle { - id: highlight - - property int widthDest: ((progressbar.width * (value - minimum)) / (maximum - minimum) - 6) - - width: highlight.widthDest - Behavior on width { SmoothedAnimation { velocity: 1200 } } - - anchors { left: parent.left; top: parent.top; bottom: parent.bottom; margins: 3 } - radius: 1 - gradient: Gradient { - GradientStop { id: gradient1; position: 0.0 } - GradientStop { id: gradient2; position: 1.0 } - } - - } - Text { - anchors { right: highlight.right; rightMargin: 6; verticalCenter: parent.verticalCenter } - color: "white" - font.bold: true - text: Math.floor((value - minimum) / (maximum - minimum) * 100) + '%' - } -} diff --git a/examples/declarative/ui-components/progressbar/qml/content/background.png b/examples/declarative/ui-components/progressbar/qml/content/background.png deleted file mode 100644 index 9044226f855dbeb3d38a07aaa78639a229ae9171..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)X0ssI2CyhWc00001b5ch_0Itp) z=>Px#32;bRa{vGjIsgCLsrfwU$*#8Th-#N^{p9}{Hz*I;%krEL>ODLtLX<3#{2p9k`8jpLv-+F3t&NYl@ zjAgUg?efm*+Il84XGkf+FnI91>VB -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/ui-components/progressbar/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/ui-components/scrollbar/ScrollBar.qml b/examples/declarative/ui-components/scrollbar/ScrollBar.qml index 63dd0bd0fa..7f11e9faa6 100644 --- a/examples/declarative/ui-components/scrollbar/ScrollBar.qml +++ b/examples/declarative/ui-components/scrollbar/ScrollBar.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: scrollBar diff --git a/examples/declarative/ui-components/scrollbar/main.qml b/examples/declarative/ui-components/scrollbar/main.qml index f282dc48c7..124e2c379b 100644 --- a/examples/declarative/ui-components/scrollbar/main.qml +++ b/examples/declarative/ui-components/scrollbar/main.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { width: 640 diff --git a/examples/declarative/ui-components/main/qml/pics/niagara_falls.jpg b/examples/declarative/ui-components/scrollbar/pics/niagara_falls.jpg similarity index 100% rename from examples/declarative/ui-components/main/qml/pics/niagara_falls.jpg rename to examples/declarative/ui-components/scrollbar/pics/niagara_falls.jpg diff --git a/examples/declarative/ui-components/searchbox/SearchBox.qml b/examples/declarative/ui-components/searchbox/SearchBox.qml index de190d3236..32ac4b3a5a 100644 --- a/examples/declarative/ui-components/searchbox/SearchBox.qml +++ b/examples/declarative/ui-components/searchbox/SearchBox.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 FocusScope { id: focusScope diff --git a/examples/declarative/ui-components/main/qml/images/clear.png b/examples/declarative/ui-components/searchbox/images/clear.png similarity index 100% rename from examples/declarative/ui-components/main/qml/images/clear.png rename to examples/declarative/ui-components/searchbox/images/clear.png diff --git a/examples/declarative/ui-components/main/qml/images/lineedit-bg-focus.png b/examples/declarative/ui-components/searchbox/images/lineedit-bg-focus.png similarity index 100% rename from examples/declarative/ui-components/main/qml/images/lineedit-bg-focus.png rename to examples/declarative/ui-components/searchbox/images/lineedit-bg-focus.png diff --git a/examples/declarative/ui-components/main/qml/images/lineedit-bg.png b/examples/declarative/ui-components/searchbox/images/lineedit-bg.png similarity index 100% rename from examples/declarative/ui-components/main/qml/images/lineedit-bg.png rename to examples/declarative/ui-components/searchbox/images/lineedit-bg.png diff --git a/examples/declarative/ui-components/searchbox/main.qml b/examples/declarative/ui-components/searchbox/main.qml index fbcafa278d..4882194370 100644 --- a/examples/declarative/ui-components/searchbox/main.qml +++ b/examples/declarative/ui-components/searchbox/main.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: page diff --git a/examples/declarative/ui-components/slideswitch/content/Switch.qml b/examples/declarative/ui-components/slideswitch/content/Switch.qml index 311b1621fc..8c0dee27dd 100644 --- a/examples/declarative/ui-components/slideswitch/content/Switch.qml +++ b/examples/declarative/ui-components/slideswitch/content/Switch.qml @@ -39,7 +39,7 @@ ****************************************************************************/ //![0] -import QtQuick 1.0 +import QtQuick 2.0 Item { id: toggleswitch diff --git a/examples/declarative/ui-components/slideswitch/qml/content/background.svg b/examples/declarative/ui-components/slideswitch/content/background.svg similarity index 100% rename from examples/declarative/ui-components/slideswitch/qml/content/background.svg rename to examples/declarative/ui-components/slideswitch/content/background.svg diff --git a/examples/declarative/ui-components/slideswitch/qml/content/knob.svg b/examples/declarative/ui-components/slideswitch/content/knob.svg similarity index 100% rename from examples/declarative/ui-components/slideswitch/qml/content/knob.svg rename to examples/declarative/ui-components/slideswitch/content/knob.svg diff --git a/examples/declarative/ui-components/slideswitch/main.cpp b/examples/declarative/ui-components/slideswitch/main.cpp deleted file mode 100644 index ca3ffe9ef4..0000000000 --- a/examples/declarative/ui-components/slideswitch/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/slideswitch.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/ui-components/slideswitch/qml/content/Switch.qml b/examples/declarative/ui-components/slideswitch/qml/content/Switch.qml deleted file mode 100644 index 06d7a2bf40..0000000000 --- a/examples/declarative/ui-components/slideswitch/qml/content/Switch.qml +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//![0] -import QtQuick 1.0 - -Item { - id: toggleswitch - width: background.width; height: background.height - -//![1] - property bool on: false -//![1] - -//![2] - function toggle() { - if (toggleswitch.state == "on") - toggleswitch.state = "off"; - else - toggleswitch.state = "on"; - } -//![2] - -//![3] - function releaseSwitch() { - if (knob.x == 1) { - if (toggleswitch.state == "off") return; - } - if (knob.x == 78) { - if (toggleswitch.state == "on") return; - } - toggle(); - } -//![3] - -//![4] - Image { - id: background - source: "background.svg" - MouseArea { anchors.fill: parent; onClicked: toggle() } - } -//![4] - -//![5] - Image { - id: knob - x: 1; y: 2 - source: "knob.svg" - - MouseArea { - anchors.fill: parent - drag.target: knob; drag.axis: Drag.XAxis; drag.minimumX: 1; drag.maximumX: 78 - onClicked: toggle() - onReleased: releaseSwitch() - } - } -//![5] - -//![6] - states: [ - State { - name: "on" - PropertyChanges { target: knob; x: 78 } - PropertyChanges { target: toggleswitch; on: true } - }, - State { - name: "off" - PropertyChanges { target: knob; x: 1 } - PropertyChanges { target: toggleswitch; on: false } - } - ] -//![6] - -//![7] - transitions: Transition { - NumberAnimation { properties: "x"; easing.type: Easing.InOutQuad; duration: 200 } - } -//![7] -} -//![0] diff --git a/examples/declarative/ui-components/slideswitch/qml/slideswitch.qml b/examples/declarative/ui-components/slideswitch/qml/slideswitch.qml deleted file mode 100644 index 0472f9f722..0000000000 --- a/examples/declarative/ui-components/slideswitch/qml/slideswitch.qml +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 -import "content" - -Rectangle { - color: "white" - width: 400; height: 250 - -//![0] - Switch { anchors.centerIn: parent; on: false } -//![0] -} diff --git a/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/ui-components/slideswitch/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/README b/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/README deleted file mode 100644 index f2b87fba9f..0000000000 --- a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/README +++ /dev/null @@ -1,6 +0,0 @@ -The Debian Package slideswitch ----------------------------- - -Comments regarding the Package - - -- Daniel Molkentin Thu, 18 Nov 2010 17:31:28 +0100 diff --git a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/changelog b/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/changelog deleted file mode 100644 index 46d83ac476..0000000000 --- a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/changelog +++ /dev/null @@ -1,5 +0,0 @@ -slideswitch (0.0.1) unstable; urgency=low - - * Initial Release. - - -- Daniel Molkentin Thu, 18 Nov 2010 17:31:28 +0100 diff --git a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/compat b/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/compat deleted file mode 100644 index 7f8f011eb7..0000000000 --- a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/control b/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/control deleted file mode 100644 index f6eb57d03c..0000000000 --- a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: slideswitch -Section: user/hidden -Priority: optional -Maintainer: Daniel Molkentin -Build-Depends: debhelper (>= 5), libqt4-dev -Standards-Version: 3.7.3 -Homepage: - -Package: slideswitch -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: - diff --git a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/copyright b/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/copyright deleted file mode 100644 index 06785f00cb..0000000000 --- a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/copyright +++ /dev/null @@ -1,40 +0,0 @@ -This package was debianized by Daniel Molkentin on -Thu, 18 Nov 2010 17:31:28 +0100. - -It was downloaded from - -Upstream Author(s): - - - - -Copyright: - - - - -License: - - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. - -The Debian packaging is (C) 2010, Daniel Molkentin and -is licensed under the GPL, see above. - - -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. diff --git a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/rules b/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/rules deleted file mode 100755 index 0205aef4dd..0000000000 --- a/examples/declarative/ui-components/slideswitch/qtc_packaging/debian_fremantle/rules +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - - - - - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - - touch configure-stamp - - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #docbook-to-man debian/slideswitch.sgml > slideswitch.1 - - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - $(MAKE) clean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/slideswitch. - $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/slideswitch install - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs - dh_installdocs - dh_installexamples -# dh_install -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - # dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb - # dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/examples/declarative/ui-components/slideswitch/slideswitch.desktop b/examples/declarative/ui-components/slideswitch/slideswitch.desktop deleted file mode 100644 index 9f46a0bc67..0000000000 --- a/examples/declarative/ui-components/slideswitch/slideswitch.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=slideswitch -Exec=/opt/usr/bin/slideswitch -Icon=slideswitch -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/ui-components/slideswitch/slideswitch.png b/examples/declarative/ui-components/slideswitch/slideswitch.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/ui-components/spinner/content/Spinner.qml b/examples/declarative/ui-components/spinner/content/Spinner.qml index 73b643138d..2e083281f3 100644 --- a/examples/declarative/ui-components/spinner/content/Spinner.qml +++ b/examples/declarative/ui-components/spinner/content/Spinner.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { property alias model: view.model diff --git a/examples/declarative/ui-components/main/qml/content/spinner-bg.png b/examples/declarative/ui-components/spinner/content/spinner-bg.png similarity index 100% rename from examples/declarative/ui-components/main/qml/content/spinner-bg.png rename to examples/declarative/ui-components/spinner/content/spinner-bg.png diff --git a/examples/declarative/ui-components/main/qml/content/spinner-select.png b/examples/declarative/ui-components/spinner/content/spinner-select.png similarity index 100% rename from examples/declarative/ui-components/main/qml/content/spinner-select.png rename to examples/declarative/ui-components/spinner/content/spinner-select.png diff --git a/examples/declarative/ui-components/spinner/main.qml b/examples/declarative/ui-components/spinner/main.qml index 89333ec08b..ce3dfced05 100644 --- a/examples/declarative/ui-components/spinner/main.qml +++ b/examples/declarative/ui-components/spinner/main.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" Rectangle { diff --git a/examples/declarative/ui-components/tabwidget/TabWidget.qml b/examples/declarative/ui-components/tabwidget/TabWidget.qml index fe838b57b6..fd75b943b1 100644 --- a/examples/declarative/ui-components/tabwidget/TabWidget.qml +++ b/examples/declarative/ui-components/tabwidget/TabWidget.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: tabWidget diff --git a/examples/declarative/ui-components/tabwidget/main.qml b/examples/declarative/ui-components/tabwidget/main.qml index 93678624d0..7cc2e2f88a 100644 --- a/examples/declarative/ui-components/tabwidget/main.qml +++ b/examples/declarative/ui-components/tabwidget/main.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 TabWidget { id: tabs diff --git a/examples/declarative/ui-components/main/qml/tab.png b/examples/declarative/ui-components/tabwidget/tab.png similarity index 100% rename from examples/declarative/ui-components/main/qml/tab.png rename to examples/declarative/ui-components/tabwidget/tab.png diff --git a/examples/declarative/xml/xmlhttprequest-example/main.cpp b/examples/declarative/xml/xmlhttprequest-example/main.cpp deleted file mode 100644 index fd768daa36..0000000000 --- a/examples/declarative/xml/xmlhttprequest-example/main.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include "qmlapplicationviewer.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QmlApplicationViewer viewer; - viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); - viewer.setMainQmlFile(QLatin1String("qml/qml/xmlhttprequest-example.qml")); - viewer.showExpanded(); - - return app.exec(); -} diff --git a/examples/declarative/xml/xmlhttprequest-example/qml/xmlhttprequest-example.qml b/examples/declarative/xml/xmlhttprequest-example/qml/xmlhttprequest-example.qml deleted file mode 100644 index 78f93b5a45..0000000000 --- a/examples/declarative/xml/xmlhttprequest-example/qml/xmlhttprequest-example.qml +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 1.0 - -Rectangle { - width: 350; height: 400 - - function showRequestInfo(text) { - log.text = log.text + "\n" + text - console.log(text) - } - - Text { id: log; anchors.fill: parent; anchors.margins: 10 } - - Rectangle { - id: button - anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom; anchors.margins: 10 - width: buttonText.width + 10; height: buttonText.height + 10 - border.width: mouseArea.pressed ? 2 : 1 - radius : 5; smooth: true - - Text { id: buttonText; anchors.centerIn: parent; text: "Request data.xml" } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: { - log.text = "" - console.log("\n") - - var doc = new XMLHttpRequest(); - doc.onreadystatechange = function() { - if (doc.readyState == XMLHttpRequest.HEADERS_RECEIVED) { - showRequestInfo("Headers -->"); - showRequestInfo(doc.getAllResponseHeaders ()); - showRequestInfo("Last modified -->"); - showRequestInfo(doc.getResponseHeader ("Last-Modified")); - - } else if (doc.readyState == XMLHttpRequest.DONE) { - var a = doc.responseXML.documentElement; - for (var ii = 0; ii < a.childNodes.length; ++ii) { - showRequestInfo(a.childNodes[ii].nodeName); - } - showRequestInfo("Headers -->"); - showRequestInfo(doc.getAllResponseHeaders ()); - showRequestInfo("Last modified -->"); - showRequestInfo(doc.getResponseHeader ("Last-Modified")); - } - } - - doc.open("GET", "data.xml"); - doc.send(); - } - } - } -} - diff --git a/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.cpp b/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.cpp deleted file mode 100644 index 411a04c139..0000000000 --- a/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x28c7 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qmlapplicationviewer.h" - -#include -#include -#include -#include -#include -#include - -#if defined(QMLJSDEBUGGER) -#include -#endif - -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) -#include -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) -#include -#endif - -#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) -#include -#include -#include -#include -#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK - -#if defined(QMLJSDEBUGGER) - -// Enable debugging before any QDeclarativeEngine is created -struct QmlJsDebuggingEnabler -{ - QmlJsDebuggingEnabler() - { - QDeclarativeDebugHelper::enableDebugging(); - } -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -static QmlJsDebuggingEnabler enableDebuggingHelper; - -#endif // QMLJSDEBUGGER - -class QmlApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QmlApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QmlApplicationViewerPrivate::adjustPath(const QString &path) -{ -#ifdef Q_OS_UNIX -#ifdef Q_OS_MAC - if (!QDir::isAbsolutePath(path)) - return QCoreApplication::applicationDirPath() - + QLatin1String("/../Resources/") + path; -#else - const QString pathInShareDir = QCoreApplication::applicationDirPath() - + QLatin1String("/../share/") - + QFileInfo(QCoreApplication::applicationFilePath()).fileName() - + QLatin1Char('/') + path; - if (QFileInfo(pathInShareDir).exists()) - return pathInShareDir; -#endif -#endif - return path; -} - -QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) : - QDeclarativeView(parent), - m_d(new QmlApplicationViewerPrivate) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QDeclarativeView::SizeRootObjectToView); -#if defined(QMLJSDEBUGGER) && !defined(NO_JSDEBUGGER) - new QmlJSDebugger::JSDebuggerAgent(engine()); -#endif -#if defined(QMLJSDEBUGGER) && !defined(NO_QMLOBSERVER) - new QmlJSDebugger::QDeclarativeViewObserver(this, parent); -#endif -} - -QmlApplicationViewer::~QmlApplicationViewer() -{ - delete m_d; -} - -void QmlApplicationViewer::setMainQmlFile(const QString &file) -{ - m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); - setSource(QUrl::fromLocalFile(m_d->mainQmlFile)); -} - -void QmlApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path)); -} - -void QmlApplicationViewer::setOrientation(ScreenOrientation orientation) -{ -#ifdef Q_OS_SYMBIAN - if (orientation != ScreenOrientationAuto) { -#if defined(ORIENTATIONLOCK) - const CAknAppUiBase::TAppUiOrientation uiOrientation = - (orientation == ScreenOrientationLockPortrait) ? CAknAppUi::EAppUiOrientationPortrait - : CAknAppUi::EAppUiOrientationLandscape; - CAknAppUi* appUi = dynamic_cast (CEikonEnv::Static()->AppUi()); - TRAPD(error, - if (appUi) - appUi->SetOrientationL(uiOrientation); - ); - Q_UNUSED(error) -#else // ORIENTATIONLOCK - qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation."); -#endif // ORIENTATIONLOCK - } -#elif defined(Q_WS_MAEMO_5) - Qt::WidgetAttribute attribute; - switch (orientation) { - case ScreenOrientationLockPortrait: - attribute = Qt::WA_Maemo5PortraitOrientation; - break; - case ScreenOrientationLockLandscape: - attribute = Qt::WA_Maemo5LandscapeOrientation; - break; - case ScreenOrientationAuto: - default: - attribute = Qt::WA_Maemo5AutoOrientation; - break; - } - setAttribute(attribute, true); -#else // Q_OS_SYMBIAN - Q_UNUSED(orientation); -#endif // Q_OS_SYMBIAN -} - -void QmlApplicationViewer::showExpanded() -{ -#ifdef Q_OS_SYMBIAN - showFullScreen(); -#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) - showMaximized(); -#else - show(); -#endif -} diff --git a/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.h b/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.h deleted file mode 100644 index f5b24b0199..0000000000 --- a/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// checksum 0x5a59 version 0x2000a -/* - This file was generated by the Qt Quick Application wizard of Qt Creator. - QmlApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QMLAPPLICATIONVIEWER_H -#define QMLAPPLICATIONVIEWER_H - -#include - -class QmlApplicationViewer : public QDeclarativeView -{ - Q_OBJECT - -public: - enum ScreenOrientation { - ScreenOrientationLockPortrait, - ScreenOrientationLockLandscape, - ScreenOrientationAuto - }; - - explicit QmlApplicationViewer(QWidget *parent = 0); - virtual ~QmlApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - void setOrientation(ScreenOrientation orientation); - void showExpanded(); - -private: - class QmlApplicationViewerPrivate *m_d; -}; - -#endif // QMLAPPLICATIONVIEWER_H diff --git a/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.pri b/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.pri deleted file mode 100644 index 1c0c7edb39..0000000000 --- a/examples/declarative/xml/xmlhttprequest-example/qmlapplicationviewer/qmlapplicationviewer.pri +++ /dev/null @@ -1,154 +0,0 @@ -# checksum 0x3dc8 version 0x2000a -# This file was generated by the Qt Quick Application wizard of Qt Creator. -# The code below adds the QmlApplicationViewer to the project and handles the -# activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += declarative - -SOURCES += $$PWD/qmlapplicationviewer.cpp -HEADERS += $$PWD/qmlapplicationviewer.h -INCLUDEPATH += $$PWD - -defineTest(minQtVersion) { - maj = $$1 - min = $$2 - patch = $$3 - isEqual(QT_MAJOR_VERSION, $$maj) { - isEqual(QT_MINOR_VERSION, $$min) { - isEqual(QT_PATCH_VERSION, $$patch) { - return(true) - } - greaterThan(QT_PATCH_VERSION, $$patch) { - return(true) - } - } - greaterThan(QT_MINOR_VERSION, $$min) { - return(true) - } - } - return(false) -} - -contains(DEFINES, QMLJSDEBUGGER) { - CONFIG(debug, debug|release) { - !minQtVersion(4, 7, 1) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("This library requires Qt 4.7.1 or newer.") - warning() - DEFINES -= QMLJSDEBUGGER - } else:isEmpty(QMLJSDEBUGGER_PATH) { - warning() - warning("Disabling QML debugging:") - warning() - warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") - warning("Please specify its location on the qmake command line, eg") - warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") - warning() - DEFINES -= QMLJSDEBUGGER - } else { - include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) - } - } else { - DEFINES -= QMLJSDEBUGGER - } -} -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Symbian and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemsources = $${item}.sources - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -symbian { - ICON = $${TARGET}.svg - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone - contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices -} else:win32 { - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$eval($${deploymentfolder}.source) - pathSegments = $$split(source, /) - sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments) - copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\) - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:unix { - maemo5 { - installPrefix = /opt/usr - desktopfile.path = /usr/share/applications/hildon - } else { - installPrefix = /usr/local - desktopfile.path = /usr/share/applications - !isEqual(PWD,$$OUT_PWD) { - copyCommand = @echo Copying application data... - for(deploymentfolder, DEPLOYMENTFOLDERS) { - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - copyCommand += && $(MKDIR) $$target - copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target - } - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps - desktopfile.files = $${TARGET}.desktop - target.path = $${installPrefix}/bin - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - export(target.path) - INSTALLS += desktopfile icon target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (TARGET.EPOCHEAPSIZE) -export (TARGET.CAPABILITY) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.desktop b/examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.desktop deleted file mode 100644 index c5065cf678..0000000000 --- a/examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=xmlhttprequest-example -Exec=/opt/usr/bin/xmlhttprequest-example -Icon=xmlhttprequest-example -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.png b/examples/declarative/xml/xmlhttprequest-example/xmlhttprequestexample.png deleted file mode 100644 index 707d5c4e85d82959740b243a8a36d5071c277299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 eAW3auXJt}lVPtu6$z?nM0000 - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/examples/declarative/xml/xmlhttprequest-example/qml/data.xml b/examples/declarative/xml/xmlhttprequest/data.xml similarity index 100% rename from examples/declarative/xml/xmlhttprequest-example/qml/data.xml rename to examples/declarative/xml/xmlhttprequest/data.xml diff --git a/examples/declarative/xml/xmlhttprequest/xmlhttprequest-example.qml b/examples/declarative/xml/xmlhttprequest/xmlhttprequest-example.qml index 9cbdcafb98..37ebb33538 100644 --- a/examples/declarative/xml/xmlhttprequest/xmlhttprequest-example.qml +++ b/examples/declarative/xml/xmlhttprequest/xmlhttprequest-example.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { width: 350; height: 400 diff --git a/examples/declarative/xml/xmlhttprequest/xmlhttprequest.qmlproject b/examples/declarative/xml/xmlhttprequest/xmlhttprequest.qmlproject deleted file mode 100644 index d4909f8685..0000000000 --- a/examples/declarative/xml/xmlhttprequest/xmlhttprequest.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} From 44dabd02d63ecdb776b6a102888af06cac5987c0 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Fri, 26 Aug 2011 15:38:56 +1000 Subject: [PATCH 19/68] Update more examples to QtQuick 2.0 Minehunt and abstractitemmodel examples use QSGview Snake now using Particles 2.0 Minor examples and twitter have updated imports Removed duplicate delegate example Change-Id: I04f8f8aeb8ef34ab2a8678ccc1d6d594b9db166e Reviewed-on: http://codereview.qt.nokia.com/3630 Reviewed-by: Bea Lam --- .../minehunt/MinehuntCore/Explosion.qml | 33 +++---- .../minehunt/MinehuntCore/Tile.qml | 2 +- .../declarative/minehunt/MinehuntCore/qmldir | 4 +- examples/declarative/minehunt/main.cpp | 21 ++--- examples/declarative/minehunt/minehunt.pro | 17 +--- examples/declarative/minehunt/minehunt.qml | 4 +- .../modelviews/Delegate/Delegate.qml | 88 ------------------- .../declarative/modelviews/Delegate/view.qml | 76 ---------------- .../abstractitemmodel/abstractitemmodel.pro | 12 +-- .../modelviews/abstractitemmodel/main.cpp | 10 ++- .../modelviews/abstractitemmodel/view.qml | 3 +- .../objectlistmodel/objectlistmodel.pro | 5 -- .../modelparticles/content/RssModel.qml | 2 +- .../particles/trails/content/PetsModel.qml | 2 +- .../layoutdirection/layoutdirection.qml | 2 +- .../layoutmirroring/layoutmirroring.qml | 2 +- .../textalignment/textalignment.qml | 2 +- examples/declarative/snake/content/Button.qml | 2 +- examples/declarative/snake/content/Cookie.qml | 24 +++-- .../snake/content/HighScoreModel.qml | 2 +- examples/declarative/snake/content/Link.qml | 29 +++--- examples/declarative/snake/content/Skull.qml | 2 +- examples/declarative/snake/content/snake.js | 4 +- examples/declarative/snake/snake.qml | 4 +- .../twitter/TwitterCore/Button.qml | 2 +- .../twitter/TwitterCore/FatDelegate.qml | 2 +- .../declarative/twitter/TwitterCore/Input.qml | 2 +- .../twitter/TwitterCore/Loading.qml | 2 +- .../twitter/TwitterCore/MultiTitleBar.qml | 2 +- .../twitter/TwitterCore/RssModel.qml | 2 +- .../twitter/TwitterCore/SearchView.qml | 2 +- .../twitter/TwitterCore/TitleBar.qml | 2 +- .../twitter/TwitterCore/ToolBar.qml | 2 +- .../twitter/TwitterCore/UserModel.qml | 2 +- .../declarative/twitter/TwitterCore/qmldir | 20 ++--- examples/declarative/twitter/twitter.qml | 4 +- 36 files changed, 111 insertions(+), 285 deletions(-) delete mode 100644 examples/declarative/modelviews/Delegate/Delegate.qml delete mode 100644 examples/declarative/modelviews/Delegate/view.qml diff --git a/examples/declarative/minehunt/MinehuntCore/Explosion.qml b/examples/declarative/minehunt/MinehuntCore/Explosion.qml index a5f3f1bc31..225c19d8a3 100644 --- a/examples/declarative/minehunt/MinehuntCore/Explosion.qml +++ b/examples/declarative/minehunt/MinehuntCore/Explosion.qml @@ -39,28 +39,31 @@ ** ****************************************************************************/ -import QtQuick 1.0 -import Qt.labs.particles 1.0 +import QtQuick 2.0 +import QtQuick.Particles 2.0 Item { property bool explode : false - - Particles { - id: particles + ParticleSystem { width: 40 height: 40 - lifeSpan: 1000 - lifeSpanDeviation: 0 - source: "pics/star.png" - count: 0 - angle: 270 - angleDeviation: 360 - velocity: 100 - velocityDeviation: 20 - z: 100 + ImageParticle { + particles: ["star"] + source: "file:MinehuntCore/pics/star.png" // TODO: Use qrc path once QTBUG-21129 is fixed + } + Emitter { + id: particles + emitting: false + anchors.centerIn: parent + particle: "star" + speed: AngledDirection { angleVariation: 360; magnitude: 150; magnitudeVariation: 50 } + emitRate: 200 + z: 100 + lifeSpan: 1000 + } } states: State { name: "exploding"; when: explode - StateChangeScript {script: particles.burst(200); } + StateChangeScript { script: particles.burst(200); } } } diff --git a/examples/declarative/minehunt/MinehuntCore/Tile.qml b/examples/declarative/minehunt/MinehuntCore/Tile.qml index 90247f8575..9daa669425 100644 --- a/examples/declarative/minehunt/MinehuntCore/Tile.qml +++ b/examples/declarative/minehunt/MinehuntCore/Tile.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Flipable { id: flipable diff --git a/examples/declarative/minehunt/MinehuntCore/qmldir b/examples/declarative/minehunt/MinehuntCore/qmldir index 81980e09a6..a0213a19c4 100644 --- a/examples/declarative/minehunt/MinehuntCore/qmldir +++ b/examples/declarative/minehunt/MinehuntCore/qmldir @@ -1,2 +1,2 @@ -Explosion 1.0 Explosion.qml -Tile 1.0 Tile.qml +Explosion 2.0 Explosion.qml +Tile 2.0 Tile.qml diff --git a/examples/declarative/minehunt/main.cpp b/examples/declarative/minehunt/main.cpp index 93b9a5280b..1f77efe543 100644 --- a/examples/declarative/minehunt/main.cpp +++ b/examples/declarative/minehunt/main.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include -#include +#include #include #include @@ -49,23 +49,16 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); - QDeclarativeView canvas; - + QSGView canvas; + qmlRegisterType(); MinehuntGame* game = new MinehuntGame(); - -#ifdef Q_OS_SYMBIAN - canvas.setResizeMode(QDeclarativeView::SizeRootObjectToView); -#endif - canvas.engine()->rootContext()->setContextObject(game); + + canvas.setResizeMode(QSGView::SizeRootObjectToView); + canvas.engine()->rootContext()->setContextObject(game); canvas.setSource(QString("qrc:minehunt.qml")); QObject::connect(canvas.engine(), SIGNAL(quit()), &app, SLOT(quit())); - -#ifdef Q_OS_SYMBIAN - canvas.showFullScreen(); -#else - canvas.setGeometry(QRect(100, 100, 450, 450)); + canvas.show(); -#endif return app.exec(); } diff --git a/examples/declarative/minehunt/minehunt.pro b/examples/declarative/minehunt/minehunt.pro index fe464fb498..cf928ce333 100644 --- a/examples/declarative/minehunt/minehunt.pro +++ b/examples/declarative/minehunt/minehunt.pro @@ -1,23 +1,8 @@ TEMPLATE = app TARGET = minehunt -QT += declarative qtquick1 +QT += declarative # Input HEADERS += minehunt.h SOURCES += main.cpp minehunt.cpp RESOURCES = minehunt.qrc - -sources.files = minehunt.qml minehunt.pro MinehuntCore -sources.path = $$[QT_INSTALL_EXAMPLES]/qtdeclarative/declarative/minehunt -target.path = $$[QT_INSTALL_EXAMPLES]/qtdeclarative/declarative/minehunt - -INSTALLS = sources target - -symbian:{ - TARGET.EPOCALLOWDLLDATA = 1 - TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 - CONFIG += qt_example - qmlminehuntfiles.files = MinehuntCore minehunt.qml - DEPLOYMENT += qmlminehuntfiles -} - diff --git a/examples/declarative/minehunt/minehunt.qml b/examples/declarative/minehunt/minehunt.qml index 2129350625..80aaeab185 100644 --- a/examples/declarative/minehunt/minehunt.qml +++ b/examples/declarative/minehunt/minehunt.qml @@ -39,8 +39,8 @@ ** ****************************************************************************/ -import QtQuick 1.0 -import "MinehuntCore" 1.0 +import QtQuick 2.0 +import "MinehuntCore" 2.0 Item { id: field diff --git a/examples/declarative/modelviews/Delegate/Delegate.qml b/examples/declarative/modelviews/Delegate/Delegate.qml deleted file mode 100644 index ef575f567f..0000000000 --- a/examples/declarative/modelviews/Delegate/Delegate.qml +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 - -//![0] -Package { - Text { id: listDelegate; width: 200; height: 25; text: 'Empty'; Package.name: 'list' } - Text { id: gridDelegate; width: 100; height: 50; text: 'Empty'; Package.name: 'grid' } - - Rectangle { - id: wrapper - width: 200; height: 25 - color: 'lightsteelblue' - - Text { text: display; anchors.centerIn: parent } - MouseArea { - anchors.fill: parent - onClicked: { - if (wrapper.state == 'inList') - wrapper.state = 'inGrid'; - else - wrapper.state = 'inList'; - } - } - - state: 'inList' - states: [ - State { - name: 'inList' - ParentChange { target: wrapper; parent: listDelegate } - }, - State { - name: 'inGrid' - ParentChange { - target: wrapper; parent: gridDelegate - x: 0; y: 0; width: gridDelegate.width; height: gridDelegate.height - } - } - ] - - transitions: [ - Transition { - ParentAnimation { - NumberAnimation { properties: 'x,y,width,height'; duration: 300 } - } - } - ] - } -} -//![0] diff --git a/examples/declarative/modelviews/Delegate/view.qml b/examples/declarative/modelviews/Delegate/view.qml deleted file mode 100644 index 89fed86aa6..0000000000 --- a/examples/declarative/modelviews/Delegate/view.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 - -Rectangle { - color: "white" - width: 400 - height: 200 - - ListModel { - id: myModel - ListElement { display: "One" } - ListElement { display: "Two" } - ListElement { display: "Three" } - ListElement { display: "Four" } - ListElement { display: "Five" } - ListElement { display: "Six" } - ListElement { display: "Seven" } - ListElement { display: "Eight" } - } - //![0] - VisualDataModel { - id: visualModel - delegate: Delegate {} - model: myModel - } - - ListView { - width: 200; height:200 - model: visualModel.parts.list - } - GridView { - x: 200; width: 200; height:200 - cellHeight: 50 - model: visualModel.parts.grid - } - //![0] -} diff --git a/examples/declarative/modelviews/abstractitemmodel/abstractitemmodel.pro b/examples/declarative/modelviews/abstractitemmodel/abstractitemmodel.pro index 760a8dca55..6c51eed9d2 100644 --- a/examples/declarative/modelviews/abstractitemmodel/abstractitemmodel.pro +++ b/examples/declarative/modelviews/abstractitemmodel/abstractitemmodel.pro @@ -1,8 +1,10 @@ TEMPLATE = app - -QT += declarative qtquick1 - -RESOURCES += abstractitemmodel.qrc +TARGET = abstractitemmodel +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative HEADERS = model.h -SOURCES = main.cpp model.cpp +SOURCES = main.cpp \ + model.cpp +RESOURCES += abstractitemmodel.qrc \ No newline at end of file diff --git a/examples/declarative/modelviews/abstractitemmodel/main.cpp b/examples/declarative/modelviews/abstractitemmodel/main.cpp index 7f3c574178..3c78608295 100644 --- a/examples/declarative/modelviews/abstractitemmodel/main.cpp +++ b/examples/declarative/modelviews/abstractitemmodel/main.cpp @@ -38,10 +38,13 @@ ** ****************************************************************************/ #include "model.h" -#include -#include #include +#include +#include +#include +#include +#include //![0] int main(int argc, char ** argv) @@ -53,7 +56,8 @@ int main(int argc, char ** argv) model.addAnimal(Animal("Polar bear", "Large")); model.addAnimal(Animal("Quoll", "Small")); - QDeclarativeView view; + QSGView view; + view.setResizeMode(QSGView::SizeRootObjectToView); QDeclarativeContext *ctxt = view.rootContext(); ctxt->setContextProperty("myModel", &model); //![0] diff --git a/examples/declarative/modelviews/abstractitemmodel/view.qml b/examples/declarative/modelviews/abstractitemmodel/view.qml index 0363e9a4eb..6a02f5e750 100644 --- a/examples/declarative/modelviews/abstractitemmodel/view.qml +++ b/examples/declarative/modelviews/abstractitemmodel/view.qml @@ -37,12 +37,11 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 //![0] ListView { width: 200; height: 250 - anchors.fill: parent model: myModel delegate: Text { text: "Animal: " + type + ", " + size } diff --git a/examples/declarative/modelviews/objectlistmodel/objectlistmodel.pro b/examples/declarative/modelviews/objectlistmodel/objectlistmodel.pro index de3e16f948..8cc293dbfa 100644 --- a/examples/declarative/modelviews/objectlistmodel/objectlistmodel.pro +++ b/examples/declarative/modelviews/objectlistmodel/objectlistmodel.pro @@ -10,9 +10,4 @@ SOURCES += main.cpp \ HEADERS += dataobject.h RESOURCES += objectlistmodel.qrc -sources.files = $$SOURCES $$HEADERS $$RESOURCES objectlistmodel.pro view.qml -sources.path = $$[QT_INSTALL_EXAMPLES]/qtdeclarative/declarative/objectlistmodel -target.path = $$[QT_INSTALL_EXAMPLES]/qtdeclarative/declarative/objectlistmodel - -INSTALLS += sources target diff --git a/examples/declarative/particles/modelparticles/content/RssModel.qml b/examples/declarative/particles/modelparticles/content/RssModel.qml index 603a157de5..edb3ceac42 100644 --- a/examples/declarative/particles/modelparticles/content/RssModel.qml +++ b/examples/declarative/particles/modelparticles/content/RssModel.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 XmlListModel { property string tags : "" diff --git a/examples/declarative/particles/trails/content/PetsModel.qml b/examples/declarative/particles/trails/content/PetsModel.qml index d7375a73af..e55d274fa2 100644 --- a/examples/declarative/particles/trails/content/PetsModel.qml +++ b/examples/declarative/particles/trails/content/PetsModel.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 ListModel { ListElement { diff --git a/examples/declarative/righttoleft/layoutdirection/layoutdirection.qml b/examples/declarative/righttoleft/layoutdirection/layoutdirection.qml index 3044430cd7..9032c6d96b 100644 --- a/examples/declarative/righttoleft/layoutdirection/layoutdirection.qml +++ b/examples/declarative/righttoleft/layoutdirection/layoutdirection.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.1 +import QtQuick 2.0 Rectangle { id: root diff --git a/examples/declarative/righttoleft/layoutmirroring/layoutmirroring.qml b/examples/declarative/righttoleft/layoutmirroring/layoutmirroring.qml index b4065baf3e..fc4f83b76c 100644 --- a/examples/declarative/righttoleft/layoutmirroring/layoutmirroring.qml +++ b/examples/declarative/righttoleft/layoutmirroring/layoutmirroring.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.1 +import QtQuick 2.0 Rectangle { id: root diff --git a/examples/declarative/righttoleft/textalignment/textalignment.qml b/examples/declarative/righttoleft/textalignment/textalignment.qml index afd2d68c72..13abca1fb1 100644 --- a/examples/declarative/righttoleft/textalignment/textalignment.qml +++ b/examples/declarative/righttoleft/textalignment/textalignment.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.1 +import QtQuick 2.0 Rectangle { id: root diff --git a/examples/declarative/snake/content/Button.qml b/examples/declarative/snake/content/Button.qml index d8a3363d6d..e9b13b187b 100644 --- a/examples/declarative/snake/content/Button.qml +++ b/examples/declarative/snake/content/Button.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: container diff --git a/examples/declarative/snake/content/Cookie.qml b/examples/declarative/snake/content/Cookie.qml index 29b56f9e88..e3b3bbf3f5 100644 --- a/examples/declarative/snake/content/Cookie.qml +++ b/examples/declarative/snake/content/Cookie.qml @@ -39,8 +39,8 @@ ** ****************************************************************************/ -import QtQuick 1.0 -import Qt.labs.particles 1.0 +import QtQuick 2.0 +import QtQuick.Particles 2.0 Item { id: root @@ -68,13 +68,21 @@ Item { } - Particles { id: particles + ParticleSystem { width:1; height:1; anchors.centerIn: parent; - emissionRate: 0; - lifeSpan: 700; lifeSpanDeviation: 600; - angle: 0; angleDeviation: 360; - velocity: 100; velocityDeviation:30; - source: "pics/yellowStar.png"; + ImageParticle { + particles: ["star"] + source: "pics/yellowStar.png" + } + Emitter { + id: particles + anchors.fill: parent + particle: "star" + emitRate: 50 + emitting: false + lifeSpan: 700 + acceleration: AngledDirection { angleVariation: 360; magnitude: 200 } + } } states: [ diff --git a/examples/declarative/snake/content/HighScoreModel.qml b/examples/declarative/snake/content/HighScoreModel.qml index 91b2185ffc..9c520f6292 100644 --- a/examples/declarative/snake/content/HighScoreModel.qml +++ b/examples/declarative/snake/content/HighScoreModel.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 // Models a high score table. // diff --git a/examples/declarative/snake/content/Link.qml b/examples/declarative/snake/content/Link.qml index ff67ad749e..82e0359a1a 100644 --- a/examples/declarative/snake/content/Link.qml +++ b/examples/declarative/snake/content/Link.qml @@ -39,8 +39,8 @@ ** ****************************************************************************/ -import QtQuick 1.0 -import Qt.labs.particles 1.0 +import QtQuick 2.0 +import QtQuick.Particles 2.0 Item { id:link property bool dying: false @@ -93,19 +93,20 @@ Item { id:link opacity: 0 } - - Particles { id: particles + ParticleSystem { width:1; height:1; anchors.centerIn: parent; - emissionRate: 0; - lifeSpan: 700; lifeSpanDeviation: 600; - angle: 0; angleDeviation: 360; - velocity: 100; velocityDeviation:30; - source: { - if(type == 1){ - "pics/blueStar.png"; - } else { - "pics/redStar.png"; - } + ImageParticle { + particles: ["star"] + source: type == 1 ? "pics/blueStar.png" : "pics/redStar.png" + } + Emitter { + id: particles + anchors.fill: parent + particle: "star" + emitRate: 50 + emitting: false + lifeSpan: 700 + acceleration: AngledDirection { angleVariation: 360; magnitude: 200 } } } diff --git a/examples/declarative/snake/content/Skull.qml b/examples/declarative/snake/content/Skull.qml index 4f48145f84..1edd69eb46 100644 --- a/examples/declarative/snake/content/Skull.qml +++ b/examples/declarative/snake/content/Skull.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { property bool spawned: false diff --git a/examples/declarative/snake/content/snake.js b/examples/declarative/snake/content/snake.js index 837b82addd..107c9f4591 100644 --- a/examples/declarative/snake/content/snake.js +++ b/examples/declarative/snake/content/snake.js @@ -5,8 +5,8 @@ var links = new Array; var scheduledDirections = new Array; var numRows = 1; var numColumns = 1; -var linkComponent = Qt.createComponent("content/Link.qml"); // XXX should resolve relative to script, not component -var cookieComponent = Qt.createComponent("content/Cookie.qml"); +var linkComponent = Qt.createComponent("Link.qml"); +var cookieComponent = Qt.createComponent("Cookie.qml"); var cookie; var linksToGrow = 0; var linksToDie = 0; diff --git a/examples/declarative/snake/snake.qml b/examples/declarative/snake/snake.qml index edccd4c9df..03657fec01 100644 --- a/examples/declarative/snake/snake.qml +++ b/examples/declarative/snake/snake.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "content" as Content import "content/snake.js" as Logic @@ -76,7 +76,7 @@ Rectangle { Timer { id: heartbeat; interval: heartbeatInterval; - running: activeGame && runtime.isActiveWindow + running: activeGame && Qt.application.active repeat: true onTriggered: { Logic.move() } } diff --git a/examples/declarative/twitter/TwitterCore/Button.qml b/examples/declarative/twitter/TwitterCore/Button.qml index 34ca181527..576c48576a 100644 --- a/examples/declarative/twitter/TwitterCore/Button.qml +++ b/examples/declarative/twitter/TwitterCore/Button.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: container diff --git a/examples/declarative/twitter/TwitterCore/FatDelegate.qml b/examples/declarative/twitter/TwitterCore/FatDelegate.qml index 1fe289159c..ce20620314 100644 --- a/examples/declarative/twitter/TwitterCore/FatDelegate.qml +++ b/examples/declarative/twitter/TwitterCore/FatDelegate.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Component { id: listDelegate diff --git a/examples/declarative/twitter/TwitterCore/Input.qml b/examples/declarative/twitter/TwitterCore/Input.qml index 96fafb6bd2..76b1809d6a 100644 --- a/examples/declarative/twitter/TwitterCore/Input.qml +++ b/examples/declarative/twitter/TwitterCore/Input.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 FocusScope { id:container diff --git a/examples/declarative/twitter/TwitterCore/Loading.qml b/examples/declarative/twitter/TwitterCore/Loading.qml index e0c4fa03eb..e15d908610 100644 --- a/examples/declarative/twitter/TwitterCore/Loading.qml +++ b/examples/declarative/twitter/TwitterCore/Loading.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { id: loading; source: "images/loading.png" diff --git a/examples/declarative/twitter/TwitterCore/MultiTitleBar.qml b/examples/declarative/twitter/TwitterCore/MultiTitleBar.qml index 6933d485c0..73a8ab2698 100644 --- a/examples/declarative/twitter/TwitterCore/MultiTitleBar.qml +++ b/examples/declarative/twitter/TwitterCore/MultiTitleBar.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { TitleBar { id: titleBar; width: parent.width; height: 60; diff --git a/examples/declarative/twitter/TwitterCore/RssModel.qml b/examples/declarative/twitter/TwitterCore/RssModel.qml index 696ae9d24d..2abbedcf69 100644 --- a/examples/declarative/twitter/TwitterCore/RssModel.qml +++ b/examples/declarative/twitter/TwitterCore/RssModel.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: wrapper property variant model: xmlModel diff --git a/examples/declarative/twitter/TwitterCore/SearchView.qml b/examples/declarative/twitter/TwitterCore/SearchView.qml index 6e099ae1c7..96f6c8e2cd 100644 --- a/examples/declarative/twitter/TwitterCore/SearchView.qml +++ b/examples/declarative/twitter/TwitterCore/SearchView.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 FocusScope { id: wrapper diff --git a/examples/declarative/twitter/TwitterCore/TitleBar.qml b/examples/declarative/twitter/TwitterCore/TitleBar.qml index 1a2f5d5855..e0ac7f26cc 100644 --- a/examples/declarative/twitter/TwitterCore/TitleBar.qml +++ b/examples/declarative/twitter/TwitterCore/TitleBar.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: titleBar diff --git a/examples/declarative/twitter/TwitterCore/ToolBar.qml b/examples/declarative/twitter/TwitterCore/ToolBar.qml index b277517332..9cf04ab940 100644 --- a/examples/declarative/twitter/TwitterCore/ToolBar.qml +++ b/examples/declarative/twitter/TwitterCore/ToolBar.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Item { id: toolbar diff --git a/examples/declarative/twitter/TwitterCore/UserModel.qml b/examples/declarative/twitter/TwitterCore/UserModel.qml index b87a083eae..00eabb912d 100644 --- a/examples/declarative/twitter/TwitterCore/UserModel.qml +++ b/examples/declarative/twitter/TwitterCore/UserModel.qml @@ -39,7 +39,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 //This "model" gets the user information about the searched user. Mainly for the icon. diff --git a/examples/declarative/twitter/TwitterCore/qmldir b/examples/declarative/twitter/TwitterCore/qmldir index 84d85c2885..452a648b23 100644 --- a/examples/declarative/twitter/TwitterCore/qmldir +++ b/examples/declarative/twitter/TwitterCore/qmldir @@ -1,10 +1,10 @@ -SearchView 1.0 SearchView.qml -Button 1.0 Button.qml -Input 1.0 Input.qml -FatDelegate 1.0 FatDelegate.qml -Loading 1.0 Loading.qml -MultiTitleBar 1.0 MultiTitleBar.qml -TitleBar 1.0 TitleBar.qml -RssModel 1.0 RssModel.qml -UserModel 1.0 UserModel.qml -ToolBar 1.0 ToolBar.qml +SearchView 2.0 SearchView.qml +Button 2.0 Button.qml +Input 2.0 Input.qml +FatDelegate 2.0 FatDelegate.qml +Loading 2.0 Loading.qml +MultiTitleBar 2.0 MultiTitleBar.qml +TitleBar 2.0 TitleBar.qml +RssModel 2.0 RssModel.qml +UserModel 2.0 UserModel.qml +ToolBar 2.0 ToolBar.qml diff --git a/examples/declarative/twitter/twitter.qml b/examples/declarative/twitter/twitter.qml index 1700b5dcd1..05197e26b8 100644 --- a/examples/declarative/twitter/twitter.qml +++ b/examples/declarative/twitter/twitter.qml @@ -39,8 +39,8 @@ ** ****************************************************************************/ -import QtQuick 1.0 -import "TwitterCore" 1.0 as Twitter +import QtQuick 2.0 +import "TwitterCore" 2.0 as Twitter Item { id: screen; width: 320; height: 480 From e824620e9306d665b81cb12e167f50fb1090fddc Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 2 Sep 2011 18:04:00 +1000 Subject: [PATCH 20/68] Ensure layout is done after delayed deletion of items Regression from 1dd8b509074ba60da671f7671f8cf09c3fc001ae Change-Id: I5957444e2f1493aa8fbf3b532fd1ef704deec50c Reviewed-on: http://codereview.qt.nokia.com/4118 Reviewed-by: Bea Lam --- src/declarative/items/qsgitemview.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/declarative/items/qsgitemview.cpp b/src/declarative/items/qsgitemview.cpp index 401a17e2b7..141be4f0dd 100644 --- a/src/declarative/items/qsgitemview.cpp +++ b/src/declarative/items/qsgitemview.cpp @@ -775,6 +775,7 @@ void QSGItemView::destroyRemoved() // Correct the positioning of the items d->updateSections(); + d->forceLayout = true; d->layout(); } From 3e18093886c567d0e83bac87185590bbc5eb9246 Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Wed, 31 Aug 2011 17:40:42 +0200 Subject: [PATCH 21/68] Exported QSGShaderEffectMesh. Reintroduced the possibility to set the ShaderEffect::mesh property to any object deriving from QSGShaderEffectMesh. Change-Id: Idf91b2289d4e7b8fd12993a4a2bc1647dfba0ae0 Reviewed-on: http://codereview.qt.nokia.com/4003 Reviewed-by: Qt Sanity Bot Reviewed-by: Gunnar Sletta --- src/declarative/items/qsgitemsmodule.cpp | 4 +- src/declarative/items/qsgshadereffect.cpp | 72 ++++++------------- src/declarative/items/qsgshadereffect_p.h | 2 +- src/declarative/items/qsgshadereffectmesh.cpp | 42 ++++++++++- src/declarative/items/qsgshadereffectmesh_p.h | 2 +- 5 files changed, 64 insertions(+), 58 deletions(-) diff --git a/src/declarative/items/qsgitemsmodule.cpp b/src/declarative/items/qsgitemsmodule.cpp index 9359906f25..bca0437eb5 100644 --- a/src/declarative/items/qsgitemsmodule.cpp +++ b/src/declarative/items/qsgitemsmodule.cpp @@ -174,8 +174,8 @@ static void qt_sgitems_defineModule(const char *uri, int major, int minor) qmlRegisterType("QtQuick", 2, 0, "ShaderEffectItem"); // TODO: Remove after grace period. qmlRegisterType("QtQuick", 2, 0, "ShaderEffect"); qmlRegisterType("QtQuick", 2, 0, "ShaderEffectSource"); - qmlRegisterUncreatableType("QtQuick", 2, 0, "ShaderEffectMesh", QSGShaderEffectMesh::tr("Cannot create instance of abstract class ShaderEffectMesh.")); // TODO: Remove after grace period. - qmlRegisterType("QtQuick", 2, 0, "GridMesh"); // TODO: Remove after grace period. + qmlRegisterUncreatableType("QtQuick", 2, 0, "ShaderEffectMesh", QSGShaderEffectMesh::tr("Cannot create instance of abstract class ShaderEffectMesh.")); + qmlRegisterType("QtQuick", 2, 0, "GridMesh"); qmlRegisterUncreatableType("QtQuick", 2, 0, "PaintedItem", QSGPaintedItem::tr("Cannot create instance of abstract class PaintedItem")); diff --git a/src/declarative/items/qsgshadereffect.cpp b/src/declarative/items/qsgshadereffect.cpp index c5ea64dcd2..015d724c1e 100644 --- a/src/declarative/items/qsgshadereffect.cpp +++ b/src/declarative/items/qsgshadereffect.cpp @@ -188,7 +188,7 @@ QSGShaderEffectItem::QSGShaderEffectItem(QSGItem *parent) QSGShaderEffect::QSGShaderEffect(QSGItem *parent) : QSGItem(parent) , m_meshResolution(1, 1) - , m_deprecatedMesh(0) + , m_mesh(0) , m_cullMode(NoCulling) , m_blending(true) , m_dirtyData(true) @@ -272,63 +272,34 @@ void QSGShaderEffect::setBlending(bool enable) } /*! - \qmlproperty size QtQuick2::ShaderEffect::mesh + \qmlproperty variant QtQuick2::ShaderEffect::mesh - This property holds the mesh resolution. The default resolution is 1x1 - which is the minimum and corresponds to a mesh with four vertices. - For non-linear vertex transformations, you probably want to set the - resolution higher. + This property defines the mesh used to draw the ShaderEffect. It can hold + any mesh object deriving from \l QSGShaderEffectMesh, such as \l GridMesh. + If a size value is assigned to this property, the ShaderEffect implicitly + uses a \l GridMesh with the value as + \l{GridMesh::resolution}{mesh resolution}. By default, this property is + the size 1x1. - \row - \o \image declarative-gridmesh.png - \o \qml - import QtQuick 2.0 - - ShaderEffect { - width: 200 - height: 200 - mesh: Qt.size(20, 20) - property variant source: Image { - source: "qt-logo.png" - sourceSize { width: 200; height: 200 } - smooth: true - } - vertexShader: " - uniform highp mat4 qt_Matrix; - attribute highp vec4 qt_Vertex; - attribute highp vec2 qt_MultiTexCoord0; - varying highp vec2 qt_TexCoord0; - uniform highp float width; - void main() { - highp vec4 pos = qt_Vertex; - highp float d = .5 * smoothstep(0., 1., qt_MultiTexCoord0.y); - pos.x = width * mix(d, 1.0 - d, qt_MultiTexCoord0.x); - gl_Position = qt_Matrix * pos; - qt_TexCoord0 = qt_MultiTexCoord0; - }" - } - \endqml - \endrow + \sa GridMesh */ QVariant QSGShaderEffect::mesh() const { - return m_deprecatedMesh ? qVariantFromValue(static_cast(m_deprecatedMesh)) - : qVariantFromValue(m_meshResolution); + return m_mesh ? qVariantFromValue(static_cast(m_mesh)) + : qVariantFromValue(m_meshResolution); } void QSGShaderEffect::setMesh(const QVariant &mesh) { - // TODO: Replace QVariant with QSize after grace period. QSGShaderEffectMesh *newMesh = qobject_cast(qVariantValue(mesh)); - if (newMesh && newMesh == m_deprecatedMesh) + if (newMesh && newMesh == m_mesh) return; - if (m_deprecatedMesh) - disconnect(m_deprecatedMesh, SIGNAL(geometryChanged()), this, 0); - m_deprecatedMesh = newMesh; - if (m_deprecatedMesh) { - qWarning("ShaderEffect: Setting the mesh to something other than a size is deprecated."); - connect(m_deprecatedMesh, SIGNAL(geometryChanged()), this, SLOT(updateGeometry())); + if (m_mesh) + disconnect(m_mesh, SIGNAL(geometryChanged()), this, 0); + m_mesh = newMesh; + if (m_mesh) { + connect(m_mesh, SIGNAL(geometryChanged()), this, SLOT(updateGeometry())); } else { if (qVariantCanConvert(mesh)) { m_meshResolution = mesh.toSize(); @@ -344,7 +315,7 @@ void QSGShaderEffect::setMesh(const QVariant &mesh) } } if (!ok) - qWarning("ShaderEffect: mesh resolution must be a size."); + qWarning("ShaderEffect: mesh property must be size or object deriving from QSGShaderEffectMesh."); } m_defaultMesh.setResolution(m_meshResolution); } @@ -505,10 +476,9 @@ void QSGShaderEffect::updateProperties() lookThroughShaderCode(vertexCode); lookThroughShaderCode(fragmentCode); - // TODO: Remove !m_deprecatedMesh check after grace period. - if (!m_deprecatedMesh && !m_source.attributeNames.contains(qt_position_attribute_name)) + if (!m_mesh && !m_source.attributeNames.contains(qt_position_attribute_name)) qWarning("QSGShaderEffect: Missing reference to \'%s\'.", qt_position_attribute_name); - if (!m_deprecatedMesh && !m_source.attributeNames.contains(qt_texcoord_attribute_name)) + if (!m_mesh && !m_source.attributeNames.contains(qt_texcoord_attribute_name)) qWarning("QSGShaderEffect: Missing reference to \'%s\'.", qt_texcoord_attribute_name); if (!m_source.respectsMatrix) qWarning("QSGShaderEffect: Missing reference to \'qt_Matrix\'."); @@ -594,7 +564,7 @@ QSGNode *QSGShaderEffect::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData node->setFlag(QSGNode::OwnsGeometry, false); QSGGeometry *geometry = node->geometry(); QRectF rect(0, 0, width(), height()); - QSGShaderEffectMesh *mesh = m_deprecatedMesh ? m_deprecatedMesh : &m_defaultMesh; + QSGShaderEffectMesh *mesh = m_mesh ? m_mesh : &m_defaultMesh; geometry = mesh->updateGeometry(geometry, m_source.attributeNames, rect); if (!geometry) { diff --git a/src/declarative/items/qsgshadereffect_p.h b/src/declarative/items/qsgshadereffect_p.h index 0cced9a229..9fe9f13251 100644 --- a/src/declarative/items/qsgshadereffect_p.h +++ b/src/declarative/items/qsgshadereffect_p.h @@ -131,7 +131,7 @@ private: QSGShaderEffectProgram m_source; QSize m_meshResolution; - QSGShaderEffectMesh *m_deprecatedMesh; // TODO: Remove after grace period. + QSGShaderEffectMesh *m_mesh; QSGGridMesh m_defaultMesh; CullMode m_cullMode; diff --git a/src/declarative/items/qsgshadereffectmesh.cpp b/src/declarative/items/qsgshadereffectmesh.cpp index 6d3d17e4ff..53fd917e06 100644 --- a/src/declarative/items/qsgshadereffectmesh.cpp +++ b/src/declarative/items/qsgshadereffectmesh.cpp @@ -51,8 +51,9 @@ QSGShaderEffectMesh::QSGShaderEffectMesh(QObject *parent) } /*! - \class QSGGridMesh - \since 5.0 + \qmlclass GridMesh QSGGridMesh + \inqmlmodule QtQuick 2 + \ingroup qml-utility-elements \brief GridMesh defines a mesh with vertices arranged in a grid. GridMesh defines a rectangular mesh consisting of vertices arranged in an @@ -152,12 +153,47 @@ QSGGeometry *QSGGridMesh::updateGeometry(QSGGeometry *geometry, const QVector Date: Wed, 31 Aug 2011 11:30:31 +0200 Subject: [PATCH 22/68] Debugger: Also fix the name of the qdeclarativedebug autotest Change-Id: Ia9d31f9228b9d9e63eccaf2577bf24b3929e5fad Reviewed-by: Aurindam Jana Reviewed-on: http://codereview.qt.nokia.com/3936 Reviewed-by: Kai Koehne Reviewed-by: Qt Sanity Bot --- tests/auto/declarative/declarative.pro | 2 +- .../qdeclarativeenginedebug.pro} | 2 +- .../tst_qdeclarativeenginedebug.cpp} | 66 +++++++++---------- 3 files changed, 35 insertions(+), 35 deletions(-) rename tests/auto/declarative/{qdeclarativedebug/qdeclarativedebug.pro => qdeclarativeenginedebug/qdeclarativeenginedebug.pro} (86%) rename tests/auto/declarative/{qdeclarativedebug/tst_qdeclarativedebug.cpp => qdeclarativeenginedebug/tst_qdeclarativeenginedebug.cpp} (94%) diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 5c5e76d78a..ab7943dab5 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -31,7 +31,7 @@ PRIVATETESTS += \ qdeclarativebehaviors \ qdeclarativebinding \ qdeclarativeconnection \ - qdeclarativedebug \ + qdeclarativeenginedebug \ qdeclarativedebugclient \ qdeclarativedebugservice \ qdeclarativeecmascript \ diff --git a/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro b/tests/auto/declarative/qdeclarativeenginedebug/qdeclarativeenginedebug.pro similarity index 86% rename from tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro rename to tests/auto/declarative/qdeclarativeenginedebug/qdeclarativeenginedebug.pro index 6187020a38..acf62acaf9 100644 --- a/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro +++ b/tests/auto/declarative/qdeclarativeenginedebug/qdeclarativeenginedebug.pro @@ -3,7 +3,7 @@ contains(QT_CONFIG,declarative): QT += network declarative macx:CONFIG -= app_bundle HEADERS += ../shared/debugutil_p.h -SOURCES += tst_qdeclarativedebug.cpp \ +SOURCES += tst_qdeclarativeenginedebug.cpp \ ../shared/debugutil.cpp CONFIG += parallel_test declarative_debug diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativeenginedebug/tst_qdeclarativeenginedebug.cpp similarity index 94% rename from tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp rename to tests/auto/declarative/qdeclarativeenginedebug/tst_qdeclarativeenginedebug.cpp index f4170eacb8..d202a79eb9 100644 --- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp +++ b/tests/auto/declarative/qdeclarativeenginedebug/tst_qdeclarativeenginedebug.cpp @@ -63,7 +63,7 @@ Q_DECLARE_METATYPE(QDeclarativeDebugWatch::State) -class tst_QDeclarativeDebug : public QObject +class tst_QDeclarativeEngineDebug : public QObject { Q_OBJECT @@ -127,7 +127,7 @@ signals: QML_DECLARE_TYPE(NonScriptProperty) -QDeclarativeDebugObjectReference tst_QDeclarativeDebug::findRootObject(int context, bool recursive) +QDeclarativeDebugObjectReference tst_QDeclarativeEngineDebug::findRootObject(int context, bool recursive) { QDeclarativeDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this); waitForQuery(q_engines); @@ -153,7 +153,7 @@ QDeclarativeDebugObjectReference tst_QDeclarativeDebug::findRootObject(int conte return result; } -QDeclarativeDebugPropertyReference tst_QDeclarativeDebug::findProperty(const QList &props, const QString &name) const +QDeclarativeDebugPropertyReference tst_QDeclarativeEngineDebug::findProperty(const QList &props, const QString &name) const { foreach(const QDeclarativeDebugPropertyReference &p, props) { if (p.name() == name) @@ -162,7 +162,7 @@ QDeclarativeDebugPropertyReference tst_QDeclarativeDebug::findProperty(const QLi return QDeclarativeDebugPropertyReference(); } -void tst_QDeclarativeDebug::waitForQuery(QDeclarativeDebugQuery *query) +void tst_QDeclarativeEngineDebug::waitForQuery(QDeclarativeDebugQuery *query) { QVERIFY(query); QCOMPARE(query->parent(), qobject_cast(this)); @@ -171,7 +171,7 @@ void tst_QDeclarativeDebug::waitForQuery(QDeclarativeDebugQuery *query) QFAIL("query timed out"); } -void tst_QDeclarativeDebug::recursiveObjectTest(QObject *o, const QDeclarativeDebugObjectReference &oref, bool recursive) const +void tst_QDeclarativeEngineDebug::recursiveObjectTest(QObject *o, const QDeclarativeDebugObjectReference &oref, bool recursive) const { const QMetaObject *meta = o->metaObject(); @@ -240,7 +240,7 @@ void tst_QDeclarativeDebug::recursiveObjectTest(QObject *o, const QDeclarativeDe } } -void tst_QDeclarativeDebug::recursiveCompareObjects(const QDeclarativeDebugObjectReference &a, const QDeclarativeDebugObjectReference &b) const +void tst_QDeclarativeEngineDebug::recursiveCompareObjects(const QDeclarativeDebugObjectReference &a, const QDeclarativeDebugObjectReference &b) const { QCOMPARE(a.debugId(), b.debugId()); QCOMPARE(a.className(), b.className()); @@ -264,7 +264,7 @@ void tst_QDeclarativeDebug::recursiveCompareObjects(const QDeclarativeDebugObjec recursiveCompareObjects(a.children()[i], b.children()[i]); } -void tst_QDeclarativeDebug::recursiveCompareContexts(const QDeclarativeDebugContextReference &a, const QDeclarativeDebugContextReference &b) const +void tst_QDeclarativeEngineDebug::recursiveCompareContexts(const QDeclarativeDebugContextReference &a, const QDeclarativeDebugContextReference &b) const { QCOMPARE(a.debugId(), b.debugId()); QCOMPARE(a.name(), b.name()); @@ -278,7 +278,7 @@ void tst_QDeclarativeDebug::recursiveCompareContexts(const QDeclarativeDebugCont recursiveCompareContexts(a.contexts()[i], b.contexts()[i]); } -void tst_QDeclarativeDebug::compareProperties(const QDeclarativeDebugPropertyReference &a, const QDeclarativeDebugPropertyReference &b) const +void tst_QDeclarativeEngineDebug::compareProperties(const QDeclarativeDebugPropertyReference &a, const QDeclarativeDebugPropertyReference &b) const { QCOMPARE(a.objectDebugId(), b.objectDebugId()); QCOMPARE(a.name(), b.name()); @@ -288,7 +288,7 @@ void tst_QDeclarativeDebug::compareProperties(const QDeclarativeDebugPropertyRef QCOMPARE(a.hasNotifySignal(), b.hasNotifySignal()); } -void tst_QDeclarativeDebug::initTestCase() +void tst_QDeclarativeEngineDebug::initTestCase() { qRegisterMetaType(); qmlRegisterType("Test", 1, 0, "NonScriptPropertyElement"); @@ -382,7 +382,7 @@ void tst_QDeclarativeDebug::initTestCase() QTRY_VERIFY(m_dbg->status() == QDeclarativeEngineDebug::Enabled); } -void tst_QDeclarativeDebug::cleanupTestCase() +void tst_QDeclarativeEngineDebug::cleanupTestCase() { delete m_dbg; delete m_conn; @@ -390,7 +390,7 @@ void tst_QDeclarativeDebug::cleanupTestCase() delete m_engine; } -void tst_QDeclarativeDebug::setMethodBody() +void tst_QDeclarativeEngineDebug::setMethodBody() { QDeclarativeDebugObjectReference obj = findRootObject(2); @@ -427,7 +427,7 @@ void tst_QDeclarativeDebug::setMethodBody() } } -void tst_QDeclarativeDebug::watch_property() +void tst_QDeclarativeEngineDebug::watch_property() { QDeclarativeDebugObjectReference obj = findRootObject(); QDeclarativeDebugPropertyReference prop = findProperty(obj.properties(), "width"); @@ -472,7 +472,7 @@ void tst_QDeclarativeDebug::watch_property() QCOMPARE(spy.at(0).at(1).value(), qVariantFromValue(origWidth*2)); } -void tst_QDeclarativeDebug::watch_object() +void tst_QDeclarativeEngineDebug::watch_object() { QDeclarativeDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this); waitForQuery(q_engines); @@ -545,7 +545,7 @@ void tst_QDeclarativeDebug::watch_object() QCOMPARE(newHeight, origHeight * 2); } -void tst_QDeclarativeDebug::watch_expression() +void tst_QDeclarativeEngineDebug::watch_expression() { QFETCH(QString, expr); QFETCH(int, increment); @@ -608,7 +608,7 @@ void tst_QDeclarativeDebug::watch_expression() } } -void tst_QDeclarativeDebug::watch_expression_data() +void tst_QDeclarativeEngineDebug::watch_expression_data() { QTest::addColumn("expr"); QTest::addColumn("increment"); @@ -618,21 +618,21 @@ void tst_QDeclarativeDebug::watch_expression_data() QTest::newRow("width+10") << "width + 10" << 10 << 5; } -void tst_QDeclarativeDebug::watch_context() +void tst_QDeclarativeEngineDebug::watch_context() { QDeclarativeDebugContextReference c; QTest::ignoreMessage(QtWarningMsg, "QDeclarativeEngineDebug::addWatch(): Not implemented"); QVERIFY(!m_dbg->addWatch(c, QString(), this)); } -void tst_QDeclarativeDebug::watch_file() +void tst_QDeclarativeEngineDebug::watch_file() { QDeclarativeDebugFileReference f; QTest::ignoreMessage(QtWarningMsg, "QDeclarativeEngineDebug::addWatch(): Not implemented"); QVERIFY(!m_dbg->addWatch(f, this)); } -void tst_QDeclarativeDebug::queryAvailableEngines() +void tst_QDeclarativeEngineDebug::queryAvailableEngines() { QDeclarativeDebugEnginesQuery *q_engines; @@ -667,7 +667,7 @@ void tst_QDeclarativeDebug::queryAvailableEngines() m_dbg = new QDeclarativeEngineDebug(m_conn, this); } -void tst_QDeclarativeDebug::queryRootContexts() +void tst_QDeclarativeEngineDebug::queryRootContexts() { QDeclarativeDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this); waitForQuery(q_engines); @@ -713,7 +713,7 @@ void tst_QDeclarativeDebug::queryRootContexts() m_dbg = new QDeclarativeEngineDebug(m_conn, this); } -void tst_QDeclarativeDebug::queryObject() +void tst_QDeclarativeEngineDebug::queryObject() { QFETCH(bool, recursive); @@ -785,7 +785,7 @@ void tst_QDeclarativeDebug::queryObject() } } -void tst_QDeclarativeDebug::queryObject_data() +void tst_QDeclarativeEngineDebug::queryObject_data() { QTest::addColumn("recursive"); @@ -793,7 +793,7 @@ void tst_QDeclarativeDebug::queryObject_data() QTest::newRow("recursive") << true; } -void tst_QDeclarativeDebug::queryExpressionResult() +void tst_QDeclarativeEngineDebug::queryExpressionResult() { QFETCH(QString, expr); QFETCH(QVariant, result); @@ -834,7 +834,7 @@ void tst_QDeclarativeDebug::queryExpressionResult() m_dbg = new QDeclarativeEngineDebug(m_conn, this); } -void tst_QDeclarativeDebug::queryExpressionResult_data() +void tst_QDeclarativeEngineDebug::queryExpressionResult_data() { QTest::addColumn("expr"); QTest::addColumn("result"); @@ -846,7 +846,7 @@ void tst_QDeclarativeDebug::queryExpressionResult_data() QTest::newRow("list of QObject*") << "varObjList" << qVariantFromValue(QString("")); } -void tst_QDeclarativeDebug::tst_QDeclarativeDebugFileReference() +void tst_QDeclarativeEngineDebug::tst_QDeclarativeDebugFileReference() { QDeclarativeDebugFileReference ref; QVERIFY(ref.url().isEmpty()); @@ -870,7 +870,7 @@ void tst_QDeclarativeDebug::tst_QDeclarativeDebugFileReference() } } -void tst_QDeclarativeDebug::tst_QDeclarativeDebugEngineReference() +void tst_QDeclarativeEngineDebug::tst_QDeclarativeDebugEngineReference() { QDeclarativeDebugEngineReference ref; QCOMPARE(ref.debugId(), -1); @@ -894,7 +894,7 @@ void tst_QDeclarativeDebug::tst_QDeclarativeDebugEngineReference() } } -void tst_QDeclarativeDebug::tst_QDeclarativeDebugObjectReference() +void tst_QDeclarativeEngineDebug::tst_QDeclarativeDebugObjectReference() { QDeclarativeDebugObjectReference ref; QCOMPARE(ref.debugId(), -1); @@ -927,7 +927,7 @@ void tst_QDeclarativeDebug::tst_QDeclarativeDebugObjectReference() recursiveCompareObjects(r, ref); } -void tst_QDeclarativeDebug::tst_QDeclarativeDebugContextReference() +void tst_QDeclarativeEngineDebug::tst_QDeclarativeDebugContextReference() { QDeclarativeDebugContextReference ref; QCOMPARE(ref.debugId(), -1); @@ -952,7 +952,7 @@ void tst_QDeclarativeDebug::tst_QDeclarativeDebugContextReference() recursiveCompareContexts(r, ref); } -void tst_QDeclarativeDebug::tst_QDeclarativeDebugPropertyReference() +void tst_QDeclarativeEngineDebug::tst_QDeclarativeDebugPropertyReference() { QDeclarativeDebugObjectReference rootObject = findRootObject(); QDeclarativeDebugObjectQuery *query = m_dbg->queryObject(rootObject, this); @@ -975,7 +975,7 @@ void tst_QDeclarativeDebug::tst_QDeclarativeDebugPropertyReference() compareProperties(r, ref); } -void tst_QDeclarativeDebug::setBindingForObject() +void tst_QDeclarativeEngineDebug::setBindingForObject() { QDeclarativeDebugObjectReference rootObject = findRootObject(); QVERIFY(rootObject.debugId() != -1); @@ -1046,7 +1046,7 @@ void tst_QDeclarativeDebug::setBindingForObject() QCOMPARE(onEnteredRef.value(), QVariant("{console.log('hello, world') }")); } -void tst_QDeclarativeDebug::setBindingInStates() +void tst_QDeclarativeEngineDebug::setBindingInStates() { // Check if changing bindings of propertychanges works @@ -1138,7 +1138,7 @@ void tst_QDeclarativeDebug::setBindingInStates() QCOMPARE(findProperty(obj.properties(),"width").value().toInt(), 300); } -void tst_QDeclarativeDebug::queryObjectTree() +void tst_QDeclarativeEngineDebug::queryObjectTree() { const int sourceIndex = 3; @@ -1212,9 +1212,9 @@ int main(int argc, char *argv[]) _argv[_argc - 1] = arg; QApplication app(_argc, _argv); - tst_QDeclarativeDebug tc; + tst_QDeclarativeEngineDebug tc; return QTest::qExec(&tc, _argc, _argv); delete _argv; } -#include "tst_qdeclarativedebug.moc" +#include "tst_qdeclarativeenginedebug.moc" From 33fc967ced44312c196197f09259074b23eb15ab Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 09:15:05 +0200 Subject: [PATCH 23/68] Debugger: Fix indentation & trailing whitespace Change-Id: I4b85b205a359e4c3adc1fcb6682945724a0910c5 Reviewed-by: Aurindam Jana Reviewed-on: http://codereview.qt.nokia.com/3937 Reviewed-by: Kai Koehne --- .../debugger/qdeclarativedebugclient.cpp | 16 +-- .../debugger/qdeclarativedebugserver.cpp | 10 +- .../debugger/qdeclarativedebugservice.cpp | 42 +++---- .../debugger/qdeclarativedebugtrace.cpp | 12 +- .../debugger/qdeclarativeenginedebug.cpp | 104 +++++++++--------- .../debugger/qdeclarativeenginedebug_p.h | 41 +++---- .../qdeclarativeenginedebugservice.cpp | 46 ++++---- src/declarative/debugger/qpacketprotocol.cpp | 26 ++--- src/declarative/debugger/qpacketprotocol_p.h | 2 +- 9 files changed, 150 insertions(+), 149 deletions(-) diff --git a/src/declarative/debugger/qdeclarativedebugclient.cpp b/src/declarative/debugger/qdeclarativedebugclient.cpp index d3617b19b5..9853a9ff60 100644 --- a/src/declarative/debugger/qdeclarativedebugclient.cpp +++ b/src/declarative/debugger/qdeclarativedebugclient.cpp @@ -84,7 +84,7 @@ public Q_SLOTS: }; QDeclarativeDebugConnectionPrivate::QDeclarativeDebugConnectionPrivate(QDeclarativeDebugConnection *c) -: QObject(c), q(c), protocol(0), gotHello(false) + : QObject(c), q(c), protocol(0), gotHello(false) { protocol = new QPacketProtocol(q, this); QObject::connect(c, SIGNAL(connected()), this, SLOT(connected())); @@ -183,7 +183,7 @@ void QDeclarativeDebugConnectionPrivate::readyRead() pack >> message; QHash::Iterator iter = - plugins.find(name); + plugins.find(name); if (iter == plugins.end()) { qWarning() << "QDeclarativeDebugConnection: Message received for missing plugin" << name; } else { @@ -194,7 +194,7 @@ void QDeclarativeDebugConnectionPrivate::readyRead() } QDeclarativeDebugConnection::QDeclarativeDebugConnection(QObject *parent) -: QTcpSocket(parent), d(new QDeclarativeDebugConnectionPrivate(this)) + : QTcpSocket(parent), d(new QDeclarativeDebugConnectionPrivate(this)) { } @@ -202,8 +202,8 @@ QDeclarativeDebugConnection::~QDeclarativeDebugConnection() { QHash::iterator iter = d->plugins.begin(); for (; iter != d->plugins.end(); ++iter) { - iter.value()->d_func()->connection = 0; - iter.value()->statusChanged(QDeclarativeDebugClient::NotConnected); + iter.value()->d_func()->connection = 0; + iter.value()->statusChanged(QDeclarativeDebugClient::NotConnected); } } @@ -213,13 +213,13 @@ bool QDeclarativeDebugConnection::isConnected() const } QDeclarativeDebugClientPrivate::QDeclarativeDebugClientPrivate() -: connection(0) + : connection(0) { } QDeclarativeDebugClient::QDeclarativeDebugClient(const QString &name, - QDeclarativeDebugConnection *parent) -: QObject(*(new QDeclarativeDebugClientPrivate), parent) + QDeclarativeDebugConnection *parent) + : QObject(*(new QDeclarativeDebugClientPrivate), parent) { Q_D(QDeclarativeDebugClient); d->name = name; diff --git a/src/declarative/debugger/qdeclarativedebugserver.cpp b/src/declarative/debugger/qdeclarativedebugserver.cpp index e7785d0f90..1963dcecfd 100644 --- a/src/declarative/debugger/qdeclarativedebugserver.cpp +++ b/src/declarative/debugger/qdeclarativedebugserver.cpp @@ -120,7 +120,7 @@ void QDeclarativeDebugServerPrivate::advertisePlugins() } QDeclarativeDebugServerConnection *QDeclarativeDebugServerPrivate::loadConnectionPlugin( - const QString &pluginName) + const QString &pluginName) { QStringList pluginCandidates; const QStringList paths = QCoreApplication::libraryPaths(); @@ -178,9 +178,9 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance() if (!appD->qmljsDebugArgumentsString().isEmpty()) { if (!QDeclarativeEnginePrivate::qml_debugging_enabled) { const QString message = - QString::fromAscii("QDeclarativeDebugServer: Ignoring \"-qmljsdebugger=%1\". " - "Debugging has not been enabled.").arg( - appD->qmljsDebugArgumentsString()); + QString::fromAscii("QDeclarativeDebugServer: Ignoring \"-qmljsdebugger=%1\". " + "Debugging has not been enabled.").arg( + appD->qmljsDebugArgumentsString()); qWarning("%s", qPrintable(message)); return 0; } @@ -231,7 +231,7 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance() } QDeclarativeDebugServer::QDeclarativeDebugServer() -: QObject(*(new QDeclarativeDebugServerPrivate)) + : QObject(*(new QDeclarativeDebugServerPrivate)) { } diff --git a/src/declarative/debugger/qdeclarativedebugservice.cpp b/src/declarative/debugger/qdeclarativedebugservice.cpp index 7274211bf2..ecd9e0fb85 100644 --- a/src/declarative/debugger/qdeclarativedebugservice.cpp +++ b/src/declarative/debugger/qdeclarativedebugservice.cpp @@ -49,12 +49,12 @@ QT_BEGIN_NAMESPACE QDeclarativeDebugServicePrivate::QDeclarativeDebugServicePrivate() -: server(0) + : server(0) { } QDeclarativeDebugService::QDeclarativeDebugService(const QString &name, QObject *parent) -: QObject(*(new QDeclarativeDebugServicePrivate), parent) + : QObject(*(new QDeclarativeDebugServicePrivate), parent) { Q_D(QDeclarativeDebugService); d->name = name; @@ -114,21 +114,21 @@ QDeclarativeDebugService::Status QDeclarativeDebugService::status() const namespace { - struct ObjectReference - { - QPointer object; - int id; - }; +struct ObjectReference +{ + QPointer object; + int id; +}; - struct ObjectReferenceHash - { - ObjectReferenceHash() : nextId(0) {} +struct ObjectReferenceHash +{ + ObjectReferenceHash() : nextId(0) {} - QHash objects; - QHash ids; + QHash objects; + QHash ids; - int nextId; - }; + int nextId; +}; } Q_GLOBAL_STATIC(ObjectReferenceHash, objectReferenceHash); @@ -144,8 +144,8 @@ int QDeclarativeDebugService::idForObject(QObject *object) return -1; ObjectReferenceHash *hash = objectReferenceHash(); - QHash::Iterator iter = - hash->objects.find(object); + QHash::Iterator iter = + hash->objects.find(object); if (iter == hash->objects.end()) { int id = hash->nextId++; @@ -162,7 +162,7 @@ int QDeclarativeDebugService::idForObject(QObject *object) hash->ids.insert(id, object); iter->object = object; iter->id = id; - } + } return iter->id; } @@ -180,8 +180,8 @@ QObject *QDeclarativeDebugService::objectForId(int id) return 0; - QHash::Iterator objIter = - hash->objects.find(*iter); + QHash::Iterator objIter = + hash->objects.find(*iter); Q_ASSERT(objIter != hash->objects.end()); if (objIter->object == 0) { @@ -213,8 +213,8 @@ QString QDeclarativeDebugService::objectToString(QObject *obj) if(objectName.isEmpty()) objectName = QLatin1String(""); - QString rv = QString::fromUtf8(obj->metaObject()->className()) + - QLatin1String(": ") + objectName; + QString rv = QString::fromUtf8(obj->metaObject()->className()) + + QLatin1String(": ") + objectName; return rv; } diff --git a/src/declarative/debugger/qdeclarativedebugtrace.cpp b/src/declarative/debugger/qdeclarativedebugtrace.cpp index 0a46d68aa7..dc1a34d733 100644 --- a/src/declarative/debugger/qdeclarativedebugtrace.cpp +++ b/src/declarative/debugger/qdeclarativedebugtrace.cpp @@ -64,8 +64,8 @@ QByteArray QDeclarativeDebugData::toByteArray() const } QDeclarativeDebugTrace::QDeclarativeDebugTrace() -: QDeclarativeDebugService(QLatin1String("CanvasFrameRate")), - m_enabled(false), m_deferredSend(true), m_messageReceived(false) + : QDeclarativeDebugService(QLatin1String("CanvasFrameRate")), + m_enabled(false), m_deferredSend(true), m_messageReceived(false) { m_timer.start(); if (status() == Enabled) { @@ -77,19 +77,19 @@ QDeclarativeDebugTrace::QDeclarativeDebugTrace() void QDeclarativeDebugTrace::addEvent(EventType t) { - if (QDeclarativeDebugService::isDebuggingEnabled()) + if (QDeclarativeDebugService::isDebuggingEnabled()) traceInstance()->addEventImpl(t); } void QDeclarativeDebugTrace::startRange(RangeType t) { - if (QDeclarativeDebugService::isDebuggingEnabled()) + if (QDeclarativeDebugService::isDebuggingEnabled()) traceInstance()->startRangeImpl(t); } void QDeclarativeDebugTrace::rangeData(RangeType t, const QString &data) { - if (QDeclarativeDebugService::isDebuggingEnabled()) + if (QDeclarativeDebugService::isDebuggingEnabled()) traceInstance()->rangeDataImpl(t, data); } @@ -113,7 +113,7 @@ void QDeclarativeDebugTrace::rangeLocation(RangeType t, const QUrl &fileName, in void QDeclarativeDebugTrace::endRange(RangeType t) { - if (QDeclarativeDebugService::isDebuggingEnabled()) + if (QDeclarativeDebugService::isDebuggingEnabled()) traceInstance()->endRangeImpl(t); } diff --git a/src/declarative/debugger/qdeclarativeenginedebug.cpp b/src/declarative/debugger/qdeclarativeenginedebug.cpp index 85ce7108dd..836885db2a 100644 --- a/src/declarative/debugger/qdeclarativeenginedebug.cpp +++ b/src/declarative/debugger/qdeclarativeenginedebug.cpp @@ -95,8 +95,8 @@ public: }; QDeclarativeEngineDebugClient::QDeclarativeEngineDebugClient(QDeclarativeDebugConnection *client, - QDeclarativeEngineDebugPrivate *p) -: QDeclarativeDebugClient(QLatin1String("QDeclarativeEngine"), client), priv(p) + QDeclarativeEngineDebugPrivate *p) + : QDeclarativeDebugClient(QLatin1String("QDeclarativeEngine"), client), priv(p) { } @@ -113,7 +113,7 @@ void QDeclarativeEngineDebugClient::messageReceived(const QByteArray &data) } QDeclarativeEngineDebugPrivate::QDeclarativeEngineDebugPrivate(QDeclarativeDebugConnection *c) -: client(new QDeclarativeEngineDebugClient(c, this)), nextId(0) + : client(new QDeclarativeEngineDebugClient(c, this)), nextId(0) { } @@ -172,7 +172,7 @@ void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclara } void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, - QDeclarativeDebugRootContextQuery *q) + QDeclarativeDebugRootContextQuery *q) { if (c && q) { QDeclarativeEngineDebugPrivate *p = (QDeclarativeEngineDebugPrivate *)QObjectPrivate::get(c); @@ -205,7 +205,7 @@ void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclara } void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugObjectReference &o, - bool simple) + bool simple) { QDeclarativeEngineDebugService::QDeclarativeObjectData data; ds >> data; @@ -243,22 +243,22 @@ void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugOb prop.m_hasNotifySignal = data.hasNotifySignal; prop.m_valueTypeName = data.valueTypeName; switch (data.type) { - case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Basic: - case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::List: - case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::SignalProperty: - { - prop.m_value = data.value; - break; - } - case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Object: - { - QDeclarativeDebugObjectReference obj; - obj.m_debugId = prop.m_value.toInt(); - prop.m_value = QVariant::fromValue(obj); - break; - } - case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Unknown: - break; + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Basic: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::List: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::SignalProperty: + { + prop.m_value = data.value; + break; + } + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Object: + { + QDeclarativeDebugObjectReference obj; + obj.m_debugId = prop.m_value.toInt(); + prop.m_value = QVariant::fromValue(obj); + break; + } + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Unknown: + break; } o.m_properties << prop; } @@ -332,7 +332,7 @@ void QDeclarativeEngineDebugPrivate::message(const QByteArray &data) return; rootContextQuery.remove(queryId); - if (!ds.atEnd()) + if (!ds.atEnd()) decode(ds, query->m_context); query->m_client = 0; @@ -411,7 +411,7 @@ void QDeclarativeEngineDebugPrivate::message(const QByteArray &data) } QDeclarativeEngineDebug::QDeclarativeEngineDebug(QDeclarativeDebugConnection *client, QObject *parent) -: QObject(*(new QDeclarativeEngineDebugPrivate(client)), parent) + : QObject(*(new QDeclarativeEngineDebugPrivate(client)), parent) { } @@ -580,7 +580,7 @@ QDeclarativeDebugObjectQuery *QDeclarativeEngineDebug::queryObject(const QDeclar QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); - ds << QByteArray("FETCH_OBJECT") << queryId << object.debugId() + ds << QByteArray("FETCH_OBJECT") << queryId << object.debugId() << false << true; d->client->sendMessage(message); } else { @@ -603,7 +603,7 @@ QDeclarativeDebugObjectQuery *QDeclarativeEngineDebug::queryObjectRecursive(cons QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); - ds << QByteArray("FETCH_OBJECT") << queryId << object.debugId() + ds << QByteArray("FETCH_OBJECT") << queryId << object.debugId() << true << true; d->client->sendMessage(message); } else { @@ -686,7 +686,7 @@ bool QDeclarativeEngineDebug::setMethodBody(int objectDebugId, const QString &me } QDeclarativeDebugWatch::QDeclarativeDebugWatch(QObject *parent) -: QObject(parent), m_state(Waiting), m_queryId(-1), m_client(0), m_objectDebugId(-1) + : QObject(parent), m_state(Waiting), m_queryId(-1), m_client(0), m_objectDebugId(-1) { } @@ -742,7 +742,7 @@ QString QDeclarativeDebugObjectExpressionWatch::expression() const QDeclarativeDebugQuery::QDeclarativeDebugQuery(QObject *parent) -: QObject(parent), m_state(Waiting) + : QObject(parent), m_state(Waiting) { } @@ -765,13 +765,13 @@ void QDeclarativeDebugQuery::setState(State s) } QDeclarativeDebugEnginesQuery::QDeclarativeDebugEnginesQuery(QObject *parent) -: QDeclarativeDebugQuery(parent), m_client(0), m_queryId(-1) + : QDeclarativeDebugQuery(parent), m_client(0), m_queryId(-1) { } QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery() { - if (m_client && m_queryId != -1) + if (m_client && m_queryId != -1) QDeclarativeEngineDebugPrivate::remove(m_client, this); } @@ -781,13 +781,13 @@ QList QDeclarativeDebugEnginesQuery::engines() } QDeclarativeDebugRootContextQuery::QDeclarativeDebugRootContextQuery(QObject *parent) -: QDeclarativeDebugQuery(parent), m_client(0), m_queryId(-1) + : QDeclarativeDebugQuery(parent), m_client(0), m_queryId(-1) { } QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery() { - if (m_client && m_queryId != -1) + if (m_client && m_queryId != -1) QDeclarativeEngineDebugPrivate::remove(m_client, this); } @@ -797,13 +797,13 @@ QDeclarativeDebugContextReference QDeclarativeDebugRootContextQuery::rootContext } QDeclarativeDebugObjectQuery::QDeclarativeDebugObjectQuery(QObject *parent) -: QDeclarativeDebugQuery(parent), m_client(0), m_queryId(-1) + : QDeclarativeDebugQuery(parent), m_client(0), m_queryId(-1) { } QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery() { - if (m_client && m_queryId != -1) + if (m_client && m_queryId != -1) QDeclarativeEngineDebugPrivate::remove(m_client, this); } @@ -813,13 +813,13 @@ QDeclarativeDebugObjectReference QDeclarativeDebugObjectQuery::object() const } QDeclarativeDebugExpressionQuery::QDeclarativeDebugExpressionQuery(QObject *parent) -: QDeclarativeDebugQuery(parent), m_client(0), m_queryId(-1) + : QDeclarativeDebugQuery(parent), m_client(0), m_queryId(-1) { } QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery() { - if (m_client && m_queryId != -1) + if (m_client && m_queryId != -1) QDeclarativeEngineDebugPrivate::remove(m_client, this); } @@ -834,17 +834,17 @@ QVariant QDeclarativeDebugExpressionQuery::result() const } QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference() -: m_debugId(-1) + : m_debugId(-1) { } QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(int debugId) -: m_debugId(debugId) + : m_debugId(debugId) { } QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(const QDeclarativeDebugEngineReference &o) -: m_debugId(o.m_debugId), m_name(o.m_name) + : m_debugId(o.m_debugId), m_name(o.m_name) { } @@ -866,19 +866,19 @@ QString QDeclarativeDebugEngineReference::name() const } QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference() -: m_debugId(-1), m_contextDebugId(-1) + : m_debugId(-1), m_contextDebugId(-1) { } QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(int debugId) -: m_debugId(debugId), m_contextDebugId(-1) + : m_debugId(debugId), m_contextDebugId(-1) { } QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(const QDeclarativeDebugObjectReference &o) -: m_debugId(o.m_debugId), m_class(o.m_class), m_idString(o.m_idString), - m_name(o.m_name), m_source(o.m_source), m_contextDebugId(o.m_contextDebugId), - m_properties(o.m_properties), m_children(o.m_children) + : m_debugId(o.m_debugId), m_class(o.m_class), m_idString(o.m_idString), + m_name(o.m_name), m_source(o.m_source), m_contextDebugId(o.m_contextDebugId), + m_properties(o.m_properties), m_children(o.m_children) { } @@ -932,18 +932,18 @@ QList QDeclarativeDebugObjectReference::childr } QDeclarativeDebugContextReference::QDeclarativeDebugContextReference() -: m_debugId(-1) + : m_debugId(-1) { } QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(const QDeclarativeDebugContextReference &o) -: m_debugId(o.m_debugId), m_name(o.m_name), m_objects(o.m_objects), m_contexts(o.m_contexts) + : m_debugId(o.m_debugId), m_name(o.m_name), m_objects(o.m_objects), m_contexts(o.m_contexts) { } QDeclarativeDebugContextReference &QDeclarativeDebugContextReference::operator=(const QDeclarativeDebugContextReference &o) { - m_debugId = o.m_debugId; m_name = o.m_name; m_objects = o.m_objects; + m_debugId = o.m_debugId; m_name = o.m_name; m_objects = o.m_objects; m_contexts = o.m_contexts; return *this; } @@ -969,12 +969,12 @@ QList QDeclarativeDebugContextReference::cont } QDeclarativeDebugFileReference::QDeclarativeDebugFileReference() -: m_lineNumber(-1), m_columnNumber(-1) + : m_lineNumber(-1), m_columnNumber(-1) { } QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(const QDeclarativeDebugFileReference &o) -: m_url(o.m_url), m_lineNumber(o.m_lineNumber), m_columnNumber(o.m_columnNumber) + : m_url(o.m_url), m_lineNumber(o.m_lineNumber), m_columnNumber(o.m_columnNumber) { } @@ -1015,14 +1015,14 @@ void QDeclarativeDebugFileReference::setColumnNumber(int c) } QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference() -: m_objectDebugId(-1), m_hasNotifySignal(false) + : m_objectDebugId(-1), m_hasNotifySignal(false) { } QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(const QDeclarativeDebugPropertyReference &o) -: m_objectDebugId(o.m_objectDebugId), m_name(o.m_name), m_value(o.m_value), - m_valueTypeName(o.m_valueTypeName), m_binding(o.m_binding), - m_hasNotifySignal(o.m_hasNotifySignal) + : m_objectDebugId(o.m_objectDebugId), m_name(o.m_name), m_value(o.m_value), + m_valueTypeName(o.m_valueTypeName), m_binding(o.m_binding), + m_hasNotifySignal(o.m_hasNotifySignal) { } diff --git a/src/declarative/debugger/qdeclarativeenginedebug_p.h b/src/declarative/debugger/qdeclarativeenginedebug_p.h index 9b70e1c6bc..24d0d85794 100644 --- a/src/declarative/debugger/qdeclarativeenginedebug_p.h +++ b/src/declarative/debugger/qdeclarativeenginedebug_p.h @@ -38,6 +38,7 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ + #ifndef QDECLARATIVEENGINEDEBUG_H #define QDECLARATIVEENGINEDEBUG_H @@ -69,7 +70,7 @@ class QDeclarativeDebugEngineReference; class QDeclarativeEngineDebugPrivate; class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeEngineDebug : public QObject { -Q_OBJECT + Q_OBJECT public: enum Status { NotConnected, Unavailable, Enabled }; @@ -78,28 +79,28 @@ public: Status status() const; QDeclarativeDebugPropertyWatch *addWatch(const QDeclarativeDebugPropertyReference &, - QObject *parent = 0); + QObject *parent = 0); QDeclarativeDebugWatch *addWatch(const QDeclarativeDebugContextReference &, const QString &, - QObject *parent = 0); + QObject *parent = 0); QDeclarativeDebugObjectExpressionWatch *addWatch(const QDeclarativeDebugObjectReference &, const QString &, - QObject *parent = 0); + QObject *parent = 0); QDeclarativeDebugWatch *addWatch(const QDeclarativeDebugObjectReference &, - QObject *parent = 0); + QObject *parent = 0); QDeclarativeDebugWatch *addWatch(const QDeclarativeDebugFileReference &, - QObject *parent = 0); + QObject *parent = 0); void removeWatch(QDeclarativeDebugWatch *watch); QDeclarativeDebugEnginesQuery *queryAvailableEngines(QObject *parent = 0); QDeclarativeDebugRootContextQuery *queryRootContexts(const QDeclarativeDebugEngineReference &, - QObject *parent = 0); - QDeclarativeDebugObjectQuery *queryObject(const QDeclarativeDebugObjectReference &, - QObject *parent = 0); - QDeclarativeDebugObjectQuery *queryObjectRecursive(const QDeclarativeDebugObjectReference &, + QObject *parent = 0); + QDeclarativeDebugObjectQuery *queryObject(const QDeclarativeDebugObjectReference &, QObject *parent = 0); - QDeclarativeDebugExpressionQuery *queryExpressionResult(int objectDebugId, - const QString &expr, - QObject *parent = 0); + QDeclarativeDebugObjectQuery *queryObjectRecursive(const QDeclarativeDebugObjectReference &, + QObject *parent = 0); + QDeclarativeDebugExpressionQuery *queryExpressionResult(int objectDebugId, + const QString &expr, + QObject *parent = 0); bool setBindingForObject(int objectDebugId, const QString &propertyName, const QVariant &bindingExpression, bool isLiteralValue, QString source = QString(), int line = -1); @@ -116,7 +117,7 @@ private: class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugWatch : public QObject { -Q_OBJECT + Q_OBJECT public: enum State { Waiting, Active, Inactive, Dead }; @@ -175,14 +176,14 @@ private: class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugQuery : public QObject { -Q_OBJECT + Q_OBJECT public: enum State { Waiting, Error, Completed }; State state() const; bool isWaiting() const; -// bool waitUntilCompleted(); + // bool waitUntilCompleted(); Q_SIGNALS: void stateChanged(QDeclarativeDebugQuery::State); @@ -314,7 +315,7 @@ private: class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugEnginesQuery : public QDeclarativeDebugQuery { -Q_OBJECT + Q_OBJECT public: virtual ~QDeclarativeDebugEnginesQuery(); QList engines() const; @@ -329,7 +330,7 @@ private: class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugRootContextQuery : public QDeclarativeDebugQuery { -Q_OBJECT + Q_OBJECT public: virtual ~QDeclarativeDebugRootContextQuery(); QDeclarativeDebugContextReference rootContext() const; @@ -344,7 +345,7 @@ private: class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugObjectQuery : public QDeclarativeDebugQuery { -Q_OBJECT + Q_OBJECT public: virtual ~QDeclarativeDebugObjectQuery(); QDeclarativeDebugObjectReference object() const; @@ -360,7 +361,7 @@ private: class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugExpressionQuery : public QDeclarativeDebugQuery { -Q_OBJECT + Q_OBJECT public: virtual ~QDeclarativeDebugExpressionQuery(); QVariant expression() const; diff --git a/src/declarative/debugger/qdeclarativeenginedebugservice.cpp b/src/declarative/debugger/qdeclarativeenginedebugservice.cpp index 2e5683c753..9841f8778e 100644 --- a/src/declarative/debugger/qdeclarativeenginedebugservice.cpp +++ b/src/declarative/debugger/qdeclarativeenginedebugservice.cpp @@ -67,8 +67,8 @@ QDeclarativeEngineDebugService *QDeclarativeEngineDebugService::instance() } QDeclarativeEngineDebugService::QDeclarativeEngineDebugService(QObject *parent) -: QDeclarativeDebugService(QLatin1String("QDeclarativeEngine"), parent), - m_watch(new QDeclarativeWatcher(this)) + : QDeclarativeDebugService(QLatin1String("QDeclarativeEngine"), parent), + m_watch(new QDeclarativeWatcher(this)) { QObject::connect(m_watch, SIGNAL(propertyChanged(int,int,QMetaProperty,QVariant)), this, SLOT(propertyChanged(int,int,QMetaProperty,QVariant))); @@ -112,7 +112,7 @@ static inline bool isSignalPropertyName(const QString &signalName) { // see QmlCompiler::isSignalPropertyName return signalName.length() >= 3 && signalName.startsWith(QLatin1String("on")) && - signalName.at(2).isLetter() && signalName.at(2).isUpper(); + signalName.at(2).isLetter() && signalName.at(2).isUpper(); } static bool hasValidSignal(QObject *object, const QString &propertyName) @@ -142,8 +142,8 @@ QDeclarativeEngineDebugService::propertyData(QObject *obj, int propIdx) rv.valueTypeName = QString::fromUtf8(prop.typeName()); rv.name = QString::fromUtf8(prop.name()); rv.hasNotifySignal = prop.hasNotifySignal(); - QDeclarativeAbstractBinding *binding = - QDeclarativePropertyPrivate::binding(QDeclarativeProperty(obj, rv.name)); + QDeclarativeAbstractBinding *binding = + QDeclarativePropertyPrivate::binding(QDeclarativeProperty(obj, rv.name)); if (binding) rv.binding = binding->expression(); @@ -193,8 +193,8 @@ QVariant QDeclarativeEngineDebugService::valueContents(const QVariant &value) co return QLatin1String(""); } -void QDeclarativeEngineDebugService::buildObjectDump(QDataStream &message, - QObject *object, bool recur, bool dumpProperties) +void QDeclarativeEngineDebugService::buildObjectDump(QDataStream &message, + QObject *object, bool recur, bool dumpProperties) { message << objectData(object); @@ -283,7 +283,7 @@ void QDeclarativeEngineDebugService::buildObjectList(QDataStream &message, QDecl QString ctxtName = ctxt->objectName(); int ctxtId = QDeclarativeDebugService::idForObject(ctxt); - message << ctxtName << ctxtId; + message << ctxtName << ctxtId; int count = 0; @@ -336,7 +336,7 @@ void QDeclarativeEngineDebugService::buildStatesList(QDeclarativeContext *ctxt, void QDeclarativeEngineDebugService::buildStatesList(QObject *obj) { if (QDeclarativeState *state = qobject_cast(obj)) { - m_allStates.append(state); + m_allStates.append(state); } QObjectList children = obj->children(); @@ -416,8 +416,8 @@ void QDeclarativeEngineDebugService::messageReceived(const QByteArray &message) int engineId = -1; ds >> queryId >> engineId; - QDeclarativeEngine *engine = - qobject_cast(QDeclarativeDebugService::objectForId(engineId)); + QDeclarativeEngine *engine = + qobject_cast(QDeclarativeDebugService::objectForId(engineId)); QByteArray reply; QDataStream rs(&reply, QIODevice::WriteOnly); @@ -546,11 +546,11 @@ void QDeclarativeEngineDebugService::messageReceived(const QByteArray &message) } void QDeclarativeEngineDebugService::setBinding(int objectId, - const QString &propertyName, - const QVariant &expression, - bool isLiteralValue, - QString filename, - int line) + const QString &propertyName, + const QVariant &expression, + bool isLiteralValue, + QString filename, + int line) { QObject *object = objectForId(objectId); QDeclarativeContext *context = qmlContext(object); @@ -656,7 +656,7 @@ void QDeclarativeEngineDebugService::resetBinding(int objectId, const QString &p } else if (hasValidSignal(object, propertyName)) { QDeclarativeProperty property(object, propertyName, context); QDeclarativePropertyPrivate::setSignalExpression(property, 0); - } else { + } else { if (QDeclarativePropertyChanges *propertyChanges = qobject_cast(object)) { propertyChanges->removeProperty(propertyName); } @@ -675,8 +675,8 @@ void QDeclarativeEngineDebugService::setMethodBody(int objectId, const QString & return; QDeclarativePropertyCache::Data dummy; - QDeclarativePropertyCache::Data *prop = - QDeclarativePropertyCache::property(context->engine(), object, method, dummy); + QDeclarativePropertyCache::Data *prop = + QDeclarativePropertyCache::property(context->engine(), object, method, dummy); if (!prop || !prop->isVMEFunction()) return; @@ -690,13 +690,13 @@ void QDeclarativeEngineDebugService::setMethodBody(int objectId, const QString & paramStr.append(QString::fromUtf8(paramNames.at(ii))); } - QString jsfunction = QLatin1String("(function ") + method + QLatin1String("(") + paramStr + - QLatin1String(") {"); + QString jsfunction = QLatin1String("(function ") + method + QLatin1String("(") + paramStr + + QLatin1String(") {"); jsfunction += body; jsfunction += QLatin1String("\n})"); - QDeclarativeVMEMetaObject *vmeMetaObject = - static_cast(QObjectPrivate::get(object)->metaObject); + QDeclarativeVMEMetaObject *vmeMetaObject = + static_cast(QObjectPrivate::get(object)->metaObject); Q_ASSERT(vmeMetaObject); // the fact we found the property above should guarentee this int lineNumber = vmeMetaObject->vmeMethodLineNumber(prop->coreIndex); diff --git a/src/declarative/debugger/qpacketprotocol.cpp b/src/declarative/debugger/qpacketprotocol.cpp index 9caaa79011..0f1c15e3b8 100644 --- a/src/declarative/debugger/qpacketprotocol.cpp +++ b/src/declarative/debugger/qpacketprotocol.cpp @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE \brief The QPacketProtocol class encapsulates communicating discrete packets across fragmented IO channels, such as TCP sockets. - QPacketProtocol makes it simple to send arbitrary sized data "packets" across + QPacketProtocol makes it simple to send arbitrary sized data "packets" across fragmented transports such as TCP and UDP. As transmission boundaries are not respected, sending packets over protocols @@ -111,11 +111,11 @@ QT_BEGIN_NAMESPACE class QPacketProtocolPrivate : public QObject { -Q_OBJECT + Q_OBJECT public: QPacketProtocolPrivate(QPacketProtocol * parent, QIODevice * _dev) - : QObject(parent), inProgressSize(-1), maxPacketSize(MAX_PACKET_SIZE), - waitingForPacket(false), dev(_dev) + : QObject(parent), inProgressSize(-1), maxPacketSize(MAX_PACKET_SIZE), + waitingForPacket(false), dev(_dev) { Q_ASSERT(4 == sizeof(qint32)); @@ -222,7 +222,7 @@ public: specified \a parent. */ QPacketProtocol::QPacketProtocol(QIODevice * dev, QObject * parent) -: QObject(parent), d(new QPacketProtocolPrivate(this, dev)) + : QObject(parent), d(new QPacketProtocolPrivate(this, dev)) { Q_ASSERT(dev); } @@ -236,7 +236,7 @@ QPacketProtocol::~QPacketProtocol() /*! Returns the maximum packet size allowed. By default this is - 2,147,483,647 bytes. + 2,147,483,647 bytes. If a packet claiming to be larger than the maximum packet size is received, the QPacketProtocol::invalidPacket() signal is emitted. @@ -267,7 +267,7 @@ qint32 QPacketProtocol::setMaximumPacketSize(qint32 max) protocol.send() << "Hello world" << 123; \endcode - will send a packet containing "Hello world" and 123. To construct more + will send a packet containing "Hello world" and 123. To construct more complex packets, explicitly construct a QPacket instance. */ QPacketAutoSend QPacketProtocol::send() @@ -433,8 +433,8 @@ QIODevice * QPacketProtocol::device() \endcode Only packets returned from QPacketProtocol::read() may be read from. QPacket - instances constructed by directly by applications are for transmission only - and are considered "write only". Attempting to read data from them will + instances constructed by directly by applications are for transmission only + and are considered "write only". Attempting to read data from them will result in undefined behavior. \ingroup io @@ -445,7 +445,7 @@ QIODevice * QPacketProtocol::device() Constructs an empty write-only packet. */ QPacket::QPacket() -: QDataStream(), buf(0) + : QDataStream(), buf(0) { buf = new QBuffer(&b); buf->open(QIODevice::WriteOnly); @@ -469,7 +469,7 @@ QPacket::~QPacket() two packets are otherwise independent. */ QPacket::QPacket(const QPacket & other) -: QDataStream(), b(other.b), buf(0) + : QDataStream(), b(other.b), buf(0) { buf = new QBuffer(&b); buf->open(other.buf->openMode()); @@ -480,7 +480,7 @@ QPacket::QPacket(const QPacket & other) \internal */ QPacket::QPacket(const QByteArray & ba) -: QDataStream(), b(ba), buf(0) + : QDataStream(), b(ba), buf(0) { buf = new QBuffer(&b); buf->open(QIODevice::ReadOnly); @@ -535,7 +535,7 @@ void QPacket::clear() \internal */ QPacketAutoSend::QPacketAutoSend(QPacketProtocol * _p) -: QPacket(), p(_p) + : QPacket(), p(_p) { } diff --git a/src/declarative/debugger/qpacketprotocol_p.h b/src/declarative/debugger/qpacketprotocol_p.h index df3b170d17..9035d12947 100644 --- a/src/declarative/debugger/qpacketprotocol_p.h +++ b/src/declarative/debugger/qpacketprotocol_p.h @@ -61,7 +61,7 @@ class QPacketProtocolPrivate; class Q_DECLARATIVE_PRIVATE_EXPORT QPacketProtocol : public QObject { -Q_OBJECT + Q_OBJECT public: explicit QPacketProtocol(QIODevice * dev, QObject * parent = 0); virtual ~QPacketProtocol(); From b44395a4cbaa197b43c47fa92f9ca78696dc0d30 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 09:17:57 +0200 Subject: [PATCH 24/68] Debugger: Add missing QT_BEGIN_NAMESPACE, QT_END_NAMESPACE Change-Id: I7cb404eac7a3f469fc6b1d40398ab0c40787cc8d Reviewed-on: http://codereview.qt.nokia.com/3938 Reviewed-by: Qt Sanity Bot Reviewed-by: Aurindam Jana --- src/declarative/debugger/qdeclarativedebugtrace.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/declarative/debugger/qdeclarativedebugtrace.cpp b/src/declarative/debugger/qdeclarativedebugtrace.cpp index dc1a34d733..befc3ea374 100644 --- a/src/declarative/debugger/qdeclarativedebugtrace.cpp +++ b/src/declarative/debugger/qdeclarativedebugtrace.cpp @@ -45,6 +45,8 @@ #include #include +QT_BEGIN_NAMESPACE + Q_GLOBAL_STATIC(QDeclarativeDebugTrace, traceInstance); // convert to a QByteArray that can be sent to the debug client @@ -223,3 +225,5 @@ void QDeclarativeDebugTrace::messageReceived(const QByteArray &message) if (!m_enabled) sendMessages(); } + +QT_END_NAMESPACE From b66a981bf10fccabc14f97bb0cb5ee2f973e15a8 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 09:19:57 +0200 Subject: [PATCH 25/68] Debugger: Canonalize header defines Change-Id: I2cbe704326e993c47dd78182683787394f598ae4 Reviewed-on: http://codereview.qt.nokia.com/3939 Reviewed-by: Qt Sanity Bot Reviewed-by: Aurindam Jana --- src/declarative/debugger/qdeclarativeinspectorinterface_p.h | 6 +++--- src/declarative/debugger/qdeclarativeinspectorservice_p.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/declarative/debugger/qdeclarativeinspectorinterface_p.h b/src/declarative/debugger/qdeclarativeinspectorinterface_p.h index aa29d6807e..cb2b60407d 100644 --- a/src/declarative/debugger/qdeclarativeinspectorinterface_p.h +++ b/src/declarative/debugger/qdeclarativeinspectorinterface_p.h @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#ifndef QDECLARATIVEOBSERVERINTERFACE_H -#define QDECLARATIVEOBSERVERINTERFACE_H +#ifndef QDECLARATIVEINSPECTORINTERFACE_H +#define QDECLARATIVEINSPECTORINTERFACE_H #include @@ -66,4 +66,4 @@ QT_END_NAMESPACE QT_END_HEADER -#endif // QDECLARATIVEOBSERVERINTERFACE_H +#endif // QDECLARATIVEINSPECTORINTERFACE_H diff --git a/src/declarative/debugger/qdeclarativeinspectorservice_p.h b/src/declarative/debugger/qdeclarativeinspectorservice_p.h index db94103210..229a974684 100644 --- a/src/declarative/debugger/qdeclarativeinspectorservice_p.h +++ b/src/declarative/debugger/qdeclarativeinspectorservice_p.h @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#ifndef QDECLARATIVEOBSERVERSERVICE_H -#define QDECLARATIVEOBSERVERSERVICE_H +#ifndef QDECLARATIVEINSPECTORSERVICE_H +#define QDECLARATIVEINSPECTORSERVICE_H #include "private/qdeclarativedebugservice_p.h" #include @@ -87,4 +87,4 @@ QT_END_NAMESPACE QT_END_HEADER -#endif // QDECLARATIVEOBSERVERSERVICE_H +#endif // QDECLARATIVEINSPECTORSERVICE_H From a439673745ea1c92fe236c3928c34fa3f0637eec Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 09:23:45 +0200 Subject: [PATCH 26/68] Debugger: Add private header warning to all _p.h files Change-Id: Ib5cccd8a2f252a2e67c8e0fdf979c3e8114ff131 Reviewed-on: http://codereview.qt.nokia.com/3940 Reviewed-by: Aurindam Jana Reviewed-by: Qt Sanity Bot --- src/declarative/debugger/qdeclarativedebugclient_p.h | 11 +++++++++++ .../debugger/qdeclarativedebuggerstatus_p.h | 11 +++++++++++ src/declarative/debugger/qdeclarativedebughelper_p.h | 11 +++++++++++ src/declarative/debugger/qdeclarativedebugserver_p.h | 11 +++++++++++ .../debugger/qdeclarativedebugserverconnection_p.h | 11 +++++++++++ src/declarative/debugger/qdeclarativedebugservice_p.h | 11 +++++++++++ .../debugger/qdeclarativedebugservice_p_p.h | 11 +++++++++++ src/declarative/debugger/qdeclarativedebugtrace_p.h | 11 +++++++++++ src/declarative/debugger/qdeclarativeenginedebug_p.h | 11 +++++++++++ .../debugger/qdeclarativeinspectorinterface_p.h | 11 +++++++++++ .../debugger/qdeclarativeinspectorservice_p.h | 11 +++++++++++ src/declarative/debugger/qpacketprotocol_p.h | 11 +++++++++++ 12 files changed, 132 insertions(+) diff --git a/src/declarative/debugger/qdeclarativedebugclient_p.h b/src/declarative/debugger/qdeclarativedebugclient_p.h index a2648d61c2..5b5d6705f9 100644 --- a/src/declarative/debugger/qdeclarativedebugclient_p.h +++ b/src/declarative/debugger/qdeclarativedebugclient_p.h @@ -42,6 +42,17 @@ #ifndef QDECLARATIVEDEBUGCLIENT_H #define QDECLARATIVEDEBUGCLIENT_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include diff --git a/src/declarative/debugger/qdeclarativedebuggerstatus_p.h b/src/declarative/debugger/qdeclarativedebuggerstatus_p.h index 7904a06af6..385301e62d 100644 --- a/src/declarative/debugger/qdeclarativedebuggerstatus_p.h +++ b/src/declarative/debugger/qdeclarativedebuggerstatus_p.h @@ -42,6 +42,17 @@ #ifndef QDECLARATIVEDEBUGGERSTATUS_P_H #define QDECLARATIVEDEBUGGERSTATUS_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include diff --git a/src/declarative/debugger/qdeclarativedebughelper_p.h b/src/declarative/debugger/qdeclarativedebughelper_p.h index d9ed5796ee..b92f3ba975 100644 --- a/src/declarative/debugger/qdeclarativedebughelper_p.h +++ b/src/declarative/debugger/qdeclarativedebughelper_p.h @@ -46,6 +46,17 @@ #include +// +// 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. +// + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE diff --git a/src/declarative/debugger/qdeclarativedebugserver_p.h b/src/declarative/debugger/qdeclarativedebugserver_p.h index 53c1077c7b..d80633cd7d 100644 --- a/src/declarative/debugger/qdeclarativedebugserver_p.h +++ b/src/declarative/debugger/qdeclarativedebugserver_p.h @@ -45,6 +45,17 @@ #include #include +// +// 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. +// + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE diff --git a/src/declarative/debugger/qdeclarativedebugserverconnection_p.h b/src/declarative/debugger/qdeclarativedebugserverconnection_p.h index d7f0de62fa..832224ea33 100644 --- a/src/declarative/debugger/qdeclarativedebugserverconnection_p.h +++ b/src/declarative/debugger/qdeclarativedebugserverconnection_p.h @@ -44,6 +44,17 @@ #include +// +// 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. +// + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE diff --git a/src/declarative/debugger/qdeclarativedebugservice_p.h b/src/declarative/debugger/qdeclarativedebugservice_p.h index 84e63c0ddc..05580ee5c2 100644 --- a/src/declarative/debugger/qdeclarativedebugservice_p.h +++ b/src/declarative/debugger/qdeclarativedebugservice_p.h @@ -46,6 +46,17 @@ #include +// +// 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. +// + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE diff --git a/src/declarative/debugger/qdeclarativedebugservice_p_p.h b/src/declarative/debugger/qdeclarativedebugservice_p_p.h index 78076892cb..12233ed739 100644 --- a/src/declarative/debugger/qdeclarativedebugservice_p_p.h +++ b/src/declarative/debugger/qdeclarativedebugservice_p_p.h @@ -42,6 +42,17 @@ #ifndef QDECLARATIVEDEBUGSERVICE_P_H #define QDECLARATIVEDEBUGSERVICE_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include diff --git a/src/declarative/debugger/qdeclarativedebugtrace_p.h b/src/declarative/debugger/qdeclarativedebugtrace_p.h index f2710cde93..fb2ef53a4a 100644 --- a/src/declarative/debugger/qdeclarativedebugtrace_p.h +++ b/src/declarative/debugger/qdeclarativedebugtrace_p.h @@ -42,6 +42,17 @@ #ifndef QDECLARATIVEDEBUGTRACE_P_H #define QDECLARATIVEDEBUGTRACE_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include diff --git a/src/declarative/debugger/qdeclarativeenginedebug_p.h b/src/declarative/debugger/qdeclarativeenginedebug_p.h index 24d0d85794..2cc6bfb9e9 100644 --- a/src/declarative/debugger/qdeclarativeenginedebug_p.h +++ b/src/declarative/debugger/qdeclarativeenginedebug_p.h @@ -42,6 +42,17 @@ #ifndef QDECLARATIVEENGINEDEBUG_H #define QDECLARATIVEENGINEDEBUG_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include #include diff --git a/src/declarative/debugger/qdeclarativeinspectorinterface_p.h b/src/declarative/debugger/qdeclarativeinspectorinterface_p.h index cb2b60407d..d0d9f44d7b 100644 --- a/src/declarative/debugger/qdeclarativeinspectorinterface_p.h +++ b/src/declarative/debugger/qdeclarativeinspectorinterface_p.h @@ -42,6 +42,17 @@ #ifndef QDECLARATIVEINSPECTORINTERFACE_H #define QDECLARATIVEINSPECTORINTERFACE_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include QT_BEGIN_HEADER diff --git a/src/declarative/debugger/qdeclarativeinspectorservice_p.h b/src/declarative/debugger/qdeclarativeinspectorservice_p.h index 229a974684..98b2e9deeb 100644 --- a/src/declarative/debugger/qdeclarativeinspectorservice_p.h +++ b/src/declarative/debugger/qdeclarativeinspectorservice_p.h @@ -42,6 +42,17 @@ #ifndef QDECLARATIVEINSPECTORSERVICE_H #define QDECLARATIVEINSPECTORSERVICE_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 "private/qdeclarativedebugservice_p.h" #include diff --git a/src/declarative/debugger/qpacketprotocol_p.h b/src/declarative/debugger/qpacketprotocol_p.h index 9035d12947..f7f3060c4b 100644 --- a/src/declarative/debugger/qpacketprotocol_p.h +++ b/src/declarative/debugger/qpacketprotocol_p.h @@ -42,6 +42,17 @@ #ifndef QPACKETPROTOCOL_H #define QPACKETPROTOCOL_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include From 6cb39fb829b78b5f6e9751283c7cd50400821e2a Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 10:01:19 +0200 Subject: [PATCH 27/68] Debugger: Move QT_DECLARATIVE_DEBUG handling out of qdeclarative.h Apps don't have to (directly or indirectly) include qdeclarative.h. Instead, move the static instance to qdeclarativeengine.h, and qdeclarativeview.h, qsgview.h (which instantiate their own engine). Change-Id: I8b3e63ad4f134969734a2cc712395145d90e0dfa Reviewed-on: http://codereview.qt.nokia.com/3941 Reviewed-by: Qt Sanity Bot Reviewed-by: Aurindam Jana Reviewed-by: Martin Jones --- src/declarative/debugger/debugger.pri | 3 +- src/declarative/debugger/qdeclarativedebug.h | 67 ++++++++++++++++++++ src/declarative/items/qsgview.h | 3 +- src/declarative/qml/qdeclarative.h | 11 ---- src/declarative/qml/qdeclarativeengine.h | 1 + src/qtquick1/util/qdeclarativeview.h | 1 + 6 files changed, 73 insertions(+), 13 deletions(-) create mode 100644 src/declarative/debugger/qdeclarativedebug.h diff --git a/src/declarative/debugger/debugger.pri b/src/declarative/debugger/debugger.pri index f2790c4ecd..a257da216f 100644 --- a/src/declarative/debugger/debugger.pri +++ b/src/declarative/debugger/debugger.pri @@ -27,4 +27,5 @@ HEADERS += \ $$PWD/qdeclarativeinspectorservice_p.h \ $$PWD/qdeclarativeinspectorinterface_p.h \ $$PWD/qv8debugservice_p.h \ - $$PWD/qdeclarativeenginedebugservice_p.h + $$PWD/qdeclarativeenginedebugservice_p.h \ + $$PWD/qdeclarativedebug.h diff --git a/src/declarative/debugger/qdeclarativedebug.h b/src/declarative/debugger/qdeclarativedebug.h new file mode 100644 index 0000000000..b7930b21f0 --- /dev/null +++ b/src/declarative/debugger/qdeclarativedebug.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 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 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDECLARATIVEDEBUG_H +#define QDECLARATIVEDEBUG_H + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +struct Q_DECLARATIVE_EXPORT QDeclarativeDebuggingEnabler +{ + QDeclarativeDebuggingEnabler(); +}; + +// Execute code in constructor before first QDeclarativeEngine is instantiated +#if defined(QT_DECLARATIVE_DEBUG) +static QDeclarativeDebuggingEnabler qmlEnableDebuggingHelper; +#endif + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QDECLARATIVEDEBUG_H diff --git a/src/declarative/items/qsgview.h b/src/declarative/items/qsgview.h index 9b5ace13f3..ede488b2ce 100644 --- a/src/declarative/items/qsgview.h +++ b/src/declarative/items/qsgview.h @@ -43,8 +43,9 @@ #ifndef QSGVIEW_H #define QSGVIEW_H -#include #include +#include +#include QT_BEGIN_HEADER diff --git a/src/declarative/qml/qdeclarative.h b/src/declarative/qml/qdeclarative.h index a0eb98d366..312aecbf76 100644 --- a/src/declarative/qml/qdeclarative.h +++ b/src/declarative/qml/qdeclarative.h @@ -552,17 +552,6 @@ inline int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMi return QDeclarativePrivate::qmlregister(QDeclarativePrivate::ModuleApiRegistration, &api); } -// Enable debugging before any QDeclarativeEngine is created -struct Q_DECLARATIVE_EXPORT QDeclarativeDebuggingEnabler -{ - QDeclarativeDebuggingEnabler(); -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -#if defined(QT_DECLARATIVE_DEBUG) -static QDeclarativeDebuggingEnabler qmlEnableDebuggingHelper; -#endif - QT_END_NAMESPACE QML_DECLARE_TYPE(QObject) diff --git a/src/declarative/qml/qdeclarativeengine.h b/src/declarative/qml/qdeclarativeengine.h index 3f90296681..74c3c6cb83 100644 --- a/src/declarative/qml/qdeclarativeengine.h +++ b/src/declarative/qml/qdeclarativeengine.h @@ -48,6 +48,7 @@ #include #include #include +#include QT_BEGIN_HEADER diff --git a/src/qtquick1/util/qdeclarativeview.h b/src/qtquick1/util/qdeclarativeview.h index 39a2322f99..aafb464b17 100644 --- a/src/qtquick1/util/qdeclarativeview.h +++ b/src/qtquick1/util/qdeclarativeview.h @@ -47,6 +47,7 @@ #include #include #include +#include QT_BEGIN_HEADER From 08e187b1d48aeb3f824aa5240e55def428dcad45 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 12:38:54 +0200 Subject: [PATCH 28/68] Debugger: Fixing coding style issues Applying changes done in the Qt Creator copies. Change-Id: I11e0547ddedd2e1f0b99d0ea586a1b209fa8d912 Reviewed-on: http://codereview.qt.nokia.com/3942 Reviewed-by: Aurindam Jana --- .../debugger/qdeclarativeenginedebug.cpp | 4 +++ .../debugger/qdeclarativeenginedebug_p.h | 3 +- src/declarative/debugger/qpacketprotocol.cpp | 30 +++++++++---------- src/declarative/debugger/qpacketprotocol_p.h | 12 ++++---- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/declarative/debugger/qdeclarativeenginedebug.cpp b/src/declarative/debugger/qdeclarativeenginedebug.cpp index 836885db2a..237e2d6376 100644 --- a/src/declarative/debugger/qdeclarativeenginedebug.cpp +++ b/src/declarative/debugger/qdeclarativeenginedebug.cpp @@ -415,6 +415,10 @@ QDeclarativeEngineDebug::QDeclarativeEngineDebug(QDeclarativeDebugConnection *cl { } +QDeclarativeEngineDebug::~QDeclarativeEngineDebug() +{ +} + QDeclarativeEngineDebug::Status QDeclarativeEngineDebug::status() const { Q_D(const QDeclarativeEngineDebug); diff --git a/src/declarative/debugger/qdeclarativeenginedebug_p.h b/src/declarative/debugger/qdeclarativeenginedebug_p.h index 2cc6bfb9e9..d98e4e875e 100644 --- a/src/declarative/debugger/qdeclarativeenginedebug_p.h +++ b/src/declarative/debugger/qdeclarativeenginedebug_p.h @@ -86,6 +86,7 @@ public: enum Status { NotConnected, Unavailable, Enabled }; explicit QDeclarativeEngineDebug(QDeclarativeDebugConnection *, QObject * = 0); + ~QDeclarativeEngineDebug(); Status status() const; @@ -194,8 +195,6 @@ public: State state() const; bool isWaiting() const; - // bool waitUntilCompleted(); - Q_SIGNALS: void stateChanged(QDeclarativeDebugQuery::State); diff --git a/src/declarative/debugger/qpacketprotocol.cpp b/src/declarative/debugger/qpacketprotocol.cpp index 0f1c15e3b8..9b95d06e1e 100644 --- a/src/declarative/debugger/qpacketprotocol.cpp +++ b/src/declarative/debugger/qpacketprotocol.cpp @@ -41,12 +41,12 @@ #include "private/qpacketprotocol_p.h" -#include -#include +#include +#include QT_BEGIN_NAMESPACE -#define MAX_PACKET_SIZE 0x7FFFFFFF +static const unsigned int MAX_PACKET_SIZE = 0x7FFFFFFF; /*! \class QPacketProtocol @@ -113,7 +113,7 @@ class QPacketProtocolPrivate : public QObject { Q_OBJECT public: - QPacketProtocolPrivate(QPacketProtocol * parent, QIODevice * _dev) + QPacketProtocolPrivate(QPacketProtocol *parent, QIODevice *_dev) : QObject(parent), inProgressSize(-1), maxPacketSize(MAX_PACKET_SIZE), waitingForPacket(false), dev(_dev) { @@ -150,8 +150,8 @@ public Q_SLOTS: { Q_ASSERT(!sendingPackets.isEmpty()); - while(bytes) { - if(sendingPackets.at(0) > bytes) { + while (bytes) { + if (sendingPackets.at(0) > bytes) { sendingPackets[0] -= bytes; bytes = 0; } else { @@ -214,14 +214,14 @@ public: qint32 inProgressSize; qint32 maxPacketSize; bool waitingForPacket; - QIODevice * dev; + QIODevice *dev; }; /*! Construct a QPacketProtocol instance that works on \a dev with the specified \a parent. */ -QPacketProtocol::QPacketProtocol(QIODevice * dev, QObject * parent) +QPacketProtocol::QPacketProtocol(QIODevice *dev, QObject *parent) : QObject(parent), d(new QPacketProtocolPrivate(this, dev)) { Q_ASSERT(dev); @@ -255,7 +255,7 @@ qint32 QPacketProtocol::maximumPacketSize() const */ qint32 QPacketProtocol::setMaximumPacketSize(qint32 max) { - if(max > (signed)sizeof(qint32)) + if (max > (signed)sizeof(qint32)) d->maxPacketSize = max; return d->maxPacketSize; } @@ -282,7 +282,7 @@ QPacketAutoSend QPacketProtocol::send() */ void QPacketProtocol::send(const QPacket & p) { - if(p.b.isEmpty()) + if (p.b.isEmpty()) return; // We don't send empty packets qint64 sendSize = p.b.size() + sizeof(qint32); @@ -317,7 +317,7 @@ void QPacketProtocol::clear() */ QPacket QPacketProtocol::read() { - if(0 == d->packets.count()) + if (0 == d->packets.count()) return QPacket(); QPacket rv(d->packets.at(0)); @@ -370,7 +370,7 @@ bool QPacketProtocol::waitForReadyRead(int msecs) /*! Return the QIODevice passed to the QPacketProtocol constructor. */ -QIODevice * QPacketProtocol::device() +QIODevice *QPacketProtocol::device() { return d->dev; } @@ -458,7 +458,7 @@ QPacket::QPacket() */ QPacket::~QPacket() { - if(buf) { + if (buf) { delete buf; buf = 0; } @@ -534,14 +534,14 @@ void QPacket::clear() \internal */ -QPacketAutoSend::QPacketAutoSend(QPacketProtocol * _p) +QPacketAutoSend::QPacketAutoSend(QPacketProtocol *_p) : QPacket(), p(_p) { } QPacketAutoSend::~QPacketAutoSend() { - if(!b.isEmpty()) + if (!b.isEmpty()) p->send(*this); } diff --git a/src/declarative/debugger/qpacketprotocol_p.h b/src/declarative/debugger/qpacketprotocol_p.h index f7f3060c4b..5d9d820317 100644 --- a/src/declarative/debugger/qpacketprotocol_p.h +++ b/src/declarative/debugger/qpacketprotocol_p.h @@ -74,7 +74,7 @@ class Q_DECLARATIVE_PRIVATE_EXPORT QPacketProtocol : public QObject { Q_OBJECT public: - explicit QPacketProtocol(QIODevice * dev, QObject * parent = 0); + explicit QPacketProtocol(QIODevice *dev, QObject *parent = 0); virtual ~QPacketProtocol(); qint32 maximumPacketSize() const; @@ -90,7 +90,7 @@ public: void clear(); - QIODevice * device(); + QIODevice *device(); Q_SIGNALS: void readyRead(); @@ -98,7 +98,7 @@ Q_SIGNALS: void packetWritten(); private: - QPacketProtocolPrivate * d; + QPacketProtocolPrivate *d; }; @@ -115,9 +115,9 @@ public: protected: friend class QPacketProtocol; - QPacket(const QByteArray & ba); + QPacket(const QByteArray &ba); QByteArray b; - QBuffer * buf; + QBuffer *buf; }; class Q_DECLARATIVE_PRIVATE_EXPORT QPacketAutoSend : public QPacket @@ -128,7 +128,7 @@ public: private: friend class QPacketProtocol; QPacketAutoSend(QPacketProtocol *); - QPacketProtocol * p; + QPacketProtocol *p; }; QT_END_NAMESPACE From d3c58815a37a311c1bd743a102368e03fd07fee1 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 31 Aug 2011 12:41:04 +0200 Subject: [PATCH 29/68] Debugger: Merge back changes from Qt Creator copy Apply changes done to the Qt Creator copy. In Qt Creator we also support connecting via OST, which we don't do inside QtDeclarative because it would pull in dependencies. Anyhow, make the code align nevertheless. Change-Id: I98f0be5ed3e136374e163cf1400df100128497ee Reviewed-on: http://codereview.qt.nokia.com/3943 Reviewed-by: Qt Sanity Bot Reviewed-by: Aurindam Jana --- .../debugger/qdeclarativedebugclient.cpp | 106 ++++++++++++++++-- .../debugger/qdeclarativedebugclient_p.h | 22 +++- 2 files changed, 119 insertions(+), 9 deletions(-) diff --git a/src/declarative/debugger/qdeclarativedebugclient.cpp b/src/declarative/debugger/qdeclarativedebugclient.cpp index 9853a9ff60..606ad2deae 100644 --- a/src/declarative/debugger/qdeclarativedebugclient.cpp +++ b/src/declarative/debugger/qdeclarativedebugclient.cpp @@ -45,6 +45,7 @@ #include #include +#include #include @@ -71,20 +72,23 @@ public: QDeclarativeDebugConnectionPrivate(QDeclarativeDebugConnection *c); QDeclarativeDebugConnection *q; QPacketProtocol *protocol; + QIODevice *device; bool gotHello; QStringList serverPlugins; QHash plugins; void advertisePlugins(); + void connectDeviceSignals(); public Q_SLOTS: void connected(); void readyRead(); + void deviceAboutToClose(); }; QDeclarativeDebugConnectionPrivate::QDeclarativeDebugConnectionPrivate(QDeclarativeDebugConnection *c) - : QObject(c), q(c), protocol(0), gotHello(false) + : QObject(c), q(c), protocol(0), device(0), gotHello(false) { protocol = new QPacketProtocol(q, this); QObject::connect(c, SIGNAL(connected()), this, SLOT(connected())); @@ -137,7 +141,6 @@ void QDeclarativeDebugConnectionPrivate::readyRead() QObject::disconnect(protocol, SIGNAL(readyRead()), this, SLOT(readyRead())); return; } - gotHello = true; QHash::Iterator iter = plugins.begin(); @@ -193,8 +196,15 @@ void QDeclarativeDebugConnectionPrivate::readyRead() } } +void QDeclarativeDebugConnectionPrivate::deviceAboutToClose() +{ + // This is nasty syntax but we want to emit our own aboutToClose signal (by calling QIODevice::close()) + // without calling the underlying device close fn as that would cause an infinite loop + q->QIODevice::close(); +} + QDeclarativeDebugConnection::QDeclarativeDebugConnection(QObject *parent) - : QTcpSocket(parent), d(new QDeclarativeDebugConnectionPrivate(this)) + : QIODevice(parent), d(new QDeclarativeDebugConnectionPrivate(this)) { } @@ -209,9 +219,92 @@ QDeclarativeDebugConnection::~QDeclarativeDebugConnection() bool QDeclarativeDebugConnection::isConnected() const { - return state() == ConnectedState; + return state() == QAbstractSocket::ConnectedState; } +qint64 QDeclarativeDebugConnection::readData(char *data, qint64 maxSize) +{ + return d->device->read(data, maxSize); +} + +qint64 QDeclarativeDebugConnection::writeData(const char *data, qint64 maxSize) +{ + return d->device->write(data, maxSize); +} + +qint64 QDeclarativeDebugConnection::bytesAvailable() const +{ + return d->device->bytesAvailable(); +} + +bool QDeclarativeDebugConnection::isSequential() const +{ + return true; +} + +void QDeclarativeDebugConnection::close() +{ + if (isOpen()) { + QIODevice::close(); + d->device->close(); + emit stateChanged(QAbstractSocket::UnconnectedState); + + QHash::iterator iter = d->plugins.begin(); + for (; iter != d->plugins.end(); ++iter) { + iter.value()->statusChanged(QDeclarativeDebugClient::NotConnected); + } + } +} + +bool QDeclarativeDebugConnection::waitForConnected(int msecs) +{ + QAbstractSocket *socket = qobject_cast(d->device); + if (socket) + return socket->waitForConnected(msecs); + return false; +} + +QAbstractSocket::SocketState QDeclarativeDebugConnection::state() const +{ + QAbstractSocket *socket = qobject_cast(d->device); + if (socket) + return socket->state(); + + return QAbstractSocket::UnconnectedState; +} + +void QDeclarativeDebugConnection::flush() +{ + QAbstractSocket *socket = qobject_cast(d->device); + if (socket) { + socket->flush(); + return; + } +} + +void QDeclarativeDebugConnection::connectToHost(const QString &hostName, quint16 port) +{ + QTcpSocket *socket = new QTcpSocket(d); + socket->setProxy(QNetworkProxy::NoProxy); + d->device = socket; + d->connectDeviceSignals(); + d->gotHello = false; + connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SIGNAL(stateChanged(QAbstractSocket::SocketState))); + connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SIGNAL(error(QAbstractSocket::SocketError))); + connect(socket, SIGNAL(connected()), this, SIGNAL(connected())); + socket->connectToHost(hostName, port); + QIODevice::open(ReadWrite | Unbuffered); +} + +void QDeclarativeDebugConnectionPrivate::connectDeviceSignals() +{ + connect(device, SIGNAL(bytesWritten(qint64)), q, SIGNAL(bytesWritten(qint64))); + connect(device, SIGNAL(readyRead()), q, SIGNAL(readyRead())); + connect(device, SIGNAL(aboutToClose()), this, SLOT(deviceAboutToClose())); +} + +// + QDeclarativeDebugClientPrivate::QDeclarativeDebugClientPrivate() : connection(0) { @@ -239,7 +332,7 @@ QDeclarativeDebugClient::QDeclarativeDebugClient(const QString &name, QDeclarativeDebugClient::~QDeclarativeDebugClient() { - Q_D(const QDeclarativeDebugClient); + Q_D(QDeclarativeDebugClient); if (d->connection && d->connection->d) { d->connection->d->plugins.remove(d->name); d->connection->d->advertisePlugins(); @@ -269,14 +362,13 @@ QDeclarativeDebugClient::Status QDeclarativeDebugClient::status() const void QDeclarativeDebugClient::sendMessage(const QByteArray &message) { Q_D(QDeclarativeDebugClient); - if (status() != Enabled) return; QPacket pack; pack << d->name << message; d->connection->d->protocol->send(pack); - d->connection->d->q->flush(); + d->connection->flush(); } void QDeclarativeDebugClient::statusChanged(Status) diff --git a/src/declarative/debugger/qdeclarativedebugclient_p.h b/src/declarative/debugger/qdeclarativedebugclient_p.h index 5b5d6705f9..5b219358ff 100644 --- a/src/declarative/debugger/qdeclarativedebugclient_p.h +++ b/src/declarative/debugger/qdeclarativedebugclient_p.h @@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) class QDeclarativeDebugConnectionPrivate; -class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugConnection : public QTcpSocket +class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugConnection : public QIODevice { Q_OBJECT Q_DISABLE_COPY(QDeclarativeDebugConnection) @@ -72,7 +72,25 @@ public: QDeclarativeDebugConnection(QObject * = 0); ~QDeclarativeDebugConnection(); + void connectToHost(const QString &hostName, quint16 port); + + qint64 bytesAvailable() const; bool isConnected() const; + QAbstractSocket::SocketState state() const; + void flush(); + bool isSequential() const; + void close(); + bool waitForConnected(int msecs = 30000); + +signals: + void connected(); + void stateChanged(QAbstractSocket::SocketState socketState); + void error(QAbstractSocket::SocketError socketError); + +protected: + qint64 readData(char *data, qint64 maxSize); + qint64 writeData(const char *data, qint64 maxSize); + private: QDeclarativeDebugConnectionPrivate *d; friend class QDeclarativeDebugClient; @@ -96,7 +114,7 @@ public: Status status() const; - void sendMessage(const QByteArray &); + virtual void sendMessage(const QByteArray &); protected: virtual void statusChanged(Status); From ae064a9dc862b5912bde030394c426d166194898 Mon Sep 17 00:00:00 2001 From: Jonni Rainisto Date: Fri, 2 Sep 2011 11:35:11 +0300 Subject: [PATCH 30/68] Fix build break for QT_OPENGL_ES builds. Change-Id: I1e277e79bd9b3f38e3540495e8006f1c41cfecc8 Reviewed-on: http://codereview.qt.nokia.com/4122 Reviewed-by: Qt Sanity Bot Reviewed-by: Wolf-Michael Bolle Reviewed-by: Jonni Rainisto Reviewed-by: Rohan McGovern --- src/declarative/designer/designersupport.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/declarative/designer/designersupport.cpp b/src/declarative/designer/designersupport.cpp index 91186a4a2e..da02721789 100644 --- a/src/declarative/designer/designersupport.cpp +++ b/src/declarative/designer/designersupport.cpp @@ -85,7 +85,11 @@ void DesignerSupport::refFromEffectItem(QSGItem *referencedItem, bool hide) texture->setRect(referencedItem->boundingRect()); texture->setSize(referencedItem->boundingRect().size().toSize()); texture->setRecursive(true); +#ifndef QT_OPENGL_ES texture->setFormat(GL_RGBA8); +#else + texture->setFormat(GL_RGBA); +#endif texture->setHasMipmaps(false); m_itemTextureHash.insert(referencedItem, texture); From f22ae0f5f18a354bf3addd8023ad8b8810e42bac Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Tue, 2 Aug 2011 15:41:22 +1000 Subject: [PATCH 31/68] Fix some memory leaks in the compiler Task-number: QTBUG-17770 Change-Id: I6d9d357bf529a9a3f414182fb6a818ddedda8e18 Reviewed-on: http://codereview.qt.nokia.com/2487 Reviewed-by: Qt Sanity Bot Reviewed-by: Michael Brasser --- src/declarative/qml/qdeclarativebinding.cpp | 2 ++ src/declarative/qml/qdeclarativeexpression.cpp | 2 ++ .../qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/declarative/qml/qdeclarativebinding.cpp b/src/declarative/qml/qdeclarativebinding.cpp index d817990d7b..9a69a6bfd0 100644 --- a/src/declarative/qml/qdeclarativebinding.cpp +++ b/src/declarative/qml/qdeclarativebinding.cpp @@ -243,6 +243,8 @@ QDeclarativeBinding::createBinding(Identifier id, QObject *obj, QDeclarativeCont cdata = typeData->compiledData(); } QDeclarativeBinding *rv = cdata ? new QDeclarativeBinding(cdata->primitives.at(id), true, obj, ctxtdata, url, lineNumber, parent) : 0; + if (cdata) + cdata->release(); if (typeData) typeData->release(); return rv; diff --git a/src/declarative/qml/qdeclarativeexpression.cpp b/src/declarative/qml/qdeclarativeexpression.cpp index a24d46914c..4f6a71911f 100644 --- a/src/declarative/qml/qdeclarativeexpression.cpp +++ b/src/declarative/qml/qdeclarativeexpression.cpp @@ -256,6 +256,8 @@ QDeclarativeExpression::QDeclarativeExpression(const QDeclarativeScriptString &s else defaultConstruction = true; + if (cdata) + cdata->release(); if (typeData) typeData->release(); } diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index ba1aaca034..d04b38b67a 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -688,6 +688,8 @@ void tst_qdeclarativeecmascript::attachedProperties() QCOMPARE(object->property("b").toInt(), 26); QCOMPARE(object->property("c").toInt(), 26); QCOMPARE(object->property("d").toInt(), 26); + + delete object; } { From 76dd4f8af9c48a685cb50bfa02389b392bc12a5a Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Tue, 30 Aug 2011 16:18:20 +1000 Subject: [PATCH 32/68] Update extension tutorials and examples to QtQuick2 Also add missing licence header and update example tests Change-Id: Ic2dc8c893ddf22f646eaeba86b6f3b4a2772726c Reviewed-on: http://codereview.qt.nokia.com/3844 Reviewed-by: Qt Sanity Bot Reviewed-by: Glenn Watson --- .../imageprovider/imageprovider-example.qml | 6 +-- .../imageprovider/imageprovider.cpp | 3 -- .../imageprovider/imageprovider.pro | 2 +- .../networkaccessmanagerfactory/main.cpp | 4 +- .../networkaccessmanagerfactory.pro | 2 +- .../networkaccessmanagerfactory/view.qml | 2 +- .../declarative/cppextensions/plugins/README | 2 +- .../plugins/com/nokia/TimeExample/Clock.qml | 2 +- .../cppextensions/plugins/plugins.qml | 1 + .../referenceexamples/methods/example.qml | 2 +- .../declarative/dragtarget/text/dragtext.qml | 40 ++++++++++++++++ .../extending/chapter1-basics/app.qml | 2 +- .../chapter1-basics/chapter1-basics.pro | 2 +- .../extending/chapter1-basics/main.cpp | 6 +-- .../extending/chapter1-basics/piechart.cpp | 10 ++-- .../extending/chapter1-basics/piechart.h | 8 ++-- .../extending/chapter2-methods/app.qml | 2 +- .../chapter2-methods/chapter2-methods.pro | 2 +- .../extending/chapter2-methods/main.cpp | 6 +-- .../extending/chapter2-methods/piechart.cpp | 11 ++--- .../extending/chapter2-methods/piechart.h | 8 ++-- .../extending/chapter3-bindings/app.qml | 2 +- .../chapter3-bindings/chapter3-bindings.pro | 2 +- .../extending/chapter3-bindings/main.cpp | 6 +-- .../extending/chapter3-bindings/piechart.cpp | 11 ++--- .../extending/chapter3-bindings/piechart.h | 8 ++-- .../chapter4-customPropertyTypes/app.qml | 2 +- .../chapter4-customPropertyTypes.pro | 2 +- .../chapter4-customPropertyTypes/main.cpp | 6 +-- .../chapter4-customPropertyTypes/piechart.cpp | 6 +-- .../chapter4-customPropertyTypes/piechart.h | 6 +-- .../chapter4-customPropertyTypes/pieslice.cpp | 10 ++-- .../chapter4-customPropertyTypes/pieslice.h | 8 ++-- .../extending/chapter5-listproperties/app.qml | 2 +- .../chapter5-listproperties.pro | 2 +- .../chapter5-listproperties/main.cpp | 6 +-- .../chapter5-listproperties/piechart.cpp | 4 +- .../chapter5-listproperties/piechart.h | 6 +-- .../chapter5-listproperties/pieslice.cpp | 10 ++-- .../chapter5-listproperties/pieslice.h | 8 ++-- .../chapter6-plugins/ChartsPlugin/qmldir | 1 + .../extending/chapter6-plugins/app.qml | 3 +- .../chapter6-plugins/chapter6-plugins.pro | 11 ++--- .../extending/chapter6-plugins/piechart.cpp | 4 +- .../extending/chapter6-plugins/piechart.h | 6 +-- .../extending/chapter6-plugins/pieslice.cpp | 10 ++-- .../extending/chapter6-plugins/pieslice.h | 8 ++-- .../extending/chapter6-plugins/qmldir | 1 - tests/auto/declarative/examples/examples.pro | 19 ++------ .../declarative/examples/tst_examples.cpp | 46 +++---------------- 50 files changed, 158 insertions(+), 181 deletions(-) create mode 100644 examples/declarative/tutorials/extending/chapter6-plugins/ChartsPlugin/qmldir delete mode 100644 examples/declarative/tutorials/extending/chapter6-plugins/qmldir diff --git a/examples/declarative/cppextensions/imageprovider/imageprovider-example.qml b/examples/declarative/cppextensions/imageprovider/imageprovider-example.qml index f8f7b0ee55..f4e374191f 100644 --- a/examples/declarative/cppextensions/imageprovider/imageprovider-example.qml +++ b/examples/declarative/cppextensions/imageprovider/imageprovider-example.qml @@ -37,13 +37,13 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import "ImageProviderCore" // import the plugin that registers the color image provider //![0] Column { - Image { source: "source://colors/yellow" } - Image { source: "source://colors/red" } + Image { source: "image://colors/yellow" } + Image { source: "image://colors/red" } } //![0] diff --git a/examples/declarative/cppextensions/imageprovider/imageprovider.cpp b/examples/declarative/cppextensions/imageprovider/imageprovider.cpp index 730ce4b2b6..5078a97b44 100644 --- a/examples/declarative/cppextensions/imageprovider/imageprovider.cpp +++ b/examples/declarative/cppextensions/imageprovider/imageprovider.cpp @@ -42,10 +42,7 @@ #include #include -#include -#include #include -#include #include #include diff --git a/examples/declarative/cppextensions/imageprovider/imageprovider.pro b/examples/declarative/cppextensions/imageprovider/imageprovider.pro index 5a915034dc..eaa48cd901 100644 --- a/examples/declarative/cppextensions/imageprovider/imageprovider.pro +++ b/examples/declarative/cppextensions/imageprovider/imageprovider.pro @@ -1,6 +1,6 @@ TEMPLATE = lib CONFIG += qt plugin -QT += declarative qtquick1 +QT += declarative DESTDIR = ImageProviderCore TARGET = qmlimageproviderplugin diff --git a/examples/declarative/cppextensions/networkaccessmanagerfactory/main.cpp b/examples/declarative/cppextensions/networkaccessmanagerfactory/main.cpp index 665feac8e3..2da6e3c8fe 100644 --- a/examples/declarative/cppextensions/networkaccessmanagerfactory/main.cpp +++ b/examples/declarative/cppextensions/networkaccessmanagerfactory/main.cpp @@ -44,7 +44,7 @@ #include #include -#include +#include /* @@ -97,7 +97,7 @@ int main(int argc, char ** argv) } } - QDeclarativeView view; + QSGView view; view.engine()->setNetworkAccessManagerFactory(new MyNetworkAccessManagerFactory); view.setSource(source); diff --git a/examples/declarative/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro b/examples/declarative/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro index ba0498eaf8..74d8db321d 100644 --- a/examples/declarative/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro +++ b/examples/declarative/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro @@ -2,7 +2,7 @@ TEMPLATE = app TARGET = networkaccessmanagerfactory DEPENDPATH += . INCLUDEPATH += . -QT += declarative network qtquick1 +QT += declarative network # Input SOURCES += main.cpp diff --git a/examples/declarative/cppextensions/networkaccessmanagerfactory/view.qml b/examples/declarative/cppextensions/networkaccessmanagerfactory/view.qml index e002ef60e3..e335396f88 100644 --- a/examples/declarative/cppextensions/networkaccessmanagerfactory/view.qml +++ b/examples/declarative/cppextensions/networkaccessmanagerfactory/view.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Image { width: 100 diff --git a/examples/declarative/cppextensions/plugins/README b/examples/declarative/cppextensions/plugins/README index 95e0eea849..f4f9074059 100644 --- a/examples/declarative/cppextensions/plugins/README +++ b/examples/declarative/cppextensions/plugins/README @@ -5,5 +5,5 @@ by a C++ plugin (providing the "Time" type), and by QML files (providing the To run: make install - qmlviewer -I . plugins.qml + QML_IMPORT_PATH=$PWD qmlscene plugins.qml diff --git a/examples/declarative/cppextensions/plugins/com/nokia/TimeExample/Clock.qml b/examples/declarative/cppextensions/plugins/com/nokia/TimeExample/Clock.qml index 465f164dae..59a78946ca 100644 --- a/examples/declarative/cppextensions/plugins/com/nokia/TimeExample/Clock.qml +++ b/examples/declarative/cppextensions/plugins/com/nokia/TimeExample/Clock.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: clock diff --git a/examples/declarative/cppextensions/plugins/plugins.qml b/examples/declarative/cppextensions/plugins/plugins.qml index a61af15c9f..4a6f25fe7c 100644 --- a/examples/declarative/cppextensions/plugins/plugins.qml +++ b/examples/declarative/cppextensions/plugins/plugins.qml @@ -48,5 +48,6 @@ Clock { // this class is defined in QML (com/nokia/TimeExample/Clock.qml) hours: time.hour minutes: time.minute + } //![0] diff --git a/examples/declarative/cppextensions/referenceexamples/methods/example.qml b/examples/declarative/cppextensions/referenceexamples/methods/example.qml index 868473a7c4..c32ce4a786 100644 --- a/examples/declarative/cppextensions/referenceexamples/methods/example.qml +++ b/examples/declarative/cppextensions/referenceexamples/methods/example.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 import People 1.0 // ![0] diff --git a/examples/declarative/dragtarget/text/dragtext.qml b/examples/declarative/dragtarget/text/dragtext.qml index c4a4f24f74..49858d1fc4 100644 --- a/examples/declarative/dragtarget/text/dragtext.qml +++ b/examples/declarative/dragtarget/text/dragtext.qml @@ -1,3 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + import QtQuick 2.0 Item { diff --git a/examples/declarative/tutorials/extending/chapter1-basics/app.qml b/examples/declarative/tutorials/extending/chapter1-basics/app.qml index f42ec1e8fc..92dd147bab 100644 --- a/examples/declarative/tutorials/extending/chapter1-basics/app.qml +++ b/examples/declarative/tutorials/extending/chapter1-basics/app.qml @@ -39,7 +39,7 @@ ****************************************************************************/ //![0] import Charts 1.0 -import QtQuick 1.0 +import QtQuick 2.0 Item { width: 300; height: 200 diff --git a/examples/declarative/tutorials/extending/chapter1-basics/chapter1-basics.pro b/examples/declarative/tutorials/extending/chapter1-basics/chapter1-basics.pro index 77cc4cdfca..0f0416718c 100644 --- a/examples/declarative/tutorials/extending/chapter1-basics/chapter1-basics.pro +++ b/examples/declarative/tutorials/extending/chapter1-basics/chapter1-basics.pro @@ -1,4 +1,4 @@ -QT += declarative qtquick1 +QT += declarative HEADERS += piechart.h SOURCES += piechart.cpp \ diff --git a/examples/declarative/tutorials/extending/chapter1-basics/main.cpp b/examples/declarative/tutorials/extending/chapter1-basics/main.cpp index 2ab2e2b8b9..4c11768e18 100644 --- a/examples/declarative/tutorials/extending/chapter1-basics/main.cpp +++ b/examples/declarative/tutorials/extending/chapter1-basics/main.cpp @@ -39,8 +39,7 @@ ****************************************************************************/ //![0] #include "piechart.h" -#include -#include +#include #include int main(int argc, char *argv[]) @@ -49,7 +48,8 @@ int main(int argc, char *argv[]) qmlRegisterType("Charts", 1, 0, "PieChart"); - QDeclarativeView view; + QSGView view; + view.setResizeMode(QSGView::SizeRootObjectToView); view.setSource(QUrl::fromLocalFile("app.qml")); view.show(); return app.exec(); diff --git a/examples/declarative/tutorials/extending/chapter1-basics/piechart.cpp b/examples/declarative/tutorials/extending/chapter1-basics/piechart.cpp index bfc1645f57..5820c5626c 100644 --- a/examples/declarative/tutorials/extending/chapter1-basics/piechart.cpp +++ b/examples/declarative/tutorials/extending/chapter1-basics/piechart.cpp @@ -41,11 +41,9 @@ #include //![0] -PieChart::PieChart(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieChart::PieChart(QSGItem *parent) + : QSGPaintedItem(parent) { - // need to disable this flag to draw inside a QDeclarativeItem - setFlag(QGraphicsItem::ItemHasNoContents, false); } //![0] @@ -70,11 +68,11 @@ void PieChart::setColor(const QColor &color) } //![1] -void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +void PieChart::paint(QPainter *painter) { QPen pen(m_color, 2); painter->setPen(pen); - painter->setRenderHints(QPainter::Antialiasing, true); + painter->setRenderHints(QPainter::HighQualityAntialiasing, true); painter->drawPie(boundingRect(), 90 * 16, 290 * 16); } //![1] diff --git a/examples/declarative/tutorials/extending/chapter1-basics/piechart.h b/examples/declarative/tutorials/extending/chapter1-basics/piechart.h index c873f6a780..a5afec5252 100644 --- a/examples/declarative/tutorials/extending/chapter1-basics/piechart.h +++ b/examples/declarative/tutorials/extending/chapter1-basics/piechart.h @@ -41,17 +41,17 @@ #define PIECHART_H //![0] -#include +#include #include -class PieChart : public QDeclarativeItem +class PieChart : public QSGPaintedItem { Q_OBJECT Q_PROPERTY(QString name READ name WRITE setName) Q_PROPERTY(QColor color READ color WRITE setColor) public: - PieChart(QDeclarativeItem *parent = 0); + PieChart(QSGItem *parent = 0); QString name() const; void setName(const QString &name); @@ -59,7 +59,7 @@ public: QColor color() const; void setColor(const QColor &color); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + void paint(QPainter *painter); private: QString m_name; diff --git a/examples/declarative/tutorials/extending/chapter2-methods/app.qml b/examples/declarative/tutorials/extending/chapter2-methods/app.qml index e2f34c7f7b..05f5952fd6 100644 --- a/examples/declarative/tutorials/extending/chapter2-methods/app.qml +++ b/examples/declarative/tutorials/extending/chapter2-methods/app.qml @@ -39,7 +39,7 @@ ****************************************************************************/ //![0] import Charts 1.0 -import QtQuick 1.0 +import QtQuick 2.0 Item { width: 300; height: 200 diff --git a/examples/declarative/tutorials/extending/chapter2-methods/chapter2-methods.pro b/examples/declarative/tutorials/extending/chapter2-methods/chapter2-methods.pro index 77cc4cdfca..0f0416718c 100644 --- a/examples/declarative/tutorials/extending/chapter2-methods/chapter2-methods.pro +++ b/examples/declarative/tutorials/extending/chapter2-methods/chapter2-methods.pro @@ -1,4 +1,4 @@ -QT += declarative qtquick1 +QT += declarative HEADERS += piechart.h SOURCES += piechart.cpp \ diff --git a/examples/declarative/tutorials/extending/chapter2-methods/main.cpp b/examples/declarative/tutorials/extending/chapter2-methods/main.cpp index 2ab2e2b8b9..4c11768e18 100644 --- a/examples/declarative/tutorials/extending/chapter2-methods/main.cpp +++ b/examples/declarative/tutorials/extending/chapter2-methods/main.cpp @@ -39,8 +39,7 @@ ****************************************************************************/ //![0] #include "piechart.h" -#include -#include +#include #include int main(int argc, char *argv[]) @@ -49,7 +48,8 @@ int main(int argc, char *argv[]) qmlRegisterType("Charts", 1, 0, "PieChart"); - QDeclarativeView view; + QSGView view; + view.setResizeMode(QSGView::SizeRootObjectToView); view.setSource(QUrl::fromLocalFile("app.qml")); view.show(); return app.exec(); diff --git a/examples/declarative/tutorials/extending/chapter2-methods/piechart.cpp b/examples/declarative/tutorials/extending/chapter2-methods/piechart.cpp index 78970e536f..86407f1f17 100644 --- a/examples/declarative/tutorials/extending/chapter2-methods/piechart.cpp +++ b/examples/declarative/tutorials/extending/chapter2-methods/piechart.cpp @@ -39,13 +39,10 @@ ****************************************************************************/ #include "piechart.h" #include -#include -PieChart::PieChart(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieChart::PieChart(QSGItem *parent) + : QSGPaintedItem(parent) { - // need to disable this flag to draw inside a QDeclarativeItem - setFlag(QGraphicsItem::ItemHasNoContents, false); } QString PieChart::name() const @@ -68,11 +65,11 @@ void PieChart::setColor(const QColor &color) m_color = color; } -void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +void PieChart::paint(QPainter *painter) { QPen pen(m_color, 2); painter->setPen(pen); - painter->setRenderHints(QPainter::Antialiasing, true); + painter->setRenderHints(QPainter::HighQualityAntialiasing, true); painter->drawPie(boundingRect(), 90 * 16, 290 * 16); } diff --git a/examples/declarative/tutorials/extending/chapter2-methods/piechart.h b/examples/declarative/tutorials/extending/chapter2-methods/piechart.h index bfcbd80ab1..38f5c0553f 100644 --- a/examples/declarative/tutorials/extending/chapter2-methods/piechart.h +++ b/examples/declarative/tutorials/extending/chapter2-methods/piechart.h @@ -40,11 +40,11 @@ #ifndef PIECHART_H #define PIECHART_H -#include +#include #include //![0] -class PieChart : public QDeclarativeItem +class PieChart : public QSGPaintedItem { //![0] Q_OBJECT @@ -55,7 +55,7 @@ class PieChart : public QDeclarativeItem public: //![1] - PieChart(QDeclarativeItem *parent = 0); + PieChart(QSGItem *parent = 0); QString name() const; void setName(const QString &name); @@ -63,7 +63,7 @@ public: QColor color() const; void setColor(const QColor &color); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + void paint(QPainter *painter); //![2] Q_INVOKABLE void clearChart(); diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/app.qml b/examples/declarative/tutorials/extending/chapter3-bindings/app.qml index b4ad5efb56..996a828c34 100644 --- a/examples/declarative/tutorials/extending/chapter3-bindings/app.qml +++ b/examples/declarative/tutorials/extending/chapter3-bindings/app.qml @@ -39,7 +39,7 @@ ****************************************************************************/ //![0] import Charts 1.0 -import QtQuick 1.0 +import QtQuick 2.0 Item { width: 300; height: 200 diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/chapter3-bindings.pro b/examples/declarative/tutorials/extending/chapter3-bindings/chapter3-bindings.pro index 77cc4cdfca..0f0416718c 100644 --- a/examples/declarative/tutorials/extending/chapter3-bindings/chapter3-bindings.pro +++ b/examples/declarative/tutorials/extending/chapter3-bindings/chapter3-bindings.pro @@ -1,4 +1,4 @@ -QT += declarative qtquick1 +QT += declarative HEADERS += piechart.h SOURCES += piechart.cpp \ diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/main.cpp b/examples/declarative/tutorials/extending/chapter3-bindings/main.cpp index 2ab2e2b8b9..4c11768e18 100644 --- a/examples/declarative/tutorials/extending/chapter3-bindings/main.cpp +++ b/examples/declarative/tutorials/extending/chapter3-bindings/main.cpp @@ -39,8 +39,7 @@ ****************************************************************************/ //![0] #include "piechart.h" -#include -#include +#include #include int main(int argc, char *argv[]) @@ -49,7 +48,8 @@ int main(int argc, char *argv[]) qmlRegisterType("Charts", 1, 0, "PieChart"); - QDeclarativeView view; + QSGView view; + view.setResizeMode(QSGView::SizeRootObjectToView); view.setSource(QUrl::fromLocalFile("app.qml")); view.show(); return app.exec(); diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/piechart.cpp b/examples/declarative/tutorials/extending/chapter3-bindings/piechart.cpp index 375025e694..86ad6a7fe0 100644 --- a/examples/declarative/tutorials/extending/chapter3-bindings/piechart.cpp +++ b/examples/declarative/tutorials/extending/chapter3-bindings/piechart.cpp @@ -39,13 +39,10 @@ ****************************************************************************/ #include "piechart.h" #include -#include -PieChart::PieChart(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieChart::PieChart(QSGItem *parent) + : QSGPaintedItem(parent) { - // need to disable this flag to draw inside a QDeclarativeItem - setFlag(QGraphicsItem::ItemHasNoContents, false); } QString PieChart::name() const @@ -74,11 +71,11 @@ void PieChart::setColor(const QColor &color) } //![0] -void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +void PieChart::paint(QPainter *painter) { QPen pen(m_color, 2); painter->setPen(pen); - painter->setRenderHints(QPainter::Antialiasing, true); + painter->setRenderHints(QPainter::HighQualityAntialiasing, true); painter->drawPie(boundingRect(), 90 * 16, 290 * 16); } diff --git a/examples/declarative/tutorials/extending/chapter3-bindings/piechart.h b/examples/declarative/tutorials/extending/chapter3-bindings/piechart.h index feff9c42fb..5208f81d27 100644 --- a/examples/declarative/tutorials/extending/chapter3-bindings/piechart.h +++ b/examples/declarative/tutorials/extending/chapter3-bindings/piechart.h @@ -40,11 +40,11 @@ #ifndef PIECHART_H #define PIECHART_H -#include #include +#include //![0] -class PieChart : public QDeclarativeItem +class PieChart : public QSGPaintedItem { //![0] Q_OBJECT @@ -55,7 +55,7 @@ class PieChart : public QDeclarativeItem public: //![1] - PieChart(QDeclarativeItem *parent = 0); + PieChart(QSGItem *parent = 0); QString name() const; void setName(const QString &name); @@ -63,7 +63,7 @@ public: QColor color() const; void setColor(const QColor &color); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + void paint(QPainter *painter); Q_INVOKABLE void clearChart(); diff --git a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/app.qml b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/app.qml index 187095a769..68f667a812 100644 --- a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/app.qml +++ b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/app.qml @@ -39,7 +39,7 @@ ****************************************************************************/ //![0] import Charts 1.0 -import QtQuick 1.0 +import QtQuick 2.0 Item { width: 300; height: 200 diff --git a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro index 9942ccd0a9..c3f5402aea 100644 --- a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro +++ b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro @@ -1,4 +1,4 @@ -QT += declarative qtquick1 +QT += declarative HEADERS += piechart.h \ pieslice.h diff --git a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/main.cpp b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/main.cpp index dcb3481ac1..1113cc55cb 100644 --- a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/main.cpp +++ b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/main.cpp @@ -40,8 +40,7 @@ #include "piechart.h" #include "pieslice.h" -#include -#include +#include #include //![0] @@ -56,7 +55,8 @@ int main(int argc, char *argv[]) qmlRegisterType("Charts", 1, 0, "PieSlice"); //![1] - QDeclarativeView view; + QSGView view; + view.setResizeMode(QSGView::SizeRootObjectToView); view.setSource(QUrl::fromLocalFile("app.qml")); view.show(); return app.exec(); diff --git a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp index b1f4278a95..5911f4dd49 100644 --- a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp +++ b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp @@ -40,11 +40,9 @@ #include "piechart.h" #include "pieslice.h" -PieChart::PieChart(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieChart::PieChart(QSGItem *parent) + : QSGItem(parent) { - // this doesn't need to disable QGraphicsItem::ItemHasNoContents - // anymore since the drawing is now done in PieSlice } QString PieChart::name() const diff --git a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/piechart.h b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/piechart.h index d7f4473ef0..9e8139846b 100644 --- a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/piechart.h +++ b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/piechart.h @@ -40,12 +40,12 @@ #ifndef PIECHART_H #define PIECHART_H -#include +#include class PieSlice; //![0] -class PieChart : public QDeclarativeItem +class PieChart : public QSGItem { Q_OBJECT Q_PROPERTY(PieSlice* pieSlice READ pieSlice WRITE setPieSlice) @@ -56,7 +56,7 @@ class PieChart : public QDeclarativeItem public: //![1] - PieChart(QDeclarativeItem *parent = 0); + PieChart(QSGItem *parent = 0); QString name() const; void setName(const QString &name); diff --git a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp index f36c8ce3f4..764ef23944 100644 --- a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp +++ b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp @@ -41,11 +41,9 @@ #include -PieSlice::PieSlice(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieSlice::PieSlice(QSGItem *parent) + : QSGPaintedItem(parent) { - // need to disable this flag to draw inside a QDeclarativeItem - setFlag(QGraphicsItem::ItemHasNoContents, false); } QColor PieSlice::color() const @@ -58,11 +56,11 @@ void PieSlice::setColor(const QColor &color) m_color = color; } -void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +void PieSlice::paint(QPainter *painter) { QPen pen(m_color, 2); painter->setPen(pen); - painter->setRenderHints(QPainter::Antialiasing, true); + painter->setRenderHints(QPainter::HighQualityAntialiasing, true); painter->drawPie(boundingRect(), 90 * 16, 290 * 16); } diff --git a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/pieslice.h b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/pieslice.h index 6e5707f3e3..7163864fac 100644 --- a/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/pieslice.h +++ b/examples/declarative/tutorials/extending/chapter4-customPropertyTypes/pieslice.h @@ -40,22 +40,22 @@ #ifndef PIESLICE_H #define PIESLICE_H -#include +#include #include //![0] -class PieSlice : public QDeclarativeItem +class PieSlice : public QSGPaintedItem { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor) public: - PieSlice(QDeclarativeItem *parent = 0); + PieSlice(QSGItem *parent = 0); QColor color() const; void setColor(const QColor &color); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + void paint(QPainter *painter); private: QColor m_color; diff --git a/examples/declarative/tutorials/extending/chapter5-listproperties/app.qml b/examples/declarative/tutorials/extending/chapter5-listproperties/app.qml index 0fc8558187..99bc1c5d2d 100644 --- a/examples/declarative/tutorials/extending/chapter5-listproperties/app.qml +++ b/examples/declarative/tutorials/extending/chapter5-listproperties/app.qml @@ -39,7 +39,7 @@ ****************************************************************************/ //![0] import Charts 1.0 -import QtQuick 1.0 +import QtQuick 2.0 Item { width: 300; height: 200 diff --git a/examples/declarative/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro b/examples/declarative/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro index 9942ccd0a9..c3f5402aea 100644 --- a/examples/declarative/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro +++ b/examples/declarative/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro @@ -1,4 +1,4 @@ -QT += declarative qtquick1 +QT += declarative HEADERS += piechart.h \ pieslice.h diff --git a/examples/declarative/tutorials/extending/chapter5-listproperties/main.cpp b/examples/declarative/tutorials/extending/chapter5-listproperties/main.cpp index 5a50567e35..1c43a090ca 100644 --- a/examples/declarative/tutorials/extending/chapter5-listproperties/main.cpp +++ b/examples/declarative/tutorials/extending/chapter5-listproperties/main.cpp @@ -40,8 +40,7 @@ #include "piechart.h" #include "pieslice.h" -#include -#include +#include #include int main(int argc, char *argv[]) @@ -51,7 +50,8 @@ int main(int argc, char *argv[]) qmlRegisterType("Charts", 1, 0, "PieChart"); qmlRegisterType("Charts", 1, 0, "PieSlice"); - QDeclarativeView view; + QSGView view; + view.setResizeMode(QSGView::SizeRootObjectToView); view.setSource(QUrl::fromLocalFile("app.qml")); view.show(); return app.exec(); diff --git a/examples/declarative/tutorials/extending/chapter5-listproperties/piechart.cpp b/examples/declarative/tutorials/extending/chapter5-listproperties/piechart.cpp index ea70ff2f76..248f4a2096 100644 --- a/examples/declarative/tutorials/extending/chapter5-listproperties/piechart.cpp +++ b/examples/declarative/tutorials/extending/chapter5-listproperties/piechart.cpp @@ -40,8 +40,8 @@ #include "piechart.h" #include "pieslice.h" -PieChart::PieChart(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieChart::PieChart(QSGItem *parent) + : QSGItem(parent) { } diff --git a/examples/declarative/tutorials/extending/chapter5-listproperties/piechart.h b/examples/declarative/tutorials/extending/chapter5-listproperties/piechart.h index ad15a24161..e95b02f38c 100644 --- a/examples/declarative/tutorials/extending/chapter5-listproperties/piechart.h +++ b/examples/declarative/tutorials/extending/chapter5-listproperties/piechart.h @@ -40,12 +40,12 @@ #ifndef PIECHART_H #define PIECHART_H -#include +#include class PieSlice; //![0] -class PieChart : public QDeclarativeItem +class PieChart : public QSGItem { Q_OBJECT Q_PROPERTY(QDeclarativeListProperty slices READ slices) @@ -55,7 +55,7 @@ class PieChart : public QDeclarativeItem //![1] public: //![1] - PieChart(QDeclarativeItem *parent = 0); + PieChart(QSGItem *parent = 0); QString name() const; void setName(const QString &name); diff --git a/examples/declarative/tutorials/extending/chapter5-listproperties/pieslice.cpp b/examples/declarative/tutorials/extending/chapter5-listproperties/pieslice.cpp index 16f4bae11b..70338f08a0 100644 --- a/examples/declarative/tutorials/extending/chapter5-listproperties/pieslice.cpp +++ b/examples/declarative/tutorials/extending/chapter5-listproperties/pieslice.cpp @@ -41,11 +41,9 @@ #include -PieSlice::PieSlice(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieSlice::PieSlice(QSGItem *parent) + : QSGPaintedItem(parent) { - // need to disable this flag to draw inside a QDeclarativeItem - setFlag(QGraphicsItem::ItemHasNoContents, false); } QColor PieSlice::color() const @@ -78,11 +76,11 @@ void PieSlice::setAngleSpan(int angle) m_angleSpan = angle; } -void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +void PieSlice::paint(QPainter *painter) { QPen pen(m_color, 2); painter->setPen(pen); - painter->setRenderHints(QPainter::Antialiasing, true); + painter->setRenderHints(QPainter::HighQualityAntialiasing, true); painter->drawPie(boundingRect(), m_fromAngle * 16, m_angleSpan * 16); } diff --git a/examples/declarative/tutorials/extending/chapter5-listproperties/pieslice.h b/examples/declarative/tutorials/extending/chapter5-listproperties/pieslice.h index 877f54b10f..1204f9adf2 100644 --- a/examples/declarative/tutorials/extending/chapter5-listproperties/pieslice.h +++ b/examples/declarative/tutorials/extending/chapter5-listproperties/pieslice.h @@ -40,11 +40,11 @@ #ifndef PIESLICE_H #define PIESLICE_H -#include +#include #include //![0] -class PieSlice : public QDeclarativeItem +class PieSlice : public QSGPaintedItem { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor) @@ -53,7 +53,7 @@ class PieSlice : public QDeclarativeItem //![0] public: - PieSlice(QDeclarativeItem *parent = 0); + PieSlice(QSGItem *parent = 0); QColor color() const; void setColor(const QColor &color); @@ -64,7 +64,7 @@ public: int angleSpan() const; void setAngleSpan(int span); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + void paint(QPainter *painter); private: QColor m_color; diff --git a/examples/declarative/tutorials/extending/chapter6-plugins/ChartsPlugin/qmldir b/examples/declarative/tutorials/extending/chapter6-plugins/ChartsPlugin/qmldir new file mode 100644 index 0000000000..72650d8243 --- /dev/null +++ b/examples/declarative/tutorials/extending/chapter6-plugins/ChartsPlugin/qmldir @@ -0,0 +1 @@ +plugin chartsplugin \ No newline at end of file diff --git a/examples/declarative/tutorials/extending/chapter6-plugins/app.qml b/examples/declarative/tutorials/extending/chapter6-plugins/app.qml index a8e13b2c4a..67df25a1e1 100644 --- a/examples/declarative/tutorials/extending/chapter6-plugins/app.qml +++ b/examples/declarative/tutorials/extending/chapter6-plugins/app.qml @@ -37,7 +37,8 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 +import "ChartsPlugin" 1.0 Item { width: 300; height: 200 diff --git a/examples/declarative/tutorials/extending/chapter6-plugins/chapter6-plugins.pro b/examples/declarative/tutorials/extending/chapter6-plugins/chapter6-plugins.pro index e5963ee3e5..47fe0a2fde 100644 --- a/examples/declarative/tutorials/extending/chapter6-plugins/chapter6-plugins.pro +++ b/examples/declarative/tutorials/extending/chapter6-plugins/chapter6-plugins.pro @@ -1,8 +1,10 @@ TEMPLATE = lib CONFIG += qt plugin -QT += declarative qtquick1 +QT += declarative + +DESTDIR = ChartsPlugin +TARGET = chartsplugin -DESTDIR = lib OBJECTS_DIR = tmp MOC_DIR = tmp @@ -14,8 +16,3 @@ SOURCES += piechart.cpp \ pieslice.cpp \ chartsplugin.cpp -symbian { - CONFIG += qt_example - TARGET.EPOCALLOWDLLDATA = 1 -} -maemo5: CONFIG += qt_example diff --git a/examples/declarative/tutorials/extending/chapter6-plugins/piechart.cpp b/examples/declarative/tutorials/extending/chapter6-plugins/piechart.cpp index 27086f1d73..5aa4a78035 100644 --- a/examples/declarative/tutorials/extending/chapter6-plugins/piechart.cpp +++ b/examples/declarative/tutorials/extending/chapter6-plugins/piechart.cpp @@ -40,8 +40,8 @@ #include "piechart.h" #include "pieslice.h" -PieChart::PieChart(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieChart::PieChart(QSGItem *parent) + : QSGItem(parent) { } diff --git a/examples/declarative/tutorials/extending/chapter6-plugins/piechart.h b/examples/declarative/tutorials/extending/chapter6-plugins/piechart.h index 1338cad67b..1e4f1226dc 100644 --- a/examples/declarative/tutorials/extending/chapter6-plugins/piechart.h +++ b/examples/declarative/tutorials/extending/chapter6-plugins/piechart.h @@ -40,18 +40,18 @@ #ifndef PIECHART_H #define PIECHART_H -#include +#include class PieSlice; -class PieChart : public QDeclarativeItem +class PieChart : public QSGItem { Q_OBJECT Q_PROPERTY(QDeclarativeListProperty slices READ slices) Q_PROPERTY(QString name READ name WRITE setName) public: - PieChart(QDeclarativeItem *parent = 0); + PieChart(QSGItem *parent = 0); QString name() const; void setName(const QString &name); diff --git a/examples/declarative/tutorials/extending/chapter6-plugins/pieslice.cpp b/examples/declarative/tutorials/extending/chapter6-plugins/pieslice.cpp index 16f4bae11b..70338f08a0 100644 --- a/examples/declarative/tutorials/extending/chapter6-plugins/pieslice.cpp +++ b/examples/declarative/tutorials/extending/chapter6-plugins/pieslice.cpp @@ -41,11 +41,9 @@ #include -PieSlice::PieSlice(QDeclarativeItem *parent) - : QDeclarativeItem(parent) +PieSlice::PieSlice(QSGItem *parent) + : QSGPaintedItem(parent) { - // need to disable this flag to draw inside a QDeclarativeItem - setFlag(QGraphicsItem::ItemHasNoContents, false); } QColor PieSlice::color() const @@ -78,11 +76,11 @@ void PieSlice::setAngleSpan(int angle) m_angleSpan = angle; } -void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +void PieSlice::paint(QPainter *painter) { QPen pen(m_color, 2); painter->setPen(pen); - painter->setRenderHints(QPainter::Antialiasing, true); + painter->setRenderHints(QPainter::HighQualityAntialiasing, true); painter->drawPie(boundingRect(), m_fromAngle * 16, m_angleSpan * 16); } diff --git a/examples/declarative/tutorials/extending/chapter6-plugins/pieslice.h b/examples/declarative/tutorials/extending/chapter6-plugins/pieslice.h index 83b728aaa1..3096ee6570 100644 --- a/examples/declarative/tutorials/extending/chapter6-plugins/pieslice.h +++ b/examples/declarative/tutorials/extending/chapter6-plugins/pieslice.h @@ -40,10 +40,10 @@ #ifndef PIESLICE_H #define PIESLICE_H -#include +#include #include -class PieSlice : public QDeclarativeItem +class PieSlice : public QSGPaintedItem { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor) @@ -51,7 +51,7 @@ class PieSlice : public QDeclarativeItem Q_PROPERTY(int angleSpan READ angleSpan WRITE setAngleSpan) public: - PieSlice(QDeclarativeItem *parent = 0); + PieSlice(QSGItem *parent = 0); QColor color() const; void setColor(const QColor &color); @@ -62,7 +62,7 @@ public: int angleSpan() const; void setAngleSpan(int span); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + void paint(QPainter *painter); private: QColor m_color; diff --git a/examples/declarative/tutorials/extending/chapter6-plugins/qmldir b/examples/declarative/tutorials/extending/chapter6-plugins/qmldir deleted file mode 100644 index a83bf85ddb..0000000000 --- a/examples/declarative/tutorials/extending/chapter6-plugins/qmldir +++ /dev/null @@ -1 +0,0 @@ -plugin chapter6-plugins lib diff --git a/tests/auto/declarative/examples/examples.pro b/tests/auto/declarative/examples/examples.pro index a19700cb8e..0875e1fc54 100644 --- a/tests/auto/declarative/examples/examples.pro +++ b/tests/auto/declarative/examples/examples.pro @@ -1,23 +1,12 @@ load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative qtquick1 +contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle -SOURCES += tst_examples.cpp - -include(../../../../tools/qmlviewer/qml.pri) - -include(../symbianlibs.pri) - -symbian: { - importFiles.files = data - importFiles.path = . - DEPLOYMENT += importFiles -} else { - DEFINES += SRCDIR=\\\"$$PWD\\\" -} +SOURCES += tst_examples.cpp +DEFINES += SRCDIR=\\\"$$PWD\\\" CONFIG += parallel_test -QT += core-private gui-private v8-private declarative-private qtquick1-private +QT += core-private gui-private v8-private declarative-private qpa:CONFIG+=insignificant_test # QTBUG-20990, aborts diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp index 072ab7524e..4a3a0857c2 100644 --- a/tests/auto/declarative/examples/tst_examples.cpp +++ b/tests/auto/declarative/examples/tst_examples.cpp @@ -38,21 +38,15 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ + #include #include #include #include #include -#include "qmlruntime.h" -#include #include #include -#ifdef Q_OS_SYMBIAN -// In Symbian OS test data is located in applications private dir -#define SRCDIR "." -#endif - class tst_examples : public QObject { Q_OBJECT @@ -60,8 +54,6 @@ public: tst_examples(); private slots: - void examples_data(); - void examples(); void sgexamples_data(); void sgexamples(); @@ -185,7 +177,12 @@ that they start and exit cleanly. Examples are any .qml files under the examples/ directory that start with a lower case letter. */ -void tst_examples::examples_data() +static void silentErrorsMsgHandler(QtMsgType, const char *) +{ +} + + +void tst_examples::sgexamples_data() { QTest::addColumn("file"); @@ -200,37 +197,8 @@ void tst_examples::examples_data() QTest::newRow(qPrintable(file)) << file; } -static void silentErrorsMsgHandler(QtMsgType, const char *) -{ -} - -void tst_examples::examples() -{ - QFETCH(QString, file); - - QDeclarativeViewer viewer; - - QtMsgHandler old = qInstallMsgHandler(silentErrorsMsgHandler); - QVERIFY(viewer.open(file)); - qInstallMsgHandler(old); - - if (viewer.view()->status() == QDeclarativeView::Error) - qWarning() << viewer.view()->errors(); - - QCOMPARE(viewer.view()->status(), QDeclarativeView::Ready); - viewer.show(); - - QTest::qWaitForWindowShown(&viewer); -} - -void tst_examples::sgexamples_data() -{ - examples_data(); -} - void tst_examples::sgexamples() { - qputenv("QMLSCENE_IMPORT_NAME", "quick1"); QFETCH(QString, file); QSGView view; From 0e43b5951f6366f65b4229e11d036d4077c101e4 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Thu, 1 Sep 2011 10:46:27 +1000 Subject: [PATCH 33/68] Add examples and tests for QtQuick1 A straight copy of what was available in Qt 4.7, modified where necessary to use the QtQuick1 module, so as to still compile and run in Qt5. Change-Id: I9a95afb96e3f522fbd600eb6dbd3fdac9558b059 Reviewed-on: http://codereview.qt.nokia.com/4019 Reviewed-by: Bea Lam --- .../cppextensions/cppextensions.pro | 2 - .../cppextensions/qwidgets/qwidgets.pro | 25 - examples/declarative/qtquick1.pro | 32 + examples/declarative/qtquick1/README | 41 + .../animation/animation.qmlproject} | 0 .../animation/basics/basics.qmlproject} | 0 .../animation/basics/color-animation.qml | 110 +++ .../animation/basics/images/face-smile.png | Bin 0 -> 15408 bytes .../qtquick1/animation/basics/images/moon.png | Bin 0 -> 2433 bytes .../animation/basics/images/shadow.png | Bin 0 -> 425 bytes .../qtquick1/animation/basics/images/star.png | Bin 0 -> 349 bytes .../qtquick1/animation/basics/images/sun.png | Bin 0 -> 8153 bytes .../animation/basics/property-animation.qml | 105 +++ .../qtquick1/animation/behaviors/SideRect.qml | 62 ++ .../animation/behaviors/behavior-example.qml | 118 +++ .../animation/behaviors/behaviors.qmlproject} | 0 .../animation/behaviors/wigglytext.qml | 108 +++ .../animation/easing/content/QuitButton.qml | 52 ++ .../animation/easing/content/quit.png | Bin 0 -> 583 bytes .../qtquick1/animation/easing/easing.qml | 159 ++++ .../animation/easing/easing.qmlproject | 16 + .../qtquick1/animation/states/qt-logo.png | Bin 0 -> 5149 bytes .../qtquick1/animation/states/states.qml | 101 ++ .../animation/states/states.qmlproject | 16 + .../qtquick1/animation/states/transitions.qml | 130 +++ .../qtquick1/cppextensions/cppextensions.pro | 10 + .../cppextensions/cppextensions.qmlproject | 16 + .../imageprovider/ImageProviderCore/qmldir | 2 + .../imageprovider/imageprovider-example.qml | 49 + .../imageprovider/imageprovider.cpp | 110 +++ .../imageprovider/imageprovider.pro | 28 + .../imageprovider/imageprovider.qmlproject | 16 + .../networkaccessmanagerfactory/main.cpp | 108 +++ .../networkaccessmanagerfactory.pro | 9 + .../networkaccessmanagerfactory.qmlproject | 16 + .../networkaccessmanagerfactory.qrc | 5 + .../networkaccessmanagerfactory/view.qml | 47 + .../qtquick1/cppextensions/plugins/README | 9 + .../plugins/com/nokia/TimeExample/Clock.qml | 90 ++ .../plugins/com/nokia/TimeExample/center.png | Bin 0 -> 765 bytes .../plugins/com/nokia/TimeExample/clock.png | Bin 0 -> 20653 bytes .../plugins/com/nokia/TimeExample/hour.png | Bin 0 -> 625 bytes .../plugins/com/nokia/TimeExample/minute.png | Bin 0 -> 625 bytes .../plugins/com/nokia/TimeExample/qmldir | 2 + .../qtquick1/cppextensions/plugins/plugin.cpp | 157 ++++ .../cppextensions/plugins/plugins.pro | 29 + .../cppextensions/plugins/plugins.qml | 52 ++ .../cppextensions/plugins/plugins.qmlproject | 16 + .../layoutitem/layoutitem.pro | 2 +- .../layoutitem/layoutitem.qml | 0 .../layoutitem/layoutitem.qmlproject | 16 + .../layoutitem/layoutitem.qrc | 0 .../qgraphicslayouts/layoutitem/main.cpp | 0 .../qgraphicsgridlayout/gridlayout.cpp | 0 .../qgraphicsgridlayout/gridlayout.h | 0 .../qgraphicsgridlayout/gridlayout.qrc | 0 .../qgraphicsgridlayout/main.cpp | 2 +- .../qgraphicsgridlayout.pro | 0 .../qgraphicsgridlayout.qml | 0 .../qgraphicslayouts/qgraphicslayouts.pro | 0 .../qgraphicslayouts.qmlproject | 16 + .../qgraphicslinearlayout/linearlayout.cpp | 0 .../qgraphicslinearlayout/linearlayout.h | 0 .../qgraphicslinearlayout/linearlayout.qrc | 0 .../qgraphicslinearlayout/main.cpp | 2 +- .../qgraphicslinearlayout.pro | 0 .../qgraphicslinearlayout.qml | 0 .../cppextensions/qwidgets/QWidgets/qmldir | 0 .../cppextensions/qwidgets/README | 0 .../cppextensions/qwidgets/qwidgets.cpp | 0 .../cppextensions/qwidgets/qwidgets.pro | 24 + .../cppextensions/qwidgets/qwidgets.qml | 0 .../qwidgets/qwidgets.qmlproject | 16 + .../referenceexamples/adding/adding.pro | 15 + .../referenceexamples/adding/adding.qrc | 5 + .../referenceexamples/adding/example.qml | 48 + .../referenceexamples/adding/main.cpp | 64 ++ .../referenceexamples/adding/person.cpp | 68 ++ .../referenceexamples/adding/person.h | 65 ++ .../referenceexamples/attached/attached.pro | 17 + .../referenceexamples/attached/attached.qrc | 5 + .../attached/birthdayparty.cpp | 91 ++ .../attached/birthdayparty.h | 86 ++ .../referenceexamples/attached/example.qml | 71 ++ .../referenceexamples/attached/main.cpp | 90 ++ .../referenceexamples/attached/person.cpp | 118 +++ .../referenceexamples/attached/person.h | 105 +++ .../referenceexamples/binding/binding.pro | 19 + .../referenceexamples/binding/binding.qrc | 5 + .../binding/birthdayparty.cpp | 113 +++ .../referenceexamples/binding/birthdayparty.h | 102 +++ .../referenceexamples/binding/example.qml | 77 ++ .../binding/happybirthdaysong.cpp | 85 ++ .../binding/happybirthdaysong.h | 74 ++ .../referenceexamples/binding/main.cpp | 92 ++ .../referenceexamples/binding/person.cpp | 138 +++ .../referenceexamples/binding/person.h | 113 +++ .../coercion/birthdayparty.cpp | 71 ++ .../coercion/birthdayparty.h | 69 ++ .../referenceexamples/coercion/coercion.pro | 17 + .../referenceexamples/coercion/coercion.qrc | 5 + .../referenceexamples/coercion/example.qml | 55 ++ .../referenceexamples/coercion/main.cpp | 77 ++ .../referenceexamples/coercion/person.cpp | 79 ++ .../referenceexamples/coercion/person.h | 82 ++ .../default/birthdayparty.cpp | 71 ++ .../referenceexamples/default/birthdayparty.h | 70 ++ .../referenceexamples/default/default.pro | 17 + .../referenceexamples/default/default.qrc | 5 + .../referenceexamples/default/example.qml | 54 ++ .../referenceexamples/default/main.cpp | 75 ++ .../referenceexamples/default/person.cpp | 78 ++ .../referenceexamples/default/person.h | 77 ++ .../referenceexamples/extended/example.qml | 47 + .../referenceexamples/extended/extended.pro | 15 + .../referenceexamples/extended/extended.qrc | 5 + .../referenceexamples/extended/lineedit.cpp | 103 +++ .../referenceexamples/extended/lineedit.h | 73 ++ .../referenceexamples/extended/main.cpp | 64 ++ .../grouped/birthdayparty.cpp | 71 ++ .../referenceexamples/grouped/birthdayparty.h | 69 ++ .../referenceexamples/grouped/example.qml | 73 ++ .../referenceexamples/grouped/grouped.pro | 17 + .../referenceexamples/grouped/grouped.qrc | 5 + .../referenceexamples/grouped/main.cpp | 85 ++ .../referenceexamples/grouped/person.cpp | 118 +++ .../referenceexamples/grouped/person.h | 107 +++ .../methods/birthdayparty.cpp | 80 ++ .../referenceexamples/methods/birthdayparty.h | 71 ++ .../referenceexamples/methods/example.qml | 58 ++ .../referenceexamples/methods/main.cpp | 68 ++ .../referenceexamples/methods/methods.pro | 18 + .../referenceexamples/methods/methods.qrc | 5 + .../referenceexamples/methods/person.cpp | 66 ++ .../referenceexamples/methods/person.h | 63 ++ .../properties/birthdayparty.cpp | 73 ++ .../properties/birthdayparty.h | 75 ++ .../referenceexamples/properties/example.qml | 55 ++ .../referenceexamples/properties/main.cpp | 68 ++ .../referenceexamples/properties/person.cpp | 66 ++ .../referenceexamples/properties/person.h | 63 ++ .../properties/properties.pro | 18 + .../properties/properties.qrc | 5 + .../referenceexamples/referenceexamples.pro | 14 + .../referenceexamples.qmlproject | 16 + .../signal/birthdayparty.cpp | 98 ++ .../referenceexamples/signal/birthdayparty.h | 92 ++ .../referenceexamples/signal/example.qml | 72 ++ .../referenceexamples/signal/main.cpp | 91 ++ .../referenceexamples/signal/person.cpp | 118 +++ .../referenceexamples/signal/person.h | 105 +++ .../referenceexamples/signal/signal.pro | 17 + .../referenceexamples/signal/signal.qrc | 5 + .../valuesource/birthdayparty.cpp | 108 +++ .../valuesource/birthdayparty.h | 97 ++ .../referenceexamples/valuesource/example.qml | 76 ++ .../valuesource/happybirthdaysong.cpp | 80 ++ .../valuesource/happybirthdaysong.h | 79 ++ .../referenceexamples/valuesource/main.cpp | 93 ++ .../referenceexamples/valuesource/person.cpp | 118 +++ .../referenceexamples/valuesource/person.h | 105 +++ .../valuesource/valuesource.pro | 19 + .../valuesource/valuesource.qrc | 5 + .../declarative/qtquick1/examples.qmlproject | 16 + examples/declarative/qtquick1/i18n/i18n.qml | 78 ++ .../declarative/qtquick1/i18n/i18n.qmlproject | 16 + .../declarative/qtquick1/i18n/i18n/base.ts | 12 + .../qtquick1/i18n/i18n/qml_en_AU.ts | 12 + .../declarative/qtquick1/i18n/i18n/qml_fr.ts | 12 + .../imageelements/borderimage/borderimage.qml | 97 ++ .../borderimage/borderimage.qmlproject | 16 + .../borderimage/content/MyBorderImage.qml | 90 ++ .../borderimage/content/ShadowRectangle.qml | 54 ++ .../imageelements/borderimage/content/bw.png | Bin 0 -> 1357 bytes .../borderimage/content/colors-round.sci | 7 + .../borderimage/content/colors-stretch.sci | 5 + .../borderimage/content/colors.png | Bin 0 -> 1655 bytes .../borderimage/content/shadow.png | Bin 0 -> 588 bytes .../imageelements/borderimage/shadows.qml | 64 ++ .../imageelements/image/ImageCell.qml | 60 ++ .../qtquick1/imageelements/image/image.qml | 66 ++ .../imageelements/image/image.qmlproject | 16 + .../qtquick1/imageelements/image/qt-logo.png | Bin 0 -> 5149 bytes .../imageelements/imageelements.qmlproject | 16 + .../keyinteraction/focus/Core/ContextMenu.qml | 65 ++ .../keyinteraction/focus/Core/GridMenu.qml | 105 +++ .../keyinteraction/focus/Core/ListMenu.qml | 105 +++ .../focus/Core/ListViewDelegate.qml | 85 ++ .../focus/Core/images/arrow.png | Bin 0 -> 583 bytes .../focus/Core/images/qt-logo.png | Bin 0 -> 5149 bytes .../qtquick1/keyinteraction/focus/focus.qml | 111 +++ .../keyinteraction/focus/focus.qmlproject | 16 + .../keyinteraction/keyinteraction.qmlproject | 16 + .../abstractitemmodel/abstractitemmodel.pro | 8 + .../abstractitemmodel/abstractitemmodel.qrc | 6 + .../modelviews/abstractitemmodel/main.cpp | 66 ++ .../modelviews/abstractitemmodel/model.cpp | 90 ++ .../modelviews/abstractitemmodel/model.h | 83 ++ .../modelviews/abstractitemmodel/view.qml | 51 ++ .../modelviews/gridview/gridview-example.qml | 89 ++ .../modelviews/gridview/gridview.qmlproject | 16 + .../gridview/pics/AddressBook_48.png | Bin 0 -> 3350 bytes .../gridview/pics/AudioPlayer_48.png | Bin 0 -> 3806 bytes .../modelviews/gridview/pics/Camera_48.png | Bin 0 -> 3540 bytes .../modelviews/gridview/pics/DateBook_48.png | Bin 0 -> 2610 bytes .../modelviews/gridview/pics/EMail_48.png | Bin 0 -> 3655 bytes .../modelviews/gridview/pics/TodoList_48.png | Bin 0 -> 3429 bytes .../gridview/pics/VideoPlayer_48.png | Bin 0 -> 4151 bytes .../modelviews/listview/content/PetsModel.qml | 98 ++ .../listview/content/PressAndHoldButton.qml | 82 ++ .../listview/content/RecipesModel.qml | 129 +++ .../listview/content/TextButton.qml | 78 ++ .../listview/content/pics/arrow-down.png | Bin 0 -> 594 bytes .../listview/content/pics/arrow-up.png | Bin 0 -> 692 bytes .../listview/content/pics/fruit-salad.jpg | Bin 0 -> 17952 bytes .../listview/content/pics/hamburger.jpg | Bin 0 -> 8572 bytes .../listview/content/pics/lemonade.jpg | Bin 0 -> 6645 bytes .../listview/content/pics/list-delete.png | Bin 0 -> 831 bytes .../listview/content/pics/minus-sign.png | Bin 0 -> 250 bytes .../listview/content/pics/moreDown.png | Bin 0 -> 217 bytes .../listview/content/pics/moreUp.png | Bin 0 -> 212 bytes .../listview/content/pics/pancakes.jpg | Bin 0 -> 9163 bytes .../listview/content/pics/plus-sign.png | Bin 0 -> 462 bytes .../listview/content/pics/vegetable-soup.jpg | Bin 0 -> 8639 bytes .../modelviews/listview/dynamiclist.qml | 203 ++++ .../listview/expandingdelegates.qml | 202 ++++ .../modelviews/listview/highlight.qml | 99 ++ .../modelviews/listview/highlightranges.qml | 122 +++ .../modelviews/listview/listview.qmlproject | 16 + .../qtquick1/modelviews/listview/sections.qml | 87 ++ .../qtquick1/modelviews/modelviews.pro | 7 + .../qtquick1/modelviews/modelviews.qmlproject | 16 + .../modelviews/objectlistmodel/dataobject.cpp | 77 ++ .../modelviews/objectlistmodel/dataobject.h | 76 ++ .../modelviews/objectlistmodel/main.cpp | 76 ++ .../objectlistmodel/objectlistmodel.pro | 18 + .../objectlistmodel.qmlproject | 16 + .../objectlistmodel/objectlistmodel.qrc | 5 + .../modelviews/objectlistmodel/view.qml | 56 ++ .../qtquick1/modelviews/package/Delegate.qml | 88 ++ .../modelviews/package/package.qmlproject | 16 + .../qtquick1/modelviews/package/view.qml | 76 ++ .../qtquick1/modelviews/parallax/parallax.qml | 78 ++ .../modelviews/parallax/parallax.qmlproject | 16 + .../modelviews/parallax/pics/background.jpg | Bin 0 -> 209814 bytes .../modelviews/parallax/pics/face-smile.png | Bin 0 -> 15408 bytes .../modelviews/parallax/pics/home-page.svg | 445 +++++++++ .../modelviews/parallax/pics/shadow.png | Bin 0 -> 425 bytes .../parallax/pics/yast-joystick.png | Bin 0 -> 2723 bytes .../modelviews/parallax/pics/yast-wol.png | Bin 0 -> 3769 bytes .../modelviews/parallax/qml/ParallaxView.qml | 123 +++ .../modelviews/parallax/qml/Smiley.qml | 84 ++ .../modelviews/pathview/pathview-example.qml | 107 +++ .../modelviews/pathview/pathview.qmlproject | 16 + .../pathview/pics/AddressBook_48.png | Bin 0 -> 3350 bytes .../pathview/pics/AudioPlayer_48.png | Bin 0 -> 3806 bytes .../modelviews/pathview/pics/Camera_48.png | Bin 0 -> 3540 bytes .../modelviews/pathview/pics/DateBook_48.png | Bin 0 -> 2610 bytes .../modelviews/pathview/pics/EMail_48.png | Bin 0 -> 3655 bytes .../modelviews/pathview/pics/TodoList_48.png | Bin 0 -> 3429 bytes .../pathview/pics/VideoPlayer_48.png | Bin 0 -> 4151 bytes .../modelviews/stringlistmodel/main.cpp | 75 ++ .../stringlistmodel/stringlistmodel.pro | 9 + .../stringlistmodel/stringlistmodel.qrc | 5 + .../modelviews/stringlistmodel/view.qml | 55 ++ .../visualitemmodel/visualitemmodel.qml | 114 +++ .../visualitemmodel.qmlproject | 16 + .../qtquick1/positioners/Button.qml | 78 ++ .../declarative/qtquick1/positioners/add.png | Bin 0 -> 810 bytes .../declarative/qtquick1/positioners/del.png | Bin 0 -> 488 bytes .../qtquick1/positioners/positioners.qml | 253 +++++ .../positioners/positioners.qmlproject | 18 + examples/declarative/qtquick1/qtquick1.pro | 29 + .../layoutdirection/layoutdirection.qml | 256 ++++++ .../layoutdirection.qmlproject | 18 + .../layoutmirroring/layoutmirroring.qml | 313 +++++++ .../layoutmirroring.qmlproject | 18 + .../textalignment/textalignment.qml | 426 +++++++++ .../textalignment/textalignment.qmlproject | 18 + .../screenorientation/Core/Bubble.qml | 90 ++ .../screenorientation/Core/Button.qml | 71 ++ .../Core/screenorientation.js | 94 ++ .../screenorientation/screenorientation.qml | 201 ++++ .../screenorientation.qmlproject | 16 + .../qtquick1/sqllocalstorage/hello.qml | 77 ++ .../sqllocalstorage.qmlproject | 16 + .../qtquick1/text/fonts/availableFonts.qml | 57 ++ .../qtquick1/text/fonts/banner.qml | 61 ++ .../declarative/qtquick1/text/fonts/fonts.qml | 104 +++ .../qtquick1/text/fonts/fonts.qmlproject | 16 + .../text/fonts/fonts/tarzeau_ocr_a.ttf | Bin 0 -> 24544 bytes .../declarative/qtquick1/text/fonts/hello.qml | 79 ++ .../declarative/qtquick1/text/text.qmlproject | 16 + .../text/textselection/pics/endHandle.png | Bin 0 -> 185 bytes .../text/textselection/pics/endHandle.sci | 5 + .../text/textselection/pics/startHandle.png | Bin 0 -> 178 bytes .../text/textselection/pics/startHandle.sci | 5 + .../text/textselection/textselection.qml | 289 ++++++ .../textselection/textselection.qmlproject | 16 + .../threading/threadedlistmodel/dataloader.js | 49 + .../threadedlistmodel.qmlproject | 56 ++ .../threadedlistmodel/timedisplay.qml | 76 ++ .../qtquick1/threading/threading.qmlproject | 16 + .../threading/workerscript/workerscript.js | 15 + .../threading/workerscript/workerscript.qml | 83 ++ .../workerscript/workerscript.qmlproject | 16 + .../gestures/experimental-gestures.qml | 76 ++ .../gestures/gestures.qmlproject | 16 + .../mousearea/mousearea-example.qml | 112 +++ .../mousearea/mousearea.qmlproject | 16 + .../pincharea/flickresize.qml | 97 ++ .../pincharea/pincharea.qmlproject | 18 + .../touchinteraction/pincharea/qt-logo.jpg | Bin 0 -> 40886 bytes .../touchinteraction.qmlproject | 16 + examples/declarative/qtquick1/toys/README | 37 + .../qtquick1/toys/clocks/clocks.qml | 59 ++ .../qtquick1/toys/clocks/clocks.qmlproject | 16 + .../qtquick1/toys/clocks/content/Clock.qml | 124 +++ .../toys/clocks/content/QuitButton.qml | 52 ++ .../toys/clocks/content/background.png | Bin 0 -> 46895 bytes .../qtquick1/toys/clocks/content/center.png | Bin 0 -> 765 bytes .../toys/clocks/content/clock-night.png | Bin 0 -> 23359 bytes .../qtquick1/toys/clocks/content/clock.png | Bin 0 -> 20653 bytes .../qtquick1/toys/clocks/content/hour.png | Bin 0 -> 625 bytes .../qtquick1/toys/clocks/content/minute.png | Bin 0 -> 625 bytes .../qtquick1/toys/clocks/content/quit.png | Bin 0 -> 583 bytes .../qtquick1/toys/clocks/content/second.png | Bin 0 -> 303 bytes .../qtquick1/toys/corkboards/Day.qml | 153 ++++ .../qtquick1/toys/corkboards/cork.jpg | Bin 0 -> 149337 bytes .../qtquick1/toys/corkboards/corkboards.qml | 115 +++ .../toys/corkboards/corkboards.qmlproject | 16 + .../qtquick1/toys/corkboards/note-yellow.png | Bin 0 -> 54559 bytes .../qtquick1/toys/corkboards/tack.png | Bin 0 -> 7282 bytes .../toys/dynamicscene/dynamicscene.qml | 224 +++++ .../toys/dynamicscene/dynamicscene.qmlproject | 16 + .../qtquick1/toys/dynamicscene/images/NOTE | 1 + .../toys/dynamicscene/images/face-smile.png | Bin 0 -> 15408 bytes .../toys/dynamicscene/images/moon.png | Bin 0 -> 1757 bytes .../toys/dynamicscene/images/rabbit_brown.png | Bin 0 -> 1245 bytes .../toys/dynamicscene/images/rabbit_bw.png | Bin 0 -> 1759 bytes .../toys/dynamicscene/images/star.png | Bin 0 -> 349 bytes .../qtquick1/toys/dynamicscene/images/sun.png | Bin 0 -> 8153 bytes .../toys/dynamicscene/images/tree_s.png | Bin 0 -> 3406 bytes .../qtquick1/toys/dynamicscene/qml/Button.qml | 80 ++ .../dynamicscene/qml/GenericSceneItem.qml | 49 + .../toys/dynamicscene/qml/PaletteItem.qml | 59 ++ .../toys/dynamicscene/qml/PerspectiveItem.qml | 65 ++ .../qtquick1/toys/dynamicscene/qml/Sun.qml | 78 ++ .../toys/dynamicscene/qml/itemCreation.js | 62 ++ .../toys/tic-tac-toe/content/Button.qml | 79 ++ .../toys/tic-tac-toe/content/TicTac.qml | 60 ++ .../toys/tic-tac-toe/content/pics/board.png | Bin 0 -> 12258 bytes .../toys/tic-tac-toe/content/pics/o.png | Bin 0 -> 1470 bytes .../toys/tic-tac-toe/content/pics/x.png | Bin 0 -> 1331 bytes .../toys/tic-tac-toe/content/tic-tac-toe.js | 149 +++ .../qtquick1/toys/tic-tac-toe/tic-tac-toe.qml | 123 +++ .../toys/tic-tac-toe/tic-tac-toe.qmlproject | 16 + .../declarative/qtquick1/toys/toys.qmlproject | 16 + .../qtquick1/toys/tvtennis/tvtennis.qml | 109 +++ .../toys/tvtennis/tvtennis.qmlproject | 16 + .../extending/chapter1-basics/app.qml | 60 ++ .../chapter1-basics/chapter1-basics.pro | 5 + .../extending/chapter1-basics/main.cpp | 56 ++ .../extending/chapter1-basics/piechart.cpp | 81 ++ .../extending/chapter1-basics/piechart.h | 71 ++ .../extending/chapter2-methods/app.qml | 66 ++ .../chapter2-methods/chapter2-methods.pro | 5 + .../extending/chapter2-methods/main.cpp | 56 ++ .../extending/chapter2-methods/piechart.cpp | 87 ++ .../extending/chapter2-methods/piechart.h | 84 ++ .../extending/chapter3-bindings/app.qml | 74 ++ .../chapter3-bindings/chapter3-bindings.pro | 5 + .../extending/chapter3-bindings/main.cpp | 56 ++ .../extending/chapter3-bindings/piechart.cpp | 89 ++ .../extending/chapter3-bindings/piechart.h | 84 ++ .../chapter4-customPropertyTypes/app.qml | 60 ++ .../chapter4-customPropertyTypes.pro | 7 + .../chapter4-customPropertyTypes/main.cpp | 65 ++ .../chapter4-customPropertyTypes/piechart.cpp | 72 ++ .../chapter4-customPropertyTypes/piechart.h | 78 ++ .../chapter4-customPropertyTypes/pieslice.cpp | 68 ++ .../chapter4-customPropertyTypes/pieslice.h | 66 ++ .../extending/chapter5-listproperties/app.qml | 70 ++ .../chapter5-listproperties.pro | 7 + .../chapter5-listproperties/main.cpp | 57 ++ .../chapter5-listproperties/piechart.cpp | 72 ++ .../chapter5-listproperties/piechart.h | 75 ++ .../chapter5-listproperties/pieslice.cpp | 88 ++ .../chapter5-listproperties/pieslice.h | 76 ++ .../extending/chapter6-plugins/app.qml | 68 ++ .../chapter6-plugins/chapter6-plugins.pro | 20 + .../chapter6-plugins/chartsplugin.cpp | 53 ++ .../extending/chapter6-plugins/chartsplugin.h | 55 ++ .../extending/chapter6-plugins/piechart.cpp | 71 ++ .../extending/chapter6-plugins/piechart.h | 69 ++ .../extending/chapter6-plugins/pieslice.cpp | 88 ++ .../extending/chapter6-plugins/pieslice.h | 74 ++ .../extending/chapter6-plugins/qmldir | 1 + .../tutorials/extending/extending.pro | 10 + .../qtquick1/tutorials/helloworld/Cell.qml | 72 ++ .../tutorials/helloworld/tutorial1.qml | 63 ++ .../tutorials/helloworld/tutorial2.qml | 72 ++ .../tutorials/helloworld/tutorial3.qml | 91 ++ .../tutorials/samegame/samegame1/Block.qml | 53 ++ .../tutorials/samegame/samegame1/Button.qml | 83 ++ .../tutorials/samegame/samegame1/samegame.qml | 82 ++ .../samegame/samegame1/samegame1.qmlproject | 16 + .../tutorials/samegame/samegame2/Block.qml | 51 ++ .../tutorials/samegame/samegame2/Button.qml | 81 ++ .../tutorials/samegame/samegame2/samegame.js | 63 ++ .../tutorials/samegame/samegame2/samegame.qml | 85 ++ .../samegame/samegame2/samegame2.qmlproject | 16 + .../tutorials/samegame/samegame3/Block.qml | 63 ++ .../tutorials/samegame/samegame3/Button.qml | 81 ++ .../tutorials/samegame/samegame3/Dialog.qml | 71 ++ .../tutorials/samegame/samegame3/samegame.js | 174 ++++ .../tutorials/samegame/samegame3/samegame.qml | 109 +++ .../samegame/samegame3/samegame3.qmlproject | 16 + .../samegame/samegame4/content/BoomBlock.qml | 122 +++ .../samegame/samegame4/content/Button.qml | 81 ++ .../samegame/samegame4/content/Dialog.qml | 107 +++ .../samegame/samegame4/content/samegame.js | 225 +++++ .../samegame/samegame4/highscores/README | 1 + .../samegame4/highscores/score_data.xml | 2 + .../samegame4/highscores/score_style.xsl | 28 + .../samegame/samegame4/highscores/scores.php | 31 + .../tutorials/samegame/samegame4/samegame.qml | 115 +++ .../samegame/samegame4/samegame4.qmlproject | 16 + .../samegame/shared/pics/background.jpg | Bin 0 -> 36473 bytes .../samegame/shared/pics/blueStar.png | Bin 0 -> 278 bytes .../samegame/shared/pics/blueStone.png | Bin 0 -> 3054 bytes .../samegame/shared/pics/greenStar.png | Bin 0 -> 273 bytes .../samegame/shared/pics/greenStone.png | Bin 0 -> 2932 bytes .../samegame/shared/pics/redStar.png | Bin 0 -> 274 bytes .../samegame/shared/pics/redStone.png | Bin 0 -> 2902 bytes .../tutorials/samegame/shared/pics/star.png | Bin 0 -> 262 bytes .../samegame/shared/pics/yellowStone.png | Bin 0 -> 3056 bytes .../qtquick1/tutorials/tutorials.pro | 5 + .../qtquick1/tutorials/tutorials.qmlproject | 16 + .../declarative/qtquick1/ui-components/README | 39 + .../dialcontrol/content/Dial.qml | 86 ++ .../dialcontrol/content/QuitButton.qml | 52 ++ .../dialcontrol/content/background.png | Bin 0 -> 35876 bytes .../dialcontrol/content/needle.png | Bin 0 -> 342 bytes .../dialcontrol/content/needle_shadow.png | Bin 0 -> 632 bytes .../dialcontrol/content/overlay.png | Bin 0 -> 3564 bytes .../dialcontrol/content/quit.png | Bin 0 -> 583 bytes .../ui-components/dialcontrol/dialcontrol.qml | 98 ++ .../dialcontrol/dialcontrol.qmlproject | 16 + .../flipable/content/5_heart.png | Bin 0 -> 3872 bytes .../ui-components/flipable/content/9_club.png | Bin 0 -> 6135 bytes .../ui-components/flipable/content/Card.qml | 80 ++ .../ui-components/flipable/content/back.png | Bin 0 -> 1418 bytes .../ui-components/flipable/flipable.qml | 55 ++ .../flipable/flipable.qmlproject | 16 + .../progressbar/content/ProgressBar.qml | 83 ++ .../progressbar/content/background.png | Bin 0 -> 426 bytes .../ui-components/progressbar/main.qml | 73 ++ .../progressbar/progressbar.qmlproject | 16 + .../ui-components/scrollbar/ScrollBar.qml | 74 ++ .../qtquick1/ui-components/scrollbar/main.qml | 93 ++ .../scrollbar/pics/niagara_falls.jpg | Bin 0 -> 604121 bytes .../scrollbar/scrollbar.qmlproject | 16 + .../ui-components/searchbox/SearchBox.qml | 109 +++ .../ui-components/searchbox/images/clear.png | Bin 0 -> 429 bytes .../searchbox/images/lineedit-bg-focus.png | Bin 0 -> 526 bytes .../searchbox/images/lineedit-bg.png | Bin 0 -> 426 bytes .../qtquick1/ui-components/searchbox/main.qml | 60 ++ .../searchbox/searchbox.qmlproject | 16 + .../slideswitch/content/Switch.qml | 117 +++ .../slideswitch/content/background.svg | 23 + .../slideswitch/content/knob.svg | 867 ++++++++++++++++++ .../ui-components/slideswitch/slideswitch.qml | 51 ++ .../slideswitch/slideswitch.qmlproject | 16 + .../ui-components/spinner/content/Spinner.qml | 70 ++ .../spinner/content/spinner-bg.png | Bin 0 -> 345 bytes .../spinner/content/spinner-select.png | Bin 0 -> 320 bytes .../qtquick1/ui-components/spinner/main.qml | 61 ++ .../ui-components/spinner/spinner.qmlproject | 16 + .../ui-components/tabwidget/TabWidget.qml | 102 +++ .../qtquick1/ui-components/tabwidget/main.qml | 99 ++ .../qtquick1/ui-components/tabwidget/tab.png | Bin 0 -> 507 bytes .../tabwidget/tabwidget.qmlproject | 16 + .../ui-components/ui-components.qmlproject | 16 + .../declarative/qtquick1/xml/xml.qmlproject | 16 + .../qtquick1/xml/xmlhttprequest/data.xml | 5 + .../xmlhttprequest/xmlhttprequest-example.qml | 95 ++ .../xmlhttprequest/xmlhttprequest.qmlproject | 16 + .../declarative/examples/tst_examples.cpp | 3 + .../auto/qtquick1/examples/data/dummytest.qml | 6 + .../examples/data/webbrowser/webbrowser.qml | 6 + tests/auto/qtquick1/examples/examples.pro | 14 + tests/auto/qtquick1/examples/tst_examples.cpp | 212 +++++ tests/auto/qtquick1/qtquick1.pro | 1 + 494 files changed, 24137 insertions(+), 30 deletions(-) delete mode 100644 examples/declarative/cppextensions/qwidgets/qwidgets.pro create mode 100644 examples/declarative/qtquick1.pro create mode 100644 examples/declarative/qtquick1/README rename examples/declarative/{cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject => qtquick1/animation/animation.qmlproject} (100%) rename examples/declarative/{cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject => qtquick1/animation/basics/basics.qmlproject} (100%) create mode 100644 examples/declarative/qtquick1/animation/basics/color-animation.qml create mode 100644 examples/declarative/qtquick1/animation/basics/images/face-smile.png create mode 100644 examples/declarative/qtquick1/animation/basics/images/moon.png create mode 100644 examples/declarative/qtquick1/animation/basics/images/shadow.png create mode 100644 examples/declarative/qtquick1/animation/basics/images/star.png create mode 100644 examples/declarative/qtquick1/animation/basics/images/sun.png create mode 100644 examples/declarative/qtquick1/animation/basics/property-animation.qml create mode 100644 examples/declarative/qtquick1/animation/behaviors/SideRect.qml create mode 100644 examples/declarative/qtquick1/animation/behaviors/behavior-example.qml rename examples/declarative/{cppextensions/qwidgets/qwidgets.qmlproject => qtquick1/animation/behaviors/behaviors.qmlproject} (100%) create mode 100644 examples/declarative/qtquick1/animation/behaviors/wigglytext.qml create mode 100644 examples/declarative/qtquick1/animation/easing/content/QuitButton.qml create mode 100644 examples/declarative/qtquick1/animation/easing/content/quit.png create mode 100644 examples/declarative/qtquick1/animation/easing/easing.qml create mode 100644 examples/declarative/qtquick1/animation/easing/easing.qmlproject create mode 100644 examples/declarative/qtquick1/animation/states/qt-logo.png create mode 100644 examples/declarative/qtquick1/animation/states/states.qml create mode 100644 examples/declarative/qtquick1/animation/states/states.qmlproject create mode 100644 examples/declarative/qtquick1/animation/states/transitions.qml create mode 100644 examples/declarative/qtquick1/cppextensions/cppextensions.pro create mode 100644 examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/README create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/center.png create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/clock.png create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/hour.png create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/minute.png create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/plugins.pro create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/plugins.qml create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro (79%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml (100%) create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/layoutitem/main.cpp (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp (98%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicslayouts.pro (100%) create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp (98%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qwidgets/QWidgets/qmldir (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qwidgets/README (100%) rename examples/declarative/{ => qtquick1}/cppextensions/qwidgets/qwidgets.cpp (100%) create mode 100644 examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro rename examples/declarative/{ => qtquick1}/cppextensions/qwidgets/qwidgets.qml (100%) create mode 100644 examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc create mode 100644 examples/declarative/qtquick1/examples.qmlproject create mode 100644 examples/declarative/qtquick1/i18n/i18n.qml create mode 100644 examples/declarative/qtquick1/i18n/i18n.qmlproject create mode 100644 examples/declarative/qtquick1/i18n/i18n/base.ts create mode 100644 examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts create mode 100644 examples/declarative/qtquick1/i18n/i18n/qml_fr.ts create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/bw.png create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/colors-round.sci create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/colors-stretch.sci create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/colors.png create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/shadow.png create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/shadows.qml create mode 100644 examples/declarative/qtquick1/imageelements/image/ImageCell.qml create mode 100644 examples/declarative/qtquick1/imageelements/image/image.qml create mode 100644 examples/declarative/qtquick1/imageelements/image/image.qmlproject create mode 100644 examples/declarative/qtquick1/imageelements/image/qt-logo.png create mode 100644 examples/declarative/qtquick1/imageelements/imageelements.qmlproject create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/images/arrow.png create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/images/qt-logo.png create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/focus.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject create mode 100644 examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml create mode 100644 examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml create mode 100644 examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/AddressBook_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/AudioPlayer_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/Camera_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/DateBook_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/EMail_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/TodoList_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/VideoPlayer_48.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/PetsModel.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/PressAndHoldButton.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/RecipesModel.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-down.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-up.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/fruit-salad.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/hamburger.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/lemonade.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/list-delete.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/minus-sign.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/moreDown.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/moreUp.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/pancakes.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/plus-sign.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/vegetable-soup.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/dynamiclist.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/expandingdelegates.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/highlight.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/highlightranges.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/listview.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/listview/sections.qml create mode 100644 examples/declarative/qtquick1/modelviews/modelviews.pro create mode 100644 examples/declarative/qtquick1/modelviews/modelviews.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.cpp create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.h create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml create mode 100644 examples/declarative/qtquick1/modelviews/package/Delegate.qml create mode 100644 examples/declarative/qtquick1/modelviews/package/package.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/package/view.qml create mode 100644 examples/declarative/qtquick1/modelviews/parallax/parallax.qml create mode 100644 examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/background.jpg create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/face-smile.png create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/shadow.png create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/yast-joystick.png create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/yast-wol.png create mode 100644 examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml create mode 100644 examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/AddressBook_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/AudioPlayer_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/Camera_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/DateBook_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/EMail_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/TodoList_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/VideoPlayer_48.png create mode 100644 examples/declarative/qtquick1/modelviews/stringlistmodel/main.cpp create mode 100644 examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro create mode 100644 examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc create mode 100644 examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml create mode 100644 examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml create mode 100644 examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject create mode 100644 examples/declarative/qtquick1/positioners/Button.qml create mode 100644 examples/declarative/qtquick1/positioners/add.png create mode 100644 examples/declarative/qtquick1/positioners/del.png create mode 100644 examples/declarative/qtquick1/positioners/positioners.qml create mode 100644 examples/declarative/qtquick1/positioners/positioners.qmlproject create mode 100644 examples/declarative/qtquick1/qtquick1.pro create mode 100644 examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml create mode 100644 examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject create mode 100644 examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml create mode 100644 examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject create mode 100644 examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml create mode 100644 examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject create mode 100644 examples/declarative/qtquick1/screenorientation/Core/Bubble.qml create mode 100644 examples/declarative/qtquick1/screenorientation/Core/Button.qml create mode 100644 examples/declarative/qtquick1/screenorientation/Core/screenorientation.js create mode 100644 examples/declarative/qtquick1/screenorientation/screenorientation.qml create mode 100644 examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject create mode 100644 examples/declarative/qtquick1/sqllocalstorage/hello.qml create mode 100644 examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject create mode 100644 examples/declarative/qtquick1/text/fonts/availableFonts.qml create mode 100644 examples/declarative/qtquick1/text/fonts/banner.qml create mode 100644 examples/declarative/qtquick1/text/fonts/fonts.qml create mode 100644 examples/declarative/qtquick1/text/fonts/fonts.qmlproject create mode 100644 examples/declarative/qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf create mode 100644 examples/declarative/qtquick1/text/fonts/hello.qml create mode 100644 examples/declarative/qtquick1/text/text.qmlproject create mode 100644 examples/declarative/qtquick1/text/textselection/pics/endHandle.png create mode 100644 examples/declarative/qtquick1/text/textselection/pics/endHandle.sci create mode 100644 examples/declarative/qtquick1/text/textselection/pics/startHandle.png create mode 100644 examples/declarative/qtquick1/text/textselection/pics/startHandle.sci create mode 100644 examples/declarative/qtquick1/text/textselection/textselection.qml create mode 100644 examples/declarative/qtquick1/text/textselection/textselection.qmlproject create mode 100644 examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js create mode 100644 examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject create mode 100644 examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml create mode 100644 examples/declarative/qtquick1/threading/threading.qmlproject create mode 100644 examples/declarative/qtquick1/threading/workerscript/workerscript.js create mode 100644 examples/declarative/qtquick1/threading/workerscript/workerscript.qml create mode 100644 examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject create mode 100644 examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml create mode 100644 examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject create mode 100644 examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml create mode 100644 examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject create mode 100644 examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml create mode 100644 examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject create mode 100644 examples/declarative/qtquick1/touchinteraction/pincharea/qt-logo.jpg create mode 100644 examples/declarative/qtquick1/touchinteraction/touchinteraction.qmlproject create mode 100644 examples/declarative/qtquick1/toys/README create mode 100644 examples/declarative/qtquick1/toys/clocks/clocks.qml create mode 100644 examples/declarative/qtquick1/toys/clocks/clocks.qmlproject create mode 100644 examples/declarative/qtquick1/toys/clocks/content/Clock.qml create mode 100644 examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml create mode 100644 examples/declarative/qtquick1/toys/clocks/content/background.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/center.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/clock-night.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/clock.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/hour.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/minute.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/quit.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/second.png create mode 100644 examples/declarative/qtquick1/toys/corkboards/Day.qml create mode 100644 examples/declarative/qtquick1/toys/corkboards/cork.jpg create mode 100644 examples/declarative/qtquick1/toys/corkboards/corkboards.qml create mode 100644 examples/declarative/qtquick1/toys/corkboards/corkboards.qmlproject create mode 100644 examples/declarative/qtquick1/toys/corkboards/note-yellow.png create mode 100644 examples/declarative/qtquick1/toys/corkboards/tack.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/NOTE create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/face-smile.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/moon.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_brown.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_bw.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/star.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/sun.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/tree_s.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/board.png create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/o.png create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/x.png create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject create mode 100644 examples/declarative/qtquick1/toys/toys.qmlproject create mode 100644 examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml create mode 100644 examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir create mode 100644 examples/declarative/qtquick1/tutorials/extending/extending.pro create mode 100644 examples/declarative/qtquick1/tutorials/helloworld/Cell.qml create mode 100644 examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml create mode 100644 examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml create mode 100644 examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml create mode 100755 examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README create mode 100755 examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml create mode 100755 examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl create mode 100755 examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/background.jpg create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStar.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStone.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStar.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStone.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStar.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStone.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/star.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/yellowStone.png create mode 100644 examples/declarative/qtquick1/tutorials/tutorials.pro create mode 100644 examples/declarative/qtquick1/tutorials/tutorials.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/README create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/Dial.qml create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/QuitButton.qml create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/background.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/needle.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/needle_shadow.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/overlay.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/quit.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/flipable/content/5_heart.png create mode 100644 examples/declarative/qtquick1/ui-components/flipable/content/9_club.png create mode 100644 examples/declarative/qtquick1/ui-components/flipable/content/Card.qml create mode 100644 examples/declarative/qtquick1/ui-components/flipable/content/back.png create mode 100644 examples/declarative/qtquick1/ui-components/flipable/flipable.qml create mode 100644 examples/declarative/qtquick1/ui-components/flipable/flipable.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/progressbar/content/ProgressBar.qml create mode 100644 examples/declarative/qtquick1/ui-components/progressbar/content/background.png create mode 100644 examples/declarative/qtquick1/ui-components/progressbar/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/progressbar/progressbar.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/scrollbar/ScrollBar.qml create mode 100644 examples/declarative/qtquick1/ui-components/scrollbar/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/scrollbar/pics/niagara_falls.jpg create mode 100644 examples/declarative/qtquick1/ui-components/scrollbar/scrollbar.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/SearchBox.qml create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/images/clear.png create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg-focus.png create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg.png create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/searchbox.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/content/Switch.qml create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/content/background.svg create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml create mode 100644 examples/declarative/qtquick1/ui-components/spinner/content/spinner-bg.png create mode 100644 examples/declarative/qtquick1/ui-components/spinner/content/spinner-select.png create mode 100644 examples/declarative/qtquick1/ui-components/spinner/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/spinner/spinner.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/tabwidget/TabWidget.qml create mode 100644 examples/declarative/qtquick1/ui-components/tabwidget/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/tabwidget/tab.png create mode 100644 examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/ui-components.qmlproject create mode 100644 examples/declarative/qtquick1/xml/xml.qmlproject create mode 100644 examples/declarative/qtquick1/xml/xmlhttprequest/data.xml create mode 100644 examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml create mode 100644 examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject create mode 100644 tests/auto/qtquick1/examples/data/dummytest.qml create mode 100644 tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml create mode 100644 tests/auto/qtquick1/examples/examples.pro create mode 100644 tests/auto/qtquick1/examples/tst_examples.cpp diff --git a/examples/declarative/cppextensions/cppextensions.pro b/examples/declarative/cppextensions/cppextensions.pro index 33762feb32..cde19b5c90 100644 --- a/examples/declarative/cppextensions/cppextensions.pro +++ b/examples/declarative/cppextensions/cppextensions.pro @@ -4,7 +4,5 @@ SUBDIRS += \ imageprovider \ plugins \ networkaccessmanagerfactory \ - qwidgets \ - qgraphicslayouts \ referenceexamples diff --git a/examples/declarative/cppextensions/qwidgets/qwidgets.pro b/examples/declarative/cppextensions/qwidgets/qwidgets.pro deleted file mode 100644 index d7e6f9318a..0000000000 --- a/examples/declarative/cppextensions/qwidgets/qwidgets.pro +++ /dev/null @@ -1,25 +0,0 @@ -TEMPLATE = lib -CONFIG += qt plugin -QT += declarative - -DESTDIR = QWidgets -TARGET = qmlqwidgetsplugin - -SOURCES += qwidgets.cpp - -sources.files += qwidgets.pro qwidgets.cpp qwidgets.qml -sources.path += $$[QT_INSTALL_EXAMPLES]/qtdeclarative/declarative/plugins -target.path += $$[QT_INSTALL_EXAMPLES]/qtdeclarative/declarative/plugins - -INSTALLS += sources target - -symbian:{ - CONFIG += qt_example - TARGET.EPOCALLOWDLLDATA = 1 - - importFiles.files = QWidgets/qmlqwidgetsplugin.dll QWidgets/qmldir - importFiles.path = QWidgets - - DEPLOYMENT += importFiles -} -maemo5: CONFIG += qt_example diff --git a/examples/declarative/qtquick1.pro b/examples/declarative/qtquick1.pro new file mode 100644 index 0000000000..e441d85eca --- /dev/null +++ b/examples/declarative/qtquick1.pro @@ -0,0 +1,32 @@ +TEMPLATE = subdirs + +# These examples contain some C++ and need to be built +SUBDIRS = \ + cppextensions \ + modelviews \ + tutorials + +# OpenGL shader examples requires opengl and they contain some C++ and need to be built +contains(QT_CONFIG, opengl): SUBDIRS += shadereffects + +# plugins uses a 'Time' class that conflicts with symbian e32std.h also defining a class of the same name +symbian:SUBDIRS -= plugins + +# These examples contain no C++ and can simply be copied +sources.files = \ + animation \ + cppextensions \ + i18n \ + imageelements \ + keyinteraction \ + positioners \ + sqllocalstorage \ + text \ + threading \ + touchinteraction \ + toys \ + ui-components \ + xml + +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative +INSTALLS += sources diff --git a/examples/declarative/qtquick1/README b/examples/declarative/qtquick1/README new file mode 100644 index 0000000000..578c2458a6 --- /dev/null +++ b/examples/declarative/qtquick1/README @@ -0,0 +1,41 @@ +The Qt Declarative module provides the ability to specify and implement +your user interface declaratively, using the Qt Meta-Object Language (QML). This +language is very expressive and human readable, and can be used by +designers to actually implement their UI vision. QML UIs can integrate +with C++ code in many ways, including being loaded as a part of a C++ UI +and loading data models from C++ and interacting with them. + +The example launcher provided with Qt can be used to explore each of the +examples in this directory. But most can also be viewed directly with the +QML viewer utility, without requiring compilation. + +Documentation for these examples can be found via the Tutorials and Examples +link in the main Qt documentation. + + +Finding the Qt Examples and Demos launcher +========================================== + +On Windows: + +The launcher can be accessed via the Windows Start menu. Select the menu +entry entitled "Qt Examples and Demos" entry in the submenu containing +the Qt tools. + +On Mac OS X: + +For the binary distribution, the qtdemo executable is installed in the +/Developer/Applications/Qt directory. For the source distribution, it is +installed alongside the other Qt tools on the path specified when Qt is +configured. + +On Unix/Linux: + +The qtdemo executable is installed alongside the other Qt tools on the path +specified when Qt is configured. + +On all platforms: + +The source code for the launcher can be found in the demos/qtdemo directory +in the Qt package. This example is built at the same time as the Qt libraries, +tools, examples, and demonstrations. diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject b/examples/declarative/qtquick1/animation/animation.qmlproject similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject rename to examples/declarative/qtquick1/animation/animation.qmlproject diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject b/examples/declarative/qtquick1/animation/basics/basics.qmlproject similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject rename to examples/declarative/qtquick1/animation/basics/basics.qmlproject diff --git a/examples/declarative/qtquick1/animation/basics/color-animation.qml b/examples/declarative/qtquick1/animation/basics/color-animation.qml new file mode 100644 index 0000000000..2609166418 --- /dev/null +++ b/examples/declarative/qtquick1/animation/basics/color-animation.qml @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import Qt.labs.particles 1.0 + +Item { + id: window + width: 640; height: 480 + + // Let's draw the sky... + Rectangle { + anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } + gradient: Gradient { + GradientStop { + position: 0.0 + SequentialAnimation on color { + loops: Animation.Infinite + ColorAnimation { from: "DeepSkyBlue"; to: "#0E1533"; duration: 5000 } + ColorAnimation { from: "#0E1533"; to: "DeepSkyBlue"; duration: 5000 } + } + } + GradientStop { + position: 1.0 + SequentialAnimation on color { + loops: Animation.Infinite + ColorAnimation { from: "SkyBlue"; to: "#437284"; duration: 5000 } + ColorAnimation { from: "#437284"; to: "SkyBlue"; duration: 5000 } + } + } + } + } + + // the sun, moon, and stars + Item { + width: parent.width; height: 2 * parent.height + NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite } + Image { + source: "images/sun.png"; y: 10; anchors.horizontalCenter: parent.horizontalCenter + rotation: -3 * parent.rotation + } + Image { + source: "images/moon.png"; y: parent.height - 74; anchors.horizontalCenter: parent.horizontalCenter + rotation: -parent.rotation + } + Particles { + x: 0; y: parent.height/2; width: parent.width; height: parent.height/2 + source: "images/star.png"; angleDeviation: 360; velocity: 0 + velocityDeviation: 0; count: parent.width / 10; fadeInDuration: 2800 + SequentialAnimation on opacity { + loops: Animation.Infinite + NumberAnimation { from: 0; to: 1; duration: 5000 } + NumberAnimation { from: 1; to: 0; duration: 5000 } + } + } + } + + // ...and the ground. + Rectangle { + anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } + gradient: Gradient { + GradientStop { + position: 0.0 + SequentialAnimation on color { + loops: Animation.Infinite + ColorAnimation { from: "ForestGreen"; to: "#001600"; duration: 5000 } + ColorAnimation { from: "#001600"; to: "ForestGreen"; duration: 5000 } + } + } + GradientStop { position: 1.0; color: "DarkGreen" } + } + } +} diff --git a/examples/declarative/qtquick1/animation/basics/images/face-smile.png b/examples/declarative/qtquick1/animation/basics/images/face-smile.png new file mode 100644 index 0000000000000000000000000000000000000000..3d66d725781730c7a9376a25113164f8882d9795 GIT binary patch literal 15408 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 SNxgs4ATkn);&q}%LH`e8$k9yz literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/animation/basics/images/moon.png b/examples/declarative/qtquick1/animation/basics/images/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..9407b2b4f012de17999fb3695ddc14fb5787289e GIT binary patch literal 2433 zcmV-{34Zp8P)Px#32;bRa{vGvuK)lWuK`{fksJU300(qQO+^RT2NVkw8~1$KVgLXD0%A)?L;(MX zkIcUS00{+2L_t(&-tE|F$ff652k_thY-fGXyUt{pOvqU4l8PpwVhOc1)R=;_9|WyZ zLM+ira0?<9W5h3Q6)l1vgo?IG)nXN?A!$i1)j~*dr5Y0rW^pnz$;@Ql{k&&+c0bH9 zQk_ZOi79@W>*0KP4)=ZipX>VH%m2^SxEfdEYWzP(cs+yKi{rxAylP+HWZ?=E6V>s# z^8@BP@r**r9t&l0^#@8gdjd+HBvJdsN@Dnago1GTwE ztyC(sA_t}-joMtHHF2PndD9^L&M)0AeKjIPmuLP{qlZ2^xFu7VqqbwuOsz((QmGWE za zEYnpBT9KY(?|a~TrR^0}AnbJ?`N__;b5o_r8X~1!xqwkC95HfKY-T35uTd$@&AlX* zX#{h%9 z3TI`8-~C6&KR8w$t_AU*9qZnfixy8(0TmbP0}8w1ugMoZ(ojA78QuJA{~9PYQgQ;#DN22U-hqE@RHLSrN)MJJ?wbd zIa^A{6iR!dcV6gRstK2`NhGd0Q_$bgtJ+Gb7RfEdU4Xv>=^5BU#{IbFJex^mL5vBT^$W zbiuM)_4U&yjvTTA^CTWJUl8!(WZM#@b%|Og5!C1_>=>x^t!vE^Dm(NSpZ%B|T@N)2#UY*}B>SW{TBsn%FA(MWBXiA07rvqSC! zNt4Ygt-gsywmADEjm%u5BNIv8U@DVpwNkmD<65guc|ql7bGy!{G@fgL1M{uHYFk*>?&mj`nF|SsYbA-)f!7wA|0iG%uwybw)QY2Y&)f$QfkT2 znvRaqVzRMDWNM;SIjfc1lSyqDiN#hFHVq9#60NRQ(2<%I-+AG10CdXuxzb$idILSz zxzRDL%v>gu$_@4O&=aXlP0a;;y9PG&WO`N&b+r1fk%>+pJvd|q2Ia~>j2&pzI+i55 zQp-9LBkTIu6;$@kq&oVxM2iiF4eNqaw)OQaS+*wDK6}mdPyhn;osUhbj#w(SV$GJh z3LTlLMk+|vhL#QV1*;OwHTpJ0#&T1!8(fQhQyyQ+57`3ET`y)|&GifoB@Vn`SFkKK zGt?D}q=t@LM%Suct)RtNs!?bS9B9S5YV+z_z7WcA$O}nx-K6*MzFZ>F*EKNL*iovL z5ibLbmUDDM38V)K+ObBWBF%z;Q>Drm$K ziAdkvH3s@d5<#xj)6=@fH%O&AR`d+@KCwPIG=M<;qo?|x-nX|9U^hAHhz&uH| zpk06{%;e@Ojanr&GPPrN>Xrvb`te)^uz^ro-dAGqidl-VDD(_j5oxZ_5N){@kko~~t$pv10XA=z4upfy(+pSk}2 zyC3b%{!b3cMF^6AUjNMx_3pdAvnnyyml_zNkh9Rs7uUi?@xIv(9=Z9!yZ${ZUfU}> zoJ$s;?tkjL_I@$FV=Z(AvA!FWUeX96g<6YRD^)((|Jb`9IkvAljA?mjpRi7z9{uS% z+V`h-4Tp)yH8Q&*UBRv#Lv>kyIs3!!`Qr7vN%02yg#YcCh&Ov*I)3twmdPx#0%A)?L;(MXkIcUS000SaNLh0L01egv01egwkZ*aM00007bV*G`2iXc00xlLP z#V}X^00AvYL_t(2&sCDmNl}EMEjCrA2w=vc5!OUM!FuD-_qwCu z^ZIk5D1g1};DjS(oC+vrU?eAsfYNG&Q)L-!!IU*zr^u&;}%JHDzo8btuQ^bBfVmTJZVFZXTRuy2CrP* zT!PphT5-)`(2H-=@k)Vt<;gk3%#kNYmKlWzY$75$v}x%FIigLAuX-!tj^E%PUE_#&1J>;Bn(m#0}>+tzhKNaRv)bo>$a@~7Ni*txp8b$W75xsJQ)&K2Nfd>P4e_{{OW z(~I@y#8eivb^SXekx4GghgWPVlaP+9 zNOe3isi&#jPHSy0`-1#=FN)3@_pe!NQI(jQonrCMFf2u6*?}!tHM6v??l8Obck?;Z rp!JTQUY&A`>woHd{mlRRh4lbP0l+XkKyuFM8 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/animation/basics/images/sun.png b/examples/declarative/qtquick1/animation/basics/images/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..7713ca5ce7d1223430594e4d79632a70257dce05 GIT binary patch literal 8153 zcmV;~A12_5P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iOM@ z5+^2qR+x?e03TUNL_t(|+U%LxlO@M>-oKMeRo%LK-+Q~KyJtmX8w?hL08COc1&gAM zut6)R2+EG|1H%uF@S7g&(6i}3!45z9$uD+eiCWarIqh0fr!GQVN8^r~8YOT{Tfz`J2phPG;f%+o!~S@AoG9i1DAD6!&;--lRg z-5&@aKy*3?s#Wmc3LrS&(|r9DvcCY!eh~5ZI)s_=9{^sU+E{^FUIzGImwKZum}mF@ z^tVLeWe7k5pJE`)5X_&n$4-EBMXmfc;57xH2NdR3e?}77YQ;k%1Msyc3HG$cYoDFI z=SrcaR&`|XM4w_HSTEIw=0660E|{?jvE2z70E|?q1`+1g=qhG}2%ymfP?ZF(Y2+dJ zphcDkHBv>u0rGqQL%#7T1F{Ma35|0I@L!%2<<$R(@xLkcKLF2;nZ`AI^ARaT0Mv`x zodBB#AQu%mBp8HYGX%l_XW#M3TTg0V9aSyC$qW`Vk&e2Q}P;#H+D}^DSaq#}SZA5b#+YWCQ%9 zqpHvgRNJg*%?Z`PnA5Yz;FGwM2Z-I#eIxlc?Q>BT@Zg`KYX1eqb2|kLJ_mAPP1qgGg8z0Rk^x~V&3Gaf( zyIov3?FnYc-CMEObZT+?bW;l#z*p-fB*9LsvBx5*ahpYYoGD*|cdJBn9MT?#N_s%r zlestsVasc27nHQvs5Jz`MYXRpH?|rflsC`T1h|3pM;ZSo5Ch*0Q%fB2f@b1(ekwrL*WCsUn!6Yfc>_IIMiTP z%*gP)Re|cs3VuhW$oF=9(K;s%Pp-T8Y9{MD8vW`+KCcQXOw5{`(1%q(o(7G(B+z7- z1nj$|1c*Z~5E0ZWyx(OuB|PqvcXeprBg-2=-V~CREKby%bv+SZyNMbU-dOY)pQ@sf zX8zjpqF0ENb~|ZyQR$U>ti&*-Gw{DMApF|XgnpCF`RkO8Pow_a<)|oU%~D zK3zq8D*?oasqq;xSlQ&(&4O#&ZIQ%ZV4dv|%a~PCVH=+<@+>rCaUxH0@4Rali9gF; zgi;r*D>9JEMPX$ubu9K(AQB>1Ctqwac$Iu;*hUY@VCxN5gTUu8%ludsVP0U|jRc`5 zIKO~O8tZ1#5|r)Z)n^R9n-G!@2!Ay8^o?H($UK$avE8m1x9e*65{iY`dR+Xhq}3}8 z(b~?EerD@vw2`)2qOzUAbV8)@-vu=`sNN?oBI@La&V6!~y}ZFu97h1?kgEihWI_;p*cMl^Q@EfCGr{>Utllw$KfZI_y zLIR5_3L=1i{FMM+oB-Kf(7^N2%Ixet1X~m+0?pQTNGF;^(e^fccCepx_pXi~48#*l zjdNck)m{XsC}k!h;bu_yL!Aq7De|iH8t?&Ze+Pq$f9M^*cXMIQe5cmX>*SgNd%Z

          b<3iL|%8C*7t4{PmZnxpJ}Z9PFOkp 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 Vh5vkKWu5>4002ovPDHLkV1nYy`N{wQ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/animation/easing/easing.qml b/examples/declarative/qtquick1/animation/easing/easing.qml new file mode 100644 index 0000000000..1092ee57e8 --- /dev/null +++ b/examples/declarative/qtquick1/animation/easing/easing.qml @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "content" + +Rectangle { + id: window + width: 600; height: 460; color: "#232323" + + ListModel { + id: easingTypes + ListElement { name: "Easing.Linear"; type: Easing.Linear; ballColor: "DarkRed" } + ListElement { name: "Easing.InQuad"; type: Easing.InQuad; ballColor: "IndianRed" } + ListElement { name: "Easing.OutQuad"; type: Easing.OutQuad; ballColor: "Salmon" } + ListElement { name: "Easing.InOutQuad"; type: Easing.InOutQuad; ballColor: "Tomato" } + ListElement { name: "Easing.OutInQuad"; type: Easing.OutInQuad; ballColor: "DarkOrange" } + ListElement { name: "Easing.InCubic"; type: Easing.InCubic; ballColor: "Gold" } + ListElement { name: "Easing.OutCubic"; type: Easing.OutCubic; ballColor: "Yellow" } + ListElement { name: "Easing.InOutCubic"; type: Easing.InOutCubic; ballColor: "PeachPuff" } + ListElement { name: "Easing.OutInCubic"; type: Easing.OutInCubic; ballColor: "Thistle" } + ListElement { name: "Easing.InQuart"; type: Easing.InQuart; ballColor: "Orchid" } + ListElement { name: "Easing.OutQuart"; type: Easing.OutQuart; ballColor: "Purple" } + ListElement { name: "Easing.InOutQuart"; type: Easing.InOutQuart; ballColor: "SlateBlue" } + ListElement { name: "Easing.OutInQuart"; type: Easing.OutInQuart; ballColor: "Chartreuse" } + ListElement { name: "Easing.InQuint"; type: Easing.InQuint; ballColor: "LimeGreen" } + ListElement { name: "Easing.OutQuint"; type: Easing.OutQuint; ballColor: "SeaGreen" } + ListElement { name: "Easing.InOutQuint"; type: Easing.InOutQuint; ballColor: "DarkGreen" } + ListElement { name: "Easing.OutInQuint"; type: Easing.OutInQuint; ballColor: "Olive" } + ListElement { name: "Easing.InSine"; type: Easing.InSine; ballColor: "DarkSeaGreen" } + ListElement { name: "Easing.OutSine"; type: Easing.OutSine; ballColor: "Teal" } + ListElement { name: "Easing.InOutSine"; type: Easing.InOutSine; ballColor: "Turquoise" } + ListElement { name: "Easing.OutInSine"; type: Easing.OutInSine; ballColor: "SteelBlue" } + ListElement { name: "Easing.InExpo"; type: Easing.InExpo; ballColor: "SkyBlue" } + ListElement { name: "Easing.OutExpo"; type: Easing.OutExpo; ballColor: "RoyalBlue" } + ListElement { name: "Easing.InOutExpo"; type: Easing.InOutExpo; ballColor: "MediumBlue" } + ListElement { name: "Easing.OutInExpo"; type: Easing.OutInExpo; ballColor: "MidnightBlue" } + ListElement { name: "Easing.InCirc"; type: Easing.InCirc; ballColor: "CornSilk" } + ListElement { name: "Easing.OutCirc"; type: Easing.OutCirc; ballColor: "Bisque" } + ListElement { name: "Easing.InOutCirc"; type: Easing.InOutCirc; ballColor: "RosyBrown" } + ListElement { name: "Easing.OutInCirc"; type: Easing.OutInCirc; ballColor: "SandyBrown" } + ListElement { name: "Easing.InElastic"; type: Easing.InElastic; ballColor: "DarkGoldenRod" } + ListElement { name: "Easing.OutElastic"; type: Easing.OutElastic; ballColor: "Chocolate" } + ListElement { name: "Easing.InOutElastic"; type: Easing.InOutElastic; ballColor: "SaddleBrown" } + ListElement { name: "Easing.OutInElastic"; type: Easing.OutInElastic; ballColor: "Brown" } + ListElement { name: "Easing.InBack"; type: Easing.InBack; ballColor: "Maroon" } + ListElement { name: "Easing.OutBack"; type: Easing.OutBack; ballColor: "LavenderBlush" } + ListElement { name: "Easing.InOutBack"; type: Easing.InOutBack; ballColor: "MistyRose" } + ListElement { name: "Easing.OutInBack"; type: Easing.OutInBack; ballColor: "Gainsboro" } + ListElement { name: "Easing.OutBounce"; type: Easing.OutBounce; ballColor: "Silver" } + ListElement { name: "Easing.InBounce"; type: Easing.InBounce; ballColor: "DimGray" } + ListElement { name: "Easing.InOutBounce"; type: Easing.InOutBounce; ballColor: "SlateGray" } + ListElement { name: "Easing.OutInBounce"; type: Easing.OutInBounce; ballColor: "DarkSlateGray" } + } + + Component { + id: delegate + + Item { + height: 56; width: window.width + + Text { text: name; anchors.centerIn: parent; color: "White" } + + Rectangle { + id: slot1; color: "#121212"; x: 30; height: 46; width: 46 + border.color: "#343434"; border.width: 1; radius: 12 + anchors.verticalCenter: parent.verticalCenter + } + + Rectangle { + id: slot2; color: "#121212"; x: window.width - 76; height: 46; width: 46 + border.color: "#343434"; border.width: 1; radius: 12 + anchors.verticalCenter: parent.verticalCenter + } + + Rectangle { + id: rect; x: 30; color: "#454545" + border.color: "White"; border.width: 2 + height: 46; width: 46; radius: 12 + anchors.verticalCenter: parent.verticalCenter + + MouseArea { + onClicked: if (rect.state == '') rect.state = "right"; else rect.state = '' + anchors.fill: parent + anchors.margins: -5 // Make MouseArea bigger than the rectangle, itself + } + + states : State { + name: "right" + PropertyChanges { target: rect; x: window.width - 76; color: ballColor } + } + + transitions: Transition { + NumberAnimation { properties: "x"; easing.type: type; duration: 1000 } + ColorAnimation { properties: "color"; easing.type: type; duration: 1000 } + } + } + } + } + + Flickable { + anchors.fill: parent + contentHeight: layout.height+50 + Rectangle { + id: titlePane + color: "#444444" + height: 35 + anchors { top: parent.top; left: parent.left; right: parent.right } + QuitButton { + id: quitButton + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: 10 + } + } + Column { + id: layout + anchors { top: titlePane.bottom; topMargin: 10; left: parent.left; right: parent.right } + Repeater { model: easingTypes; delegate: delegate } + } + } +} diff --git a/examples/declarative/qtquick1/animation/easing/easing.qmlproject b/examples/declarative/qtquick1/animation/easing/easing.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/animation/easing/easing.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/animation/states/qt-logo.png b/examples/declarative/qtquick1/animation/states/qt-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..14ddf2a0289e64c686b34712b8754bc4baac2726 GIT binary patch literal 5149 zcmXX~3p~^78^_ooKetr2QZ7;CHd{%^P$?%wB#sWlE=Q-dlhP`g>rmu!N<$&1)9p}{ zB4Nu$ZdoUtI47Bj@}o*F=KPcmj>6qGCAev)eP6c0F1K!*~v#PA@JlX2R~Y=}_`S*&(e=hq9+< z#S_)cTQm5iz-KI3k1<}Nki###+S zwV$Fid8zK0>jZVsn`K$XxPUOD>b?u%sW1HVfK@b ziIKy5`gw;a@31}oNCrIzg5YA5awwM-jq^`1=rD`{16zZs#Zn)M5W)f&@(IW5IMZEQ1l#uUU8qMk{bN zm`B)}$5eQXVw7aoV|g|*2Y9jS;mB#N4H=V_ZrC#!J1onnH775$jo*Z+`_Zst^tAq> z5623dSF~bQd9xhW(BB}<(%L=Sex`o8`TcTbyV@*M3$aU9c*L-=uCY^n zcLLp|EaQJ8nUDV3A7pZy#!@HeBPhNViWT>`^gLqaZj0=FYj1AB*kbIf8VZCm3peuE zOe3|_DR?p=qWbF)JZptva^>er@4s6)e`4<(jXs_w-TAgH!KElIQBRIIO0IOR`g7Xj}I2X2NKW&`d(CzV`n=DisAGZCefL+t9JgcksQzk!9P&6ks?-xhC z%5s~HtHRBWTKH+H-rw#o`~~yKPCZc8;$9`3!iyJIHUAeN;)tPAvA9I(LZ;wb=S%3| zk^eyvo7|!H`wXa3%^bi5L6J!p2(-D04V)+ao6!$iTwaL2i#H?VLfo%krVxpQ8=M}DS(QP-)I5HSm1PD`P@nu1y#{)) zAA>(mUoMZVC(R<~1Cz@RWmF+|$;FM6E9Fg=tTcR#AJ$qD;*z=4dpa*8OK9$$CF z&S@#CoVRAWtseRwf8%k_PwOC6b%RoOZws}!y)xHSpiYb9sy0Be`kIiB6sc-tL|mVNd@DM`VG^O2|u@?V!th35wGiX3Pq#)MyMYi5BO$39eek| zvFw^{zm0F}hv~P4l$5}Sm2+#0X*;=NGU9-VO5)U34v`7Thi4Y^+uV2rHY0t{wJ|}f zr*qM=>YZpMg)?v3VM2*W!nLnx$ULMKYRjHiVr2t(YhCK8cIq|J|+ajr$0pa;SlOgl$} zbYzsH6B7A}4&8ZhBSy3}K4Tn#1j8>7$2gO>fDUe}LvJ1X2c=L*wNE=+tg$0Cqiu<9 zi}94vTX?T)9Mm|+m$JLnWCR4tWTMeSEcq+8D6iNva?hm{ z9mx2VQTh+K^nuj=ko#lkXOmg00oN_%QFDmYBYNJjo zEE#tmmUDKkMJifp|LetDo< zD_f;=ow2bkB*fEGC+GEaeEbvq8Ch0#jJLf+q+zTPgA=qJ3#3cAz=VTGlD)}{sqIGC zFOAKqp6TI*s`rG+YD*y`UiAZni`rd2zbh+1%nIL}IvbAMhXLCol$S|4wbXP;M}*j{&P(QqZLmt_RV(B zE~b0>H9+SWXjf$YgVHt_K3u&D`XovFnp!qd5eF=@a45Aa^+e5Hv@zvPq@ zRqJmkGhKLo)&T(oH%*RasfEwY&`!Q{g{s3)g~ zc;~leM<%J>-bezj*g-g@!0E4=N55EK}Q&P8ryf-aZK6vtsZg?f4hy3a4IVSZ!`1}sXV5CQ^5 zD9-0UVmW^t&b#@u(?00}AAo+n$_@I_%LQU75cE!m@mO{-&rOW z_nqLhOAgF^Z^OXIq|$3C#Zx96-U(mm&SiIk=II%7!0&-k5;5S*jTUgU4?Hvftw_J+nj86=!{yLRo+$$M!wr}jQ71?DpOpIwwmTL)4i$ z+wMRu!F*KnazR0gK+J=ol~`No-B&DhHRwIccUvy%*l9a-5@MvidY0X7~~=A zL*Tv7TFr+AqnYS1l)F6fC1(7X9ccep;9znFQxq>vE!umA*IISIuDxICc_j3T8F#2W zr5MzZQiYe(fuxiOTsZfD=o?Br-_GvpVZ1r0zUWZ&=ybl6*U`ZiO^(x%VS5sg^&W!= zDGXXaDiwpf?lMy(_%zRg_Ww%8(ZXE3x=#PHRw0H>I53=F_=8iKWc1^4#>Aa2R9RAE zH@mY7VIq^kzWISE<#-tEag8Hr2yvim1i!sDYuD)c!OK+g z>r8qlD>$;~MU@V-h9P7X=@A^{=<) z?c9P!qXW+Eq`k+0rgS+KfAv<2`x_6s?;JYn?KX9EuW@r1bz*2Wa;N3`j%0(n1f92C zF=G&JFUsUYOPk^%EZz6v;~&Fw)Kfs#GBtX9|QY z7Pv9VPqH<#;T!$tU;DE12)6zeaqwD6_qnQ6s1Bwq*IG)|Imv;mTGV~B3wRFC1e_e$ zN3wAuDb1l@B8DAi0rDt1EPW*z=bM0w6VqQK226EjTi9lB=#}tKPc0s{p7x1o`>U{N z#r8c7w>F4=(`+UKq(E!NR+7ag5wF0!D@P5JS#C2dvQ#gqF#>`gFrNw)2n=drmR5N~YR zwt=C3(#*H1_^<@>SC*0}V$QgIq~B_@w~Ey_NY%%MMd^;NxnSO97ayK_SkMS=SGIxM zl~VJ;H{$sn=@EjH!=P7W!kieBMpR0{G~TetEPUDYzkRG1_P6Zg`r2%+oeE?AsqjJu zfh!$H^AJ_J9L}8PMRu$J$$HbQgWJn~)h_<|$}ZiNscskhEzYif=p*Xl>yH&Z+N9ySX6ArZnx{E2fbaytHcOt#{$I9(^MZ&*WXYa54{u6w#kOvYQ zRy=@e2tA7jl47TUpr~czi$AEl3J(iPobzOUfpPbKkbP;TtU k$RPHf;lDR%sY}KXDsCH$Zlgx;mMQ=H?D60Iz>ARjf1dU2GXMYp literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/animation/states/states.qml b/examples/declarative/qtquick1/animation/states/states.qml new file mode 100644 index 0000000000..9af1e125c5 --- /dev/null +++ b/examples/declarative/qtquick1/animation/states/states.qml @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: page + width: 640; height: 480 + color: "#343434" + + Image { + id: userIcon + x: topLeftRect.x; y: topLeftRect.y + source: "qt-logo.png" + } + + Rectangle { + id: topLeftRect + + anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } + width: 46; height: 54 + color: "Transparent"; border.color: "Gray"; radius: 6 + + // Clicking in here sets the state to the default state, returning the image to + // its initial position + MouseArea { anchors.fill: parent; onClicked: page.state = '' } + } + + Rectangle { + id: middleRightRect + + anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } + width: 46; height: 54 + color: "Transparent"; border.color: "Gray"; radius: 6 + + // Clicking in here sets the state to 'middleRight' + MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } + } + + Rectangle { + id: bottomLeftRect + + anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } + width: 46; height: 54 + color: "Transparent"; border.color: "Gray"; radius: 6 + + // Clicking in here sets the state to 'bottomLeft' + MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } + } + + states: [ + // In state 'middleRight', move the image to middleRightRect + State { + name: "middleRight" + PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } + }, + + // In state 'bottomLeft', move the image to bottomLeftRect + State { + name: "bottomLeft" + PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } + } + ] +} diff --git a/examples/declarative/qtquick1/animation/states/states.qmlproject b/examples/declarative/qtquick1/animation/states/states.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/animation/states/states.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/animation/states/transitions.qml b/examples/declarative/qtquick1/animation/states/transitions.qml new file mode 100644 index 0000000000..3051c852f3 --- /dev/null +++ b/examples/declarative/qtquick1/animation/states/transitions.qml @@ -0,0 +1,130 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +/* + This is exactly the same as states.qml, except that we have appended + a set of transitions to apply animations when the item changes + between each state. +*/ + +Rectangle { + id: page + width: 640; height: 480 + color: "#343434" + + Image { + id: userIcon + x: topLeftRect.x; y: topLeftRect.y + source: "qt-logo.png" + } + + Rectangle { + id: topLeftRect + + anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } + width: 46; height: 54 + color: "Transparent"; border.color: "Gray"; radius: 6 + + // Clicking in here sets the state to the default state, returning the image to + // its initial position + MouseArea { anchors.fill: parent; onClicked: page.state = '' } + } + + Rectangle { + id: middleRightRect + + anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } + width: 46; height: 54 + color: "Transparent"; border.color: "Gray"; radius: 6 + + // Clicking in here sets the state to 'middleRight' + MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } + } + + Rectangle { + id: bottomLeftRect + + anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } + width: 46; height: 54 + color: "Transparent"; border.color: "Gray"; radius: 6 + + // Clicking in here sets the state to 'bottomLeft' + MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } + } + + states: [ + // In state 'middleRight', move the image to middleRightRect + State { + name: "middleRight" + PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } + }, + + // In state 'bottomLeft', move the image to bottomLeftRect + State { + name: "bottomLeft" + PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } + } + ] + + // Transitions define how the properties change when the item moves between each state + transitions: [ + + // When transitioning to 'middleRight' move x,y over a duration of 1 second, + // with OutBounce easing function. + Transition { + from: "*"; to: "middleRight" + NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce; duration: 1000 } + }, + + // When transitioning to 'bottomLeft' move x,y over a duration of 2 seconds, + // with InOutQuad easing function. + Transition { + from: "*"; to: "bottomLeft" + NumberAnimation { properties: "x,y"; easing.type: Easing.InOutQuad; duration: 2000 } + }, + + // For any other state changes move x,y linearly over duration of 200ms. + Transition { + NumberAnimation { properties: "x,y"; duration: 200 } + } + ] +} diff --git a/examples/declarative/qtquick1/cppextensions/cppextensions.pro b/examples/declarative/qtquick1/cppextensions/cppextensions.pro new file mode 100644 index 0000000000..33762feb32 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/cppextensions.pro @@ -0,0 +1,10 @@ +TEMPLATE = subdirs + +SUBDIRS += \ + imageprovider \ + plugins \ + networkaccessmanagerfactory \ + qwidgets \ + qgraphicslayouts \ + referenceexamples + diff --git a/examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject b/examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject new file mode 100644 index 0000000000..6b362842cb --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + importPaths: [ "plugins" ] +} diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir b/examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir new file mode 100644 index 0000000000..6be88bccec --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir @@ -0,0 +1,2 @@ +plugin qmlimageproviderplugin + diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml new file mode 100644 index 0000000000..e25b420025 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 +import "ImageProviderCore" // import the plugin that registers the color image provider + +//![0] +Column { + Image { source: "image://colors/yellow" } + Image { source: "image://colors/red" } +} +//![0] + diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp new file mode 100644 index 0000000000..7f52aa1154 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include + +#include +#include +#include +#include +#include +#include +#include + +//![0] +class ColorImageProvider : public QDeclarativeImageProvider +{ +public: + ColorImageProvider() + : QDeclarativeImageProvider(QDeclarativeImageProvider::Pixmap) + { + } + + QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) + { + int width = 100; + int height = 50; + + if (size) + *size = QSize(width, height); + QPixmap pixmap(requestedSize.width() > 0 ? requestedSize.width() : width, + requestedSize.height() > 0 ? requestedSize.height() : height); + pixmap.fill(QColor(id).rgba()); +//![0] + + // write the color name + QPainter painter(&pixmap); + QFont f = painter.font(); + f.setPixelSize(20); + painter.setFont(f); + painter.setPen(Qt::black); + if (requestedSize.isValid()) + painter.scale(requestedSize.width() / width, requestedSize.height() / height); + painter.drawText(QRectF(0, 0, width, height), Qt::AlignCenter, id); + +//![1] + return pixmap; + } +}; +//![1] + + +class ImageProviderExtensionPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + void registerTypes(const char *uri) + { + Q_UNUSED(uri); + } + + void initializeEngine(QDeclarativeEngine *engine, const char *uri) + { + Q_UNUSED(uri); + engine->addImageProvider("colors", new ColorImageProvider); + } + +}; + +#include "imageprovider.moc" + +Q_EXPORT_PLUGIN(ImageProviderExtensionPlugin); + diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro new file mode 100644 index 0000000000..6f317b4141 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro @@ -0,0 +1,28 @@ +TEMPLATE = lib +CONFIG += qt plugin +QT += declarative qtquick1 + +DESTDIR = ImageProviderCore +TARGET = qmlimageproviderplugin + +SOURCES += imageprovider.cpp + +sources.files = $$SOURCES imageprovider.qml imageprovider.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider + +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider/ImageProviderCore + +ImageProviderCore_sources.files = \ + ImageProviderCore/qmldir +ImageProviderCore_sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider/ImageProviderCore + +INSTALLS = sources ImageProviderCore_sources target + +symbian:{ + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) + TARGET.EPOCALLOWDLLDATA = 1 + + importFiles.sources = ImageProviderCore/qmlimageproviderplugin.dll ImageProviderCore/qmldir + importFiles.path = ImageProviderCore + DEPLOYMENT = importFiles +} diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp new file mode 100644 index 0000000000..1be3379c8a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include + +#include +#include +#include + + +/* + This example illustrates using a QDeclarativeNetworkAccessManagerFactory to + create a QNetworkAccessManager with a proxy. + + Usage: + networkaccessmanagerfactory [-host -port ] [file] +*/ + +static QString proxyHost; +static int proxyPort = 0; + +class MyNetworkAccessManagerFactory : public QDeclarativeNetworkAccessManagerFactory +{ +public: + virtual QNetworkAccessManager *create(QObject *parent); +}; + +QNetworkAccessManager *MyNetworkAccessManagerFactory::create(QObject *parent) +{ + QNetworkAccessManager *nam = new QNetworkAccessManager(parent); + if (!proxyHost.isEmpty()) { + qDebug() << "Created QNetworkAccessManager using proxy" << (proxyHost + ":" + QString::number(proxyPort)); + QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, proxyHost, proxyPort); + nam->setProxy(proxy); + } + + return nam; +} + +int main(int argc, char ** argv) +{ + QUrl source("qrc:view.qml"); + + QApplication app(argc, argv); + + for (int i = 1; i < argc; ++i) { + QString arg(argv[i]); + if (arg == "-host" && i < argc-1) { + proxyHost = argv[++i]; + } else if (arg == "-port" && i < argc-1) { + arg = argv[++i]; + proxyPort = arg.toInt(); + } else if (arg[0] != '-') { + source = QUrl::fromLocalFile(arg); + } else { + qWarning() << "Usage: networkaccessmanagerfactory [-host -port ] [file]"; + exit(1); + } + } + + QDeclarativeView view; + view.engine()->setNetworkAccessManagerFactory(new MyNetworkAccessManagerFactory); + + view.setSource(source); + view.show(); + + return app.exec(); +} + diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro new file mode 100644 index 0000000000..4eebdd2a2e --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro @@ -0,0 +1,9 @@ +TEMPLATE = app +TARGET = networkaccessmanagerfactory +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative network qtquick1 + +# Input +SOURCES += main.cpp +RESOURCES += networkaccessmanagerfactory.qrc diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc new file mode 100644 index 0000000000..17e9301471 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc @@ -0,0 +1,5 @@ + + + view.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml new file mode 100644 index 0000000000..e002ef60e3 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Image { + width: 100 + height: 100 + source: "http://qt.nokia.com/logo.png" +} diff --git a/examples/declarative/qtquick1/cppextensions/plugins/README b/examples/declarative/qtquick1/cppextensions/plugins/README new file mode 100644 index 0000000000..95e0eea849 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/README @@ -0,0 +1,9 @@ +This example shows a module "com.nokia.TimeExample" that is implemented +by a C++ plugin (providing the "Time" type), and by QML files (providing the +"Clock" type). + +To run: + + make install + qmlviewer -I . plugins.qml + diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml new file mode 100644 index 0000000000..465f164dae --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: clock + width: 200; height: 200; color: "gray" + + property alias city: cityLabel.text + property variant hours + property variant minutes + property variant shift : 0 + + Image { id: background; source: "clock.png" } + + Image { + x: 92.5; y: 27 + source: "hour.png" + smooth: true + transform: Rotation { + id: hourRotation + origin.x: 7.5; origin.y: 73; + angle: (clock.hours * 30) + (clock.minutes * 0.5) + Behavior on angle { + SpringAnimation{ spring: 2; damping: 0.2; modulus: 360 } + } + } + } + + Image { + x: 93.5; y: 17 + source: "minute.png" + smooth: true + transform: Rotation { + id: minuteRotation + origin.x: 6.5; origin.y: 83; + angle: clock.minutes * 6 + Behavior on angle { + SpringAnimation{ spring: 2; damping: 0.2; modulus: 360 } + } + } + } + + Image { + anchors.centerIn: background; source: "center.png" + } + + Text { + id: cityLabel; font.bold: true; font.pixelSize: 14; y:200; color: "white" + anchors.horizontalCenter: parent.horizontalCenter + } +} diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/center.png b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/center.png new file mode 100644 index 0000000000000000000000000000000000000000..7fbd802a44e4242cb2ce11fd78efa0e2e9123591 GIT binary patch literal 765 zcmVwm?cmZyN`*KT0&&bzT5WB7@L(auxOrlE<9L|IL z&i8)L&uf>4S*T)OE8F->35(24d5sX5GeKScQ1}Zk0{U)AOeg56F@@r z9&i_k$@vIi#IHYN1sVpTz-?fBeSQ6DCX;#L`@V5q_xHlW!biXb&PAI*M>7u%0F42O z&CSilY&QEQkw`q(Y+9|>+rz`dd@7ZCCyf6B4GRvyQa(U#F>=uz;8CGacvY|0gJD{& zR*!%=;GskpvRQC?*oNeXsg;$Lg75nb(|9~ScW`jV&hDzY)D;F81#ZpE%q)7I$4wLnZ)|KVO0gq?V>GZMsffhm@h95(I@ZZ# z@|p5Cm%2j9NTbnchQr~}K4*QUR;xAXnTaa{0<=q|(&w9`!7|R}a-RSX+iE?)KF|i5 zdwY9dZUWrtbf{D+rE0Z$O1Fn?9|syZpgTcsu~% z2a54IaFR}^*UIJc*Fkx8UH5EjYin(1XXi+K>f-M$<%5e|vAb&Q;)&8-GE=~VTrQWI zpPx@oPftIdoSeL0E|vh*lr=Z!!jm-Q2}+N`W?w>U9_n|b&dh-G77}8A*@a$++Si(L{Cv$O@m%xtVMFJ vUl6^??F-^D;CUJdtS*47?_QuH>?{8O-DBHcK9x2C00000NkvXXu0mjfY~)gG literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/clock.png b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..462edacc0eaae9f2789ba6ae2c92ed533bba7207 GIT binary patch literal 20653 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�$@7S8U3ymd7s7tyOHWAvUm z!t8j;y?C2<2}e`&NBs zk|RSR9_R4Kg=Z_uc_R(0ACjxF<KbE$Lo&3+4H z^-oQ4`H5?8exV)c>u1Dr0kTvFTg+)a8?8bsZwpqqX4r2oz8QT40DQmj`P6*QrBm>V7YV%01x_JADEx%^ zYr);e3s%p$=CZLzuClr$rRa0A`ju}-P<7iI{`Q`4)24ZEZqVnxG9SyXV&z_!Wd`%z zcVvG&ybwli^(yJ@>A{_Ob>)%J!=DGKNXOy1Jtb*^m!xa}Mzho4i2eXqq#bjk9FMd^ z8V^ntW~3cz#40NrK_b|AKh5Pl@X5^Qj`XWG zg1NcPnfY(~#SJg#&X_g6_1DAEkoGm=6g)pmB&Gv`&Ugwe?Xb-v3K2s;3O&vdUn>)6 zNbhzTNrphVr~;_n>$V{lZjvIRlU&TIiaBFql|r3%7EpzD`Zl=;nN&^^4*{)Byzpbgy7Ztu1Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05S=eKQo^I00HqyL_t(o!|j;6j?+LChQH(WKrRH9n~*5B+Xf+}qoCp?QbhDr+aW4C zdL)WeG|*73Qt}2#5GYa#8lHeyT5%Jx6^|Vs3TCpi3#*N^(5!rAP(?i zpbcDdi`#BafhF)0_yH_{<^G;j-Z65HSAi?QwQje2qu=lE8e?QQ9DbTiCZB$!PRzWG#b6g^IYfixlNKp zlO)mkd~WkR*XeZn9N2LsMIPI@O}e#MEZ(MRdQ(+f!4V-MX{XaUXti1ofGWn%B2ph!ja_4( zllQqksv7%D*vIGV-L8MJ_1E)%V^D@!@0!USLDI&%-Tf!(+)zhuk*v@?gELHWx3HVl3-#ZiS4OG{=?eVR(k3}SQ z4HfIgcM*xLwNJwSkc5pTA8#HNca1U6fcp;rT~QQIAHFmn!*#y^s*t+D3$g`_00000 LNkvXXu0mjfjzPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05TtA>xRw%00HqyL_t(o!{wO0j?+L8fWO%|770J$s8EVS0#RN|$77_WqdO@D#YwzF zQsph6q@&?ABGEeN5LNhz?tJXf%o=NP@WtU|M~t+J=8lH8w8rzgYVaAXtQF)NbbYoOc(p3G*mm#fw4({j1|oMqYhd_F$|o&k?c z$4P0>0C<>X+1vGceG&pR8jU`V$Kw~kIq(Jeo)AfzrjMnt82bJGIM#9eDMGar2~Dbc z%cPR{zmaMssiJHlu@`A?^Q0;eRi?UYgu2B*)FwBg`kN!&oKJD|>hjcx)N9wLMxs9`<{e7>)D_3?Qbu$pY$hFJ3sqOT zr3pU0HwA!=s=hNTe7MaiqGvBO&o5r3X?iIl&sFt9p69OvA?W@B51fzRJAdej00000 LNkvXXu0mjfJuMrm literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir new file mode 100644 index 0000000000..e1288cfac0 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir @@ -0,0 +1,2 @@ +Clock 1.0 Clock.qml +plugin qmlqtimeexampleplugin diff --git a/examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp b/examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp new file mode 100644 index 0000000000..056e09383b --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include + +// Implements a "TimeModel" class with hour and minute properties +// that change on-the-minute yet efficiently sleep the rest +// of the time. + +class MinuteTimer : public QObject +{ + Q_OBJECT +public: + MinuteTimer(QObject *parent) : QObject(parent) + { + } + + void start() + { + if (!timer.isActive()) { + time = QTime::currentTime(); + timer.start(60000-time.second()*1000, this); + } + } + + void stop() + { + timer.stop(); + } + + int hour() const { return time.hour(); } + int minute() const { return time.minute(); } + +signals: + void timeChanged(); + +protected: + void timerEvent(QTimerEvent *) + { + QTime now = QTime::currentTime(); + if (now.second() == 59 && now.minute() == time.minute() && now.hour() == time.hour()) { + // just missed time tick over, force it, wait extra 0.5 seconds + time.addSecs(60); + timer.start(60500, this); + } else { + time = now; + timer.start(60000-time.second()*1000, this); + } + emit timeChanged(); + } + +private: + QTime time; + QBasicTimer timer; +}; + +//![0] +class TimeModel : public QObject +{ + Q_OBJECT + Q_PROPERTY(int hour READ hour NOTIFY timeChanged) + Q_PROPERTY(int minute READ minute NOTIFY timeChanged) +//![0] + +public: + TimeModel(QObject *parent=0) : QObject(parent) + { + if (++instances == 1) { + if (!timer) + timer = new MinuteTimer(qApp); + connect(timer, SIGNAL(timeChanged()), this, SIGNAL(timeChanged())); + timer->start(); + } + } + + ~TimeModel() + { + if (--instances == 0) { + timer->stop(); + } + } + + int minute() const { return timer->minute(); } + int hour() const { return timer->hour(); } + +signals: + void timeChanged(); + +private: + QTime t; + static MinuteTimer *timer; + static int instances; +}; + +int TimeModel::instances=0; +MinuteTimer *TimeModel::timer=0; + +//![plugin] +class QExampleQmlPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + void registerTypes(const char *uri) + { + Q_ASSERT(uri == QLatin1String("com.nokia.TimeExample")); + qmlRegisterType(uri, 1, 0, "Time"); + } +}; +//![plugin] + +#include "plugin.moc" + +//![export] +Q_EXPORT_PLUGIN2(qmlqtimeexampleplugin, QExampleQmlPlugin); +//![export] diff --git a/examples/declarative/qtquick1/cppextensions/plugins/plugins.pro b/examples/declarative/qtquick1/cppextensions/plugins/plugins.pro new file mode 100644 index 0000000000..b7610a8823 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/plugins.pro @@ -0,0 +1,29 @@ +TEMPLATE = lib +CONFIG += qt plugin +QT += declarative + +DESTDIR = com/nokia/TimeExample +TARGET = qmlqtimeexampleplugin + +SOURCES += plugin.cpp + +qdeclarativesources.files += \ + com/nokia/TimeExample/qmldir \ + com/nokia/TimeExample/center.png \ + com/nokia/TimeExample/clock.png \ + com/nokia/TimeExample/Clock.qml \ + com/nokia/TimeExample/hour.png \ + com/nokia/TimeExample/minute.png + +qdeclarativesources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/nokia/TimeExample + +sources.files += plugins.pro plugin.cpp plugins.qml README +sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins +target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/nokia/TimeExample + +INSTALLS += qdeclarativesources sources target + +symbian { + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) + TARGET.EPOCALLOWDLLDATA = 1 +} diff --git a/examples/declarative/qtquick1/cppextensions/plugins/plugins.qml b/examples/declarative/qtquick1/cppextensions/plugins/plugins.qml new file mode 100644 index 0000000000..a61af15c9f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/plugins.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import com.nokia.TimeExample 1.0 // import types from the plugin + +Clock { // this class is defined in QML (com/nokia/TimeExample/Clock.qml) + + Time { // this class is defined in C++ (plugin.cpp) + id: time + } + + hours: time.hour + minutes: time.minute +} +//![0] diff --git a/examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject b/examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro similarity index 79% rename from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro index 32e81fe557..77c6b2a287 100644 --- a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro @@ -2,7 +2,7 @@ TEMPLATE = app TARGET = DEPENDPATH += . INCLUDEPATH += . -QT += declarative qtquick1 +QT += declarative SOURCES += main.cpp RESOURCES += layoutitem.qrc diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/main.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/main.cpp similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/main.cpp rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/main.cpp diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp similarity index 98% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp index 6525cb31c7..b1fe621e36 100644 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp @@ -41,7 +41,7 @@ #include "gridlayout.h" #include -#include +#include #include diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.pro b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.pro similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.pro rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.pro diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp similarity index 98% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp index f8d08c2f4b..d310dae9b9 100644 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp @@ -41,7 +41,7 @@ #include "linearlayout.h" #include -#include +#include #include diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml similarity index 100% rename from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml rename to examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml diff --git a/examples/declarative/cppextensions/qwidgets/QWidgets/qmldir b/examples/declarative/qtquick1/cppextensions/qwidgets/QWidgets/qmldir similarity index 100% rename from examples/declarative/cppextensions/qwidgets/QWidgets/qmldir rename to examples/declarative/qtquick1/cppextensions/qwidgets/QWidgets/qmldir diff --git a/examples/declarative/cppextensions/qwidgets/README b/examples/declarative/qtquick1/cppextensions/qwidgets/README similarity index 100% rename from examples/declarative/cppextensions/qwidgets/README rename to examples/declarative/qtquick1/cppextensions/qwidgets/README diff --git a/examples/declarative/cppextensions/qwidgets/qwidgets.cpp b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.cpp similarity index 100% rename from examples/declarative/cppextensions/qwidgets/qwidgets.cpp rename to examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.cpp diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro new file mode 100644 index 0000000000..2e610f9914 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro @@ -0,0 +1,24 @@ +TEMPLATE = lib +CONFIG += qt plugin +QT += declarative + +DESTDIR = QWidgets +TARGET = qmlqwidgetsplugin + +SOURCES += qwidgets.cpp + +sources.files += qwidgets.pro qwidgets.cpp qwidgets.qml +sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins +target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins + +INSTALLS += sources target + +symbian:{ + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) + TARGET.EPOCALLOWDLLDATA = 1 + + importFiles.sources = QWidgets/qmlqwidgetsplugin.dll QWidgets/qmldir + importFiles.path = QWidgets + + DEPLOYMENT = importFiles +} diff --git a/examples/declarative/cppextensions/qwidgets/qwidgets.qml b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qml similarity index 100% rename from examples/declarative/cppextensions/qwidgets/qwidgets.qml rename to examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qml diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro new file mode 100644 index 0000000000..b830a88798 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro @@ -0,0 +1,15 @@ +TEMPLATE = app +TARGET = adding +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative + +# Input +SOURCES += main.cpp \ + person.cpp +HEADERS += person.h +RESOURCES += adding.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/adding +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS adding.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/adding +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml new file mode 100644 index 0000000000..65819b2ec6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// ![0] +import People 1.0 + +Person { + name: "Bob Jones" + shoeSize: 12 +} +// ![0] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp new file mode 100644 index 0000000000..3a32c65b9b --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); +//![0] + qmlRegisterType("People", 1,0, "Person"); +//![0] + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + Person *person = qobject_cast(component.create()); + if (person) { + qWarning() << "The person's name is" << person->name(); + qWarning() << "They wear a" << person->shoeSize() << "sized shoe"; + } else { + qWarning() << component.errors(); + } + + return 0; +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp new file mode 100644 index 0000000000..a6b47aabf6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +// ![0] +Person::Person(QObject *parent) +: QObject(parent), m_shoeSize(0) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +int Person::shoeSize() const +{ + return m_shoeSize; +} + +void Person::setShoeSize(int s) +{ + m_shoeSize = s; +} + +// ![0] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h new file mode 100644 index 0000000000..b85c601f8f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include +// ![0] +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize) +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + int shoeSize() const; + void setShoeSize(int); + +private: + QString m_name; + int m_shoeSize; +}; +// ![0] + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro new file mode 100644 index 0000000000..3843528c50 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro @@ -0,0 +1,17 @@ +TEMPLATE = app +TARGET = attached +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp +HEADERS += person.h \ + birthdayparty.h +RESOURCES += attached.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/attached +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS attached.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/attached +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp new file mode 100644 index 0000000000..b1239c0ae6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayPartyAttached::BirthdayPartyAttached(QObject *object) +: QObject(object) +{ +} + +QDate BirthdayPartyAttached::rsvp() const +{ + return m_rsvp; +} + +void BirthdayPartyAttached::setRsvp(const QDate &d) +{ + m_rsvp = d; +} + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + m_host = c; +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} + +BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object) +{ + return new BirthdayPartyAttached(object); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h new file mode 100644 index 0000000000..eaec771ef6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include +#include "person.h" + +class BirthdayPartyAttached : public QObject +{ + Q_OBJECT + Q_PROPERTY(QDate rsvp READ rsvp WRITE setRsvp) +public: + BirthdayPartyAttached(QObject *object); + + QDate rsvp() const; + void setRsvp(const QDate &); + +private: + QDate m_rsvp; +}; + +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + + static BirthdayPartyAttached *qmlAttachedProperties(QObject *); +private: + Person *m_host; + QList m_guests; +}; + +QML_DECLARE_TYPEINFO(BirthdayParty, QML_HAS_ATTACHED_PROPERTIES) + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml new file mode 100644 index 0000000000..600678cd61 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +BirthdayParty { + host: Boy { + name: "Bob Jones" + shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } + } + + // ![1] + Boy { + name: "Leo Hodges" + shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } + + BirthdayParty.rsvp: "2009-07-06" + } + // ![1] + Boy { + name: "Jack Smith" + shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } + } + Girl { + name: "Anne Brown" + shoe.size: 7 + shoe.color: "red" + shoe.brand: "Marc Jacobs" + shoe.price: 699.99 + + BirthdayParty.rsvp: "2009-07-01" + } +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp new file mode 100644 index 0000000000..228157c7da --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType(); + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(party->host())) + qWarning() << "He is inviting:"; + else + qWarning() << "She is inviting:"; + + for (int ii = 0; ii < party->guestCount(); ++ii) { + Person *guest = party->guest(ii); + + QDate rsvpDate; + QObject *attached = + qmlAttachedPropertiesObject(guest, false); + if (attached) + rsvpDate = attached->property("rsvp").toDate(); + + if (rsvpDate.isNull()) + qWarning() << " " << guest->name() << "RSVP date: Hasn't RSVP'd"; + else + qWarning() << " " << guest->name() << "RSVP date:" << qPrintable(rsvpDate.toString()); + } + + } else { + qWarning() << component.errors(); + } + + return 0; +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp new file mode 100644 index 0000000000..3be06bd714 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +ShoeDescription::ShoeDescription(QObject *parent) +: QObject(parent), m_size(0), m_price(0) +{ +} + +int ShoeDescription::size() const +{ + return m_size; +} + +void ShoeDescription::setSize(int s) +{ + m_size = s; +} + +QColor ShoeDescription::color() const +{ + return m_color; +} + +void ShoeDescription::setColor(const QColor &c) +{ + m_color = c; +} + +QString ShoeDescription::brand() const +{ + return m_brand; +} + +void ShoeDescription::setBrand(const QString &b) +{ + m_brand = b; +} + +qreal ShoeDescription::price() const +{ + return m_price; +} + +void ShoeDescription::setPrice(qreal p) +{ + m_price = p; +} + +Person::Person(QObject *parent) +: QObject(parent) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +ShoeDescription *Person::shoe() +{ + return &m_shoe; +} + + +Boy::Boy(QObject * parent) +: Person(parent) +{ +} + + +Girl::Girl(QObject * parent) +: Person(parent) +{ +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h new file mode 100644 index 0000000000..5db160f7ca --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include +#include + +class ShoeDescription : public QObject +{ + Q_OBJECT + Q_PROPERTY(int size READ size WRITE setSize) + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(QString brand READ brand WRITE setBrand) + Q_PROPERTY(qreal price READ price WRITE setPrice) +public: + ShoeDescription(QObject *parent = 0); + + int size() const; + void setSize(int); + + QColor color() const; + void setColor(const QColor &); + + QString brand() const; + void setBrand(const QString &); + + qreal price() const; + void setPrice(qreal); +private: + int m_size; + QColor m_color; + QString m_brand; + qreal m_price; +}; + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(ShoeDescription *shoe READ shoe) +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + ShoeDescription *shoe(); +private: + QString m_name; + ShoeDescription m_shoe; +}; + +class Boy : public Person +{ + Q_OBJECT +public: + Boy(QObject * parent = 0); +}; + +class Girl : public Person +{ + Q_OBJECT +public: + Girl(QObject * parent = 0); +}; + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro new file mode 100644 index 0000000000..f1e38a9b5e --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro @@ -0,0 +1,19 @@ +TEMPLATE = app +TARGET = binding +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp \ + happybirthdaysong.cpp +HEADERS += person.h \ + birthdayparty.h \ + happybirthdaysong.h +RESOURCES += binding.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/binding +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS binding.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/binding +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp new file mode 100644 index 0000000000..3120f81a0a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayPartyAttached::BirthdayPartyAttached(QObject *object) +: QObject(object) +{ +} + +QDate BirthdayPartyAttached::rsvp() const +{ + return m_rsvp; +} + +void BirthdayPartyAttached::setRsvp(const QDate &d) +{ + if (d != m_rsvp) { + m_rsvp = d; + emit rsvpChanged(); + } +} + + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + if (c == m_host) return; + m_host = c; + emit hostChanged(); +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} + +void BirthdayParty::startParty() +{ + QTime time = QTime::currentTime(); + emit partyStarted(time); +} + +QString BirthdayParty::announcement() const +{ + return QString(); +} + +void BirthdayParty::setAnnouncement(const QString &speak) +{ + qWarning() << qPrintable(speak); +} + +BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object) +{ + return new BirthdayPartyAttached(object); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h new file mode 100644 index 0000000000..59249df620 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include +#include +#include "person.h" + +class BirthdayPartyAttached : public QObject +{ + Q_OBJECT + Q_PROPERTY(QDate rsvp READ rsvp WRITE setRsvp NOTIFY rsvpChanged) +public: + BirthdayPartyAttached(QObject *object); + + QDate rsvp() const; + void setRsvp(const QDate &); + +signals: + void rsvpChanged(); + +private: + QDate m_rsvp; +}; + +class BirthdayParty : public QObject +{ + Q_OBJECT +// ![0] + Q_PROPERTY(Person *host READ host WRITE setHost NOTIFY hostChanged) +// ![0] + Q_PROPERTY(QDeclarativeListProperty guests READ guests) + Q_PROPERTY(QString announcement READ announcement WRITE setAnnouncement) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + + QString announcement() const; + void setAnnouncement(const QString &); + + static BirthdayPartyAttached *qmlAttachedProperties(QObject *); + + void startParty(); +signals: + void partyStarted(const QTime &time); + void hostChanged(); + +private: + Person *m_host; + QList m_guests; +}; + +QML_DECLARE_TYPEINFO(BirthdayParty, QML_HAS_ATTACHED_PROPERTIES) + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml new file mode 100644 index 0000000000..e2e7cb330f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +// ![0] +BirthdayParty { + id: theParty + + HappyBirthdaySong on announcement { name: theParty.host.name } + + host: Boy { + name: "Bob Jones" + shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } + } +// ![0] + onPartyStarted: console.log("This party started rockin' at " + time); + + + Boy { + name: "Leo Hodges" + BirthdayParty.rsvp: "2009-07-06" + shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } + } + Boy { + name: "Jack Smith" + shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } + } + Girl { + name: "Anne Brown" + BirthdayParty.rsvp: "2009-07-01" + shoe.size: 7 + shoe.color: "red" + shoe.brand: "Marc Jacobs" + shoe.price: 699.99 + } + +// ![1] +} +// ![1] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp new file mode 100644 index 0000000000..47bcf71182 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "happybirthdaysong.h" +#include + +HappyBirthdaySong::HappyBirthdaySong(QObject *parent) +: QObject(parent), m_line(-1) +{ + setName(QString()); + QTimer *timer = new QTimer(this); + QObject::connect(timer, SIGNAL(timeout()), this, SLOT(advance())); + timer->start(1000); +} + +void HappyBirthdaySong::setTarget(const QDeclarativeProperty &p) +{ + m_target = p; +} + +QString HappyBirthdaySong::name() const +{ + return m_name; +} + +void HappyBirthdaySong::setName(const QString &name) +{ + if (m_name == name) + return; + + m_name = name; + + m_lyrics.clear(); + m_lyrics << "Happy birthday to you,"; + m_lyrics << "Happy birthday to you,"; + m_lyrics << "Happy birthday dear " + m_name + ","; + m_lyrics << "Happy birthday to you!"; + m_lyrics << ""; + + emit nameChanged(); +} + +void HappyBirthdaySong::advance() +{ + m_line = (m_line + 1) % m_lyrics.count(); + + m_target.write(m_lyrics.at(m_line)); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h new file mode 100644 index 0000000000..e288d75616 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef HAPPYBIRTHDAYSONG_H +#define HAPPYBIRTHDAYSONG_H + +#include +#include + +#include + +class HappyBirthdaySong : public QObject, public QDeclarativePropertyValueSource +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_INTERFACES(QDeclarativePropertyValueSource) +public: + HappyBirthdaySong(QObject *parent = 0); + + virtual void setTarget(const QDeclarativeProperty &); + + QString name() const; + void setName(const QString &); + +private slots: + void advance(); + +signals: + void nameChanged(); +private: + int m_line; + QStringList m_lyrics; + QDeclarativeProperty m_target; + QString m_name; +}; + +#endif // HAPPYBIRTHDAYSONG_H + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp new file mode 100644 index 0000000000..ac8d0ca18b --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "happybirthdaysong.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType("People", 1,0, "HappyBirthdaySong"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(party->host())) + qWarning() << "He is inviting:"; + else + qWarning() << "She is inviting:"; + + for (int ii = 0; ii < party->guestCount(); ++ii) { + Person *guest = party->guest(ii); + + QDate rsvpDate; + QObject *attached = + qmlAttachedPropertiesObject(guest, false); + if (attached) + rsvpDate = attached->property("rsvp").toDate(); + + if (rsvpDate.isNull()) + qWarning() << " " << guest->name() << "RSVP date: Hasn't RSVP'd"; + else + qWarning() << " " << guest->name() << "RSVP date:" << qPrintable(rsvpDate.toString()); + } + + party->startParty(); + } else { + qWarning() << component.errors(); + } + + return app.exec(); +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp new file mode 100644 index 0000000000..28a5e6d874 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +ShoeDescription::ShoeDescription(QObject *parent) +: QObject(parent), m_size(0), m_price(0) +{ +} + +int ShoeDescription::size() const +{ + return m_size; +} + +void ShoeDescription::setSize(int s) +{ + if (m_size == s) + return; + + m_size = s; + emit shoeChanged(); +} + +QColor ShoeDescription::color() const +{ + return m_color; +} + +void ShoeDescription::setColor(const QColor &c) +{ + if (m_color == c) + return; + + m_color = c; + emit shoeChanged(); +} + +QString ShoeDescription::brand() const +{ + return m_brand; +} + +void ShoeDescription::setBrand(const QString &b) +{ + if (m_brand == b) + return; + + m_brand = b; + emit shoeChanged(); +} + +qreal ShoeDescription::price() const +{ + return m_price; +} + +void ShoeDescription::setPrice(qreal p) +{ + if (m_price == p) + return; + + m_price = p; + emit shoeChanged(); +} + +Person::Person(QObject *parent) +: QObject(parent) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + if (m_name == n) + return; + + m_name = n; + emit nameChanged(); +} + +ShoeDescription *Person::shoe() +{ + return &m_shoe; +} + + +Boy::Boy(QObject * parent) +: Person(parent) +{ +} + + +Girl::Girl(QObject * parent) +: Person(parent) +{ +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h new file mode 100644 index 0000000000..94d3eb4b69 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include +#include + +class ShoeDescription : public QObject +{ + Q_OBJECT + Q_PROPERTY(int size READ size WRITE setSize NOTIFY shoeChanged) + Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY shoeChanged) + Q_PROPERTY(QString brand READ brand WRITE setBrand NOTIFY shoeChanged) + Q_PROPERTY(qreal price READ price WRITE setPrice NOTIFY shoeChanged) +public: + ShoeDescription(QObject *parent = 0); + + int size() const; + void setSize(int); + + QColor color() const; + void setColor(const QColor &); + + QString brand() const; + void setBrand(const QString &); + + qreal price() const; + void setPrice(qreal); +signals: + void shoeChanged(); + +private: + int m_size; + QColor m_color; + QString m_brand; + qreal m_price; +}; + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) +// ![0] + Q_PROPERTY(ShoeDescription *shoe READ shoe CONSTANT) +// ![0] +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + ShoeDescription *shoe(); +signals: + void nameChanged(); + +private: + QString m_name; + ShoeDescription m_shoe; +}; + +class Boy : public Person +{ + Q_OBJECT +public: + Boy(QObject * parent = 0); +}; + +class Girl : public Person +{ + Q_OBJECT +public: + Girl(QObject * parent = 0); +}; + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp new file mode 100644 index 0000000000..cde8d4172a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + m_host = c; +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h new file mode 100644 index 0000000000..d1aaee81dd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include "person.h" + +class BirthdayParty : public QObject +{ + Q_OBJECT +// ![0] + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) +// ![0] +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +private: + Person *m_host; + QList m_guests; +}; + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro new file mode 100644 index 0000000000..d85a3088ae --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro @@ -0,0 +1,17 @@ +TEMPLATE = app +TARGET = coercion +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp +HEADERS += person.h \ + birthdayparty.h +RESOURCES += coercion.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/coercion +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS coercion.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/coercion +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml new file mode 100644 index 0000000000..c12b95f4cc --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +// ![0] +BirthdayParty { + host: Boy { + name: "Bob Jones" + shoeSize: 12 + } + guests: [ + Boy { name: "Leo Hodges" }, + Boy { name: "Jack Smith" }, + Girl { name: "Anne Brown" } + ] +} +// ![0] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp new file mode 100644 index 0000000000..01b39a3f93 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); +// ![0] + qmlRegisterType(); +// ![0] + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(party->host())) + qWarning() << "He is inviting:"; + else + qWarning() << "She is inviting:"; + + for (int ii = 0; ii < party->guestCount(); ++ii) + qWarning() << " " << party->guest(ii)->name(); + } else { + qWarning() << component.errors(); + } + + return 0; +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp new file mode 100644 index 0000000000..add92f05c7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +Person::Person(QObject *parent) +: QObject(parent), m_shoeSize(0) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +int Person::shoeSize() const +{ + return m_shoeSize; +} + +void Person::setShoeSize(int s) +{ + m_shoeSize = s; +} + +// ![1] +Boy::Boy(QObject * parent) +: Person(parent) +{ +} + + +Girl::Girl(QObject * parent) +: Person(parent) +{ +} + +// ![1] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h new file mode 100644 index 0000000000..db314a3ea5 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize) +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + int shoeSize() const; + void setShoeSize(int); +private: + QString m_name; + int m_shoeSize; +}; + + +// ![0] +class Boy : public Person +{ + Q_OBJECT +public: + Boy(QObject * parent = 0); +}; + + +class Girl : public Person +{ + Q_OBJECT +public: + Girl(QObject * parent = 0); +}; + +// ![0] + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp new file mode 100644 index 0000000000..cde8d4172a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + m_host = c; +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h new file mode 100644 index 0000000000..2392ff0826 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include "person.h" + +// ![0] +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +private: + Person *m_host; + QList m_guests; +}; +// ![0] + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro new file mode 100644 index 0000000000..d5519f490e --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro @@ -0,0 +1,17 @@ +TEMPLATE = app +TARGET = default +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative qtquick1 + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp +HEADERS += person.h \ + birthdayparty.h +RESOURCES += default.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/default +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS default.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/default +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml new file mode 100644 index 0000000000..b5895ae8a4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +// ![0] +BirthdayParty { + host: Boy { + name: "Bob Jones" + shoeSize: 12 + } + + Boy { name: "Leo Hodges" } + Boy { name: "Jack Smith" } + Girl { name: "Anne Brown" } +} +// ![0] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp new file mode 100644 index 0000000000..4823291c1c --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(party->host())) + qWarning() << "He is inviting:"; + else + qWarning() << "She is inviting:"; + + for (int ii = 0; ii < party->guestCount(); ++ii) + qWarning() << " " << party->guest(ii)->name(); + } else { + qWarning() << component.errors(); + } + + return 0; +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp new file mode 100644 index 0000000000..2d1005d407 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +Person::Person(QObject *parent) +: QObject(parent), m_shoeSize(0) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +int Person::shoeSize() const +{ + return m_shoeSize; +} + +void Person::setShoeSize(int s) +{ + m_shoeSize = s; +} + + +Boy::Boy(QObject * parent) +: Person(parent) +{ +} + + +Girl::Girl(QObject * parent) +: Person(parent) +{ +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h new file mode 100644 index 0000000000..9006fcaf8d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize) +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + int shoeSize() const; + void setShoeSize(int); +private: + QString m_name; + int m_shoeSize; +}; + +class Boy : public Person +{ + Q_OBJECT +public: + Boy(QObject * parent = 0); +}; + +class Girl : public Person +{ + Q_OBJECT +public: + Girl(QObject * parent = 0); +}; + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml new file mode 100644 index 0000000000..21dad3614f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +// ![0] +QLineEdit { + leftMargin: 20 +} +// ![0] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro new file mode 100644 index 0000000000..f3e4284037 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro @@ -0,0 +1,15 @@ +TEMPLATE = app +TARGET = extended +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative qtquick1 + +# Input +SOURCES += main.cpp \ + lineedit.cpp +HEADERS += lineedit.h +RESOURCES += extended.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/extended +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS extended.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/extended +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp new file mode 100644 index 0000000000..42354c5b5a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "lineedit.h" + +LineEditExtension::LineEditExtension(QObject *object) +: QObject(object), m_lineedit(static_cast(object)) +{ +} + +int LineEditExtension::leftMargin() const +{ + int l, r, t, b; + m_lineedit->getTextMargins(&l, &t, &r, &b); + return l; +} + +void LineEditExtension::setLeftMargin(int m) +{ + int l, r, t, b; + m_lineedit->getTextMargins(&l, &t, &r, &b); + m_lineedit->setTextMargins(m, t, r, b); +} + +int LineEditExtension::rightMargin() const +{ + int l, r, t, b; + m_lineedit->getTextMargins(&l, &t, &r, &b); + return r; +} + +void LineEditExtension::setRightMargin(int m) +{ + int l, r, t, b; + m_lineedit->getTextMargins(&l, &t, &r, &b); + m_lineedit->setTextMargins(l, t, m, b); +} + +int LineEditExtension::topMargin() const +{ + int l, r, t, b; + m_lineedit->getTextMargins(&l, &t, &r, &b); + return t; +} + +void LineEditExtension::setTopMargin(int m) +{ + int l, r, t, b; + m_lineedit->getTextMargins(&l, &t, &r, &b); + m_lineedit->setTextMargins(l, m, r, b); +} + +int LineEditExtension::bottomMargin() const +{ + int l, r, t, b; + m_lineedit->getTextMargins(&l, &t, &r, &b); + return b; +} + +void LineEditExtension::setBottomMargin(int m) +{ + int l, r, t, b; + m_lineedit->getTextMargins(&l, &t, &r, &b); + m_lineedit->setTextMargins(l, t, r, m); +} + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h new file mode 100644 index 0000000000..f7a08272e1 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef LINEEDIT_H +#define LINEEDIT_H + +#include + +class LineEditExtension : public QObject +{ + Q_OBJECT + Q_PROPERTY(int leftMargin READ leftMargin WRITE setLeftMargin NOTIFY marginsChanged) + Q_PROPERTY(int rightMargin READ rightMargin WRITE setRightMargin NOTIFY marginsChanged) + Q_PROPERTY(int topMargin READ topMargin WRITE setTopMargin NOTIFY marginsChanged) + Q_PROPERTY(int bottomMargin READ bottomMargin WRITE setBottomMargin NOTIFY marginsChanged) +public: + LineEditExtension(QObject *); + + int leftMargin() const; + void setLeftMargin(int); + + int rightMargin() const; + void setRightMargin(int); + + int topMargin() const; + void setTopMargin(int); + + int bottomMargin() const; + void setBottomMargin(int); +signals: + void marginsChanged(); + +private: + QLineEdit *m_lineedit; +}; + +#endif // LINEEDIT_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp new file mode 100644 index 0000000000..414106cd96 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include +#include "lineedit.h" + +int main(int argc, char ** argv) +{ + QApplication app(argc, argv); + + qmlRegisterExtendedType("People", 1,0, "QLineEdit"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + QLineEdit *edit = qobject_cast(component.create()); + + if (edit) { + edit->show(); + return app.exec(); + } else { + qWarning() << component.errors(); + return 0; + } +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp new file mode 100644 index 0000000000..cde8d4172a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + m_host = c; +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h new file mode 100644 index 0000000000..47ed8f5fdf --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include "person.h" + +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +private: + Person *m_host; + QList m_guests; +}; + + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml new file mode 100644 index 0000000000..d97c9a4a72 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +// ![0] +BirthdayParty { + host: Boy { + name: "Bob Jones" + shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } + } + + Boy { + name: "Leo Hodges" + shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } + } + // ![1] + Boy { + name: "Jack Smith" + shoe { + size: 8 + color: "blue" + brand: "Puma" + price: 19.95 + } + } + // ![1] + Girl { + name: "Anne Brown" + shoe.size: 7 + shoe.color: "red" + shoe.brand: "Marc Jacobs" + shoe.price: 699.99 + } +} +// ![0] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro new file mode 100644 index 0000000000..ca6deeac4a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro @@ -0,0 +1,17 @@ +TEMPLATE = app +TARGET = grouped +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp +HEADERS += person.h \ + birthdayparty.h +RESOURCES += grouped.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/grouped +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS grouped.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/grouped +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp new file mode 100644 index 0000000000..ea7d0ae040 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(party->host())) + qWarning() << "He is inviting:"; + else + qWarning() << "She is inviting:"; + + Person *bestShoe = 0; + for (int ii = 0; ii < party->guestCount(); ++ii) { + Person *guest = party->guest(ii); + qWarning() << " " << guest->name(); + + if (!bestShoe || bestShoe->shoe()->price() < guest->shoe()->price()) + bestShoe = guest; + } + if (bestShoe) + qWarning() << bestShoe->name() << "is wearing the best shoes!"; + + } else { + qWarning() << component.errors(); + } + + return 0; +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp new file mode 100644 index 0000000000..3be06bd714 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +ShoeDescription::ShoeDescription(QObject *parent) +: QObject(parent), m_size(0), m_price(0) +{ +} + +int ShoeDescription::size() const +{ + return m_size; +} + +void ShoeDescription::setSize(int s) +{ + m_size = s; +} + +QColor ShoeDescription::color() const +{ + return m_color; +} + +void ShoeDescription::setColor(const QColor &c) +{ + m_color = c; +} + +QString ShoeDescription::brand() const +{ + return m_brand; +} + +void ShoeDescription::setBrand(const QString &b) +{ + m_brand = b; +} + +qreal ShoeDescription::price() const +{ + return m_price; +} + +void ShoeDescription::setPrice(qreal p) +{ + m_price = p; +} + +Person::Person(QObject *parent) +: QObject(parent) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +ShoeDescription *Person::shoe() +{ + return &m_shoe; +} + + +Boy::Boy(QObject * parent) +: Person(parent) +{ +} + + +Girl::Girl(QObject * parent) +: Person(parent) +{ +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h new file mode 100644 index 0000000000..5efbd80c32 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include +#include + +class ShoeDescription : public QObject +{ + Q_OBJECT + Q_PROPERTY(int size READ size WRITE setSize) + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(QString brand READ brand WRITE setBrand) + Q_PROPERTY(qreal price READ price WRITE setPrice) +public: + ShoeDescription(QObject *parent = 0); + + int size() const; + void setSize(int); + + QColor color() const; + void setColor(const QColor &); + + QString brand() const; + void setBrand(const QString &); + + qreal price() const; + void setPrice(qreal); +private: + int m_size; + QColor m_color; + QString m_brand; + qreal m_price; +}; + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) +// ![1] + Q_PROPERTY(ShoeDescription *shoe READ shoe) +// ![1] +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + ShoeDescription *shoe(); +private: + QString m_name; + ShoeDescription m_shoe; +}; + +class Boy : public Person +{ + Q_OBJECT +public: + Boy(QObject * parent = 0); +}; + +class Girl : public Person +{ + Q_OBJECT +public: + Girl(QObject * parent = 0); +}; + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp new file mode 100644 index 0000000000..51343cfa7c --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +// ![0] +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + m_host = c; +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} + +void BirthdayParty::invite(const QString &name) +{ + Person *person = new Person(this); + person->setName(name); + m_guests.append(person); +} +// ![0] + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h new file mode 100644 index 0000000000..e49bffd3e4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include "person.h" + +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +// ![0] + Q_INVOKABLE void invite(const QString &name); +// ![0] + +private: + Person *m_host; + QList m_guests; +}; + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml new file mode 100644 index 0000000000..868473a7c4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import People 1.0 + +// ![0] +BirthdayParty { + host: Person { + name: "Bob Jones" + shoeSize: 12 + } + guests: [ + Person { name: "Leo Hodges" }, + Person { name: "Jack Smith" }, + Person { name: "Anne Brown" } + ] + + Component.onCompleted: invite("William Green") +} +// ![0] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp new file mode 100644 index 0000000000..90e1fad5d4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType("People", 1,0, "Person"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + qWarning() << "They are inviting:"; + for (int ii = 0; ii < party->guestCount(); ++ii) + qWarning() << " " << party->guest(ii)->name(); + } else { + qWarning() << component.errors(); + } + + return 0; +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro new file mode 100644 index 0000000000..c516049fe2 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro @@ -0,0 +1,18 @@ +TEMPLATE = app +TARGET = methods +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative qtquick1 + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp +HEADERS += person.h \ + birthdayparty.h +RESOURCES += methods.qrc + +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/methods +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS methods.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/methods +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp new file mode 100644 index 0000000000..600b05fef6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +Person::Person(QObject *parent) +: QObject(parent), m_shoeSize(0) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +int Person::shoeSize() const +{ + return m_shoeSize; +} + +void Person::setShoeSize(int s) +{ + m_shoeSize = s; +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h new file mode 100644 index 0000000000..8545a3eabd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize) +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + int shoeSize() const; + void setShoeSize(int); +private: + QString m_name; + int m_shoeSize; +}; + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp new file mode 100644 index 0000000000..bdd0105fad --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +// ![0] +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + m_host = c; +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} +// ![0] + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h new file mode 100644 index 0000000000..0227bb64f3 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include "person.h" + +// ![0] +class BirthdayParty : public QObject +{ + Q_OBJECT +// ![0] +// ![1] + Q_PROPERTY(Person *host READ host WRITE setHost) +// ![1] +// ![2] + Q_PROPERTY(QDeclarativeListProperty guests READ guests) +// ![2] +// ![3] +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +private: + Person *m_host; + QList m_guests; +}; +// ![3] + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml new file mode 100644 index 0000000000..200492e148 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +// ![0] +BirthdayParty { + host: Person { + name: "Bob Jones" + shoeSize: 12 + } + guests: [ + Person { name: "Leo Hodges" }, + Person { name: "Jack Smith" }, + Person { name: "Anne Brown" } + ] +} +// ![0] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp new file mode 100644 index 0000000000..90e1fad5d4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType("People", 1,0, "Person"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + qWarning() << "They are inviting:"; + for (int ii = 0; ii < party->guestCount(); ++ii) + qWarning() << " " << party->guest(ii)->name(); + } else { + qWarning() << component.errors(); + } + + return 0; +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp new file mode 100644 index 0000000000..600b05fef6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +Person::Person(QObject *parent) +: QObject(parent), m_shoeSize(0) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +int Person::shoeSize() const +{ + return m_shoeSize; +} + +void Person::setShoeSize(int s) +{ + m_shoeSize = s; +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h new file mode 100644 index 0000000000..8545a3eabd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize) +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + int shoeSize() const; + void setShoeSize(int); +private: + QString m_name; + int m_shoeSize; +}; + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro new file mode 100644 index 0000000000..4f0ff882b3 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro @@ -0,0 +1,18 @@ +TEMPLATE = app +TARGET = properties +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative qtquick1 + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp +HEADERS += person.h \ + birthdayparty.h +RESOURCES += properties.qrc + +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/properties +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS properties.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/properties +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro new file mode 100644 index 0000000000..505cefd331 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro @@ -0,0 +1,14 @@ +TEMPLATE = subdirs + +SUBDIRS += \ + adding \ + attached \ + binding \ + coercion \ + default \ + extended \ + grouped \ + properties \ + signal \ + valuesource \ + methods diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp new file mode 100644 index 0000000000..8f904bb445 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayPartyAttached::BirthdayPartyAttached(QObject *object) +: QObject(object) +{ +} + +QDate BirthdayPartyAttached::rsvp() const +{ + return m_rsvp; +} + +void BirthdayPartyAttached::setRsvp(const QDate &d) +{ + m_rsvp = d; +} + + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + m_host = c; +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} + +void BirthdayParty::startParty() +{ + QTime time = QTime::currentTime(); + emit partyStarted(time); +} + +BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object) +{ + return new BirthdayPartyAttached(object); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h new file mode 100644 index 0000000000..51972fcb4b --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include +#include "person.h" + +class BirthdayPartyAttached : public QObject +{ + Q_OBJECT + Q_PROPERTY(QDate rsvp READ rsvp WRITE setRsvp) +public: + BirthdayPartyAttached(QObject *object); + + QDate rsvp() const; + void setRsvp(const QDate &); + +private: + QDate m_rsvp; +}; + +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + + static BirthdayPartyAttached *qmlAttachedProperties(QObject *); + + void startParty(); +// ![0] +signals: + void partyStarted(const QTime &time); +// ![0] + +private: + Person *m_host; + QList m_guests; +}; +QML_DECLARE_TYPEINFO(BirthdayParty, QML_HAS_ATTACHED_PROPERTIES) + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml new file mode 100644 index 0000000000..5b037983f2 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +// ![0] +BirthdayParty { + onPartyStarted: console.log("This party started rockin' at " + time); +// ![0] + + host: Boy { + name: "Bob Jones" + shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } + } + + Boy { + name: "Leo Hodges" + BirthdayParty.rsvp: "2009-07-06" + shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } + } + Boy { + name: "Jack Smith" + shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } + } + Girl { + name: "Anne Brown" + BirthdayParty.rsvp: "2009-07-01" + shoe.size: 7 + shoe.color: "red" + shoe.brand: "Marc Jacobs" + shoe.price: 699.99 + } +// ![1] +} +// ![1] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp new file mode 100644 index 0000000000..f1a8f1c0a9 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType(); + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(party->host())) + qWarning() << "He is inviting:"; + else + qWarning() << "She is inviting:"; + + for (int ii = 0; ii < party->guestCount(); ++ii) { + Person *guest = party->guest(ii); + + QDate rsvpDate; + QObject *attached = + qmlAttachedPropertiesObject(guest, false); + if (attached) + rsvpDate = attached->property("rsvp").toDate(); + + if (rsvpDate.isNull()) + qWarning() << " " << guest->name() << "RSVP date: Hasn't RSVP'd"; + else + qWarning() << " " << guest->name() << "RSVP date:" << qPrintable(rsvpDate.toString()); + } + + party->startParty(); + } else { + qWarning() << component.errors(); + } + + return 0; +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp new file mode 100644 index 0000000000..3be06bd714 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +ShoeDescription::ShoeDescription(QObject *parent) +: QObject(parent), m_size(0), m_price(0) +{ +} + +int ShoeDescription::size() const +{ + return m_size; +} + +void ShoeDescription::setSize(int s) +{ + m_size = s; +} + +QColor ShoeDescription::color() const +{ + return m_color; +} + +void ShoeDescription::setColor(const QColor &c) +{ + m_color = c; +} + +QString ShoeDescription::brand() const +{ + return m_brand; +} + +void ShoeDescription::setBrand(const QString &b) +{ + m_brand = b; +} + +qreal ShoeDescription::price() const +{ + return m_price; +} + +void ShoeDescription::setPrice(qreal p) +{ + m_price = p; +} + +Person::Person(QObject *parent) +: QObject(parent) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +ShoeDescription *Person::shoe() +{ + return &m_shoe; +} + + +Boy::Boy(QObject * parent) +: Person(parent) +{ +} + + +Girl::Girl(QObject * parent) +: Person(parent) +{ +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h new file mode 100644 index 0000000000..5db160f7ca --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include +#include + +class ShoeDescription : public QObject +{ + Q_OBJECT + Q_PROPERTY(int size READ size WRITE setSize) + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(QString brand READ brand WRITE setBrand) + Q_PROPERTY(qreal price READ price WRITE setPrice) +public: + ShoeDescription(QObject *parent = 0); + + int size() const; + void setSize(int); + + QColor color() const; + void setColor(const QColor &); + + QString brand() const; + void setBrand(const QString &); + + qreal price() const; + void setPrice(qreal); +private: + int m_size; + QColor m_color; + QString m_brand; + qreal m_price; +}; + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(ShoeDescription *shoe READ shoe) +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + ShoeDescription *shoe(); +private: + QString m_name; + ShoeDescription m_shoe; +}; + +class Boy : public Person +{ + Q_OBJECT +public: + Boy(QObject * parent = 0); +}; + +class Girl : public Person +{ + Q_OBJECT +public: + Girl(QObject * parent = 0); +}; + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro new file mode 100644 index 0000000000..7feed89a73 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro @@ -0,0 +1,17 @@ +TEMPLATE = app +TARGET = signal +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp +HEADERS += person.h \ + birthdayparty.h +RESOURCES += signal.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/signal +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS signal.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/signal +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp new file mode 100644 index 0000000000..a9df5baca2 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "birthdayparty.h" + +BirthdayPartyAttached::BirthdayPartyAttached(QObject *object) +: QObject(object) +{ +} + +QDate BirthdayPartyAttached::rsvp() const +{ + return m_rsvp; +} + +void BirthdayPartyAttached::setRsvp(const QDate &d) +{ + m_rsvp = d; +} + + +BirthdayParty::BirthdayParty(QObject *parent) +: QObject(parent), m_host(0) +{ +} + +Person *BirthdayParty::host() const +{ + return m_host; +} + +void BirthdayParty::setHost(Person *c) +{ + m_host = c; +} + +QDeclarativeListProperty BirthdayParty::guests() +{ + return QDeclarativeListProperty(this, m_guests); +} + +int BirthdayParty::guestCount() const +{ + return m_guests.count(); +} + +Person *BirthdayParty::guest(int index) const +{ + return m_guests.at(index); +} + +void BirthdayParty::startParty() +{ + QTime time = QTime::currentTime(); + emit partyStarted(time); +} + +QString BirthdayParty::announcement() const +{ + return QString(); +} + +void BirthdayParty::setAnnouncement(const QString &speak) +{ + qWarning() << qPrintable(speak); +} + +BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object) +{ + return new BirthdayPartyAttached(object); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h new file mode 100644 index 0000000000..dfe3bd66ac --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BIRTHDAYPARTY_H +#define BIRTHDAYPARTY_H + +#include +#include +#include +#include +#include "person.h" + +class BirthdayPartyAttached : public QObject +{ + Q_OBJECT + Q_PROPERTY(QDate rsvp READ rsvp WRITE setRsvp) +public: + BirthdayPartyAttached(QObject *object); + + QDate rsvp() const; + void setRsvp(const QDate &); + +private: + QDate m_rsvp; +}; + +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) +// ![0] + Q_PROPERTY(QString announcement READ announcement WRITE setAnnouncement) +// ![0] + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + + QString announcement() const; + void setAnnouncement(const QString &); + + static BirthdayPartyAttached *qmlAttachedProperties(QObject *); + + void startParty(); +signals: + void partyStarted(const QTime &time); + +private: + Person *m_host; + QList m_guests; +}; +QML_DECLARE_TYPEINFO(BirthdayParty, QML_HAS_ATTACHED_PROPERTIES) + +#endif // BIRTHDAYPARTY_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml new file mode 100644 index 0000000000..9c63aa4269 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import People 1.0 + +// ![0] +BirthdayParty { + HappyBirthdaySong on announcement { name: "Bob Jones" } +// ![0] + + onPartyStarted: console.log("This party started rockin' at " + time); + + + host: Boy { + name: "Bob Jones" + shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } + } + + Boy { + name: "Leo Hodges" + BirthdayParty.rsvp: "2009-07-06" + shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } + } + Boy { + name: "Jack Smith" + shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } + } + Girl { + name: "Anne Brown" + BirthdayParty.rsvp: "2009-07-01" + shoe.size: 7 + shoe.color: "red" + shoe.brand: "Marc Jacobs" + shoe.price: 699.99 + } + +// ![1] +} +// ![1] diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp new file mode 100644 index 0000000000..e3f0222c3d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "happybirthdaysong.h" +#include + +HappyBirthdaySong::HappyBirthdaySong(QObject *parent) +: QObject(parent), m_line(-1) +{ + setName(QString()); + QTimer *timer = new QTimer(this); + QObject::connect(timer, SIGNAL(timeout()), this, SLOT(advance())); + timer->start(1000); +} + +void HappyBirthdaySong::setTarget(const QDeclarativeProperty &p) +{ + m_target = p; +} + +QString HappyBirthdaySong::name() const +{ + return m_name; +} + +void HappyBirthdaySong::setName(const QString &name) +{ + m_name = name; + + m_lyrics.clear(); + m_lyrics << "Happy birthday to you,"; + m_lyrics << "Happy birthday to you,"; + m_lyrics << "Happy birthday dear " + m_name + ","; + m_lyrics << "Happy birthday to you!"; + m_lyrics << ""; +} + +void HappyBirthdaySong::advance() +{ + m_line = (m_line + 1) % m_lyrics.count(); + + m_target.write(m_lyrics.at(m_line)); +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h new file mode 100644 index 0000000000..b3cd3f41a3 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef HAPPYBIRTHDAYSONG_H +#define HAPPYBIRTHDAYSONG_H + +#include +#include +#include + +#include + +// ![0] +class HappyBirthdaySong : public QObject, public QDeclarativePropertyValueSource +{ + Q_OBJECT + Q_INTERFACES(QDeclarativePropertyValueSource) +// ![0] + Q_PROPERTY(QString name READ name WRITE setName) +// ![1] +public: + HappyBirthdaySong(QObject *parent = 0); + + virtual void setTarget(const QDeclarativeProperty &); +// ![1] + + QString name() const; + void setName(const QString &); + +private slots: + void advance(); + +private: + int m_line; + QStringList m_lyrics; + QDeclarativeProperty m_target; + QString m_name; +// ![2] +}; +// ![2] + +#endif // HAPPYBIRTHDAYSONG_H + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp new file mode 100644 index 0000000000..3515f5131d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include "birthdayparty.h" +#include "happybirthdaysong.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType(); + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType("People", 1,0, "HappyBirthdaySong"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(party->host())) + qWarning() << "He is inviting:"; + else + qWarning() << "She is inviting:"; + + for (int ii = 0; ii < party->guestCount(); ++ii) { + Person *guest = party->guest(ii); + + QDate rsvpDate; + QObject *attached = + qmlAttachedPropertiesObject(guest, false); + if (attached) + rsvpDate = attached->property("rsvp").toDate(); + + if (rsvpDate.isNull()) + qWarning() << " " << guest->name() << "RSVP date: Hasn't RSVP'd"; + else + qWarning() << " " << guest->name() << "RSVP date:" << qPrintable(rsvpDate.toString()); + } + + party->startParty(); + } else { + qWarning() << component.errors(); + } + + return app.exec(); +} diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp new file mode 100644 index 0000000000..3be06bd714 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "person.h" + +ShoeDescription::ShoeDescription(QObject *parent) +: QObject(parent), m_size(0), m_price(0) +{ +} + +int ShoeDescription::size() const +{ + return m_size; +} + +void ShoeDescription::setSize(int s) +{ + m_size = s; +} + +QColor ShoeDescription::color() const +{ + return m_color; +} + +void ShoeDescription::setColor(const QColor &c) +{ + m_color = c; +} + +QString ShoeDescription::brand() const +{ + return m_brand; +} + +void ShoeDescription::setBrand(const QString &b) +{ + m_brand = b; +} + +qreal ShoeDescription::price() const +{ + return m_price; +} + +void ShoeDescription::setPrice(qreal p) +{ + m_price = p; +} + +Person::Person(QObject *parent) +: QObject(parent) +{ +} + +QString Person::name() const +{ + return m_name; +} + +void Person::setName(const QString &n) +{ + m_name = n; +} + +ShoeDescription *Person::shoe() +{ + return &m_shoe; +} + + +Boy::Boy(QObject * parent) +: Person(parent) +{ +} + + +Girl::Girl(QObject * parent) +: Person(parent) +{ +} + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h new file mode 100644 index 0000000000..5db160f7ca --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PERSON_H +#define PERSON_H + +#include +#include + +class ShoeDescription : public QObject +{ + Q_OBJECT + Q_PROPERTY(int size READ size WRITE setSize) + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(QString brand READ brand WRITE setBrand) + Q_PROPERTY(qreal price READ price WRITE setPrice) +public: + ShoeDescription(QObject *parent = 0); + + int size() const; + void setSize(int); + + QColor color() const; + void setColor(const QColor &); + + QString brand() const; + void setBrand(const QString &); + + qreal price() const; + void setPrice(qreal); +private: + int m_size; + QColor m_color; + QString m_brand; + qreal m_price; +}; + +class Person : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(ShoeDescription *shoe READ shoe) +public: + Person(QObject *parent = 0); + + QString name() const; + void setName(const QString &); + + ShoeDescription *shoe(); +private: + QString m_name; + ShoeDescription m_shoe; +}; + +class Boy : public Person +{ + Q_OBJECT +public: + Boy(QObject * parent = 0); +}; + +class Girl : public Person +{ + Q_OBJECT +public: + Girl(QObject * parent = 0); +}; + +#endif // PERSON_H diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro new file mode 100644 index 0000000000..64034a1fe8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro @@ -0,0 +1,19 @@ +TEMPLATE = app +TARGET = valuesource +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative + +# Input +SOURCES += main.cpp \ + person.cpp \ + birthdayparty.cpp \ + happybirthdaysong.cpp +HEADERS += person.h \ + birthdayparty.h \ + happybirthdaysong.h +RESOURCES += valuesource.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/valuesource +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS valuesource.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/valuesource +INSTALLS += target sources diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc new file mode 100644 index 0000000000..e2fa01d5e7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/examples.qmlproject b/examples/declarative/qtquick1/examples.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/examples.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/i18n/i18n.qml b/examples/declarative/qtquick1/i18n/i18n.qml new file mode 100644 index 0000000000..86eafa2b03 --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +// +// The QML runtime automatically loads a translation from the i18n subdirectory of the root +// QML file, based on the system language. +// +// The files are created/updated by running: +// +// lupdate i18n.qml -ts i18n/base.ts +// +// Translations for new languages are created by copying i18n/base.ts to i18n/qml_.ts +// The .ts files can then be edited with Linguist: +// +// linguist i18n/qml_fr.ts +// +// The run-time translation files are then generaeted by running: +// +// lrelease i18n/*.ts +// + +Rectangle { + width: 640; height: 480 + + Column { + anchors.fill: parent; spacing: 20 + + Text { + text: "If a translation is available for the system language (eg. French) then the"+ + " string below will translated (eg. 'Bonjour'). Otherwise it will show 'Hello'." + width: parent.width; wrapMode: Text.WordWrap + } + + Text { + text: qsTr("Hello") + font.pointSize: 25; anchors.horizontalCenter: parent.horizontalCenter + } + } +} diff --git a/examples/declarative/qtquick1/i18n/i18n.qmlproject b/examples/declarative/qtquick1/i18n/i18n.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/i18n/i18n/base.ts b/examples/declarative/qtquick1/i18n/i18n/base.ts new file mode 100644 index 0000000000..82547a1f93 --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n/base.ts @@ -0,0 +1,12 @@ + + + + + i18n + + + Hello + + + + diff --git a/examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts b/examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts new file mode 100644 index 0000000000..e991affe7f --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts @@ -0,0 +1,12 @@ + + + + + i18n + + + Hello + G'day + + + diff --git a/examples/declarative/qtquick1/i18n/i18n/qml_fr.ts b/examples/declarative/qtquick1/i18n/i18n/qml_fr.ts new file mode 100644 index 0000000000..365abd95c2 --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n/qml_fr.ts @@ -0,0 +1,12 @@ + + + + + i18n + + + Hello + Bonjour + + + diff --git a/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml new file mode 100644 index 0000000000..2ff18c8f72 --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "content" + +Rectangle { + id: page + width: 1030; height: 540 + + Grid { + anchors.centerIn: parent; spacing: 20 + + MyBorderImage { + minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30 + } + + MyBorderImage { + minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat + } + + MyBorderImage { + minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat + } + + MyBorderImage { + minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round + } + + MyBorderImage { + minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200 + source: "content/bw.png"; margin: 10 + } + + MyBorderImage { + minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200 + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat + } + + MyBorderImage { + minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200 + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat + } + + MyBorderImage { + minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200 + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round + } + } +} diff --git a/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml b/examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml new file mode 100644 index 0000000000..8ace6e1bf4 --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Item { + id: container + + property alias horizontalMode: image.horizontalTileMode + property alias verticalMode: image.verticalTileMode + property alias source: image.source + + property int minWidth + property int minHeight + property int maxWidth + property int maxHeight + property int margin + + width: 240; height: 240 + + BorderImage { + id: image; anchors.centerIn: parent + + SequentialAnimation on width { + loops: Animation.Infinite + NumberAnimation { + from: container.minWidth; to: container.maxWidth + duration: 2000; easing.type: Easing.InOutQuad + } + NumberAnimation { + from: container.maxWidth; to: container.minWidth + duration: 2000; easing.type: Easing.InOutQuad + } + } + + SequentialAnimation on height { + loops: Animation.Infinite + NumberAnimation { + from: container.minHeight; to: container.maxHeight + duration: 2000; easing.type: Easing.InOutQuad + } + NumberAnimation { + from: container.maxHeight; to: container.minHeight + duration: 2000; easing.type: Easing.InOutQuad + } + } + + border.top: container.margin + border.left: container.margin + border.bottom: container.margin + border.right: container.margin + } +} diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml b/examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml new file mode 100644 index 0000000000..722beae6ce --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Item { + property alias color : rectangle.color + + BorderImage { + anchors.fill: rectangle + anchors { leftMargin: -6; topMargin: -6; rightMargin: -8; bottomMargin: -8 } + border { left: 10; top: 10; right: 10; bottom: 10 } + source: "shadow.png"; smooth: true + } + + Rectangle { id: rectangle; anchors.fill: parent } +} diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/bw.png b/examples/declarative/qtquick1/imageelements/borderimage/content/bw.png new file mode 100644 index 0000000000000000000000000000000000000000..486eaae96ee3a1842fb842ad1927636431f5d147 GIT binary patch literal 1357 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 a%X|Sp(8DzP)HQkl0000rmu!N<$&1)9p}{ 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/imageelements/imageelements.qmlproject b/examples/declarative/qtquick1/imageelements/imageelements.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/imageelements.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml b/examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml new file mode 100644 index 0000000000..76dc076cf4 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +FocusScope { + id: container + + property bool open: false + + Item { + anchors.fill: parent + + Rectangle { + anchors.fill: parent + color: "#D1DBBD" + focus: true + Keys.onRightPressed: mainView.focus = true + + Text { + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; margins: 30 } + color: "black" + font.pixelSize: 14 + text: "Context Menu" + } + } + } +} diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml b/examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml new file mode 100644 index 0000000000..d199cbc6e2 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +FocusScope { + property alias interactive: gridView.interactive + + onActiveFocusChanged: { + if (activeFocus) + mainView.state = "" + } + + Rectangle { + anchors.fill: parent + clip: true + gradient: Gradient { + GradientStop { position: 0.0; color: "#193441" } + GradientStop { position: 1.0; color: Qt.darker("#193441") } + } + + GridView { + id: gridView + anchors.fill: parent; anchors.leftMargin: 20; anchors.rightMargin: 20 + cellWidth: 152; cellHeight: 152 + focus: true + model: 12 + + KeyNavigation.down: listMenu + KeyNavigation.left: contextMenu + + delegate: Item { + id: container + width: GridView.view.cellWidth; height: GridView.view.cellHeight + + Rectangle { + id: content + color: "transparent" + smooth: true + anchors.fill: parent; anchors.margins: 20; radius: 10 + + Rectangle { color: "#91AA9D"; anchors.fill: parent; anchors.margins: 3; radius: 8; smooth: true } + Image { source: "images/qt-logo.png"; anchors.centerIn: parent; smooth: true } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: true + + onClicked: { + GridView.view.currentIndex = index + container.forceActiveFocus() + } + } + + states: State { + name: "active"; when: container.activeFocus + PropertyChanges { target: content; color: "#FCFFF5"; scale: 1.1 } + } + + transitions: Transition { + NumberAnimation { properties: "scale"; duration: 100 } + } + } + } + } +} diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml b/examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml new file mode 100644 index 0000000000..4a2c89cac1 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +FocusScope { + clip: true + + onActiveFocusChanged: { + if (activeFocus) + mainView.state = "showListViews" + } + + ListView { + id: list1 + y: activeFocus ? 10 : 40; width: parent.width / 3; height: parent.height - 20 + focus: true + KeyNavigation.up: gridMenu; KeyNavigation.left: contextMenu; KeyNavigation.right: list2 + model: 10; cacheBuffer: 200 + delegate: ListViewDelegate {} + + Behavior on y { + NumberAnimation { duration: 600; easing.type: Easing.OutQuint } + } + } + + ListView { + id: list2 + y: activeFocus ? 10 : 40; x: parseInt(parent.width / 3); width: parent.width / 3; height: parent.height - 20 + KeyNavigation.up: gridMenu; KeyNavigation.left: list1; KeyNavigation.right: list3 + model: 10; cacheBuffer: 200 + delegate: ListViewDelegate {} + + Behavior on y { + NumberAnimation { duration: 600; easing.type: Easing.OutQuint } + } + } + + ListView { + id: list3 + y: activeFocus ? 10 : 40; x: parseInt(2 * parent.width / 3); width: parent.width / 3; height: parent.height - 20 + KeyNavigation.up: gridMenu; KeyNavigation.left: list2 + model: 10; cacheBuffer: 200 + delegate: ListViewDelegate {} + + Behavior on y { + NumberAnimation { duration: 600; easing.type: Easing.OutQuint } + } + } + + Rectangle { width: parent.width; height: 1; color: "#D1DBBD" } + + Rectangle { + y: 1; width: parent.width; height: 10 + gradient: Gradient { + GradientStop { position: 0.0; color: "#3E606F" } + GradientStop { position: 1.0; color: "transparent" } + } + } + + Rectangle { + y: parent.height - 10; width: parent.width; height: 10 + gradient: Gradient { + GradientStop { position: 1.0; color: "#3E606F" } + GradientStop { position: 0.0; color: "transparent" } + } + } +} diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml b/examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml new file mode 100644 index 0000000000..88c362495a --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Item { + id: container + width: ListView.view.width; height: 60; anchors.leftMargin: 10; anchors.rightMargin: 10 + + Rectangle { + id: content + anchors.centerIn: parent; width: container.width - 40; height: container.height - 10 + color: "transparent" + smooth: true + radius: 10 + + Rectangle { anchors.fill: parent; anchors.margins: 3; color: "#91AA9D"; smooth: true; radius: 8 } + } + + Text { + id: label + anchors.centerIn: content + text: "List element " + (index + 1) + color: "#193441" + font.pixelSize: 14 + } + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: true + + onClicked: { + ListView.view.currentIndex = index + container.forceActiveFocus() + } + } + + states: State { + name: "active"; when: container.activeFocus + PropertyChanges { target: content; color: "#FCFFF5"; scale: 1.1 } + PropertyChanges { target: label; font.pixelSize: 16 } + } + + transitions: Transition { + NumberAnimation { properties: "scale"; duration: 100 } + } +} diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/images/arrow.png b/examples/declarative/qtquick1/keyinteraction/focus/Core/images/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..14978c2e56e55e8e4fc8b7d944bef836d1d68ab7 GIT binary patch literal 583 zcmV-N0=WH&P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igM} z12+tgH>GL-001I%MObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakAa8CUVIWOmV~41B zLjV8)nMp)JR2b7u%RfjPVHgMC-+PS-8SabWdoQ1Nf{snWPza(!=;GYPv4eX{kO~>Z zK{`lR(MbZ5u~?i7j%}!Qse@S>gj5m;G>{5M$Z+J(uanScf8_bv8keI8nM?-5;SlZn zdw8BF03aeDDF7%UT#h1yVTepRjlYkNK(SQfS-sBDXvE(S5BzX+MBiE()rGusFsflL z2>5z?n_rtvPN!4;YPVV2-zR))Q?ItR`1$gZBsmxiczk+Fqe`Q?U{qP&+~l`rlk@qU zcdZuRR;$cANBGu?QI(BKh3Ab1NivROo;MoQDB?z?!XGy`Op=8CexL7aHRhdTE(ioh z6-HHzYNk{!^Z4Y1B$*@$&+2vddOc1i6Lz~@zT4epxVp;4LLtlr0bo?&TPwb`Fskx$ zeVv~!E=ZEI*^DIF>2&yJXNOBGE6h8W&O3+2Lcx2M&SvpML?n*mk3Vm350{+7i((Of z1_M<0_VE4s8cC9fh|EZWWJ-K%Jpl8kOfn@RlWaE2!-E5Sxw^t#tA+7+?1>2RpMSRy V(!rmu!N<$&1)9p}{ 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/keyinteraction/focus/focus.qml b/examples/declarative/qtquick1/keyinteraction/focus/focus.qml new file mode 100644 index 0000000000..ab28260560 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/focus.qml @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "Core" + +Rectangle { + id: window + + width: 800; height: 480 + color: "#3E606F" + + FocusScope { + id: mainView + + width: parent.width; height: parent.height + focus: true + + GridMenu { + id: gridMenu + width: parent.width; height: 320 + + focus: true + interactive: parent.activeFocus + } + + ListMenu { + id: listMenu + y: 320; width: parent.width; height: 320 + } + + Rectangle { + id: shade + anchors.fill: parent + color: "black" + opacity: 0 + } + + states: State { + name: "showListViews" + PropertyChanges { target: gridMenu; y: -160 } + PropertyChanges { target: listMenu; y: 160 } + } + + transitions: Transition { + NumberAnimation { properties: "y"; duration: 600; easing.type: Easing.OutQuint } + } + } + + Image { + source: "Core/images/arrow.png" + rotation: 90 + anchors.verticalCenter: parent.verticalCenter + + MouseArea { + anchors.fill: parent; anchors.margins: -10 + onClicked: contextMenu.focus = true + } + } + + ContextMenu { id: contextMenu; x: -265; width: 260; height: parent.height } + + states: State { + name: "contextMenuOpen" + when: !mainView.activeFocus + PropertyChanges { target: contextMenu; x: 0; open: true } + PropertyChanges { target: mainView; x: 130 } + PropertyChanges { target: shade; opacity: 0.25 } + } + + transitions: Transition { + NumberAnimation { properties: "x,opacity"; duration: 600; easing.type: Easing.OutQuint } + } +} diff --git a/examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject b/examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject b/examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro b/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro new file mode 100644 index 0000000000..760a8dca55 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro @@ -0,0 +1,8 @@ +TEMPLATE = app + +QT += declarative qtquick1 + +RESOURCES += abstractitemmodel.qrc + +HEADERS = model.h +SOURCES = main.cpp model.cpp diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc b/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc new file mode 100644 index 0000000000..4ae861cb3d --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc @@ -0,0 +1,6 @@ + + + view.qml + + + diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp b/examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp new file mode 100644 index 0000000000..611f512438 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "model.h" +#include +#include + +#include + +//![0] +int main(int argc, char ** argv) +{ + QApplication app(argc, argv); + + AnimalModel model; + model.addAnimal(Animal("Wolf", "Medium")); + model.addAnimal(Animal("Polar bear", "Large")); + model.addAnimal(Animal("Quoll", "Small")); + + QDeclarativeView view; + QDeclarativeContext *ctxt = view.rootContext(); + ctxt->setContextProperty("myModel", &model); +//![0] + + view.setSource(QUrl("qrc:view.qml")); + view.show(); + + return app.exec(); +} + diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp b/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp new file mode 100644 index 0000000000..9da07293cc --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "model.h" + +Animal::Animal(const QString &type, const QString &size) + : m_type(type), m_size(size) +{ +} + +QString Animal::type() const +{ + return m_type; +} + +QString Animal::size() const +{ + return m_size; +} + +//![0] +AnimalModel::AnimalModel(QObject *parent) + : QAbstractListModel(parent) +{ + QHash roles; + roles[TypeRole] = "type"; + roles[SizeRole] = "size"; + setRoleNames(roles); +} +//![0] + +void AnimalModel::addAnimal(const Animal &animal) +{ + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + m_animals << animal; + endInsertRows(); +} + +int AnimalModel::rowCount(const QModelIndex & parent) const { + return m_animals.count(); +} + +QVariant AnimalModel::data(const QModelIndex & index, int role) const { + if (index.row() < 0 || index.row() > m_animals.count()) + return QVariant(); + + const Animal &animal = m_animals[index.row()]; + if (role == TypeRole) + return animal.type(); + else if (role == SizeRole) + return animal.size(); + return QVariant(); +} + diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h b/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h new file mode 100644 index 0000000000..d9fcebf40a --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include + +//![0] +class Animal +{ +public: + Animal(const QString &type, const QString &size); +//![0] + + QString type() const; + QString size() const; + +private: + QString m_type; + QString m_size; +//![1] +}; + +class AnimalModel : public QAbstractListModel +{ + Q_OBJECT +public: + enum AnimalRoles { + TypeRole = Qt::UserRole + 1, + SizeRole + }; + + AnimalModel(QObject *parent = 0); +//![1] + + void addAnimal(const Animal &animal); + + int rowCount(const QModelIndex & parent = QModelIndex()) const; + + QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; + +private: + QList m_animals; +//![2] +}; +//![2] + + diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml b/examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml new file mode 100644 index 0000000000..0363e9a4eb --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 + +//![0] +ListView { + width: 200; height: 250 + anchors.fill: parent + + model: myModel + delegate: Text { text: "Animal: " + type + ", " + size } +} +//![0] + diff --git a/examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml b/examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml new file mode 100644 index 0000000000..85bd2f15c1 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + width: 300; height: 400 + color: "white" + + ListModel { + id: appModel + ListElement { name: "Music"; icon: "pics/AudioPlayer_48.png" } + ListElement { name: "Movies"; icon: "pics/VideoPlayer_48.png" } + ListElement { name: "Camera"; icon: "pics/Camera_48.png" } + ListElement { name: "Calendar"; icon: "pics/DateBook_48.png" } + ListElement { name: "Messaging"; icon: "pics/EMail_48.png" } + ListElement { name: "Todo List"; icon: "pics/TodoList_48.png" } + ListElement { name: "Contacts"; icon: "pics/AddressBook_48.png" } + } + + Component { + id: appDelegate + + Item { + width: 100; height: 100 + + Image { + id: myIcon + y: 20; anchors.horizontalCenter: parent.horizontalCenter + source: icon + } + Text { + anchors { top: myIcon.bottom; horizontalCenter: parent.horizontalCenter } + text: name + } + } + } + + Component { + id: appHighlight + Rectangle { width: 80; height: 80; color: "lightsteelblue" } + } + + GridView { + anchors.fill: parent + cellWidth: 100; cellHeight: 100 + highlight: appHighlight + focus: true + model: appModel + delegate: appDelegate + } +} diff --git a/examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject b/examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/AddressBook_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/AddressBook_48.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab7c8eec1381756de32b5f863a6e794c5e8e90f GIT binary patch literal 3350 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/AudioPlayer_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/AudioPlayer_48.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b8689f87c0cf8a46de9782229c2282d5fe2cf5 GIT binary patch literal 3806 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/Camera_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/Camera_48.png new file mode 100644 index 0000000000000000000000000000000000000000..c76b52494597802fdf1dc0840a31510f64169b70 GIT binary patch literal 3540 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 U;C)}W8UO$Q07*qoM6N<$f*gVFyZ`_I literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/EMail_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/EMail_48.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d84a61be6ea9470a792b3435d2a4f9ffc58050 GIT binary patch literal 3655 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 q30&9O+Bht^LrRuPDe;6v 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 +

            +
          • 1 cup (150g) self-raising flour +
          • 1 tbs caster sugar +
          • 3/4 cup (185ml) milk +
          • 1 egg +
          + " + method: " +
            +
          1. Sift flour and sugar together into a bowl. Add a pinch of salt. +
          2. Beat milk and egg together, then add to dry ingredients. Beat until smooth. +
          3. Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. +
          4. Turn over and cook other side until golden. +
          + " + } + ListElement { + title: "Fruit Salad" + picture: "content/pics/fruit-salad.jpg" + ingredients: "* Seasonal Fruit" + method: "* Chop fruit and place in a bowl." + } + ListElement { + title: "Vegetable Soup" + picture: "content/pics/vegetable-soup.jpg" + ingredients: " +
            +
          • 1 onion +
          • 1 turnip +
          • 1 potato +
          • 1 carrot +
          • 1 head of celery +
          • 1 1/2 litres of water +
          + " + method: " +
            +
          1. Chop vegetables. +
          2. Boil in water until vegetables soften. +
          3. Season with salt and pepper to taste. +
          + " + } + ListElement { + title: "Hamburger" + picture: "content/pics/hamburger.jpg" + ingredients: " +
            +
          • 500g minced beef +
          • Seasoning +
          • lettuce, tomato, onion, cheese +
          • 1 hamburger bun for each burger +
          + " + method: " +
            +
          1. Mix the beef, together with seasoning, in a food processor. +
          2. Shape the beef into burgers. +
          3. Grill the burgers for about 5 mins on each side (until cooked through) +
          4. Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. +
          + " + } + ListElement { + title: "Lemonade" + picture: "content/pics/lemonade.jpg" + ingredients: " +
            +
          • 1 cup Lemon Juice +
          • 1 cup Sugar +
          • 6 Cups of Water (2 cups warm water, 4 cups cold water) +
          + " + method: " +
            +
          1. Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. +
          2. Pour in lemon juice, stir again, and add 4 cups of cold water. +
          3. Chill or serve over ice cubes. +
          + " + } +} diff --git a/examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml b/examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml new file mode 100644 index 0000000000..9eef671fad --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: container + + property alias text: label.text + + signal clicked + + width: label.width + 20; height: label.height + 6 + smooth: true + radius: 10 + + gradient: Gradient { + GradientStop { id: gradientStop; position: 0.0; color: palette.light } + GradientStop { position: 1.0; color: palette.button } + } + + SystemPalette { id: palette } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: { container.clicked() } + } + + Text { + id: label + anchors.centerIn: parent + } + + states: State { + name: "pressed" + when: mouseArea.pressed + PropertyChanges { target: gradientStop; color: palette.dark } + } +} + diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-down.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-down.png new file mode 100644 index 0000000000000000000000000000000000000000..29d1d4439a139c662aecca94b6f43a465cfb9cc6 GIT binary patch literal 594 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
            Xa0J+Cqb@y0X@UA1qxbVygysgL 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

            FZF`jvSR<4M^u{n>eZ4w{*(QWa@(hp~>) z;}xi9k7xHuaSGuaId=0Iv~xcEh{g;#B0ZqoAL$P^T2)Y67wJx3o~#RVnP~{5j==Ze z52v}0^VypxyRG78*+*w-X1<%^1E*N#G7;p2WtNGZqV{--+%^s-_FdN}Mu_2sh$t0! z5Evzyb#jC$+0oN_^<~ALG%#bF%rVg%J0d@FnYl}*f@s8@#tuYu*wqs~XO#V1Ux=~r z^CMsL{b8N{&&cNn(EEv0_)T{Zg&?WzQ47XMrODMvyns11Luw)oFIwFQe_Ho^auj$v zQm@V@U`27VmiD&tpK_&;X9wq8x%UCsw;0c^sjKV7>DGUKg00?>nch`q)lT_5Yhn27 zeJQ;mB)H!Y!E4pTB!!mwPX}rqRlg`#y-|r38z?gNcp%kY7@_Pf#(P}Y8;RiOslIOu zefP}AU#Z|O1HQavM=k$lmIUc6@2m;Pso&yT2u2s^dn(7&F`wg>)MK~iVrRw2qGlZx zCpq|aLt3CStWZs0(-_Y#_sHf^m&zIYm9St{+>;fBR7dhL;|u*H&b#_9S}rqRoefb2 zEd{IGjy;iAMi|Wcjtwsy`EZks1pSXf5v~#96wEr`;&QAtc}?$CPdTxnEx@8{Ss@*} z7%DwVPxwq)zPJR02bHj|Dn^1Sk52wng&7$99YlIUt-i)}_%s-~^_6`y%X`fo&(ylN zkQqH7|9}kTUNlvcX5-T4Hw1gqqmL$2V!qfNiETw_zc_z@hI2#bs|l z1cob=-2l#=b)>p;^{yx2CqtRip>6|p%b!4c)p}kCSiF*AMzvD~A0@k^e2tEGJ!T<= zGkn!6vxZi__VVZe5-Yq#lh57xMg2-h`}*~5E~#RPy8(!wvE~L~jMW5H5KlHxR9Z<9 z(*CN;_NF+|c&HWCatkbbUp)A0H-%>F$sva9`oo4FO-9ve!o;{#d1+!uR7QoPe4Bfm z240;?{TfP9`I9ujTVyd=!E{(*#nSygKX%D>zBDzLxQ?x;_N88L?>FCt{~nWmoi3-A%+dc8^B)rfz?cd!41IIenRT|hM9B8BnkNwG5es?p0pP^kC z;8-rRnzX8I&$G(0c67|Oh`f)E9&*(WVER0B_(dYw9`!tJEE(s8f>`4+=@*wQbQfSs z*G<}w8x{Fu58?_$nLSs<;85wUY^`6lj1{>xIaH zDd*CBuY}F>Q`Fwc+}3^xsA337ck)_%Gb(?(ioWIdRJb%G@1n*#EK zYReB^oMPNe-W#;u{sha0Qf4DOvtWuH@w552Tmp%Nc`f$r8T60d+8amlU*3X2-$UWW TjHpMXLJ%Uz{||!d&CLG-28JV1 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/lemonade.jpg b/examples/declarative/qtquick1/modelviews/listview/content/pics/lemonade.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db445c9ac876ccfb959d8e3c0219e89a1cb2aafd GIT binary patch literal 6645 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/list-delete.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/list-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..df2a147d246ef62d628d73db36b0b24af98a2ab9 GIT binary patch literal 831 zcmV-F1Hk-=P)R5;6h zl}l(-K@^6Q=FtdACA#^NDs^{Lp)6)L zgDB5eX;UdG_4H6F7*yIgXmIAu0!5NyOCtSU7G=!;6%|3j{gliox-!pOK?G(o&X({YLK$5)lC7F{VZbo703UCXA=&? zO>Nu>w#%A8Rp;5oKacEBBT*BGX+{#I_yE%2i8f!~SeeejbP6SvLH5VQ-~o6A-hwe1 z-+)oOG3-#N-p|7H3rxph%DcJ`E`ihFDtIo2X&L#)9#wa!-__Ey=>18UreVqnx(m*O z14e_~1JA$~|`2HhU^Ra!WRl)GgiU zYU$BXh#q3R4$gpm?mF#|Br$YH!gK>%1c$VCx82fBJaI+hxwpFb)g=^Dbv{zQc<7+k z9t8>W67osVx3S=)K2n#oseNr$I`ov*vgsc2h}xyrpv>h+JHeJUF8ZjWkj` zH1UE>PMpf&iLCQ!iioCJ)~Hi?YjvJaK8_pg59Au!plIt&?SDO~mzDzYD;xj-002ov JPDHLkV1h`%ho%4k literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/minus-sign.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/minus-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f233d7399c4c07c6c66775f7806acac84b1870 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6P60k4u0Wb3;FYqWamwl0TmSYg zzPEV)f9L4=uDMg50*&A=3GxeOV9U{Bm1EIh)b!)dNY8G|=4l2>MR>Y6hE&9zJ@3ia zpuppBkxMsqLg3#2p{{ow4y^sCTR&@AtNcZ-!c0XiUIF(fS@*p4-Mvkxubuwr)McGB zHm7G5zmh%w<-tAQYwQ=f{_Q#1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr*h!Q?HqR018Q#xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~MKgx;TbNTux3{AeNAlknp4bh#UKVNeKyw z85dYLe3aa%k>K*&_>m!J9*44?cEJw8^_?w@3@_9;nLjU4H38~p@O1TaS?83{1OTR# BJd^+c literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/moreUp.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/moreUp.png new file mode 100644 index 0000000000000000000000000000000000000000..fefb9c9098a4550c504c900edb15808788812e5a GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr-)N5C6Th1`0`*xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~P6ex;TbNTux3<5dPyXo^WJwgW&8%|08@- tQxbsSP&$*(oQV^dQYLTM**~%I6;S;)cJ@c9k@`Tb44$rjF6*2UngHSdJrV!_ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/pancakes.jpg b/examples/declarative/qtquick1/modelviews/listview/content/pics/pancakes.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60c439638e4d183e483a18542fcb2ee6443051bf GIT binary patch literal 9163 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/plus-sign.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/plus-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..40df1134f8472f399adfa5c8c66c50a98d3bacc0 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6y#YQUu0Wa$(6{&=P?uNAhRG|R zPhIi|$63?4Gdn(WDhGy5?S*zvKV>UH^L*-tUX z$Jv{I&ffC7bM{5Qj4e}Ezbj}vVjnSc;_|19_y1onFfAQuu24ykUoZnB3o9G9teS?7 zt9NpGMrLu#@0UVzfU@^IT^vIy;%X<}%xf{=arHKHYQL~@ZfotgwYUG*$MH^!I&%2V z@)sJL`rl4pesV%`$+ja*^=&3!b{Hmgs`72G$lh?~sgSmhV3T|L)#5pvnp5W$R3F&x zq^-&N)%9FO2FOm@bA*rKR&a{^p(h(SexKRzobg)f!S5Tb z0(ReeejodN_$Ob%pPGvI-{X5McZ=;}w|{;sE!Zmj;a8K;+WTSWrcUlO+qsq1zw`F> zL$~g{I69@}|MDjqpAy@zuKLv`b1gzCeQUnq?;S;@b8|k;l-+S#KOj|nW)fHH0-#SB NJYD@<);T3K0RYVY#HauO literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/vegetable-soup.jpg b/examples/declarative/qtquick1/modelviews/listview/content/pics/vegetable-soup.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9dce33204181c919fd2dcd83bb0df18f456cca52 GIT binary patch literal 8639 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 + +//![0] +class DataObject : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged) +//![0] + +public: + DataObject(QObject *parent=0); + DataObject(const QString &name, const QString &color, QObject *parent=0); + + QString name() const; + void setName(const QString &name); + + QString color() const; + void setColor(const QString &color); + +signals: + void nameChanged(); + void colorChanged(); + +private: + QString m_name; + QString m_color; +//![1] +}; +//![1] + +#endif // DATAOBJECT_H diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp b/examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp new file mode 100644 index 0000000000..ba49f40475 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include +#include +#include +#include + +#include "dataobject.h" + +/* + This example illustrates exposing a QList as a + model in QML +*/ + +//![0] +int main(int argc, char ** argv) +{ + QApplication app(argc, argv); + + QList dataList; + dataList.append(new DataObject("Item 1", "red")); + dataList.append(new DataObject("Item 2", "green")); + dataList.append(new DataObject("Item 3", "blue")); + dataList.append(new DataObject("Item 4", "yellow")); + + QDeclarativeView view; + QDeclarativeContext *ctxt = view.rootContext(); + ctxt->setContextProperty("myModel", QVariant::fromValue(dataList)); +//![0] + + view.setSource(QUrl("qrc:view.qml")); + view.show(); + + return app.exec(); +} + diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro new file mode 100644 index 0000000000..f67a9812e4 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro @@ -0,0 +1,18 @@ +TEMPLATE = app +TARGET = objectlistmodel +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative qtquick1 + +# Input +SOURCES += main.cpp \ + dataobject.cpp +HEADERS += dataobject.h +RESOURCES += objectlistmodel.qrc + +sources.files = $$SOURCES $$HEADERS $$RESOURCES objectlistmodel.pro view.qml +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/objectlistmodel +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/objectlistmodel + +INSTALLS += sources target + diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc new file mode 100644 index 0000000000..17e9301471 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc @@ -0,0 +1,5 @@ + + + view.qml + + diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml b/examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml new file mode 100644 index 0000000000..264289f3bf --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +//![0] +ListView { + width: 100; height: 100 + anchors.fill: parent + + model: myModel + delegate: Rectangle { + height: 25 + width: 100 + color: model.modelData.color + Text { text: name } + } +} +//![0] diff --git a/examples/declarative/qtquick1/modelviews/package/Delegate.qml b/examples/declarative/qtquick1/modelviews/package/Delegate.qml new file mode 100644 index 0000000000..24abc5de75 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/package/Delegate.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +//![0] +Package { + Text { id: listDelegate; width: 200; height: 25; text: 'Empty'; Package.name: 'list' } + Text { id: gridDelegate; width: 100; height: 50; text: 'Empty'; Package.name: 'grid' } + + Rectangle { + id: wrapper + width: 200; height: 25 + color: 'lightsteelblue' + + Text { text: display; anchors.centerIn: parent } + MouseArea { + anchors.fill: parent + onClicked: { + if (wrapper.state == 'inList') + wrapper.state = 'inGrid'; + else + wrapper.state = 'inList'; + } + } + + state: 'inList' + states: [ + State { + name: 'inList' + ParentChange { target: wrapper; parent: listDelegate } + }, + State { + name: 'inGrid' + ParentChange { + target: wrapper; parent: gridDelegate + x: 0; y: 0; width: gridDelegate.width; height: gridDelegate.height + } + } + ] + + transitions: [ + Transition { + ParentAnimation { + NumberAnimation { properties: 'x,y,width,height'; duration: 300 } + } + } + ] + } +} +//![0] diff --git a/examples/declarative/qtquick1/modelviews/package/package.qmlproject b/examples/declarative/qtquick1/modelviews/package/package.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/package/package.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/modelviews/package/view.qml b/examples/declarative/qtquick1/modelviews/package/view.qml new file mode 100644 index 0000000000..1715ba1dfd --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/package/view.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + color: "white" + width: 400 + height: 200 + + ListModel { + id: myModel + ListElement { display: "One" } + ListElement { display: "Two" } + ListElement { display: "Three" } + ListElement { display: "Four" } + ListElement { display: "Five" } + ListElement { display: "Six" } + ListElement { display: "Seven" } + ListElement { display: "Eight" } + } + //![0] + VisualDataModel { + id: visualModel + delegate: Delegate {} + model: myModel + } + + ListView { + width: 200; height:200 + model: visualModel.parts.list + } + GridView { + x: 200; width: 200; height:200 + cellHeight: 50 + model: visualModel.parts.grid + } + //![0] +} diff --git a/examples/declarative/qtquick1/modelviews/parallax/parallax.qml b/examples/declarative/qtquick1/modelviews/parallax/parallax.qml new file mode 100644 index 0000000000..12872710eb --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/parallax.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "../../toys/clocks/content" // for loading the Clock element +import "qml" + +Rectangle { + width: 320; height: 480 + + ParallaxView { + id: parallax + anchors.fill: parent + background: "pics/background.jpg" + + Item { + property url icon: "pics/yast-wol.png" + width: 320; height: 480 + Clock { anchors.centerIn: parent } + } + + Item { + property url icon: "pics/home-page.svg" + width: 320; height: 480 + Smiley { } + } + + Item { + property url icon: "pics/yast-joystick.png" + width: 320; height: 480 + + Loader { + anchors { top: parent.top; topMargin: 10; horizontalCenter: parent.horizontalCenter } + width: 300; height: 400 + clip: true; + source: "../../../../demos/declarative/samegame/samegame.qml" + Component.onCompleted: item.inAnotherDemo = true; + } + } + } +} diff --git a/examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject b/examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/background.jpg b/examples/declarative/qtquick1/modelviews/parallax/pics/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..61cca2f1382f1ce448f4e96bab621a9ae0cb658d GIT binary patch literal 209814 zcmbTc2UJtf_BMP{APKz_FhJ-K0qKOEP!nosR#Y$`MM~%(y@S%5jV4V%Mf8UhK?GEq zN)Z&KNC_A~k*0L;i~qaUz4v?9df%^1lCz%7*)y}xw6phq=Fj+_S%AaLglGbQKp>!j z{sI2X0er@x9#;Xt(h|S`005`|=;_Zq%UPnK;boGowF%L}m|g$?SO^v#KE7ZM0Pyw+ z^tUxNK%YH#9t|4+zyJbZ1e5^4nH)f|v@@~)TLaP95FJ1l`iuXQwm$>(ngC!#o$zxnHQ%yZ@1Ukrx+#r|{!=@|JJyZsBx z{g2GQFzzpQ@%C|{%ly@u;^OV{7r&w7l;9v&I)+%#aZ<2{YX}{W(y@eBkhcdN@6s`k zx2tmi06QeZ4K#Ihu)nmZvTa^{1*;%4W;V|0EWJlFn

            _dv7^ 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≥|ybC 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/face-smile.png b/examples/declarative/qtquick1/modelviews/parallax/pics/face-smile.png new file mode 100644 index 0000000000000000000000000000000000000000..3d66d725781730c7a9376a25113164f8882d9795 GIT binary patch literal 15408 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 SNxgs4ATkn);&q}%LH`e8$k9yz literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg b/examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg new file mode 100644 index 0000000000..4f16958844 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg @@ -0,0 +1,445 @@ + +image/svg+xmlGo HomeJakub Steinerhttp://jimmac.musichall.czhomereturngodefaultuserdirectoryTuomas Kuosmanen + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/shadow.png b/examples/declarative/qtquick1/modelviews/parallax/pics/shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..8270565e87b9cc64d940a8829c57790c05fe6862 GIT binary patch literal 425 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/yast-wol.png b/examples/declarative/qtquick1/modelviews/parallax/pics/yast-wol.png new file mode 100644 index 0000000000000000000000000000000000000000..7712180a3b35d8f409df2c07921d2ee67c6c0797 GIT binary patch literal 3769 zcmV;q4o2~bP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00006 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml b/examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml new file mode 100644 index 0000000000..9ad636fad6 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Item { + id: root + + property alias background: background.source + property int currentIndex: 0 + default property alias content: visualModel.children + + Image { + id: background + fillMode: Image.TileHorizontally + x: -list.contentX / 2 + width: Math.max(list.contentWidth, parent.width) + } + + ListView { + id: list + anchors.fill: parent + + currentIndex: root.currentIndex + onCurrentIndexChanged: root.currentIndex = currentIndex + + orientation: Qt.Horizontal + boundsBehavior: Flickable.DragOverBounds + model: VisualItemModel { id: visualModel } + + highlightRangeMode: ListView.StrictlyEnforceRange + snapMode: ListView.SnapOneItem + } + + ListView { + id: selector + + height: 50 + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + width: Math.min(count * 50, parent.width - 20) + interactive: width == parent.width - 20 + orientation: Qt.Horizontal + + currentIndex: root.currentIndex + onCurrentIndexChanged: root.currentIndex = currentIndex + + model: visualModel.children + delegate: Item { + width: 50; height: 50 + id: delegateRoot + + Image { + id: image + source: modelData.icon + smooth: true + scale: 0.8 + } + + MouseArea { + anchors.fill: parent + onClicked: { root.currentIndex = index } + } + + states: State { + name: "Selected" + when: delegateRoot.ListView.isCurrentItem == true + PropertyChanges { + target: image + scale: 1 + y: -5 + } + } + transitions: Transition { + NumberAnimation { properties: "scale,y" } + } + } + + Rectangle { + color: "#60FFFFFF" + x: -10; y: -10; z: -1 + width: parent.width + 20; height: parent.height + 20 + radius: 10 + } + } +} diff --git a/examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml b/examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml new file mode 100644 index 0000000000..c964f50dd9 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +// This is taken from the declarative animation/basics/property-animation.qml +// example + +Item { + id: window + width: 320; height: 480 + + Image { + anchors.horizontalCenter: parent.horizontalCenter + y: smiley.minHeight + 58 + source: "../pics/shadow.png" + + scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight) + } + + Image { + id: smiley + property int maxHeight: window.height / 3 + property int minHeight: 2 * window.height / 3 + + anchors.horizontalCenter: parent.horizontalCenter + y: minHeight + source: "../pics/face-smile.png" + + SequentialAnimation on y { + loops: Animation.Infinite + + NumberAnimation { + from: smiley.minHeight; to: smiley.maxHeight + easing.type: Easing.OutExpo; duration: 300 + } + + NumberAnimation { + from: smiley.maxHeight; to: smiley.minHeight + easing.type: Easing.OutBounce; duration: 1000 + } + + PauseAnimation { duration: 500 } + } + } +} + diff --git a/examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml b/examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml new file mode 100644 index 0000000000..bddab8fd3d --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + width: 400; height: 240 + color: "white" + + ListModel { + id: appModel + ListElement { name: "Music"; icon: "pics/AudioPlayer_48.png" } + ListElement { name: "Movies"; icon: "pics/VideoPlayer_48.png" } + ListElement { name: "Camera"; icon: "pics/Camera_48.png" } + ListElement { name: "Calendar"; icon: "pics/DateBook_48.png" } + ListElement { name: "Messaging"; icon: "pics/EMail_48.png" } + ListElement { name: "Todo List"; icon: "pics/TodoList_48.png" } + ListElement { name: "Contacts"; icon: "pics/AddressBook_48.png" } + } + + Component { + id: appDelegate + Item { + width: 100; height: 100 + scale: PathView.iconScale + + Image { + id: myIcon + y: 20; anchors.horizontalCenter: parent.horizontalCenter + source: icon + smooth: true + } + Text { + anchors { top: myIcon.bottom; horizontalCenter: parent.horizontalCenter } + text: name + smooth: true + } + + MouseArea { + anchors.fill: parent + onClicked: view.currentIndex = index + } + } + } + + Component { + id: appHighlight + Rectangle { width: 80; height: 80; color: "lightsteelblue" } + } + + PathView { + id: view + anchors.fill: parent + highlight: appHighlight + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + focus: true + model: appModel + delegate: appDelegate + path: Path { + startX: 10 + startY: 50 + PathAttribute { name: "iconScale"; value: 0.5 } + PathQuad { x: 200; y: 150; controlX: 50; controlY: 200 } + PathAttribute { name: "iconScale"; value: 1.0 } + PathQuad { x: 390; y: 50; controlX: 350; controlY: 200 } + PathAttribute { name: "iconScale"; value: 0.5 } + } + } +} diff --git a/examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject b/examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/AddressBook_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/AddressBook_48.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab7c8eec1381756de32b5f863a6e794c5e8e90f GIT binary patch literal 3350 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/AudioPlayer_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/AudioPlayer_48.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b8689f87c0cf8a46de9782229c2282d5fe2cf5 GIT binary patch literal 3806 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/Camera_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/Camera_48.png new file mode 100644 index 0000000000000000000000000000000000000000..c76b52494597802fdf1dc0840a31510f64169b70 GIT binary patch literal 3540 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 U;C)}W8UO$Q07*qoM6N<$f*gVFyZ`_I literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/EMail_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/EMail_48.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d84a61be6ea9470a792b3435d2a4f9ffc58050 GIT binary patch literal 3655 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 q30&9O+Bht^LrRuPDe;6v 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 + +#include +#include +#include +#include + + +/* + This example illustrates exposing a QStringList as a + model in QML +*/ + +int main(int argc, char ** argv) +{ + QApplication app(argc, argv); + +//![0] + QStringList dataList; + dataList.append("Item 1"); + dataList.append("Item 2"); + dataList.append("Item 3"); + dataList.append("Item 4"); + + QDeclarativeView view; + QDeclarativeContext *ctxt = view.rootContext(); + ctxt->setContextProperty("myModel", QVariant::fromValue(dataList)); +//![0] + + view.setSource(QUrl("qrc:view.qml")); + view.show(); + + return app.exec(); +} + diff --git a/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro b/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro new file mode 100644 index 0000000000..3078e5be27 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro @@ -0,0 +1,9 @@ +TEMPLATE = app +TARGET = stringlistmodel +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative qtquick1 + +# Input +SOURCES += main.cpp +RESOURCES += stringlistmodel.qrc diff --git a/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc b/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc new file mode 100644 index 0000000000..17e9301471 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc @@ -0,0 +1,5 @@ + + + view.qml + + diff --git a/examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml b/examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml new file mode 100644 index 0000000000..9c65d80514 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +//![0] + +ListView { + width: 100; height: 100 + anchors.fill: parent + + model: myModel + delegate: Rectangle { + height: 25 + width: 100 + Text { text: modelData } + } +} +//![0] diff --git a/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml b/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml new file mode 100644 index 0000000000..4ea7e5b0c8 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// This example demonstrates placing items in a view using +// a VisualItemModel + +import QtQuick 1.0 + +Rectangle { + color: "lightgray" + width: 240 + height: 320 + + VisualItemModel { + id: itemModel + + Rectangle { + width: view.width; height: view.height + color: "#FFFEF0" + Text { text: "Page 1"; font.bold: true; anchors.centerIn: parent } + + Component.onDestruction: print("destroyed 1") + } + Rectangle { + width: view.width; height: view.height + color: "#F0FFF7" + Text { text: "Page 2"; font.bold: true; anchors.centerIn: parent } + + Component.onDestruction: print("destroyed 2") + } + Rectangle { + width: view.width; height: view.height + color: "#F4F0FF" + Text { text: "Page 3"; font.bold: true; anchors.centerIn: parent } + + Component.onDestruction: print("destroyed 3") + } + } + + ListView { + id: view + anchors { fill: parent; bottomMargin: 30 } + model: itemModel + preferredHighlightBegin: 0; preferredHighlightEnd: 0 + highlightRangeMode: ListView.StrictlyEnforceRange + orientation: ListView.Horizontal + snapMode: ListView.SnapOneItem; flickDeceleration: 2000 + cacheBuffer: 200 + } + + Rectangle { + width: 240; height: 30 + anchors { top: view.bottom; bottom: parent.bottom } + color: "gray" + + Row { + anchors.centerIn: parent + spacing: 20 + + Repeater { + model: itemModel.count + + Rectangle { + width: 5; height: 5 + radius: 3 + color: view.currentIndex == index ? "blue" : "white" + + MouseArea { + width: 20; height: 20 + anchors.centerIn: parent + onClicked: view.currentIndex = index + } + } + } + } + } +} diff --git a/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject b/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/positioners/Button.qml b/examples/declarative/qtquick1/positioners/Button.qml new file mode 100644 index 0000000000..25907c0d23 --- /dev/null +++ b/examples/declarative/qtquick1/positioners/Button.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: page + + property string text + property string icon + signal clicked + + border.color: "black"; color: "steelblue"; radius: 5 + width: pix.width + textelement.width + 13 + height: pix.height + 10 + + Image { id: pix; x: 5; y:5; source: parent.icon } + + Text { + id: textelement + text: page.text; color: "white" + x: pix.width + pix.x + 3 + anchors.verticalCenter: pix.verticalCenter + } + + MouseArea { + id: mr + anchors.fill: parent + onClicked: { parent.focus = true; page.clicked() } + } + + states: State { + name: "pressed"; when: mr.pressed + PropertyChanges { target: textelement; x: 5 } + PropertyChanges { target: pix; x: textelement.x + textelement.width + 3 } + } + + transitions: Transition { + NumberAnimation { properties: "x,left"; easing.type: Easing.InOutQuad; duration: 200 } + } +} diff --git a/examples/declarative/qtquick1/positioners/add.png b/examples/declarative/qtquick1/positioners/add.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee45423e3958221bd545ee6f122d989302cab3f GIT binary patch literal 810 zcmV+_1J(SAP)B<|3F)+>u<}zfuZe7)NT=Ybf%p@9RIu@KocNNrs{{OFYs@fvL zX^u9hJWdQiy;9GCE&}Y4r^W#*azk#i!X z0tQeD-}3nENIJp}&;hlob6(uM5O*#)UjX|Y5+K#c2tsS zZMN$5yBRrqOa_ap_a;nIVsn9|z+v%N9CfB%If8gRp1^qXR>?32 z*3w6Ivpw-?m;j)qg+kXMEtJw|G)lG5(gLLcMIhjghO{k_bu#)CdcjL^)(HV4rIl#l9 z`bJLq*V>D~Rp82RirDxVP5}7Rn~Yjj!U$|-YlH0pxKM8{H$~096rTrE8Kjh7nlCq5 ziUE@h66K&=O}1m34oT2-J2r6&15LJLTiV(KGC9`_1Eo1-3Ch!yU=dz^csbc-8xNq17Gynhq07*qoM6N<$f^&^p>Hq)$ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/positioners/del.png b/examples/declarative/qtquick1/positioners/del.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2eaed523fec15dd31cf7285ea50f2f17435fe3 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8wRq zn9D$zvG!`y8K9tKiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$QVa}?sh%#5 zArXh)PP6u7HWX;H&o5(55f&_B&{&xvC_2UaxS@df;>8XoPuMz?Y|Rw{0vjgv+B!ch zy;dm_ut20@$;9K+a_T>ye{*<+*6l4ly3tG?44ev#Dh)O)`svI2yTab}@8^|GHkfho zNeOTfAYE#xV zTYdQ2V(!{EY<(cpv1OlC|Mk$nFJwxr5_&M{ssYb!Y!6iMT-Lnu z^%LX6O%qa2gs^lmow~IC?DKoCclAn#7p^FN%^<|Ei6_mNUm#sTTOc~pY5nu>t=(d~ zq~A~M3_fyFjkTusWO04OyzP?5OwSte2Tr^2{`Z+?r;S>P_p|Ifa>5t{+wz6q>78?A zjm)yTU*U1P=G*Jdx;OcCUKB)#cx$;a{ezuM^;+MJ)Bq-|n aKk(|Y38wz&&UFFC3WKMspUXO@geCxP=D{TZ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/positioners/positioners.qml b/examples/declarative/qtquick1/positioners/positioners.qml new file mode 100644 index 0000000000..e5c632bcd7 --- /dev/null +++ b/examples/declarative/qtquick1/positioners/positioners.qml @@ -0,0 +1,253 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: page + width: 420; height: 420 + + Column { + id: layout1 + y: 0 + move: Transition { + NumberAnimation { properties: "y"; easing.type: Easing.OutBounce } + } + add: Transition { + NumberAnimation { properties: "y"; easing.type: Easing.OutQuad } + } + + Rectangle { color: "red"; width: 100; height: 50; border.color: "black"; radius: 15 } + + Rectangle { + id: blueV1 + width: 100; height: 50 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "green"; width: 100; height: 50; border.color: "black"; radius: 15 } + + Rectangle { + id: blueV2 + width: 100; height: 50 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "orange"; width: 100; height: 50; border.color: "black"; radius: 15 } + } + + Row { + id: layout2 + y: 300 + move: Transition { + NumberAnimation { properties: "x"; easing.type: Easing.OutBounce } + } + add: Transition { + NumberAnimation { properties: "x"; easing.type: Easing.OutQuad } + } + + Rectangle { color: "red"; width: 50; height: 100; border.color: "black"; radius: 15 } + + Rectangle { + id: blueH1 + width: 50; height: 100 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "green"; width: 50; height: 100; border.color: "black"; radius: 15 } + + Rectangle { + id: blueH2 + width: 50; height: 100 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "orange"; width: 50; height: 100; border.color: "black"; radius: 15 } + } + + Button { + x: 135; y: 90 + text: "Remove" + icon: "del.png" + + onClicked: { + blueH2.opacity = 0 + blueH1.opacity = 0 + blueV1.opacity = 0 + blueV2.opacity = 0 + blueG1.opacity = 0 + blueG2.opacity = 0 + blueG3.opacity = 0 + blueF1.opacity = 0 + blueF2.opacity = 0 + blueF3.opacity = 0 + } + } + + Button { + x: 145; y: 140 + text: "Add" + icon: "add.png" + + onClicked: { + blueH2.opacity = 1 + blueH1.opacity = 1 + blueV1.opacity = 1 + blueV2.opacity = 1 + blueG1.opacity = 1 + blueG2.opacity = 1 + blueG3.opacity = 1 + blueF1.opacity = 1 + blueF2.opacity = 1 + blueF3.opacity = 1 + } + } + + Grid { + x: 260; y: 0 + columns: 3 + + move: Transition { + NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce } + } + + add: Transition { + NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce } + } + + Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } + + Rectangle { + id: blueG1 + width: 50; height: 50 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "green"; width: 50; height: 50; border.color: "black"; radius: 15 } + + Rectangle { + id: blueG2 + width: 50; height: 50 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 } + + Rectangle { + id: blueG3 + width: 50; height: 50 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } + Rectangle { color: "green"; width: 50; height: 50; border.color: "black"; radius: 15 } + Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 } + } + + Flow { + id: layout4 + x: 260; y: 250; width: 150 + + move: Transition { + NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce } + } + + add: Transition { + NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce } + } + + Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } + + Rectangle { + id: blueF1 + width: 60; height: 50 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "green"; width: 30; height: 50; border.color: "black"; radius: 15 } + + Rectangle { + id: blueF2 + width: 60; height: 50 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 } + + Rectangle { + id: blueF3 + width: 40; height: 50 + color: "lightsteelblue" + border.color: "black" + radius: 15 + Behavior on opacity { NumberAnimation {} } + } + + Rectangle { color: "red"; width: 80; height: 50; border.color: "black"; radius: 15 } + } + +} diff --git a/examples/declarative/qtquick1/positioners/positioners.qmlproject b/examples/declarative/qtquick1/positioners/positioners.qmlproject new file mode 100644 index 0000000000..e5262175c5 --- /dev/null +++ b/examples/declarative/qtquick1/positioners/positioners.qmlproject @@ -0,0 +1,18 @@ +/* File generated by QtCreator */ + +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/qtquick1.pro b/examples/declarative/qtquick1/qtquick1.pro new file mode 100644 index 0000000000..0618705620 --- /dev/null +++ b/examples/declarative/qtquick1/qtquick1.pro @@ -0,0 +1,29 @@ +TEMPLATE = subdirs + +# These examples contain some C++ and need to be built +SUBDIRS = \ + cppextensions \ + modelviews \ + tutorials + +# plugins uses a 'Time' class that conflicts with symbian e32std.h also defining a class of the same name +symbian:SUBDIRS -= plugins + +# These examples contain no C++ and can simply be copied +sources.files = \ + animation \ + cppextensions \ + i18n \ + imageelements \ + keyinteraction \ + positioners \ + sqllocalstorage \ + text \ + threading \ + touchinteraction \ + toys \ + ui-components \ + xml + +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative +INSTALLS += sources diff --git a/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml b/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml new file mode 100644 index 0000000000..197ea39e86 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml @@ -0,0 +1,256 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.1 + +Rectangle { + id: root + property bool mirror + property int direction: Qt.application.layoutDirection + LayoutMirroring.enabled: mirror + LayoutMirroring.childrenInherit: true + width: column.width + 80 + height: column.height + 40 + Column { + id: column + width: 190 + spacing: 10 + anchors.centerIn: parent + + Text { + text: "Row" + anchors.horizontalCenter: parent.horizontalCenter + } + + Row { + layoutDirection: root.direction + spacing: 10 + move: Transition { + NumberAnimation { + properties: "x" + } + } + Repeater { + model: 4 + Loader { + property int value: index + sourceComponent: positionerDelegate + } + } + } + + Text { + text: "Grid" + anchors.horizontalCenter: parent.horizontalCenter + } + + Grid { + layoutDirection: root.direction + spacing: 10; columns: 4 + move: Transition { + NumberAnimation { + properties: "x" + } + } + Repeater { + model: 11 + Loader { + property int value: index + sourceComponent: positionerDelegate + } + } + } + + Text { + text: "Flow" + anchors.horizontalCenter: parent.horizontalCenter + } + + Flow { + layoutDirection: root.direction + spacing: 10; width: parent.width + move: Transition { + NumberAnimation { + properties: "x" + } + } + Repeater { + model: 10 + Loader { + property int value: index + sourceComponent: positionerDelegate + } + } + } + + Text { + text: "ListView" + anchors.horizontalCenter: parent.horizontalCenter + } + + ListView { + id: listView + clip: true + width: parent.width; height: 40 + layoutDirection: root.direction + orientation: Qt.Horizontal + model: 48 + delegate: viewDelegate + } + + Text { + text: "GridView" + anchors.horizontalCenter: parent.horizontalCenter + } + + GridView { + clip: true + width: 200; height: 160 + cellWidth: 50; cellHeight: 50 + layoutDirection: root.direction + model: 48 + delegate: viewDelegate + } + + Rectangle { + height: 50; width: parent.width + color: mouseArea.pressed ? "black" : "gray" + Column { + anchors.centerIn: parent + Text { + text: root.direction ? "Right to left" : "Left to right" + color: "white" + font.pixelSize: 16 + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + text: "(click here to toggle)" + color: "white" + font.pixelSize: 10 + font.italic: true + anchors.horizontalCenter: parent.horizontalCenter + } + } + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: { + if (root.direction == Qt.LeftToRight) { + root.direction = Qt.RightToLeft; + } else { + root.direction = Qt.LeftToRight; + } + } + } + } + + Rectangle { + height: 50; width: parent.width + color: mouseArea2.pressed ? "black" : "gray" + Column { + anchors.centerIn: parent + Text { + text: root.mirror ? "Mirrored" : "Not mirrored" + color: "white" + font.pixelSize: 16 + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + text: "(click here to toggle)" + color: "white" + font.pixelSize: 10 + font.italic: true + anchors.horizontalCenter: parent.horizontalCenter + } + } + MouseArea { + id: mouseArea2 + anchors.fill: parent + onClicked: { + root.mirror = !root.mirror; + } + } + } + } + + Component { + id: positionerDelegate + Rectangle { + width: 40; height: 40 + color: Qt.rgba(0.8/(parent.value+1),0.8/(parent.value+1),0.8/(parent.value+1),1.0) + Text { + text: parent.parent.value+1 + color: "white" + font.pixelSize: 18 + anchors.centerIn: parent + } + } + } + Component { + id: viewDelegate + Item { + function effectiveLayoutDirection() { + if (LayoutMirroring.enabled) + if (listView.layoutDirection == Qt.LeftToRight) + return Qt.RightToLeft; + else + return Qt.LeftToRight; + else + return listView.layoutDirection; + } + + width: (effectiveLayoutDirection() == Qt.LeftToRight ? (index == 48 - 1) : (index == 0)) ? 40 : 50 + Rectangle { + width: 40; height: 40 + color: Qt.rgba(0.5+(48 - index)*Math.random()/48, + 0.3+index*Math.random()/48, + 0.3*Math.random(), + 1.0) + Text { + text: index+1 + color: "white" + font.pixelSize: 18 + anchors.centerIn: parent + } + } + } + } +} + diff --git a/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject b/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject new file mode 100644 index 0000000000..e5262175c5 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject @@ -0,0 +1,18 @@ +/* File generated by QtCreator */ + +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml b/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml new file mode 100644 index 0000000000..0d1b871ca0 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml @@ -0,0 +1,313 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.1 + +Rectangle { + id: root + property bool mirror: Qt.application.layoutDirection == Qt.RightToLeft + LayoutMirroring.enabled: mirror + LayoutMirroring.childrenInherit: true + width: 400 + height: 875 + color: "lightsteelblue" + + Column { + spacing: 10 + anchors { left: parent.left; right: parent.right; top: parent.top; margins: 10 } + + Text { + text: "Positioners" + anchors.left: parent.left + } + + Column { + id: positioners + spacing: 5 + anchors.left: parent.left + Row { + id: row + spacing: 4 + property string text: "THISISROW" + anchors.left: parent.left + Repeater { + model: parent.text.length + delegate: positionerDelegate + } + } + Flow { + id: flow + spacing: 4 + width: 90 + property string text: "THISISFLOW" + anchors.left: parent.left + Repeater { + model: parent.text.length + delegate: positionerDelegate + } + } + Grid { + id: grid + spacing: 4 + columns: 6 + property string text: "THISISGRID" + anchors.left: parent.left + Repeater { + model: parent.text.length + delegate: positionerDelegate + } + } + Component { + id: positionerDelegate + Text { + color: "white" + font.pixelSize: 20 + text: parent.text[index] + Rectangle { + z: -1 + opacity: 0.7 + color: "black" + anchors.fill: parent + } + } + } + } + + Text { + text: "Text alignment" + anchors.left: parent.left + } + + Rectangle { + id: textStrings + width: 148 + height: 85 + color: "white" + anchors.left: parent.left + Column { + spacing: 5 + width: parent.width + anchors { fill: parent; margins: 5 } + Text { + id: englishText + width: parent.width + text: "English text" + } + Text { + id: arabicText + width: parent.width + text: "النص العربي" + } + Text { + id: leftAlignedText + width: parent.width + text: "Text aligned to left" + horizontalAlignment: Text.AlignLeft + } + Text { + id: rightAlignedText + width: parent.width + text: "Text aligned to right" + horizontalAlignment: Text.AlignRight + } + } + } + + Text { + text: "Model views" + anchors.left: parent.left + } + + Column { + id: views + spacing: 10 + anchors.left: parent.left + ListView { + id: listView + z: -1 + clip: true + model: text.length + width: 360; height: 45 + orientation: Qt.Horizontal + property string text: "LISTVIEWLISTVIEWLISTVIEWLISTVIEWLISTVIEWLISTVIEW" + delegate: Rectangle { + color: "black" + width: 45; height: 45 + Rectangle { + anchors { fill: parent; margins: 1 } + color: "red" + } + Text { + text: listView.text[index] + font.pixelSize: 30 + anchors.centerIn: parent + } + } + } + GridView { + id: gridView + z: -1 + clip: true + model: text.length + width: 180; height: 90 + cellWidth: 45; cellHeight: 45 + property string text: "GRIDVIEWGRIDVIEWGRIDVIEWGRIDVIEWGRIDVIEWGRIDVIEW" + anchors.left: parent.left + delegate: Rectangle { + color: "black" + width: 45; height: 45 + Rectangle { + anchors { fill: parent; margins: 1 } + color: "red" + } + Text { + anchors.centerIn: parent + font.pixelSize: 30 + text: gridView.text[index] + } + } + } + } + + Text { + text: "Item x" + anchors.left: parent.left + } + Rectangle { + id: items + color: Qt.rgba(0.2, 0.2, 0.2, 0.6) + width: 275; height: 95 + anchors.left: parent.left + Rectangle { + y: 5; x: 5 + width: 130; height: 40 + Text { + text: "Item with x: 5\n(not mirrored)" + anchors.centerIn: parent + } + } + Rectangle { + color: Qt.rgba(0.7, 0.7, 0.7) + y: 50; x: mirror(5) + width: 130; height: 40 + function mirror(value) { + return LayoutMirroring.enabled ? (parent.width - width - value) : value; + } + Text { + text: "Item with x: " + parent.x + "\n(manually mirrored)" + anchors.centerIn: parent + } + } + } + Text { + text: "Item anchors" + anchors.left: parent.left + } + + Rectangle { + id: anchoredItems + color: Qt.rgba(0.2, 0.2, 0.2, 0.6) + width: 270; height: 170 + anchors.left: parent.left + Rectangle { + id: blackRectangle + color: "black" + width: 180; height: 90 + anchors { horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: 30 } + Text { + text: "Horizontal center anchored\nwith offset 30\nto the horizontal center\nof the parent." + color: "white" + anchors.centerIn: parent + } + } + Rectangle { + id: whiteRectangle + color: "white" + width: 120; height: 70 + anchors { left: parent.left; bottom: parent.bottom } + Text { + text: "Left side anchored\nto the left side\nof the parent." + color: "black" + anchors.centerIn: parent + } + } + Rectangle { + id: grayRectangle + color: Qt.rgba(0.7, 0.7, 0.7) + width: 140; height: 90 + anchors { right: parent.right; bottom: parent.bottom } + Text { + text: "Right side anchored\nto the right side\nof the parent." + anchors.centerIn: parent + } + } + } + Rectangle { + id: mirrorButton + color: mouseArea2.pressed ? "black" : "gray" + height: 50; width: parent.width + anchors.left: parent.left + Column { + anchors.centerIn: parent + Text { + text: root.mirror ? "Mirrored" : "Not mirrored" + color: "white" + font.pixelSize: 16 + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + text: "(click here to toggle)" + color: "white" + font.pixelSize: 10 + font.italic: true + anchors.horizontalCenter: parent.horizontalCenter + } + } + MouseArea { + id: mouseArea2 + anchors.fill: parent + onClicked: { + root.mirror = !root.mirror; + } + } + } + } +} + diff --git a/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject b/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject new file mode 100644 index 0000000000..e5262175c5 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject @@ -0,0 +1,18 @@ +/* File generated by QtCreator */ + +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml b/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml new file mode 100644 index 0000000000..4c40c3ceb1 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml @@ -0,0 +1,426 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.1 + +Rectangle { + id: root + color: "white" + width: containerColumn.width + height: containerColumn.height + containerColumn.anchors.topMargin + + property bool mirror: false + property variant horizontalAlignment: undefined + + property variant editorType: ["Plain Text", "Styled Text", "Plain Rich Text", "Italic Rich Text", "Plain TextEdit", "Italic TextEdit", "TextInput"] + property variant text: ["", " ", "Hello world!", "مرحبا العالم!", "Hello world! Hello!\nHello world! Hello!", "مرحبا العالم! مرحبا! مرحبا العالم! مرحبا!" ,"مرحبا العالم! مرحبا! مرحبا Hello world!\nالعالم! مرحبا!"] + property variant description: ["empty text", "white-space-only text", "left-to-right text", "right-to-left text", "multi-line left-to-right text", "multi-line right-to-left text", "multi-line bidi text"] + property variant textComponents: [plainTextComponent, styledTextComponent, richTextComponent, italicRichTextComponent, plainTextEdit, italicTextEdit, textInput] + + function shortText(horizontalAlignment) { + + // all the different QML editors have + // the same alignment values + switch (horizontalAlignment) { + case Text.AlignLeft: + return "L"; + case Text.AlignRight: + return "R"; + case Text.AlignHCenter: + return "C"; + case Text.AlignJustify: + return "J"; + default: + return "Error"; + } + } + Column { + id: containerColumn + spacing: 10 + width: editorTypeRow.width + anchors { top: parent.top; topMargin: 5 } + Row { + id: editorTypeRow + Repeater { + model: editorType.length + Item { + width: editorColumn.width + height: editorColumn.height + Column { + id: editorColumn + spacing: 5 + width: textColumn.width+10 + Text { + text: root.editorType[index] + font.pixelSize: 16 + anchors.horizontalCenter: parent.horizontalCenter + } + Column { + id: textColumn + spacing: 5 + anchors.horizontalCenter: parent.horizontalCenter + Repeater { + model: textComponents.length + delegate: textComponents[index] + } + } + } + } + } + } + Column { + spacing: 2 + width: parent.width + Rectangle { + // button + height: 50; width: parent.width + color: mouseArea.pressed ? "black" : "lightgray" + Column { + anchors.centerIn: parent + Text { + text: root.mirror ? "Mirrored" : "Not mirrored" + color: "white" + font.pixelSize: 16 + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + text: "(click here to toggle)" + color: "white" + font.pixelSize: 10 + font.italic: true + anchors.horizontalCenter: parent.horizontalCenter + } + } + MouseArea { + id: mouseArea + property int index: 0 + anchors.fill: parent + onClicked: root.mirror = !root.mirror + } + } + Rectangle { + // button + height: 50; width: parent.width + color: mouseArea2.pressed ? "black" : "gray" + Column { + anchors.centerIn: parent + Text { + text: { + if (root.horizontalAlignment == undefined) + return "Implict alignment"; + switch (root.horizontalAlignment) { + case Text.AlignLeft: + return "Left alignment"; + case Text.AlignRight: + return "Right alignment"; + case Text.AlignHCenter: + return "Center alignment"; + case Text.AlignJustify: + return "Justify alignment"; + } + } + color: "white" + font.pixelSize: 16 + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + text: "(click here to toggle)" + color: "white" + font.pixelSize: 10 + font.italic: true + anchors.horizontalCenter: parent.horizontalCenter + } + } + MouseArea { + id: mouseArea2 + property int index: 0 + anchors.fill: parent + onClicked: { + if (index < 0) { + root.horizontalAlignment = undefined; + } else { + root.horizontalAlignment = Math.pow(2, index); + } + index = (index + 2) % 5 - 1; + } + } + } + } + } + + Component { + id: plainTextComponent + Text { + width: 180 + text: root.text[index] + font.pixelSize: 24 + wrapMode: Text.WordWrap + horizontalAlignment: root.horizontalAlignment + LayoutMirroring.enabled: root.mirror + textFormat: Text.RichText + Rectangle { + z: -1 + color: Qt.rgba(0.8, 0.2, 0.2, 0.3) + anchors.fill: parent + } + Text { + text: root.description[index] + color: Qt.rgba(1,1,1,1.0) + anchors.centerIn: parent + Rectangle { + z: -1 + color: Qt.rgba(0.3, 0, 0, 0.3) + anchors { fill: parent; margins: -3 } + } + } + Text { + color: "white" + text: shortText(parent.horizontalAlignment) + anchors { top: parent.top; right: parent.right; margins: 2 } + } + } + } + + Component { + id: styledTextComponent + Text { + width: 180 + text: root.text[index] + font.pixelSize: 24 + wrapMode: Text.WordWrap + horizontalAlignment: root.horizontalAlignment + LayoutMirroring.enabled: root.mirror + textFormat: Text.RichText + style: Text.Sunken + styleColor: "white" + Rectangle { + z: -1 + color: Qt.rgba(0.8, 0.2, 0.2, 0.3) + anchors.fill: parent + } + Text { + text: root.description[index] + color: Qt.rgba(1,1,1,1.0) + anchors.centerIn: parent + Rectangle { + z: -1 + color: Qt.rgba(0.3, 0, 0, 0.3) + anchors { fill: parent; margins: -3 } + } + } + Text { + color: "white" + text: shortText(parent.horizontalAlignment) + anchors { top: parent.top; right: parent.right; margins: 2 } + } + } + } + + Component { + id: richTextComponent + Text { + width: 180 + text: root.text[index] + font.pixelSize: 24 + wrapMode: Text.WordWrap + horizontalAlignment: root.horizontalAlignment + LayoutMirroring.enabled: root.mirror + textFormat: Text.RichText + Rectangle { + z: -1 + color: Qt.rgba(0.8, 0.2, 0.2, 0.3) + anchors.fill: parent + } + Text { + text: root.description[index] + color: Qt.rgba(1,1,1,1.0) + anchors.centerIn: parent + Rectangle { + z: -1 + color: Qt.rgba(0.3, 0, 0, 0.3) + anchors { fill: parent; margins: -3 } + } + } + Text { + color: "white" + text: shortText(parent.horizontalAlignment) + anchors { top: parent.top; right: parent.right; margins: 2 } + } + } + } + + Component { + id: italicRichTextComponent + Text { + width: 180 + text: "" + root.text[index] + "" + font.pixelSize: 24 + wrapMode: Text.WordWrap + horizontalAlignment: root.horizontalAlignment + LayoutMirroring.enabled: root.mirror + textFormat: Text.RichText + property variant backgroundColor: Qt.rgba(0.8, 0.2, 0.2, 0.3) + Rectangle { + z: -1 + color: parent.backgroundColor + anchors.fill: parent + } + Text { + text: root.description[index] + color: Qt.rgba(1,1,1,1.0) + anchors.centerIn: parent + Rectangle { + z: -1 + color: Qt.rgba(0.3, 0, 0, 0.3) + anchors { fill: parent; margins: -3 } + } + } + Text { + color: "white" + text: shortText(parent.horizontalAlignment) + anchors { top: parent.top; right: parent.right; margins: 2 } + } + } + } + + Component { + id: plainTextEdit + TextEdit { + width: 180 + text: root.text[index] + font.pixelSize: 24 + cursorVisible: true + wrapMode: TextEdit.WordWrap + horizontalAlignment: root.horizontalAlignment + LayoutMirroring.enabled: root.mirror + Rectangle { + z: -1 + color: Qt.rgba(0.5, 0.5, 0.2, 0.3) + anchors.fill: parent + } + Text { + text: root.description[index] + color: Qt.rgba(1,1,1,1.0) + anchors.centerIn: parent + Rectangle { + z: -1 + color: Qt.rgba(0.3, 0, 0, 0.3) + anchors { fill: parent; margins: -3 } + } + } + Text { + color: "white" + text: shortText(parent.horizontalAlignment) + anchors { top: parent.top; right: parent.right; margins: 2 } + } + } + } + + Component { + id: italicTextEdit + TextEdit { + width: 180 + text: "" + root.text[index] + "" + font.pixelSize: 24 + cursorVisible: true + wrapMode: TextEdit.WordWrap + horizontalAlignment: root.horizontalAlignment + LayoutMirroring.enabled: root.mirror + Rectangle { + z: -1 + color: Qt.rgba(0.5, 0.5, 0.2, 0.3) + anchors.fill: parent + } + Text { + text: root.description[index] + color: Qt.rgba(1,1,1,1.0) + anchors.centerIn: parent + Rectangle { + z: -1 + color: Qt.rgba(0.3, 0, 0, 0.3) + anchors { fill: parent; margins: -3 } + } + } + Text { + color: "white" + text: shortText(parent.horizontalAlignment) + anchors { top: parent.top; right: parent.right; margins: 2 } + } + } + } + + Component { + id: textInput + Item { + width: 180 + height: textInput.text.length > 20 ? 3*textInput.height : textInput.height + TextInput { + id: textInput + width: 180 + text: root.text[index] + font.pixelSize: 24 + cursorVisible: true + horizontalAlignment: root.horizontalAlignment + LayoutMirroring.enabled: root.mirror + Rectangle { + z: -1 + color: Qt.rgba(0.6, 0.4, 0.2, 0.3) + anchors.fill: parent + } + Text { + text: root.description[index] + color: Qt.rgba(1,1,1,1.0) + anchors.centerIn: parent + Rectangle { + z: -1 + color: Qt.rgba(0.3, 0, 0, 0.3) + anchors { fill: parent; margins: -3 } + } + } + Text { + color: "white" + text: shortText(parent.horizontalAlignment) + anchors { top: parent.top; right: parent.right; margins: 2 } + } + } + } + } +} + diff --git a/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject b/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject new file mode 100644 index 0000000000..e5262175c5 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject @@ -0,0 +1,18 @@ +/* File generated by QtCreator */ + +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/screenorientation/Core/Bubble.qml b/examples/declarative/qtquick1/screenorientation/Core/Bubble.qml new file mode 100644 index 0000000000..3ada7df528 --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/Core/Bubble.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + property bool rising: false + property bool verticalRise: true + property real xAttractor: 0 + property real yAttractor: 0 + + width: 5 + 10*Math.random() + height: width + radius: Math.floor(width/2)-1 + property real amountOfGray: Math.random() + color: Qt.rgba(amountOfGray,amountOfGray,amountOfGray,1) + + y: (rising && verticalRise) ? yAttractor : Math.random()*(main.inPortrait ? main.baseHeight : main.baseWidth) + x: (rising && !verticalRise) ? xAttractor : Math.random()*(main.inPortrait ? main.baseWidth : main.baseHeight) + Behavior on x { + id: xBehavior + SmoothedAnimation { + velocity: 100+Math.random()*100 + } + } + Behavior on y { + id: yBehavior + SmoothedAnimation { + velocity: 100+Math.random()*100 + } + } + Timer { + interval: 80+Math.random()*40 + repeat: true + running: true + onTriggered: { + if (rising) { + if (x > main.width || x < 0) { + xBehavior.enabled = false; + rising = false; + xBehavior.enabled = true; + rising = true; + } + if (y > main.height || y < 0) { + yBehavior.enabled = false; + rising = false; + yBehavior.enabled = true; + rising = true; + } + } + } + } +} diff --git a/examples/declarative/qtquick1/screenorientation/Core/Button.qml b/examples/declarative/qtquick1/screenorientation/Core/Button.qml new file mode 100644 index 0000000000..8fefe0c0cf --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/Core/Button.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +Item { + id: button + signal clicked + property string text + property bool toggled: false + width: 100 + height: 60 + Rectangle { + anchors.fill: button + anchors.margins: mouseArea.pressed ? 3 : 2 + color: toggled ? (mouseArea.pressed ? "#442222" : "darkred") : (mouseArea.pressed ? "#333333": "black") + radius: mouseArea.pressed ? 8 : 6 + Text { + id: text + anchors.centerIn: parent + text: button.text + font.pixelSize: mouseArea.pressed ? 12 : 14 + color: "white" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: { + button.clicked() + } + } + } +} diff --git a/examples/declarative/qtquick1/screenorientation/Core/screenorientation.js b/examples/declarative/qtquick1/screenorientation/Core/screenorientation.js new file mode 100644 index 0000000000..842846becf --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/Core/screenorientation.js @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +function printOrientation(orientation) { + var orientationString; + if (orientation == Orientation.Portrait) { + orientationString = "Portrait"; + } else if (orientation == Orientation.Landscape) { + orientationString = "Landscape"; + } else if (orientation == Orientation.PortraitInverted) { + orientationString = "Portrait inverted"; + } else if (orientation == Orientation.LandscapeInverted) { + orientationString = "Landscape inverted"; + } else { + orientationString = "UnknownOrientation"; + } + return orientationString; +} + +function getAngle(orientation) { + var angle; + if (orientation == Orientation.Portrait) { + angle = 0; + } else if (orientation == Orientation.Landscape) { + angle = 90; + } else if (orientation == Orientation.PortraitInverted) { + angle = 180; + } else if (orientation == Orientation.LandscapeInverted) { + angle = 270; + } else { + angle = 0; + } + return angle; +} + +function parallel(firstOrientation, secondOrientation) { + var difference = getAngle(firstOrientation) - getAngle(secondOrientation) + return difference % 180 == 0; +} + +function calculateGravityPoint(firstOrientation, secondOrientation) { + var position = Qt.point(0, 0); + var difference = getAngle(firstOrientation) - getAngle(secondOrientation) + if (difference < 0) { + difference = 360 + difference; + } + if (difference == 0) { + position = Qt.point(0, -10); + } else if (difference == 90) { + position = Qt.point(-10, 0); + } else if (difference == 180) { + position = Qt.point(0, 1000); + } else if (difference == 270) { + position = Qt.point(1000, 0); + } + return position; +} diff --git a/examples/declarative/qtquick1/screenorientation/screenorientation.qml b/examples/declarative/qtquick1/screenorientation/screenorientation.qml new file mode 100644 index 0000000000..b9db83e61b --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/screenorientation.qml @@ -0,0 +1,201 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "Core" +import "Core/screenorientation.js" as ScreenOrientation + +Rectangle { + id: window + width: 360 + height: 640 + color: "white" + + Rectangle { + id: main + clip: true + property variant selectedOrientation: Orientation.UnknownOrientation + property variant activeOrientation: selectedOrientation == Orientation.UnknownOrientation ? runtime.orientation : selectedOrientation + state: "orientation " + activeOrientation + property bool inPortrait: (activeOrientation == Orientation.Portrait || activeOrientation == Orientation.PortraitInverted); + + // rotation correction for landscape devices like N900 + property bool landscapeWindow: window.width > window.height + property variant rotationDelta: landscapeWindow ? -90 : 0 + rotation: rotationDelta + + // initial state is portrait + property real baseWidth: landscapeWindow ? window.height-10 : window.width-10 + property real baseHeight: landscapeWindow ? window.width-10 : window.height-10 + + width: baseWidth + height: baseHeight + anchors.centerIn: parent + + color: "black" + gradient: Gradient { + GradientStop { position: 0.0; color: Qt.rgba(0.5,0.5,0.5,0.5) } + GradientStop { position: 0.8; color: "black" } + GradientStop { position: 1.0; color: "black" } + } + Item { + id: bubbles + property bool rising: false + anchors.fill: parent + property variant gravityPoint: ScreenOrientation.calculateGravityPoint(main.activeOrientation, runtime.orientation) + Repeater { + model: 24 + Bubble { + rising: bubbles.rising + verticalRise: ScreenOrientation.parallel(main.activeOrientation, runtime.orientation) + xAttractor: parent.gravityPoint.x + yAttractor: parent.gravityPoint.y + } + } + Component.onCompleted: bubbles.rising = true; + } + + Column { + width: centeredText.width + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenterOffset: 30 + Text { + text: "Orientation" + color: "white" + font.pixelSize: 22 + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + id: centeredText + text: ScreenOrientation.printOrientation(main.activeOrientation) + color: "white" + font.pixelSize: 40 + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + text: "sensor: " + ScreenOrientation.printOrientation(runtime.orientation) + color: "white" + font.pixelSize: 14 + anchors.horizontalCenter: parent.horizontalCenter + } + } + Flow { + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 10 + spacing: 4 + Button { + width: main.inPortrait ? (parent.width-4)/2 : (parent.width-8)/3 + text: "Portrait" + onClicked: main.selectedOrientation = Orientation.Portrait + toggled: main.selectedOrientation == Orientation.Portrait + } + Button { + width: main.inPortrait ? (parent.width-4)/2 : (parent.width-8)/3 + text: "Portrait inverted" + onClicked: main.selectedOrientation = Orientation.PortraitInverted + toggled: main.selectedOrientation == Orientation.PortraitInverted + } + Button { + width: main.inPortrait ? (parent.width-4)/2 : (parent.width-8)/3 + text: "Landscape" + onClicked: main.selectedOrientation = Orientation.Landscape + toggled: main.selectedOrientation == Orientation.Landscape + } + Button { + width: main.inPortrait ? (parent.width-4)/2 : (parent.width-8)/3 + text: "Landscape inverted" + onClicked: main.selectedOrientation = Orientation.LandscapeInverted + toggled: main.selectedOrientation == Orientation.LandscapeInverted + } + Button { + width: main.inPortrait ? parent.width : 2*(parent.width-2)/3 + text: "From runtime.orientation" + onClicked: main.selectedOrientation = Orientation.UnknownOrientation + toggled: main.selectedOrientation == Orientation.UnknownOrientation + } + } + states: [ + State { + name: "orientation " + Orientation.Landscape + PropertyChanges { + target: main + rotation: ScreenOrientation.getAngle(Orientation.Landscape)+rotationDelta + width: baseHeight + height: baseWidth + } + }, + State { + name: "orientation " + Orientation.PortraitInverted + PropertyChanges { + target: main + rotation: ScreenOrientation.getAngle(Orientation.PortraitInverted)+rotationDelta + width: baseWidth + height: baseHeight + } + }, + State { + name: "orientation " + Orientation.LandscapeInverted + PropertyChanges { + target: main + rotation: ScreenOrientation.getAngle(Orientation.LandscapeInverted)+rotationDelta + width: baseHeight + height: baseWidth + } + } + ] + transitions: Transition { + ParallelAnimation { + RotationAnimation { + direction: RotationAnimation.Shortest + duration: 300 + easing.type: Easing.InOutQuint + } + NumberAnimation { + properties: "x,y,width,height" + duration: 300 + easing.type: Easing.InOutQuint + } + } + } + } +} diff --git a/examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject b/examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/sqllocalstorage/hello.qml b/examples/declarative/qtquick1/sqllocalstorage/hello.qml new file mode 100644 index 0000000000..55a04c3657 --- /dev/null +++ b/examples/declarative/qtquick1/sqllocalstorage/hello.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import QtQuick 1.0 + +Rectangle { + color: "white" + width: 200 + height: 100 + + Text { + text: "?" + anchors.horizontalCenter: parent.horizontalCenter + function findGreetings() { + var db = openDatabaseSync("QDeclarativeExampleDB", "1.0", "The Example QML SQL!", 1000000); + + db.transaction( + function(tx) { + // Create the database if it doesn't already exist + tx.executeSql('CREATE TABLE IF NOT EXISTS Greeting(salutation TEXT, salutee TEXT)'); + + // Add (another) greeting row + tx.executeSql('INSERT INTO Greeting VALUES(?, ?)', [ 'hello', 'world' ]); + + // Show all added greetings + var rs = tx.executeSql('SELECT * FROM Greeting'); + + var r = "" + for (var i = 0; i < rs.rows.length; i++) { + r += rs.rows.item(i).salutation + ", " + rs.rows.item(i).salutee + "\n" + } + text = r + } + ) + } + + Component.onCompleted: findGreetings() + } +} +//![0] diff --git a/examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject b/examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/text/fonts/availableFonts.qml b/examples/declarative/qtquick1/text/fonts/availableFonts.qml new file mode 100644 index 0000000000..58073ac072 --- /dev/null +++ b/examples/declarative/qtquick1/text/fonts/availableFonts.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + width: 480; height: 640; color: "steelblue" + + ListView { + anchors.fill: parent; model: Qt.fontFamilies() + + delegate: Item { + height: 40; width: ListView.view.width + Text { + anchors.centerIn: parent + text: modelData; font.family: modelData; font.pixelSize: 24; color: "white" + } + } + } +} diff --git a/examples/declarative/qtquick1/text/fonts/banner.qml b/examples/declarative/qtquick1/text/fonts/banner.qml new file mode 100644 index 0000000000..7d5ce2e2e5 --- /dev/null +++ b/examples/declarative/qtquick1/text/fonts/banner.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: screen + + property int pixelSize: screen.height * 1.25 + property color textColor: "lightsteelblue" + property string text: "Hello world! " + + width: 640; height: 320 + color: "steelblue" + + Row { + y: -screen.height / 4.5 + + NumberAnimation on x { from: 0; to: -text.width; duration: 6000; loops: Animation.Infinite } + Text { id: text; font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } + Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } + Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } + } +} diff --git a/examples/declarative/qtquick1/text/fonts/fonts.qml b/examples/declarative/qtquick1/text/fonts/fonts.qml new file mode 100644 index 0000000000..8dd6b1978b --- /dev/null +++ b/examples/declarative/qtquick1/text/fonts/fonts.qml @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + property string myText: "The quick brown fox jumps over the lazy dog." + + width: 800; height: 480 + color: "steelblue" + + FontLoader { id: fixedFont; name: "Courier" } + FontLoader { id: localFont; source: "fonts/tarzeau_ocr_a.ttf" } + FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" } + + Column { + anchors { fill: parent; leftMargin: 10; rightMargin: 10 } + spacing: 15 + + Text { + text: myText + color: "lightsteelblue" + width: parent.width + elide: Text.ElideRight + font.family: "Times"; font.pointSize: 42 + } + Text { + text: myText + color: "lightsteelblue" + width: parent.width + elide: Text.ElideLeft + font { family: "Times"; pointSize: 42; capitalization: Font.AllUppercase } + } + Text { + text: myText + color: "lightsteelblue" + width: parent.width + elide: Text.ElideMiddle + font { family: fixedFont.name; pointSize: 42; weight: Font.Bold; capitalization: Font.AllLowercase } + } + Text { + text: myText + color: "lightsteelblue" + width: parent.width + elide: Text.ElideRight + font { family: fixedFont.name; pointSize: 42; italic: true; capitalization: Font.SmallCaps } + } + Text { + text: myText + color: "lightsteelblue" + width: parent.width + elide: Text.ElideLeft + font { family: localFont.name; pointSize: 42; capitalization: Font.Capitalize } + } + Text { + text: { + if (webFont.status == FontLoader.Ready) myText + else if (webFont.status == FontLoader.Loading) "Loading..." + else if (webFont.status == FontLoader.Error) "Error loading font" + } + color: "lightsteelblue" + width: parent.width + elide: Text.ElideMiddle + font.family: webFont.name; font.pointSize: 42 + } + } +} diff --git a/examples/declarative/qtquick1/text/fonts/fonts.qmlproject b/examples/declarative/qtquick1/text/fonts/fonts.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/text/fonts/fonts.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf b/examples/declarative/qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cf93f9651fc0988d55a8df32f131a8125ff3fe99 GIT binary patch literal 24544 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 R)C$zi;OXk;vd$@?2>_6oGzI_w literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/text/textselection/pics/startHandle.sci b/examples/declarative/qtquick1/text/textselection/pics/startHandle.sci new file mode 100644 index 0000000000..f9eae204c1 --- /dev/null +++ b/examples/declarative/qtquick1/text/textselection/pics/startHandle.sci @@ -0,0 +1,5 @@ +border.left: 6 +border.top: 6 +border.bottom: 6 +border.right: 0 +source: startHandle.png diff --git a/examples/declarative/qtquick1/text/textselection/textselection.qml b/examples/declarative/qtquick1/text/textselection/textselection.qml new file mode 100644 index 0000000000..26073f4dfe --- /dev/null +++ b/examples/declarative/qtquick1/text/textselection/textselection.qml @@ -0,0 +1,289 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 + +Rectangle { + id: editor + color: "lightGrey" + width: 640; height: 480 + + Rectangle { + color: "white" + anchors.fill: parent + anchors.margins: 20 + + BorderImage { + id: startHandle + source: "pics/startHandle.sci" + opacity: 0.0 + width: 10 + x: edit.positionToRectangle(edit.selectionStart).x - flick.contentX-width + y: edit.positionToRectangle(edit.selectionStart).y - flick.contentY + height: edit.positionToRectangle(edit.selectionStart).height + } + + BorderImage { + id: endHandle + source: "pics/endHandle.sci" + opacity: 0.0 + width: 10 + x: edit.positionToRectangle(edit.selectionEnd).x - flick.contentX + y: edit.positionToRectangle(edit.selectionEnd).y - flick.contentY + height: edit.positionToRectangle(edit.selectionEnd).height + } + + Flickable { + id: flick + + anchors.fill: parent + contentWidth: edit.paintedWidth + contentHeight: edit.paintedHeight + interactive: true + clip: true + + function ensureVisible(r) { + if (contentX >= r.x) + contentX = r.x; + else if (contentX+width <= r.x+r.width) + contentX = r.x+r.width-width; + if (contentY >= r.y) + contentY = r.y; + else if (contentY+height <= r.y+r.height) + contentY = r.y+r.height-height; + } + + TextEdit { + id: edit + width: flick.width + height: flick.height + focus: true + wrapMode: TextEdit.Wrap + + onCursorRectangleChanged: flick.ensureVisible(cursorRectangle) + + text: "

            Text Selection

            " + +"

            This example is a whacky text selection mechanisms, showing how these can be implemented in the TextEdit element, to cater for whatever style is appropriate for the target platform." + +"

            Press-and-hold to select a word, then drag the selection handles." + +"

            Drag outside the selection to scroll the text." + +"

            Click inside the selection to cut/copy/paste/cancel selection." + +"

            It's too whacky to let you paste if there is no current selection." + + MouseArea { + property string drag: "" + property int pressPos + + x: -startHandle.width + y: 0 + width: parent.width+startHandle.width+endHandle.width + height: parent.height + + onPressAndHold: { + if (editor.state == "") { + edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y); + edit.selectWord(); + editor.state = "selection" + } + } + + onClicked: { + if (editor.state == "") { + edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y); + if (!edit.focus) + edit.focus = true; + edit.openSoftwareInputPanel(); + } + } + + function hitHandle(h,x,y) { + return x>=h.x+flick.contentX && x=h.y+flick.contentY && y= edit.selectionStart && pos <= edit.selectionEnd) { + drag = "selection" + flick.interactive = false + } else { + drag = "" + flick.interactive = true + } + } + } + } + + onReleased: { + if (editor.state == "selection") { + if (drag == "selection") { + editor.state = "menu" + } + drag = "" + } + flick.interactive = true + } + + onPositionChanged: { + if (editor.state == "selection" && drag != "") { + if (drag == "start") { + var pos = edit.positionAt(mouse.x+x+startHandle.width/2,mouse.y+y); + var e = edit.selectionEnd; + if (e < pos) + e = pos; + edit.select(pos,e); + } else if (drag == "end") { + var pos = edit.positionAt(mouse.x+x-endHandle.width/2,mouse.y+y); + var s = edit.selectionStart; + if (s > pos) + s = pos; + edit.select(s,pos); + } + } + } + } + } + } + + Item { + id: menu + opacity: 0.0 + width: 100 + height: 120 + anchors.centerIn: parent + + Rectangle { + border.width: 1 + border.color: "darkBlue" + radius: 15 + color: "#806080FF" + anchors.fill: parent + } + + Column { + anchors.centerIn: parent + spacing: 8 + + Rectangle { + border.width: 1 + border.color: "darkBlue" + color: "#ff7090FF" + width: 60 + height: 16 + + Text { anchors.centerIn: parent; text: "Cut" } + + MouseArea { + anchors.fill: parent + onClicked: { edit.cut(); editor.state = "" } + } + } + + Rectangle { + border.width: 1 + border.color: "darkBlue" + color: "#ff7090FF" + width: 60 + height: 16 + + Text { anchors.centerIn: parent; text: "Copy" } + + MouseArea { + anchors.fill: parent + onClicked: { edit.copy(); editor.state = "selection" } + } + } + + Rectangle { + border.width: 1 + border.color: "darkBlue" + color: "#ff7090FF" + width: 60 + height: 16 + + Text { anchors.centerIn: parent; text: "Paste" } + + MouseArea { + anchors.fill: parent + onClicked: { edit.paste(); edit.cursorPosition = edit.selectionEnd; editor.state = "" } + } + } + + Rectangle { + border.width: 1 + border.color: "darkBlue" + color: "#ff7090FF" + width: 60 + height: 16 + + Text { anchors.centerIn: parent; text: "Deselect" } + + MouseArea { + anchors.fill: parent + onClicked: { + edit.cursorPosition = edit.selectionEnd; + edit.deselect(); + editor.state = "" + } + } + } + } + } + } + + states: [ + State { + name: "selection" + PropertyChanges { target: startHandle; opacity: 1.0 } + PropertyChanges { target: endHandle; opacity: 1.0 } + }, + State { + name: "menu" + PropertyChanges { target: startHandle; opacity: 0.5 } + PropertyChanges { target: endHandle; opacity: 0.5 } + PropertyChanges { target: menu; opacity: 1.0 } + } + ] +} diff --git a/examples/declarative/qtquick1/text/textselection/textselection.qmlproject b/examples/declarative/qtquick1/text/textselection/textselection.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/text/textselection/textselection.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js b/examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js new file mode 100644 index 0000000000..dffcd565a2 --- /dev/null +++ b/examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// ![0] +WorkerScript.onMessage = function(msg) { + if (msg.action == 'appendCurrentTime') { + var data = {'time': new Date().toTimeString()}; + msg.model.append(data); + msg.model.sync(); // updates the changes to the list + } +} +// ![0] diff --git a/examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject b/examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject new file mode 100644 index 0000000000..fe2dc299a0 --- /dev/null +++ b/examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml b/examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml new file mode 100644 index 0000000000..42d1345292 --- /dev/null +++ b/examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// ![0] +import QtQuick 1.0 + +Rectangle { + color: "white" + width: 200 + height: 300 + + ListView { + anchors.fill: parent + model: listModel + delegate: Component { + Text { text: time } + } + + ListModel { id: listModel } + + WorkerScript { + id: worker + source: "dataloader.js" + } + + Timer { + id: timer + interval: 2000; repeat: true + running: true + triggeredOnStart: true + + onTriggered: { + var msg = {'action': 'appendCurrentTime', 'model': listModel}; + worker.sendMessage(msg); + } + } + } +} +// ![0] diff --git a/examples/declarative/qtquick1/threading/threading.qmlproject b/examples/declarative/qtquick1/threading/threading.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/threading/threading.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/threading/workerscript/workerscript.js b/examples/declarative/qtquick1/threading/workerscript/workerscript.js new file mode 100644 index 0000000000..f76471f920 --- /dev/null +++ b/examples/declarative/qtquick1/threading/workerscript/workerscript.js @@ -0,0 +1,15 @@ +var lastx = 0; +var lasty = 0; + +WorkerScript.onMessage = function(message) { + var ydiff = message.y - lasty; + var xdiff = message.x - lastx; + + var total = Math.sqrt(ydiff * ydiff + xdiff * xdiff); + + lastx = message.x; + lasty = message.y; + + WorkerScript.sendMessage( {xmove: xdiff, ymove: ydiff, move: total} ); +} + diff --git a/examples/declarative/qtquick1/threading/workerscript/workerscript.qml b/examples/declarative/qtquick1/threading/workerscript/workerscript.qml new file mode 100644 index 0000000000..9581123b92 --- /dev/null +++ b/examples/declarative/qtquick1/threading/workerscript/workerscript.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + width: 480; height: 320 + + WorkerScript { + id: myWorker + source: "workerscript.js" + + onMessage: { + console.log("Moved " + messageObject.xmove + " along the X axis."); + console.log("Moved " + messageObject.ymove + " along the Y axis."); + console.log("Moved " + messageObject.move + " pixels."); + } + } + + Rectangle { + width: 200; height: 200 + anchors.left: parent.left; anchors.leftMargin: 20 + color: "red" + + MouseArea { + anchors.fill: parent + onClicked: myWorker.sendMessage( { rectangle: "red", x: mouse.x, y: mouse.y } ); + } + } + + Rectangle { + width: 200; height: 200 + anchors.right: parent.right; anchors.rightMargin: 20 + color: "blue" + + MouseArea { + anchors.fill: parent + onClicked: myWorker.sendMessage( { rectangle: "blue", x: mouse.x, y: mouse.y } ); + } + } + + Text { + text: "Click a Rectangle!" + anchors { horizontalCenter: parent.horizontalCenter; bottom: parent.bottom; bottomMargin: 50 } + } +} diff --git a/examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject b/examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml b/examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml new file mode 100644 index 0000000000..c607194351 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import Qt.labs.gestures 1.0 + +// Only works on platforms with Touch support. + +Rectangle { + id: rect + width: 320 + height: 180 + + Text { + anchors.centerIn: parent + text: "Tap / TapAndHold / Pan / Pinch / Swipe\nOnly works on platforms with Touch support." + horizontalAlignment: Text.Center + } + + GestureArea { + anchors.fill: parent + focus: true + + // Only some of the many gesture properties are shown. See Gesture documentation. + + onTap: + console.log("tap pos = (",gesture.position.x,",",gesture.position.y,")") + onTapAndHold: + console.log("tap and hold pos = (",gesture.position.x,",",gesture.position.y,")") + onPan: + console.log("pan delta = (",gesture.delta.x,",",gesture.delta.y,") acceleration = ",gesture.acceleration) + onPinch: + console.log("pinch center = (",gesture.centerPoint.x,",",gesture.centerPoint.y,") rotation =",gesture.rotationAngle," scale =",gesture.scaleFactor) + onSwipe: + console.log("swipe angle=",gesture.swipeAngle) + onGesture: + console.log("gesture hot spot = (",gesture.hotSpot.x,",",gesture.hotSpot.y,")") + } +} diff --git a/examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject b/examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml b/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml new file mode 100644 index 0000000000..9bca78ff60 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: box + width: 350; height: 250 + + Rectangle { + id: redSquare + width: 80; height: 80 + anchors.top: parent.top; anchors.left: parent.left; anchors.margins: 10 + color: "red" + + Text { text: "Click"; font.pixelSize: 16; anchors.centerIn: parent } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + acceptedButtons: Qt.LeftButton | Qt.RightButton + + onEntered: info.text = 'Entered' + onExited: info.text = 'Exited (pressed=' + pressed + ')' + + onPressed: { + info.text = 'Pressed (button=' + (mouse.button == Qt.RightButton ? 'right' : 'left') + + ' shift=' + (mouse.modifiers & Qt.ShiftModifier ? 'true' : 'false') + ')' + var posInBox = redSquare.mapToItem(box, mouse.x, mouse.y) + posInfo.text = + mouse.x + ',' + mouse.y + ' in square' + + ' (' + posInBox.x + ',' + posInBox.y + ' in window)' + } + + onReleased: { + info.text = 'Released (isClick=' + mouse.isClick + ' wasHeld=' + mouse.wasHeld + ')' + posInfo.text = '' + } + + onPressAndHold: info.text = 'Press and hold' + onClicked: info.text = 'Clicked (wasHeld=' + mouse.wasHeld + ')' + onDoubleClicked: info.text = 'Double clicked' + } + } + + Rectangle { + id: blueSquare + width: 80; height: 80 + x: box.width - width - 10; y: 10 // making this item draggable, so don't use anchors + color: "blue" + + Text { text: "Drag"; font.pixelSize: 16; color: "white"; anchors.centerIn: parent } + + MouseArea { + anchors.fill: parent + drag.target: blueSquare + drag.axis: Drag.XandYAxis + drag.minimumX: 0 + drag.maximumX: box.width - parent.width + drag.minimumY: 0 + drag.maximumY: box.height - parent.width + } + } + + Text { + id: info + anchors.bottom: posInfo.top; anchors.horizontalCenter: parent.horizontalCenter; anchors.margins: 30 + + onTextChanged: console.log(text) + } + + Text { + id: posInfo + anchors.bottom: parent.bottom; anchors.horizontalCenter: parent.horizontalCenter; anchors.margins: 30 + } +} diff --git a/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject b/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml b/examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml new file mode 100644 index 0000000000..9439acea48 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.1 + +Rectangle { + width: 640 + height: 360 + color: "gray" + + Flickable { + id: flick + anchors.fill: parent + contentWidth: 500 + contentHeight: 500 + + PinchArea { + width: Math.max(flick.contentWidth, flick.width) + height: Math.max(flick.contentHeight, flick.height) + + property real initialWidth + property real initialHeight + onPinchStarted: { + initialWidth = flick.contentWidth + initialHeight = flick.contentHeight + } + + onPinchUpdated: { + // adjust content pos due to drag + flick.contentX += pinch.previousCenter.x - pinch.center.x + flick.contentY += pinch.previousCenter.y - pinch.center.y + + // resize content + flick.resizeContent(initialWidth * pinch.scale, initialHeight * pinch.scale, pinch.center) + } + + onPinchFinished: { + // Move its content within bounds. + flick.returnToBounds() + } + + Rectangle { + width: flick.contentWidth + height: flick.contentHeight + color: "white" + Image { + anchors.fill: parent + source: "qt-logo.jpg" + MouseArea { + anchors.fill: parent + onDoubleClicked: { + flick.contentWidth = 500 + flick.contentHeight = 500 + } + } + } + } + } + } +} diff --git a/examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject b/examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject new file mode 100644 index 0000000000..e5262175c5 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject @@ -0,0 +1,18 @@ +/* File generated by QtCreator */ + +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/touchinteraction/pincharea/qt-logo.jpg b/examples/declarative/qtquick1/touchinteraction/pincharea/qt-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4014b4659c1100c4a07cb562a3647fcfbb5f1cdd GIT binary patch literal 40886 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 19 ) + minutes = shift ? date.getUTCMinutes() + ((clock.shift % 1) * 60) : date.getMinutes() + seconds = date.getUTCSeconds(); + } + + Timer { + interval: 100; running: true; repeat: true; + onTriggered: clock.timeChanged() + } + + Image { id: background; source: "clock.png"; visible: clock.night == false } + Image { source: "clock-night.png"; visible: clock.night == true } + + + Image { + x: 92.5; y: 27 + source: "hour.png" + smooth: true + transform: Rotation { + id: hourRotation + origin.x: 7.5; origin.y: 73; + angle: (clock.hours * 30) + (clock.minutes * 0.5) + Behavior on angle { + SpringAnimation { spring: 2; damping: 0.2; modulus: 360 } + } + } + } + + Image { + x: 93.5; y: 17 + source: "minute.png" + smooth: true + transform: Rotation { + id: minuteRotation + origin.x: 6.5; origin.y: 83; + angle: clock.minutes * 6 + Behavior on angle { + SpringAnimation { spring: 2; damping: 0.2; modulus: 360 } + } + } + } + + Image { + x: 97.5; y: 20 + source: "second.png" + smooth: true + transform: Rotation { + id: secondRotation + origin.x: 2.5; origin.y: 80; + angle: clock.seconds * 6 + Behavior on angle { + SpringAnimation { spring: 2; damping: 0.2; modulus: 360 } + } + } + } + + Image { + anchors.centerIn: background; source: "center.png" + } + + Text { + id: cityLabel + y: 200; anchors.horizontalCenter: parent.horizontalCenter + color: "white" + font.bold: true; font.pixelSize: 14 + style: Text.Raised; styleColor: "black" + } +} diff --git a/examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml b/examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml new file mode 100644 index 0000000000..39f8f77e33 --- /dev/null +++ b/examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +Image { + source: "quit.png" + scale: quitMouse.pressed ? 0.8 : 1.0 + smooth: quitMouse.pressed + MouseArea { + id: quitMouse + anchors.fill: parent + anchors.margins: -10 + onClicked: Qt.quit() + } +} diff --git a/examples/declarative/qtquick1/toys/clocks/content/background.png b/examples/declarative/qtquick1/toys/clocks/content/background.png new file mode 100644 index 0000000000000000000000000000000000000000..a885950862ff9d709c70209d44d8af063939ae95 GIT binary patch literal 46895 zcmV)$K#sqOP)#BL-m*1|UEp5ey==qL(5q1_evBRx4Rlpj_+Ps@;;-(#m#` zl4?s;ly)VrY^`OLwOY!QY>74@nUn|$Adv}Rki!fx7)%a-4&D9U-FwbG=ic*P_df^( zL6Afb9$u%v`}KS0yC;3;9OImWw{CCU-n#X_*|$!?Ter7vtKVub_XcCkTW9ID-NyYk z<+n9{o8-r1ejD}Mu-}IKHsH6G-x_=^WWg%@*7aN4Z_9pL^4o&n=KVJ7w;8`p`|Z5n z&iU;uKYr`>I^W)s{%`(WDhTTx` zclm9n->zdYyqRwZlKcI3#BYZgNN?TVD1dyoJNe$kL{sPzzwPzgd)ZXF=&jLc3~k!9 zX?)F^HB*;da>$2h{IM;3hhLv>uMhIQ z80GRO9esz({PrQgZC&ksS(eo=zx?uz0|Nu=Jt&5~P!AkEdUOyk8VdNCGiONHYqc8W zc@ED!^9=0~5HA}&sk{e4H9tR}4Gs?C!>0e7k*A-2dab{|1E1KoZ5!;{w{NA{Y_9mf zUGT?t_P+b>JND8`FD>-(jXt7&>x+K(pZxZ?zt(5J*8uRQchcW10QA2T1?Nh?ecW&B zR?`f7_Uzd*GBUDZ_wL=J-EOyu&p+|R6L9k6Njg_vFiU^4yu1vfqoeV+R$pHQczvJu z-xpt-nVIQ%-?Ps?i^tRS-#2>crI&8J`R1Ds3=Iu+{jn{0(42ko#TSn~{P4qPDj$mr zz%TMSIPG`;pWhzw$NHvl`oGok@pAHA`%eFXufqwt%I|&x7vX-dZ{ECl+ZKOYTwGi` zH#b-Jd%$gYco@wdI>8<=^qib*ebT)N1e24Kbl;mV3N zJSb|Bj20~+{KlGswEqN_> z`ks64dD?5j8TC=PVEl?dR=mLf#%~XPFPdQAQ$C14nfv_ir^Rm9H?JhNc_(;}H=`!e zp2ri9E5CPudoBdtM-vDA3=}>TM%?;cEYvI_tg@=V+(o^Z877~FpId#OTq}GYH#Et_ z6w}vH?vIa;BhWAxv)yaM?cRJ`@ZfssuDkAf;?${A9Tmv=X+G}f{q7I^-#`795At2) zgZSTYkT3F-e%?E@LkA8VxWb!3n>w9NHa$H}0`HXv2_l+NTJWnNIe-2$rd_=M zu&V!|H3(`CIi~7$Kp^6A;D!MP`8#}{KVI|LV~?TZ^o}3=!5>`qi@@>EfBy52co22@ z&vBvoU;W>rN%nvHzq$7x`q7W>@aE_7FMs*VPk8W%uYwED|LlMF1q2F&gyfql z%JpjHwMTy6>^{h={6SZ+DYZ!h!#ksw`@1{+N|=deK+W;=(@*z+L$)0|cEHrs6oKWX zmtN{?VzKW6>(;G7@iFynp=oaqwoS^S;U%f9?+5fB*d# zDu;#?mp|~^qig@p&_UXUzdzAPC;nnT z-=$smLK}*<3-?dA>DkViHn?^H`Ah;IYCQkD>G-Q!Ltn$ad-oEs4jno~$KOxOpjNs1 z>Z|E7Y9p^X2>h&p2q^x!NBnuL=1eg0_$TQXeCIB}-*SMw0VdY_Ib0iW{^IZPHueDl zh8FyZi3#u*mhL0H10C7bgdepCMzT;lNOl~}8;oqBb`W8yc@We+0BYlP$cDYSHR;VQ z{Ac-lY40~@=#0x(y^>QSr#tTPpTF-4S>?mNbG`%lLe~SS104^b?wKI;s98|UU`QG@ zj{G(heDt-B9zEI@NO*tEnl;1(!25>}A10qmG>dE=kj`tFW8U<7$bZ&K0Bf62zkC3O){jGDO`X3Z0KwAV`p>bv2i^-X=zlJK-^(iyzQ~49 z5&*$l1dD^_#taI4y+A)E2ygpb2im7rVEXhNoPFXfxQ-)p2^R>7T#0F>%`038@IIa& z$>q$>&h|L`;?UoD=bc;qx!L-`4}S32U;gD^-mQKDE?obB&8|njBcohzb`|*f`+5)Y zBiF+}^t&IC$E{Xt$glSAdh*F9v9^ND3$&dju~&7j(ZoVi3k3m93=In0&|kpS5?5Es zV+>``*wljNR=;g%0m=yif9N{OF^PMl

            #s*b<^6y4SATV^a@qdh|9CI_`K!JDKlHZmaUY}~09LzsU|h-3 zsrB-lzlc|Q(_yzaeKHhwx$WG!lbq1iv;#WpXm%Vqa)ee#1PeOWs3|DVfS}mif`Ofb z(3om?5ClME0t~tj0TldPS&JBuz>u*)%)O08W)>x<85p*tUKkRr0fL5btT_w>4}{c^ ze{AWkqD{2+kPRQ_MbI$#IG5LQzw)1L!_tvOXulM|f|_#Iu3fZ8O@VtfF);*;TUEQr zhFTWSncUEH8yg#Q{`{Z$>Q}#duYYY>UBXis?eai*Hai)d1jSz=5jz6Y|(! z!0`hI4!py!Y(paS=ubTN+;bpWnRzj`t#aGxa*5J)lxhI&5S7wy3yFhy_}NVrkBI4D5CvHou||K3^xh<_c0u<*y? z^6-8U#*nAM-+^D^55NWI#uX-fIsznDT0`#Vkifyu=lmM(S57R$(qRP43e^3vpjNr& znrkSEhmk&sz*RK}`d|+{@IcfaXu6@_BCmUsx8r@m$N%I{{^Xg;<@_VRec?O72QhE- z7rutuHug34%M({!b=8$#@b^_U1FCyu)}qgVH`EXqt;k=-GNoRrY`h9`xKZB#@|IR!1 zwMINPM*!(U?uD}O?{`H`e*@x&cyI(j`MGB}oj0W*q<82HMO89w`Y2^F9@B41`Cwic2 zGKq#jbLo*sl0W$Nx4)e(u)Gg#X*3D2c&Rp3hoLJ+poQAPg8@NNLr@SHQ0Q#{My&#n zOteVSB)F(&R+&$@@`D%dyzPas)X%9>dPr#PRJuuK1Cg7Z%I|`>~Pr$v;Jm~lH{#d;~lzH>dN;$hFVUMO( z4h#eVO#(>XmHR~i5CTNN;`hs5t1LV+2i>zB)C8m*FoZ0^kI}rl?z*dLT9tAr0utOG zJb19{ug$}M{KtQML|tOcqabDFzBg%J?agaqd2sxI-~D6^SzUSM_M2|H>01B&7FT|B zqN@=q0l`yGJrzlYs727(M2&&@3R)=-{{lOwZdmo) zEVa+VUp(+zaL1DmLcM{1i+P;@k{AL;P&i1yK+q^{;gu7Eq@aD*?+eBU{Nw-n zX7oX7@Fu)@aQv7~`n~OKZ+nNo0GlPuh&D1tmqdkY^9kQ`$t9PNZ-F*40tH_~VAwSo zjJiDE<8o0){op&khob0?_rZ{gZe8GuSot_KRGh zj{h7CNjp0B!m+07Ov5v$z6wXqKJ0~h87|p)JzTc&2SYNjF$F*Rj^BXCPkabwmRHD3 zv*gBDcHjd*k|q)VBbZ^)#PWdY=7zx%01@}OC5=+sKIG5W04#cE{_LT1aQeL_eg&2-SVZ=W~@8G5B2fd)*4Tn#C z1AgMBKdAg-FP+wrfZHs*|8tN0TR1uW5}9V*PTOzG@RtvK0e<0q7vS3M|2Y2TZToM6 z|NO|`_`fR%&=HWx)fa^24on+P(Gw6z&@Sh72yOT!4DB!BI3^g>vZn&%5Kv zzbFA@>m*XlZuj3)u+J0{k7`TuL!BRM1`1s73Gj(sOz3r2q{N&*8{oe0A zDVX=?br<_3PrezfnO9v8@~uFu2glW%-=M_Bwr$&X_}g`|3h86O6=?VF-K0s-ztBWN z3^#fQo}yEYJuO&w^#*7R)d&bR))4hZFsEw#T-^gEtBZ3E(Mh))nKB%uvK*F0p+`sD z;4|cqOCE!he-y^`f|%nfjuEDYm(h-2sXfTsrf;^K;!_rwGM_<#A6*0$g)*NN9nxUE z*T&JY(ebfQ#PMS<{Xp6%KT;0Lbp4)tyf*=n;%=P~dk zcsgybD%Ap+S78ny)k^^mtfKS}?&zXKg)J6E~$Nm_a zts!XCykA6imgP{d*Bai*Z+DhpxxE0(%d>FR)&sC}?X4_;1>E)AzlFPAxX%O1fqy5g zxE1L5zoDE7CloQ3W;w~|7>$LbW+3HFToD|10t#yr)GnP4Ymjy@zuN7BUhDE}olXvm z$ChCBz8M%S1}M~v`4e>HG4Y7k(Sv|;DOC-leaN@J{q5(yCi(l*r%y{I;|yz(d%kCV z5D$(US#x0TDfrPJ{n4Af>9heIY|P$@Q(lc!;pd7bK^yl=U-}ZM@7AS*u>Rl%0z#dD z5Hv&p2ZN=aG>ACoHu@Td{S0yZ!+ogmsDv`os<&XMKFWabriTZ`V10zZQS-uXP2Fn% z10kq|0@wAHRJ}wisoRDZU`u%p%8^h`F;GqX5qiKi{V`^+d-HbKxBmNp8CdkMQw+it z8*e1kI&WsJU0z@4_g9}XVL173S;-}Si3{gaI=D``b_uhL681H`fyW@4LYL0T^(@_*`VPRqN z=YHze@_bsIH?Y{9%@C!9edenvS94$-#|V4yJ8vj#M> z7Bp*3zaN0n<^+s1#$mvNVSqq^02w9|slwnleLM$Areb9wC?< z#J`h-;pVX^xNOsVqteHJ&z}C8KaMdNKwrfJh=7NdmCFebOCB5ultsUvZ_mQa%2{Zm zM(Qrp>$(4IXCt$Pd=*Oo!E@mvP|%5|^Mz)X2MH}I7~N{~mKg#J`E73-hlPzx@XTG$ zz|wzN!UQ3iTypL3yi^m3SlNgg2OoQo4E@ND{K&h$@P#k@{eAb{H^&R-Kkodie}YFP-rqTA!b7nFmUS0P*|WZ?!Ja!qV-8phm4$gsq*2L~B-n^?pfXO#@E;{V6#2m2(6VDN?Iy z4)jlu?Va^Sprmw0}==F-`KV@I(e}4H;=va-{9zlQ(iC|!tM%z0nDGU?@?keGw%ycKLpN( zq3!-yx?Zcyz`3Q9eme!{7f->g2afaL$efLN6a-2^0RYq-!AHq*Tx5!{wF4+pYeZ_SACN2Dj$TSRj4_Jn$2eY)?06Vw?82xI?0Fi(YOlZ$-~egQbVMu3C%7f z7M?zT1}5IO28K4YO2B9|l;&Xnqt+13k&=CeGvUBaH`g(F#EyDEto7Rl0tN~dI^B&d zR0RsVwkS9m2&yJSsI}q@^S)qUAPBl>)>N|~sByetQ6$S));1jvjPjM$7((FF)(z9adadf zB5=^>xX_)3b^mZZv_|UCXo}{@po!pUYO~6c?ObPb3L{czF9#DUxmiGGnxDOtI-#)#B(bzV?IAnCA!CKIt@UBw6Ka6++&K1<6B z%B34_D!uoi7yc5SKO4Ydm`{R#MT}o71z08)Xo=<^a-&OOXbC=G2)O2dBL)HR_u_)E zp*;<=?elPQ?kLPIpY!);{c#7s3BQsSmptTKD5*(6QGg+{)oT&bEJ2%C@4VOj^*a5< zQ*ig)cN1p|11q@UIl_>keH!4r^M*1K>EqRU~ z`>`Lp*{={Iy5U-tPlbskELcJt6;~Ei)ytD@*mUbAXtXi{25wCTMFI;)s_IH>)Fk1? z6m$Ri=ybPgE!Z%!1J(|1g2~nfuQ7(B8Pp}==h_U>98#YFE`cSQSBef!uLTBf&H$mT zID(-9kPb3@F-YLD2&gMIUE#IfV0`bPW4FW8$B+8w>ST(c#Nx4JPSI1WO#pDJ1_s~B zYLXTr-aA&GA*170f0Mz4*D4dOb>0ly24}rSIlJ%@yfk+NR=i`64!+~iyCd^7`6gKg zOxqFdQE-woj{%TPAKnCKzj}`7@gMlW2V%*ybbP61;RPgKv(!KQ;Sb;9&9uMc=+;`6 zrGNHa)0Qn;HlTV%)!MI^Ngks~^_8!Dg`D-y#xAUT$CL+x2S?Kc zld2g2LVib6JL9~X5nbIeHH24L6YTMg!&|+1u>;n7VaO=*1i^_0#U)}e6tN~lOs9(9 zp-ij*l;D^XKoA@Z5ZqVSm#%*vpF+9_{Vkf869<456-+Na50Aa@bSNhDwoZnElLylZ zj|)S@#vgyi2})oyN;C!q9&+WwiN>aomtiIVpLa^ZTZ+t`%04}ZQ)Ym1eR#hGvue_p*ExF1QV+WK4aN7J z^TN4qd?ffwm@|Po)sY~@z3V}Eerbll;cUi5T1M5un@D~XtwMf@HEERw@mc(PjU`XZ z(t9)d&b7l^V0-}0&&_ar{xF}QqW@t}Dva^gWU^h>|=OSk;;FaPr2Dq70)Yauwku5|Zr#tHI2-~)a~ zhH-0G)?xJ0;h-s6Nn3V`tf9n4kEl|)TqQU#-O)Z^Zg zo=MFnjE(j5c;8Y|C)zD9o)~pkuJa{j#hnfK6M7 zW>%=c45k?!!)3!TV;11iM;@hP6M5iPLL?WGNJUc|3*qo~VYaNyns2b~>qp^{J$Q>^TBbOGw#e8QyOjH`DDk+`SqX~?m-`}R zzJuBKcHnQdSNyh&?NGf2p?yyKnaAg$`$&fpil|9242*k}4+I4+mIxB<_xblY@1K7C zbD#U%aXv#>nfNdLcJ%f3LB3Tr>Hh+_hWvvc{NVcrp9A+b#jCR7Z!k>+6MCCRcft12{od!;tekBZOdnu^9{U@GtK9Dk zh+uY64y59XXa^nSGYV0kTb-f$D^H8cnQ?*$w; z-+c3R0*)#`WJCW0Lw!PJN3&{l{~!UQg_>i)Mh!w{6@sL0BcIAh@{d0rL$zDHIkkQ4 z5{gz8QSfsX++;=-uIz&pVm1{OpF>P6(GIZ{PuXFQ7t@s!iG^Wtr*Nw+VZ*sz7?gWu z8Kp_Mdx>zw@N38f%BgWfFpsnklCtR(t;!9VQ_%!7hN=5Oli@2A6(iG1fD$P3^cceP zsKE*d^)Tbjwa}dO*Q++*eUoP>L+>~bQ%K|gL5C00IX@sNDw@X?;{;#*ZAeIX?Pb! zs2rOsg>wohX-_5=y@#V%yuv%Fp&&;c5^w-YS_PDOX8O@hG`$;=<_Qwyl9Zc1MIr(Y zdEh`f;1EqI$!}0XP{O35YqWVK^(=A?N{)G!UN=dT1g&ACMhSk4Reir~)LNZl1y0Nz zfy2{}!Su>Gu3nVVULXg)-C@UlIha?dMNoqTjnajgdl#T_vQEiF4CJiV5>>M8=%)+~ z4ITZ}U;R}*e&JvE*I#iL$2Zgm@n814ez)HH79&6PQ$O`yZ%1ZG6~Tm`ZW67*g4%=l zI>U1?e)Fhz&}syT01nh3?0c}!L1A1W8d?r(`jfS$wGMWAaI72LN>qx1%^{(Bh`&)b zr_^(W_#Og)-sqMFg-#wq%%-c5FC?F&tRdX1IiLN_G5xxMQU=|q=D!xoQ7hcaG$voN|a3fEnCU8&uWK3C|Upr3-JzW!L;;lqa?{KG%|L+O@+b=be~X3T^95OBxC z4}bW>Hz7FiHH=7LHXJDhxFSXfZfKGBAOo#+h*m;o?O?XMETA z0dmIig*@8+youl!MHv+A9~7MRE`g^f_ff<~(aGnKWFn}nyXIvoSaEV_k>z$3;zoAdyNz+|aB# zcJdgEeP9FzM$xSD+hCS7h$I4=LLK2I36{-y|8LxDj@=VicyR3EzETpMN}8k4CY3nb zs(42tOTxJ-J=Rex;bFzRhte1b4n8JV6eabp6YI6MDZbeX;zP z{*K>mSigS#_-(h{_Fmmx1fx{A5ogE?4u)~X?7}XH1GhC{Xk!xw25Zr*YO!M;{0=N| zO5m_ESjkJrU~LpGS#vE>BCy+F!KJDq{6T9dGb>U?LVu`~H7`o}kD`=KPvP96VqV1{ zZ&8#Ig$X!Na^6?VWvqU2%*$wPam15Wi3S&Qvl6gOYN)NvEU21N+UyFz$gBd0N#<1q zkbr}tT;VYrPx|M7@tgHQUJn!N`+-Lg+<4=S*Xv2HD5My!!+18b zH<5pZ3|*wGW3-}vbsYvbG&~?uu47;zWXz?m15GP5smQ9rqjf>;BW+~2H>);}?B>3- zInlqJ(i%DK^XRBYa74i`LRhlolN3G9c)^Lmpcoi1rr>B5M8`aZagE|^8I>$dz>#Wp zP%Wvo}b8b$PKeMpltg0-2QFzK}_gW_EUKO zh8u3U%=;Uo)lmb2c%%tn#TbGFlRurc9T>Z0khA0|Y9)CNDS`?PIY(@aDhJ#-T_lxq7dpG1+>P|Os5(w|Edi~TugxM5r<&N6u_l9DhkMZh4KM7flN6)uK} z>Gfy@0MnuiVB%uPwr53Xe-ucS5GnOoZ?e>#_m2Bxu#zu_)`(b~fMMX`+v0=xFQ*QO-rpGd zzz05n9R+Hug>&V3^gB+?o`#`!H(+3_7ECLzH3nkDDu4v}RRWHTokjUvtcu$+el-j? zLN6xK6cUXRKwvp5HB0E1Id^%|8ld~gvi2~ploTvnN>tG*nk)X5D!GlC!}OY2rSs|f zTmjeTv3gHwrifGB93|8X<#Qj+EyckC_A_GgFutZDStWi}$a@$S)v`8)d^1iST6W+q zzdwuqiGjuL96Wd7VK_GTEI02q+}$y>KgEtI#MQ!W$(vYYW}(^T{gIh2EdE^^HjHhE z{)i6uR%!Cy%yNDqzUR;W?9XIA$$!#>#y5koPo7YjB zADhf7P;6ck0vY10lR>DXTKJcFpzHu^CrU{_M9>&ITcjMp?c zqEH*MrbpKyUNyKXmBO5QgQhzy5l1s`_aWY#xTKdE71s1MBLEW7SOl zN1dw!i9QlqL`8d;R)=f=HhI%(vb8ZZW-fH3N`XZ=H>htLTV3<&vveIje?x#rrOqT4@xU;XYhOfD(Ngo=u{9W65m9 z;9syg6`U82Pyw4vmi>%CWp|Q%L@}2I1_5Jv)wbbvIwkm7RKQ*^I70o3v*D=6o9n#4 zxEGf4d06Vqb2!?62DWD^EhG>da2L{Bcyj}0cP^9PiU~w%KdXgYnv>si4-tK9AN$zH z-u}7IeeP~0tH1Py`5?^HrB)SQb6h6RV^1V3Zt~7Lg?Ob>3=fKC{MkhqzOorI z8md$_bRB`%Z6wuMIGAXzhqVKnqrELrD~U*@q@YBylH=~Q24SZ>=jEz^avezG{czY< z9`pOk#Zs=s!hlYLr8T$l+%d!}dSVR5Ac7yN#Cxf9oQoisEGMpait$GxIC z6(_ctk_9GB8JsaH$DYiv0#rsF!irrmXmC*p+9NpYWOhl|m$U=+7q+3^-KB(~Gg6r4 zLKny)e1A~(E`X5!#>VcAmd)h4Hw)GeZi5R;C%w5fAK5erMzk96ht^|fddq%c7KZ|L z4%Fb>1Lr9BA-&VS_O-9kqO5P2L`0|lo$q|-)t~vyXYNrl`}zZnk9I1YsXrXjBBkh4n zL5L--c`15T)*h@OiabW8`f;)F@9Xs%OpFb}+Q|_QhDKsdsW5MsOL3(ZJuKMejQGfK zix%q9(N>i7rS=L;&n&{3bF*;f!fc5iFM{lP-1ss$O0PRT?9-4JWF*`xf8kPy7F=+= z3zza9AYonskQ0_~__pAWgoqZIa79@C3$~j~vY!Y5870<@@;N}J&4t$rQ8tFI<5*(~ z*0eUk^1`zrGKS!^0bsRS(ju-1k*sE}W}JAN1@j{^Tou{h2oenpbmVby#)a80)?2Q- z?z*S$zyE$r#7y|#b;GM|8}wSH+u-c$v72tX>9W0h_g<#`42(_Rci(-~i&fu-#)e?W zk8g&d@j6AVFxP?mSmV(QRe`#@Aw`OckX6WB4K7`CJ;l{gQ{ivNBfQ6{ zOnJ~82|Q~ihGA-A1ja^MD&(ue!>-EOt&k2AFC8N1L$Ot@bQa+=yu8we6Q`%)=!vt? z?dFN#xXMM*n#3xKNxzG$6N;(3Ny?&ElZCk5bnp_d8MBl)gcKf*kJWx|ei@!Ra)OAB zR&%p(99>Kt+7Q8tNkbl2hc)x+^>a%v!K3HyhEBd1376uKlcvCG#FfC;!bsNgQb-;y z`u)Om2VVH&mtcW4w%pM7z2Sx%;;03&e%7s9cly(x{IOaOgylP2jlBQM7qglvw0`?y;IO|gYN}1^CkZ@r^Gl(dVI(#d(L;451FRBC7GN4z(k^A-Rx|WvEj2#k zk7M0LufL?MpAa@3Xm zFmc%&(|I~3hxx++AlUrj`@jGDV>9z=X+^i&9rRYt$z#Wkp=pEa9Y^w>_?Gw}{)-8H z2M-?H>kp>BTFwKLfmry0`)5x*3+t|)AahDbt!jn z6;4>1Fe`;UCu&;6y@O>k7IL}PdU;xTrUQF7>?J~DHPoxa^?so?UKS7BefQm8RS~TR zz7;;mC8!KgdwA1oZ*}ZhHRpkjJKBdE-Z{m7hcsEpNLU-O6)4v+ODFYGiL0Yd>6rV# ziv){w2;#TGn8&=Q3*&xDT!P_9YWW>v3)o^m2O ztjjFIxN6EIDgsLpT64CVHMna37I@+K06ca0c;6rvD3Cx203z0vya=SEVFH&jo0#Q0 zIZ*|Ogo;hL%>DpoNhVa$^HGDMla9JhaW~0 zYYJuAzwfD6;)B>%VO~+>%KIMM*RNk+m%%m~9C|}iVtZ%>nj6_EXKScI8}js81IyBAjTIW02pB zW@w?#y*}@`HZ6-h^5C4@=e!fXXQ(zp*EP`%99@4|Oe{B}lP;OEz>)=m^0d*y@?fB$ zR6GCc$7ptqj*gm-ee7eGYFVzDV&7~Y1iRU7=Q7&;I06mn?3fjondJHlu~{*0*_FU1 zRk`zFUB(Znj)$`F(hA^$7@*BL+MHy@Y+ms_auum6$~7P?Gzg4I?~J2{LBXX-uDO_2 zta(6D-j#MRYK<*GdPs$1E8F}jkyxrEjBzFYc?EZMq)zNMXp&lRV26hqaP5KZaQ~qr zVbDw|gI?ib71~!%nnJ>*j!hux&l^j8Su?Mh7>u#;(3ZqO9Mum-3&T=yD)obmShc^e`t;t-f&s~_5enZc;|hSzhCoyahGKoW%|s^ z3BG-WJ_tJJaNBLSZ66vMYT-d(7!A9UAO%^^fWX&?(mt?6C=X%WEOtVyQO{gy3(EP9 zER~81;SImGW*RW)SD8@fp|j?BDuU9rs?I%Jjc{>H zIRX<}@3=^(z%gbzG87%@qTn!Z&MG`*%(rZuWN>uJ8Sk?8$n%^pbh&scXa*_$78^EE zMv`ykdNLP*vm}%grlBataH=e1XBjU%GG%d9%&@PnWm_9HNfWN~Ai3|*VK1b@yLF|! zh>@lZvf^qwyg2gC#P5_W2`=8=E{5^3Ap$6#4OROx&ue+@6wgzS}sd2wXH zt&@|JLkABYyh^?d!GNm_9stIkandOQ2TN$rxw9~ExuN><7}DjOhh)qNB$+AcFx?;; zfr6dKw~X%NXhvSLbBWfD-kVD%6}~n;I^Z4hNdf_ZBWEp|(HG2C`=8gg#?|g5sJ5tenW9-mSwm*IYw#h}RbriMUWp z#UUoJy*p6znq}sRC!Uz&BY7GNtG*cxf*(SCF#VVB(GCz^TtuyOM8pH5dIK+j%}bLy z6qQKx$o&c?+44ZCcFa6=G2TtQ9!?3M`VGwoXx1< ze`vZ%HFv;e6>;Jefxz#NpEw1l&zysqxp`RdC!S7RErZdKAy~I|4Q$@Hj=KVeRWo@f zs)SeSKzJ1m6Q$)iLL1b=)Cd5Z){n#Kvoj$CY${=1w@S{!nM(TCFeTPRcJbKAU@)D! zD%azru}Tg+1TNU|MIa-Frt^-*!Rf|&VS(WcJqoN1ofQic8f&|#xf~U51%jhty1R{q zYt3wsMlR5|WKs|p{3*$}QptmVoaHD--j_kSLYjOt^xn!Z_1|adNc6aoPR%x~_vMEo^o`l+3r`m$50X7;OF$C}8 zoV+0LMwPj8h83eWxlYVUNH-+}@nY}UzMgnM!Gy?J5Q2#n!n#2)oT}MKT)=1q1vA56 z(6fHUeEjLd{d z9um<*ycArvZ!?^`ca~QBeoY$y%DIwK{sZ*N%XKOKw@-`@QK+`d{#Kq#7e|PdP84a+ z!YJy%W(e1+Ba2I6shBFDJp@^h@MtknVU(F?8Q4V%-%|@y1XY%Eu)#4{!g(-kL0D&E z!*OYsN*Q^aMUwNJdznGmvCy9Cz^TVh()^e`d-lZg?rOS%=O9jC6xM5&4$C&m_=VT% zq+i9T+a!s>)k130Ul(?DgXXB)xXGkh8JwAMw!FtAa89L9!=(@NFF2eDxr$)rG3+a* z)$njLm{diuFQ@SNuZcC`=UQn(U7*RY9VIOKfz`J?c_!;itz@)BPxh-2EsbdbtE zbhICP>S;Li_><8TlSQ3t6Ju9L(SDSwaGY*I-n!GU1W2Pavc zcj~!Pc$UxG*yterE-^Pl;Gn}m=_VF|D>&rcjeFYSH7JyWuENXeyVEt2@N%941t39| zJdq=Nu75JmP)<-@Xqv8seZ4$s`65QdmSFnhZy+#bS>F@{CJsOP(T`qQmGRdC5IpXW z;hnvE_wLYBp!$6=+IsDx4K?ou$<(JhCj}AhGLb0Q^d=^7oe&h*^bn$&WYY`hV#oEA z_13;hxCmRlV;*LU7n}@~grK_kMTPCFYQ;t1QNta5@i;tl`1!Dcf&zyS#cZnE1{J10 zdh9qn^4OE1nlAb*@;yld1|AuMl|Z8NG3^jV^1{1mJu(pLsZ3bTgDZD=bPf~)02JA> zh=k5buRZ7-bkjNMDo|2DgEz_L6hgr%di#nMs;s#vao!j#MT+_*Do*u!vIS67uD|F< zm$Z?wY3M3xk9rnmi~>O0yr0xvChEIRJM@#)si~>WO3puaF;3#e0D>9EwPRyr4b~ui zs{{owXkv9HmZ33ZQ$kSs=Vq)uIC5ph`Hi#*S88ma9ZYPJTqtc3R>wSE2waOM#)s)d z1xH-@9kNogIVKlLv=KSuraTjUdS)7)c;;Dldf6PrlbrG5;C+t(_6&@_kIyHt79bW=qcsiCO4xuP*qCIGIbxDiJBY98x`lWzNURtEI^&t6sIfo)Q zWL{-KuIhD8Afmi^x$91@kpEG&bR?-QP1F7H4PAZp)nh8hH}zToas~eH9q)L@Hf%19 zly*$I=r0p=B8!(sX>BP;<;8GrUCpi&VX?Xz$S7I~s8ZGNTsvP;j-j&U<+&o5TARI7 zOHr#xI7};GG^ZFm*w8H2@bd~U9pUl#4n6TyhU51RD^IEtdevg@An%hyDM{W{tC$_;6f|+5nDx8=w zZIxG}A|<>eiHGLW*vNoiL27hTWEQz>U9o?29lmriTIFKM(UCcH;^b-XbF3tA7@IVN z>N_PswN$$h+G|p5KMx<*_TT;d(POY{$5x8KfLGfPlmO1Z7&a*}VTwX!^1A=7 zJaUteM}~YYYjjLJv7BMd)Wm*N-@nZC;Fzh#Jk}yW4{K>(NCwRRxDp$5j9#V4( z%BgS!k0M%yrP`5hjpfa|+nt90uC*Old1hG#?QpcQMtKp;s>ev8|M43(Y*?q{9cBG1 z{i0c`0R(4&ZNWPp5bIDwNH;qK3MOQ5!!R!b1ba1 z>UB({IqjIUUZD#UObr|`8CM^kwIR6-$(GAXr#HvXOO{>NZb&ZBSTPj=UhqCdOnh0( z1j8)O@DSceYHsaf)f~krZE8_^;Vu9u!vNNaZ z`6aJpR5hg3j?m}eEOrl&0ztxZhgxK1qD}IMxj9T43XxHl=;C79?RHxpBn=OyHp@E7 z{QN5g$faCTy9qPrGN&AK9r(ov7Tho~h^c(6q2WRtqA4{VJTK6y5FoCS3J_3j znWG@I*qMgm`UKMx%CQmkqSu;7#8F&-3%V6}BT-KPZJ-azy7>o>>Fr5j_ zBdlLJdww1wZ(POpaWTR=ml8p}a2)C`IB=1tg+#SgEx13HFnw`h$O}kQ7uZKbGjedC z5y0Vrfg76JSaem-YNaN1shKuEHYq1WeXsaTu5{bU)OLOHInKqtUcfzp0|h0Fe8XeH z&~L3)aM(A4&Xz7TUu=>Yh0Pt%a5`f?l z?!`NsH*a36{SEmdNe)UYpXrqgkc|hrgsv^mYAWE9dI!WLl8gC|a*qP%(uq8`cm@VX z$I4NxTp}|AF>IJLM_19`^Vqc7sVW>>q4J~rUznar5fdI36DRU08b@jX7yJ`S0%k$e z*gUL^1R8(*r%s=RsWlU^9>nCT?8!i>(@DXDKWH2pm8y0_4FvOXrY1(=%(*$PDTmT( zEB;IbjSCIkx}sHcDGK8#UamXZhZQ|0(~8i}r--==pcG=L*(k`Q>Y6+@r6bxq%SY-o zZ=;69A5Nwm6BKn01?L>P*la?%=`k+?rQVCis5Fb^8SOQRYK8DG%Hhm&)9}zk55*Qi zT6^fEp_gxLbS(funZLhkX07I=znlAAZPH=ge#KE3dtMrz=K~C?j%H>PQ`NF##R)?0 zgJe|V%qZyxez~BnWq)`)lnLZz1Q$C$@+R1jk1Vop|ur2v8kqMng5@MH*QMFZy5jSb| z+Ku@pr=o7yyrFd6U9u*0RjH9psPHyKL^B(FT*{9~^3ZP!gMpjXFT|^#^Onb0Rpwtw z6blJmV_roKdB1A5PcQMP8Om8a_bvC>_HWxqj; zqOc7gGsCHQLmrcW3NUf@xtI(t@rJm>4Q<-l`Gs(tnT=(?QJAA3x+p}tnYCfF$Fh$m zHQGx{LE{SXE?N+Zy9A1vE5T9%PF|=jr(?l@1Ze)4EChKGN4^y-xY5^$9blvU#Vx{+>(v);xYDq7m5WZ-SAtF~z%rvD7|Ym8O=E(WQK zd-bnKbp99$m8~dJedWQ&Wp4;Qs8l_c^-fUMheUJc*u}0ydQ_U2rs#$g0{Up^8)d9PvMJPA z9XNC5%taH1_}sPEUc03#`xgTUe*I2TBbzo&_0t^M%p%8Uc!dXQa)n?F>#~!pCa%V6 zm{NN|Q~rA6D$FD2eVjAU?k@9*3(h*W*^yjG5(*aq1eyb7ir5rEfB}*2;=CibqGtAm zXiF%gPPN=Rd1Z~$#oBRV>i*)-`706Zfy222ud6_(RtS@2*$~>hwBQdl(9zsplD$R5(dRWb|^3(r2 zw{$ADDC!YGqf3`{6FoKe-7-7FhVK6vj{+z2zG0y~9GvruX%NbWqc@*!JF8iByGrL0 zoD;VO6NDH)?w36m6RQ|&v){oP&W!u&W)%lrx2ULAUH7T$*21*hS)dLW;POb-7#L{A z8uX&46 zPPBOwlZ}v)kL>%%If>^X?sbW9YM2rFXLTYt@V(f2bYW#WnVsd9lNF!Tm0GWw5-ljm zSuJis4pAQ6c&B7yRsCm_Ym{%l4PC5=sv5-_MddL#I9Ol1cI}AdJcL4w8-`Tn%jf{s zbiMWnH1;r(nW-4sF^{1yLf_Xm_^7(ygja4{uEG@DhpNp zU8x`{gd-Eh6u%F7PpOdxYYQtXz9{8v%9kr~wIFuCNu5FPL)z+mML=088VYSaQ!6{u)s*zrrK&2d zL>nKcGDh4mn@-#-OzDs2RQ!bTaB|LhmWQmwQZVC`$}CrYE5de9p-sA|m{p%yKFf8- zA&Lq;7}8n5C-$@D9=h?NlyOpr8Co~!6gUb1dO6(xtl zWe=%JQdVv&{+8wYmKPG6=Bq&RM#AHQOne33ugIeI}9zbZ$n* ze;cYgWM@4KNop7g0VI@DoN$JNn{X;FF8CtbVhO$f{qNsW#lUJBWGiRSCo#W)$w1*= zVKPtbiNrv3K6RauQ{w=N)blouJeCkNx7{~Ixec2sR}a!>aKqs;Nwu->g7o=K z12-Xsu`|^cNQj)qaw1Qna6Dr~rgSk^MxtQGWpIYHM<>XLi+vh&uYA?VOQ(Ar^bVyn ziOfi{hZ>{^6epC+wIE$hVoO~79OMm(8Hj$0x0cWkc}ij6v3>wC66W$I)_`On`#Cm< zJe(3WH+Y^xYr*$OEqpTGj1iS6;{l8^H3EGAcyClPs5Ck}VyuAWe9^1tlW@u8p2!vr zz{u4kT30H4l~}x-bQjGlh!=Mr>sXk71(m`)S1~2xP_&rbGST6WVM#HmBv&*y55q&P zxDo@G>=w|Q0t%0dBwR||5sCxNM(k!NeXlOe&cWY&cM{K-fqF_qz-2GYPBG_!HyZM}w>_l7rZT68#b?P-`> zIUiQ;%82UnKb93ItZyg{2$Ht0MZv?BY)GhvaIa-8Vqq@30LPCX*AsDjHoT3Dj0{!M z97Y)#rP~H>mon5ZG*%7u+R-9b3)V8pf23x}(kv}DQFF;8(7da1^{BkZ_3eT=y?6?` zu$tI2P#WtvqC^z%XRJ{6LzU%!5>p6$^u)Jr9e138&gwM-gMo09*LIuG`^b7d8w z-r+zx18V&$7tukdXhXL)N9=8IV7RkbH_qclj|fa zy(@9Ztf?e!+3$$QUFxYT8pOpMj)~zT;i>WLbQQ7;V-gar1Mj0_-tH``{#P#f7s4nu z1hp+%^DXPAlS`#9frMD>y{`V z9-~>KT_z-kPT!feiFc%IR9AI4i?k&J8A_GZ@nRT7y^Zwl611?=%Ok_C6j_qVh zWuZpKhFY0Sjzbnx6u{*(WLlM2(b}96jpx#IV3H51Q^{35N}(%2(_$Rtj|=kH+=r16 z>P6Z~Rf}klaKGtEKJDum3q3x_6g%jHFE@yj5`?W~j$V1hTEi!X)tzD5G;jr<3-!%K zY|`c;Au$^Hs^7ng@>afPN; z-cr$a^og9%Pb6GjD500pZ7$W3L~-R1v_21(H50HSj0Iw05zLhT5X?#$>={NO)Vyhy zk>5DCa*nC*s%4S_ZTzj$T+8I4dR;od&@devN(wTpY^~841*F=dw(3<`(^Q5n<60~5TU#9rw4 z+NPebXp3XjToHZ9EHFRmWM?H+s`Ez44iBNi$?;L*C@pp_K!bW}G)h@vr*aG6R5Fju zn=G^?$7GTu=3-Mg=s!ZhRg(XuK|0VoJb=wKS}_Y#DqxE3{`Jpupqjlw8pW)>(OHSIs~_&Ml5OxC}gT`J<#Gq z!@1Bp%9Ko3>2e~^Z``2R%5PTP@nBBW~4`MYI#*lFnin|64F=$7Zxz@wR=F^7x zF(F%xWv^}MbXL6Wxda`*inh7xF9>_at3boAG<8}Pg57LW*Dl z0!UmX6YGi?Dzw%lX_UyBDazVOLQ|UJ!1lLOhOZNU1cW)`N}eYzgggZ{D|H=FCX7nY zSyP@nRT_vR8GWaGl!~tt8VI45!D|uB5^AxNcf;{fvd)yxtKk+uMPd$6E`-eF;CCce z0Gn1^i;v(iJQN31fB>gcNhAwHxijsvMhE<;X)f^u!t;%jGKgXMwS3NyWHNoJgxsSDi;&@>(-rXGaR6wyH!fpkvS zhL^|Fm>xEeRXiyZa~5T93AmILN`nRpRclf}N}7UdZ3>k^IHibQM2|%BXvS8uL|wVL z9T6+3pwUs0m7}(%UXx&NFcmM4ZI;mY$PL%Fa1Sr8B#Z)VU1>U2wE5ZhAT!Hm(a&^{ zW~iedfn8dVjEMPt(l&AWuGQ5YrMjG$*DAWOdwdtHAKnb(tugRLAPjuYayp#X?ns5P~KqCI)r0EfH3%&XV!F z=%k;lJssQIWF?`-6%4`QZNK&$40xga_*MTqtRKCuB!oMr-UB!82Dt0l--X+s{sJ8& z7U5f7k-!)oz=}d6i3V5dE$Bgl=9ULZW*V`^I)qVm?wpfirbyXY#qy4rltvI7N<8u^&_*$Q9j*d7uFT)Fd10#8KtqD z$gKxRLw(g)RfFIIvcXQDKAj7Nd^Kksn>4shMTi#IpjP8aqG%QR8jH|gnuDLX?ss5( zkO~xGsdEPIJ^ZhsRUd^Lc72MTyJ^oaz>CvQ!{eu)WizW5?Nx1ZIBDr$8V8U<$(X5K z%n>9*UN)N1;11Mw)oel8ZW0a_(vjn#mx-0+RN%lw4Pc?tFu{e|5l~t7oNal_+2us~ zE00BRpvIU%qUIRI*etd1;S7I_;4{${y=^%`3UKuN*WlSRcX>Hn@>*mKT(RY2 zFi;Ode$|#wz|8VVc<%D# z-=)6*kG%A={zo;uYOHf6H#KI~$t9ymgHF?&p)Ymsg!y@@mcqCy2YowS< z@>mfotx*&Q9o51`S=xb$<7>4h;rB}q0^1wA2UUwgnQaECbLFWYrL4Yz_`9_)hQ}SF zXR&1`ACGjKkN#VVW;x}LIOV)2OTa0u4V*7><*bAxN&Taxe33eoI9@DVCCRHfj=Iu8%M_$B!1TmK@Sk9}+31rMCQGlcs6F=WOmf-K7; zuGh7^wAgDWT?mU9Va3MQ3LwLvF0I@Kbr$_%kt|YCL(7#$gD&=BLKCaoS%yp2-da+T z4zeMY#cKpeF(St2R6T6~^OI0dfg4Cr^_ck_a zh>qiArpY8(DFj7OrfJHWOBTD7&a`C`p>ySNp}{Sb0)hhOJ2SA@nJaP5jH%Qtn98+; zN(Up!v!FHNK|-4ez7GD7r@e(yqI`^9&wb8ZB!8xeTawFSaJjE6SCfUy%gb363sr!$ zv`u!gFfXdBOxlpf{DkVC`V7H zYtA8P$?6-4xYtG1H0blqo?rDyLzbD{C&M zp%$u2Fa^Dm34*zaT#}4c5~W^g%Z!@RgxomP2Q@R<^@XB6%Z?d{K?SO2tgGBWLeO zT`i@#hD%}dQiBI(q*vuod=Q;c=UcO%57Kxg;Lt-;^r|ZN9i#}ya_4LhNU+yy;dv>OQEoi3qVviMk$YSCJfEY(=`_=KcMacj}sSu`^o9vp^{^inA0~ zVRp#HKadC&Q^jLLAZa0oQ>vZrZi+U590#GI`3y^(TT&d)60csd7b3aPDQyoG3n4`grDwqI z@jc%6n1$g+%UdGb;f9@`if8Tk^w;2T5C17N21ZHSkXa`AGbzW7t%;zg-H$Aes%WbE zdZP-EkZs|vb246Sb#RCiWMYMvraV)}J@0IvoOu9tOuau9n@nti7tbH3i@0WJePt0* z4U3&7)TxZFC|pJ1GOpLWHL9&>tY$>t#G3-x6|HGoF~U`F!q9Na&w`20wv{%XiWw`^ zd{9vt;3!q8cawu?=A=0&DFbg@swyw7vK4ZtaXqu@<5-B8pi2l!PO>p^h;`He>RemJ zN=pKoh8e|17pmV%r@I);NvznjmPbzatqn*SqX_WCFc$x;lr)ShMMxHY?CRc7FGfM{ zfBs*?9nbt{u+0{ahi^2zPSm9i(iu(@`}&BP4>O zoWZf7L1Pj$PJTu9EQHeI*xy4Y%f{+P`CH3D1!*EzFy$w#N%N=cpu<;+`00!anS&`i@TH=*i;rf;Fz@VU=@E*AV@g&_`^eVLo>r$H`ytA42A1`t)}tA=I^70C?3qi64j8@8YK zfCxm%D>nZ)ZT)Ub?HScsB=vX&W}Ak3W)pKF&H?n{XQu>O1u~`6PMV|3P3KnF=>#qp z3JE@K&l_#CM_DjY$V9tjDtA+`;KziggK|D2F5!s~3BBuYg&k&6(odE48g&dfsj4(= zr_|@R{Ap0h5oIoA)A2lDTON}u^Gm*yJ)op5P08FXpL^8~F=o$AYL%3#XZXBgJJSaI z#@~Ge+U*4xuGe7u_!e(s{Ug{sagzth6uj@U-|!3YufZc{9|*J>%)1b|(Q+QAT#WVN zi!Z`!y=l*+xY!#}gY4bAmquJ+UAl=~KqNsUy>79AL&KYC-YKrv;Xi!i=i!BOU+z(r zhmQUG(sM6OKcQ&Tw$!fFXeV6LA5^pjpxjoca$R}}g{;!4*&K4lyxWOkVJrCzqjLi; zHj>kTvAPpVtY;4ya%m})nQF*XakBbEXN<}&N54qdy_D+1rFOqaxfPpAeXTWVQljL1 zG%a6~C^;ZOGebNua$Gog+_qC3GBF9QDYul3=iBx^-}iC#nu~^bBhaLySfa_-xmk8(DAr9RPyU_LmUUL~| z!A-R5HQ;nsz^HkFMJf7~&UC4;%T*{PD(VHLM53wC>3Qz5*AQLrCpzI^>0@%PG&tJD zPV^;8w94SAj+R31#Hf!8(yHk-PUl*jgr9AtEl;Ifx)1nQ4P%w^Eo?P#2YKuL*~OI^ z@0{NayVw4M_*dIUcft8$w$%Qk9MKG4_`^T^!?eIxGwGUkfgrKTqog65uw!i17LV?D4D}l_K@7!+zD00lz3T&9ouRW zvcxZ93&)yj(N^XC(G%AkB~$9;D9K0pBfgBle9CI6@tr|z>J8B=jrD$aS*t}-Af=OIUVpe>cO*XqDC22`{Yk~TG_CyJ$` zR&rnJ))f|d0D_$Mp;rQqes*%1PY`^F%rNtlv_hb_<3-p!u@SCUVY@q@`M;pv7=T*6 zNyYww#}kR{veT19~X9$V~UZ8yXj7?l`; zN!?9M<>FytR5xbUen8PL6;_F8X&*(vsf9FE<)!3lY~(2ugQe4?f!KC5HV{{#SW_C( z1JPd+E}V7cMhnhW0HL^Y6cR}9u$CGCN?7w3<_ z$jG`<--F&O4wVQXtXeo#!9ou}ma8AuFRRW)?#YQUx)Vit)j*-yHoOnaU;%TBCt-PT z0oDy|gq!#MPx0?BEIb1b9KX*4q(xmYWVBg~EFmLSah~w{t*o?Rcxb59I9hi=as8rR z#`ILbJ6CS0uNF)0wW}x?CIOP^f1zeVXzi5-%S2eTL0Kd7pitpfJzPvTP=JbKt}QO< z+KPo|)DcDeK2-qaq_Kj{xe^cJ2x#exE2f}mEmH{sSPc%zzB6%4C?OWg`6p@gXH6P< zQ?eM?pn8x7 zEy6Ju1fUkP@D-9tuY%$tAX)AQkj0lv6w2!qGLu!xsV)<;?mI5H@&BzI*ainziCj%D zJPUvR@W1dEG=pYikZM8pfEZEZ4^mSXy)Q9Gx!R{fhzT})gW=@P9R2S)wwiQim<3tqqQ+(EF?$$ zS;Xiqpxmce(M6=f9V#uBO6i!2^A54AAyaZvd>M2aBNhxw+a9em(#pwEtW;|wwKT14 z0IuEkV;A+HPt804Upw|!&}{p(4Bk<=9iDba4R*ed*R&Q!t>|u_nPDD(DmQkY7Rk$ ztAXK(JF)es>XXG$4kv74C3K~J$EAd>loM(PJJoSG<~0p8o3PyJDh`w>e;$g^Y`GbIx*X_b^p za=IQiW&Bl8!c=%<{dibHz0n_MDvMca7GbFt==u3);qX(BQwSG*5#Z1?=9n;mQ}=%A z;1JG_AM)D(r4+DZV~DW0irI?uMbr55e$Kf7#{;BO#X?ns(34YBQyKO!?MGaU^z_L| zcxmYo|0PS%kLW>4peRW2>zNmdI{tkfYBZi%u70312j*tRb<5!j1(4dy67gEEiO!UHRZ35vY|tXZaI)a=hok^xq8&VVFYyMeN>K&dXO~gjZmfyL55sW`D|{4UH9+9 z+y~Cr)Ztwn?iGqv1t6{p5b9_>Jw3hX0Wwi_)RA6-`3ISa-hvTWau-rlH$~R~p7B?s z)uu%qOOT>KUD#u|F{s2q$xhkkFjTS}d$*a3MOOGX?UgR*wmUIiAFJ%j9oJL$j4~0> zL>8~nRT6Pki?+0Jr4bdtT}Q06rcvEFoB$~%&a&tr7v=WU3Wz;MPO0Co*iiVmgCzmX z@e*oopT{Jsy3>3ttz}eMqv=r`QUF%OUco$MHV~Ce*@S|sNeX3vM^2VeGEyNe z5>XU$P+lw@ByO89asx=}ltMtWDX?@y9lQ$_#VTkJeo$+93})IhB)7N_qE&R zV3x>jrk{y*0snXY{P{)v14NWGX`nG{6(7WOZLGa0C%*y#EaMf$WkGcs9Oo=$js-AL zP-bIr|15ANO>I@OONJGo@T0n&n_HkRgT1*z7il04N^P+sOVw1y7~lyrXm*ObQfaDO zD2ptBAjCZjma2leMlqlesqJADwl0{8zCb0R*e{i9N)e?XNZ2MdL=jcnAqfcRNx?3) zJp$b{9Mn`V^|>XdycA{DY+|lkw<&)^t%i6(A~JrQw+`io7Mx$Ps$$c*Dp0J-#3#Qb ziWB@oC-4M;6f?F2>x5P2!uyN6owJ;@(P|9myDJW;83kRj{ zk3Aji`&wD1l>1m|uf$O{S)}AE&N6>bD6lfAA%yBUX^O~>j3Q=WiDHZ~E5O6>TzPp}$x7l|(U=R-Rf>;jb7Hzt$XX% z?R)?K?6aqDf8RoA^fn}f;_t_lR=jq8`qQ88uG@mfV&PxyAW-7){syP;g9b+h6;@7P zNrP)x9RpV5WK?oy)k(EbpB1PLLRpZBG3=&;hGs*Z+)a0TtHf(wiD2T-&8{X?)o)ep zUrC*Lg5vwk_Lkuqphs)d>pn}oe4A_LSLj0{K+YSfZS$A41g3K) z?-&f_L`q3OvM&*QvK1K_t2|01J_~<@PSv4i`{Z=)FF<`}LU+uw%tD1YLCrtlu8Qs! zm5_`#3g2WDK+jYiks9W5R_6>xH3N~FwUIg7l`e==jm_EdNx6{VBFJ;Pg6?w^s<;Yo zok^jess`pwL3Qy>?m>XBevoQ<;%iX?sH$OdsWIYoDOcb`-B?f>EI@se>IRue25amn zHs6cq08`CVWUSbV?u?M|*^D&Bk3A69X}yovsR#1VLk|rr;~4H_Ab1V7ZrQSBfqs+v zye{cW$NTQ-xyX{6F22h%%R(Th@JX?$Y*Yu$>*Ar$d`TKWs5)j;34}JC00it!g$08P zP~(g$&<7o$g9h$FtxFw}xe$wvjZefnuQx_D6+s$;pe7A9R7Erpjmc_GWE2>VI^Ks%Jt3K$Ig?E4Gzd6n}oJPJ_uI z8soGi>8+$R1pPxCU4^k}+UbL0ArN@yL* zyZZ5_O`Dh`VQWUx&4jyei_r5;o3_uUY^#X2psVa9hIW-4RfJixn*?hr>>Cm?DXX@% zDxy&hI=yT0~1Nh5XH91(3 z`T|o$W~#PpMv!KTOWf(lamTMHN%=~}h%b1)$Rq>jd_{^OYX5bmoT_wA5^?XmFoQZ( z4e~zc2;yb@OoD`Fv!PUYz3k>3a+Su*!tHcK8fTyG$EPNuhv4}@#}uoIfVzY{TI-3` zktYh-Fv{9F(gu@9bCvw5=p%w$&uRnR&*0kyg{}pg!z$4xVLmlTjagHH37Ogqi5|~2 z3b~ODMq8Ov-)Bx(pFBy}$w>I|cv?uHJc#d9=EZffDRxOlMhn2AfIx=8+n9r3y?iVr>g}>j z@9lNso0E5)pLp-96Y#3b7(>RMt`N4hD=sXv#PiOr_CP&Fr$Q7iF*l2bQ06#gSal56 zK0_=*Uyik=DfFW}j}&p)bMTzE_fVPclNk%2%exV?q(UObmX(?VS&irBxe!zBV~99w zb%O)_obHxuLjh2FAvw=ro`XtNOEJw`ormb&504|0I#T}6*NcbQ+XHTp#c*_-uV#-``PDKb2n#_{ z49m?ye039F`Ngt&o6cknxOMXG*Z+0~@SVXB5^I-pD#Ac;&Oc;2xWAk{JI!>vH^<6 zeb!&k3rDp>iT|#W;Ojj@$|as0kgpCnsIFoiagx;&eXYc+n*o(8S_z$)jbB%=B2l*j z$eTRcnWF_N&3kGe*gd_ltK21!hkLTS{OW>(Wi;pxcsb-!0K^|;kCpG0(K{w6P@=EP!O2?TfGT{K?q)avgxS$5d#YH#5R*6|PrI)p-^Xch85>dQ6qYXQ zC~8`2kRF82M_nZ?iqk}w^hWAAXVv{FgoTO%X!Fo*NoY8qv)4rQpYoq zLq^o7zDfnAlCf#dn=1Q@P1~K-lb4h~W#aD|ufYt>ksPXL4`lPa3)ITXKIL4!?V0Phy+itsU3j>A8209vuqfx_kAqQE!ef##&fpFsvWT!eZ{$m5>BG~Jn zAP5OVAWROm2*;DWg-sd`e3BhKCgyO@I0;L{?AEZv2f^t=j>*i*=3t8y2sa!$U^)BxeoOY#~}P=7MwlJdm?wNG1Mdk&{04Ky~*L!}yxZF4!CyXs4>oMruw%A?DJ}9j-z=jr!pB^~x%$YbqVX}a@w3_rrM|xRYGB+m z#DG;?ZPJC940!`WPwFg%y4vJ9c~*(MBXA^xBproYLxTgrgSMP-mmIPX-l(Jt!q1n~ zltff&Z+B1pySDRD#0KBHRQFt&;*xM#Kj=K--;YjBCfBYQ8}akDo&HR8PdjLt8HLhg z@?cK=?8(zO5Ar*%S~<`Ej*|*rtnz`HS~MWn15D;=$y}^P{hnTvU4tk98^uWswe^ti zweGx?UW+!rSjwh#h~)bVisc>W(d#+&!w)~aRsHG--2ebJo z74~)YLw|co2z4ky^7$fqnL;yF)TXTwQVZz=E0#*LUBqF8RDn9ID4xgz1O(9qjLw_2pSE-{?QQdVwQTbi@_!1C@H^iYT--ymkcx+lqv=|AVUMS;JvD-fh4ld>2hx- zs^-v=`&@X3WozSAKV5q~C9ziF?6M$0Mxjjgxx`-~{g^>k&WLDRqnm9*32&=UlO@uc4frXG&K`>+c|cXhJZMcxR_5h>q6AjT^ax zejlxUzb^yfMEz&@;E_ij**sgrkblNJOJx93jwke-X9LQdd7Y?1^wD{5j>JDMW;N1QQLjl>P zoGPQHd5`|yUKoh9tdM42@V!bGLnL0z$z$ZuD0z--5IXe23$S}~oDA5+v1G@*?&KLt zG8j)DC^40=a#9ZYrrTw1M$+GCZ{=0k<{i`kiq-tSe@^%(x}*kg}vKjoBDR`8o+RiL0zTKoWvsqgdQ#Es4iA8s_N_wuf%-LUZ) zb!jLOgD0m5P1-kSr z-S${5N(emG2pQ<>f&OsdG+(6T3|}%5ni0AfL#a}7m|WKN-0@cO30~u#Ood@s40&RD z3MLUh#5*W9z8sIcTJ_z?-%?>CDoRC(2j1#DOt-@MX_&m*>MEW>OLBA3Q^A_wyAVl> zbnfPb{HztuGxm#QT$we{W51y*4mNdlg>}+wNcVj2*o1Vzt*>eq8dD`G7ZirciFuZ1 zP^83=Q4YB7&^UU_`LJN_649|?@mZ{3Vd#sGIcdN5-g`Bl?qixTZZ-qq5G(dWzW@F2 z!=;yA8V!S~Q@Db~ImoVEyW%+GLiZ}zR{od9PhE8%{?3JCdb$OBMn+(uzrVt!4!Wbv{S662RHKdrKDq3hFj>i5^|X~VHn zxncx$JUcGKWNb zhPG<-qjj?I3aq3KOM%=Jwnocrq#_1*4y{~_9+rl6h)wLVu`v;zt?Lt_!G!$8-E`AU zPuKb%`wg+!NN`==LBPdr+BonY%VRrt?u_+hj`J46;lWA?80Rv+%|X_|t|VGE|7@(O zipeM{AFBm=6sngEFNRr#CHQojZyy~Qi@gy&AL3;?kURebJ#-+AG$#{}>15-M<0zN# z6yI{Lg`rftOq%2=oGR&WTr3fn^mj4;DSdp-InEPY-0htAlA~al)C%#}uCejtg&ig4 zd_M8LV+k|Ams13AT)inB0}s>tPE57Zb0w%k0sSrgEEqOP>a)ktRjx`x5A<(yKExi= zG4@P(W!fBgO<2u@0~v2+O?4K?C}3V*JG#h{L&JD(!}?ofj}&nnY!c!+)qOl5o~*Ej zHN4~wTJwH?9)$A{eDNdr;QssX-@J0=%0*EiGgu}XN4<20Zfl@>9#yk;$U@@oD`ReW z`mBP?WYr`ZDlnYf(RikeQ!+ubUqKO|$w;wPe1`nWb)O~TjA|Sj#ad}Wm3Z|m2q?Z}+Jrfe!wqMkTnhb-Au$LpB;iJm z2YM6kqW|beKhl)%kI#$MSexR zAmT-o@^LOo@mQsbF?sh8h0-eHp{eaS7S!L%V2u^QM~s2-z#h;T_D394U>+Iu;WA2B zX60G>iz-@WB3~;@s!WyXIbSCA)bzN_kF}>^ufY{2F70wpBtDls&G6oFXkm@g<+z%Y zar8j32;$g#kOvfRkdu9I`S+>V5aR!dsgx%%vc_|@E?4++iP&YS2BVSDWkx~A^Hb8j z6AckAYp3@p=^u0I-iyq%MARYzo0VxRYsFTpS29&01(vkdaNRA2qho%I`9^)6MmD&x zes}EH5k1RSzVej~YW{rNY@<1|g;Wcuwn8t;NMr;gdF_tBZ@s z@fP);ZedYQ1y3$t`OZ-k{g1)5h7d~4^)TgIPdY($ddfk?JBa_fYLMIS| z12zEZ>m);Q5`vaVXOdo1mSjles*}gF9j~t?-4UY&QTaK@kM(-;)HTQR5A7~k(sg|y~jv62W|F}PL+1SRXmX{`#PT$qjHYM|4tb_ zrz4|@8wneaFS8-32}caE49R6%-5s|aQuzwj%2L^1i2H;)%}PHgmd?Zf=DWk<`ok1p zw$3@S3jJC>u}F1hTi zNuLMrb7eyPER7+kRxLnz3_XAardAEH5u=qnNfCeM-Di5b9s4BXNcK?bGA~_xZVo7F z9LM2Cn?ej7=EN||i2=pM!A3%1kz)_wfV@z8J<^=+8Ji5@-?Vs??8QKug4$aEFU(RU z>ZLN2lD!j!jHQwJdQVV{(a~|CUBYvqlU*5ADAiP^uTLOS2v$1fHIkR$FPjSoPK19X zdLck7S2HDaQY7ew>43X38Pg|(3>*fRKCZV{HBXaqjD1bRhVM|`c;k(_dbMLVALypw>HIx@jq&mo(GGnHX3FAxqrDOq0_J`Wmeh8U&uQKM~-+D z!w8aBuzGpimp2n!XG3AVEt`L+Ak1fLY~$_er=Qm8!cF@MuK<*q=PX8IiQ(bA5V!3; z>#Va@=&mGJ1qKEN;?F!g(rEX>v;NVLFd@;Gkz^W#wW9V}7+UUYdJ_urtq5lFjD}IO z*SRdDh~9Fu($j0=eF?E&GCA3b3piHHysZc@r7D+^WEjM&C=vq|%J44jJ9MX!k$r4( zDjH?GB&I^vL1eBe{+XCUJmmaH^E^ojg^kJqST?80>ybLeo~}Hul4XxSPffR?VKrhH zs+w;MFlCZzH4z9<)kW0QNEL2PB}wj5nY7#3$|{csoA%B_xXhC75#{WnO*5 z*bI}Io1S^*nRjpAym`mbM<2Z)5;k;oRjd;$1Xy0f54W)QFz9bB4GHKr=)zsHk!OL7 znl`kWDqVE{41w)vH*tAai)Bb9PZrCNq?N&4W)r1T!*K>QHzluK4|!5kSVh9)RtPzVr`oaO-5nNFvspwuS%lLIpQ;yH zPni>RSy7hT?|7Zk7;93$LS1?k!Z9QX-e@!EwD)`sKV4?XnI#*qcmY6JL}*dXhq>V(`M2G?Q*b-f=ERH4tS+&+Bjx9|u?Noom(f6&6`Q`yCp=UK5 zY8mArQo?MdKahTIwZcN1o|2HY(N&~zVT6fr_(M}Dg(V~Li6SD${8<`7!r+PrNb0q= zPU--r5^i-QDdY{5*b`&eT7r0xl_BTl5-v}^qA?)4gJlnRL%;62>(;CFy>@@$)&4>( z4bDVMd&BD0tEVrx;DRH9l{WFjU_E)Z-pFA00@%@d8rsF);L44-&camntaT`5YDCyG zNGv_fkVwzmO=|eZ8PN_0uA(V)saL~A^{HvjW4Me6OsFk{gPI^hlWK#+{Bg34s!7Hx zF>_&Bl7R{#U#rL*uxD}Vbuy)8a!BNAiLX~=ZS))tm*r-jk)b6Edc;*pF*77nCO)rHNU1!9|g?k^|9OUOX)CwDU>ti4L*nNt*2127K0syO|A zO7IST#flY6uzARpt4_pn=tX*95Vrb9QZB-X%z_5;J1Ee4s4-9)1 zmy=17KqSK|ib#2<^^9qv@F?y)!f~b0z?xsz=bF6J+)@;B;RS7#PVy7u6_=6EF@2U% zFkm#BsaMInnjADvX#jc^K8g~w$t2v2S>xGnUmZx(I42;I=u|#0(!yXqT&qj2nJ2g4 z(8#7-(-dlPH;QNsHnQPR?m-iN1-~cfA4O(SEcCypdR_uZ490+PBDZu zRUHST7@UZ=+i$=9(R=Q>hta!VByxu7{c+1!*dKp#4znIbTKMa)zy7HZ%eD45sf8B2 zuq)&uAx3Pqy_!1A1OOGd$qb-c{eY}Xt~h+H$wU5DQO)o?fn3D+ZxjThrk)9K7=Uk@ z9y6a*g_T?{TyFF^#&t0RBPZ1+hDuURgH!;>&|Q*yaLOB$RCeW|vl5{nMv4TvA#E~J zSAJ)5vs&wb&|~A2cdi(QmGkV4&D09UD&8q8AuzCUNDnJ5;DUsYY?QkwqDojn5(OzC zZ%|UMJc23mHRoA#tJi|f5r*_+a(}56yhy(bxkuOGGjLY*wTK&6NCC<(eBlf0m9)X5 z2NGT#h=FMEBAVj$!^6X^yYIex{cL44zF{mFUJIM=O0gn0$%Li_vMVlV=io!C8O-L* zb0qOX7V=p7BTQ;-Y;`2qvY<~vF>ty#SV3t}B_;hEMdjacEhiIdxq_tF2RSSg*hYlh zR!X+`x7}E&DOq3!4X216AnxeAcpc?a{B!B)=foMD9;YPS$ZL&2)7XHyniXG5hG!fo zR(31lo)!J>)JQFK*`3vhr9@uPdBSs6BxNuzp*Nc8`6hV@Gz@$$91Yuyp;aS>SK%6TNXm<9 z9=YN{tg4wq4iTbDS7c*?{}HIsqG_XY~D=(-3y zjk?cd4n_<=dUeV@a2?@#T6^zf@SzWV2tM_xPr(#cyILKfqFim{6% zja)i{%$V4Lj^nUxCOM|In8~}oQ8aI!5W1eQ2Qn^9vmaeii;*V#oY(a5nPNwCWBD30 z;S35!=9H>RIZ3I(W!lfoEK==JaE@YSqwo^qq{NgKYLWFjWLM|zcfp>T1e0je(?~dF z()<{?gjSEjmMvT2aocUT!Q0>dcKGmz zKOA#kz3%V7|9XPF&w+zYD*B=XS$)+!>BHKmPdRr{$184X7N;RB%mOjwvNO~1 zKdbXJEvKw_!mI!Qt31dx&cY1wq1QG9HJy77n)f&kLRl)T7#?X>FrK2?&?~GOfu?ZG zHdIxL63BuKq$qSVkdu8fswJP4ndD)-+3~ssQ zmYA3ye)!=@o8GzdFaF{$emIHsdjOpO_zEP6=hl9R^=DM6W{cbs-2 z0(lS-8qItQAh66Jxmd}d$7LRH60!v~gv2x2rBBd|k}yUkRhD9cji5?`hotglN%I8> zf{x8I9=_pO@Yn(H3ZCJ7Rm4UzzuZg&Qv*dpl@1l5A8qGmgsY&W->k_cX=AF~Q??>V zl<{h|!f&hbZIHbH@8k?E=Uu*_(lAw*BGGh_@`rQ}RGEYvo+;15m8gQAli@bi2uw-5 zA>&KltYB>uoO36yF%@!-smT(0rkBF0bKVy#Q<&dkCH0zXu8AH*-*C;HfByMcja(ff z8U`k!aokN|*7Sko9|vS09YQi}H4ld4FT-)r5l0;Ho+qAoLUNfUOP0V#Kl)KP;e-<^ z@!-OR3&SVd0sk@mWth|346(U|uBM44U}JNcsB~&FjSR%g9!~cM5U2}4a86w zMaEU+5->*!Ip0Vgqd}oVgt~Avp~Z6`A(=5}ooe}*l#flc;MDF9LcduUb6ia|yLRnb zxbn&?5ymd(?Wm)U@*6g6xQ-rT)bl^7f;AQXrd@}?zmO!o6AXTm;yILrewcrG(M1=< zr0MwMkDpOdKx-drE`=i+XG9`_G@6+i#~GN$RV{Y^MWdj&mSWn%s#<&oy2<0h=Gkac zAWAzJKw()mSL@!XBoQ*@CI1axB%`Fn@(`B=MY38|bycJaLaw0X1CoTfk*ZRjcLB&C3H60J1Lz~4kM}~DXuWMP1RO*#e+>Apa4j=fy2V|j!b@`B5 zw>tMIXB*piF>(;?br8fj7?PykbI(2Zu*)yMyz5PGdef|eCHO@#E?nBT0=7>-2~#ji zi@B;nSHU7kK;p;c?P zdNki70}6K8PwaaaxK>lmjTk9Y%J4p@s)>{&DPFZzh6@dD!k{}OLfa2(qvN44T z9LLi|DnJYV6lr43YYthi0$B+QvVK_JLoBk>$MUUrKraJKkS)BSmS~fBtQLvZr zYF@^BQ)r$m zeLZb;zDJ0+UE;Tj>m#g_*9GIib%TA6P9$*p=R*%YwEW3We)2uF6u+quyXABB2KzOT zdPkdT$0a2?XwKhy>Zzy3{{7$oef?~1i=V?9If5JK_brBFy3Pu_LmBe|9#(QbFPVa9 z?h91{YzPpJ!mq*z{)ZR8!0U|__7e`n3Js(KuV&zLqS`2O#icO0%Zs5Fcn?M`NG4$} z$Y|5RkEfGbVaOJpc5AY#l9j3y84{@Zd|7yGB>8u?Lip^{0ymy|I<#v;9!4wldoYNT z-k;9_pEppItvn;1$g&HrKyn^K*GT@}>V&^u!cDnQ6{*Wfd9GRk4MCxS;QBbB=Qm+q z@8Y;_l0N**b*0B@@4ffl4NpG#BqMgeMQe0A$)?0xeZzlIa}eDZVK0K#y8E-A{p`ab zNgD3tJ@5-4x^gb*c;HTOX!mPju{k~_Usoo12A(I_|Nw$ukSI2)KaY6=a*W!=olVcj}FeunRWuB6hKDRijL?+>1cW zjIyg0Jw{FFY^g+^%BA_d6ru=AB~xI-wZv{|E0cUikPCT;P2-@9;ih43vRWb!2OTmM z`Sk@6XK+Gp1l6mrU%qZ)>V`p{Cawou7mLjau%zplNZo@soIApG#Hwd?V?nCiPk!=~ zYZV#8_muZ=oi_ZJ#6W6ZWQ?Z{ue$20`|BSX8#ibetm=cwI+p0rWu7$fZs;x-MDST` z0!4BIsAwD-s>@p)PDvl7`kZb!iQZV^(>PbUru-vBpT=C?LaG&byWH%Fgg6Txb!NO(LpDoWu#5gzMt< zbKeb&8pkFy=Nh=4aOR^vR{J-9^Eda_rUl2e_jo>Q{rTh|b&S>|weP>bcJ12XTW`Jf z;i&f)3}R?#NJJFzi|*O8N9IP5eg%!>^nnk8n{LJv(=NHpn-g?S-1TCYut>+UMpwTw zw~|#mvnkZya?EX2b*HdWc@eA@h6aUN7)63$FeKb79TTfcsk|#nl?FPnwWx%)P%!U8 zW0X`WRTdcMCJKHd8sob1M4j*g)S@j?*V_<&t&mb~t`4Sf)#v_&9&qBvMXq9rr?ffL z&1GE;8?rK4Y86tzL-NjX4d6x@@{ThGKNQytdk_4X5#;z@Xdr`wgEC@!*Ijo#wr0&5 z);j+_t;xv)#az8ueUNGwJ2ww|!!a)$e~y){8*aGa>}AWA&D9kw-AL49yNebriv5v$ z$G;H1bOV~rR3Ep6SKajlc1-eSkeY?uCyAxNlE@R%&)jI_;hH$~)K>kI(pM;c%G!)M zlTG``&XJmpuFP{1PSFH`Vtda;F{>B|l}?FQO2tx{OBgFx)ncn8{Kn>H;f&sh%_VAE zK|*J*!5c$iva%B|a?4n>A{%lv3?>OzUWI!iag!*rkrp;X;Ts&jM$!zB(mNYF;)PW-E&?fIE&m(C1F)8=yX)tu*v(<-JUVz-LUBsay}qb>zBnSVb-oA?)o0 z48`kyZ0~t+SXc*W0Jtt@lit8(hie93^N;`dk3YusMlZXa*5Jf*LF~RDH1Gc2A3uOe z6140^zKbB<&wcK5aPYwg51n$#DTmKS6~s3LJEGe>X5h^*+}aG=r`Lk-YQ#BpT%1~K zJL-8mOE3vkyS0gX3-S!URu*w6?QAAJV_@!LiAT|-2DQ84rBp`8ucuibP;opwe zwoD!FsCk#+COAjWl75^^xh&d5{7ydWn?rSs(!)%a5D~mopiXN{r6bM-jSM9RHE3p~ zY@87bxqNFC)s9tpo6K!Uha9RUV5(VjpGl(|tO6eO<(@6dG>@3cM)1RF=GoF8}6Yh*93f=uui# z2}?t9Od6O(fS3&utCy`1RxL6o!t3T<0Fy+xfae775vf}*5b@6;1lxQ5`RCuF<~*(? z66(Fr#Xw$;97Km&+#6X>L-FwOkAM7LW@W6q%s97BgmX+Rj3?=&!S}`;Wh(3}T>d43 z#&ps>?{awxtxy#eqjC!&jVn~e#hRR-FwToZv7#D!H4KGMRLN=B)bL7qh!uou1mP7) z$36WGxzxQ#rC!FdQXz129tm==NdNw_1X!cd-<`Cee5o^1aGD_r+XfLwx;!S$w6MQ2dVud z_@GHuE$j-O7ml}|c;bmefB*M?e-?iz7IWt>&q)`*-~59PiXj(zl5H+{lJ0^^t*QKI zfaj6QtX~nmLa8`wo$UUih2e>%&;zlyJK@dM=wGizF8C3&L^o``-7y!$17t55EC-2KE{(#>4D)S$7WLATp8%M$kysWFw)9kId&=3dO8@NgQSsmFF#maS8_~p;aL>AA(W!jtl;-${kR!y@!>H8)9@s&9xb{ zlL_}Yza52maJP?;6bEhGMWd9MiwVAsueVfe^pyDf=$%T+0St}w8bb3X5gw9@bHsjP zQ*L94a>!G8+8JM+{oq=Fs5C|X8u0BYC|hH2)X)jAa_Rdzp8KixPS`vCELF0qaCFvk z%rJGO)@0Rug-Wi$WG>`{*#ebU&_I-_H(qI&sZ-t|ucc5ElJ^l#GGb%IjfIV4N#nIK z=V0UDoJ*H=anr;cMCYeJ_`wf0DC2m9*48Mkwemn3g8PYpUYaC*mZZI);i>_I=ZE8R zbPWIWPyck<>tFx+gV8Y1dsv14uf&`5!51u85TON+@4X8infNv|Q5>=XR8I$)8wbeJ zV;o-j%A_HA8ef$PV98|hJ`^^UYGTk4n>bU?IHE*%gwFM(OzVlC#@9Kt03;kM9p+V2 zA-@`jsmT#IZ0_-J?7{EP6}`!4;K`le3k$9XdYbd0Kvs0-squv z$Vgrnj`w1f>+_%g{HZHfu3WB>n4M-wkTC;eQRZ6R6uijViR)5ztAI4!X1yR~Ig$6Y zOXms~jqp;}owdwogj1}!=lS=Lwf9Qyc4sXO0A)a;Kc2M^*@%qr%7&byjRKNmFfla( zgLW>QcGREA3EQys8?fq`8=?{Q-X>ya7h@%I{<+WL2z&qp7Cd*P|pz$SDXrr(~<}u>4Mkvy#tna zzb<+P+#Jz^IGPyMYpY(hdiv?7wQ*pT>KgTOn zKm5Z#yk+_Fe$L^o$ zmp%+PuD&!T?Ok1S(h-cL8H}W>*%Q2Gck&=e%w|pQg>b)s!Mc>JTe29#Gag*Jg^aBN zF$7RFKv2cF$!n~dW7nY=84r1~NDHpuI#|ke?QS@I=nr7PE{=FSCOHSvz0|a!btBon zef#LU-u13qnQko{H&X7w#!ssC(>OH>jG_po1VUi5H5X9$3O{SSq=u=lS&v2N7sXVWb+~*XV(z z2faxkEI-?RLomqcRHZ|ppe@6FJA9iq5qrB-o~6$u@7qX6{5(aGOTYBF()XmYu(2|> zoZdsB1-P``$Y_Cry7SCymCj!w)hpIzF?8PX{4+rYUKhMRJ$^B~eZikXzgYykcJ7Ru z9WH#lu6TX%I%`c2ecQ2P$LI$?_`y5rA@(+Ip*6IZjpMlj5ufWk$V-xg%+f?ePtr%_ zUt~o&FL;tU*IaYWTd?C^ZyYj?3wIl@JxjPy2Zg)@lePy&z7AVj4}=}I5KmGV1`Vci zX-PQ-SGm}$I4xgH?C#FxlCg*EVVK^Bt5;4$b~q7tit(L7Eil#cZg~Gz$UP>fg7+BT z1xvaQf!81YF*#4GpS&`D-h=vAKv!cB#;13{mXU{GcexF^yZXa{Y~_8CtuSJrAc6g4 z8c%kA?pN!wuT{b|*{fKRZW2j?I!aoRH54YJqXBXwP`dt}1V#^=0Y|NP`2wGYHb!tnS(@+9Zr zbJt#b?Wy6mT-UuZHm&Gs*NmhuxM%E_jF-FNfjwV?;quAIWyK9etN9Yriq3lG+Iz6U zcu@I>r`M~-AVEr!4o{;0%p#Sk`B;IJs2vjpKwHz}Fflm{d&joJDN8Sc#q-`$A#hl~ z^{X(|8ik{m{!TE2Y%KR|`0Ef;j6iSCykI0DBq@4?{UhgYR68p29J)YGaLce&o-D3X zW%zrpLTOluG!nrm{8whfcd7x1USp^@0!|wG9q23O#VXYV>2`=7JmqHmGlqBE7sJPE z)~wn3yTALpcdM}KR`MKs6bSKo4?z9AQOSfDE((FC%WDb7 z0w$9^qzbo*=NZp8p7$erejQGq{}CwKeG#tC#TISM^%aEIIjK{HFmv_lEy_41X>I&a zb;)0laXg&sL+uT&IX2RQr`fr4 z2aJx4z|nJl9p1X&3K)RHBbQRU&C<#crJIBsM0D}gA|mWigBP>Si@j0gIgC7~k%*h? zze`CjJ=aK!He#`&PKL>ev3egow(ngV8-aK{vuAaBe_Esq29AwbEe;*yXGCLAiMXYL z1OEH+8SwMb`>-J-BWJ8wGKK~jRl=t!;Zu_d;D99(Shq2p&j?cw=Xq{8-)~#^-{6@3 zUym^K-Me?ioFX>(Xri=JxWd;G4dmvVZ(e`lg%|!%fe&w{wZUQ4H1|4Y1HSGLHU4}y z{KgAi@%zg`_G2Xccoj8!e&bL6~;2Hzwf_zNA%-3&BFGoRr_id~428@$*E_AyubB z@(IxfQj%qyqQviO727>S;yL^>dUTePd|TltV@_ZWC-EF1SFS0W@aq2GfLHauIePu! z;oVfSHK~+dmT_ai5DGUk9=FyIcD%p(>Z|Yn;upX8q#|4RHYAC(N?3(CM}0j!*Bs=P zmqT5%Sc?TDk+gWDTG|Ty?t=_ zz-ch@csD%T^B*uZv@zr+bkPeC&Rb(F8CcTb^8~54tR2XjQR)P(`Ansd};Nbdqtp3yx&y_q~4qHqI-M`#S zl$m}7J2A9T*qWfGQL47Qh`Ewi63`QKjmGeDSUh=Xg=Vsuyy5IdhQxg+U7)+Xf)fPqQhwx4E-*o_YuRDMhc7cBw-qVEfmZ>|D1l0hS3GhEz=l8m=ewi3vInOkTkt!=c6z@alnc;GnJ} zqnCcu8D~Uo4#dgbe#h-FFfg~WHoQV=>M9k6UANtS`;(Vlda0&}!o>Ve3a_{c*gjAI z;!D{Fc_ng?**uBXuXTj;$KB=EKYID)_g`_v73fip3n#n54W)WjgsUb0=YRii5q3QF z)KlXwHoSW`49-0?L)_Dx zE$fS8p&;$hUEwu7;c;Ksk;h^Ewtt3WmV7XN&Xvn9g0a>Xm~wmJ_@y6|J_q(kc1%4Q z3}X&-2hY=tGG~;7B&1a)pJTSjcrpsr6YYwi!9*&Frw9`(5>#x5)p69>)Uw;dq_~a)mqp_C87TAkm^Ecd=S6+GLPp-M< znx_zJ`igie^>wYv1UM)J|gcAln{pnAiHh=#7 zx%KdmJ<0v6R>8#=Uo3BW$DMb=^5q8$`80Z=xr1|~xc$!Q4Z%=ugWc_)5nWB@y=9Go zB;*OAGQ|mK8j}TC1kwl-92PYhJpn1>;%kTG97XNXi|m5wsd0GYqRU|3oZ~v4kXCyS ztl9dRuyQs*Z_fhg>7E;bjHv%7yMOK$=H7=YsTz{_O^RM#2)x1MnR!mYqaqw}lg(=! z89c_>u%P?M#7r|XN(p${6rOozBmCOi-X@>*D_{8vyz%6dE1pA#GB_f8>7|$caLt-E zOt7$x%D9hFNX4_{5k6x7%c+S7`v2Yg;x71?yOaJRe;`w9DE1M^5eKjEYDCrezxu1c zI`%#9dC#%+{AhIVUU=^X7r@4i8{?ayh|2%^+rQ0|cN~Ba-m8CLAna^S7;Eo>NA}zb z&rUxS7V>0HfEhJQBpg68Y+MBc;2qOT#S2sy-K#Jwguk zm`~U>R>(>kB_T_I#a*v~V+YTLzQ(+;t)=RGa-LP=0WuBx>e6Tv48K$6(i|^ zJe_zVhFqAZoP6@hLm&V6$KP)%1&zZ~Vexv0jAmub`tx0Ud`ZfjPc`vCH7KU)4B4afPCFOy)pd4 zMKadf1)GDhY@J*OJEtDcBd3bWlaaL?Vi}ni_Z4d{skq6 zCe?z}?jvJR>d;bxHj*GSOAC651tEM|(6a&-_O5`Y=_XWhO1637Ykn_%jd62e;&JXf z`5I&$??3z5&%(FA{cX2!;lhXSzWeT?wcTC9sJ=R{^8*v7Cy1Budk`++wo_-=sa(N7o9m?l|WEsa0_z}HlozHYXqa| z5@|7fetR&MZ4>KZq_r6)-0pC{QL)IA;n2UY{K)~A$+O*<469cm6FxV$xg2`!JQ!>q z9E{;ru&`%^ zN%hemQGE@rP-(BR-#Lz7LFVQTHy3&P)@|tj*iH{d7SkS!uqaR)I?svUw1sV$X zNzfy3kAXF|>v;B^n%P7H?n z97Hiq>_1T+f`)P3_1CZe)RkAR-?3u{%kQC=KqBdf$S`z;YFZhFf2j=MmnsLDEd-;G zi@ixxRk~7sVnTl6;S78p4dsuoxMIa`zVn?c1_uY5aUhF!N?sgw4-#1tBl@w zbp@1HDQI`q&skAI%Bj@s7wDO1o{oS^93VR6kVE&|TjlGLB&*9TJq=zyHybvWa`pA( zae@5zRm0$foWm@jjUwb4t&o7P|NH;@f3;yuQaAiTm1l5;s>NPoU%AGwa*!90gX|+O z0R>ahVHX?9iDA89@1z?I@eym|9_V|eA<3$LFo`{4Iv52;^klz}|*$Rj(x`OR-W5%P?u)H$CB zFS;*$hIJH1jn)jK1y%UaD|UO?bC93c5KM(#y4s~fFEkbm-cP48F&uNuF>@~aumAN` zZ$Im-!~6UDn`|hor^v%Rbu_c^c9C$5-f=sTEwi!JMTGRvC%^HHuy*ZQIPt_2;YX`h zb@UYcdTo%i83=p7PQ430&`a{~V?L%5?^|xY^~tNRy6W*@AYR0slhgAO~0y=FqEKH5%EgEDhi6=&-lFmj5nC9A`^dNlmBRe6hXWf&YvmCq;7*w6KRWkWD{g>T`6z9jG4!B7~s!r|8( z3cpr_i+>VT!BF(4>-T=|_YQsA+upY9gcD9!j-EysK%S$4%(m<2 zQf%Eopyok?B)YDE~aN-Fk9u&OI0LS_|(XS@*)e`c77zpZw>@UQc%|Jj^ z-0=C08#j(VxbDH7_x$jl9k-L8qet4{QYW9Xz@YC>JpA0{5R|dhJVp1jE+~jjF z6&(FnImpXY2HuaM)DwDbEZV#DhAS{HoP|Te0$Lm%A4ac>w?&H5`?030qjNbRCF+Xu`aGan7%UWuFPqiC<9Jxh1Z!}O5B z1Viyl!s0q8JYGT}TIF`!amUSBv0_EvNw0tX&|!xi*0*fw(!Rxu7xzt0PL|=mHyG9& zz4IZVGwQ|j4W;OYhK4G}@$9qDj)lcO(bLmYg!}Q0n>LO=_0-ejKl$;GhaY?FvGHIW zW3znKv6x&N*cm?a7D$6i+B>i@Ow~Mvc#D1YF<$8Hmp%viMKHix(^2Ou+Picq!_fyO z_Y1;-1~UW+_A*E3F)!0?f{bC5yuwb%1PD{LV_F?8Wfbfw$`{KhUTF{T3-3XG-aJqT zW6|D48;v#|ea}D7r9&G`FBuiTuA%;&`nB+Cv9{Gho+4w=1~Ed1Uhvbk`&P{u>R#e` z8O1NU0sN;okeBKF@B%J69E}4w^y_WyFzToqh$gXcwZ&X2~NUw{Dst8WjP{;2hH00000 LNkvXXu0mjflDQJ; literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/center.png b/examples/declarative/qtquick1/toys/clocks/content/center.png new file mode 100644 index 0000000000000000000000000000000000000000..7fbd802a44e4242cb2ce11fd78efa0e2e9123591 GIT binary patch literal 765 zcmVwm?cmZyN`*KT0&&bzT5WB7@L(auxOrlE<9L|IL z&i8)L&uf>4S*T)OE8F->35(24d5sX5GeKScQ1}Zk0{U)AOeg56F@@r z9&i_k$@vIi#IHYN1sVpTz-?fBeSQ6DCX;#L`@V5q_xHlW!biXb&PAI*M>7u%0F42O z&CSilY&QEQkw`q(Y+9|>+rz`dd@7ZCCyf6B4GRvyQa(U#F>=uz;8CGacvY|0gJD{& zR*!%=;GskpvRQC?*oNeXsg;$Lg75nb(|9~ScW`jV&hDzY)D;F81#ZpE%q)7I$4wLnZ)|KVO0gq?V>GZMsffhm@h95(I@ZZ# z@|p5Cm%2j9NTbnchQr~}K4*QUR;xAXnTaa{0<=q|(&w9`!7|R}a-RSX+iE?)KF|i5 zdwY9dZUWrtbf{D+rE0Z$O1Fn?9|syZpgTcsu~% z2a54IaFR}^*UIJc*Fkx8UH5EjYin(1XXi+K>f-M$<%5e|vAb&Q;)&8-GE=~VTrQWI zpPx@oPftIdoSeL0E|vh*lr=Z!!jm-Q2}+N`W?w>U9_n|b&dh-G77}8A*@a$++Si(L{Cv$O@m%xtVMFJ vUl6^??F-^D;CUJdtS*47?_QuH>?{8O-DBHcK9x2C00000NkvXXu0mjfY~)gG literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/clock-night.png b/examples/declarative/qtquick1/toys/clocks/content/clock-night.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7151a397e16b6d6e2bbe6b1a59d43d09d76a89 GIT binary patch literal 23359 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/clock.png b/examples/declarative/qtquick1/toys/clocks/content/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..462edacc0eaae9f2789ba6ae2c92ed533bba7207 GIT binary patch literal 20653 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�$@7S8U3ymd7s7tyOHWAvUm z!t8j;y?C2<2}e`&NBs zk|RSR9_R4Kg=Z_uc_R(0ACjxF<KbE$Lo&3+4H z^-oQ4`H5?8exV)c>u1Dr0kTvFTg+)a8?8bsZwpqqX4r2oz8QT40DQmj`P6*QrBm>V7YV%01x_JADEx%^ zYr);e3s%p$=CZLzuClr$rRa0A`ju}-P<7iI{`Q`4)24ZEZqVnxG9SyXV&z_!Wd`%z zcVvG&ybwli^(yJ@>A{_Ob>)%J!=DGKNXOy1Jtb*^m!xa}Mzho4i2eXqq#bjk9FMd^ z8V^ntW~3cz#40NrK_b|AKh5Pl@X5^Qj`XWG zg1NcPnfY(~#SJg#&X_g6_1DAEkoGm=6g)pmB&Gv`&Ugwe?Xb-v3K2s;3O&vdUn>)6 zNbhzTNrphVr~;_n>$V{lZjvIRlU&TIiaBFql|r3%7EpzD`Zl=;nN&^^4*{)Byzpbgy7Ztu1Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05S=eKQo^I00HqyL_t(o!|j;6j?+LChQH(WKrRH9n~*5B+Xf+}qoCp?QbhDr+aW4C zdL)WeG|*73Qt}2#5GYa#8lHeyT5%Jx6^|Vs3TCpi3#*N^(5!rAP(?i zpbcDdi`#BafhF)0_yH_{<^G;j-Z65HSAi?QwQje2qu=lE8e?QQ9DbTiCZB$!PRzWG#b6g^IYfixlNKp zlO)mkd~WkR*XeZn9N2LsMIPI@O}e#MEZ(MRdQ(+f!4V-MX{XaUXti1ofGWn%B2ph!ja_4( zllQqksv7%D*vIGV-L8MJ_1E)%V^D@!@0!USLDI&%-Tf!(+)zhuk*v@?gELHWx3HVl3-#ZiS4OG{=?eVR(k3}SQ z4HfIgcM*xLwNJwSkc5pTA8#HNca1U6fcp;rT~QQIAHFmn!*#y^s*t+D3$g`_00000 LNkvXXu0mjfjzPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05TtA>xRw%00HqyL_t(o!{wO0j?+L8fWO%|770J$s8EVS0#RN|$77_WqdO@D#YwzF zQsph6q@&?ABGEeN5LNhz?tJXf%o=NP@WtU|M~t+J=8lH8w8rzgYVaAXtQF)NbbYoOc(p3G*mm#fw4({j1|oMqYhd_F$|o&k?c z$4P0>0C<>X+1vGceG&pR8jU`V$Kw~kIq(Jeo)AfzrjMnt82bJGIM#9eDMGar2~Dbc z%cPR{zmaMssiJHlu@`A?^Q0;eRi?UYgu2B*)FwBg`kN!&oKJD|>hjcx)N9wLMxs9`<{e7>)D_3?Qbu$pY$hFJ3sqOT zr3pU0HwA!=s=hNTe7MaiqGvBO&o5r3X?iIl&sFt9p69OvA?W@B51fzRJAdej00000 LNkvXXu0mjfJuMrm literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/quit.png b/examples/declarative/qtquick1/toys/clocks/content/quit.png new file mode 100644 index 0000000000000000000000000000000000000000..b822057d4e6a6ac5ed2b7d20fb27d5368b0e831b GIT binary patch literal 583 zcmV-N0=WH&P)iLVjkLUbqUBm)|aiE*K3 zcJA~s1Q&7dB@h+jHEskYS%e6>@m-Yfs4;jc7hOGcW~w{mf!>^|^Q)qYI!%m`7$cH` zr2CS3Wp1xe(q&0^tGO!nNK%yaN7CX5*sP>qsb;Cn2X_y^1E5C{0eI-{H>e4BzXYrT z?UcIh?n?kIN%w$TnYzC~&&*Z^u#3PmU_4WECjcwJm&{-Qmfih&1)FKWz5#DrF-F{d z0@wf!*X(o=aNv0j_8piqvk$EpW4ZdVgdWNi!~~DkVAE!{1<(f*Iti@Tpt;zEL2*v~ zFtg9V8Q|*(*bksv#fElR+39g$6F69d?EoD!+Z-GS!*c;RLjLf}7zd8#28KX)?*gy( z00Z#Y-4_}`cb`t!z6Pv}G2n^2U&(^*J_Wo6_GgNBC@vv~K6Ur`U0}l2YOrmf3!Dbj zfX+ejmOH?k2JF04~q4ZzJB>?d%c!~o3f6VRb}hJ(=tW&^O0R?T7S zgH>ksu?Bq!Tq~R90ZH#tv)q<+c7z6dQj({d7n0ijj$J|5B%S+@U%)9z%Ow_L3 Vh5vkKWu5>4002ovPDHLkV1nYy`N{wQ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/second.png b/examples/declarative/qtquick1/toys/clocks/content/second.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa9fb5e8ee10bceed60233801f6cafbbc601362 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^tUw&f!3HE7ALAcI9 z%{-)-#I>01eJJ1I*m*ivo;z>;fApF7?nmi?*OJbCk6Ba6-}}@5-m_hw^uNY#bn7wL uw$wt4`T4tTa)qAq@q#bR-xN5-FuuQc`KERIYhIw!89ZJ6T-G@yGywn$272fK literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/corkboards/Day.qml b/examples/declarative/qtquick1/toys/corkboards/Day.qml new file mode 100644 index 0000000000..ca95182cce --- /dev/null +++ b/examples/declarative/qtquick1/toys/corkboards/Day.qml @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Component { + Item { + property variant stickies + + id: page + width: ListView.view.width+40; height: ListView.view.height + + + Image { + source: "cork.jpg" + width: page.ListView.view.width + height: page.ListView.view.height + fillMode: Image.PreserveAspectCrop + clip: true + } + + MouseArea { + anchors.fill: parent + onClicked: page.focus = false; + } + + Text { + text: name; x: 15; y: 8; height: 40; width: 370 + font.pixelSize: 18; font.bold: true; color: "white" + style: Text.Outline; styleColor: "black" + } + + Repeater { + model: notes + Item { + id: stickyPage + + property int randomX: Math.random() * (page.ListView.view.width-0.5*stickyImage.width) +100 + property int randomY: Math.random() * (page.ListView.view.height-0.5*stickyImage.height) +50 + + x: randomX; y: randomY + + rotation: -flickable.horizontalVelocity / 100; + Behavior on rotation { + SpringAnimation { spring: 2.0; damping: 0.15 } + } + + Item { + id: sticky + scale: 0.7 + + Image { + id: stickyImage + x: 8 + -width * 0.6 / 2; y: -20 + source: "note-yellow.png" + scale: 0.6; transformOrigin: Item.TopLeft + smooth: true + } + + TextEdit { + id: myText + x: -104; y: 36; width: 215; height: 200 + smooth: true + font.pixelSize: 24 + readOnly: false + rotation: -8 + text: noteText + } + + Item { + x: stickyImage.x; y: -20 + width: stickyImage.width * stickyImage.scale + height: stickyImage.height * stickyImage.scale + + MouseArea { + id: mouse + anchors.fill: parent + drag.target: stickyPage + drag.axis: Drag.XandYAxis + drag.minimumY: 0 + drag.maximumY: page.height - 80 + drag.minimumX: 100 + drag.maximumX: page.width - 140 + onClicked: { myText.focus = true; myText.openSoftwareInputPanel(); } + } + } + } + + Image { + x: -width / 2; y: -height * 0.5 / 2 + source: "tack.png" + scale: 0.7; transformOrigin: Item.TopLeft + } + + states: State { + name: "pressed" + when: mouse.pressed + PropertyChanges { target: sticky; rotation: 8; scale: 1 } + PropertyChanges { target: page; z: 8 } + } + + transitions: Transition { + NumberAnimation { properties: "rotation,scale"; duration: 200 } + } + } + } + } +} + + + + + + + + diff --git a/examples/declarative/qtquick1/toys/corkboards/cork.jpg b/examples/declarative/qtquick1/toys/corkboards/cork.jpg new file mode 100644 index 0000000000000000000000000000000000000000..160bc002bf9d03a3d8b95c1ef3ade4a9d02c4fb2 GIT binary patch literal 149337 zcmb5VcUV);(+3(t4;?AedkIZC2uQD?hlGww{nA1cP*i&F5JCs3frKU?grXGb%>o37 zR0TvqP?3&+7k}k_-+TYNlV`J^GdnvoJG*;!&w0-NA^iCWpoi!i=>v#}hyaGyKfs?) zz!JSjULF8|sVP7V002+`Ktyx^;58z|ATn}03_(YGC;EO|LT{KmM$myU-@$2f7?#XTTc96O!Tpm^*=J#@vH{^ z2VWbnCjLJd^dJ1UH~vk3(cf7AjU(y*J2KLWD$+9lpJ@G?2LOPU003Yt06^b$U9IA} zuIaz@kX=Xo?Tpyuk-&b0dxSszeMz}e;|;Un2dz@n#f5> zNysS3DJcFXN)QbdB_%b8f`W>UikgP@nkcF08R%#k{^Gw%{#L)PMMgqGMoURS`B&oq zAN}bEFi;SEB<3Y1;s*d3h=>`8{tN*)uiJh-mHy7A{}3q|ISDb4f(US3s!IEBv7Q=OPh_5^9ngC>fhX)Z5z(9Pho?naPhODJ? zAd`T0ban+PwB_~mr$37T>c7Ga#0&rpz+mCW7FnRzj>F_bv(Ft#0)9gd6jrqc;a>y1 z4%W5mt(K`L(!npWt}Tj$Si)u3YqgIyBJ0%lpEdU3!u%jdtt!EE zMFlam1wI#3%}0aGaqbk-Uibs(b9^ek-!gY&^Y`uNf=F*xRSo^}L1*yUXAFKqivo_D zbCG=FtH0z-&`V`+p=F#PI3VIGKw3gt0s+h;N;bUulkhP=+25AdXQIBvbrXF#{de}O zq>~N(IFl-+PI@<;yFii+%}9C)ZM>qu2-7zPd9}D#s1R~2 zaTMi`-GBxCT&@XiCnFFfdIrrAqn4@qNmUkR8#7S$*jKUU-o*=lso~*Jz(ZwF!YQ98 zdpX?V}ytWe=o%M84XQP<3*- zAHv39Bpi(tGU^mE(JbLK`DdVA7TT`l(xlj@yaAaERs_qy$`k3CxB$=bwSYAX^4{a~ z`wK&9FYjTry!*0E46TYOVOc0I5OJvy2S@trn>H?R&35xNc7*Kv>{C=iF)<`jarNpE z*+T!wm!s9`V>Y_%0ZdBUqF`v;aG!~ks7fLe1?BG*?NMLpnWTrM6OnD?q{N(h8gjX`g@r+mDSDb=s*j#vYi zgxcvoO=e{di=L=8zdrz9-2>hBIt;Nwn6L1P0-vaPb&higSJ%(LCK^cw(Ko}TvQDPI zfx8)X#lm0G)p#OqMPcflQpyi0rrvnM^SO<8jYDr*Fc9oRokoVDN8f*}&-OM~=E|=t zyl9JvSh+M&L|ad zmsmboB|u-cU@JJ_IqZ8{j4y_<*%fo^gOH7i_s#9Htr9(8+_9>EOfW>7cjg}4LXUA( z4^<7c&h}Y6Sz09wqO#()ynj`j)=FNXH|i~Px+ObtgO@)&8YOF7DhBc?pfiMU$}XR9 z{L=`+EUui0x6by1OcUqWy9@PnMm|SOL%WBgkq`&R;zcUr_kF>~ZOyH&137aX@u{9_ zKk8Ev2@e%?#*OV+kSL5wE?Nok+TT#1_cwLK(B#p0n1^g(EzV*?|8u3(?H^07!!7Zz z6+L!MnBYUy!`yHW{<4sTxZ`9iZ@0zKtP*K=l_~7B{CLG1uT8#@1xbXUKtrzm0!Q(s z#u~LzG;OA}pI}!rTw1{11^qD48h5;T@TPgm;&BD5@GwQKuxwH24rB(kqWZW&S#>S; z^5^ADo!jKaYep@2P_1cGJ9ne5gB4S0xUKhmA~X_$l8^|vqyOBlXS|Cad35aWm4gy@=ztg;?-DFkLD6Bgy z*>TU%#&q+>#4_vJ(Wg|5}jheIvC|FDQwQZ?Kr%YDG@h#C{b zw)(N2;To-t)EG5zjH0vU zhVS--7_u%Z{m{iXd~A{G{l|m4`_fK%DSC}jBgs5b2-{`W0!n#Lr!rf0z#|Y_^9N9K`cGjIDsLKC zG})>Sx38|y5(7kc3UX2wGN&yF3+^}8JLLT)VA0%Tzz7r9ZPoMp&PFSoC zW)|OaQJ%12c7ir)FB3T*;pFh1Oc!&?v)oxVH$mM_kRHw0X08l1`I*XBZ54=-Z6vbT zw|dX{sAcrw%?KKe{YNS#!MqLf@c_SD&V3Jj6(!=@p9|f)N%=vqVy057O1~Cr1k=5B zU>!xNN`nvGPy7cq8#vq#=0;W1S)Ob#cJmC?QO|qri-|^*I)#zkCLQr(YAYS7PFMQ< z@vwU{LCnR0J{6;FWWQ!2b-^HXTwqD|}xJCP+dixXqCD83yg{@)jz;mDMj|1UiUhZ+&1z^&p<{C%_b5vLR zI{&kNSUcQR6`xiAHE=~Wr@pJhHKld~={H1|V@Zt1rb8WSUNRCl%C6&`9;@$YBf5C0 zejJWM6qspXH+WTHsdTpCaZd*Zn2--iMWXj`r`{7s(mJ;!U3B^?MzWsUDenIPyke`* zyEi2va!_6a1%Pcy#aDla|8}+N8+zN1(<&)L9Ixh+siohNKzn&;g0yGMzkzyQ4~#d$ zwwWKN>{x7!MlV2IRJp#P!R<*Fy!XPd*XKOvl7q7%AUGO&FU=zV1IZ5Mcg4Mo_C-bK zrXF(><-nz+M2n8|>T{xFHCM6r!e%t(#m2!mlRWGmzl(oRyQA;z-YosKC<0f)h^Wbc+q}?&h(6bV=o1MN4_(SLPnr%Ds@(2)bOB4pm>lj`QrlrRh3YEj6Kd^;Sd2qNz6T)BI3f5q$tvx1mv79LkU z@kj`_Vx-*|_`r2k*|1>?Ggov#{mtD)94#JFEpFv4eA0(gs?j;{X(RmF;xk0_vj=)z zdJBFx-Fxu#LE{r;Y1zi2)(y621xr52I^VcPTE&mP%h~7s@UuI(p_ywuiD-K^qM9hMCM!TW#|3jOCPswZQZw zEsLS4FNxVb_+*B`!=366yG(~`TrSaWryLF-q?g6^AAo|Q(nJTtEIu67XfXd|Er_mV zvESRoDB&tMGx^t*C%vjaHf9dRJ;bS+=b6~@{23r>IW zEr|#j#~4#@OLKBlhGul@ofj0g2?iZ?(=&$TtVKK==*V6j!}3R6%pd3(CEnCwu(hBi zEmlU~2r@hF@S$c*`&H1SmYE+$E9#B#t9+Avv~l@!$#$IKE{4?w>>a9|id0Z(_c^_O6s@*9CWH#4^N)f;@$FD&}P7DTvPDsU`O#fH&DEl(0#(?6~p)|Sfju=yRA)PDT=n}UVE<1hX zOHVl|PE^H3^FX=;g_1_|Y!YNUZ2?h_(ro+n{mHX#&hs#@DE+p$i#HOsXm4%_5$L~J zJWy}qLd`BI23pDy+LO#H>`CU>Tk<>goIHGA!;=H6?e#VcF*-{eUT#(dkq7#to4aJD zRrL*^WX--8;|kplel^9nJ2QGwuhy>@Ur2h&yXXuvyk%akL4%x7NRk<@X3!4<_EKEZ z`U7x%$~jf}=$SdLusFHhh!Y=$=CHu`Y<2O<;t7P?k)jtMyxROUa+_}7NhdD7$U zq^RT81XffU_N;E}V9kt8pqxTropP?RW|7x@{@bywLZek%eZSIg;4elX2GtJ5$4fXy z6AFt6p5ctj5AH8QIwaXq?GJ6gGe5mq^J@8v%i$&)!wk@(9jx0H{(6mA6haaP%mdzN zFmdkop&83K`1SctP~LZ%#xZsB5@5-uXXa?2=>)1d3q(4cbP$O+eqFhoAm`COX8hJS z;jzx)z2ex&HTJs0g6FRUkGSpetK0U8XkGh1fXg*TC)>%&7TX+XE-NPSBU&nR!-i7T z{|HBQB*qpiQ7MaN9{CE!MH||a|5&3qQgKTOaz>2?#7i2P<&Tqn=~Enx;~eO;Fs7AV z&cn~gF_w~z&8qtHdxXZ%}SS#F2b1dx1YbTbP-S06sT)UcRICPMqFv+nQxvs?(l9pKjJa!P=}v|HPtN z37NHnju0`^4n|4Z@Ugc4*o%QZ_P*EDx*N*k);*tqGN=IfKmErKYp$nv+CHIpk1o>`_ z`h7KPY-h^w4OLWDK6dcG_fB>;h`-y&7x$7`^wDwzfuq3tfk^uSHQKpzr_~V(n2x*% z!_iOQdkb4Mh9p`$);@E3XPLzwKu5V;efHx=yjYOvZdVYUa0k*H6l zd3`+4Fky03m|6jkFhcLzh9Jv*pFHXntM!IHEh(e7ol0-#XTmL|^Cmc1k_UzT41B|| zoT^hOh-1uqW@8BfZsv3oUtMbsCx{#=QRT)euCma zyt_Hb4C9>0cgUcE7P9A49x+;IaV#FIIU`=Z262Woe+rBfhPKBA285myZBR%j{sAzH z$yugNw=O{irJVd6Rz$dNfr;#)ip^xpH3ZE%qeb+>E{6$?TRp`<_S$A z3&j5b6lb7F)N`ymU@<+J7^%4%U?j7m-1EO)S2+Bxc>-YpVc%uEo+Gy}T5A*_?9gCjWg^ zr)&-HT%E#|z*E%i7fuv3xwzMSBz|TU&3z@*HQ&m(AtIw;9gB~E=>{`Tv!C4f9xz9@ zPG(zsA>o&9;%zLm(F#3!-&8rS+JJR>m--2qD??w$DE7#uX!e&*_hdqYdStXrs5mw9}g z5!wWGW5B>yM^Lu_YRC14M|VwJ{8x9@qk5k;KfoVANB?<`Q@4kei%)A|-hh*6uyQ?E zNs-roxbroJo_em%)abKmc)MLInnRwb7e$qQqWaOpCs9X_$ke(hSe?Rwp$dt<*P=v7 zQ&b|P?%IglQ)T1plcF`DLz~M0wPDpNHq{k^C&xH`!~*N-VL2f}qYTxep%#Jx zfrs&A_3VDoq^Ugm#mCN4k8y&jcP}%01<#PF(6nFcvt`cbt_g3LIvVi}bsvd_qx$<( zK2T^Z`!(u%bH>^>z4dl~w)iG)WLp#9$){*! zIlEYzyC^$4)lXNexaUITUMe+zx5P&N)}3N>oh_e8H%<7cn@lGW(ez2h-0zF8_nWgj zOv$Fkej)m<@7`&;ds+w~iH?Nl1=@c^$W$gniVdeE-qgyNC!1P1GghL9c{{3ukfrUv z8BRvd-I9-r2KSV|Clo@F@${71VPuzYg+FMoR%P+G_)VY%FIH{+RO_K%gqoo?k?`Ny z5z-a*deBnR?R}234>BdR8x`vqER0LYb#s#L?%O|&5 zHzzyiek4_wOfQumt7x#TcsJM2AF;Q_J|dI7YuE%g3!lum+oT_@|7enmD3@ zgP}viS4zr(=BYLY&!N49ya;Yx2$vMk??#-=RcEy$p%V zZcS3-5v0ELwr)IkpM?>8_>YO3DxPu0WBQWpm``)LtcHQCLANTzRZ=0z%xc-arGgjJ zIiYDk-*js^Ha=xYCGC2J?{`#jGhhQ}>1g?N7yktHneWQXR9-B+ASud~vd6TO8_rD6 zPJggb)V%hO=d3$;YS4TK$E;`{^_~Uby%EA_8g+izverxh^1>=_zSh^Fb5j)E_F90m z-S5uj0A~3q4Xcy+WGe}#a7n0|VcXunTH(_J3&dsYZ1S*-DE&f!%5?q!1Ustd?kO=c z_E>i{)7^}5lI+XthCm&)(0e)$pQD2knWsrLbvJ6-1Di&qjlxl#Qp zeIj8&tV^ULDB$cA59wiHoy}9ApM*VCLifL-i=`gkTGvW|* zp}!2h-c;pp%Q7<)T?S>b&1ha()y?xfH6n^g=6`Z?N1>A~QkA_p_%tQs=LeM@@ZAcR zM@ma+5p`Wfg8%RpxON%Gnp0dH<9FJ-B4<#kwwL}-rC_Y4*=C+_cGBKvdoKH=55k+= z%b~qWe~iPlql zX3;v=Hp`d!Xi((=r)L{ndRXPFm9ss4Hu~Y(oR95VuMj?ENv7p3?Lg{-vg{) zTYn+rx5Bnlmv{Xn=sra5Rkv-_OzgV`=`(xVb(5%wuQPW4Vz)7MVp^Txpod>?Oc@#O zhnkCQl3!W6I3`m~`YPfa5nB%LKdK?t*k<{*nZ3kQ$s9{%j*i$3`PT={>ItR$HWOja zY?U|W>|-H0Lf?eA3~2L~OykGQMzhBT9~6dlQ;VVG!P(kDDhqBLlC=^VU95Y)K9}VI z$zPazjno}H3QZkC;$;uX=Q#O(Zk2DOXf$9>%zbEjnnx|`EIsRBQ3@m5JA7ijRfw0% zm(3ZM>RnEaR&H%IUTtJnFG|DxUVRcwZ#<`I@Cz8Wt{N@O&nA`ZFs)OJ4(VuCTK;kQ zvx%%fhlgi~{YIny3(7F3EewNhh-77L@eCu;6@UFtgQx!0hnw!WQfJW+%YJt4CKig_ z$Tg5WQQogNpcY6mEKS5T%{n3Ps+O~N!jPp)aT$@QqIRy+<(}l5OqDei!0GEKwsBvH zBYa=2b0G7lJFC#!j4tNFoy>CZP(6GiVFHd@dZsw=%)_f}u)q<`B2Z}vDV>L+a$XBW zNg*N#sx(D+L*6lqO38pFMl<5np+`}cmM!G&-YmcGOLDnX3nz&6^^ z#KXt?F|5|C;NLpLL|{;j^`|#}X~JSs)p4n`2I{Axt3LHFtr0%4Qm{r<{?F7^h-lWX ztAcw~9wati6yYGzQnqj<#&twUKt%%Nk=w){fDCxlBA(QVmP<2sFLA2!T*`ob_mM|u z>$jHP;O>N#u=V^IMs27X!J$O{rISnK;1^PU4w=*_#ou+NsE%8%_ivMrD^E5FOy?cY z3eiT{FkzN+HYjtubqoF9zo0TcQ!oe=tCM5XB-h+(KyFs=bp9$_a1XV;fAI^oyWe4u>C+ z+^4L-M$61%8~vKjg0?F5UoQ{e_VC7-zV7q+6zb7AndVBra@*2;_>3NQ4#ODX3ARVJ z2k(@9urOVF2PE$i)3=QH;P=Q{`3#8uA3%FEx3!})voKFC5qg`|c<(VPyh(}2_+z@d zg5n*Rsjy=RjcG3vnwf-q{d7uYK=n>i-F&c1heIjf*6Ma^6f|lgrr3}?PHMEnSIYfS zaKeVoi>GzSm3+l1X?$!5?$#5MKY$TYsn4KrbEP`X<%|KhspK;R;vd+* zT?Rg(+fMrf7(UiGPyQ_dGe3>Y`3S>25DyW=9Vn0+H?s#)cGH_joE(qdZu^Q)N&9NW zsS^#FW9w(s>*CRtR+s4Vokq7aqN_(*uk1AANlG(5{sB0+HnLmg+W!OxnvJ&@$Lk+= zF8#=um@*Q!V%DL3I`Ppv{DeEubIp46TgT03ci3G+JR8+L@*FIou$}HwnTQEh2j-nA zYjD_|Dk)ef_k&;O#sN;c`~Dif&M}zguW$GYxfFVX2@9>sit2$d{gC)VQOX*tdo-pdKCE`815Xb|_`5!ItkeqMkmy8y zE0!E`k`VM$KUt$Kqjl4Bz4dg^2(bWn!-}>DFKm35sgkNT3 z=cn!X*0s-~OXtLKUeDz>yI7KD90GNZETVE;N3NtNNP~4pjD%~F6w=y`BPABLB6x1T zW-NxT5Q&OeqhehH>W^Q)nuI-+nzy@tp=oY$sEk_e&omQmPZ6{`+#G#e3ap6=7t4CH z+>vFtm+)ARcW`2w`$?_E<2%TFL5_OFE?oxUrL5;|(0X{LbJAH+qd}egp1xpL1LQ+% zdXoW5*B?L{)fBva&TF82QbP)qqnYL28(FO7e1dxy@Iez(1ozJP z4r3(hDyh7=lFftE`+6n2>=t31^)!U{MVahYLS~IF zqvnX0p9nidfs7-|*}m&1Z!NNCu;3Gc=b->0z<&J_rTlJ(G`KL^Em@Lp2ej{9RUe};6y8(C0&q+3Q2x=XwmT}#ugj$|iAPo0-e$;+N)+HA>w{yZR{qA;jo z>bIR^ikz9M?2Tw}NF!K?Ya(Oi!eytwNbL_G$nQ`pQY@R_O>~!>F){LVlYbFONwT`U zpJFOu;!?~aF*oY>*wSM@{$5@5@TiMw`u)j7Oup7jY}j zN$|5HJDJZF8mI!dE7Q?F^)GB}3nQ{SpY`x}oAB(ZP-n&&CN$PmIj0|VCE?IMT__m%Va6p;Tf*Cn_PnFIP4D zs8?yA0(bF`5Ckza>wqg22@yT%OJnd5f-2ax&$=Iin?!|7mFKI$0>uwOCp-&OrH$Sf zi8rD1B;>{XAE3o4J8)|-m-KrfPG9(_MlYGpB+4lFW|U;55aLm*}Wi~h@S5h zgSlq8RkE%7DDI?FE(Nfwl@D$MH~N+s4yJ2rTY+RZ7D}YcKGqbk1Dq4GG?k~i=b1#N&6|G_US}L4wHc+lb>0`{5o&dcd-sIyRR_2Akp#6QIsqjWlbukMRTeW zhGBTgcjKM!wFDiSm2>=tD9vEiwTc>a%9R@9g{IvAQjx>x_6z3+YQm%r%0sBh%yD-K zk~&qtDEg+0{iNl4`}~~gvYhz~{P#&URVa*gPkySO23OB=$LFHeC}clNLLBM@vCU7A zPr~;DlUcvJIgS7Fs-M1DyHJV8{?KuD;ya+y&BpTGX`s0}-LQ*LOT(dMCyLU_DG;o9 zbZnRMP-lBh>k&j=XxOW;F;4xQQL35wZB@9)_|i=mrQ2graJ;ZpGD7qgb19hhQZwV! z`s&BnY4l=JoYxyw{>p+D+wiZ5HrQb?pvJ#n&_8xa(RD0os!e`lk^Wn>qT+Wy)e>J9 z&Zm7Q$XX%3c*9DAz-52F4XIswK5a&nS< zTV*LTRm@Bua09cWBJUQc4$G$A9YEjQ9_39yZvMjwL8^fP_DkFvYZOg|%^p@?+w{vy zK*)~wxq=tkh-L#jxk*n(OhI&i09~ao$7DO$ z^L$#kjo-~IX`|ekD#x8psa|)uRD^{OV>`dgCL9NX4x?0K%vpas-wjbA{%#y{ToPuM z`ie_P%iwE(LIKL%J=>&QNrll?WsNEj^1f=^2)_4#z~Q`b(|PyfCXWCYxr`Ff8$74v z+6X%0^5HJ?;cB*iA(aYgl>Nr&(uS`wq6v{AV(9{2T}gK_Qu$gH!<|t^NR+K|c6ZW` zj;9n@%dgCswsWsM@T~9(Mc_BStqzjIaaJ55^diIq`0lboBg2-jbKYf8b$z;w+i$)?KVtwqrH>R9E2A{WwT~ zkT(kpWy=@;Z@qGT`5YC)aeU|RJ2-@dtRcR7_!|R{J|gyF6h;=YT`aF+J+Y+^{QgNU z_B;zqYsT!mcgECZJ(3jHw80QLpD0}wyc{<6pQ$uSSu)Ox`>Ku9u;gFh_;IvBCUyw% zol07U>uImwn!|7zYYBvS?*@tlnYm2RGZ2|}NY2j_o0cLEY?^1x$xqH*wXZZoKqQGf zyt^g>Hja;GiDz72?aY7A#W9-2-ylTNUhm36v2bP+nl}i-wk_DVwZ2i8E3xKx&KD+c zoJ}pb^WCHnvmDQ_6`eTS(p{_9fORX%q_&GS*yAp)2X&raGK=>5HSedDRJ4{E!w9>8 zz20ygg-Pn7GbZslwgaB8vv$^cyM8&`}n`Q|NmZJ@=pn?Qd6 zIj8;+ibLDMUpU_$Zp%2|u|$|Xw=jYbyFRPvX<`gpJq^L)>t@OI-KAU`c?BP*KtYL5 zX!d+z@9n$BBAm+FJKL~KaHEo0Id*afDQ*XNAJn|8SMKu!bsfp0BX+cl{E2%fk9(As zL~VPM5%0+eH9mh9BvxYl^PFazVP<;T=b_>kqE>z;yZVa4=sWOS@aXbF&H8IF$u4=c zZ-69P+tTP|nPrz%?O3%zU~X%p&J1Z|eP4SEu<7%7=2NFf(EIX-Y}u&Yw%n-4CEkG0 zgA4|5<5-6a#XEXu<6fjb?ziZm6MEm3!0o3u`B;kY=G?P7G(;|dO(P4SsB)nGdH6r! zukKd_Kao@AO&*`5tQra}KYYMof@$ph8caoUta{x^uvY89YMU$WqR)IZ^2ldt37mT0 zp_{$JF&$4O(ZQDVPTwlX5kG`(G;*3Zbjs}T zeb9O7R_2O%aV325CD$SJ1*1byJ|v!Bn`wt3L=m;@1ZEW?8`&83aV<5AHLREu)GkO# z8>7sU48T(+p$v0+`@#1i}`{72#o1@x*++zV3f7Y1-?)HXx4E>(Z&^`1(W zaOy&a`Do?aS`V{;uh|_s_WhHlCRWTPJz)4ssAJ%*xFc8=q+e{wwi7tYJYniwvXSoq z>qk|@R1?im+S#yo^sbp$d=ez4-y$F5xNT5UW5w<1jb?6pI^+eY-nL~cNiT8eSUo^8t_2gz9{Ob=9$*0LhOH}p)^l|A1&os}S!|lk_B;wp;53zfr zV)n&ZkO7J=j)(2PKPBkdTi!N39E7DXE0(dl@HikjJed`(AstJRginuqCuNytNEL=O z4Z$IARJ3>=Thl!`@_z`c!%)YzaaOG5G#pdzs$fmMw)U4JT zsAZ{Y>lc37&mKHAPJEl4!w|J8%xRrm)Gkyr+X+clEn^wHBaF4Klw#-CN_WC&C>TG{ z9uzymthErkzGbjXW!SCJnY456V=(8zbp_bX8CXY8A}A=<+=EUdM(FR2c@~z#&5A&BXwR0OFnt24}ya zhl3fx`DDpvS^1FaL<)by*0~+R8be7hJ_l+FwMWgBWX3 z)NT2rq&ZeCu!m0KfwAj-m?3w4*v-)7yt+nx+0u*&(xybs1-wmZ!pJJY0rP$p?wo5D zb-(~*T_`H%&RC`0EbD3h0v-eMkOU@4_I*fg1C>J3)ypqJmtK`yucMl&^hY)s)*?557@LKEwo3UUoG7Ff4K$Sna3@9s<#Xqj`tFF9} ziAxZy_(I}NBd&L;`Aib=+u1C>Co@w>;tDhK?M8{qbGDlGK}(`Q>(yL|>Z_Nl8yr}M zln;5;!xA)VzfZ0@g~W`f)Cy1^YIJpNqkiJ^PL|9go0LVsQ_p_Sx_SWLJG^dctaVfdrHFsO$O}eKf*a4S{;^mAN@OY-{XHK#=%0%C9 zb#Wh$_`YLT5Tg=?xb?zP8~x~)3-u-GBZ3O(x}h)4KHwG$nY2 zqWyVCMEL$>vVrZ}@iU@VC`$-ronPB0%hJ^NAuZZjW#+belSUJjdp3)N&2rl8t>G-c ze2d~-k`v+ON6I2eI6>8dLsIa9}TBiNYWx2j^If4vWLCzjzv2eJK{=jY)L$pcZp^pU7pL0t&!z z`!}!sNUl^kG_V{`m3V5H&RDr2Zt@b`i?W`W$g8}){8P<8b6DTm60IhH+p`>iG1e;B zZ>~ML5&n~T!E1U)Qj$<_Z2ZtLL?X5J4GPh*=F5_<4&=@n)~p^^f^b0Iwo&aG^(n4h z?uXXVY$lVi%P})PXOU}}6{fcRHGrRepAvt3C0N=}??1Xk=Hs35+aCNang2mDrB^(U zg&AB`d}^Qg^>#sucNrCv1jPu~btxp$6Bl3DXm(S-;hD1kh5xu&m>6?I_cxZay*8 z3n58(|HPI%;QPU}kU?m9O7Mw$v|F5L1w^TtP}=b$YL*ZFk2Fuh<`AFc5$BE_l>Rw@ z5Tkx-l4c&02DjjSoIi-A>*5ouA5G=g{IHeduAF*zf~#?p^M1wW4{f70tp`ID^*5%S z4#iuz_A8&Ua+>5@KJB{08}%(;YxZzg?MLj9!eMK=iX#tf4uE=YAt;#s=FD0d>18|E zA0~rmk1c??E>N{A$nHQ~320B^Q>2vY!<##ETxcA9&1B2EILr%V^I2LI@#d#J6B$R{ z7z|_OHimrfYijfdU@1t`M7zA?>sCf3YZ0#}?fr9Dff_jrB|v9tDaeg%;iGClqUi6n zn*0GQm(BCfb2V-!{c__&vl@1G0s{X4UPQ~(do%0LM1flsNE*csb07Tv{=~UPkWiOO zhFKbb2m=;3dA+@8iFeFfI31|qs4fv%ehJTP)a*lt_|4+T3*617av-0T2UK>By#-#W zd>E#;C&dK`dk7gmZtYv5V$0t@=XTZYej#aI+1hOR>+KFi$~UB(P|PhsduQ}*PSEUh zp@TSmtQIJh%L~-<2e4_VmZ>~fz;)MSie@NfvxZS1k#XYg_0ox~k2vlXW)in!DD&s{ z7Q;h^66>hPz6$xpC8RLv=pJn22%dqRYqEK3*WW6d#=L)dDcvlfpX`{!{B=qO44i<> zF!CsVFj5oeBGqI1MUt>0(=JHPs6evTrLKYF5Pyg)C`xoitII*LKjZ}CUajm^Q!yNJ z-ruw)$kQ)*1%2MfC>Q(E`I7rK2#dE&Fzw-*FC#mY->&F~SSfUv$Kd#Ju*aM9Xu-wf z4%f8JfaTr+STEZQxMB7iGaEH240%4YR0r_d1sMQO9p8pQ;PAwq;1ia_vF^L~;~HNa zUh%Chy``R>KjQZFM3#7c{Z%}3Ppf6_NsK;^xU`s#@K{h$&GJ(bTNZMQ*Q15eH(21T z54I+la2r#POD&7U2IRmOn~(1r$N9TOcb>eCgL^0sIQTT6fzZd5!x~q%B*S1CZ#a8w zhWxD8qi&X1w2>fH`~%#D1G`{BjtFk2$f11ufz>S*e7Tw^;^_6;>goKE`4=#-cdT7t zNDSU7ic5Z5ZD^SSi05muPa{3VR@jJw&uEpnMtxC2 ze%~Gj0SwRYahK#;z||3V7TpRZDw-?!+Tw*AQkO$jo%d_W&q}*q$if5%>L8WUUYDU9 zZWWs&e7eAhsJ*@8UNM>TomvH2xoDidUNIn`#4OtiVWN7w?m_SgNQZBJiPDJJ<>B(Z zrJE{8pr`DxSe?kwJZLFh$j8!aJq{J0bN=Mu z_orWXB-`L?`N{@)j{4;>i{Zqh9G5@)*o#duLJC-|b|VrlNmb|iH@G!g*)6?@Y_9n{ z`qol0DhshC93k)CST{g#rc2fR`s9xdG~;zVx63`~l~Y?Bsy63`k8@}r`yK0=*%|9> zcGV7JFT;a3CtdqK_jSM0DSs^`rBWbUA*EWVPH(XCul4nepguixQje=zsm2nTA0Q5||`su^XygRc0Km>KiI@`4j5+kU4J)lF{g?4Xugt&5feT zy_5$30pylMP2Lfn!A(GS-Ou5;QK}ZFsoPIJ<+QktBaZUt9TktN83t};=n1CEtaObT z!RA-0l{ci!or4(A3zc3_)GgdZPv#OChG`;KL>$jq1FIFUE3V%nkV5v~G^^g~tsYCY zL}p_#i_iEp!Ct*rWm`N8)VU2Kt98MU2aP?nH57~-cgM9@MV3fQb2fJM0LK*#FN;Vn zT5;Y@q8dJuxR_)TUxSDMMcRkn&t?xhnF^6C6ZmH(aa_E2FHZZ%f3)FKbWM8DSVMdB zEph8+I;_KYeO7M^_ZjaRA8*E+A-d`doEgxjHJoq-Wli36eU_gqs9~-IYno&wA^bH2 zbVvS2|4j!pz6=ZFdtcqb{hVF=(#|p!&3?n*NY(%FN6e4OsxA}9AWrvmMM+Gl{?$dv zqY2d4eaE6ha-AlU__%I~4n+bnAw1As<$3lyd`PB!L65}Yl3y<8Hj+R}Y=BVuLdJ6% zo5vngVCaRUocAkL)Yqiojq}Jrdz$_8e9t zOe|uQIu9?=B1c6bE~OJ$uJ;Bo-7(m}tijZl;s?h>7lqbhP>X#-=<#5Qb>D6AV3EVp zz3x{frd;_4Gf{!G*vo|x;iSG|K6g9?a|c3y1zyJ8-4M*mUl zi(?B0F-MA=otbg8VI_iT(iB@ivFV`0{PJGYM8m z;d0y^QV(1+8YWHEb;K|#1t)qa1B7(OR+)SOXN)zW@A% zLg6-Ph;V9g2v_I*?2DfC<6e1z(g?@GvAHfX^Jo>_2NV!*4ob83TD@Y`GE+GSMl@)>3yBhPHrvL@O`Z*3#^PYWm4R1_Ds4M6(9=Hp`87K{n^TG7b-Jt?GorS zgh0%brCy;P3`4)FlYSM%`Me;ZyFg;{UNweh&L^s}>~ti#`K@hWfMXE5U}xD|O21Dd zcx9W;gN&|QqLL-J@7{qYPARi>+aYuyv#YA5CD76GICs}RnQ>FCq4Z1~nr!1+#I2Od zm+iOkIiJ;GxEZgOKA>aK6PawVpWtMcB;J+_rMXNy7@hILrF-`4ixlYD;m>f~kGMMD z^Hdc=(rl#kc@&l9i^m4SgJn3{Ss|FP^iJ&v(R@ej$FvcaTz_N?Dhxc7@6krw>JmZ$UlKV--0D3Q z?8bXBE>$T=Calbb(;!(W?p#EiR#@LV60|d4hEL3Ow_x;(E(H6`GK2C}?31CUDa=6< zp~}sc)s}Mcw2sln4{KuGTllKC=Z2$MS1+&6YQz`1h;1}+=t+d+ey|aYqU<978dwy2 z&n4X~lq4xb4_Uk1I@1=_Qa@AC)w_x~8bq{mg%Q~&btR9VMYPKn(+d0oFM?u*-x)p| zB92@m_73ZQ$&%u=T~jeS0j(ZKZtEa;>1>E2mz`Tqa&D>MJv#V;-mgPHK#+)l+bz8s zb~;vISq_Zi>y*WI5>eu}i{U>q*faqQ^q*XOZ*H5tl^?rJSs1j2Ae{#eu&dzxlv#R4 zJC}gs3b#RT80uzSlvFr_%PXpn_4=&;0P3z3hiv4Aiw&#IrtAW%-v)wpOlOfOEG6JO zIg7?qw%C#_n5-bIk9l6~^|O*j#J2JE+3+1Dyj};6fPMY*1KqM!&RzL)r&r_o2YPI@ zt-{KuwnS~RN~QF45fBMyPaSTa&q^WPZ)mHsw6qkw0gm z2>95}EY-t63m$G9sB9`X{|Thsz^Nxsgpheyet_P+SYMgX!&BfEHohfZyb_||9XvfF zUgPWTzWI*;p0BRRdwMma9LK2b_|Omd>i5PL#bMruyludc)@QWTm*ViS8R`4 z<7@v}SHi;~ZFHXN^*8l9rspra3#*hEKgF1$wieTI#AUrV_FLigIxW_}^a(JKpNFYE zWlA!Ym!~)jpX+_-lStz<`I#3}r_9GF{29?wG(yYB;=5!dSN{m-J5a7&qZwRSc6&Pc zTQJ1ev3JL*Ny3b3T0luEZ@|ThzxkVrBen8;qW!+>1Kb@d>c0O6s6bc0=4WdxV_i=t zy_~b0T+ts~9)bdcE-Zv8;+qwejjwL_F;*Dx}C% zc@DnP!jPRM33WcLxd#}Ki5bEki0$+nU=-_+vPfAL{UCPjzA~`~*yzPX89>dHY46C4 znt}t2HWwK!@6{djc{kYejP5-ep_?6&TT0(ta6;Cb5x(Po1_Qf8nUrO+rPElL>h(0s zZ8$>Qxw$vfxjy(HsZBANnOo6hFtWkwCc#!b*za%afI|8pV`sCDV{N3<9C_x*Mv%V zx7!|PzZJ*i!%=hQ9BdKNRf0!rA8a-do{_$`JB1X1$DV%pW070qQ?%7*D$Z1^QSzl?xdJ3jD=T;8qpwMAAHq4` z05UyCGu3L5X3eL$95~vUWtUpA8&4@!`PJtPxx+BmqGyO$EyTF{5*S-$@0f8urq->mU@dNcd=ZPn41d{tsOM01+KegHCr}${nH*FrY{Q1+Vq1=uzyZWx^&1aS$5_U6?2gM5?hYUM!-sfjfnscID92g*^a&`@9l{< z#Cok(HeF@P3=t%u{cfrCgo9z*dvEm^s??~o`c_J!F>vXM$`4uOjYVR>n|<*t&Td4V zLx&Z)4=|SBD|y5J0Lng_-q?v?&v8%?CS0kVs}hqH6$Y4k1I*t;0^nQ4x47;xLPIp_ zgv159m6CO(g>WtHZ|{j_MTJQd*A?2jTd4(VDR#}Y;#5hnJZjsE;o7+5R8#|qaH*gG zREX=}ZorOlJfV=-n^A);O(}rvWK~wSQqxYmWC6J8ivj)n<262p)0uI`8jP0Xs3lISskc|B<_9XV8-;kqcC*tsC&q*~ zR-?(UWUJKP48DZ|n2ine>Dy5^v={r3QLmHnC6Xa>0eMVl%G&l&9vLTDYQ(xE{#N-?DexId#DRTJEb=X@=dqGW*Ukx z3cf^hUvit8V@9dKS`rFS(&PSO4*LQ}2MHe#sj}){9x}y2r@mI0(<>@X?4k*=BYls) zE^_Iysqp^*%Rz0$AI(_QJUD!2W%II#wYWc?hJmZmpT$W+NFUdl>RY%Qf$;E%2fRI2cD z=1gX@Ep4=hfC*8tD^<2g`|pUhMa%Q&(jA*nsz{}E85*Lrc2Tjqm3|G+Zx}|d<%-d!jVlJG;1b3 zUu$2+9oT)BYT;2<%Hq0pA!t?7LHECWM>35%w^@RQl-xMwg%+0MUbHBV_9p4Sz42C6 zLX}Rd#-~&tZk;HgA%OV_4%_(&=k33?A(ai9niYnk0nT)~WbebiVYO;5^q14PO7=Di z(riJuaBylCTFVbnSn6pkMr0qAZ0Sl*1lV}Mnv~e{s&7(LA(cLWTw%bgB`X&q{k!?c z3SDvfWVc&dBRH3mTXCnBJwT4e*oIBW?B$~h3d+A0kxz>rOq8{xF(NWGruP<3-azLX zW93}cQLR)Rl_jY3*+nZ=G2{mv4gv+jhwzXvwUeV7H^fS;`7gB1G32Q+8-368cqd7} z=_KOO4yK1fEadfh#&2c?ugZgfkk!z^p8%AO!OFdUsqWo1E3hE|8#ew_+T+!yjmLZgn~^h>8!$nvKzPJ)*&1Dp912g6quAVSz5(Ry{X?N< zne@EFDne4^>@J zF$Id0DwKMqMd-1owomzBr4*??cilhN6*?|+qRFF^_>vna*-0c^9xO-K2-E9XZ#A^y z^4#{9S#6-O!(=ID_tcUJzQld8GN=5!EYC2`>qe;-^t!`@fD?WQ`uN1av0^&v!~;BM z>9C~dCzycR+^0I>aq`-9E2wR-9md`9nTSoggfxaz0nLr|>$pC5!E{2UrSG4Vw4v8r z7O^W*k859H^~Y!o#+92YElX^Cvk~>7_TTbf)9lNV z%JsJMiPEH~+k!rw@wT41EIA^Y@jWu&L0PdX7Uv5zsqw$X65=jPtFR-g;xvsTx$XPg z1ggj6?LBf7w8sMED1O!-*y0Cms^yd^@@AZc)9CLO)*o6NJqDJYI>q-F1E01svkDVg zUD~Ahv7<>S^~O`%1@;2}0NV{TX)M*~%{rt93u+`EBanW$Th2xtnCWUuI$8j#>GY6! z1RpqLZQ7zeuWoRYQl`zxv72zY5$Ba+{8SBr<9_5E56W|6L(F2CDr@dKlp^5AHjt5QmZ z)=#!68F9Fe(;a`LgudE<>H%wy2HgJGgEpcDO`_DShZ>aHr&8A?B@U8?6yP8LEpQL^ zz#8$U#>18vRwV2*sRW;Qb9hp2H`azYjhh)bj;#D#7xxA(xhTuMG= z%5k#=F(^~-pogP8PL^CrvD({P#jwFxfYF!wh9E_z)$-d<+&2FJ$`(|%h|&iZAb-9W zSomV76vUwt)Z@)Iep_ocgV+(=9Biaf>QQqG=~K)_hTW8a59?QOc>cG=N+n0;R`i& z?hXxS7ad-ArX{B(EeO@AO_C4~@|zDH_yaRqlpRV{ZUD8cF=C2b6Df(gQ}UGMI!<7J z@hI#ktNJ}a^#K+jcs?(I&SlkQY|h-q7D-M5q;JDYwSPv)ZlTC%1DlWK|(@yCR z&qpZU;`?_PFxrz_tuX3|`8J#Mgl>%%{Z}0QuZ&t!X|j^!cH*%hXj)V~N;kIu0B_qH z=rsy=N50unA3$*Y+pK!efs_k(lZ&L{N?MI*Um+^qy=%++vxMS)WPB zu$!ndnDSJTq3jPA@rTdwAMPd`oAxMGXgRURl4HG1kfhlzmx7aFalYS9*dqaNf5M7U1DZlvoOLtnwoguo(4_r#HRt z=M}&4T=rr<%}N^;IO;(QOGiS|uRm|L2hF8XWYJUpS;-11Dq&;<^sYH4{x6B9N>7lf zV~ntivL3Hhqqha8QsfrYHNLf3HXGYwE`GPbdWmVsuCm;O#E{F#O3{5StbO;j@Oqy_ zsM4~7i<>Pg4y=&Vd#6uheogV_B{iyycNHZ7wylU*1Pgn8aD|7XvGHU0_IRUJDp9iB z_)fm1vg(UzM0ak71-2k}{{qDPHLbxL8k<~!*_P9svSeXntGf|RDBMy7n*ifA;; znspEYkO16T*mjFiqfUqmZ_}Juu@+e1cO&bLb}9`6*!a;e*f>W5h##bxk=P)qw%r6c z(#FLq=X?F}f~T4u`AGEUmh2bG6qk{!Rn#}R+rQTjwO1D=q_{MYnuM2O^%mG0n;RWR zaeHyw1t8=qC3h$k*CT|=T1t{qi!GH~NFbf=ImS=N%clpaiSv-F8=lKaZErHl zQiPGHwo#;>#Eq|oY118!!?BQ*D7-=dI}mTN`r(QAk5uytYOoONkz0*#R+N;epVD`| z&JijS1dPk_t3$Ehj_N}7CvI zrDaT_SjjP@yx5=DNnMh#t6t=$$Lq1@3p1fPPxy+OU2U|=hVl}XxTeodWl7YM5;iKs zG_1`|%5fq@jUnk$WGyX5VFPt4+y4Og*lux9NKFT`I8e>BRrn$B;)VV)&zZS}RcY@o zto%4_FyKlWY!Rs2g>HB|3vG%Pb461m% zf=9BY9Z)M!r?&pc9s(H2arB)idgMF-je0ZeHhei0%^%c_|9B|owBdT4CsU(t= z-;ytEHo>MMg_mN}gJwJy(3CW@bEj)qli2wKFFJXE)U+O8C!LVU$T}nDHAWN^vMf$u~&0 zef(i<+_=M4>GgJ1Dr<5P)71OLN?M2i z03x^BZH7ArG4^3&eoZl@IPA5@a0g3lr8m=kLi+-H+aHh2jTbgW36L9{rd4LrcW@_i zKHd%nNv6{njJJZ&!@4yGHIPEPi{n$-dJC-w+ibTeSv^NqcfR``N7oknvjGG`iOe!{ z93UW;8ylg=jnjS3;C;Mf3pI+?QH?RE$u%7-LhhufSQUD%M{)Gu+Y3_5l+49UeAGTw z^u5yzDYU5)bzEBHZ_XX+jZc|EcA#nzTXZNT5gUpu0)dr+i zBBhw_gqAEW5D4X0Krx3>5zmZ~)=HOX+QZNrX|*W@_pDM%yFd!HC`s=k<$nT+zRwIa!It5;IToBsgs z3o_D&B0KX7Y3RgUya*b7@7wxe*}r7uw1;IoQiO!dGT2(|6tp1(B}3Trf9s4-Ory)J z#+}rD8qnEsY`l<_UfhyAc0bbzG_3VTlbPDd%Bh)XTS`z-XH$=ne?U;+?Xl$HmaRvQ z%=%j|!$mp_p{-7#<*D>)Bn@}rL<{0;grTSZ0JL$KFtvm0Gn=nMRVEwqdZBud>m-#o zy^62Bw%YzN+O(RsUCIs`RJn*k5R#bBT!jEO)2Q5iutuK-O$#%$nrn>7XQoo=bb(|J zH5*u48uJ!odaDh#7l}k({9^>gIJ_XE8{U!>uT# zqS#PWgMHuk^-zsRn?o;%Xqq6S^Qa zLI&GzdEA|a#kj*6t4EWYC$#cnyH19HfR{y-vPJJ;HXlxK+4JteF948KuVMylsa0qc z&49tg6%_WEO!4bveZE=E((mmxlwt3}q6YuR0ek9*q>^r}4> z+Na|Y+DUDPb!d6QwKZ-@2eCL%sI?85Gg=VzscQ;tcOy|y^>P08#~~WjWa*ilni2oAHvRGKA;jbojBC z5n+Ea)};c1MeaLs?~H=5-D*PTsn%pRQ)DFx8UVKT2NI&Ua~H-rS#Frq57FYjmL$q? zvOKY&A@!xk0SShfQp%D+|~Dp*Bsp1d@NQ7~@ru6nuxD%hZ|E*_NlJMt4qy zEtTmDNx!7+?}M+=snDKoml|`CTM0_vLX-}mt}c9^0~2WV;Z&$MOQxmQ7UEA-D3tWm z{9jdg7^hYsXvvI9r^9f>ipqMnLFz8Uz3y&1UlDSAF<0VjMikU2nQn~Sy$wEwY*pz6 zOWSY{az_{(kBHDKP$s(tqQX$&Kxx$Jaa#@(d-uX5${R8=^ciug6JS*$xTjf5PAN$# zUc*q}5IbYlMl0c+RCw(}o`}Ho+yu7bfFG*X=G@?vP_=!8KIR`%o|g|=(v_r-Qc8Co zF^T$1PegG|mHL4;D(7#eKd6-{)3UP?UV`jLlyth%?Q|(SC||h02N)+zkha`lIHr-k z&aEd3qNbq+0_LZhcAU~&y}XC_waoL5JME{t?XCN9Gui)6<+PLYsAZTuHUJO1S!r zC)DJ?Tg8$((j98)LKCZxBLXrFQZ87h$fU~4tvc({-h4@MTHRI0q!M?xwmCH_So<3( zJOUYs2DFN@;=x}+s)U&O7U)_Qg04vBz;JtDqwP(l%#_VVUoi3wl)WB}I(EahS$Yf% zzapZQMns8svdI4cO#qvw=YB`^!aY{4BD^2BEworb}Bwi#u(h01|(?ixUgI+vQ*cpTaG*b0Bhk+N*wHCk8=oR15t`6 zio|#@-E@aghAa>P+=FgZG21mFB~l9%=R|e9XE$KUfwl+zuzB9c}9TIY&zoPEMLqSaua7BRxi{9H?1FCgb;KJ%EJJVf%^tRiV z)Gf%c?S)D|;*zr~wN#p$Ed<>T78IVSB%4`ddtTPS#d!g5AZ1h)9VSX?G^NXxBc$+7 zq}7R4;OV+hgdgwCl36x+6GL(%8Fd z>Mv4=zrOZ9_eF1OPK58zHkZ#|^HP)3?wvb=N81lMc6AafHFR_qTtkH`Y4*;oL$L&0 zeMq((=fI-VT`xmvsIEKDOVh0PI!4C{IiirnXBAtePHGip=EH6@q-#up*-950Nd9l% z2OeRNYIzM1c7bX+g^HzBEh8^B(n9)YlUApdrdyTzE-!`iZ*M;?#XAJnx3a`f@33)eDGBbrDPnZlw81DRG376p_KwcvssK#f;-p#KVxQd`YR{ zRLV>&u=D6)EV`7QqX|*c2nTC-W9O-RM zp;XmQmn|WQng)P{Sa-Fs+nA}8_|hO$q9y5aT58A%^qnV>W3jd@F0Lw-@EEBD`jA{! zs&ZN`Eh6b=#5R9xoIFt*kn^cTB2nxbu){?nikt6wgyyODEP)PWJL~?=8|0 zm~|O6x{TpVQiIBEDfJggvA3}t;d-YpGRFA3D=*cdiiI9h0jJJFbQBUjNm=Yiov~1$ zM_notP-2&4l@CK@J8|c~*8$u0C|mYP8*)rvteL^m#FA3dlY1Z4r1AGS&6cT&kCo=U ziIZlu;?x>ao>GfPxEuMyT|x)TEnhMe>!k$gUgUWFvHK1?6dG}H@KG9W!40R@6gfQN zV<{q1g;eVOC2%rGDPuxjZs;c3zNGoWET?`i-`>#^?HCiI9;fDSIaF(qv`|r^~?k zcxYwhE9MG`x`DW|M_G4@hWezslsX#cQe;DGOKD$C;c~R{QV2ZZj!<}HgLdvkCe3CP*byT*{F<5^ z>d9r)+dx07R~YS9%#`VrlTVo3hw4l9G`5p;xBmc;7vx}6hblRv;xwAH#6zdk-U&(q zjfo&z8sO8O{8e#fG{kuk2|`{C->i#+^cTJ!!j=ZO;~0A8X&+7=C7wwihN7Ey!(TgsdGZ zNxsAp+Z=1zRy*lcJ|iorL}|@$0-O48eISqPfYmxHr!cUZQ)Zt`ag8fVcq`VGpNK<~0(qLyO4Nk_pg`E#{C?Pik_ipu z)-o=F2CGVaNn$FFn*abR+QWf@aLhf-UKA z9h0{s+aDZd3Vm8-ZMUlRq`up+O47?vv=QcU1D1bVnUykr&8{pN=<;%!0tG~?8lh0-4Zhkd8zUxE7j7BNwK#V z;{s@zrk<#?=?^#Z6P{Ulh_5^~EFa|@sNb7k8WcMVl2V|}6zZ&YAv}kY6r>v|Uf^;u zDX7k<*FG@Q9C`fxQ7`9GXjNodQ`8| zw;+4l6Z$Svu4T!UHuDM@6_Bk8s5vN>-ANk(ap(X6vG0u-l8G^0tbs1F8Ku-R{CVy~ zT7uG*2NpFYDo(=Jy{tCG_cUedTh++*=7YaD!$mBhsOUjIsN25VeKCqIa-T@ZrUPq( zJhY>_LWY~0_t^gczieWcKCf9X#BQXQ<%qhAMHX8nTv&~T{qY~v>cHI6xfHEI<1$U8 z(-l;sN-?S{N|C9gizEU3SN-q4JbXU*oaI)LSDTuqNvJ%h56hDjHiiz_@ZU;Ep z$f0}Ln#&l&Co@W`<(f;QWacYVU5fK$e2GgXMQPvko)Sg38}rUPbr}dHxgVC=ERt=dU=Qhu z*Z6VToT%^9++_+wiAzz|N$QK*_Z~Z9;Du2Y1rrf# zElsXeQ3?`_c*;msi+6R?ea(%6P(Pc$j5`G(s#G|$0BoT;b?M&Y+lzfLA+}@3_<>P& zt1c{ws&FPVj1Yo>U^H9p{cwJC2=i$ZTLnzW>D?~4vQRu<$;UV3*9e5B-MEq?J1;nj zg3yQEj1-1c@2DhSgxmiBzkD$t#g{a_Dfe2ChV?MSX8!tJ zA53S9M5UJ9hKSDy{^bs=|YCx>^B$2Idw{HHmJwU zOKI2C+Lnkcol8+30X8YZfI;Nh@guM`KjF?+q~^+XS(<9&&O^%}$9VeGLFazJ++d|L zpH`b%l8UUw&T2EtEV$~dw}p+aINJS=0DRVH&G~`KML|yGYIDsM#E})-ya4Q?JtN$2 z^~R~R#M3i{0uwUlNoXy`$P!4_qLOu}k_T=`+YCdI))zCKRM-*y_85^A##KTbIBGX^ zxZ+af$0-M4zrXE|$<%0U{62EJ+e%BQUZlrLhpoF?e#-NXG+2x}$(Zy6{GmuoOsm(R zC%yPT(-~?Lol|LMBP^;gzO*R=p`uAY5Ot z#+p3Ji`ANSJ*s2X$L9iw@}5#s+g9}ix_Q5iy|7BBJLmJvOrjF%m~DM&ZABp|Wg8t= z7Sb$u=i3xz0UR;)A#MH7I zH&^NR+iXo~8P>B$dG*p|H6j64l7k&ZK%4p6`{U@zjD90Vl$B~w>8&bAH&NSv`)lLp zK%HCxvJIpdLn4FwS2q))2ooF5=NAj zC2Kb-<6?gJVtB}0vinGIu(tx-SoPa&{{Z^H2=fsQ=UbMQl{|e;So(a~)wxZ4#B-ILgt@R}V{El>RT z<+qj9R46o0So`0{;NE3CL<_ zTPx@n3eZb!Hn4S@Y&Y8nXiBG7;Tj8~b zl2!^asbAV}kULe#v^tarAT=zB4i_pvm#?8@^UvzO))&Ks?8^mo zve!k|8kEUdc%&pRPT>aog%iLyQ%qo-!6CLbC?BCf`QLH2_$eI`981yVvijaitd;bN z(7Sd<#BJ|{$QI>=k;t~{r9#WCRiuY9q(0bCeSo!%Ew*+y><#;Gj%lRFi$N})`4Z$1Rw%E8KMah*X?l;q@siHzsr%L(BOVR`VGA(|<8~*^_*c&--(`quMHl`Uv zN!+@gK^?JfC3fT}^K1e_GbG&YOphu=WT>es4@Gd>NIQiL zOn2mG4jL2slk+u6W%@*yG=W>@Oe_bPDUQdyT6kX)3jIHiI;KyCKt z2x}usbP3_AoQkR$M8{iYPBW>#gCs3vr-cLC_QfmVwp?bJlv|GThCm zKG>U4<5MTkiCjWD4JEsE043sY!Li@=#a5Xu#i^+*I;ADGX!YGGNG8?*@8kExvb~xR zYDk+tBxPtbvNMZ|Pi{%A@J8QE zbKq*SO7vl-3W}OkqkpnEL*xHm6$rd{wYxlo=ZJg{!EAwH~ zBu`6y-tKys}S zmX!RLo+{{zr%@w&Y;BEl^VJe2R(f)fy6I zx>nj$-O>RZ8{Y*gd2%I7;mq09wDoEePPRpY147`WC+;tN5EQk^J=I58@#zj_m@$zh zGA7ANNWZIfC%EID!wRB?s8tGtCnmPxZ%9;C0+gr|vbFQAmS z5(8>WR(PRG9xg6P2YvA(wV2X$lscKC? zOHtI@+ELO-*(w%08*P2?+a?3Cs%i@A#i${%uFJZuZ#)t9!rcZe>C&Y&S9SQ+2xUkP zAzFa3^pt^Zh~C&FGZZGP4n~_H_gzv_mQ=Qn>`ns{lj>DdSQ@n@$Z-_o^D1cS3njs2 zw&CQ0p5JU8$QkZ6MiOcB9A`{-6xb>nOQ!edgW}xdjMu4CYB5?`P_~euwT>IL_B)Fl zB2*oZ)RHMJ#f2k=*BU>hZ+%KP=iG0Ds=84Vn!%Uc#aE9Sk`WR!a_VaVG0|agN!X7# ziLR4crDiGXtyGHP$ZR{-D=J$nzUVgCC-1Sto?D`q=qac?R_v5A4_uE@?R%T=y~V9; zBxdSmMzKVk%Q7S|;7_3-3n+Khe&6qj;Z0je8=}NwheZ5knC{Cf5fW~eK(TarK1Lm$ z%Fek&(Mv-{D%vP@x0Sk0wz20Ka&yf}_;XHmGEBFS*lfD7W2kymE!bZT-!|Z3NJ;>) z7bNkFnR1=#XhZ>SOd5{1TWN_5He8D3i!0qoH|%^IHB)J{rzAHvE7B=4m2kC3Rf>t` zZAHp$w85^!n4kkVVhGY))E*A*uzGT$r?PrPb;w@neHkiM3Hv znfRSK>Tnw{oj|vz&Bt?v`Xz2HS#lkU>Xw#Q(_OrSg1dzgaTVI&xvsR_bVz)lp(FA~MUUbt9(v(48vvYVD61A|gyTUXaQB zq}fPXeQ4&&Z-ZnH6$gA#OI60P2Wtg$*%{I7<0?0ieZ*grW?~SSW+SNd&=DK8Rn|aCu z$r0yM-hZODH3XEBZK)^zab%qVjI;2+Fsha!$1S9xE~j@~JKx`XpZLV)lI(}rjNLw% zwr4?Bo{WTDvvF{rSiUqdNMZgx&yY3bD!|q|x8zrhU z?ML~A4GbkfD%S8V&J>{3XR?-Kw6>%-!%1JJ#Pjvv5)Q?FBeBK`>}XXwJY1w0S44WQ z+E(g~&uxYN_QpKFA*O`WJ;;Juq?XXz#9rwFz+TrIVr^PQPGu?R^Xd<<`*J#w-f7;L zWM2DN{{X%V$3rj1ZG$Q;N#&sabB9WraG%wFe&5#>KaWXd&JNdA80NJWHey?CHkQ#P z8=zd-W7^~owldLckDTzDP-N*oha6EhRmIW;yI>VYY>2UhO2Sl^(49@oLac=m^xu4I z%DIL-y3(eLQUs`!GXRjO2JFDWh-qm?N;i~h0) zfBS5HP%2cK_G^~&$_Xn#TSy|-SKFKfHg<2Q!GPd_^5u4%(rVu;8d_%c18$+joh4_- z)Nha8oLNv_(c#$ft_*u}teYwgO7pYjms=y@k0Q z@wYKko2ANwS~1*iE2Ie}l5U%gukH51oR$;qz1ytD|*`xKTIXl{&{s5T6PVd zQV+}oH>BvlH^VAbHlHo3yRg_(4JOUCuH^Xh$=?|lQT%H)MxFxcau@jvX~zLg@7~ti z8&hB?i9D1K3?)odK_)~lgOJ~7o2A4JY8Kdo+9+sRFV)*M#FJ9*;xkv86PR2uNgw5pXF zm6goeTv*W^N_6zak`$14{{U~>0<#;l>RB?D`sx6>rgdsddWTF8)2D;?8}sdic{z1; z8iZ(4W-QW(1q{b?LP;lm`9HoWGztr|(Bv555aLEb4V9-+^z3cFj`zlYhBZ^SN7vMW zLT`~vEBqswQkOq8W@@{1*-s!T4MlI#q~Fk7NfrtNvVVLRMp>_Avgn5DDzP6~w6}c= zZ8zB@ZY}g94$6>ets!P>>C)Yn8%?!^H=nbRhQUC(N4>^*P0GMi6rjL5nh% zHl<09Q=vBKp`vbpEEC5T>~Dv}$+eRcBDHWyc3F;!!?Wf)Dr<|5P`D*dex{PEg(z}v zf2J)FR|$~pr1a9rWIE!|IRJ0Je{14>M4&^X))h7?TTF>yH6y0GT%>Jb?ZLyvHc@7m zA|uhvi0(F7kllsbw+bKAZ+ti8otOZ59{?a-LN$o=>dsN?hnZ+NjZHikup<8eW5(kE z{vX0^>cp2SQ7SQ$tto0mv?aFR*a4(+l-%0qoN~*wmS|LXbhl=|Jz+}H`|fK{Dp64u zR~+Gw;vxz%Y(@Se)iDW@%Av?o2~t*-1z3S=-rM&2;%G+I^*bm&$4Y$aTlua{HVjuB zelgQ6)>Cvad=+qS>~VuL0Y5Ii6p*P1I-AqB;P>%_supW~6qlc*BATd$MJ@&bLQ1^Y z-pA{K(H?` zf$n)EdttV_lVr`9^+F_wkR<6TMvzhzFZ%Uw>K{x>a{P()JoYNu*rqBoy=K$YO{6Fg z2cqJ{+=6j!XE;;p@oKTx8RjZ6nias(3B4_=U#^n9{jWT5!kg3enrX{kc z7Yu3}8--iB1Dt22O`0lDsZ&@@oIy}|q^iV?loft0+XAvyXUtGDvgWW_ZN;rx(9#vt zLIM3N@<`^#4OLVy-fjGPYLuBSsI8_@oh_u1Z%Rj#+~MDiP9Y3yl4YLrygaw@Mm#oQ zs#|N0lr83777EmTDo)npoE(^x)GF|tVkC&^K|{s0*!2M$pqr7l0OpDV_59%qu2CMA z65&hAZD0QY5C|43y|)(R+ZD{Imip*KG`eKJpg5qVTmi+mOp8id!VI9!Mx44Z?vI2etM% zptVJ%Wtfv{QUVw@Dsjax(g*ef3F(^$HRX2a)2A#o)>0aEvJ&dIwy*yHAADzLC#EO@ z=t-qUyu?hK75Ab(g{DDqZ$}!MNd$rk*a36CKQhD$J!ONK8-~kO1t_U6t-W9*a4)@w zwkZ|-y8?^wJ^FknSY-6{Augm@YCc7`xx&>AKZ4~L%uWr+E&`VuX&WQ${Ij^;jC$2lkuehK=zw01R97BhP*aKrZM=_WY=OLYtUkv!O~#t`l`1)v@OmCMyx=WvI{5+gwzJw1mDuC?IYB z0NxI~%qa90qe?;%)o2AIw{kY}o-i7pmg1+V{WZX}DB0GEi9)`qzTZ)d*)#5c)IX@y znbByHYovu*=^sIibVSLbx}><=byU*kx1J7_o161}yZ6KH zW05L|>Wp^~sLmku)WTAQ5;*6u^L$F5pGcZrsW@Y;rGRy>*K_qdAKM!hi?8({Xdcc} z^Oaeg$y`I4+(eQBA7oS&vwW(InqBbD+9!G3dR2Y9`<(QymO15E(7M|3{ zSZx7nEr6ERtz0bJcEfC%-3>3trc|LKg<5$50k-3lb?Ld#r0joue`PGgQf8hJQI6Z| z1g%{(Y9!lxbNgduZ6b8$rpKqPbGK6^NeET_@9nl6x`Rdmjhmu%$>zIWY3Aotl)8L% zgtEfg(CvUe4;x<_rZ%U3AVhAV9k*GIZ5+Cbq0_d<&mHiY1?L^-1x?{W=XH-3Qa0pmP%DMB_R=xr7FamuJ+(zG5~yvwmqLg<~b^N;YC&>l>Y#q zitIoC0EZ3gB->(;M?U!ZZ!IBFvojOvwaU9P((p{`Y^DBE&_#-L4@frtE^+n?RTkz_ zG_!RlNJfy0k+%aA{K=K$Jr+Fn*=dO_D7dtxn>6b-;rt63Zy4ey6%YvGOph^sZm=uuo!Q!;FqETtv3 zi;g&NdjOH+j5Nc6T6UbsZkH@VbZQ~c1C88&FF(@-GG=IMEcU8ufFU4g3lb6%T>uTu z`|n^+KG>txvsD%B!lo&#I@5hUX>+Gxen1DY?QC{VR8ab~gw$fKG97FzMp|wQYXe>U zd*D+o&zG7Trne?UcHTB!gf@{{Vb2&5Xum%u?K~B`g^Pi0MO%(%JH& z2nq-7jr7R0x@KpONR=+13tI{;Kn{@Os|S&DdjLWE;njc|udqJH*aDfB-Fq*k$K{{Q zLW1L@Xz7n)n;+izSEkl!u=7G$i8Mr&OLPa=l8^O;_|;>3_U9F9!;tduN+vknJrc=G zaFy%St8S15_r!^&pi|qLrz0j*s)MCVTkVw;l%GklO_PPf2`6aHRmoO=;zcbq<)N&; z>sM_>_f+~c0LMT$zqH@;c|X$#6>7yjmK{uYBdVDCLYqmvr(U;mq6L%n#mXXx zi~l6%^*Tr^u;EaubukF)CybfqjSETYqd$ zsX3CJ2P;)jrh$yE}eWN0e{nm8f8+Z#X0m#jU{uXIG0^^K(j5Z1Gbym+g}jS zsU&^>0CB%%iDJ$4c-0o9NPeh^Q}|L+psz}Y>9H2$5lMMBJgG9n*@#nUk35|$>n^Au zYy!1gP5cYs^&v>58E(v<@@aVm*5s`}lH-GN6n}@$VS;t)%hfEnpPO~0KuRp*h2)UE z{{V!O&H_8*HByS9#Tc#fb17A5Y&@4HsErDg+6hCq<9^2YF;b>DxRIV*R#i4r!408$ zj)QAlr@z+N!Agf(W`M+$I_YNpP=_{iNc|})Hzvp58s}G0P@qGbQeguzLRkr0Cw9DD zCg#L;++mN%#i|{c>uHloW|+6+%7)qXN@OEdm)#{o;YZsVs*u#U(W;avG2JakC{syn zGMA8jNwCrl!M`4H&W>2DW=4@vn&k8XrIb8{SuS@Za!x2gD{dN_OoFt8B`HD)K|*-# zzrTN$HlB+K@uX{Wl`S1GasbW$W?+z z@>p+;&HVIwDi-{|opGgwFrX|8XK`;BH!7R+IX-IMp5o=LwW$h2R_Unzn~vw`aV33Q zv5gTE{u52iRT@JzuB&b;B&TD{L#Ew!fEqy-*S$`$Y%k|dfNv|^UgHMK%M8R{Uf{}mU?|fvgrlnD(N^(4y^kyG&@(|ed zto9efX2f4Flp^CKEtop5@=~)}rNQ}>EVfIkNF_2Xc1TZ~Vt<)yup_KMwt~AUE(@rY zTV#MYz8ULoJ(p_Hsm;z*c2wF*NMle{&i7CUZ);(uMqkV9WjM7ILu#Wv*8o)Xkg|)5 z>;}UAIX&^9C{b{szC-4aTJHzt;s4X>~l84N7SgKbA@a zhmyecBzGOR`eSuks|V!Q5lu;wn`ln7SfpE27r=#k=)>J zTAbrKqLjqfW3DnAQzSCQtW|3)5^gL;9;Qu?O@}H=?*`gQxIpz44`6YZK1U1)5s?%? zG@5Mexf)z~D2^jYd#fEt1OT!uq4YfC)f+I&l>KrHx;xD&hSIq5t_mDCAgAgr{c*I` zq10kTXv31@i%4+#ovxG{Yp!fmB&NRI?|p(kVop@#B?2)s}`P9Y0?#^zWwikGbq%@sc~yiOOh90 zw8jekLi>w$BN=K~Q2LD%X~L&KLlWbm=5=e_jY;+g6D-1jxsd6x5V%majSae+mo3QK zZhf&_qSvXCslq(iO~t!f(5Dq;-?#m?6f*#bit7^NyxXm=?WMQQ={DpLcRyo)Y*!N% zlX^2P0;5u(NGX_)nPJp))}SnH*p+ry*B+-=D=?XrCYr=)ag_2_wqA7VzkNIZ07H*u zW<-3+Am1NpGDi4)$fv?1M11%6=IXc(l>=#ZsWUX3aDr97ZCvbEhO$rz=^ zrog9D)Y2k0+6KU-0P6blhB*~^Q;t%cpD~;2CG-i(djZ?arG?phLN%j_9tuXH^a4iB}B?U4VnD?f(sjZy$5lH%Dq)pIR!Br2#lrbF0#9n z`w`m>bS7V{#g5bMmlYXAH!a0}k#V){@80;}jGbv_%B0fGb1A2xng?Ub;^3vEht!UqC&R_zWaF|F}|Ta z)FEot*rq8-x)dxm>Fh7K{jff5KB%-cA-=i`ZWSq{wo+7|ao^hnX?kSlH>q_-hsh;+ zqL&-Cpht1-ie)Mk5NBe&yDe1dOM5TRb=CsrL0_e(6J;SFUyKr_W-f%Z$y4pd1;7$N z{H!c}jr-vqlTEM1&eQ5rC$lOXmV#3c<-l8NzUN)d_V&bcJN!{rSNNpWI!iEyUP^Sy zPfVBkgq_Cyul+HX@xK&)Mom=TKld9i(F3C!&h{hg~sRZ9!_-l-rYGY%%6Jk?E9YY9BC!G~MnNtvCCe zPbdvkVh(#FRhf)8ovJb!DTao>EdUDw=-iRo-MPjJ8>V_0Ivi4;oB%zGTjd+Kl75AT!|_N=9EE63L7MCdk;Ju zS#}9k03dq;y(Gz0N^E8clHaXeG~Zo~u1{~F!oGi|W}1YmD>WCIa+w)PObD$bSzCl~ zvPJHDTHj1w==oNWA~W>}Gf?e8#+0UHy>ikNc-c5u&)JMq5f?60SnA1ewiPB6bvb7g zYzjq*z6oE04(QfKFJArv=YQ4kFq@cWHV-NUIT$pe%9eXwEK51M1ty=b1Lp(#VD zAT1{L7r%RZV`LoCen7&^E|#5jMG@plKpM31$Deb5?~L*C!xD4c2g_=Q(O7v-fncBo zhWzty-w%;(iylQ*p;3ljM2a%wT@6v+aj-o^EQ7H(C){zzwiHy_1SGkbUC^ji7o;)^`o^U-v9Jg4kH|GDjV(WgRaLhkD=ZLea{{R7#P>$kPG2_t;8zd53wbiR_AaA}BXjyD! z%(#froH81Xx?XC^>5ls+--}^tqn)!P{LJQD%aQd)>XpCqzM#Uu>;dGDJ6{YAX4OT9 z8k%G@)TY@EO@|&i3R={3rsu`G3{}zf0!df{aek{y&9Z9pB~7Kt6y{Wt(Nm#mT6-G< zetFv;qK#0m=LOTEIVK})#15@4GD0+yU=XdZ^u9Dl%uPK#QRB)jI`AbCA9Cc_@2A__ z11b6LqBA_`O+yN9I~^~aO@hf?7@zeD5Zxt zT8{xj-@Xe?kzJ}eG6V?-qs9qJo=d6M*09|o#>4Br6k*7AV`+LazGb<5kKHs2=-a z>X6}yKuX@Hw-rbMu(w?S$t0irw>IPHjQ;?+dvb>XS|%gYBGf4V01~E3c0@+9{D^=i zGfE&KX&>qxt$XeC!W_#)^DMw2dN!?bz?QBY=d`it);76U7P~4=DAAGZ+YYIDXY@2tu-va6tT*p&o zb5QG2Q_~_ebbs-IwaD{qO#VGUGuWxiJ!T1xx@65V8KojU*DN`qHagtG*YN( zcxg(;$E$m9x4+v9Q>%~uI~JKLL(%0=a5lc83KX<%3dQ&Yi(h_mNTR`|z^JC7R+@#b zC_`{#F2PaMK^qas>;^f>3v;okj!B0anB-^?k4+7Jw^O-v_bMkDW-}&JjR@}s2Ug^) zT}nXY0(;}TstIYyK}m7PH%oWp+a6XQYbi)|2qr?C)YvPsLi=hqJ7WWu4LuxAHG=98 znLzoL^|?HN6Y2yf+yk}%vq2;{n!VeoG)s}>H}7&54~^~ZjdT8O?4aD1mWSo3I@T@d zNe26EjVw%Vb1W@NP+A$Ygqwuo*o_IBF|!Y4N{wbLH>1IS=9pNzlDnXQ=sh;`I7?vj!X?Qv{IDY?bmq49E((~%-GO_IimFUYU~C0ivv_v70a zYPMixRXjujMxctK_8dBiMH1SSYw@bg*-5+wCBvW6hTVSVn>^gd?CX{MxMHr zT1&S?9(?}*#tG3V>dTY|DRl>yrD`sr^{(mM?w@ZP zV@x=YD?K*zFT9qL*R65VI+i@xoOaa4j9|YBa>?08E{ZzcQb)`-N^Z2+0#9xB`V4+% zW+q6e4y)|51)oU?{Z<`@G(?p_5hB9syB+Y(q&_tx)#XXr=k0(qrMXn8Jf+Kq*o=Z) zakXr_cLToL<1WlvGJ$Br@P=8)_ThZ`|QVS{aa}LZ$%3>4fT2 zto0J`Hy230$`{-FVS#npE@Y`rixQy1zD+#~DCyL$Nw<5R{A1Qjr+z)=FDi$+|!`-sc}g(;>4J;?r8x0R*XgleQ54Gql6mE))Y5b9$1}uarxg zby!@e_5ffbmNa4$M#NHgSNSeN?Z+_mc^8R@*el! z6vn|?$d1N&eNR2s@`P>{4XumtA1CgS$zZMn89wD;w| z0$Vdk&{d(ds1dcdxccF1;WTG+U&I{5?6_{zTaJJh*>DtGDO>Vw+niS_(4kVJ$aPC; zVYC%EtBZ}dKfm7#lj1-ED&!w>EV_LyywKKVomh019q54Mr6r^d?4q78amg0L@ccoV zdL^w%dMl)KQc?(7Km;3&ufLp2n4x|vPm>m4F0m&5g`;H>qCplnzrFC`mmZr-%8@d) zMaExxGPK2T-62T1(k*ki8)9w&=`q3|p#sclFzZiBj>EE_b-DB!xV?l!T;QruMd@+wYBZ`fBFH zc5K&*pT6N>9Rl5f#nH5;lIvQ@zF4nUrDZB*D>x)SRT{o==a30XN!VRIz~6h~fgYVt zqD@l_OpuCeyEd3En$CrVvkCPRLV+B^EMSy zI!Q?DjVnky*n&YAR?IRnCz7g~tldz{0i3#JQ>C?1kEdRwo0ShYy{&|l)LEBHkc5EL zhQTce!DLhx)Ph|tEb2-30N8Ek2PVd9A5NzUgy|p`0+O3J3Gd+H z1u5rcMnhebxOsM~R>|pcHB~{Bm6ZpBNh?qOCd78Zc4UK3YMmlW?#pT_)z?jjQArjW zjkdpSvH2~?kn=L4Q0A>GeFfFBq3F3J5p%IO91ZX`n40Y`Dpk!!j?y1_IvG@uR-#GR z59PKh!1`hW0OZ}4k<{e3P~`ViODR$T2nU3prYG$* zU?&K9ighX2uxl);T-R1mmx0@+52sPE8i3gO#i!x3G&usT4y?pPRRW8R7m8FuZ-3Z- z(S)XHs8uo}GK6^xQhzYEFJgU;6f+GbZ4#>8Mw11}%_U!&%B3kK01wojck(;o=s5uL zD}n@~R49mn4tWy9XiJp0Sus)qThwo3?R-HqR2F4XOsMjnkobP;c{a0yzW#AzqgLLk z#)}H05=5je8sw!Y(v%Mbo_^S2qfnfYNsz>NG2=scs3GSX3(%3kvF?1~aFdHAn7IgL zsSV0=rm*xWk*?C?$VhG16SILQVn?{x+ZL(Snsr_IlF=Q=*@8apXclQnJl~GkTYiGo z7I~(XHuGy5&`<{lk#5K7kLXMwRvk>q1SR(Obz4{uw_%0OS0h-K#J?C(S(=|jel%pL zOsG6;S!j+=>L+^*{NQ}qvm)1iQ5qwnVM*x}Y}h=J;{EVGsYXh(EOMGt9Uz{oa^t+F z-E<`Glf8~IOsp{Ew23Xtvj*|pQ+}q%V(v}#KWBT_}U zBy;cM1?iKj)qKqKHFVo;p<=Qw6qCj9R*#Yzfc&b1>r9gSEul#&Qjm)QeFWU^e)wRW zPHK@5%z~uKHV3Aq1gH=;)7$!DEcpB#lows(O|MRuM5s8_b{lR>3I$IgUX%{X^Q#RC z_@7L3ASOVEE_CMXhgw5_tzhyA+X(Y3F)B>RWiW}7_zHb$Sh7dG&6T$J*BY1;myJ2S zFE*{#qMLKQ_Tb{I2MG}s8ObEYW`<+W+2qctMs}SI8k$6XT7f~|+Qgpc4{;fGk5olE zV`z9dG_cth({3$;IZ^nqYBQ-1txqMyC(?ggdu*;QMfNx{#E9|pikzHKK3%Idtu`v( zvB1rgT~$U!Ak0l=_C9GVmkDjH=F|(W@DG9G5*n2nJqO|=a#F)@Hp92mu|XF8A`#0r#Hm*)@TC>Xj!8$YT@ZRE`-6pL!px~^nA0^T9fzXI zia^zLai>=Y-)uCtl2hEeaZXN&}l6$Q|r3G#*?#8uDz9K2&)qs7uo1 za^Mo&wvdFWJ9Fn4>QW-i6Co*}^*&a})-@!HZTn$r1X;D}GSePoauQrig{Kpst3lyD z2aAk8w8RHmTtuase1st(5!bO%BWqw~#wZ`LDTeBz{5ons3YAQR+Yn5Jgstw1Zc%G0 z-LLP0bn0A+Tz6x~s7d*ESNcwn0k9ps+W~4Tb-6GpjYv#)T~Jet)nY7nx4*U-+I^V~ z7|gzhoI%nwsBO;w0Mndh%I{y|XvV8>Gx=hl8Z*@zTozlXA>N|gX+$XdTZ>`0EklV@ zrOR>FkeOjXDI^1=r-g0C-uUAj7{O7}dYaNgk~mlIjZ}JEx*cjMjDWkOhf+?RS2}Xe@X}23$Yw_q|=iejHt3!yL8vc91Xl; z(E)Jf#%(PuFsrRkbpQn_8)#RyC)Jq{x)M~kk@F$&QnZ0$FTnCYY)LaRf;H@>w$Zkg z9!oODsjj*MHa?I*Q8pLzw~S76H^Tg}RnKXw*P7~RP+4gwKv^Bnf7pyts4y##6;y7h zVYvEV1&1QvN)l7Tf#mxP9Ep~q)ZR@(vbLOXD&1;Op{Q(BQqJ4+4ae+EfS@&5R@fWNJzDXzMe40Oh1moSeX%-PcYb6LdLf4 zcmQq&B){jf^D(K4XXa2IDr~mZfz^G8;B(F&J{9Hw&SI#*sFvgW!-aYjph^H1?};Mw zU?Fk{5z45>TV@)1au6KqDUyUGJb-Vv z>@9;I5%VNC@z`#X@gXTz`=}_Vov*$W@kVo$PEoi+9BvIM$)%x*DKFf|->SFnVbV2qjkAQjW>Pldu3x4#X2RMyEzq1{-x2 zP-P3e>JGucM;5piJ}|Tycl=RJa)|l`2~R02jN%GZg_P~5{{S2Q*wDsfZeB@Y=i35H zZRjna6_lH9N0H+TvU3$aEN~&YC@G*8m%2e|1as~N2`9>j9wK`kvj%9(85+4sHF5Kf z%mt^LLJO*GBz~;}a-V+K`QJI_dcz+QmoqNX-8p^705O)*n&A7esO^Zg0KQ${c zb={XfbLm?snv}R=*lwhsAIhHC>6zVv%w<}kt5tZaoiYxU1TH!gvaU8edVctCarDmoDX)@ssKv_{9I?`^R@`5E`P^VeL!Uh~ zcOb-~LNS#o*W6R!qT{5f)@^%P%q2>=V7fKPwvj=7SRDjrUbsFbz0QJnBpm(&q$9NYPYybN)r zLWLtU7bd$Ra*%=3x`(8V{-phJ#-H`bwi!y4qqT`PzSi%ET{r?ULH8#4 zl7$XlQxCwDAXS+`OHPf*Qb9J`dmC7T=L-2ke7WgdS*T2zFSHES(m((mwA>wu7@$FI zFZ{>JMh-sfs#pu}Wp^J>e0O?>4h4D1bofn2ZS;p-3@4Fo!5rV|d~005AqF7B^9F57 z5``hSghyh)C8PqBq-sM%M`PE{RwNC=El!Ft1Dp@>{L zzu~;V{SJLWw_`N_0L({m@IgWrc24|&d*aVuuhkPqfbBK1)W;YDxZAxvJ?IA5GX>>FIX#m`kf0p>ZKtQ+xP`Npqmg>>wRM#$TBA~UaTW=Di zStJlflWoPjUkecHQ*z^xpuGXvOA=6oDYopD1sjr5Rj7gOd|9H`Xwowps*)OyA%>Ko z%9~EBZb2k@-;se*KMb2*l~!sjr40i>O|=vD;|?0hWuEJS}AiWm5P%Q zTG0fygVjsvAYR-g+W1eZ<=KqX>H>_QK>AOA-xw$}S*B*GQK~^kS|k^vy0-~!`>SvP*eGqcz9!%EJ1Vq? zk;W}3KJ`EG1g<f(;e|{9a^76&yCk&M-!nk zz#;yb1nL}%@_x8w&N-T&o2hW-!;JJ)wu=Qm)|Wh30)G5qauNWFm$&$c8G9_kfl5?H z+bea|rBw+!0CHQv0!ppe5wIL#h1E9+3m%rr?398oQg}Z>Y;%DcpyVF3G^o1LN}Ou` zqDA=k+r6-o^=`3O%nZ7!dK;!kac#^Kol;3QwX`RD_ZQ~~sB#-KPU?cA%_fMs?#OXc z+-bC|6bSqE6WkNu++fU?BhX`s%VpH1q?@G;6)b_s0Xvh86#9l&%HIqr%t3M_Ms2Hg z?4>B(R=MK-_yjA_YFWB7EjY{VgehK~({tR8+hC{!)f$}5LgJQua;~M(s{a5gfkavg z-clUh7Z(JefzNIE!AzSXAweO2&BV9m~#nM=rLa63wjME)L)ThgU zw%K4_#QH_Z<9|4xyO!!Q+R+`wT3U4>lojb0 z{lPB zy7g#M?341~HE{a2yLaGR9#8FriBdC_ULK46?_r{vuZ*H?u zheR~zY4TZoCB=iS7uXZP?l!m>IPo>y?8F7+W}|!*Q#meeP6|}TWyGmLlt1Zp7P>(S z*l*l#?}S=Z$uz9hPKf*obDNljG`5m1rWOUxuLF_w82a9vhapLT6(OZCVI(x95|t{+ z?l?I3gW`NTl0GrWs?sIMWOdfyEwTu0KcuGr0Lpheo=z)`OSuMSPspKBqO9;g5Z!6S zO#x^MZM7>}TejB(ZUwQU<^*{qq@;ns7vy&*y@#BBL6(VhPJTxI5xgM5la1seF5^Fzc{e$a+*m&LHlaZcsofB>Ce7KO1mKHDBNV0K~HXKuQ&N z{YJ%7kr(0$YV>0=Jogrqmtsg;eL!q|b~}x`?S|^w>X4~ws>qzat-(qhH%TDeCf*Ml zTOZBFs8XI&6ymzH1xK=T$Bi%Z;O@0(Y@Jln>P!F==NYkioVtn?;^wf26_)Q)+ERBwySe?Sa{T zYf`CoWUWy|^nj#9oZXV*Q{i5HzqUEiUYT5FGWtn~xT8~z5<*>0u2L>-_re@?aPCDy zxr&09YV>xh5S^$;3n~(p?(6`a)Dv!f_wR+;bmrk^Lep|m{1vLrbqES3*Rk`4tnFX? zA^~<<6sDBYki!5IsHj@N_Wsz1N~zJFfW;kf-CWeT6sHSdDnEhQOpFF+C#E*kR5Sk+WtI! zu%lk7#e+6GX>Hjv5(*k6TLEqCt87R0!>`EjTvuwH;>TRtZ{iAyxKf=!cc7G9+!8>y zo$x-PnIqJ*s$!*6o9L7hkgrCdIJY9-*9W0i-OLq8&?s!ShX5#b*(g<#t5{y#Z{GkZ znI|x(I6E42hD*%6r)98|dLB1CE3n&Z0gefhYI>}N~x~_K{_`^3&9Y!#1^n_R+Q2jh( z=d8t*vrKP`G^*VKREMZ?Qjsz^a=`?5(t96lTH(01BM9qN#*hf+#}AwZ3PHPpA8Ql3 z5D{EKltf0@YVlT)=~mywJN@s6B@81*zYIy*i;f8P#PXRAc3`T; zkh0ssl>*~RI*P12k+v5KP}ss))d)@eAtZIK|+?;1!^RB@5UJuoSUfSx2R4)5hnm!OPx>>=ApLygZA4Q zs@Zx4XDdWQJs4|;B)k*_(BLC<-uRrkTlpB(G&I3lpz2pe{{YmoI0N6tIAC0ie_UYt zug*J1r9rDw<1soK8I>Fsh;2lWY(e!Wu>#`w=R=KDZUKtvWhrgtX?4%klw6T>efAdL z30WSwm@^b#nvP6lq0*}?Sg3$@_X7AcR;t&jQKdalQslG%N|-H#B;NPmzUK!f7Yr1h z#>UDa*QL?I1=k*`Qb-M9Y$Y)(^3TTq&f z8BrGRS;FgKTj)GtcQDR+lOLxI$CBY|RD!hZ2k}^qhBJPhz!O2qugJ$o+MzWysVjY# zLQaN@mnAAa!S8>j4#S|-9-}xwj>DyDQWCWQR+4tO_wR|GR(a=Qxh2#k`07TqK9Uv^ zp9&V(k2~KEwA{xf6sM%L+Nx1jl3H;jEhpOJ6LctPdoGL^13La1)M;AF@uR)Jp+prR z+p+8qj3>#Q+c4xuBu#LwDsf0!bu8a&6UDICK5WoyS)E-o3oYdk1 zTtT*h?l-U?cfw-MSP)=rT8k6cG^1p#5I8s|K3n;C7q~E#6 zhbt|Nw%bmyUPw-q+=~?x*#7{wH_+*k>KSqKIvWO7jaqJ06K?6azA0jas3B#E6J|M7 zTs6UX%1N`Y@`HcVW8d6%!`xi1ffTx56!z+QVk3?^-lv;Og|f7$q+gA(=l-w&0xJ{YitMFPV?Nt9EUCeBYbN*D zSYl_IXwBw4&GND580c-_Wub)~M1ydGd|$R5bFOZr(emWlQ!F_3LECF{M#u+#M)&*e zggQj#B2rp-Fz-e0%u19KsburNpX-eXj46c5S#PFN9;~8~l-s7532ZjlOChveCf&WU zIDs|fW=fzfbyn(9AxCWkUk6bn_P*a-e=9gjtFaEI2m$Xd_x4Zp7#HI>{- zvxM18Wsw)864)RGHU;g!JClCf;hA;mj46PrmFV&6v5+S#qWZ6)E+I|n{m%GL{{RoM zPpZh71Fp>N1wBUJSqmN0Vs;+bt^EBmpy~@~ZNQc6G~6!7$mi?EFjn&WNUo{)amxu( zLj5ifZbv@Y&bdf6DgZKR@~C>AS&$SRE+KBHgn^_Hdmh~RIN3f-e5Qp@cJ5NbZlxey zNgjRvgMVyhksa!X#W)mLn!0GalFqVJpa{6}$i=HMvjQGdgD}JDi0CL%1(E>%5xz8@ z0VZFI&B?^G6;;~-Af@V3#UH4lsw$dweh`w?4GprI_Dnw}!StlyEqwmVuk^(b-z zpv^SOyv(EVdZha`0`xay1-St6tKCFgexBGXGciK1$XwQ+i6Tmdr8U$91z&q_WfmAl^GI z`joE1;PLjr%C#01W~oGzQf+E}JYCBUmcow3E^L420VzqG#7def5oE(<_m%R7K_N~y z4&0JY*5eZh8?x%sn<7i;p*K2{^06bXB9gg_DZPQ=DcaWhW1SwEK&HZBZBGs&TFTve zTZKwm&irtnwkETxuZ+CJCS|#;RAHlj{p42LL<) zx!VndqKjcNox7>*k!76i@fJ_T8am@;z`A8g3TZ5^?SM}gSq8_(K9GHs$EG30rA$ar z^|f$pPwEE~*f7&X&T(pW8kJE{VZ5a&g1<@uJe{tfKDd9Wxf-VArBYo}G1nPN>auJK zy|2CS-~05pVDQ=ByOfu<&>js^b7OtkMHq388BK+He`nx zZO~TNM2DKy+mEgH?SNIZNsI9CI{i9Kl9hz@N`sFe{{T9BpT0chd2uG?hUySQ3S=y` zt%QX27v)2njqmlss(fyvhHZqX(X!P(WO*j19k5=ocqtZAk?;QiycmO*3@7F|#ZG)W zW2hoK4J=tJ8v-wTZG~DrYPQ~{su3G;q}!(A30B9kzl=MvSf{Fc4Lad%+l?r2*(F4F zJ^q~HFSpdSDd~b7n&m!?@)bA!Rq?4xoV9(mJN9R0WOOH$VW%#rzjBmyj zA+EdH0+tjFgJ}nZ`NI%NxDS;Jy8$$BnTX0GEycb$^r$5MrCjaL(-l7}^{YDnB%n~xp+v2=RmlX5R*>a?mP`0yNcl({+bsScHN(Bi-rQWNCceehR3 z)?%Y0JsMlZMZt6-O@*6-y@j_ppUIAzc5A5-CF$&={L7X*Hn6Rdk#7C>#+rprHCBwN z9d{a@rx4?vH+sOOBWBW_y=S@O6&S!bC%w)z%7a;hAVi}@mnBUhNm-EKx{{CMNV0t@ z1F^ve(=<~h<*dAh>I^)O%yn)4V?((h4gUN4Vj*Hn|OU=PwQ+sVSQ*P>TTiLey5otr?B5r*9@=xRiFbtQU6 z$|Lwsk;wPKI-q(+MrpCCK>;PggU+3gi{q?ng*HWAp$Z zt1+sKZEzz=PoNUpjy!ZFH~l1DtzLUYzZ`%Ij zYnqjQ!|R!t;?hWo7&ui z^}>c}thZA5nkh^nNNyv2M5rVrT$6B5H{Pl67wQ{yM$oQU)&%W9??4mjdP z(&rb|e&i0;!i55yPshb?3COqmDMK1!SNoUei*-0YcgXA5%<7GXSF_hn!H97N( zRG`Yu?3EtG+>kgI{jeshHT5m2ZiOJT>RYKI?cZzfy}hu({*2A~zQi^gs7$EGr_3zB zPj7d$0zbbP8#bo`4Mo~a7)X^QDJnxiY@7Ed&L~u;8)lSKHlEpOX|Z*ykgsw%{{U}% zOlj$EMr5hTVJ^mE423euAf&p2dDMCO;stj0X~bx9AEMHv(laB~!66DOV5JCbogfkk z2LfvoY4h^~RV7Av5_HMvs@m*!RmR`f0kb7WzMR2Nr^I$I;Bs18y67ahqi{5z#0hUsDcuu4o;i**zJn10PIY?mfF^Roc>Uo6D`tZO?`;rG3359Z*A|$ zHufVQKhrY}W~uQKTXkU5@K+3>O>`7AEGvV4Pn>-XPcBHv)XfaK(nDaa3rW>swaD#! zEKZM8V!o#|MO;)iUDg@Yu$1sO?S)K&iqy<-^ccB4>SWBNDvdG4##5J2kd&6zlcvJ= zXS;@~Z(!+mNou37pc2OlFCbN`R)&q;(mYFin<{(%b5Td-wZ$ z;d(o2jMLGbsn1(?1U{C4JA!Vm!0)|=_^9U!eqW?2Bv{RLWhFo$tZH!yvAU0Q#wK*> z2%nu>r@}6h=(3(z{IqXx)ONpsKc)&f)>}}1P}W(Z(`HkhknK)cdGJMxT9o2=asikqe)QshEu5#4#$)S!ebg#b_5;@0tw#gwr(BI$G@v$X1lWU54?&6y=~qO=wB ztvzrE;Wj+&-<)L5IerFEolAN&iE$%TTIsy=sMeLa*pvJ!_rovrsRdU2e*BU)-DBi#YY4_j03jRO@L;6j~`>aBV8X=`hanYa_QC_u~Yk)#Fp7M{zwwI^u#{bwsOk=WVz5z;@_V=$X0YgMj1|2 zg{1_h>S;&#PuB;j>S_jAjLMuZC#VZ*P$t90@YHC?tWXcjtcTlCQz&#@w5WFaVpyDp z-I)N~B3eMaF_vWF+3>we9VEGcU@_ zP{OJu2WjZe4^-Miug7h~p~s%Fak8Ove{5~cu?0Frd5k;+SIyijP3_{}_TJcClTNAS zdi1(V+WClbQLXn?xOZ!67eA!_{V#^mmhJ(p>~31I5YX>yFT|6(49a zRaR9BL>i;=Qznxk!iUhS1u{npANb*pp)whT^X)AmMK@^)Hx3mItVYNNSRP3iyrQi`@6h^>*DIKuc)lozkn3ga!R3d#O zN_f2MEID~cNxNp(2Hb(~k27f0=IKhF80yJ!I)kf7B==3e_{&v+RHxEvO~jg}Wri#O zH`Jcmh4=lj%9SR3zlV^`TX#c!H9Xn<1t#2JYrsUX;Uv!QNoCxW?3K8rx~58cAzr(W zY$UN#jP7A&=Tj~SN_4y=5)cR$)RE1J-wqI|FxQ*lM3X&VH0Gp-0QBFT?cdu0D|A%N zRGBelNRU}{rb8+rBV%iWW40@ewLc-rGxG8uedg)eXw-#eEjhY`aeXh2cDBUZ+ZpL~ zKa+MnLNssA0NX$$zmfu^ET90`w>B2P+X_`iS4p9w3`T`goKzB6QpsB?J_z7n_r_Xm zx2i4Ar^%kuU_jA*Af$wYa*{lL_@TtCwx)7BUqo$Uu~JrK`Kob*DgnhRK+&UOH~Non zIMo_V>Vp!KHOS?CLgPAlzy4VKL|6`0Q#vYxh+9`_=2hr(Z|Zyfa1KhHgFS0)I#x*w zLE8TS_uCL7wKOOMN(C;X1vJKERNZJepVR@cK7VWq`AQ8=p(;|Lu~3d5>9$mmLec=S zKXYs@w^C4LPqvgPq@v0~fwjQg?YKB6l@eH&CKL);ZbFyWC|bxs8*#SVi`xkJs9KtY zFg!83qXIP^l~1TcjMR9|tERN1={i(7;{ar#GO7)&*E($j`bfCB^`iD8xi{Y&6L34&*z#ykC-YQ`W{QO| zm!qwRTMKc-uSp<-=_8Bn+iW{CS&dAF+<(g{4QNudjjgs8nakDblq#H<&BT77rqbj| z2n4CyB;5qs);ICC79+V!kteMsQ=zY;{$+_EjVkV+t@gqkdwt4d$wulm(&|+7=R~c= zwAQs;sHbaqCyak*MxzX$TB$)yX-}3EQ>n7z6>h|MI1wtFEpaK83P@-`WkKr=)RFE8 zJJNdC&oNe z>!x>3Qi9}NS1DfF$G4m@w)#b5p&>DuT8^=Q)-U`c?Y{WYj~gI6PRha0BRop;%{sI@ z8Z*Tfu`2+m_5g2$z(hZ%4JMUOWft$|T#5#K71?3STST7N77yM$iX zJa+rzwA!q8C0WqwT1;SFl9Un&2ZLa3VegFgn^i_qY637R^79~aMWmr_sS9n*`e)6s z5_~xk^FgJ-Nqs78>PZ?FMaJpA$DDrApOYstN?T}6IvXf66ERJdq0xJ3{qKHw!)&Pr zvZr6A$Fll?0pLfGxCd)(i)3+(QIk`@K#C5Br)C&%BEeINjFl<$X#@oDRqwtH%wnNT zZHH3RVdeUIXmE8Bk~SoGIC{%*l?ymTdPr$XQ*K9evMem5-o#$#aFQ*?F*}wRizcmB zlQBUC<>_(_(114pait>#b7LSv$iVlLzG;UI6X^|^?69|AOY3E)zt(Lk^=uCPzkD@} z=Rt!BgfR`r6w*`?`Px!}*npnrz3~Xh(%R4Tr|a!DTYY8Dqrtm|)DP$!X&h`kV}rDc z?0Tbe>W!BhhVNW_vh*I15gGbrS0Fm=PA|;Kb=5qT zwvnkq{+&ddkKYryYN<$Zc3DuYExVh^U zAo2eIZI8va^4yZcZ9KOM(si_uY<>J;QP>|Nex%6}vec+>O-*uUJ<;^3mS1e?Q5z9% zZ}z{w8M3r#S*zj`)aVr1bXb}So|NKM({&_V^np8{Va7i*US5kyfYXem7~0aQYgp8x zJDxYd_2#+E&T35|#@LkEO`KC&kU-;Yj^l2An4xdkVy6sx&=UPq%kbN!!KYKv>x=>r z>bcwbi0AuafAJEvDuX7Q6;i?~QvgV?(xvtm)7#$$pk{~a^tf^ud_jFAHtAAHNhg&P z^u(Vx{M^rr66Vd7^OAr9D#C8d4S}!#@UOlhj~CD76~S0VHltT#RhX0?p85hLi&-Rd zZCvx;4Rf>0lVLSWpG|3~u6h$GD+&a6)HxgB4Ts?LR%SejOCwL_arWa4SyG=(Rb97d zQ{8RQ6j@r{yAGuB>GO**QPUCA<3E})+@5I^j+1GM0;CkQ7rn1yt8HPxxWVd#dL#L5 zn2{;OKI#&Bg`Fx3zT}g?^uxUloll7D`B9@Z(%mIbX*SeG!;fz`kk+bo3Z80*4Ve!^ zkx+l-S{Glmpvlc zQ6Lq68j421@q-@1gKnFoq~7UjBh`Pr2$s#$Z|1i zu1e(<*mal`*ldzyH5Ev4K|}{Q6Qvj5{{U9w3~?mW zqtn^{01Zb=Ez5CEso;yOps1VuE^UW-6bf;oNG>5VrN119UVN34ac}#4WlfXcB^reJ z!z{^WwH>L#TzL(t2}7+F4x?)vY&W;qVx{U2W^0x}c1S1!YT zfYmBH6CP52YH*H9&6RxxLx4|ht%`*C$MEN*H68b&o)XG+YQJ&k?Tr~6UnGGw*%{7N zX^=9zbm1ip%9h|^okq$?SMdvY#iE-@Y%ILOf{_1Fa=1JFQzNk$YPWQ>(L;T5j~&aMa5sangkXmzCb!e_Src z70Q-xaK?&cl(H2pSP~O`l9Y~4DvI?|EKnPda9%?(OR{EaKf;@xJ9+Po5({;R#y42g zmYv#sHj=a(Y(>SdfpK#Cic(fnBxoctM2wx=5}*&(nE zfnRa-!40hD(EY)1nUuWCEpa5hJjZRMI^r%vfCF^^HYa{L7~fH&Rg*mrL21?$;(+xw zY@l!Fe)!Ll-bFh%OUlWa9onidCNfc|g|~Yu$~@Tp@n(LnDXMalRHvvikVt)x)RArZ z;{=)??qy@x291}Pr%}3z35?6S5X)^BRDo@X3HIFWjM1`Zjx0o{q>vo{)7sGF5sZ_Xf9dSi5a^Bsyji4!CI(QaSN zww0l@=_gLBa4&8Cn5W}r-KfcCN)d^Psi{DKq*-IE52%Y<8Wj7}vlO=z5prqiN?8gV zl0R2Gqzo(NVB=M(0YPD=-CdIEG>diu;~N^TR$xVas>FAalqpC8S97w6w*w#9do)nx)9OyR`qdOWr4A$o1ghJMj!!)J$5hk{ z6tI@UB?ppH5~W*EJ@3!$d?Y+!z^pNsST85$$y3E@)RZT=_wW1ji6K4Y(Dmt?6E1ve zm1=yNb2XY|_rhYg8a}6!cUl%S& zP4Klb4n)mRRNXlZ z!f7C>Y6-GU_v4d_OAVr<4XF$&${gu82kJZHoPe|^V+6Ni{3el?ph!~@rO&2oQqa&k zmc`A;7u=^-;2th*fs{Hkl?P;I3X^?WjHya_lsetf9kH?iP3#rVtNP)-u`)Flnb&z^ zqUOm7{YqDWJbz3i$F9`ahLy*L`jDq}C8-USgr}Q@b{6e>VKKR3aq{8{Y)0J9i4pS5 zDU>NmjN;u$nmPeRX}ykNbQn&E6oO5f?qY5xF9){qX84{PnujAqRh zs4{3PdZA5y=xc1Kp@$8dBYS`>uiFc8E6vo^0(B)4-DT}8#%fz>XvbZ>MDwT*2KcJt zV3GyK)i(T8W}GN;mZkI_Oq9OUP4G{E0q5_|4&?m(7OU{eTq$XZIks543J3_4RGrSd zn=5`5u|4mFsWFiw=3v%ok){bL(6y}ChCi;mY*C&j1 zr`Dp^z8nR*rq|F?no&MMWl>O+C&MWfEab~8 zW<5VkkEya+NOic3Sx9X57ubEs#5Q-tY^vRD zm}{yqw_9)?f?81|-*I3sY<*3Z7auTWCDo|O>PSL$w9dUct-u%Dea0QIvH)nz&yhg_ z;OM^&V7(@NJ@^bU6F@AlPNSyx0{%hX-HtfFQm0Vs4$*5enQ?3;?YyMv*JP47?mOEL z^t!yEMT+G@I^sz!l{|%zpo{+i<*+|oL%uB5uK^asH{8H3UWbGlrO>G zx4rO3;wp2{mf9dxA^f`B4Yt%s!&43HJB`)7_w9jsc80od#)Yz{9a0w@B?)!gI2`3f z_}dSrsbVlT(%o03IR+n6I|gMw)>9>03wOVNxx$p1*lLpM8H(gr6f`4BE;;t+6aXr$ zWZIb&3XIhnCo<^%h$JZ!k)WTCOc)%CTKTe;DlFW_xvR(dh!7 z)AQshN&f&WWDVW0xzgd}oHo)kdl0GddQu%z#i7<{woXpd4woAti=cYB)*;fxtfA*!lXAU;HkO1=k#t8OY40 zUqQs#NWUasYai{3BR>)H&0>`5+Nh!wP|f!kKc?R*TOi1KBnySXd)r1K4D z8ec-7w&pUDw;633%ZWX_1LF&iW(sT0E>rA0;u7CYxXNzFQ5Pb|`}W4yWJ|5r>hhe3 zORkl4B*j6#i&;0mz}tWL!ZTD_ga_{YwM%DN3Dl9TDkjGMaiG5alpd$E!LTU#6_jGI!lE_3zVNe z!ydCE38XO0)^cfKC$d4@dvlKYEV8cL7{QMKJj+*m5!ZN?Cj zN}x+vv)H8V9t9eg8}PRsVk2wU)7Pkj$pZXfOL0{?W3Ee>8*xm9wvww7Z;pncH}J)& zguOkWN)#JHNFMgR&No76%gRuvxXe<^OA6|d>P3#=^R(r=iMyop92%6hU9(^QmcsqOH2mC;)ogwz2#!A{!G?L=9ox6{=8nW(L zjhJ#=*s~=uE!NsS2<2a>THyZn{qZo2c;=;YI2{5sE<3$7rKK;Tq}?tyt;$IA`+oRH zsF&*W$#H~anGx<8Q>Ug}(l;02eTEn5tIZIozdWa&ZafD}b+qp4Dd7H}8(ZmtGvrrm zl4CIql^~Zxi|McZKn~*P{qe&IMyMAi;yO{YG+J(5jN9@S)P{|VJlpAE#ug)G$TNN- zPOVC-H4Y?|DPfnB>ebI5UIy6rRj0WwRCqCv8J3ZyO{;A;;2dU_G_?XP<8g+%HA;sPBh>1hDl4m$r2Mpnv>fQIJ6MCT z7U1HK#oD5kBgxC*-F9qTk}7rhO?BN;lhV=p(xPlM{k`zJQ)&fDu$fY+%`TQ?5QN(O zEBGhBjBU&;RO45hc0EE8q39+w65iov;1m#e-)w7zMy?{3%o!2mN{IV<+%20pf=$mo z{@9bP0K<{7+4eQaspQ%gQ(?q0O$cm&!d*Z*Preci^-YecZoL(6IPo??)RYZY1IXI| zb7dk@=Cs{C$gvloAuTHWkK(_dwgpk>l`}K&c@SHOm(Ucc$xuB~J0ElO7_utp2{Bt> z{Ej~{^A%@hy3>eZ8#1L{))u)3?T!t5c=R>rf+)AJZSQACS5{S~Mq^ zcjbvoss@;&zNjgI`gH2CnE1oZ8$_c!uJB0yH!Y6D>d(%Y7WDtn7RBXU`br$9)( z%1+i$CjS7w4MxrM=aSP-!Zc8{>I;$zTTr&aB{#YD=Nt=#jWPO5)UCi*8=l+PV}(jH zQgY&>xR&%N@TA{K2c7=_@4g~6cBU5@us(pS{BJVU-L5nnQvpbD6s0M?p>fGKAZ^IS zCUsJ@Xx}3WG;rJOko&GEs2#sg-w|pvbN)oadR#TOl2Q~K(&9&JZgxI!?Hao>O*M39 zB*$BX03J{9j`-1&@${kxWW%!xGQ~uqQmCy)feI`rZMsT>QCms^)qTiFwa?oaYx8LI ztnU@KjWhFOsC4>(DBGV&?}*Z-{6wZx6!I(RtTdNan=Ud?;#xZ=O40|bx!Zg@&?6$P zuBTBUx~dvWX$w`BvIgoq-uOmUy~(*ec%G`Nb)vCMYcsy(J;p>5&`=3T3S_A5Zx_Qu zGQ@K=sHjt)ERwYrlej<^y0_cNnCn&=LwJHdgD38>Vjr8 zsIuGX8 zXt32oS%$L1jG!UJDO!}1;N0=_!&k&Qoic?Un)2UAP$Yn)xBBgCru~hM*EmOuP?uk( zwNZr?2#&wd2fyON!RQlVU6fAlk=&e{4FSDN13z9d^27dvGn!(+AT{Y22+MmfUCNIU+ig z762i;@v8fMykjyk+sR{$1(VN)IqGz{Qa=-UKQmNWkP)n@B#;139`8A}&>8gBJ3*8o!NLPf5@qcW7<{ZZct4uVP zsP$#4RCKMxy4XTmxVn?5>`$=1G^2*gviT;zLuCm-VXzuPfYQ)N@os;v z72(ZtYG*o`U0ANDf}owr9fGcJ{{VNx1F)kdkt33#!^>G!%887+olbhXstu?Ty+d-N z{{U@*nR7i=D3a90O_-ADXl#Tq>PdAZi;XJdZ*he<^*57DY8sn-p|$=~mef&h-0_de zu$pp1a^^&EKWm{bB|$0&z_=UXZ1`iGc0GmaZ-0%eNlIfbn&hUgw2N%oZhQ?y-uvT( zITdC^oV z8=$GIt4fO#N8%BmQk-SR6Lo~1%C~=f3d@x`eQPT!s?bAW)D;-&0ID~XECblzW5y|T z*666o5u>{FCRWhYl?8wl2;$`LjM+;As1oXVa$<>X*0WT}5}21yg4Tu3k{fsw?d(YHw)hWT z%Z8~=Eddm{)Vrn2fWKl#Yxd&>KsB+beM2Y}Y|TMA%}J$A4|PIT+s!+0NjE7@{QlT# zgGZlIs0V5-KX*UUYn3cp_>cQyPeYc)9%Ja0O{cLiM+CTr?v)FEk_R7LRPz3OYFxBM zs=CY-HiUe#lr;54w*ZoVz3`2Q>~)g>iK@Mjpr)@*&2iAEwVG+uXs=j2**8*DIKBRu z(NWCND!&NoO~Q2!RUC0K3jx5FP^AzoZ^7??dHXvBP@JVvo+)KS2PPnkf=B63{$BWu zQPSgeR^ig+%r33a^Nl4PRXn?$N+Ce{x4Af`H4dWwpk*M(nnV}k{85ibQ_Lz#bd@;P z;MiOR8*^`LT;*3HGCG?dnHibA9m~xXcu8jk`r>f2~;I$3o|3y_@v7Zf-r&IRU5 z%o=~h7!<`JT||Pnx@2i7^UpWKDEv3eYkhfT}n-}MOi5}O+ zI@L+kW!GTCk1nW|w4rK1x>a$yia`ksA;;pkI(tq$rVFu^eIcX|;UdE4 z>yILkV*~_^XHshazHbg)Kg#YYlRAr?iL#28ec|zo<05=vJdtzMz zLf4%a3a*$4bqg9g3oa!_{gkV1fcg4#7NaI3Y$;QuybEgUs1&RNdv9%l+?uG~e-&achxl z9~f54`KGI!YH6lTrAmtIbdfdXwPYlaKt}%n#%+5Z*dXViuN}htm(S&EZ5%9ylFFNJki9C{Et zT_oRcYz|@Sr6xnw3Vi1sLYH^rB!U*77Vn9ifY_H>3v+DRdsPZk(c}gkaieXDuB3o& zqLIIDM;0YHO41I1n;k%b?hgCnw@t{E9LG(KSzMU(;^5YVwBZY6 z5>F%@&G^`1E@I;4Pl(be^CGi0sD=Z=V#Sp5NdSPaHUn&M%V2@Yr<+^r1eR6K(e(U(Pe7%A?X~)ZD=b@JrfZY2WRH@aN zwP(~Cc|k!*1|rd7HrYE3?tE|K8C|I5ryxsQ$PYC#0=n&&7C{6Z$iE+a1?W_+{aFtd}26A+&qUJ5w%`jF%ohk~qYYz9uy1h+_@SIYgX|>5v z=&TXy+iM>CVR~%}W9~5>h|;GZ5rQnFx_?L5;9Eh!P$L$`7D+j4slKYR+Id_Q@4 z1yw;Rp2N;IkXb^?R~Q}0vPS#taf32sXJyf8w76NZ)^i|tuKH%UdTT|$N>A|k8yn)G z0~@)R=Al&pxb$jg!rAIWvQ;(pb$Si1$@WMF=Klcp*jCF?>-8#ean@JRaiFGLkf7LU zcew+;9qIJ?wKeAH)p|^KQ)TLqQmgd`=}PvnxZE4>+ZgKbE0nm72$dG1m%mC-*1aU2 zch~{+!h@kAXi^wSjBkbvS1V4`nry+%$&^&-bwD~GrmiJ;u%x(!#c2Q-^O)qKL@7!`DsI<7?s?qqy&~E`KFa6D7ogS}s8OTARDhRN zzOx}gtclD{TsFhVN%?XTQ|j;JeMTE|0%=s`wB12Lhf;JDH~~pf@JIXM zDoSCp(JEjRzU|5uZj_{bF*Q#vC^k(@Q9dQmD4A7rs}8;(rAbO32sdmgKdDLa?l9Nz z_NPP5`4yjuG^lT^rl6pdI^L6Z&YPsG+l)!$vllhy%EPb4QmN6Rh|#p5s5(N9_8jay zV7^ey)XbL?@CnhR(v-QUrhZ*%WR)jtk}N;l8rc(04#Q4QPbbo~tksulxoSgCPfSF( zI*p;@p-ijZ=bvnRsQn%4m&AaPGAznl>QiY~KoH{82H^I%7v9)@tx~D3Q5RHgggUmH zQ-}e2g30H5{{VbTo2>|QqB6o4OeII>Qptsi!^R_ofVQWwXhTPOyhxOsxG0Uh zxsuY}l2)LifJf;7a4>^5gxrJy3RIXfI%x}16a|R!as4>MBN8M?N}XF|HVvF{#P=T9 z_J-8)Te?6=B>RtSOZKq)o0keO=z{(dQS%F*7o^kXPmvCuglb!X-m6j(dngp2(xcyO zHRn8*##XD(l@0Vuiz!3pVKfS@eZ493eg2*C!z`K9e90=e8d8=NG`$enR{&d0t$*7b zzZ+dkH%Bk9dl!#USsR^9Z5n@Lr`Hz7jZ z(~EO7nAIj*L5fomJ84k#s^i~`eB%X*yI&b5IXodz-ByUsCF_(f_X;Dy82XNrElQ^{ zmz+sSKoe8vw=&_3u zh0Cm_;1TC;e|%7Cbr`fs?7AFmw(>$sl11;>97*$(x^8UEaad__+K`4);BnW2QUXre zPxE^WCO2pLh1ZZ)caa9OK}5QHO}90tflAVmsI~{GKl;KI0lKr$q%L#ph;FG!DJM}V zJ6jDEew3LEz>ZjwhF!AVZ0gpf4Tu;DXbmNTpobV!iPEJXQc1sY#s2_oYA!UWF@GrO zM9Z}5l@an*!%eW=klLFIT7dD~VIHu<(JD?#qQj_5hKG~aX-$P801ebPy1szm)>f!H zP0nT;u9Y;l33P&@ln*=XKG<|yeP zHkj;QnrbLw z3{+Ff5~%<$O7#o+!SiEdilre@VMB796k|f$~ReQ!nLsLdhy036d%{TAd3n z&J}c}D+(y-rDs!Vw#W9{9@>>BEmV^s*-x$ui47~JuUJC4x4$2@Dmk)bDD*d~4Jjym zD@=r&U+h2o#6g$dnGT@=^sYoCItx#!k@-nJN0IfyAZHsHdrGL@&1AWkrBmQI@}fNM zp&`+_@4fW%#s|_WQe$Qn!fY_)l_&<1qh%-qy}`El^r+Pwy&|0n_=|i#n>8gVx_0b; zl-tP12^8LopNNP-$!*B%B~GVgo9qv^6CnW8LW%J@$7xN;pILHyl<5urO_p{DLWc?p z$0}2btW)a|osSL84S?ILSFJt@PjQTHS0~PGsyL41cGREqNNF0Z4<_RTYBAcUw;gok zhS6}^o3ODL`g7wEEnE_T3G73a4K29x5E9dSR;q*G{(jI9-+DJCzo8eASMp#K1w z@iVNd*qF*H6*{Vx!$PF{Z=q>Jj+AtT{{Tp~%D28R8GfIbU6%8;D8eIaNG&){pt0ZY ziNp!fm}H@c5Nd9ITM^qkl^@a%gYIzsO03o)L4Ap@sR`4%fzn3X-uNGsO$!iVHhDDH zDKMOl<8I7hnE-1^+fY~A-w5m`Y{;@{uEAmJ3n(q%60Zak#r)%SZ>1IB?Kw|OL&H&V zM1X_seYwIsL`_VY&#(ip5(o+fVF&5s+X%SJbeVE{$=*#N%)dxz#E9xt7spfeB%AMk zZRZ^7lB)3X^Hm6t+ES5jpjbCbZO^^2u61&4Vw@pV*eG?h0JEh@O1#^SJY!3BNU@^9 zX~rFrhi;7s-AOu4t>=z0b!99rBa`(4H(sDF9XaGkQf3t`P6arvfZo>Q{xR-NdIYLc z;ja1ze=@V135^_{%dV)Zd7j!)7#w zBQg}qTX6nT@5m>U-)v|Y@Fg4UlI6?LBTW}C88ry;B~NKmW5O=9l8_3N2kBQEgN3BH z>`K$`!%tC6f?sSXTK>nr95RTFnNrJdrG0psnv(U3R7p=39&w{Q&>Eytp%{>m8+j_$ zwE9Yj?Wk^k_?F}L>vGCiW7;-+@s`TkW-BR{>U|9l(l+M&Uj-^;3>o;t=1Gmic|-VaRjgCU&XUK)d!*_Ds=2d-ka_1 zd>jhJs-Vq~bF=bHDD!GIc!>cCQB#kos3j`o0C&TU8ob>ed=}@_ABRoVqg#ZQ^nqYJ z556XENSh{fcInWWkR4b`Zy_i`K;=qOh_JVAar9jtBQ&g^_>EQ@Ow!||De^|NB!4o$ zoA$=H0YZl8kVo3}gL4R`S0=)F$mXd)gwo2iJ!GlXTS}C7y@2nIaG!$Y)+z6>DP%T! zEnezhWPncCJ(*&MBHEKrj<_$z3y_vmqQOGq*5un02$U$3B0Q31#+;B_Opc+}-HyZ( zNCbNfK^Y0xuoYlzb{%PnbV`j?mSMW(mu|AsKvGY+;Nw13_rIl6q|?elAVOBXMAGpHYbAYcMIR zI}StYNK>rr6TQlkd)pH@6+neEI}!+$n)?x*lD?COcF9tmT2*}sw&vpdpBP4_$YP?U zEw+^HFl>&p3Uwd2{3OK_ zjU^*;2Ljk#Li78KU5Sa(Xb@ygRJPoG9Tf!xHn4)Loxnfyf%Po60(Eu-I1!m$>fiqWSX|6hS(&Pg%M@7B9)StXFQo({Q-E=P zr#&;yJigQj~O*T)ZO5e5@V5jxtjMS> zwFa6u@pUNMfrkn_Lgr9u5?eyt7Pa@W=lkK#LJwrlI~2m}RG?-$p-GE4JfcRCgR77$YkwORCr8EiSVbkDv#eK)TC^n^^2E`(yUG5}lTF z1qu}sBjvXvCAV4*5`-vhjn#W9+~7Ng{xWC^@Wd%J*>vi4QbX}>MX>d)oLu6G?|4ZNMXPWB#YSJx46c{NL@B!V9cieEm4vAfoZZ^Wh8Q|@CV-b z$DVT)VxtC+PoVxI9#ai;RM%F`5KrpWw;h2P2<-GHWCceiM`_UBugHxN^vhHvdeGV~ z8U&5hcnaT>gK>TqRSs>Y=15gH3oa)}j>0TLZMU9#oC2pttud1&&>S#ZT*nfrGGpov zcGxQZ*fBw?=bVLDjnJjZ%=ulAM_K6!Q<1?u@HGzB-xO6N_?Z`Gu8C``=0#Ed5J$@u zcGXO(RZv)Dw!LMvCgp23y{-p7_>Hs?Dr8vf6}=Ud-a^8Lq-onx7O@`qWvyqZpAe)) zX)xWVt_UjB-~gzQ0Z*Ma7{>~NnM}%!^6n*JzM={Zm2tms?Tn1f7zPthQ_QK6eH)WOlX^7-V?96%i;pvKbB(1+u2o~dzN%4ZU79~@% z40&;3vefw-$yi8H2YZ5hY%hh195~-8QGI7lgz77F?4T}A{{T{PsTDLN$s2aK-XT$< zzPgfS!-ic^DnMU1@IIc{(U%NJLZVSE{{ZtZep51BAO!7Vo9qRK7V`ZXmo}>^p)H3C zPXL&XYPd-q!0>$Gk_uRi3@_F5*$2U<73=yi5ssaE~64srzz6hLnyNGAN>#t~&qd6pcH0oRyP!AoctvK8cCV`0Yl-wJJJ zAQ2jG=c2mSfbNij(ziEPxxV;=fQ2HXxY8==IXE|V6D{TjVsS^zd6)6W8eB96Y4+Aeu%byl`~l+lS`h=Uhjb-jTb=&IVk*bR z6Iy;bD|36fhLu{#z``!MCPD&QN)x`ak?8vG++lw&WGurbk5FN#D{x1Wm8HhiTXDp9 zK}xs3gTeETG9@_=Ia0xo^My~Rr4=ldAu0rE2hSe(`&TMdA=arzdo4D-ZKY2%2s#yQ z(r!5zqAde3eoLHfK7Y#Dgx6`ZsZ_Gyw`>*YxqJDfUrkY&k8pBV^o*pHqoVWu?*nz;s zs<%p_*BVfk(?RDODN+~w3yA9sv)A1+AfvY*xUaAE^uZ-R;kRs<0}a%7ufB# zBaz9B6bTZoBW0iIh#I03i zrk7NL-8x$C`c|nexbatgfKPAV0vm-QtDoDePU$U{SxXFnpIA5Cf$!f5($fx+n&Qlt zHlQ@MXQRlqkO>5En6 zQPP#A%_CB+w&QhM-}+NOh@iG>EP`rrJ74(l!Yok5&73!?h18!>r^_!f7%agyP$? z@)#FTbv&E-`r{ND6zsE@hl7*uB2P*$W`>l<6xoH&1!3jFMsGOC1ndoDZkGs__g zWul-I{{ZlizTn#plCuj`#1o%yQ!@s~vHp$V6i2 z=PWo9m0WH>=O5Hq=DAUyNs$@JFp#u64p0^ZZK(+$-ws(y`53E06(}#%X;9GB zN<=es^(=I);5P{*adF8QpH`TF)C7qPJo_#cHd}OE1S^oC&c|_VeG8d>NxX)X!-*M% z#%(ESO4&&xYmc@eHP;!FlqM-LUw!g5bkWL)-9&fe#uEwTL+wG(l@0^3(+&xS${QUi zP5O|9AK?c4{c-dM!#cHUx0k0R zQUNZ7r0UQP`*CmE1ZXR(Wj~B*%&pFY32h|naz6foeIdl#U_2X-Y%}8;nj+wAmUWaY z!I9BNuBJ@<;>=0Xod!gCOof>~t-!j6^cNm*I-kaI1}zKdwBccVO#4M7!^Dd zXTm8JdH(1K;n) zBUxa~rqm}p8dHo?!ppJODJr=C0K|Xq6lzQ<4^rwmf~=J`wIb17e!!7#Q-3%))EBWT zm8}`>jT%6KRF1-0juMdDJw;tQPbDej4}33XBx%awq&CVH4yOWkxgI^p?~QH5cjl8W zWZ6(yO2K3ydK92W;YY#kj~R`~Zpvx4OAj#}1w|+~N=>i7oJU)GowySPI-%Ex5e`LE zb{<&?CCh`P*aPo}G^R6h0@Q(~#2XR0!sQwqT)~vxffxL})u^~rs3X0=J7fBf0)1M& zQK1>Fp~jWdVnV$nk~sFlz9MDQFajvmDyfB-(Jqv^4k1nw@|tL@AcJit-SEVi)oSHl zoaGsq@T4peDH0ZRyWnm52=~Fq=BJYtAYu|CoMYkm@Q98>9$lsN|kY7 zZG29pQ|dL`z{N^ZSeCfbEF4JCqJfT*Sg*R;SzLsIr6}J0h7hVW*vhUx(%M3z##%#6UfNY{$QI)Ust!3+ckqXq z`E0zQM$La?m5C@VXa)F{{Wf$MT*3V+GC}X zf?Q6MqfLn$n~X5Lp)WJDMG=Ek`1*s(DmPNk9CP%+IyD)(Z^PDPSEVh6+V!xeLFyop zatXHh1rlszK~mzW=O0p(qPI^Zs`tIGg(TGMY(J^4p+}=c%&efx32jaQ@Ku77ac}|g zkKD;lhY=7&7f{QtAIk+-PMcVgf7=OFrPTib6%*=B^`SUPTG>ve3vsqN$4uIVUBt;Nt;}^5D9wb&bP$Cq;O)pBKDcodsL6`)hT9!QB#;0c+T-tqT3anf zt3_!lTz;d44r(_xxAns=ZD;V*F(L&+NJ-c5V zo^9`Kv6+?0*qN|0_$TXB`Bd4m*Ckp~7y+kBu2zoM_ZUZZrBszU z)}XYxt+90^w%(&~INbAwywR8<)#ouujAR!Y0S^?CkOI7rf36%Lz=uwxw-OT#Hyn!_ z8}rOxbv)H~bG zD7nKD)lr5IhPzD8Ww>HIM;=s|H552i^8vz=gKtSY*nxqWi!|nBn4L)Qstu%pD514$ zcpZrrKkbWtXJwE70A|x&TMQWi7D|cEIiOt0k71_w&fV){H6Z@ zs9YlfK0?uIvR9Qlk2drqpoF0cDZ8m45L0dTzW5IF?Y5;Bq!>~UVr&$D{7AkuK%9lX z7a4An+Cq$pN=Z-~dVt?!Y+`{|g;UI(IVoan$5x>g}Uc zFeWWc^+|@xF33tcWUTTpu{Ob7aN*a|8;ar-t0lDr+$4}e+--lh9isd?i%*8ha%$aL zRJZh%YHX9p0Prx8m?5y$B75sdYBC%jE~XT2m7Cm)4Y~Kip$^v&4tWGfpB8-)=H)3* zI>Y@mp(^24@Alss<1oZ(EO^28(3et5?4hFI`a$i+65+Qsbti)`rnu9Kv(FMrln3cr zdmX#;?Sn0$Uym^nXmHHXRLgP+POwitcg2}V`;4wN{{S%lUaBsH{K)ar!bG`1l7#|E z)3Fz|{(|_d&uO~P!?PXt8;>a-rkx{gUG;r&Cvz=9sLo-T(Nai2I!cHdf#$=$4gMcj zYK*r`0* z_QxnWUo484l;Bgc!nHQrpb>9j#qb&iSEf{}37tozl~zJ^CDt`1_euuD>D-b1aipS8 zS%*~A^HFWxDJf5^9^l^F`(rp$uqt3ujA+hTo}osD#F%bFlLhjUQdvS$SAXe+yt|cY zGih&0p7Y9dukxGNgreLN=id11P)fyWOsbLU%G*j^8>IN(#v5Csu8Z)Bc4+)s7z;rz zM|I(3gR*P@BKO+cV^UB<-kCh41{W4aL(9wvk5gZp2s14&ls0vx!TgE`l#z;!PcSgA zhtnVl4Hlk`P>m@Bfx+6_93y4w)W+%Qa!Y0A3qfghD6$eyW3~SF$Ck|5^#-Im+aeO* zEVS8jz^JPB+hcw&ZgDJtvr~4Va;0o?e&t$@Y@CTSnGxlN;v-vfmhxOe&@2;kt576% zBL%4tSgdB(qtqfQD-EC!Sb0sU)gNKo-vnHz&XD(76D`7eFwnLGT1mJ(={7vz6+%)e zGpTi1j=r|~y$9WBY3Y(KomcIL*f9(w^(wSu!&xpZDiuOjr{&2Y{JU4gUJ zyol19%o32~xRM+PN>XfvTWf^a5Ix2@R1kJDAP_}L4NEVgcf-fz#tq1Cr*qQhO|4^Z z`Y|hpCB+DCoh``S6X|VCsYxDv@kygep6xDd2#RmzoKkv-Y!s{$_qDKYvrAk^k?GLT z7d6(>r7Z~;0Q1ep1~wy++zA{+N~FB|OrIWPxD{Bc8gIOJP)OF5BW;cT*sRoZ6c}u| z4y5x9%joJ$8i6Vou(kQ$3K`a~O^cf-EVS8%rtBp+1=hWQAzs^ZFrV=++ty&PA5wmlXF+7776DtN6kE)>)60 z)}~XbY5c|dMZh253t2EXO_blvF7guzC@w4usYAd20FnN<)0yXMN}CD_b=LqX2Ky7e z#v3BpxY)T9+nU7HEpIv1)|>R1z0TVUUu;dN9}OxrY~4Py9r=j)hZeQQ3%g6ycE7eO z*>)WogC?ZwP*)+@AL=UQK>%<-?Tu_jomZ?)Y{_ypJ=?UVP`zPD+kIBp@7ma|EV=>* z+!@q8U(|)ub0pb$f^=!I1VltwLY7XXuI9r@8y)tzJmJ=3@T(MPuwv94VxZA0NKWLZ z`yZw$GU?RFd3eF6Q<*X2Bn`Mg2KF0seej19{{Y>!7aFB>+laRcy(tOPaku~tzW8$3 z*xK?uJGZ&;&}y|GP`TR z4^kzFa8`+PLTZmXWH^;90F7V6;M*QiO`*9`ol|w$X{tP-tf}P&?vb^H>@bN^%PzZE zsjNDJg~$&_eJ-87tUvXJ{Hsi*@-9 zE*(pC2sTFB0!9A--uM9Pa@noaCdp+)C12%`3H74Geg6PX=M@>0T(3yWs#MCF`mM2c z^+_q}6W|TavGa`?+RjfMrR3 zp5aOr7%4UgNx4to&%O@8&a6cEWg{+5Vc9DzInj6{TC8~l4lH}&alFSytL3IDl*uef zgE1PKb+rp@Y(emEh1MRdJsYP=jJaPj+K^HcVnP1^%eU7I$ice^7AE|Om1EUX{K~Y~ zsq$J;G2}#EkUx|5NQeDqIvrl__pA z^C%9wqmZt(6b+8xeSso4f2Ww&44rHUXSZSvw zgCWudk`0ByweQCmV6N3EVy4X~^d(As1fd~(lYjZcCPFAS*>QdFXN>gpmdy8X4wyPA`l94)M!>b`G3~tIsp4(pd!IG&k^7NXMbec$Z zx~Z!!zWUT#Lu8UdZ{Ehj{ssujl_XW)M7CYf`iWACEP=k=t%+tJnh>G>;$O+t6EUUI z-b>W?E|-?(%V|fIU%%6~8RAmhZAIB_H2k>4yu;0~R)>%~1(9p}Y<;oCtHPADMs3#O zsNGGC+g9E?VyE!$Fu_^eN4ETEx8*+B8fKT-SQS25sfGod`lKGZ1(_;{{UPFR$WyuOn#+L3PgEw9M%+ngz5hPyk8omINF?2 z=04np8(CAX-_y;n`(u%x8-Ix=QIuH_C3dM)%#`$eMyg4HP>TC#X$;0`ZK1?!HnBH5 zlezJ>I%TSx(Uu&J8i^I<9-CpmP$!*#Y#(;17dPbvP^qbIB|0RJP<^jjP&XPy_7~h^ zGj#Xk(Y3VGZv47`DFrsvJX~V0WcQJAV*o~qc4`p}lmYW?sE`5yJ9pn7wLJMIN*jX? z7-C+MwCg&yA50|CWyD5YVGdYNc&x8d$vUrlT=DeBhauGDW&$L(A;(mI$a!EZs6q8! z+y4M;CXfNyzH4)(OBE{9ab&iJb?ZnaR|Cfw6$-5as+BO9ElXg%XO@$rNjvO2{{T!p zFD^MZEjEwElwqw3LW4)cl$fb0VYd=TQ0W#v zZF9~R=~aB=M9XZ$r&N_GiB2o#m}T&_L{;zJ#V6Psdt%t?i82ph{9s>(Q*#X$;!81G zam_N8S1F{oaD@wBSmyiliZ{gQby~dWOtR8dL+b_0eFZ0bYzlTDc~%Nh1k@|uj4goU`1Zv(aM?}6=Rb4#m|(%k4rXcZJ~_urHB;~nTzYm*tEF;sb(uw7Gy zmu+&i0&R2LY=8BFmD)^7?rMh#iW;6;Y_&~S=|L7B!@Y&~!>Ai-W}^Q98MSj>s(ig} zs-z|Z&4kB8EA>30Ka792G3Ij`p!0cJnwU}M%4seXp`cx5JO!t5W7vN9Vya|Xj#{Hr z*B&dCW{{HRxalM%eDHYoz`UbVrMsLb=O>dG&uTe}x7Lt?-L}$6wTvXux z%Bodl2AH{6(mhKTw!mT2FV^9;rgTuRmwh2&RwG#Le!z?=+ODDj^N4xpDn(Ncw$m#v z#dA?oc_;^9EyfZu%^XcAeb(bP)Ame+XtSvaRlrf_{+v~FyqOhQ)WyM& zpr?8*4Q0Dj~>ST@ZpZJ#L=4*4OO@_*fZiVvhVqpkOI9U zf(7=+TBEJzI{bDTkeZY_TS;BRzJ{E)s=+_kYhV;yu;XxQQx_=6lHKf4bgYB?S0=$& zCqRu*spVIhrnrxrWhIo!NCRHm>pj)ywkR1w^v>4d_L+vb2r`OYd9r#sR6eb=SDmrv$6qLiqsk-6YwjY^dgmGK4H z2U?)Jq$)dyQVPGA1Mh&PY{pdOpUzb& zl3AM(!sfD+og+{uu=-(z*%Zj}-dk%i=E(H0V;d59B48rFfhNjz+PTN9e=Qfc*7(`GcZ zJ`I9g<8I*h2Lx)f7Y>YsKI~Z%RFY8L!c+yj8}pAWRTY`OA5oJkogp>qbL+G65Ol2_ zf|cLxbOks2q{tWl13+$hL;X}RK|Oz;ZbT7{Q+gG?_*)dk%}&_ z{J9u023NBD)X4n#UoRj!pf*Sv0Nm~Mz&zURdKBWCTkMw5HbN29QMjl&P|{dbZ>Ph>Tjb%>?WsjTX0A%uyd|r771O zhNUJw)IBM;Bo0mSx|Q=SAU ztY%=;UljU_<(Ci*g0H`FKDenN&nIGCMHt;zkm~YyZ4C9n1Zi&O*5sRZ#tK6En)Zg1+4; z?}Zbp)QFMe&vDH+8Izb!2#m)RN|Myn9J9jq|QN$ikHF#H9{nekx8 zZepdl*h8(BKSC0D2L0{5hAKI(IH@wW%L{S9!cc{T={N3i6Us5?!kJK%>yO5AOPxj) z&Wj6M+Wp6TP+!cIX0qF>n*q1oWznJ5)&k|vAT7E&u4KBa=qIqhef(gH z(UUFM;H3s4+UdNNqjBK-V1zejQJ<71Y^6P!%!vqw8)&COje$FJbKK&O9rDU_p-w5a zA5H!HeK4C%i4!X3WWt#tF0m~EaUVlANVg$G9&qUB2vQtxcJ$ps{{W}o82L7Rr6Xk`(tHpL4=h<4tBey=7qJ|Y{?E~UP` z0Y6X%*j%N?k4epttFAoNnRt}~yLB!*cEg2A1c$1VlKNRHQUFIx*}BtPT+0r-x{!EEGk1Y03|;(d_k|GRS?8sNP_CZA96E+P9Z0P zN!VM)1lMH-sFMnxef9!EgNO%F7w>NP&y``bNXw!3<05l!C~GJ>ib{`U_XFDwY{Q6_ z*6KrTrB*#R_S3(Ei8%{E46v{L3wM7?!Os$5;WS8~&vDSJP}iE*%Y1ldd8U zMSqvuN%Aen+YOYe-2>P$qglCzJxww*Ybbs6MRiE@wgr`b=X?~0C;Ym=OUjL{Nk|s5 zkCT4b6Fw{_A5)B>4K{?5vZJU0=jrW$(4Nc^a~I)MhzR^SKo_Ju+JZno%l5=5pYbcW zS$FtLn%sp>jV>b4?LZr>lvznt{{TrAAKMp9&6m-cs4}xGArXq>f1KoEklGH{CgZ=q ze0)<$b1-FZh>W{6lrD_uzNXKwP&-{GZ@uwpneiHvCK0FATAb4fWGwnrlq+x2ZMiq? zxW!yw@e>!_i6YFof>hknkyNLDlT)Fn&&Fj-T2xJxl128x{{WMjPlGMBmxU?voo(9M zi0*BMthVhYuSS$$LHTImWyCbLiVeJ!+iUya&`KpGPIO%@vDq0 zqJy-j9(3tOok&Rp>{K@G{{R=l;^0rSG9Gn$9#L2-UcEpYf-m0ziLOZ}P0yjIQQVOl zeAioAT7AM;>Z{bCJJ@1RQmMpI{4z^%(E*p$^KuG?#4BWdZ~J@T4K%}SiA zNf(OXCd3{!ZE^LsCp8Ls!*VJOK~(tC)p?JF5{B$HSQoK3;@AkCzQ)MJa#0%0G#tf~ zrpBksLPa)066=T{1$hAX-)t3jqTMEz+WP2CF)IaatS5V&(mdiG-7al1g$U)@F<(Gd zr6p~I2QF?ymfV~>vsskNntL--*pUo1yK$0Mq^NIjl1=fWIwz`bXT;{a9-pVP2CU6` zB&g73IFgqj1pc&kumhYDlbdPsSMuyenjB@YR#wK17XJXq?4k5HpUJ4Tp%UfFd6-gw z&?XXtzZ~ue@5T#7dIV}Zq{*46w7WE-jn+J0f-#vx1{OS(Dm}OpGA|?7gIzVlsn$CB zq_Wf6m7sD62XDR;GXrub$cGw4W+BiZfS3@#2}&>gN(tMIy|6Y$U!qnsx~tiKtv(a% z%qo4R7pCKtr2hcoqrMNn5?E7iOL^B>dBB^5+*q3*ZgHz%stv@(n^`jySkW7h(<)Pv zB`U?eD>g;E3)3FS{qSTq@WRg z4}W|rN}$x@OQuC`sU*};z(lDoBov$9bNlUXaG3I=H%u%K^(rtPr$frj)Eo`8(?}^= zmXMq8xZGk(PMo*1eQ|Whr!Fk18qujbP?2B=MfUBCS)LsFWdaozMP5XiFBLf2RH6#4 zxi;d~!TKb3pUd?4tSP1z;y~*>o2ZWacfrt+a5X8NV^^uKR@kQ{(+$O_rE8J4qu&1b zL8-{4!_G}o;IlqVr`=F>*r_UN;>XlU-EYh8u(o&j|sT!LhK>Cwoy~m6zGgGXs6_qtD~h)9u-9#dFr*xFmCm9!xoACRA~{i_e8J z=8Mfm+*)?AQ6k5laJLhoQ^{{7N^YGY$okU!fD>e>>~2Rr_Q0pUR-Kn4u~n!>oE}(c zIFyrfUn+h`<*qumnJXq>wms)Z=M!_jq+-`QYyx^q;#%WQ}Qj1S+ zBv}9%c2$(|BHGjl7dFK5IbuxEiWicJDl-eD29TfCxC%B`I1c1lA(ga+p-4^0O2@Vf zfSQCR++j)$s@hcDuAckf9Hl>9Ra`j1ikZL7KCL`~DrtYJ% zhw%}9dBBQ-rpv4?vicq=Z(8*uO^1+1=l8=jS}k%-3S~~CDGxr;Qe&;?;Au#){R3<7 zfWmulbHmwsTZTZ69cl!WjavmAW>e{GD^iSoX|P%cYwdp{>yDM_w3__(Cex<=8C8mf zDQuF0i3uE}@B0(R5v5hvQlc2pzIu}Ct<`I9F~?~5HVsSvWGLG`%oCy!Ap4Bf;7z`tMy*ldfU@Wo3c-03ox0wYj=3RI=Z zC=JRbB`H#^`mb_6*vP0e+mxpy%Rtbb(1!21+W0L$FvF$N{6TX3E=U95RYXJKzTjVrb35YuSlv<>g@}qsIw_;>q@rRFL9)kw|}+| z!Ky9zPQ1#~A{zj<^LoH_zo^_3f>b(;7QP?2%m>jbPf)2$5&9B;h=a|}``{FG$6~3o z&c5*$Qtk&mhyZPh76gBpEO&DhBFw5~S_0wq40p8(Bp z%dD;Ga$K5P20N^@J!K;5HalP27;E)5AT*gyl@zo}LK;a@jmNeM<*D=MQkNi0>veq% zwx)qYLi>^KM&C>T4R%4;1IYc8=~S%ml${RCkxtAS4@5p}jXP~_Rma;Aik4TOL->zX zrOk}gNiQu5Y2>Vwk~uzi92*P&08Begkj)P+Mz2#9Iz-px7Nh|q{Uu(?up0#T!sS6S zr##%J9jR1Y8@8upsl_J!wJ4kU7dv}nf}WW$Nigebx)cyYM@R}zzD>6~f5rz_sccp< z;-F4Kzcd7O8Bs>N8`#+HErsO7twgOpgc$F)CA%RiQS=_;R_6ZL=7#gbRWRjlD%xX0 zkitZbNCX{?vg9> zIc7WgjxrpmRAM7qoGRJ00t&&m8i4PC6c;M$sLH1n`ipnfJ9d zz@aa_)K?SFnDF7zq1Q09*t-!#U z*?|=r=uEh8MsOg84v*BYW83eE<3g@Ti>RuG=0awbk|Gx$Q|nO*5iXUy{Rf{!|skb={QJh$o9!Y%tA9 zuA)UYEU5hwlWj#i@BaXOh65S^h*eF==&My_(5iIAvCwhQq_MF{1RGr2k@UmXSBD}W z!=*!EY_m{hU^>;TP@X~m0GxMSG5Uo%yH%x1L4G5NOlDn3QbP55lmY(380t{sLS|iI znQ}iCEF?U(R&*%d{BE7FLo14mpo@XyX1cUWYT#AfitR=DWwsFK<)s4qDEGIE3@<%i zl>JttOsT?dX<@iP+uT;xv%(eGXD8)%vQ3Xx>sNn1f{r>>A6sNzJ zWmHh*60WJpd7z-`Nl*sY*JH^iF5{{V?aQMhw=;yG1UPExQgc-xU=uR6L^w zO&%jssmW{^3S0V?H{4s>&o~IeBGe*}m3gNDO~6S69lYNFD)MTyDpbfQX--n-D?mz! z{I%PC`vZq6tYB_=9fe8+=*lDoH+?!4xVY{C?S$GAQ&e3|E-9v*W_rUNGqFHB8+-V} z1p_Rqcf#ejU4B$qt|asn+JaOO{3^aCDWTWtZY)4l^`*HgX~$YfDfaJ$L<0K=Z#gJa z;3gymNJ`p%M5S9olu|Yy!{ZCF=?}Rrmf|~S)UvRr4$1S!Y<`@xncR|QH8rU-okf<} zNG+u{+-W=?e0HVMt5hh_49LpX($uG1E&>U?>?}>w^|lBfcPqDJ4HGrf>2v3zw)z@L zM?@z{Qi_Klfw;fZ32#-YQeS>s!Kkr9$!P(iqNJPKbd9*He!WOR8WeAPfwz5)g|StqRpUuBB13Tj5mlt`xEp|N^&PSME@~1Pyf)o! z;83SZfwAmPCyyg5{Dh;Y*ptk)R$Y1v>?u)Wt}+s^5NuU`cEbabmaNH4j_C$4XzEIb z>mv8R?|*!Ag5(A>8s)ncA;mmdLdr>KDc3v6KSVJC@m>k{*VIGK8tH5)y0y`gZyZCqs!Ds(X>8bkz4-EF7fDYO|8_)mKKA zUTaeIgTT>i?}OR6N1K-~P=ewR`a(i%bro&j4f$rC#Oib!rA#Hs39)D%5pN^TJLc(> z$r)l=TS{c9l?5p%7fKbkf3`9QKeJ;jT-8*DzfN~4CL5ILN=mx_0HJEtU`KC$-S3As zCA?(meQd9)fOMrKsRVYw$CSlldk;8Nq{mrEQB9If`2)Y#1dL>UB+KQ(m89J&PS+mz zY?)P!u$nQe1*M9WsjfKu#5_YzA*(R!K!*Vv`h~phd<1-of>0z$w52CPQl|YYPks9l z{cuY=q6@{BnSMlBXg6=5y#-r;8165O5UbFcq%#tGK&*fA8z1U8`r}X}fl^L7ZhEFm zVwn7Pp9qHRe@)S4p=tBx{{Ufw^|_G_Op`VANGVf$ww8*DyjWWR-it8a!c;M z2(yaWDey19?T2WRV9$dgq&l971M-lIo;V}MGvsg@%)S&XIVS51Z{eJGL&cKd(1#0p zl!A8`_QMkT&?&7wQU3r>q!y=8K?831{BDvXu;-+}n;8aTR9ET&sZKs2(^Bo%tv2fc%6S`K6il<2Y4r$g zw-sy|NF*r$gJ3?~TM0R=zaKcsVvR7&f)G~nU25oMTwGtzwiW5?LsFZU21{+Jg@mj! zG=NVj7UTNkn+s&@2ttq}%}#u&a~hE)DQYs-62lsT!ZzS{zkTp+)+$qIT`r_|o7pP# zSdndp`(yHcNRC@=Ex6;VbysY(t8|uj2TyZu+u?d8J2=MAE;k8ou9FM$o`$6+>L7li zNVxg}F+6&@nlW~-sp_2lUo2)-R9JEO30rzq5ob?V*em{VX`51uQOcrJ6(J86wK&R1 zDoNAFJK{kqeMX}xXq6fQA+!bGQtho?Ep3iDKRUNVOn;Vz)Qu%+3l0N&e>JWRuI;LPIenC0e9<$wP+TkU`_^ju^?Q zm}On3desJ&zlDKSAj?x9aVcrV>RQkbYn$vbyDice4=sKKmjuRBvR3FNvPr##_{U0% zkm?1tjCagbsC0ye$`A)-8{4;RH$zitpsg*XpxQ`N(s&$q8`~2uz!4p&_Dw`ed|bmU zPfy4cTok2S6<*h{xIfbe9*ZrQYG6~^n+ZwMlDCevppDd!pY5^7XK67j{{Rx>)E;_g zNrnlE(v%R}fg~Md1L^>q0Cx7lc~VM{sL<2Y3At0YxCh(*aIciD8jXt<)@1%7a~m}X zRQDT?T%)$>TVe1u^v8Rif8QPRJx-3POtQBfV31N$;~JYDINta<^K}YLg(xVyh)Y73Odm_&^sFBK$|gpPQ}85R1Z z$dYA7kiwr!w>sD;M^C`L@AbYs@rBE7yp(1D!ZR|<^YY38T2)X0pv_t}m4mSZ*pArc zmT9rqH5A&LtBoP1%WZmWppmuz0O`g=X9>}2O{<`pk)BWsNLQr-{EK6)Trnj^txlcO zl-l(;mUanGgpnllSXrq+N%j!aX3nDeeE6ptJBKG@4ptI(=c*BiTY zpF>wFZ90fOxZsZ>*c$>xGHp#&O0Tt&=JUTQOz2B~#_8^0!$*KBnC#a-w$z_w93v{aT9BsL#QG z5LDs_D%EXA&G5b;wkpb~JsiQ98b}1BU0~aPVZR*Uyt?Z&9JKuEid|DFO~Fl-^tKc7 zGb?1ZkBxL%lNRb#dR=9jMQ)21LrMvcF|_R9;1VxwSN@yrf|bZDJnIU2Lvql4C9NSg zSMvZc;JFM;r?%vl)gD}dsu+DILB9vC`WB%D$T>X`*=EU(;8Ls)9C6$n zD%K!I%o$EpIh0?Xd7G9>9n)j|!1ml?f3$wii6x&i(M>{?S*F00>vNC;ompYDg5f+B zbL#iSRt-IKGgUDZ_tvhufm(F>K)&bbFqcZn1zDL?HHl$yr9v!EKvQl!@_@QiU&}q(#jT4k^)m;Z?GJX zILTR|&#UEVFV$o{B3TJ7BT7kZUvd;h$I|%pnHbhc8!NlX5woLD;zUBBNO zYnjS3HM%r8EG>OcOZqnn+SmJ>Xi?e1sw6X#W3Hi6n?^1|s3{+v9oGtzsXQnWFLU3w zwignG#!wXo{z_Q?092$4-^z!7sKo*LwN<>t#JXiU>5)PT77Fw!VE+Iqw{LuHMC`oo zX+sb67PkRyO-KV$R-tcDJP)Va4((=B6KZ<~Wz4ZtsWmfGYic9R=v0&sK}j1BJD=Mb zTg;V=r%9DZ%rXp#DJ3wf9Sfw3ZLY@2+ZRl;mnF55*h7nPxdkfprB_ay>})s$e-0s; ztW((dk5FY(8F};|HuQI&P1d2ktab!@<1RKOs#_rk$mf$=%Q7kMO0OsJS#5Ib$Qo1> zcOWNVZ(-Yr1K896DK5tn(xdl1AFcU`Gee0_AEGm7Lu^cn(HrGTxRH zuS$-a5vJDF#^Zgtz>3t)opv+Rno4Fg`;5YnkS^i9g}1o3oIb~D2IQ8jv97C{n{zhD zY&hInFGPTaf*$G(?Qa(IY;nyLwsRY7n9*CQ$V!8ZNkItEo&Zrj@TozCN~~rH5-SW! zZ=?!B!|E-QeYI{k{qaYpU6|qxAx$+2wWulQij;T$Px$&m)8J({BEH|xw4kR8 zH}#bd;vemWfXuk`(l#~RdTo8MUe_Sb-**_5}m0FRJ^6$2` zR}n}$7OgioCxVf_2)#k3$%-VzWtUsATVcy3SG}%0-<)%hP+a9bFx6p-T=pZb5~J0W zm-Qt{B!SqFMY~~YCSQjtSK<9{oM65jOT}tR#f9{cE&cFr8>Ss9EMJujr8WUN$kp2S zILR)esT zM5R<9u9(wkOTf1$)JRDj5C+5F&IZcN=w=g6x_)3R1hx_iinhMq_WIxy9LGrfMYd-- zC9b2Tw$P>&Z@$VV)&uHBD(Xn79DepVe}@?}lv7w#5K6U>Jq~TiwZ}VJ*T(7&Ser%2 z^V@w6HzCPNa22geQ;1O5*+h}SxV^FEhTMrQw6;~DCsK8r5x&|<=YPMx8S0f+Qo~PF zetj{}(Fq}FwH8E41Gw`Ypi*`HIXf`5D%L`GxRA9>eIg~v_GwSWP)7dv8e zNsQdAxYU`>YjO4gkMigu+w6Ub@sCWU3{a(Y8C!Cc<&+$F5Ushj&A!-%QD#>f*q^nD z^Xm21n_;CjPAFGVEN-xk>~Hqt3NTzVbIfXeJU<1I=qfJ$V)@)84{rCvRW_p@6Rg5~ zu+u?$opgYe=-+SagLN7d7_C2DeX*f6RHHMyklcaeRK`hk zM|4Q2E%m8Sbk3zHleawk^Ns?kB15ugJw|pl0dA$X$N;Hl__e2-Uu)YQ>8Yqx>M~30 zrA^0cT9vl2qq#oA94Ex;RobnhWPrh7w77+TmW8Lsk2n-PsZF~XrR3bVHkdjHR5qVY z*V1^P9say~afF7b%u?&dnACO}Ln>E8PUUGoe;aRuDXBsK01L)j(j>^3l^tVRLJ)8< z#L9l8{F{~nQM!;Xao7R>02rFP{h3t@R|DpH+#I(OJyJyty5i$J3vtDbjqQE>eX&KO zd_sksGH8(}F1<$SETz_@Ed(q9$Q_0!@##k~J5Y%|Vj3f)6zNUY=G)%;54IZ-l_`|U zV-*O!)%-?~1v{pagbLLSFu+h`MAxABX^Cxp0Jl02k)p`o?VD)k%4H ztQR^#S6M;zgn_=DvEp2a)Cw$W`vXx;h=>6xSW(zt+v$UK>a(t8h|Zui$XL4XW3eBn z>xl(xxENF)m-Ccr-b8LMP2o~Qodz5&6d~X^RnKs6k&e(PABtwlwHR|8L}HCE zA#1o*xG4vZwmAqe2(p~b&c=xm*Bo1ceuVmV9sRMqwN|HBn_O1e zT~QXhAFDz}$|^rhXvf$c#3d9ZbCx*=0K= zJP>^0mWi0DaZx5EL4~@BLra%IHdk&tVlJxQ%8MRD39r$eki-cNr9DRyrh>+#?oGhI z(;BlaHj@raXl$qEry*r++yyNIP4~ALMx9;icDA;9tmwO@ihpSQjzmC22Ni)zh9rpSv- zT%9RcUDAaUV`12LzZhl4-p)^YAZQgz)M}(x-AYXrv~=BM8;}A0V-@C@Vd#NOI+s}u zg%=WT1^2h@gh`Z%Vu0FG)2h26#T?i)0FB{ZmH#kYGqo9y|1y@{V|bw z-mMm&DkPZ`YbDRdMlfv_MO@Att4Oo-!h6&1ka3fa`C65>_$>^`{h5tm$~sm4Q2DHdA7 zz_dzT5TXLWj>_@ivhmY7QtF`$()4M9D;{jX(YN5y(_ni_xs}$wcNzpE2x@V zlOapl5m2xn2?D_Gd}Ap5mdT7`0DqYe(W93pPAgOl*_oRj zl5Mg_u{faRYPNH)))<)nQ&d<8*6Lp*R~ z;^ZHHIKdw`xe)~pLV7G%$mz6@ZkJRx^nf zwo=`dq;3Hta&6lS@Ti%NWVkXZRI@#mIy&wx)HYjB^I1oKuqO?RF0-8wh(?yFB9z-T zhMIBx+&wn^7QVxCem$|`)aPAwC2x_n7N1v7H}vhQQUj|u`Eq(W-d?^aw$j5;d2b$f>#n6PKB}t zwINo$)Op-(hRS_fBmZaHrSsSRBEx6Gd#MKeygtUariYl3vR8L%D6@KEC6qHZ*#xb9QciSCNk2Biq+J}nu%@G$dN6; zQj{rrdmCQex91o#6QRd$ zt27O+ZF_DFyyC?o3uvK7ix@Vx!52{{gpICwC+mZgAxvRU++;vWGD77Bqch=~>2+w9 zh-&|~sMyEBE){zyr-a=9eTw0Z+0s4T!xD=7 zk3Koa?Q!~TB7HhzZ*Udsz{fYBq`Qp# zH^hpIH7Jsz<>*LKLXzl7QQ6OBrqopzEkRLv*U(CC5_F_$y~rx=ztykGwSk;3Z1eBk7V;xKz6ZE1-WUyCnLndzpI#4e=QmY_;?5Kx4UI2Yc;VVN0R zD!R&?kYqq)kdRaBSAcOF%98VCB8MaVLl#9P*_8n64!G!bWxHIZ(l5#4{0*^nrdHr8 zN>KahO~&`w6K}3FwgM7NMb87iKcUOc zaB5|_^$1SU?n4VpC#WshkbPGh-oqR#HM!MU%~T=5kcSa9$h~(P1F8TaKqMQHapQb6 zH9%C%xR}azLk@*%1u7Q(JArO*++p{nvpCn(V5U~ue=0ibuD0+(wG|DOao)#_N-FT4 zms*(mq{@F&iE*_9rA;Vy3rGgu*vC_=Q*x$eZbZhU2Aa8hrFCc?Rxh}}oLOn~v}YfM z6so;3Y*lHJ{{S^E#ZU`Ulh~wg4fgYbs8j+Z8G$t(z8F^MwQPdLCF;^=RhueAmM2R} zq=k{iuX_>3*kFR>Sj&=!3PVV6r9^?qK0D*&B{NdV-x60ur)8I_lPeO`^U_;aO~&oA zO0FytINXeVE0bdWH*0JqY=C+%M<|R-MkEZ-0DC@;?_+7#NF|$3#gpDbO=M zV5#dsYD&Rr=D|`dIk_BRPcvsE)2U`eSU-w5qoz1+&ZS_F)->MWc-tIQ+muR$RS9tp zWyw;s!D(95<2DxkM(0Y7=J+7}9HKQoY$w=Tl=YbkWk*X+g>o)89^Cyf_`?4HcNwgS zijP@e_`-`Or%4MtgsGOo!#4z#6bq4HH|E$onre;JYb?b~F)BI=)`^^- zLb`QHRLOMOgjA>@5f^a1K#kNbZ~^aZE#+#I#`6tYi!z%sLYe`_<+uO?ecKnd-%H@3 zLy!{@!6^#U=ShJ_ay*2IFx*-5ExTzM}+HpxOTdbvA*Q-V~%>*)HtjPGhBmS zVNFUyNQ&A;!U5Dxyp9F{z@t>F*`KPINOnW66|PAtZMH0YTI(NQwjCDyxk1W947`;T z1q3<(LQ~&K@AMZq?Nar$46_Ko*!MP zlj)B#%wU%SBB(7U)&VD9^&sLunQ6IBeq)BWVy-mVFaB(%TUyk&G~UY64T<-*40Y8; zrPOK_B&HOEH`7uaUiT++s^B)8u98b?F0!ChMfVp1=Wf`!Wz4rn z%0^$yxQC{`vbW?VpoF+BYglo%Cw~y@uxfD?m)wfqN;y-CQ*Ir}2FV@{_r)J>n_JJfz7i>O zD^%R%q{fKECL^{RLqO_7!u%0?l6#%7d^ua2n;NJoscvgfOpuo}wH+gUg1ildu=x}o z2-q&JQ)yHfRVPdJ1_O;pZ=li_`c!+IYs~pJn=2$a9ux@Bv=HHS&D1@CB%61(1%HYu zbk`f{$^?I=rkqd#XV`hb+{K$@RWh?pQ(BT)T!4oF(g7y-8jr9&_xkOKjfY`+CMV_9 zu!<{=)e#;Hs4ln~Kstik;VupCE<0Nta_TA5s}jC$n3)h$qxwf6@5cC>QJ$(Uxh5@ITe2cF=tD)tk2@Rq!_2DHK6MS+bZH5hHD{y} zf)jJNvXpikkNsjc^bG5k^GuiJC6*X=qR@jB6uzkf``JTuf^ke}2qW+O!V3c~Zo-dI zg(S>r`0h5g!vME*uE%gsk9-BKP^wbuv7e$;AE(D`erh#XfybmBj@xgCxsn`3DVF3R zNN}ktDAj!i+!8s$#eQ;^ICNk6Xu34H(l#z%$?c5$Sp)ivh)I*w%4!B{l@?nya>u1j zIUxZ>b~Xhn0>odG-s8c>wyRKFuBp^Kw1#ywsLe_RE-ge2D@so{^TsqwikEVVw=5eC^(6kS&IBr%N1vC(8g$bAVaF1?YSg8q{-JC7N7ED)&~p6h8Eu&lMplqR z-F>$G?}(#y7U(&hEYT+|=UI|dA(B8F@nhhP@nvgT5q{&Os?>a?Okw#@WK@}C=`AFM zs9Tk8cpZj61xA@zX{k}e&53CbBT{Tqf#2Hr=<77<%qb5_N*+NcgXv29g@5EfY!FUg zG|ab4lPl#|i0IPVQmYaN8+RW=h%|Ul9UcF+ZO4N zp-!epi7AAuqyCeKPK6`bdwXJgOQlIxc@vAuVw?~}RHW{;?WmE>h4;lhwMmNw*Iryl z5R{b_6>bNc941ygndlNsj?~tL3z9tnp%^E%q2yif2|Cq^@)~8knUO zGNfE1n+<)q=guk8Deh-lY&zN$wi5Nz8BQy9!c}fB-`^Q2w8=`ROJqEUrooYqE?xvjMyAb$=Rbfvl|kEC4|aI0f`b{=qb=#EHn zxpO2X$;cf&4gQn?$v*hOB~j4WWGyT_u%ex5xJpO-<2hz(xn%$dxe|IJW*1v!rr&YY z9VlMf6n7*XWotG}spd+~Uy)B*Af*U#5)zHowUj&91K+*~M5esDM5zF<)R3hFIzcWF4n3rC}?eKjuM$qESpCs{{ZUxVa}OZeRKXoa8k^c zw{<89H||aNzl>FphyEmk11Xg3*Oe*MRnA1OmUw`dqXh1&o$R0Y2N`R%+I2rICPXzQ zYAfor<9n$<8;(EU6B^YPE37oz%|2U0!EP4Km82cOIKfh=O=U6KrM1(7(g;G(q3Auf zJd8{9t5Ff#Ar}ohn;fb=HR^O}?4FukTWzCqZ(=|37{yADG-iLsp9*tR0VrfRq@@WW z#^ZaO3vQ=bjZcu`U@;gwyOJ0hRGa?*J^Otvg0zZ)VLtMnDoTMGQG^@Ql|IHJR9aH~%{4ZZMhDobibZlf+*(bRQ83Az6ONDazQzkB}x zOc!pX(q^T729)!cD=ANZYhWd56(_5XNn#mVO8_aRw{dFzYj-xrJZ=dgxiy?xh{sSx zK4Ys}udy88g%Bx6ZgR{#^WhQQeO!^I9Fr)7wNZy{3D*1NcGtw37$9(l%w0TdgP+ipeFzaDI)#Z{oG zCsl~p5y-!c7@GTHoWn?MwWv5rdArz-!wa>zGwHSKt!yDH)S_0Br8qnfrZCV~E~8cu zrZnSF9J%9!@3$NuI75gq+W9SyH4vnBTr$)~n#!@}RC+}w%7Zm&OHUyh)Pvzy;GX{Yp>S4&Tqm))mR7kjP^l3WI1Mej%X@&N+^FBM7(>nO zi4IAEhY(iqNfOx>)}hHCUl@0OrlwRKrZU`iLw~5FQB}pQW9^AnXEKgheaOlwlGFV_ z6xD)-?m*uOgXF+X8AN!Q@eP<6HjfTW1;%@(8zDyMSqT?XPlJB=I+<)Umcxz5OHIDX zTGO%L&)*7J9dz8qoT0_7GM8XD(uRi(+B{ev+uIo*gt{Na*;#gD_fi&B52pRXnZ3Xx zvF(ok0EA6VPF5j+ohdHNbq>T^Wtvj%KR@*wjw}v8Ds=bSs79#4aqgru>tVH&hg;_3 zf7N^(lHP=A1h%w};@f*;i?P=;F7=j`mA7pw0>pwh#L(0K0Ew-!+RrallRlc#=^ry8 zd<#(48ef5;^-|yM;XLK(cw3kw5VXimb6QLA5C%)9VEJzjN=6 zS%#T8Gy^e+MZ)?N-I^9sk`3-t=MM>~!Cd!g=y3{LDj`WC#E!=tDl(mB8r@5XDp3hb zYyDjAfA%nol<(wy7gN}!l_Aj?Q}49G1nmVfnt4H1Bz70JIVKVnog_C3qZtToy?RoR zun&RRfZVd3OsQZFHc zK+@LUt2n1x7i~p1*qc~izc`$^@FtO5&&#aUE3?{LDb&+RI@G&vNh&78*bFuUgyi}1 zc6@nNej?=tfl5tpCe!B1QszZbCZUATOM{k zIK~P@>P%XyQ!tC4=#LwCu?5d*WHUZlm8 zlL^R>W7FALb5m(fw=H{ven#A2ES$c@6XJXGOpzWk+CL(NDM1NQ{vA6fb8oHi-9rvN zp53}z=?%&f2;SRUemB8vXHeHb=S~W^{ews%EaedF*AJf>W8U(0O z2hAlHJyLYq-Y@?Eye{R6?RJp{W6_`Mxbj18vY~K*4>lNT+=AT#SSbn5W=b?H@0~s% zO{Y~EZUhv`O4ZS9{#rN}Ct_{Kp92=k{{X_JD=Jdybm^^1ZHWQIxhN>@eh!`f_{o%~ z%Bof!N()A2`k}Y!C)^Xy(;q=YW)tucYYO{_DJl`(F^ zkd{)f^0owoq<;uki{E?f4kN!0^X6Wt*K_o+(~znU)eDiMDG3_UrsY5acs%&UqvD)N z9caN0p)~LcmYrhdXKMl2Th2apU&Hn!W=QoKY}qt~ASf@Q<d)_-v>Z=E7FU9Y+wYPAw@r9xia@LHKsu+0ja>jZT3nyRh;NiMZ9K z-H0Ce50#`Xn#85mP^5;HrIr+sNjA2t{c)0oEqOybN|8I}S4A>RpiqLoiBZ#JfpKou z!;FB6kbHW_I+w$=QYFQoC4V;4ZWh$1-%!$mds~t)(JDPRE@d$prjivY-AZ=X0V3Ao z{l++Es^F;6*;GazlS)9lYFdI-s@sweW7`ucdAsD~Hfr-Axg1ARW(pT&B|c94{ji`h zkw4;csO9PKGm=zUi7K8h;u3@?DO!mn?cknmjnN!y@s`^TxQBvv4jUmm{{X*Zh01-;w9W*28UgEPgSRD3v;l*wUJ2U(7|0 z8w4ATfg_u8IKzWV2h^EP!dZ5+Pt9*Tm}9A0m8v0At(2)HC)A4`_vZ=OmSu9EI8$kL zXW`QwcT}iFWVW>V0Puaqu1+hAJ5 z_=(tq>^8!j3DRi}BA-!q15P;zISpuVls&b*KKJd13M^Keiir|cuVmb~2Pd9?-x*0N z-4L(wk=or^$+?P5I4VPNiqhPR`bt!6ZlZQ0elXt=xWnQ5bk`=h)J7gJmseq^f-R)| zug(>7zErJE%!-dnb*6Ij#JwRbFawCvLD9L{Cf+aaj}*#19xRH2QL%ORk~SDP4l~ovbD4jECqtoax6Sv*ld)`PfKoT33Xrq;aUAZOYkt4U0ouLS4CM&szVAEaSgTA z(nlm|7rF6;Zi&n66P=l;W@-cRTzO>+bSO63$!)zP5ppeaalemzE=i(AMQ1NOUqo~+ zVno&za2!pEAXt;gS(1Y_q~O;;{!8g1{~Upttsgw#+CUoQt<-7>^Iv@`yH^iQp;Jkc3xFM`iy3(4=kz5 zdug+3NLQpOR=H44-I5M1j40@t{{UI2dW6i1wRWc455{%I)7DGntMwCm1dAWj_Q8nR zwUyASROzuy3bHPkuC$P(k-z|V!tcY{EUHsAsa0uC$6IfPn`o<2TSz3^?|p~27-XCh zyv&)+6*kOP)Krp$*}}1H?l1dca5MOYHDU7S#ZR~XF zH}<~%aNQZ!W;nJarHA7w(n5kjDII{`*TNPd=AaZL4Hq&_avKPhHMAkHkb@yf1t*O+ z@B8D-xbp;1er4rEbn8*l2|~%;KTikxVQ#CF6(VD3jVQkmIn`lcf25?H?mOEaBxc#7 zvoaFiL!T&8rLoi}Vap~egP*c&|SRfEh_VKsd z3$<0L+|N*v2@SZ)owF!p{$RFggHEf} z>GS2K=U-uQaTl?QVSa>Yr> z2w@izSxM58vC3`*$I|#rq=Uf=37(Z(eG*-#LWsJ>C8ypik?943K+=)8xY9Wt@DjD1 zSgccwT(}%*OsP!H>m^qzBEcx*!MVi}u~y3zX4sCyv0;#fDdv^1N)!A?$8X;g*i`x~ z=bn~_oOMrs9@Vz@~bw&U-O)TvCh znJW)gXE?#0v?-?2kPwB~`bih&+h8?jhftAETW=}n657s*9c@8F!jBINQFa;+-K4Ptd^{zRBzxNt&B4$L_U!~L{#&UdF2?%{|lFj$I09)<0FJOr!0GRy-w+;mz=`5uZ zzFD%lL8KKgLPx981f<0*|?{R|pZi$v6q9i5~!;{%`xZ==_Bp>1$f0yZm)oS4-uAmy8Udoi*j_qj; ze3fFL@F8J)x~uJ|1F*#Hxh~Z{CefIa3Pm{%f)e{m>ID?~KsFm+oIU(hki=SqD6tkL zu=(ks2vOAE*kNW5Sr8#arYc)i2*GZpMIgB4&Bcnh+ZtD?XW0i9+?7L=s_#vV8iS=a z1incGeMTB7KMiS+B`RG?S|*oBQ<1a{A5S*HsvTOTFDAj2S6hELq}la0En|KUgNDW_ z;Za<5^0x|;`neeMUENIyriFGRRI*lDe=SXkp>b68!3>Z(iM_x-d_?5Jflka2sM64u zU`I(PZD;*Ojt{;mIj=a~x1v;9{eBRVpr3;qowklaxkPkk?2~sn( z$MV`5R09@D$UQets>5rGald11AEDG{M0u$$fi3w-4eGV@+UmFLF+CV?%{aqr0L;lP zF<7e0s>w=_;uP9Z$klzVbI-mr)8wtnN@GJPX)%&e+k<=9cEeV5lH6RlA8|`@=N}46 z5_bta-|2-24Yd(yQ$#H!+;|`DimMX6okH$xrqkcdvg!z`JkueT$`NbW6TR*9?}FKO zmkyknK*?@G^%SHg`whLh+Z*XgO!~5E@xoBK7b;i=_TYotk9s@UvMKqd@NFe-G6JzRMEYS5i4q^elHukAJQ9 z#Ox!~-~lpGIy8skAq~r6Ls#f*kUC)4TYh`vi;APnyK@+JdeS<2bm<8oY-}-sxkfz% z7Z5|pT9MO2f#BPb``{GFY)MU(=Wa3iLTa9w6J%B8bz`L^C`fNoLWd{4 z?~D|=(kcG{5$WyHm{U}xJ_-_tNJ&U1U6b7Ji|?|P9?bRf22flbB9`1PnE+`}bG5m~ zAvO4qn-qke5>4(tnA<*}?Ar9ye3P!Jo1JXfYZlvMwiBh)T$?SZw1XW|+au;u;)bO8 z0CIQljA(?|6KTo->?>8RMyEpyKuLC2qoOyp#^?V4#|_jOF{6ApL`FhYDmB!W^$Q(D zoxgtAMUh5@9)T4y`i@lHDsc;Ri}CtF@s8BA+N9*iT0w3+PMXxCWfFh6#dTf+WLep| zA;|F9A==858cfIU)KZ1YZT|px$69|y+C5^R;|YD(?C32mHz6kEsCeVHC$J?|Ak?Qg zmTb%FQnW7iQMJO4g?kHN^$y}g^XAl)!;*BPpoMhFu|AT1`|plyYj=NfS0Mtb0+MA+ zr%08hmZBj#TV+Toa`)fW&e$zQtG`I1w;9$Wlqiyikdv(`w{UH9?k|U*@Y^%;)0GIy zOQ=f9i)&Fjw(W6+G{aL_nk)%$lD0Zz@(L1?osS>W6b_^tjy405z}8xj-d~AFrSxjD z1KoKlT9bcr4Xi(G6kHc#S617xT#68Y657bUt;p?cb;>!Fv{J;W5Z+}?CqZ{XA!FX( z`@zcQV5Qd3$3?`)l^bP(ot6mTE5EidE<$hnfnJ-jIixjAlTvla%6*vx6)mLLw6AgF z9_BGM_aV%IIJWCIAOzp2i*RwF*GgiSlmgf!sFA*r@9+I^y(Xy=H8GiNRU^lyE##!B z#{f;q*aO?f956p!mS!6J8Y)$f!ZMuqXf7My0His@?ej;Wo37mYAY- zHgDltH>Dlt0{MO%v0$V6a zSyjtUYVIw#_ZUluOlFrk*VNkHNkx&RKfc3~aG2~j^FPE$+K`FtGBhyVwFVM-H@|#P z9hVZ^&NPZPVts@zqb{2v45`TIN|K+NNgSjr^;_Ezywj6v4`md^r&kR+N*8f) zq^x(;dyi~XGkfzX`Fk(?jCk_@01k9&Xt(*cJ9-t{-*Jp;>i+U(f+!N#8*mlhfQ>fLI$N}WKBy|w-9Q3plo%JMk#B!OLC)M)=$gWeLk5Mxe+bdgT zwp>6yl_f`;556pgwb(*x<05lAnTn3KqeXRz5Ym<%T7edGeL#Xa+hdOO`t$3|&?tr^ znG;3Umr%;AkOud##!3Yqvrn$n9+>JDfS|QD(YQwB0e<(sH9MvbV2?Gmt%uURMM=0S z_V*Zz<5nVA6Rn8FTBlTFW*8`!220LPNkl@40VrUBf6NDj`+Zos#{Vc!1$+r|=eGdXfidFP|F+tS@&GJq54WkmD7 z*Towo%b~rMr$&~ztxS~SQrc7qMw?gxaz*|5^L!VT6Dq=psx+EBSaiD&MG{ z-%JsZt3;~yN8!5;9VzNcS`#EVQ|Lh&(2?!i>yEUk)7ypk95^MH9C2FGqDt8cH@b-1 z-<&*0r?Vb%I@H*OqzxfyMV1B(wGounNQe;Jb%5rQEx7OJVUAV@rdHzWvhrd;DRxV* z6{g7!BFRvDSn%lvokRmVQ>{84k4v=bu_yT zl1FRYc*j}DbkG!1(uMs%6Ju|`^u}Y8RulwcFSj8TDAMBQ=#JGC zonRp<{)dNkgMTy?hT0^ov42G{4#H14EyN$XP#YTUPL zYGvS*GMLE;aT|pb`nTU5WwQ|xx^2b+QkAcz5L;4*3LskJ$vYejml{JA@4)Gj3Y~2m zNqC)38}DoOzrFpiS+z){No@_V9d#)QdPI-b@$r8c$(#8Kmr5Oh+NjK^$!)OYMMe&x zw;Aes!8haSY-m+_bsjxMpO8;YwG<@l^{9&*5#IN}N2*MW#>Hx>6)_;jONkNVt6Rpz z5a}Pp0T|<6Vtq-Z<`zC-s%wn}tuCc)sb=F%l6S>Z5#*7`Dl;Y}W*iCCnv>O9gmpF) z+*TE-C<^4I1C#f|Od5L%el$X-B)Fs%67U2mD&pg@_qjNsI}@w$@|N^eq_(K2Dg=72 zQ@!wwNy@dj%(qrV$L7=5Af<;2H5P!_gWLdi;~lpQO^2~FHauYFxYW6cOlZX#Q~A1- zZM}j|1L=VoeGKa^a)=C59@ub+?TK+l2 z=BHYx&8|tK)!I{~4y)zaN|ef6XqzNz0EJumP5$_NN&U!WwuZhXxl5~NXtOCVsh1Zu z33uaY>Ww~)u2tkcx z7H)V-fd>BoOJGmT`k+IxS9pMNK6=n_c_+gM3XwAB!3@MvfN1u_?Lz z6xv%bDMBObmg}kN$ZyhA6Z}MuN7n#U>=h1{qaj6-*mrd6HuvZ4d_#Zzs#G&pXr|L@ z@qY>t)>@x95VbaMZov9an{A5gDAOsGr$e#Qiy=umkgwYsGX5)Lt%T2mAjx!Px8U@c z^-qS<=Cq_V$|?$IwPC5HH|aOv*#7`bFy_|eRFvP#vZc7vh$$Aa9suVO3Vv^e@b@Y} zr^Ddb+7U!bvxyz<nr=+V}21;{|c(ZKY7(kqT0$ zH9=EJSxL5#qHX~s54PBI%k9(?LUPN3$_gwUZ3^3+$ko3d*jJVFZM5Y*rWX8=`E5!m zzLbG|N4D5xr%@qODU|68JvoXR3O<1 zN&&b%?oabzgejDa^GJ_VgsG7TDrsy5sXZ+w+i%6Y{{T#Ll2lias@a(HJGADryn#=3 zZd3g_qcFWe2Tha!{{W01ZnyYP!wQ4Y+AcGseoB?XM+AMm-wG^K;$*zdIl9W+tx;+U zCOp#Kr{X)O{WnPE2Y{e9JmCCDuov+7HzEH3Q>Z$%D#WDlJ?t&#oN--h;Zf`h7Ib=? zjY&{S97=ynm(n~Q;|(cljO7j5Yx0?f*lTAScS47~$Da62ro~~ZdJ7D&gqI2rL~eK6 z>TtJJjP&Y^hFfL8+b(I5AULFk!g&M@#v;qJ89=tOuTrPc+sZWrDhd}B3~B214y9aJ zB>4wx@7ojV9X>odTvyN^UE3|FDON&#TLgjpI6Fbj^l_J^B2?zwhaM>%R}IqP8x7BJ zafK68Dw?9&`b7yUO0-)^z4*haAXHI{uuU$rIt3Uh=!tp^iOOh|Nh-PtBHQn^zxRff zwESuP3XB%rh_QcKj-;f5ZY{R=w>a0DXf#^S!J0Kjffg~D1c`E6aosA^2_-~c+o<#7 z0wUMrSLu+PWiF-S#pEGszLJw;zZUoYnCDICm{0&G84acSGfl#2FC;Bm0a!gW>bMue zRbMmKX&J(s9muPlOhHqwG*ERRU5=}NOcJeDCQUAy5{U)X7=W6sz)( zdA112rofL>mLy7f$qh7}3vh*ni*5 zUvK!vYJ_K_XSx&@Tw#<*DqHUcy*uzP+V~?zrz)zpezo+h9N4MaM#N%~br^CpA-(25EYp&c%c%B%6C*az}i2MqA8q z8GfSF;?oY0RT-i+HU~C0y}aSVl~UOl0YQvFXIk|I^oAdf$+l6HgOwj+mC!_&oM2|M%2K5!5~gsi9c=~cgul4vecD2pY-mBnnl8rpl&|L11d4= zF6DNgrxqi)m4c?;9Ph_CV9aE~5$K%-3A$ZRsWbe*d}`LdZO7PSv?&uOXBe~PyysZ?C1q13IX z{$T}5j-_tPeTt2?KG^dD2#=MSb}U7$OR-T?z0W(I1}qq&%=+6@>q3iOjZS^#N@eHu zo{=cA(|$JI{`hNwKCv0eKZ&~R=x!%dN=t`WJ^i zzS!+fn_r1RVfjj8Ps}T#l96+M$w%fbz)pn&c#|^)GEv3 zLue{2EF=<;HUW12_yypie(({$h4&Jg6sg!I;(Zp}I#)5Yw2eFgAY zb@>?gU@Xy3X-T0fBFa?JI)MP(AHDJBofJlLLuJAqbf-d8t8KxzaDJF4c45;4#pIB0 zs0Cqupowv-G}(_O0V-#x$F(KE5-9WMwZ@tLe9{BH3lG`#VRVpn=xlnypbuta!iTf`!P~UywbpP=3C#i0`m8A}SRwtto8$?zq(1g$Z)SdciyE zJ@8%Dq!yi1dYY%U;03n5OHzB>dBE%H2E*CofLS$z{*gB>PYGO(r#=4zZN#O1g*3<<8oumN|+Zc+S${qJDtWB;5L4wlAoSVPi)rm(oyPs~3|QDd>>u3B8}@QE z$&Zacni$Y0I5g zLQv;VPVJMjk^cbVc^E=|SKwKl!BctKjAs^Gbx$i*LdTfgc6ewg&S^eRmTY)r1huvFU% zWJXq?+lJb7l#{_d_QJXb1Wex|e3^4qYQI%xJxeU14+OttvRoDo>g0Jic7<3$k!17Y0wIFwWBKP8u7pORD+6s0R*ja?OYy}Jw*ire!#y*D11@EVZncM0|u zz+Vc)IP0@rcDa}*{9vch>H3_dDWI_IbES8^j-zpVco?w4VwaSfX-*|dal{iQY8>?_ z{{ZBZ+v$YdsEAC|ntH0k@a46wq^-t=kWcXg{{XCF&lMmtyz?8aH7$Y^-&7~80sSD` zZ>~9tf&h`#jfmYUe0qWvRi{mlG78kB-3q^}-~RxtB2wouR?g1T>W_p(i6==@mjiU% zUi^J=JotNDVwD{fsd14B`ASrlTU()51o7hI7K$LJss!hh8ca8h+*ktJci(&*n9e+g z`wFSnE9Uy$CD`+5jlBGa-gBmxqkuvMwz9jAI7VE^6JbM$Ww5HG7|FYk$+FKHPW;=O z*pE1(yG*0EQDyW(L+zclw(!uQes}MLiBw8tUx`VUwr8RviVBc`q0k-m8+SOmy8YZw z)My!|mp%A2=bTAEYC#}|oGSqL3l_L10Bdy@4MHPIjUoQKx>_udNaXGA0N~r&_#*nL z4`z_44C*gBopy0UP#?p$HtmcPA*tNe^EE{|8M=JH;}*TzZ%GE=4bJ;o_wS0TsrgEq zQBjJYR;I;l{{WanazkJhN=PLqxFh}v!($qqW>klrW!TO)p)D4GK`OVb0ygIo%DSoR zr!7skc!)tGDJ@C0Pnz1HD z&2{Cpl{+3H+he8yNxgwL-o$TwQ?k`MJo+nBU48GLQZzKBsHiA}@~=Nrz9O?5sy`Ma z=Oa_nmo8*9T~REkjgxNw0MifI0d;zgYjx(`W+M?wN`h7ubNoJ=?YHla2%$+PM<`-E znyQ(u15=D6CFt_PwECMRut#Ei;B6|cSFTsygu{tt2u6or-sw+!W6#7<2ANu@&yFNk zrcF{zwwO9fZ|OR=wXKF~MqY4en23M8ohc33lI%lSkKuWq|UNm!#-%#h#*x7Xx$sPS`1i=-el!rjw8pTg|9UTB`|&(NdmK z^{-Gn00G?CkazL68d`?r8B9{@F&kvDWk#D7(v+<`f|Vn0J@0IK%5JdMTR(@i%o&PT zS@_Q#)Z&6}bq%ku;~VP}-D^07bM3x}|EPL{W-Z9NKV zosPi@ExC0C5y<*`<4juHuTe`she-KU4O-kjn_v6m4M*l6(jO>s$P!Wtt^6+!1Yi4O zwFXT(v6Q;%V$qycl*$!hvENc|dBRrTDwjCw1bgCS2=$0GM5xMb$30ymsa6AYg>iBA z!<`-K&1*giln97m(WkJOWX2;bXoar7J@iS(AfX|T5x$SMd` z_qX-O%(H-b9g7uobA%=b@blS-vF#G^J^ z%PpZPPLz6iQm?SWgbMw4CVca7;XZQE#ZdukgS@6EgKY$Hpb3LbQzwxkCc z4Hf!QR8q0PCy+4JJUIPHn(7iMQDd~EG}~Y(tv9-_?tJrz07F@fF$wLw(&SieOU;X> zP+ocEA+OBTmsO`>as`h!9^B$vM_kIhnbIY>1yGeBwuQ1T9QACij|aEk4^>pr^Bh?5 z7uH-i71de-0ZPbEeXcw4=L*v+E2cvH77Zx~h>0jzs5qbzq;^QP%7N}Z@vj~=J_xL} z_Zs2R<5J{FnJxJbCB`fneO{DU+tO{e*j+|m4%HJ-s8u8_g+0_^rrof&0Fn*P-}}A@ zRcjL~d0q`A_$g^K+&W%q;*_Zg0>uQ4`QO38m|0R+_<5NB06FohAMx7P+R}nIvC}{~L{+l+w zpaMqz1~p|&xV+C^%x$lr=%!TE!lW|kQGBFc>IYzchThn8&1#Pu;H<2<4u?#d+o>oY zGRf4+yR3KAJ05-T_>mVVE-p_#M*U?P8Uc%aWX0>FZVHpgJtsPjmu#2b_HEGKE^Cvh+GV9%59rAjFd%I@XeTC29lm z?dObrHI&_wJ{`wt!4s~QbiAdyKV7a(#r7x2$EW`Q%I4n~)_H&YXXCQv*qBzWSEW-j zijeFu^DZSyj<*}sqIur@eaQP`E3g*^G#b-2DSD+e8dF7DP=t|v)4}_LfvTrf!ZD4x~an3sAD!eK_XQ@*DWoeivrS&P*-02_@VtvLceE$F< zXD94K)h1Jy!_3X=%a#&Ls9`7a&vgOf{fQr30H#-_&0;gs5X$DXTw!4=NWI0uQg^o4 zqh@*Z+JD8m9%Cz&GAxwz=QhrzX#j3QM?3F)CT2>FC|BS=N{JHy5|l9HlzjK?;g4 zE)q37Nk0Do`WHCH?S8D@S)BV6vC*eywYh&8&iDWo|`q%md2bTXtR<#*G4iTVr+i&rYj?l&Qa z{$Hj#uC|-EbKNA19qc>vjjsvQejYIEZBKnHAh_5q@&WI^BikLJ?Z;LCf(#o|r>4J{ zkeLd7EW2XNTj^R&#mOMr#{6T3WTL}|MNKiujy{F00Jqe+Z$Y>=>;~5JY%D)nP|b{0 zq%kEL8%qqK8?9?m19XG6h_SPM#KT*2ywU+W0z8H z52-U&q~yqsGZ-nd_%FCsV21DdugNFaZHLNoXpyqIraFYh3%^n2IdiJq8~4K1N}we` zl@4nQ>6D+B3s!(qPQ+XN@q%qGES##N6}c_4%2GeeqgB=pWLdH(9X1uo%kKd#K`AZI+iPpoE1ldx2s| z!0GX--{fP+an>A?yCxxVC#nZKB%50jK*N%ZKoDFA&bOJxB~x5(1cu5>2yp8FD)znZ zQal^jVusZoEhWbmgoYC1MI}KXkPq>1-vuG$R@#9vRQVwj+by26ZKcu`U`PR7jrYJT z*%L53(V@por&@Kuq|1&{6l`}vz3uyBP31+nZvXT15w+HKmFOrCsqEchiBluG`hS;Xe~KTbuO>~D^LJh<8pD8lsTI-RHtecfYd_SEXHIIgry?F z8+NQ6YBtvUXi`7H^$UZ-ygZ3a-(SZO3aYe{vmZOJuaZ$l)R)3 zXi5)zCy%Z(B869-PZd}*7UskT90Y-G1&{Z{kN*JErgVQX=j_tL>B?>?V^fLHNKxS2 z@{&ETkD+PR_;d{FJFOK|-E%^C#Z(+sx3!4~q@=f4MlGNqX zCbqb41?!d-d!6saxWj#JqT>cLaN)NmG6zyeOKm7sc( zv$A}gWnuOs2L9wts%(0OV{(Tr($v{ON_-&f-G;z>VR$rhe1*WOJnXiX`T1}YvW2+z z`eBDPSE0iA!p&lv9WMvt=vPP7utK*{0BjBc=XI{S-5xamz|gtYQyhD;8C^8*^+=DS0M^muU|}itDnf&Ni~S&Mxa(?Y{g0 zeTA^ilL^J~Cg8)7&P(KKc`PcL>LfTCuqUZ~!200;W);hE$nhMIwtiOj-L$xXuhY2k zztaV&@+8j7@+17hqdb)9S{G#zf46)Nof4S!R-a3sA?4KNC!pF}7D`d1lC!?s3t||; zsQGqm%*@A;W~KAd@|3AG*l#Y9?34!^7W5>W6{K;8d6`-?Or=DX2T~^?t@Nm+E)p(M zq1^lV-y5WcB4tRF7>b1qwty_)zfmbSJ6wN#u%RzJ!I@T$(v%X?Jq;8)b*OmL+;-m= zIUgYMq;(2#U(V%0MJo z{@w83OqS%}s31pFePu{-Lh1*7Njx6^0BnCnfO5M6rAm^ft14Z9EC&+kB!ZP&*xut6 zT*RqE3*zW$>pA5VJk3H}Hq32IBKK1y-)nzi=LV>#ky1paUWk@Zlxk^8H_{c@+qL(`R_g+0k@1Oj zyww_YMdFB)(75Cw$INwf*1PPKn}1v_NUJc;VS1?*8XZe$5?VWvZT$azU=wIfjp-pVJDvazvQ9_U17Dq-kV2CDgV zy3YGn#z5t^Fv&&o?|lqegO6fF0>`{B+OUamu;s2EiDW5;YL zxCWJg2HuYNQmFirDK5x;*4LQ6Y%V$$2uK3tCr$V^#1XB$_EEJWrl@gLwpoCfvg4?y zLx_@;oxt5mKg;ip5}>0mG!q5%gqE!HC07bQK)%F#VM8#xJ=hWD&s%Yp9R;3|Q78xa zb#hbn!L&aDw?snRmSw4h1W9ox(v^+|!@qnxl72(U*UCP^RfVc%W^ryfiL9`zvXbVY z&XcgY+Wy!bEpE$w3sTfNdw>bGy|Jw^YLu$qR&!-h96?`5qz;z+oA16oveF-@$w~qf z6@IqXRBfd89q@v+733J|dycfqbT*cmd9rS@>N}qH`r)oCRP4U$B-7e4COAh}w!PGQ z*kN`xCVLDz^9n$Sk+E+7gZH32D(Ad zL07Tc3ehPsdI(&mLy}y4DP-L6ZaF*?&J|H=;#u;i23ng2m{?(zF%@2&ZIY`GBoY0= z!!&ArP3Ud@GRt8=XkqqLM^Ia0Mm)}$GF%C;mnsxj9YGAK3=0x`?{i~;xqmb}P@p0l zsSi=A^oM?4OnHdZm#jBieZolI`(nwBwc1M~f@nbbx~o>9(iwvlr?hI+X0)IjN$hnK zvHM_k8QBc62BT6_^#J>pkMf8sbenEg5;*rD;jXmX6R33;CbrewR+fc<)=t2WYj25$ zSId>UbQd0CM28TURub}DAwXY^Cz0D>i()I04f3Rzy0;~v+G6E|w%Z|2FJOR@m0!T~ zf?0LyWH@gv*3iSLbhflDMFQaVzc?9Ac5>Q@C2l)$skc-XLR&uLx%a?zQDVu=Zz@B} zau@+_M{zoVUH<@3@P4?!fC5P}&dttBtMRE5l!e{YDQ)^xSFrFowk1^-snQ>i+e_C3 zIelny&5{*jFWY=Pw_r#LEi~u>OTY4) z^MY93w{dd40YZH2AAS0Kr7-zh_fv^Nn<&tmTo5=m#uUq$QOf-|>kl;T%G@NKR@jSi zw{dJ6t3A{Ul@YN{juq32!C$Qnp4a64Z-tn&I&)4!QeAa~B&}g6RfhbZzBFTC#*C@3 zqI;#kOr}l^!;phHYtWY--%0WZf36MArcY($RHVRtnERfy$lYe!n|SarxTQyzP!y<; zn|b((>WNy)RssD;_dYT7Y&Y4hvkhwjXl>Oyzt&$j;nu*Ql4W2-Pqogb)($Y>#IE(56AMQjLxm37?=_my~bpn>uLD(wek%z^UWJsZo(^h4yJ5Q&o zLsa+YHrOsW+bFVHZr3h2cmmiD@b+CwxA7jEQf_*oP?W=nb#T>t1F}$6YhL{S083%Q zG^vyfzEZk-b*g1m;>}R4AUo9IIz|5gO|eMG`EE4}FG@^!>@v%wlG0EGf#i7ou}zg1 z&d6nAe)$-wluBFcbS2jaI~AtabL+PF#adz7Z9*KF<5X5rp-H(a)6M??d^EspM}+H^ zX{HUd5y&G88JbdsA=M4ZK~Be$k2&0ZO5##yir+$WZAe4QQj1_nXeQe2YaO}cj7t+r za%N$WsqnA6)o`7-HaJd{me`=J6#A5D)q<3z z)J9IEsYh~LQ0zu1j=)qViHXwc&drkLE{7zwQ*GXpvlP)vV+)Iw4S^=x4e+^~^UYT) zd{WBr5Vt3|2dUJlL;`JaTLfwwa7nkm93;+(PN+2>eP|VyOGkT+vFSh9pGNoJ#5r?1U97G zZ`Fo{RN_Gq+lPG$(r>76aJfS_WU8DVn84ippZtW)K-|O$Sik{{XEb;FI8X_r-TQ<(hD2aw0tK zF_Y?PS~`r}8=bjGJ_g>{NECq^D#fa{hG)`>HhKfwp!qi9-R^e97b=zKvqIyqW6oa4 zaAL6$a^=XZ$z+ENi5Ar7orc7FTNty`m1vPzr_!S|8p7~S@iJ2qWkh~gD3Rm5^MpE*Zc>EW*0$a8QIM$E z$X>#sI-CkjUxK+ZJc$xxs*v1y2~k#(;CTaBCfDD<;NT5?nxEjVJxQ&01hI(MO$s5hu73)&@6?kNCb0WK^H!G!K6y3DlVA^(IG)0z%DrF z3|taOibrZE(Bs2OpLH_S{+AY&by1)!1F-=A0AAQ$u25h$@m(>-BN9ng$q46yk`2ew z*kGL^Jb6DQ1f}Gl-5Sl51^f-|fpvy@S!vlZhs;!%K>2aNbw{!GA4~vE+`5n^nngN9 zoTVzEmckxd715|ga9s#jbv8Kre@s78GW{KBha5! zHY;*z^292Otm}RQ$^kC|ExJb^UPc!ku2iT}E0tPtl}<`qE0Gj{uu1+TiyQrMGB;|L z$T{Q>@e3kE71?!qMrEsIsR~F?5!KXXI!Ez0$Lw(`$TW=OT=;`BRHemP>Y)YoCrVud zZ9spv8@?Rpn7M*ZV4>z@NR}kaF2kuhy8x9P&{5zYrXA_>snp7iQj?davK)$ay!>kv zs{a7PtBc!wdbzg2i$*s*j9_HRW03T?l{#z*(Uk?tgDjvpx$L+S+eBN?5`2T$i~(w{ z!J~-Gr&8Vu3QE)J1IM;JXFC33qh*A{hQm!#n1MZAjMixoB}dh$hZ+b38-c$4&HR5%S6rTh zlN)XLjm&*03XbCaB_th*HrNakkAf?#rGNWFrM>W~Jq9#5QPRs{GD&OsPQVLnc=5(H z!K+4)!hl11bX!0hEFONC`Sb93m70_F33VkxFAKOKfe=$qGkGowMlIt%hIhXN^D3-B%SPb+a8*S zO*96WsM3-ar0k~<6y}?Eu4d2*>uqanIW zBs$}b^QY3A{{S_+pKM_?7;vdCM`p0}T3f7>(rJ67TkC^g51OW`wB)SAO=Z>?Na#%f zr70G$xZDzZ;agH8?8E8vnp2u)@T&|%7=vm!av`hX4ZV4>jsa5||i1>)teU7oJ z4lOg2BU`P;xoyG#mRF`a$Dv5lqp`Y1-uw}Xx+mrcGUZYz!Rp+W zpBk>_kz?gs4Y2nzkyA!RanfQ6f(E{WDb$@-+!A*u9C3v`lm=|5*3#BS`N|zhGngNk z^klF@sNUo#cel3w*aH1hotW~o!S+`jDrAQi^GZlTP&7US)-oRPw0wxoVN6 zZLoh>Bb%Nqf2Y0~re-Qq^2+1YsN$C5nmUr>DOxYMu_wp4!}N+&8MKC>zYUc#QNchaK(^G1C>$0-Y9B$kKiI=LlaQ z^+z;(tV+nJM{Oxvtet~uxxN1YelcXW`8P~O6g61kPO8O~OpjKUwqiz8X2sP22?KF^ z^NI#vOhC_Fpp`{%YjJ5H5|hsT{{XHgm2iouqkWX2eEs)Z~rSIf9k=Sf@GdGc{RS*m7y!0YO9 zRM;9W$`tB?Rkv~9_r@CZOv4_XHhn%zF`HW|D?#BtRnGY7k!m%1hEt`YtcMsd>*DZE~A&~m4!Z-jzd}l2~q-*r3G#P;X@K+ z$7f$4#lbf}5&C^za%M(~RI$`TnjqYR?bvw63b<-}w5OuB1lHGfo=CArAdUTx7;X8K zM}UXqC#IsvB&ce!QQYBJyjPxB?SPsRHRs-j`#ZDgtdyLarp7)GtwjyqAo55!u%XG zQrMkNr@FMNDw|!;Lf*G5JmRj+ryyN-f~c`2BEJ!}MoWSsRO8BEUs_Ld+?;r+%a)kQ zb(Wh;D|G2-a-QGx;H^HgAW$SqirR%u+x0cJbhWuZabbXvTy=E!8mOq2*z^(-X`JZ^m?_rKEk z>0G8pTP;L(V0Fho(OM6v9@oaYo?c*4T#q5PCAh;WQ%Vhbi2}(;Qv$E!138sm!%SZb^B9K51=!v3_~>_P{tO zOl7+y$$iSA9MjO0kP5+8#=~q>snBWpek#jo2@dWRxwno_j3G{&N2urNiHNovR7C*2 zT$_#g#cpFmz6(y$*64fz=&mlfJau&9@k=MQ$;p0i-RWk4SHQKlEcG<~&uJ zkSOeuSE5W}g86N>s(lvk(O9z72O3TJwmSSe%dwfGNUhF6EJ#wU$OS1-AX!%KpmxBd zX4Wb>)}fYaEGCo??@6gDY}nk`5!h|#4o*|*bZS_nM5(nVBSTYesUWK4l11%q_}sf9 z(fgT>xf|m#*JYC-3tH+Iy0I=L3|JL56P z>YA^SlU8kr><3k=KzfR}OgNf#LQo90xnW6Z1xI_SApZbtFG9=BIhLQM)2Bd|zPUt+ zP4b&|C(n#OE{_hc3P7mGW>P{znkr76JN6>S3Q-+tx~!N@MPaqvBq`(@0pnr-9x>SQ zk|-FNoLoVwzgwl&K3()Y#V#(AA7Li`4+DHtAxw!rjV0G4Ft$q}O*m2j)%5UtFWih*X-re8*?Kg1QR6hV zBlFU+WtHCM>h3SVy|5W^ATWkzH4^eIYM&G10^Fzu)a69<+beTWX+-P^-~;vN7R=Ww z4JC&~LAIPdB135dU_s<@+xp=SwU#Io#BQjJ2Qg%Xty#ROT97=G5Yvjic1+jqCtD zx91Wm)%vDpttE=YrwfcbbVqSkLN~Xhf62#66$UjdxiObtOv0e(Q^ea&_OS7B+Xvxg zskP}Y<~C5u7;!}|BqRi-L-}vWCwt>gHO7ouM$>@NE#8SSdFcJ_Q6^mPGu@%RGP!f4VOBNdVvZgZ@+_<2WRjjUD7ilvdahRd4 z41~9`g|-UgzWCO!X+%giAX@HFk?~_MOUt>2KT1><=?FyW zF12|TjDeS8RatNGY9dsW%BF;ZwWR+5{xg5n2XE_&zC3D5k7SjPvkqvg<{^=4l;||H zH1nUA*LBmNf;Zy|nKo?7E?k_&UYeMa%e_FYT%?b-!0s_-{{R!x>hvJw23nIH_QHY| z)s&D&1RnUA%UalzdC=XSP~ihc%F+hI?TqTyrD|wZqi_ouS(?Rtb02xsDNEMU8At}; z?PGCowj5wFHi?%cF)DLrI!RQHy2vOOiah^=6+f zINYTA-T_v)+QbpfxWmuSM|zhQl?iUD6s2nUhS>Cg4{`?h7x4WwwbZ7_tI}yxX2T_@ z>v^P=G<6WKrue5!Jw-4XOlDY8?39aHBNor4{6v-{Z~Baw)eyxJgRQw~d`56BX_Tu1 z0o^9R;=PyXG{XiXW2u^EDezcI=8mLrm-AqQZh zp5pxRY&m4wqk?rpH9fX^QGmE~sT!BgfC$^qj7KIfg~wL2P>;<>t7qvsMqN@=IL1riUtgnJ9d<5h-P~pe`~! z7v|*fP5%Ij_$gjg_9=2_>5&)cm_Ch~JeSK_4}*J-1ennhQvosJ!ELbRx%Y2e%!@A1C;kS07>74^w2cm(aMXOFp*JPL&}{lhFYH~0rAYZu_*m=G(R{m)eQtU@iLxmv;Ugat$$2d5sH5i#-NPa_d zbSW*owCqjJ)(2~0HU9wXD4-Hy{{V^kr!F_}S_B81T;;s_T8Q#>y0(giio%7+@qe}^ z)Y=txlS+)Zig}aN>*V;`6%V2TIN|`$pWswni<+kjmS3F~QE;WjDGFFmu)WC^ z@s01+VVY!lEC~ViI6|3Hl%SpVAQ50sfsd!!YMk`}^%%;iGVa=Kxi_}w>5Ninlz5*F zDp47U5+<}2X-YzLs@oEw;{h`QJd$-He7vHi=Eft{ANi`3cT24>mVkB*{U8zr?t6=z zFe0GMN~Yv?UQ6MJLlW9v?xRw71a}`zvD8I{PGOA6CHCdZbyjKBFJ7=cH`?I+Nc#+a zHJ0iKZMwS*xeUvBPN}65wH>xm9D!}^dt%J#uduG?l4C}X4vX<#bEyVAODPdsTS`h+ zyPaE}IK}RZ0tGpTT1-|F+=JDBU@oN#Uv05JudyL<6kDh@)k=!e+=i^3b_21v{=DM` zUd;1Q%kie_f~G)1QsFC0mmH*v+wY0yW07v<@c_IcP~U!QIetw!aFF9@Q3!QOx*Iq2 zpWE$)xb(;B6?Y{}3x%&jb)`W`bbb&Ejt@T6dW*4Kmkh&7 zTuPLHqDxEL({MfURwSCaHEK67w$WxphGaa{N6LLJ6q94yY#EJ5W@8X4&c7xs_E1or z7i|Xp^pk!4&9B=Yr_-L3o(8uJn5AhwRV3`4^nySZa3-xyrd{Pv?L2@HzwFj%y47VYHn0nR+meG z4_K6GB->JL&inh~df2l%$J8ZXjO=L%ol`6!=?dwzmQAhfM~iQKHc%?ciw-MtWR+8c zeFZd-0R#E2IXCl(eOd)>eA;A*Qe#MEs~GMrL6GvoT#1dX&=!EQk^$}x5n&=EDbl`8`Kge!1tdDPtwC4a03Cq(VB^EXaYB$`N@YRH z6V5JC6vx3K#?)sBGdW{xxrzN$oTnqf(CPNb`-<${mY z;5^FA%I0A?ek)TtsT!mfg{+Ww+-+~`hAMSRqH^kJ=!l=5k*O@YwE}>9o1N?jwi0AU zm60V$VY#i;D{@Mmc}ucVi*R)x`f$2!W)1r;4xxy-U4{`EMWE6{X2nBD`g`q(rg43P zlin%~pGA(U$BgvB%Du7FK5UcKa z0^P8*)?AMoQqwg~wJA-d?xT*~DzUbd_!j%%)kdoYthk7MH<#;5P^6@kpkHHiim)Du zA$~`St1@bo7;$IT9CkWX7MH^9tXqY4+p)yd%%$bYpNB<#op-v_fJs>=Ym#@x8d@Sx zp;MCrQ%*FSDbx{gKpbtx1urX5q0eHZDdI!LchZyI<8SMXtC;v@0*_+#LZKy>+npGR z5tafL1AePuB*vEQ1<4Q@Lb`7C97@T$Y=5P@V{ECfH=f?7p|;{EI1(c^tCectfp6c& zH6kTunFf5R6xV)P#VMeL4V+E6`u_lYXhPiN4n$gc%AIz*7CKyt%mg>BP7CW+*C+zk zwkdHH8ci*h5fHSVh;8H%bdl}j3VB`FCW9`b({4K31!#ShH|lJT>DzH_uv&|mnV8z2 zff;=SrpPW@%CWWfIG^Qie3iqkbjgl)nN*?IS%@W=G`oIVp`xO@9l^fW!>(VMN%_c< zq%C@0P0!3(Lw|k%KU@mV5~%sdjN0yTN4T`MzZE-F(xIUMK2OgokR}S zPT1JP)m2hmi(Hf)_1S<9!9TYa!Ag5AYEz4{8f8F}f7Fn7AmKsPV=5mbl`*BtGZ|rF z=&AJj(Ql>iiPdUQqgJYLr=ciy)CDCBEQF9rBEZ5LRu^n-5LY^g<> zDGHX?QfvB$P0&uJ!3M(qHsoQdW?-Pv^82kfDVZ{q z>Jg+bgB^YgAQY7=rPCGxJYUW2z8PdpeH7KILKKpKEVKT12iSwgIS$dMql#8YHJ=}}vSklI#9VYP|JBb~gFb+I$mBqdcy6!?#!#{;@k)K~)7 z++WX(GbWIL8N4~HHDXo+YTVzou0P`vs%*BpG9;y^A|xb+)|CEY)KBU+!N)!eFp zAyFdCXoW5G*=lheu9Ly@Y-%)kCSrsL{LLlRIN?NR+e=m}T#&CoJR4iT(+Y~MeC1_v zL?(y}w^hdrX29-3MleYDznYPnAW)~})>9Uw%8@Fx7i589wvY%1es7OiwmY!p#4+P4 zN+mO)hmdTNdHsBhBcrPU&m&_jFbVTs|%~>csShrM_Hx1?8s&;(B7n~;`(iU zBHy*~pL0fO{b~p?Up2*$oT}O>5#zlfQrlFQ6tEmZLFFd=9{Ae^pqi3PV7{kgs3Fp% zkT2MS++Zy?FgGVLwq`_-)N$(5AvR9lLFD3+ssxH_ja40LEb1cEUUma2C{S9vli+r- z#)8ba!jai8*gt0`D3uw}(zcjNWuaV?e@PxZ;WIo}9Hmf^TbCv?31vYkVM+-r2H=5z zV|!uchnZp|iBIZniiJ4OtMN%><5dk5dq6jw!d)xtgdthQ)CLCeu0V-18-6-F5+mrpV zT&hp-Jef%#e1sibk4&g$)zcq zqUH*8S63C{;f&#Y6v#pK8}q-60nT}TT^gSruNhKaq&s5zI)tSsPba{{F)<#-E+kgD zNmRMcOI**BmmWC$JhNrCh5rCCAI1LI;MD4h9i_#Q(o_0V)tKyZ*ssWU>2ZK^ zSxjYZ(Lj3Xu>LM=Kp0-k6bg)Qhf?dXWK(NTlxu0AG%efk0SBBf<_Z*{lq9)Ka`T#P zR@RcD?T6{H=HuH2@)zONtd~uUrre~}(%3FDAQ5FAM}mKBXFxzLE1ZyZi=PkWJ4>Y1 z6FQFl7DMl)Z#ui^coA?fwTRy1-<&&FTdHO{dQnYsQbQyaEE_fx<8foQF-tW{ZA8SF zsWm{i%WXZNDYPELYivF6{Y(ueEI9QCl+@MO5K;RXS)Ax}QVwLSs;C*KZl)oE22Dsn4QV@YwZ{zPazY(@NGSWy$M#YqJ=Y)V(fsdV-l zEJZUEfXc!BH`|_ZY$|Dtts#_z{M4V!2?EJ)as77s;#W?~)U--2%IdvP5(2}-?xB7! zY*bndN|1*xY*o5G*cr4WQIyB99TI6!n8Zxbl{BWlaaRvUBXy0AqHkcUjyX5OfQGfv zL(RG9P}DEE{ji?KT4}F{)8{Spr>iVDl2!UZ{X*V696d_R)IkwRfLM^G!b;m^I+UMt z*bF;`ua9Dfzj+d)u*p0Y2{LA@frA3uJFIAjVW%AH< zmVqt={*@?O^;_+X5HmaS^E8txEZR#YD{dQa4GUSd`i-b;N7Uh(k(YB-S1msLd3xVX zi>}B7EzbdZPQ>{a#Vx|>c_s)AbM{3(Gmp2{mm))~xvdINy6$_7Hbi2XR?EeSj){nn zoh3;k!B_Bh#F|ZBTyZi8i!JxqbD+1-g$)F3K)Bok-xR-xk;Ou;{F+F)wer{2#wHZH&H4wO4c1m@+(ouU0fqvfDX@^j%LlI;g4eUl3Gn9&Gt(ei}#Z-3HsY+27(yxASu}PQFW=zUs47l?x6B#Zd#nm4Q>YDU3UN*aG*q_2c1ckN+>Y16FS?jmP`TQT zA$3Wu%SzajNsQ3>cUx}WyK&?Z_rs-Yrwb-@&=7?7z zDWfz_ujWBOeYI1Nr4>tB(o&aGZ{Z{h;d?MDq@>4*3QLgbX;zllX~LDcr}b_P?f(Gf zgAn1ox(jiUB2Q69!DVDD@7&+|*+FsZg=lqqN`ZI>*fqj9+R1pNjz z(As*JO+`*jnUddivX=U){sMLu@;l;xKPOb4&Pk|G%ynsUngr9^O48aIMv<#YH7d0=G|A2arNb{5QiOtbCvEI6 zhISc*+ifz2QquL<6sFivG$aVj+bu;J#X-YIk4a^hV(yW5-w5YtnjRVKL&rX`t0 zGGn2=DJQbhMTo;)28h$tG)U*-|hAIg!~VLq=*s7Qe^$Wom{23Sgvm(<#w zP5oSBf|70`SZ^Z)X>_BO%Bjw=PJTKr;=$9a&Cb{R;cA60msOUu&yKp|g`z@(KcfEt z&Db0tOA#i@aShL68_92?BfGdeYwfX66F zk5va*YbLO`alv7`77~;MmX&(}Zq~;kIz!1@FChd2r_zu>`*Zie8kHKOQhHQ$%yEc1 zlKaY9?_v)d@qYMNlC0k{KAKA_r$`Tg9_j@p*1@&Ow%=PEC`BMO#|%f*Z%SCF=4mKs z$#wS;brP|q1Rbn9pRV{JQLEC|2`y$A{{SwYm5}gHrCW2&!NTk&Dy*qZN@?jcT5j&W zqW=Ka+wF`Mx>>1Z=A=4@x@FKA30OLo4+;eFiK$TClr^klpubm<1TC^;vTl~yknQy( zce%a3_#*gjomoR}w##fZ3fB`ftP17YA>#yj<2vqR+pXiF;yW_$)}5}a*c zFrvhD5n$h+r~Bipkfq71wN8?>ssVS>veuOg4T<(R6O?{lmWq6NGLtGXc}^#*+}^_1 zv+PZ4DnCl7_0V0A!BALBO0fq20A2C= z>Qyq2SyQqX4dgndw8Gmr(_nQAcH12t%<;OPD-uIeYAM)8ZNOXy#jk}1D>=Cn>Jh7O zgb41U=|SJqeU*Ry?Tn}iHf0F{H2gQo(yCQynUbpkpTxC<#&lfSBKIlZz5cs%ip6RJ zZpes+LpoUXI2EwHxc>m|_?vt_&h;8>zmTal8FZ&oR~Bn$-(;%a-xUX6i8&uL9mdv^ zZ9`SUu6f0o%K0+5H`y9P1`cAXM_Wluc@skPk_uD^=i40DPn$NcRi)G5z+nwJ{#@HZ zwXQ(+z6tz9dNnpG>go+4Erg}Spx;RcYk~c7G|TzSyI*<*NfO$fChoAbHl?7YTa=Oq zq}#dM-ws2zGUKyGCtZM^T+88q6=75-mXNeIQc+?ESmw&U_x`wT>n2R+BLx;&K?P)N z0LPk*RwHJeCDMb_dh1H<=}Au~+us7`R3oD*)GHC1RHZr(MW)CdMRv9%L%lH*Q6YIS zSL*Z;n(2|HtxQ2ef)?^`U`g9h0G&AZ0)bz5HC0PRi1ckBMe40Yt8LT=j0DOsqPd(Q z&8U<<)PxydD*Ics=-d!{+YZ@(I7iH;tm{oY!Xislb)ms)l=1-^TLqPX_{7Hl04~7J z(PzI6acVOpHe;xk)ZKy|PjA}`b$IDzq^3v8xH@Yt>lP$i&KJgGLo8gq0B!lS|yf--mUic z8{_oT#0Ar5wHxLN-zbo@uEymjbNk>WDZtBSBbF&)%_+FC1M7wl#KUvjj9V{7Qo&M4 z;Ep@vPD4=;Ut?EI5!zyLLn_pLD+$u-d=59p%2j%{)md?=usYB|2#|+Up*#No5LV}G zAE@Q#W@VW6lHvl8m6D@y2lD+ffxN=p7>&o55fH6#g(W1Uk$cEbvA=M8U}kWd-Cr%U zPNqz5HC95kq4v~DkOj{6I|IiZ@I8!yTb+|4H0^XZBdi~IAf0MefFO`;K(~xk<6Uiy zT$aUKRTmy|y-9S~(h^}$eoH7WI%c?3Rcmjk-s09jYy!?%!nK$XnnfO-h|HA${I>`x zC?j-RYhSV71?q@;CO~qBKBLod#UoRwRgRNjP5ISffs2BbQkixWicE22S=Aj%0VmW? zemTT&oetI6eK(5KIdfy}xWd#Els_ak%X&&NvBD^xFI1d@*ncC1V-`ldUc} zO$tQ0vQYMh3!9{Vj{g90{V|g))9JEma-_;zWv5g_CBi);PTEESB9B{}Pn^%pukhqH zLfbqlkRYC>~Si3E5hgnao+TrX|R){L;EbwSa`Q1@04j+?+E$lfT#u{fJz10@K{kQMSBOAb=1(Vv*(vm~q1TY18fa5)#`U_DPZxmNj#aigIwGU!us zU-cn=HyqVC{P#(YJg?56nghO z++Y?N3D=X9Qua5;%J3_hk_9qsgu4k2CFPjz=^!M7u^aDh#~(zcys)`!M0S@EPA#IA z)>{@v+>ZwzHqu1+`Nn&YS%lmr+^x9@B&Wav`(l9K;-->n3R5w9WN-?YEc|wG^r8hDGa$CWF<}NxYP;Qf%V2L!I&zdYYojpIxB4*FwONS{{ZEC zTO2c!lbLcQ5FT*E{cf3+~+QeY3PSd zh^=dyTqMcx0&T|t;y@k0o$zH;^hnGRR@S*vP^5%uMf6|ou=nQ;LWx6}LUHP=fz|>F zAG(4;7w~-Jo=>Jmg&wB-C*7AF3;d3&+R6uu^ZVZp?4bn;lNkR1xW8SMm>Q$h;LCbM zxRF6|mQqJj!8fo_!3?#W<>v2&uvG%HIZa7x<>w?_!5LQFD!92&J6i^k1@@`ZWT~R# zuacs&H&F0L{9P0}b z*^N^EAxBrr)fj?MSdpy?(3PZ;6~EUVGd%b6G}J|9a)f>sh6TF7AL8$a_}P+@=3{m= zs8S`kTqtv*(OOzpm00m?8=Dd$qbSoJQ(M_+QZJ+^Y;17linhc;v_}oZW@FbQWK=f} zav7Z41jbWxALiF_;A270?BGRt~Dtj)<;Z45 z=hQt>jJCsw5?VnZDJg9N#GR~fzAz@25{#!&BqcIHI@fESI0M`Mj1kO|mzV11w6KRE zwt#@AK|LjK2Z@whRTcRTnyqv2PscEexiG}x@S~N73ZU6_4 z+hKOEmf@D6xl52^6q1P{wR#-$a5lfbDHR#xDSBJ-Bw4kv;xu#*@g%3Qzc^g{ zPL~#c%QV)e9RX?uV32LSt&YQGsxhLna+*X6Ze>LEKI$6>NNEZL6K~Xi=LMtGr_>&K z+FNb7;w+S<(QQM@Zg(Ho+YA+Y97@F{!%k0CLs3&k;b7Zt*qEURZbmia7DSje7~@o&il*P093gHwX4cBC7D4?sJA>mCT5ItV>_j2NDb=Xo zeeG@S=Ga1$PIsjL06{84YO|xdKm+@Gj6Zxlr$nky>JlH01h_9~8rBVxdxMA&JrK4^ zighf%Km1JO=cfl5Z&B$b8bL~i!F!wFlqv+T@eH>RrsC43!)+-5>OpZL_d8r3e{2NJ zm8o#PAfxc&)X2^a5*q}lAP(s`@djl@+7pn~EonlQ7i*HFj^h2h{`jSUyFjQ|as_c! zS@PPWvlR3!IkBYF zY41AP(i0U;g0fY6Sb>Ke%*92@wG%PZ>ByK`aYjg4K9rP_k_P+g7)Gui?jr-_oX{k~qaPFIVH#vXnQU zP-LZ{tu75376$uv{{U||^-^Y1=_;QK{M!0wsL&v#!N}9^d_yi$Sc5B#brNUtkf`wy z5|<%K2?XCrQc90EzStE|tIT<38&epMD@B6VpH0Zx*FRqN+ng7oN2TT}(;qKW=)EIf zPvmuX_&U?`$f-&Q!X$#K$32UwyWt-AiYrPMaH8`<~c6No5VfjV_eKO}dM= z=TSPYpmzuRgX00!ld3XvfP3;I$a~cLp&)8VH@6qmF{ES1_aq#SLUSr~x`t&yjn}5e z(o&-0JqjI-#=x9ndRU7kr_f#urGA#%Nh(;sdu}nsxK-L`#FwbzD^sb{8!L?SnHN7$W)*h7aw!yIM|Bdd|=EzsMkO+!(V zy$J#E0l7Y%{G4cSr3DVmRFtJl2kEvc6pY18smFEdTpyZvHUsKPG$g2YQQ#4ea_DqI@=TzFO^^so zr8EdP+T40~_QwAJhdCOPNX-?7t2KF!xituGBAq%K2G#*VBa(PF!2bZ2$wQNlRu)X# zL9Ue2QBSELL#TBXaD7)vCdXF&kNw{arZY`G+{E3~6#_TC`{Hw6%DICp{9LEfY7JBm z&n-zr=M{FGYfZG>Cg@-7f8P#IKAIj_G2L<3T4-$R%h$g))ycphD+m#{7czWDtH@mq zsFXgMpOV(;bwnX!x=9$5Gf2%;>LTZtqegvpLL;FBB{tsMoBr7P9)*@@mHz;SOjjnA z%ucdHdiN zT!9Y1@m-pKT6}gw6tc@toh#CRmxK1e2i`Ci#AxxutCp1{SdparkN3l-N6Pc#sf^5p z{G8D7^an0b5^cTtzkE}43vo^|rWDUKm@FLl-O8oe}5a|F4k~T!(433C=Ms0KC$lx)h|HmI2>Z zDXumj=0W!Tn%5zE24u{XoaIt-uBK*3ZaCJXNu#)@1==HwO#sG+wCZkIY>gq!nYd`m7~EsrNE z{{Tiwt4OJw*GHvCg(6I(x`$j#4qcKje_i(6ayP^E2Qo1OJJl&NT@aahi`^*!qPy>Z ze;5wM4>TjNp~}-zo0iI*>DZyQexc-pu{dU4Y>gM;BUyQd(H+SHPOW2W8;!dRO`l6m zLv=49Z9Gkq5H;K%``ZaQj*&W{5+Y$nl$TKQZUf4=M+B7n;nl3sgDwC>)li=sF{neU zPKuU7%PRqTO1q2y0L~6m==okRMYO|)r;xw(2)fjMr<{IArRCVJG#-YTE*8L8Sk$gL zWtqe4VQ@*68#1CvoHfta+lSV9hj))GgOG?{pLsh!T9TlW*gY-SWY&25p z)hJYbQa)ayf_hFg*wXM&9C$bLg=9;CHafmeY9zr(0S=XV(6BcI@;#0B#yHhiUa3lf z5$2IpC?yUp7f2(5dlQDE{Y7vm^%1%qKjTQBE#}Pj-0HIxZ2B5WO{`blN3g+s>rj6) z*8>gCRU#VFQl)A2IFym;zhH0960;K@FGYmR*&S)icsV85?UQSH$D=BIIFMjB4rI8> zl26R7cPT0WSohKZzmIG=K*Sj}Q*qd$nM$BHPe4m6WvxhBmAM0L{{W}&fYDuXxXYCD z$d2lLNO2B^))m=S1YZMcbQMf^3DVwN(0?gu1ZV?sYjfLe_`|DNZY5r(+}Ds(C#I0L z!bR6^YvjQd5AB{<;B`rlog+axn0Ho>tAos>`Om+k%G{lm&+}#YX{Wj7# zBi`KO`89@K$k3M&F0=WCxh@@*tQ!(>mBtjBdXkd4E-gSU3vlT|JKK&%E8>MQy*49; zTg%CAmi1mlwY?v!sfDn0fP0O$x3I@jm{F?^GQwlUb$+rCkb+76B0ccKk?R!5IXqIO zj)ESPP{zAz2kYYjGhSgtT-c~;j@yt@o|7wEM((Rt>A&{G7RfL#3=KYPGeLF8!MTOY zp-M`%1dG^`M{H+ybZP$p4#tV5_suv!M`P)PKJ3-5;wte{(y8e|DGX|tb?p+zLEYEp&LJlm6x z5FxHjRJ|d<<%g%HcDVas)oP6rhmy*tN^|iyoJi|NbJ5PCk`IyF9;ofgedi+5p}za+ zMxut%sai?r+wYAoM!Q^WX1N(=W;YQQGb@l=d<27Wdw@8%oN8hlS%NuspDlVDNcqC* zfKwMF8xK44j|^q#sY;hIFF8~|*=pP{ZT&vD^-N|x9qN-MsT$-lqjdhQCgT22zA+YG zqcl;kCOMe~oZrM5YM@nAxU2*KrCoXjhSygftT;ofw*oTh^Av$3i?mo(!v6sO0H3}x z)7hufBfmANZM?V8l&&FFm23Y14}*Mq%FCi;kj zUm{?uRBLl;Xp)p_ zMSX3*E*pqaQMz;`#eR}O1AF7PP_H=dYGyrU38XU`%&ATxMGk!rY;B7Yt1_^dl@^N- z5`wh02qxiI2IFt04!cQ)rde4MB&Y#(xh+i}?U+qZ0Etga0+D=^9+FwL9i<2Q)(2)s*)Uih7$293JJRH&8~f3FsY43JM2~gPSNXel9=g z#F$j7b7~WlN~fiyu%I3qtc2UPtMl)MIK5Zk)96vwxa}k;KI0_a7x8ia!ws1(h{RbE z+n%Q9A*%#>Y`J3-vu2o8$e4cLRLLiJDdHnG0wGG?HYA0bmhi&48_^RDP>6p{rB&H z1LbiQlw(PPrtMO%9Z3$i7FM9W!B>0f=Zr1piXD2fmnFo2fu0vd-)f( zH7<`&Zl0!EWhJ)~I)Tx_w*LUWG9swN1u+ggfr!i`q_mI#bKckI>5TbuBLXT|V{09O zJ|NVetybt1=Aaa?+?z=Zyi%fzTT;H5?Cn0T{{X{0YG}J2KU1a9t=RsaUWO7JnGGqt-?aL0{;N-fw_K5$jW9t zNr@?0TGW-?sMxDwNE>60iHy)BNTRm=N%+R)g*bYoUx1Q#J~1*&-I>ZY5yoCymkkV+ zKBr?=XKZpaq_?9I%t;TGjMb8te=$TECOieyYooL=d73wM+ z>;XIf0DO0DnIeeOlNg%p7nK|;Oh;HZ2~h3<*;t2U?~GCEx!I_*-YgE}vq_(z8XhPC|G?Dy9{++yUj7)^RgD$sGb%qDxa$ODd z+i}9QEhAztVZU)~XpHqe>Z)R)^`=9Pbe6R*(o{yk|olU zAx>136m>F?R+V33PmC^7DBp;~a-~;s@gahj8jz5nQb%GuZh63Xl@FfH(DM5+V!?w` zk{o5`6=u*AzpQ!o2knB@hUY-e6(3fvKG{Z_-FvChOQL@?y~ zjOv{^6sRHQwRHn;Ib<%|ohsw{<9$~!u{})D>JF-wCT|qLKd1||%)Vzd{Hodp!5dDO6Qvm>< zVH%Y>JRFe3x_VO74Qg%1m2x%jrB}VVx9^CKdY~m)GBn5P6>2SdI*W*t4d2RHJA^D- zd{U|vDx&h$R*mzK+lUKgrLv>31RL0$xWFlKo~Y2IFp}hl^d(3rQCff_a6#JGz9$3Z zrV_Wv1{?JVu9%I~<2xiJy)UgA3biC3(oZ|?FdfJeBjzDDFfG|^wCcKyDQQS5(n3@c zd=rj!XfMypA1X^mrxnrCQtpBlk`$77J*~09dC@9z(M^+4i6y_A8j#zFR_FMK(*FQ_ z9gp(<=Q4dyGHdkec0{C98K}0m1BDK@rFw#Ix>7H_yNo#H%B&Vlx}y%ZVoZpp++_yk zO6_b;S4xL2tuYhc|p(_%}dQkZEl)?+Qi#dWnL=;SKr z+Z@U@@WfTN>?s~pYK1%UnoCbIzMJvx0gZ4%6!WgfVh4IzZ{+e!dB5}-&n?YYOxQCxXhu3P3< zau8`9FhD6ncq&b~PoDVt7bwJ%ifUp6y6arKDaGvN_zAyn0{C3Z@B*fGdnSDU0G%l7 zs^;mlkl)D8VbFo8yA>ddo)2@z1vx#m)0Dyk>!|D&OR7phw;4M3a{!R5DB=%#bS))Rm%Yn!AK|-2VXM``{Ex zbm=4nfTZjW++#|idXsO6?4?$zwe}&?nP#g_4!(5tLT~cs z+}o4=vF#KpjT$osuFKVEjlPt&rovBC!MBU|HaJ>Yn3v_QDg%!MlH#2wZLg<({{UPX zk?|in?A7Pd<}`#xWK)~4L#>U# z@~<2B!H3#!uHxHCx!&WDJpDZ2EA;^yLL!*%KJ(t!)yI<^TuVA<$p8Cqp9f(DWrwABdF=zZF_U?;~Q&n6-SVr zEtv>$t2&hu5(j}|1;=a&q(bXuH)?JzXm!U43)FRK2jBZ*=%4jSug8+hNzU}DCP$4& zs5d?;;<6FdN_vQ0fF5=`afFx?sWNj_QcPFYY41K1-%$ktCf6hB-x%w&X|8-FdEl0t zmXuyPob?j1+>aOqNT4}c%gv&sme_g3{&P`RWCW9Y0-f!K)OuqAHihNZq}1yRro&1e zra0n~Uvw3fg!UKz0KWL1S1GZw&Tko#5n9&Lf+aV5mjZ==BHg*grVI!%Y2|IU0vSez zig&gFy5%;m+-fveS`~pXy(A$%zLmS1UlB~dE_p0y2!_OkR3otMLDe+!Mz$SDwwwO| zHupbFUnyByp!Py)Q`L4=A=ZL|kZy!1jzPZo`BJ@<>(Hu(N-C2Zqx{fPfH%5tdtd4M zVf!Ui>ZqgDA~LxKnEiunI(;cnAE`Xs?Tt-|SvIjC*&Ln;WT^Z-dHBt`W~2jw9%7NXlMk6UKPk+$RC9cE_w%_rf!ND6J&pFv6=c<`k2 zWS`>kgRwIs?4k&g%y_z+^tkS#gr}QWjgBL$1ki7zZerb==w$WE0l057OQNm9ED zcD^^wiyQnf)F^3erIe7BHgz9;&wLQh)pI$>)djx-T{s|apFkh^5_q;2a;0(|aZj@! z{{Y@8W$+(UNhnHEc{;fMxFK6!z_}nsp|WBrZiKjiY#U$k8*Df4hWAv=yu2C=GTQ(G zgj;r(Za$d(r%)qhDotH=7ruHFm6epbwH^NehR4s-3vSPs7NbpSX{I$zm{ik6l6936 za0%d%$JYqpH=UHR?DZ2Y)+!XI=B4ozp+l&{DF81?vEPgLz79ZpG0~{?RuCPY*;)Be zmjF{&;2ZPx7}-pm!veDr#^rp%)=;JvY=1!YC)(%E6>3k`sf4aHm(x#l00V~ZC&*6x z{cnOcVdO;`!nBI^W{;Q2aYfHsij=E`D}DvNu&~Z;do^a4V@yMWa~J8f95&K>cHbYd zE6-FXqK`(8B2iB7A%B*%0CzV%{jgzl*soLMJ=P;G5Bq_vtMfmp^(&QSY5$DrqU+Odz+sq`dUH9j6apMD8ky2ao7^umU zJ*O5|)_IT7ek^=q#wOEV%MCaj)}*vI3IRyC=GVY-6af^IBDA>?Gc?3PgC!Ch4(XPM z0+8!ReMvU}_U(rHW?pr2oq*KWP|FH7OO1^{b_AX9zg>!|T}ZB*9YNZPzz-q4Iu*T? zNF1B_!2~@wFR=}kE=0HH73!M16s1=low(;56-hdeVGKgt=DJKIOP0Es1-8~w3m~8< z1GcLj&I7vJ(n=9ahEo|JmMonr7VrN6tPz09=esS}9kh7&LJ*}BbKL#0`zJF+q@{4$ zN}ijf6eXc^>~O3bz$X$2nIPq~*BW6}H)cf)$kgaiw_3-Adtug8N@ZHN9+b)%ai&~J zbpd~%4}Yh=I>W6uA0|bqOp4=CTu2L1P5ngMe*XZ|43yZ^<?y}}A+iT+;7(n7w;G1USuTlaTcrt3f)=!kjY9pl z!OY8;D6lf~awkcS?1$D{OKMO$&A0>37iVTS6Aq3e#6Kp}1uiACWv75FJBtic8FyZY z7=U>Q)hcMrN@6UB6&|45fVL8#0vk}V_c!mh3Oxrd5EQ+)s)J%PJ#8rKBY7Yx9hcQ{Vpp5UEq7G}}r*OKN=Bw4vL^jj}2omg?_T;{=G6iAO#fjC7;$K6bCbojg$o?Rsz&L)FS8=-J zg=MAEsnRM;A&2TxncR1W|i_TtyZHx%5N^APeD z(i&ceNpNdQZF_({u`QxgGh-9zm1%9V{WXPk6#6fztL_N;9k#_{bxm&NiM0snVr18 z6!>)MP~3nO52UkZK>-W6-&WYwGO<#s=W3G;Q(cV?B2w8dFHcc+xgZ-{dyHbN#hfY8 z)Z=K6DNYL|!+k(;YaA{h!|#%$rld_0UY4cAmX}*lX!_bab+6?29@r-CW%+g42nlQ? z6(j-u@G%*Fu=ZMRQ;jqdIcYB5$ItDB%DifeQKPXFpkz4mQj)*))BgbEdt#&`Fu!3+ z3TIr_>+Q*=)nAMpkhcgCT=fM4Hdfnv?nW>%2>v2!QXZ1byIF&Mk#yLBZWD+6w-#J# z${}V5@nk8631RkkL&yXJvGJ)q`Nka2Pj(dO@+s{HB0k_qKvlW~oxa#|=JgUfb7K&5 z09;c~l*E_BrCU^0uTox5e%oQ19QP)QW|r7Vikq~ws>(+E8}p6L(NR%&OP3*~h{_-& z4TZam0fh~w^NgmF`q@ir8q%9-Ad_vz;`TUT1LL9W;f$%jsOgv5O+Gt`Ot)%EVCm9S z6tFuR*k2W#n<|uwOR}Z8(tU4PY^h)qzT0@jX`>PzU}>flua|J7yc#wl=V5;17K2V| zJ!+jH5YP~&!RsRFS3DoK_uC$RSFc2SuOn2p>3tWUb#dc_AgCxSNw>d`d_(G}hVFez zBtGM@)O9e^Zt6r zVb7OALrx)p9Uu*b&iHIEr$Dn6)tjGC3rr*ARMbiC$BS=MDA_0KF^)|=hY(curyEU( zP)&~8<1`22R2ox@lH^%7{KmS1BxC8=0DI4?N;sMx>+*YTt3=&N(V8 zrmqy!8bgm2=t5WMN%lV1^MjD-$V8i#)UA6fYo_=+Nu)+rXEGmfF%CLPuh@U@4{3B@ zdJ1lSy7DQ`B_~4@5ZF|R$XQcqxZHznvDT9&p7+EkvYtqb7EPIOt#(OQAw##Y$Mq^@ zN~iIb6i=9HeJB&uLR(6bmhHEwr0?yAiuc1KD5>fs#uEBSEhbt?O~KW%0^@&dNzp+a zm{&1Ah|Tge)@o{$%ZONY76oF;K^)lPPn=nDu}7#!VV7mT6@3U%0>iL4V5jBW^zLH} z$%{n!9-6wcnwYY*EFG+ZfqX5^YNFjT*xLX|Gkn%jQl5aD_1Gy>E&xJ-2I=DuGAk6JxA7+TCS+Y-|u=2IdoE(Ml!YAaAX@%1;v^k!;2 zi;yYoKB`Ry5JZ>YmR1xL*HJpUfbX~b^MG~OklK1(YAT$Zmz@bIRe@`5y}-t&;tJe| zG8;p&*$PN$4m>aF>;^T*p*=c7l!UFa$_V+FQ@T=b$2jUJYT#B{xPwTJ)mmVFQBjVM z^_ytwDnIdpvs6t-yjf%yuI+7O7&CtkgVt8fR4Vc#dfk1CfXnKIgr zjp=9P>?`1|&*_IW7fCK_n?j8-kmEzA3ew!nqkSG9@7_L_=jwscq@#pmG&{ z{{Y_$)VWb)y&^m+iaLZ=QV5oz~BRzY=csiCPV17Hod7V(U9w`uLfm+}$Y z3rdMoXbDK$eZ9T$f%=<{mTE7dN@+Js$*{Uj@3Wii0Bvum!!y|IkV`fvc`_xroa!XBJz@Pf);E}>~UtdgKFC$tM2*tMwko4D~oso~O3-loYsDG)Hv+6oPgiOJQz%6Jg4< zM;9Fhw7S~jfB+!bK!dgWV}@0|OamGEmIk9om6n>AkhT`0QnaO38oXb=_*Sga*_%t1 z5pTNad6I=$M36Y!?}geGc)~AH+NiiAOd-U!{{XFhZ{pM9=bRXFY$z2blH%mdlIXJH zq06a09NJ~ufSB!xemk`rOdGx@tLNfEpTYch_{fojn}O`t>BDF zrmC79nEW`wFMP6BpE5urLLd|KfLqvF z5-oA>$ntQmYE@-aBde?y*j3&IpcSXsgM3kDM3qsA9$XO_=7G8p;;pXZpSBk3S!TNf zC)6dtTq#omf{=wWogpLjTY_<&efdkaK?qV-?qZzkl#=X5g_=sumZCqtG0n?WR;o{> zf`=j%74+OuLXuB5+QfbFzbnnA#%+*g1|LH{r2(gn$prVoI;LVyVb@HE&&@?jLSK<` zk@m+o!LBG9c_itS%<6MgaVWuYQvw&MK&czv)+3JG;O<;;x-CLvWz18ICdopb{W`C0 zy{(PxWm;S+nk1$;4%*#C0d*Vgy}zz7E^RSXN8>Q+o~a^Jj7biqB`uHCllL9*M{UO^ z3|f#(Z2V#qu@@B&rN4?DftRxOqnf$?$=2?_x|`_){3LC!Z9Z1Oxu|2@mo@9 zty6_D@>}W_N}K^++kv-y9Lp*R2vH>{(h!8DAX?toU8_{-q1R%|l$KY$w%cyky|0aV zW}x)U#}boGkF0UofcjkoW=Zx}N<3ri+2Z3{+_q>Egid*N#?Wj0<-Q!+ax zy$w1-;}z*B)4x*P&i??@2!z*UnWw3A25Y%`GHQ%yZ3j{sONv62PjUel`|a(H^yO7D zmRm%8vc)Aa3xU~D-jBPfy_dMLxa@zXJvUTX>q(kSMp`#z=WXjxkT1Bv;aY)IjO2!8 zKGGDTfut0dHva&=G2b%MXIhJytrdEw#Clak%u88+LY!(OcS$`!KZqXQIKXG1y-}E@ zJ1xeNg_H8?UX-`L@RA1o@8=IR)>61(&{VxI6rh`205%_7FHfYytkY^ssiRVN1SAo- z8xik{e%dr;h98Z>$%Q3KiBon$%3W7UDGSm9g@L&PW4Ac*5}xYwEcfa&({>4MQHq9@ z0y)1wd>W;pF8n{Ew9{G?m`D;*r5hC`J1l#i_|Fm&Tg);7-Alpd!#;OMr7@jMa27%rf+5i*6;N zq@|BazotK;Jc{l>YAer1M1-%T%I|d>_8|AhR$J+pXa1q${0AK`xTc$mfEJ~jZ@(Au zgLO)Dc|}rM=>i+vp!;ln@IHMiJgyp=R<8WmO_c# z**3ZJjO;(78~H_uln|}?x{jt7v70SFPW6qH4QOm(#Ao_t8 zapbyR85 zU~7uwZ^a5ak`0%C``-Ym^60dhjFS8XuD0ueV67zRMeH{0J+R$2aEBPX(OI~)l6O1( z?fYXsddld7@a>A=A(`(XD=D?yUiTx-y@neL7Cn;9@ihq4m{h!$A|peJd3w081n>Q@ ztwe_>C^TTAK~P)T)LxKOG@eH1Z|Q}YHM-RHONwdMhO4IL!5abl*zt`M*{ML3)k;bc zQCgVL;un8NCz0+xn5j@X2^KC4&5)mdy(V^AE=y&lC2q%%HcElHDFe@(9d5Bgaj1?v zHI`j0-EF#)sU)4nt=kOo-DfX+E2+tTJXdN`+6|?&8-~Z9t`VYAX^hhxuggl7n9Zb> zI)JAye*SRFlEDOj;swHP;dl?j4_X>fxULO%Cgaq7zqT|YnNE)*<`W@txg;5( znN(4pB{Nu!ofvOrGEt?MI!Zf#Hst$bW6{k%i9N$3 z=ITpIkr(qfHsk?+rvBJorKti`SKM{gKc{=EU~k7bpX4Yta+pw#!BV5UNU9*_7Ml5# zxY{ADqHMI2y}if2FO0!uS#hZp*Bfyzq%BD*9=|;I!Vk;GsaIH)H7PGf2S7WJFS)V) z;{vKVf^;mx>}pL)JU)|UWhzKeT8|e`I)0dcM>!>{12Ilz=${nbmjPxpbR|D9*&@YP zy|nRxncAferr@WEYo?Xi?Pb7|s@4{_9&y$LDzg6o6RZZ?ExV;p6*x5OzaV{anaX`G zvbv1N*yzuK&f0~N^2o3rf1#N3v&wNQJ$V2rQPqQvODuX|k?^fYNTd*9AGn(#TR%>pL6*1go z?(>0KYzlVVkz<9+yFS7;Fcn1OMUg%=DX34%I+{|^(^57G)#(6ScG#SFgBeoOHfk7k znaX{@gzE`L+-<%JNy~K?sGSz3xe4Y;yZbn`f^IiI*90N5m^o4-Q(byIwiKl}^DPTI zsM`MD*Af{6pN!Fva_1H#vzKzz#5-F{FF3`P>it@G-u~mx0p!?gq~w7S*Gkg#mn5Y` zT}sq$N%Mf!nKb!1ji@Xn&yJ^pCM~4sDM9n^iwzSkMQ@;oC49_4M@0@B?f1jyW?W%f zCIACmh(?VoHfO4kko2g?jIfeWYzlWCdAa_WZ(SwUAfh7WtznW2eQ#Ejj==UO75d&^ zr#Y5nw*(4u*hSLg00k?1+J~Rn1=g!? zyHDw?b!?&O3E4^<4efkYDfG$J+<@zIB(pYHTI4iTtxlrk`Y+sZvDhop!oV;3nXX$8K>&U>w{+O?Q!cn59k249~jIlGU7LgKtk^*VK3hUe1UX()PJL=szZL%`r;OA;bC zOOrLHK54eWE(Tjt&(Nof{jmqke^^gMMaGx=Bf6^&)e_|C4KkN(7NC_~DY4qv{;JQE z^$FRDKz&^zl%ZzfB#+hLpS}^YJvy;fn)Q7Y`6;J6cH_F>I&OIh7$G{SX*D-tDKD8S zACTEa!`FFA`4V_YlSL&!4^!h>ujq@`rFPL)A%iJSdjv9i+;tk0Z`2@)ksw z2m(#(tkQEWNt#odr8v{cSSh#-fOp^ca1FeHoR7ppibh~&R$5tt!v6p)G^;xxr+_!(-v)Ba%$l>VxzmWrP%CWmliS}E{{V?7J}@p2PhzHw z)k3Txnw>wW$+tpFRv}{D{9t_Vo0&>|i3)LsTw1lZgQWiWuja`uDlB9;rWUjnDU^k7 zv2J|r;@FAiB(0f=l+%igFJgdf4gK$l;mQdXD96qT;EjI|oNg^m*(^HeLON2>Q-{=b z9V6I~c^LYZBLx(MA>B$*0>pEVit?3xyruC7PB4{Qq`ulqtdG!z6MbMC+>X}A+*B!W z>vZ^%<7@dxk*&Q#%CY{~KafeOjnsnzPh;gF$(;nOx|aP+@)iF8zkGa^@drD~U&Pu( zc=X5Kk0W;^1l$eCDdXE8b5&xq_#CH6xJxHaf)Z7>K0vLp35CaDT{}3iwo`kQZb=vW z;V{yYPh+YUZbh}Sw&kdy3eu~QZNhP}3@uShjkx1WQdAXg6g%G<2MV7U z@+9j1Ut#RF^r)4FlrE&Ypx&MNPi{M6f&LGe?sthTiBhD@an&7Q^jc*pR`%1$x12Rp zDeu#Q8k zzO(X?sYoQ;pb|;2?Y^(psT zI?ylNtNz;xwVIVP@E=^J+GP%vS<|Oj19BC~!#+mIn6aD?EuwDm+z{$STz77rKv-dk?NABA)WXG zs1F`7vNb{I3tLKZQ_&4NFOreZJwftCj0x}eeh1TCTu*_9jP@2>Mt}>(+*gb?Z*Cn?SnPg z4?@ZlsxupYeNEQMLkuTUu141LfrtTBD8|QNXo_wQsaivCJGH{eDhJ$ed@SY;yc)c9 z%rc$S_ODyTMC#ykxc#xKBhYgk{K3$y$YLDUEVh~rf}JWC9r+#cR{sD5LvT2{%EeLj z8z}IEkG3wrDd~ueNSU&wB9S7UDQkK!%(&6ITv!e!`*C~N;(3@e2jCE4N1Yv}Aw4k1 zeQHT1ARh@A0Qtt8!9Zg!)ge0_r7E6+Tm01(sUYudMBdip3lg&}CQrqQ6!|bE)nLYi z)1gtCE~!f@u?n{2_ulw?XJ)W2NzjP+jLgCtbW>3432`Kdu2{5f#g0FYZe^UV+hGUvq_ z?KZIG4XE&?wzkTgQ_CqQ#kt=NF>`#$$bC|2Y_b|bC~!VjSLBNUjw{RgR7!4V%SI(^ z*uK{5LaomC{@4!_FHfjTOgcqDQj~y0fkYwFZLz-vK6b?!vDYSHjfb7qZ_+p9 z@O$vsbh&B`#kWutxV3^w_tnlE>5=~c4U~x5btm{iH`~qvXKLgce0eW6rqGreD|D*X zJ9hW>!xSWnG8+8e&?%GBbpYNrVISU`hHiprGh*1DZt z_DD$W~XJ(7EGhN)sW%TG>hrKXC)77oJK{a*M|N}Wuq zS|%Uh|5B*yQtf6c2@of!(}!S zYSqx{eu{(`fVRF;OMB zQQ4T1OKD+t^qxT^bAr^Ufru>8D=?dm!)<;M|RRDM$${tonk8u@*l23^YW6N{ZUsD0U3i z7rONTpic_18;jvTHX(&qRUUHI`;ycYB?iC&TCSU$?T10J3S)2HPVs1z(#)6YbYm$p z3Y3>M5*s$>oNm#lI z0OGB!hR2YDA(suq*^M-6vZBIrKxxG`lC-b}jY>^{Cfj@9O#H7-r7koSGbVE~St0jY zR*|TW)CfBp_U8zXE)6cL1yK<9UBT0NTFFqb?l{{NIJIdlL5hbG)M#SiMn#F$ZGiT^ zC7W%9PR4?}0J_wA9$!);zO4x1rwA**pRNX%q|T>&ye1Ot_tmAQ!ho?N_dEE(d2~l> zxrxImw-XIc4_G%y9xz`kK&3;@ElBAl31urOSU;-9-`fREwZ~`p(1;Y4^9*ji9&|?F zNeNOkDMw28vBRTuw7*3|NqyEPB^M5h1#F&ggIR&bD%t6Y?K~I>0WFsZ(rxd7uNRrj z2}nT>6(|&*06)(h$)TKL~UYjM9e3MI3I_)o3Pn`-D#xg_&pwgbV;h7ZI@`D&cx)?`X&sQQ+IQr_D(p2u$I8qo_OgLANy zXJ>r1atd2%mt0E2t7+8_P#cha?TnRt#`blZsgq){1VCuD9WmBbaeLo=uWTshRLe4E z#+GC}!>oeJ(R8Ud*qyiI12VfN9!^a$$H^tdCB-Q3Zf<;SwgwDCQ~l1$!+SG&E7Xcc zd@$US)9ZNw(xdttCfgIm_QN}6b-6KIC?Yd&>TUM!rk+Q)-wE0C;ayg;sUJu~uUjECEm`Q0z%R_umIH>uyvllBGXaZl_G$ zEEKn56gE-6eekterp|@&Arhd>(HSY!+iLwPJSHV3DVr{`+97E-_il?|vk-HB?FThSg*wUtzv7)8{UX zf>Rzui7Fc`s39l=jmPhO@B^~g5t%_ZA8P5NLXQ-^(r!ZwA-4$v`(je3(>|tK zim2*nJg01(%a=O=;|G3O%+B)R$!&3z_|&J6-mZwXwmfbyGCcrg3i@Ka?01k`)`u@* z=qGF63V;z`bC~P?rr9!`Qki}vr&^TDzOdopC$RIrKe{yMi;peU2~QhcDH`u?cE>7| zN^`XL%MOJ&`VU6r`d4FZ`~oqTE5wY%H9?;tEmcc8TYpu-R_E=;Cdz-gY-LPv%Qij=2%!~|Jau(y0*slX3Gmr9D$?Y7|3xeHa6g%QBpk&f%mvZ7KOG?tQ= zwCF;W`cwh3wz0VHfhN9cO=@|jTbSGWic-BTx-I&=gZ024uzaU#o<)4Gm+Ek&E!w3+ z=A30J8i)aFPOnY=o^V2ON;B)tCAS+=n@*AlOWKld54Z!7inTK>h3WI6OkaDV#Hl$s8 zI`sloq@^U>>f3RTau}UeWwkP62uf{B>LJZUkT}~JvqUse>5rqL4l4nR~<=t0Wq0&-SpxH%Zo;=$d^SqfdAxIPyCEAqKgrNulN=UZ* zaxKT#2$+Fz3?8kff66kq*dzj^Zn6IWIHI~HPwsJ2-*aYN zs8#;}!*q(r%EzX%%OMUB;*_`Y)J!FjuX#RnFTG%rNEkVzR4?uN?Ce&OB1*JGNsW$yr!5Dz~PH!rD zFp~XEQeIkvs~WYqE|sKt921Qd39{Egb_7--$dn3nxUIE$9^YYsP#&pLa)T|@0%S-+ zi6~IH+mztV2245nDlIhPT?$uGw^}J$NWJbi?l8aq_`SSgKp=It=|lj ztMaN8cFiSiDk{h_|z#mTdMU_ye zRBOt0P+BQ$os_@PbG^HM`0rk%55VEpVl4=e28Yrubzg0~U?n|(i*-b>+SR*=PUr8* z`{Id+DwFpv6SW9Qr$DPpb?Gso^;-V`MYP{iN4dR@Fj8DhDvR-5Y(jLb7Dl2v;Qs(~ z_r}*_x+S<-aha!8f>Nt0-r)1Uj4xJF;h6$z^`UVWtqETPZy3{wwpuc6j*W=S)jipH zk;kOLVQ!^?O$PQ>Mjm z-7!fjeM5x{*(2|al_|!g%*tx#xd|(KWucXIS7ETy4jf}+$c2D6F+pYevoY&+6qO;i z{{YLZtMqmz{lUVPV3P7{Ncpnc)aJ+yr6{_!o(Ti6!<8p2DksA!pMq6gn*`0qG< zdcTb#+k1=S@=jl7qe^Y}uTH75ND>mg){-oCJ6K`yl^iiTdLRhW7cr@9$zow+@g_qQN_c9B`>d_BwI54>SaEU>7?0%0l_-d=rGYB6+fESM?3(v$*Dl_ZTfJAgO1$7a^3No%p}wq}osD5qtbk|t_$D&wdvEw)1J zM-~?+`eWu?xh+*{oIz)vq7;R+xoflOQ9KZL0~Q7m^R(8c$Wqqpt(6e5U_lr{tHq;b zs>)}Eny0rd8YC%7Atd%Z?Y=YN&Mcu`${ZmnftYg)r!xBvynvZ(D2|eKl$Bq8M)+a) zT^cONawgWI$cI!fsm(5uQsZj<1te|9IGE;)!xmhY{%F34D;+qmJdG(UNc}!bK(DQY9qJcES% z$4bkUrj0dIlFM3kGNS#xLvlv;{qSI++TL1i$y1_6qe^5c0k=-2p+ew`afQi^QB@{2 zE+kZ~==&mDx`Kj8-sj)n9$Gf7(*Q9_q^d4Y$jXH+ZYrB3s0kVg3n%Hu3;a2eL8*K; zYD@8Ml3n8G8 z07?Rlfz!ggj8dmlp_xiVnCv#??q5PImpmwu$KMzRU5e8wd9^l(&LwFsAfa19FMveQ{h7LkhTqH#MI@UeLt6JD+t{A?qo!ITNOl~yl*s@TIHD{~yMNJ-obq}q zlD;HPXjLDW%qyXUHqZsdTlEESaZsvP>*`wRlOZzP#*<|@qEr->4X#~TlPP;!o8r&43T4xFdHMMGR=uIfr}xlXS8?lC+Xu)g2^pva|7 zPWgf=pw-!xPLiPES54Jv8nmB2G15(H(AkR1#6C@wpf9U#Z;cf>aq2CG5L$G|Br?;6 z>RIuK%;;S#%&0IQQ?*7P4!IGhj)Ys2s}8HPQH&2G7I&%`IYMKLLsD8wH7N=<2^(|X z_dTzGnK6oRpffAv*rK~3J#z3>-CC{Y++h7Jh`EZ1R*zec9cpFp5`?5JAb>2L#g)c5 z!HVpfl!|>lm8r;xDnbf3DE|P&c=3y?1qDQ#+ZmdnnxrnOmK>i6y=f^zp9QqIq}+tu ziyPa2_rOVrsLg~bEr{@*bQ0TkDhl7p3CH~{muDC8;vvG5Q{xFU$d;woBvEe<86DI}YXdUvKho8k*#Z7Gm~)p2HzHeE4*l|>SgZK=1m4l7}FpF85Fx^`@j zL`>RO$VYIXX>1^^X5*54j7L5oL(Pp+V9Coc82pz~>xI>6CrK9cpVh}>kE3X{R_fmm zX%%xE#xmliP9ZivqAabi=L?@9C=U!nk(~f_rfi2 zB2-(bwNzpGDVWN_*_PYHpo?&P3|HHII#x=WcqnPP2KW2pY9>dg&}6CBl=1^=yGOaV z8~N>w$(6%LWfdk(ROG~YO{v*68L4P&<%k~F0}#2@DURm}^f}b$REcjMo7XB%l6SEq z(~5pncuKET6u4`rR8t{+NOK4dCgb>gkER4>id>m9V7~#DzGON=on62Qw|{Hxk3k4l z=!&W}_D>Np*)o?$q_U{!hWN8?qUccvo&ER4LMf`WkC*xBY`C`lZ8$=kC!33p7+!XV zP(>lh(HmtG+BXUPLBoB;{Nb(wYfE;H{aT(P9=Z^>RFa^QO|+`R({bGG?}_GdkaAT< zu#EPbtkB9xS$o-j7ALZ4swnHEc{oAP14pFx)qp((cEK-&0c ztt!9)FaK3d)jSra?^F)UdUrl)I@mNKo5h?r}3~C7V+KC2Bvwt6$WgIQ~slEK~YY64A?KFrTV*M2dJyvL04B!vzkFt@&A;k?Vk+=%jYCXW)3~bc19V&Bg)XaGaa>xxKLrQ;s4j8ae&t){T*c&!f zB}SbZ5KCqhgplHpNg+eF_)?kj=A#l2b){-h7hc<1`(cAJ&y!fFqC-e&4>|0#xqDFG*8A^P`M)ut%KmX>P?e)Y1V}(``p0DI8(bV@ ztiobF3Kbpdl((hIkQNpRQuZEy=GbYcH404>xiUkMow!j*JDUycaH$dta`Ow7RDk?u z-Yo?sUX_ho5Io|j$HNfA(y|fL08*rx3vrzSO0?V+b7Fqj9~zjsxlv`cwCwb# zfD-5kPzJ`|{b8D8^4X^#K%Te_q1}2)eJV}8NLBlLV0K+iHm^QqG#S*%iCJ-}1b$P9 z-%$qkBoW5gIetq*HXByBl(Z@Ykqy?+9Z?`52ip6O7Q>AmBahL_B)H-m)HEkf>ixz$ z{ton9?ozqYszs4t^J%@o+nad93-UtUZJ>+k9Pw;rZVpS9xDq}_qex;yt7#~G#{p@@ zIBwCtk0Lvf$Y^ zUnbshrjrTid1fO5Qdb?eZpPY{k_qo`d})oDW5_aT6We7Dkz_AoRBf@v05`~=?j*pS z82m|HHm;Uij)>*PTz$)2gKGeIIBK6yY_0^FTF|n~n$|7~6bB%l+hIY(HBxq4H8zWL z65@zMgl;cnkb7;uHO8c_1t}JOR8}8V)Qwvx@D>lA*ke~>aO8cFP^Ub!{JX&f4No?u zTqK^u+Y5Er?>7x|k4Y>B)TW%UR;z=}xaPoM6YeS+pIX)y+JH-z0D=?xa2c%4P;fm3 z-oV4C18=difjSDw;1n~ za?Mh^F0ECp&s#L9P@F8VgpEN~^mE6)DE|P7u3Z6dw#$w~N-kE~4*+)-;~nXN*FFzV zsY6oRE(H*jk#^H^EPIRF6>P_JG_i(y+Qvh@YJ+mfWYXXI;+lKE1=Jb-R)3I71=6xht6 z`t2by$zlTB1TAVIdXzXL{&6-Ak9Qjw*meaJl*?s_QtFRRsiD0>#I_ws-%f$g-vc4j z>JjsSsQjDek1d3Sg`(Q5YzPPTz9~7DnG!2vMUwj2d|B34VxfJ~ZH1cNcAuGBObSyC z(olxWMN0iZB;Rd?u5j3xdSYc$bR|)_apmRsv6=yI27pl=$QzGrA+IUUspmIYU(7QV zE&A4l+UYzE`yTjIq}Hlbms>8p9$2|^P~6*%D&YSBOjjwjX|v#((=4H=ie7~3H(J2& z?esVqvixjGV!%=UQE_l7nPK*6%Ti*132i9^-?`)82vz4l6Rfg=xec}y3Ko?V-rL^% z;qNzAX*23n=VL9hq%5KEvwNo7fo}L%s3t6$gIzZejcT}AI{-W!OCH=~_ct0NkybBJ z?ChkurZpu^oqbS}Zab5TOiD12lm*C)>k1$=q;5vs4{zTR{Jj;bl&ZX=P!BNE>q1&W zZf)m&M&pc8oTk-iR9MebpG$pIgV1p|Y?3>77-vyrM8@_f>ZZe@XGrlb_)DlM0Vudo z9#0qpo9Msdyua1Fh|e;+vbKo5t+?j_B{=N5^9i2k`L-P$Wiq|4qqVQM+YHqC2!y9x zmba!M3+be^pH83VBhDxM2qI_-9caW_c2TXjM`dZ4^uCx-l&NRcrss_}#{9hz6+|sc zbh?Bri(1`OfIw)+ zy1#3ZM~oKCT|4aM$NJb*;@uKFJs}Jy@=`!HxgSq#D%B@IiCU+LZbWIvo+$`)q!)+x zIHtKtaZ{ETF~u+rkP>W9-v}9#AyX@{%*N8AE;g+$tz@YdH#&FQ5yYq)=4Em*t_Wf+ zWWkVFrBr0cP`ZM35(&3ru5E{WjZ2XSB^9{$R!oP~>(41fmr3*X#4&l6pG?cI$EwoZ zc54n16;1*IO|F!cak#}3BucK+g5^$dMW;+ibL9osrstI2*4r0+e;XEL73j*8x0rgI z^csX_s!)jCrvNrd4Sg;N-()QScWUr3PK85W_)I% ztxcuXA6A`Q-`gANPE;mAay1oE)eQ*<4VN^9*jSDYu)j{rY`;#8J&6fWrGKYx z5-;P<4N{zj&SP={(%=g~3J5xn)C0}C?}@%aumV^mrp*?bp|3L0#XT>#PkosHEliR$ z>Ff`EzkCvMj~aj;sh6Mm#B|&I_1v!8ZE@d|h8WY^Mr4o-M}A>zQz~SmKm^^}?=of?v(l>T_XDx~EX`1Y!adkfU`k-)`8w#A0)i z+(xGKgrua4gZg*B(;koO)d8-VkxjV($;=25;mA~)f+aark+NHKk{R|VfIJKkf|;SD zt(7*1M1?f4;`vDWd+&`|mY`cLMoKylmoz27d-=XP(qdE<5iGu@T|h}%9NOghIL^R< z*|llBnJQ0*Wy5n?47QX|fPthep33quo->Zp>Z@_qI*4&ZE2KaTUi)wEdB;bK3{+h! zkjs)=POgd#&({QL@6qHsv`Hvb*A-xuTa(ydz9P)QZl^MX!3H?fkyvtU=U-cnuI)!s z^#DD`7=EKK<+7_Su?;a9TV$;$I#Q9}6PYxs-DaUCGAeP}DJP;*G?0DgOtsNhs;tAa|}Z3uBm z9)N`sN4^JFrbcFh^aMPyG26GLN+(D^?eC2AN(>0F8kE6X&$iW@BVlpD-1fuaK}T*% zvp1_Ap-C(BzKt&Fxdaavc z(4v*BUy^^Pd~B$|mrax*$U=a)bD|v7TyM$0zB~0(aKLj4?Ddx$g$lO#`Gz7z=m0u| z04^j+{EPmaFH`FMEa>!U@pa5&)ZlMPBp*2CrUcGi zlzAKI(^{m|=hK;Da57LtR!US`N_^@&T>ImlP1vf-^OX2@H0IJ$(o{DJBVo?_#?;5z8qC zphIBEeJZf!A1*_FyI7VPLA&di-hi8(fYNyP!wr4PZC$E*6W3`j{xzacjLK!e5pm>>A9Mtxd)H2DTSHc1Mnw<alKc`o5j;!X%b;@-%B(KSN41T2>=)H=OetTnw&mu)ZF`(Zi)H`{C&YK;a9O|>0}>e4I<)^2|IP~aP=#VmUV{5`8> z?2SFpnzBrP{Lu?LT@I5nH=ELAGZ$cX!l=o)naq^us^`K zs12z_YX?yZ*bq3lIB#wNMG!e63r1L0rMTKa>Lo_tU%n#H-l(@OJlNHVDVZASP|@jl zt9z*=8}Hm(7CfA%YCkq#tFECH##8xkCdzHk;sAKQJ1!yZ_9BzcP3^l$rc#~sH4P)w zTM5!hw{Uy=;$IrEQp;ZzCg*vPOOzKQhLnabr$7qWr9JQ9;*XkW&dQrgLvA*R?LGOZ zTERLGa6A1l%T=Le$iD@uk2ft+oJ%E2WyNt3M+p|K~Mzg+rPF3Ma$Iq&lwS0nAvdaQcI;f`vZfn zsyr%ilJsZXwTbm>C)&evhYp?z!vhYq3r=dSCW^S#Hjx>WsM&0@ZE5U%jkeni8BU!1 z%G0h;kn1R6T4cyx#DmBq&Oaqja-x+b$!#*V3!#K3N;LTPBkhcA%aYU6Da^={)3O=~ zkXTlgTmJyOP1>l+sIX-!aw!hd-f5}HVnb%mGjiis`fgME;AJy5w+Agh0!&99W-3&% z^6LsZd9{tZ;a;CfgH6bD6$wa*A%a5IrC(7zDOWq~+~Ik;%V(yh*;=H$ohp5Y0)mOy z{jLvhwh&=c_T3FRu4W>#KI$6s=#6=iFRr`2FUB#R#7Zuh{)2azQR6GoC(byVwoEK25uUiu1A~OrSpoL~*6&cha3!BlMeh10OO~WRK8UT=f)zxb1JYB+3V{1txx0Giix6RH$x0`136(1;)|& zWR26Pp63B1w%uwaEL0d&caVgw^4rJK?|XOv<8@k{Caof#?J{dmsIOb-bwI3(Z)45I zJIZCY<0qh|%c)J4FTwu+d`YUg3Xb+1jUGceazbhax`ibTS$82W1p9Ni#ErM%@Kni5qg9UnFW(dD6$Xl$L(<|Ya^G9v5g|oO z)BHEN-|LEE$N(j$X-AQgpP7*_E+Sl5u9c70g(S2P2W{}?%_fhS=?^^#_K<2Q4l?3^ zDs9B}JM2N*_r&Il}?#Dn?53bafeotpg;@oa1l~tv6*SnWjofK^n#FX}aD6l8Ou%At%C9LyLtj>g92fc%!gn~p>roLZo<+mDKS9RTOyZ}-S`wt%YD;B99 zi81zMHsq${w{vl+2(jdjZ-O*jy&hdPiBr_`^8)=2bqLZv*ez0`!;d@i&#l&qSAIwS z@o@c$M4dhhIf3_LOLh3mNn6oWZjuSUpbgFOo}Sy4tnV5-1yP%icR_7d+Qbm8$2a2) zDuWe0LgEwxO^9CL3wg(^ot79@c$X!B>_kgzLX;LtZg^F$aDQc3j8~KTX=al*=be(0 zz*XE?0?GFzcEN{aGW62ZNiM#&^|pkN3dgoF)sW36;v+d;xh;m-ZH}l>M$c*>B%QQ@ zzkd5+jp*ztY;{xAvM$V)PwD-*#N2^f2&zenwA{rKHep;>(Ccoz30k)yB?Jv54i5O; zQ>;Y%3ErZ}E*&Y-jbA~w7m*E6a}7;S$ST(NQKjg%prAE6 zRd3sTAp>bm>_x`vLR1ZKki=*qt($3Dx3=Q_jxuFzw?v+^E&8nYDxFhxmsE7`wT~DZ zTuYI2YGJb-_~?+Up|ftA={yj75H~n3xNJtEhS3ey9YXAq+0(f@=_71x001gT0#9Q? zDbZV<9k!5{B($N_Qpi!aja|?7#%i3&0<5?aP+4D2?G=Dh6Ts32*S0WHDgrv%r2hb! z`Pb4^mkU0zy|3W?uzxhtf)fQn=U#cnuhc2ocH~@fh#Ou?=0k~1lG>biTzefY zqUAu|+gpAy-h(vG_;n@aQq~jH4n{Aq2BGAS`NwE&E9cgRl9eTGpO_AMtOf6DeQ?sA zn^2uZ2MS|0(71Ud?S2M3_6q3icTx`{4Ji&a@YUIF6vtbQtgIuiI2 zf_LW(09NUd3t}lwg1UZMgH(>#l~Rl@^I(6dl$+@wf&20>%~6e8%rjxnhNB*sw%d82 z01832!v1mmCd7^-HK~VOQVyn6y$ev=Q3UhO4K758xoR~IG_cJzEs-9;Y9ibfc^E&i zgXCsVAQ%-o+G=7X=K68ibzK)$Zl!_9Q0{&4(xolX+N3FIZ$Q4SAX~{N11C~swNh%J zx|7n`At-eYZEJ9?hC5Sflb2O-*>VJks#3~gsjt;x>Gd70f>2%D2;_ZE`EX0j>XuNZ zBSMd0A4+bwPt$?6Io4au(Wfe#8okk^@&Xn@hmp5$-|2_us;x!Jjm1O+(_VC4#HFxR zzj1GF#~JJNIIL3QKNLG9w@>CcR04n_k~y{T22D>Te_sB?id_aOV_r-0)uvBXO4q&5 zHa;+JrxZkuDmv2~vI-tzOQa7?{X>uKd|++K@oG&Ww>YWhO7%7W0EU#r zp|rbHQ(+~9+!3c^znkGIR&_H~5;QEn-7UQuT-+n|2X`xC( zrAV<#?05&<%98&8!&7It>y8JOr8IBC0oY=z5yZEb;WUs^`C%ZTX2c6{e4GYdYIF(|N_*5I z^8vF<|@Tu_S+1xIx&z@qQxpoO~F0*wmCxwE^x!Jh@ zrlx7NpTinRX{VN_8E{=dfOk)}8mUyJKT>fibLD|osnTwven9Xrvh#Cf$p)Iw&CN#0 zY#?eoi<^;Q&I?D(wOU9mJ4ae78-%v`2?P%J-xJA*n+YEtPIfa?D5eH$c*d6Nok&Mn zeL$rt9NWhD-A$v?K`wluX$sz<0xrNofwZL}rkQ?bw#FK@BNaJeig5~Y97lY9MfFI85%LC()LUQ3O#m1q*yt0zj1*Y~+NVpUSp ziA$+^D71B??l#DEpEy>o$Ouy6WV`kj&*QrMV5;N|o;*hp zRgooVQ%;E?AsuBBPh@fsKSXgbU`Q7qI63M#XNALjFH93+QOWJ>{NMq6S{QnbU7W+lhc zEa7#})D9S_RGHOU<5Yt5n3i-G9%$a_z0Z6EVYtpyi^40>DyVF!g#_3*6Ue!~{@8aq zCFYn-OW~rFk|fc2A`K`@?@}MFx#xej+TL1&B49T-uP6` zlnO{vo>y5bOGP(J#`Y&*IokMtrwEiUhOVv3pU zDX}*CVcuj0=oz7srk|*-Z3H-!BIsy&u-_lCYT0g~1;*Nw8FEm6F}+q&Mf-!s8q1rD ziGbux4Z5T_qPGG_^zFtn(osf@U7aST)9$*Mp*>`jsVg2uyW#e0^mugTtE#00Hl-{l z)O-H`$MwYVhMJi$zY0f9rEPmS4*)eNfDzL+$!&&U$x3Aa8nVT#boaRTwkH*Q%}cE%`5A6XCC?6q zoNWyhsIK-9MNtBbw&q>HMs2Nf_ic8U@^wPIf)tgqoI}Cp1iIHhl+LS~vfTxIY5=v~P zdblKyukVd$tGynU%wZ)8e&HY$4P0}-BMVbls!XaqC2llUwQLZ82kmTRT!gXOQE>z0 zs#TqVGb7J|Il(2D+9@pqb8BAU0u907`NznW#mJ4A<1r~=!qUpwPz2t`({tzRij0Tq zd3LzW`3R9Mo{35jgK(lx7UJIcZlmR#wEjY8F;$rPHOO&JPmL{COII8rNI$ps#qhC3 zvDud*YTc4)O}A6asg~T%obr^G-;Cf&(y_k#@8I!+IS!dQbcZ_f8=mT4P)IG?Pq`d} z;`rxU%FNTLk#j8x#^lgnQo0TyMJiFg#FO{rcE>!M2CU2Ss_RxIopARY++D$vBpDZl7Cyub&8Do zr_9QEFdbkZGzhX!bN>L=Cz&_lgVZd#;$YM&PCo4KnUa-1WV$y21tVd5-)vViK5vyW zg6nW2{JghR5|E_}q!YOoqGD@Q|;Zj>4F{bL>BG9|5r;*w6|&9BJA48tT%do)q$ zOH9QzPIw*yf0!HE=Zcig7AI33;U46@&Ut{Nj1Z40RCWBzqvax|3IfL{(Y(`l%9Q zuUL+l;Y}2chpb-T_na|M=Y(aJYA!m7==7{Qm43Vb08_vI@aZ~iT7^VGX{Oa8LPFOL zLT{?u+-=X)w;nN(Gm?Co12T%a8Os8lFX9}?lin$PnD zC%@AcNf0AO%dnX&g5!>93$^wGVToR6pg$fwgwje|sUg&soI7h(_Zx0Sv676O(@vzw zcBeIR=av3rI?jX+H2`_WyuYoKHN?ixXOZ?B(el&sx`|pNbd;j9JuRExp5IItfMZLi z3CUYUmHPFPcq5HKG9Zeo`UwSeW%Z+r!(Xj`&u*3p@DpH5A zO>Ut;s?^{)B1vvGw15{zeE44?+wU6pj5Axgh;EOG91 znNa9GM%a}xmm1v+ZVHDWUxW3=6w<0SCuEA0*IDkiDjN7eE(pKx`V zA;%g0X}@d#0KPVSJ$+P~`Xo-NqAUhdTWCpk<HMG2|bSl zdyE-|TAK7$B*jdIUXVXI0YPmNcDOyf;=>=tjFDnxQ#aHp^{VN80xX4=0Qr<46(ZfY z?YI5o62>zHLXydHFIIZoR?*!508Em50mj?m%PrEIiC?LqNG>*XCCjLiEKe6WTT^LG zb@v=@%IhpN4T`zuz<9t#<-mAhN_-dR)PuDrSz1)St4ubs72{3|Nu))WB+5)4tMQUn z)PA8sa>H;fweTPvQ4r(z0SnaHkZg84Z+taNM1;1Af~B+y+X`SLSxtFS?r@oL(Ye^j zJb>JC9cGCc662vYIHVY=Qf#XOzOSI?8f0bKgV|;Ik1)2`d22*|lZQ)$4lTJS2}*%6 zS=yf@N4(qzfOHB->3RqxZz%L49zLc z5WX#>B2>b3epN9wRW&I!LNT|^Lxg%DjDv;nK1sK@YSYKqfqdqPs9rPKg9=NEHC zK%#_3R5zW2B5Rb!C(Z{%eGde@X+El%rgDe!E6xx+LHb5W}aWiP2rh6R&hq;0qacfw>U`);Nc5?nvSUrM#Q zUK&zDNhAUXdvI{|PoGCy5}l_L(+6>?=mZVG#WMmZ5y?De0jh|NXBR$c*Ami-Qlc)R zk!^qjxxw0+7f=nYkR!B&hR~PE3Rna9kJkx~*CI@bRfgia6^QQYDn{xlJEV)9?TpM+ z>P^ukJyI)mq`uk~wAe37mAZ(w`8j9mm`g&VaC>KZ^sGqLbpT<)%BgvHf z#klHLqLhPhM{{rY#zA0jE9rn*%(X{zuU+J{=D6XhY%kJ~dl9$yz7$_-q@2N55{oaz zUEjNHl9VHol%F_YZ7x*nkJVwam56SZU1>(z$RhmszkYCa4y6@0RQeXuAN>Z_Hyn>R zs<;ABCH5syB}k7FIfD=(lC-JU+)2KZa8tholg=6(sfd-dLzF@~sSDF%$Ah-V8QzMR zRoIeMB{AvE$m&>M)UC(_cm!i>=q|%@r!G57)(Xl+_fKnKN~uy~D;7P1=PrgR?m8rB zac+jvrpQjODfj!~jvUA;p{;=OBc+q2Ev$iY+TL+IuH}_fpttyRqZvyGbtMC2jaMWO zCk|B7sg)>@r>Y4+jdz?UO^7>O`8ZIkt*`$8>|3J-u{Mt*GtPQsM`9oyAxdiD-gh6i z6)LeJ#+s?rRXg(?ONN?n(x4CWp2Tg6i^!+b9#cWHGAn?Sq-!MHn}1vjVy#Ad;vF_T zrkkfpZAPoJU2i7W^VvWSinsSTtK z!1|5;ybMPkMi$eCJ2Qq^r7pRfWKv&<>s09RTXnZqkOI_B=@!Ka?714Aq&rS=Uo-(1 zDmsST3{DMBsxu33QfIdwGfk(gg3wn{R^Z>a(;Fmac~83GQxElg1afU&;nC!h`H~I7aEo`#18004UZd%C6o0KyaBr&JWg zD?HoeC&UkspQ)ZUP&v%EN&G_LXsD+PT>g9IwiTrkuTVqoJ@o?sTJe8x5bV#3QsPC* zm--LxP)?Ikkt^^zO#gubfDoXstMxc=dZ!KAx`Q%XCs>6TmRgHijPIg{cYn_XsOotv z^EJ-}wD5Dy$iIMbAEWFUe=s{`2Vv(k0H>%(%A81K94HnY*{KF`bB6Ho#szEys^Znx zzqM~hOSo3y;~twyq)8Y`l(=Coijhr4?+e}^j(hLotP*nL1cEp6;siFi+4dC~)P4jj zK4@pf{nlYrKm2{g@NA@d5;FNeUt-?o0p+eVF7EyA@NMERf;Up+bXWhf>tFU272=uk~02QXt5)79&KC+Kvg z@(QRyy;u>{7qFn?5coR$OMzO&?En1tCsMFDaqnoDDjoW(>Ky^P?orC{qp1nO&=srD zKAoa8dL;pbC%nT@u;3?acCTc^MEOioc3tCr{Q}g(#P4mBr8WrH;10q^tz_r0$pbJs&>|e`9)bZHXpD`e(wgstQ#o>G3J|+F3L8k(ZR^gWTtY zhDpQL1B)7~VAagnmVevOM?x~Y5p#k9F4Lgx2ofdduAY3hct%{`d{xez<(&|nK zU~cbq`PlQOe9s;ajGkO+{)mc{X}}QSu49dRF(etCUScD$@xKS?7xR2Ai5iy*7vgdfNVY3WF*3{mvC3ySG^p&nOO;M zvoiCFCpUR)$SWHPR_H}+g?$ZlrA2NLKt?p>Y;5wOa!0w6uV<~8#L2{*KfgPm^*xVN zU(XcjKf28=Gs_KNLNwZb1+l}Fq$Sa~%>UL!@B3B@BbtjI(y{e}2?qVh*t$zT(Yfh& z{7&Qii^{Yw+bJvR1E%&qa5AV^CDnoFv}+3ppb->D8Hjl>B)6ISXm{5tn6cG-@4xiFL2CT~z%tQ3RVACF#M%YV&{nji zIv;nO;j6ISvkw=ffnnt3+R%fAEh9JEF@Nd#R8yEfi)L8uGEN!{Q z>5TV&8$JtN+jg*Uq#Azkh!T9S9%LIf?UeoGBnCfUUH^1p7KIWUA7IZn7aNFu{wCHT z_r)g^TbC`Tw%MCZwUpgb41nPFq6#BJ%xp`1J^TKN`kVeZPUqwSpttkwW`R&qA?oiM znjeq`)jjrZI4k~rW=cm7B_g8^X{a0`Uux+l6BBdy-$|8;6^(R(N-`n|qggmRGL3r+t5lnACEnuWw&yO`$Tpom)xskOM6 z(ysA6HuM$HwL2qH9v*;L!{^Hj`#pO|>-MVUGra4WU@FDbk!Z`|PgoWZ(HTK_b8Mm*l)(1O1ck)-T zlQi?iX-5)Moqja;3mY-j-QM+=Bzy4a(pA&1eawLWsQm3*Xw5!+3qZe@6NSYM2Ee8w zKYUO$bl(Qz3DU&|+55m35|=I;I?%mw+9R!l<5!9AV#r$mLxP%LKu+E3K@;AomWb1n z3BmA{ve3zzS}oeo2YU;IIzeJm;7)(U4V5Eo) z$FNnzP+2y7zv^Ph(9J5Nup$lDWnSZQYyYFWusnUy^=sbAFIz=q2y8Tv26aX_NlPl4 zhKY{>BK{q~E-qyW-!sWeF7x{QSZ#W#R=dmBJKjDpLHrbC%!B3mmt1EL+6o$et`{4eUeq%-+E-3w?~@F z9cy0>h5M=7e+s1ahhvkEXi^@LQ2?2qVqT)vI8f&6{#Wp(4L~qBGmrr4eQ#D_Z7L2@ zDugfp#6+*O1=MK!cUGpg{C8$j$Pjw$J`ZoO`2;P@*u6ME(YsXKYr(@+yj0b>H!x>a zg6>~CUK?&cT-T^M`@UWEG~`4wqM*IT%vT*9G}XUa>|kk~`o6IMayz=ZOt*q$q@B`L8=0H7E~~3?|QYg0z%IKswteq*}IkJ%MGjcyd!n5%VEl>fOSzg=+cM7Jl?$9 z<{$L|a+uLN>gZZxG)QFouhZJ3@GMNzx>(NMkY?ioE-!)(2h&)LcmBA5OQ@<;7`9tL zp`<+1B+c7QlHXY;ZpD^t#UeP~d|U@DAeog(L6xzjndspNXOT$hG?;VLbDoo}A8you z@@*X|s=i1BwkaT2TxdfjaPD3R9MUoDr`Tuy~1 zbdpvn0zU{qf+vx!{iod>r#A(`;olh1nDcXEGIcZuq>~6b5o-e(;b$@RmTk>V&6eey zhIiG|MXMN^ZCFh`4HnCpl-a-5lA&NOB#D%efJiV1;ZI^^jvn^<5nAZ+G2-Mw`s(~q zA2gd4#zc~J8NFQU&;BXI!mu54i&zDns6k$bU7=ivS4^Ck;}Xt{2&~0r4?as}9S>6l zGV$m0qJ(((2cOl`GP{GZw8@UYK{(6&X0wX5IWU@o=Y`P({iE>$7tdsfIl00hLMF-& z?IoQ4t?JF2EmC+!R3)hWo=#x2gxQb*Zpp1vwelLEQ@$v_xN4KG71N%)3p8*8Q%2SpjO_7?@l31Us`$ z@D!2&)s7-sQS63PRJ}q>SC#4-S{VlaDUi?P$34UY(0)#_EqmEfwcJifEX}8sUX8=I zfDcDraF+7ZKHdCYQIu{M-o0$$4d2w;%CM3_(2_qzu9i4_nU$lfzjntxE4o(Og#%X0 z4{JH9;dr8K0@2wdqmU}R z*AaE2!(+?lA84=u$7=EL)^%q)hw~GSP-f92zc*3#uv2e?D zpO~-Bxi8pXPJ9j6_L!!WlqFaz+bi&)D^Ft?(VnrAVRb{iXl|Z(_JR*x5|!!XLU``d zJ_b=C&E&5c*A|p5biHrgw`jKQC{b>C{2nA)bv8LPT5rZ;E?lwuYG}7{GqiJbM%W%n=7_IkjdFv9_PCc-Kb#ZYMGmL@>vi#+0!|TV3W4rI zR^LCoSQTvf6+DwOA7u1e^DsH3)T*5Z)$H3Z_Wz9cnq@7LVY61wW4DC|0ujb@+dIgsD z;0+MmkrLvefglxtEFQoTl0{?;x~)h%Q)fX(` zhI&lk1@N}-$zFYSSQBeB#Y`_2T-{XK$*y{}3(2n(rFD-Rg-l)<$7ZvmJAa=jaeRkf z&bpT;g`Py>=yLX{WcfhhW2&fp2)S=LbF}`>M}Q1XXts*JZM(U z+fnO3*y$YOa>?wuy1e6@Bt@f_t0U%ZqS?Mvw}GWzMG;Ta70;~@9+>eCC}I*h|1509 z$*!{vFYvJMOMq(hJc)e=zVSlk7pZOVN|3Br$62gsl?}eMs4)S4i{_4EwAZIn8T$G6 zOZGNYAu$`)3=q(8C=&^`fuyK1=B=ugCRsOmpfN=-6S`Bfh@zPyDB8q`YThY~jMS8B zA1#wX6VNI2<{Oe>J;OcDsFb)+P8WcM&R(_iUs%U-MODqkso(`Se(pS3Wix6*{Jx^ezas&+3az%dt>%_zVXZ~s@NknZDQ=P}Xw!Z`C0)-N5ppTF=p_#&I)ymX~}mZIb(UtvK1Sa=>WLb z5497XW=c<=;9(mg{!oFyb*~ec9k20nq9@fZQYL;b7ai|~BpoNf>j0&WL)C~~O1MSO zoyR#ixP?Vk1a7?ES&bmh%bQVX+2o->Lp~+vXG>+Hl3`jmq2C}8{phX|f^qih?S>g# zRaokjCr*0y?)3}0mtU}@C6VoQLdJaPWj@Ez36{(n3gOxoS&8ShhmndlZf)nrd(*h7 z#o29;t0d7ap$L2o7#F-A9G|px%~Cp*TlkAebfZv1+nuFby&?)Wx79nw9eJnkE!3Ki z>YUYGi75R<@?&{$o)BYG7{Y9b>F6VoRJ}2eaWSp~G3>OkqtF~a4`Fr# zHwqY!*@VnT!D5c@?Ra)*sj*yR`m06&bGsW z)70#v=%M<0(~8Hpc~4qho+#g<(-|-H@T765dhcRRwO%ZUrnJ?7w9Lf3O>;D{zi1(a z+z7lZjh2me+*iy`p2V_{*paGnrwJ}5f0LX$xRVbLa44jL@n_661;lvOtL$+!QrCss zsQfdTD30Y|dX_z_4=wDxc0B}_TeRchX9rL(M)4)z6C(Wzd58;=ZT@-@U1Z%--~6$P zJ>jDuT0xxgHhGEJ>$aPVx3oc(miB>wv#Lo?;b?y}@CscolHtKv7A>3T808&`@C(v6 z3yre3Qz}NDBs;wL^zm1fmzj-fX2m@kU->oiXo%(`)FMTe`sWVNZ^$H&1b;nPxR!FI z?|6^3=-gA+hVfV$N~AwcB$YN1L+;@(SEn?BpDzD3ZhqnSyxxR}1~Q1kX_oJs5|C+G zk|M1Y4j%_F6}eLFCstcp*@OA!I%2Z8mZ*)Jrd9k-`2>O?85oT= zUelh{N+ASo{jB_8Rq&jjdCtX^q+*S|zZOjb*!Ls-tELnlS-n@wzvI{RF<>5U!D zN7_ZI=A2ARJ2Ml5eE*K~V^zmrZg=CLA2B%h%CMIemP3=YcZj5ss2ogHth5C@?tL%I zl~-mPwrU$CsIaL$3PVOZHMAUVM*3g zzKUVz%XmtD3CFI2kwpYUIUKRfH@NQrl0zZcECxU6i;Rhi;MM$^;3;mc2Nb;J|9X zis8~FhsdPuyc77C0^rF{mxmf!j*`6y6 z?DjK3oPseW0N5=({?k!son7IlrLaD;g&P94wxd@hEGqUX?Vu^RhK^Qe#ozog@MG0p zX&e6tdi)7#Xfb8zM-iE%uqCJRR8gb9>T!bTQ4r&?^CeUeAq|WdsjcDCEZUByDiMFfiPt~j)yTno==oV_3u7SCM{KFJYOVO{ z&{YHFN}T?U-_P&6g=H@u1!<}=z{*|I~=QaH-Vwz0C%}5 zr%3XxSp`H9#W7p}62UUVcE?)4GfOS}J*F8?g*hUbz35VG7c}iDgrDXc2YcdHtD0YI z?@JCZwC>+XpCp22iYyQPV3+Xd%9k=khPy7MSy$x-Nhsq*5TrM8hBcGDaXS}(t(qPP z+_#8*`mRA_3P&Bgqr7VI%-JB9F{(Z@Ra+36Uf53xPU{**Cr4463Z$8y^h^fPcD2D4R%=n$ zJE+OIiw#o2#P^Y3IjMZBZ^NhG19|lRW^od!%jZl3=ie_|Tr6|-_@zuY%~3U3KZL5g ztEH}V{1X|Pi9?nAMm|Mk6;$2=@~)0HYu*3{^PWDZ&zm07i%)&FuKaW0;YM#k%mM6j zv@v{x623@s_J`=I`P$%4WW%4GFBu|dn$HFj+zaEU`qz8%8Yr#%Up){XlNbsA457I= z!N|enRqxyP3JD@&1kpDMdVO51i4yeNH|SA)K^Jeijg9DNRPUw@kIs9?a|N8=$|+2s zp)jJ3bxp2|ucrarZnH}nQt8$3<<1f+7bA0sjA>9}wsr$lq-WR`bdEEWpIxVbcAo!mubk81TSvz|GCN;9ENz_ebX#|j?$VcBn@)i_$w_W zf+}lVt51942!@x0l&N1z>)VO`p$tfrJXfYDMv@$gEhsX4+E&IMN_rqC|#rWZi;f(2Mk~3m#S<`o}Iui5}C^qskhi9OVScy%}@H?73aqya-$f^c3Vp zB9>_vu5}VSspgE^L^c=yMY#($nLQOBGrV( zqr#UVVj+gVX%veMvds5r0qjq8v~l|nm2<4?EEJ>Tww^on=q_&5j^OoM`vo9oGXk#+ zB?^T4(-miH6#Vpy-bAV7NpK!I81aB;2fl2G#sWq~_Z3OQ7KU#3c{S4THX;IOcSU4e z@F0x%l4Ic&(y&DY*!9Ttv9taxZlRBEMvwd@caAnD@-(x(vMJ)oR}vbl^H_?f5PIH| zzkhk55l&!(uFuQ_C@q?mY=h3ePc6QPA-(hWOAwn+)6q{0D^cUjt}v)Zu91?2NzZDF z!yRjhN!yF*0mG_@t?A{QP_5+~7Irm6BZ4O;%40=J3i*y_*_OLb) z2icoTX;K*$^S&TTh8&WeTlaIW5=jcREpvJcApst`x7`@c=5wPI892);p*Z`}b9Y}- z78QEvBvY1Fc5*jQi1%YmtV1cW1WOBha-x;igAh>lCoO<;6-~xEh%%RtSWQ#_d}%c` zJvImy_B0p#10piJ=IS6rSyHDQWmB;I`*(LlrudVODRvbWgTU{t#%^-nezKF_7x>~J z{C(t*F-e+_z0oTHR#Gb&XnmJlgSQd61Gz_OI@6L{->zvuuBS!6i@9#)x)+ zd6CYNh-nZ>`ccYq==$()5t%Xa<9u^Fzd3(NWW?Vq+nhGDs8%ArZvXSOID3fID)yGy zgZQ;?Y!zm|z20nGr3&F+-EB-JS4X!27#wW-k^5AqfWp|Fn`D09nj+soW^}ZVnTrHw*AFAx*@7kCd`3svzA}T(i;_Z-qXSvgA0n5bOjnX_C{;dr%I`qAxy}|ID)y{EGpK zWUv^r2;coi>@HzbD2W(W?FGpSm{hR}S3;3nCxAdqK`&3&X@J9d=vm+%27GZR7=7W1 z`&}X*23(#>H}baQZvku*@0`Ou+wTWuJn9nQpROwwERGeZp@c@P znO{m^s=C%lW-GeBWs=INnwWUPBm=C@C9oyGx{^5rbcq(*0#+n znU^6_m{ZE27(RnDJYUB<*LJmGkSh&n#0|>`&X1q#2Bxq=%%9t2#YYp*i^w2ysgyC&g=fn$} z7f7)nj+-#LMQv+NpPv+nW`CJJE`R{aWA)Y?7ld zms#v=5cR=sg$M2DVZ=lhMf*Ufm*>lI-!YFV;kqiXGU$JChGGKb%Y%<#SJEB;}u&6g-x z5wG33>9+U9df!n1vLqz_#1Aq?YCk`7h3)O|!A~Y0bOIgrujVZ#^c7q14U`!Tp71Ni zKA6#f%{FY{ayUXR7_iQHHXkSEPGy=GBT!86guI74|gG(c&~kV5nZ zF`4r;Whp$1fsJ@Q^)514$X>Wh#zUnmy6n+WAc-$RgTT{R3+{l;(#xxO9G&HRLERnc zvBvv>VF0T!#nIzi+f3&sIn+B&9v@itZi=Ix_ur(|r4aX@)4j$FW3>Dl*SKvRKycg% zDQpN!P@%-iAP7Qyfrhj_(oC7de@HQCmY-mU7jp4;^3Nh8B3uPvEMqn8{)xfNriDh* zCCD~s%5pOU7Ql4k8 z+Qc#$fvYe2@=DK#9L{UM6;SeIe}4jr0VEkv4}1kbGEjytWH`6)hgu&StJI^F+l~7~ z74m}E&}e%b6q#oZk7?}Y7Ph-~QmIJ-!;Kh699x&+s-SdbR3y}jSz0>a41n{ItrQDI z2#?nL$EoQxk>K1wlQH{A6Ju^v9BB3dCx-Mmcjti4>47*xj?7oms*=C5Q0N+UA1LxS z}_!9i5+HQZEDJgfTQiNzjwFwzD;<4uT;pg+L0~A>b^$)P< zM5!s!-hLmla$3yn7DgghU{p~QL~cfApx%T2`sbqX8S~nsK!gIKPwh_I9^_h?Z?QxL z!ASLi$iC>nz6Rdvi~%_u3{T|u1Jj% z#olwRHm0Ld8jZ{%$C-bit*>>Buwq*4-gR!{xViQ!oR%Adv+6%a)F+>KJbSb1FV%xz znkba!c(+fv5UdZH^OC>lty)PRU~r~uuA@fwT1li+0dwKoZGHUy_A!+e?EI) z>Eo~*M?q(TnL#(!HTo1N1oz)wdDU~g>M+i>KKHfr-tmV3xl^`>%$ya7{F8691%THXDGOuFRNiwuZt1W9yBQ5l> zV@@Z9K}Cs{lwaf(^&cwIT-8!3Gaf63Fz2`{`{}ubOsfoZ#?@9Hs{*0(>+Pp+ zNoxrwN8But{9X^$(1t!d4~i#>OfEm0Y>S-inp{b20Wocow!|;Nhe@h?l5ytt0nHKH zFNJw+dSYV3hN~T=gL|N-5&^rAGGdl^iL<;f7~TKAN(!^Pt~x81qe|eQ=9^JhLVF4^ zCNotYvfP^LmD>e4Pd&JUwK#?C*MH87vN{~U=55mr)KFkR^~D9>_3qd1xWdk2WSY%t z0NUB6XAt1h7Nmm2Hy>6DJfzdRA;l_J@s3CXHD(zU%Zoyo=4n&az3JdOS^)MsY;CVH zELsUOwa5l#45Y{Q3OK?XlW2BCp2B{OeN@OYNh;bc{j#X^P+q{7{ph>mH=gy0G2LGS0Y;L31uyt)E;q^bH5NnAGs2 zNuSp0#hT*6J>WQ`akin`LjWECKV}TgLNrj>_i-&4l5jpuq}jQ_4_)4i($uy=;+b8u zX9{LEFR?zhGYc_qPk{2H(7~o*4B7@D0AJdB1=>4D14OL8CAaXjR->`Kswoue;9Vyj z4cTgNmjBDwpcrkfj~ZBc&h<7Sb5ta!2S}3RocHz*INQEujV7>xwPECYH0)%|eYf%( z`|-CopNJxY}#Q#f@Cq%Xt%){Tf3%O|@cTjc|^BCi}0wzDkhvSi7 zfK1uhvvdBL+eXCy|JRtN0-=DaEt)7w0sn1(`-T-D6aaz+h?zm#s?)tk=mz6R_iE#? z@I;fTSJ|~p>0%sm2RA$Xwem=ShKeZSj?OJ|@L(NhohV_)JsM$aFU!P}f^G2uP$hco z9sWeZkgfD9%l>X#MLN=RLC?KkVn8AXv#EundAk&iH;SYj4@JwN+ z5{(NvIB(QU&b}z~x4(ywB2wC--mAKp-e;OnxLh@33+nk6h5ZL))`+yrl}G}TpAXBB zOi8^TkE-8=@Ql$?2GrG7=gVB-^)n9^vCnxnGd7mdla;aT3LS#8uLiS@e`*aH0zKWJ zj-&gilb7^l=y}{RV(uHz%|^@z8sZ7+CDHHmAv6z63FRiU+L zwvdjA>uz|xrGHDef??F@`_0g~McB3K?l;WoKN@`FAgQc7^3Dtm?CXmSp=PHp*0+jP zFV;kOc19y@aHY66YvUyyAF6oj7#z4a0-($fw|Fu@2 z?;reZ%a*JAK_$4jhvDeP+JbTnLHZ>p15%u7$dhWf0t}$Do+E8`)DcsZnR7tvIeD%1vW)$$tEHln{;l-*{s0_Ckb#=+X{HA>}#yKut6!0go?XlyM=iWgX0mGmx z6ulSm>u7YP#VuFz;B~&G``H9w_IT%N^}FT2`hYA*goW&GjgW-ZI_Cfo z@abuAsGqbCX>)hU^P!Ix?a|GcbM)|a*n~#JUYu&fXhZjAjhH=V`#?Qyzz97s?P*pDTKlzykl|e!K#YkR(ohwT1tGv9t42J$erYv{FnbMF&Ihadsv;1(SGsGhfI%D#NNkZ(rJ3yxLt8k$Yo$$IpQUg<1Fz-h2`Dz1R*t1o1T8$Uh#F9nxK`<` zL1{-H?J~1i>dyJW06?eZ?9MMS5k=#bW9>sX>e|)wb#h6VH(}A{0dQo|9=P4G`($?y zqVn0x5vTs()dz9*`CI0VpAiCPI=K%CKLxclu#W>Rf}lDZ-CsW4FRuG>=Cww7#1@BM zFC3$M`M~gTmR=#E_O^)BWBCb-A()xmzI(kjHGtZz>1L*|T7r?2wcgnJa45U`_QW`B zC!xr4s8LXIrDAX{E00UX34E8l@|#AJoad6Y^^A&0p7m+I`?Ifx@+&;AypDlLE!+$wWGVf^H5roWMQu4^526h@;_aak&1Gtu%OdK z(Ig7rqu7CHttNsrZ-jCjhy? zO-Dj$Q1%UY!U|J=DJV)3P%%Ns&AzVmf(Lz|wl~I=!`aS|$RfvPzfzV~&-dAx0VRGk zvq+q%+6KazcOj0^j+m2-t@a;a=o*^JkD;>9#^-3deOQGuo1&T#JaXN9$L(Y4$Yg)d zf@}GDkp^M*T;B!P9x(6sUeU8egE&Wptr+E0u&Xv_2Qp_O0@o8A2SNMyFj+?CfWXLHL)CNlI>jX| zm?A0mh_v<1d{6zFW}tj3XRL82^!*#TP=mbe6}=x%`@&4^ucsY<1A%YPa=&#P5li1* z4b^+w;0d|){fAmo7}pE?`Pu zWM7g-TN~Bc+&u`bRh}0r^$94H;2CEH>{NwqCh|Yepq^Ufcp8Ze&cmyuqyV(a^V?~= zGGR2c_}V^|wNmdWc}@EJM_GqaVTl7GID6yITLuzm;9R#^>oJJ+R;Wv0SQGp4*axQM zc+emVak4Rw4oK|Q^>S?O2@HV8P!A>e7`x^KTL3-I;J>SJ8PYzp+YE|MEK$T+v|zh> z@2BFq1+Rn;y*65lSf3iB)VRPotBx!er{UE|*ZZGtO*;D+KJ!w4ZeqMKufSn^dMge6 zjIJ;9m9QC&0>T;m__G67)Z3*O+%Sm8_1E*$`(V{frdQ{?-I_UXcws(W`xgtU0dUIU z@ZI}m`q})6x|3gXUr@7b+<@f7pgKQTL_P>yxNj_uPL^x-z0|9Tkj>A{eo7Ggtnc@6%v`#v>iI?Cvz-tDREiX8SM~iDD8hrHh+&uUfiKIFBOLQuBhHGS6d( z^que+wJ_tK7#N`Bc>NC9AEq3ICx7fd#Y}B>40>z4qbQU3GWg)*m%o3dG{dM7*}5C* zGPy{}mO1@RXp?UDL$c3KTzBhRZ8?6tsU7$jRY1B|Vyf81(D=K6`$e1+=A}!PDztic zdh!0VQ3lR+FMfsI-x-m6AMdMU738^1wCm?0-+IEXi{+QzRp;t;;IBjx%tEFSiPYo4 z){)TV z#$#z}VC%?=5hK=s%7R)LPMrE%!z2X}=V%6!);Cz54broPl(d4RD#no8HktkcK1)|6Xo!Uo-ShRA-n<@DWs)R&_DX%#qi|G~laQ#xC`vh*2j3rM%9+j)-2Xf5@`u7xMD6>6B zNKCUn*T-Og4X-Ejmmz%&(Df17Y)=9EILSNSIpP##*CI@x(W4V6kIJ>wpH>$EEKdi* zbF5HdoeslpHyW>Cz0Db-+2jr+(?o0;EA?5M-nT#UDscjteMZfa zc3aS-5H+HuurGUl9P^Q0lPP#@E=E=j)7bsyTBaYPc8(%#kdKGA-JH+N+)TP{ILKOc zc8|-si3?M@*dZ48BKJxmO{kH5&MQabm~qeP>%0kkvB-hU;Muh0?>xSf$=ROxNH*Z1 z)ayS3dDg>Tb`MHA8dW(^42rH#+U3{hl^*9iLFWb;XIuOpmlz`NrIf)TIUnwI17PF{ zM!D?w7)-tJjbDkha0|-b_^Q6wXV&FgDCdQkU-lftM-t%S{SqXwd^O2TSoBsgKBl4j zT>=vWxaqMt2najijceqe2}SKPaJDXUoAo^RHlUpnd7JDx@On;KLEy+|!hhqeIUY~A z&qLz_%bWX5&-cz$kUcnudx!gb#b$M|nu(v}AK~=W!U4BJ63y!FJ++o7Rg6)aiJh)$ z=BGmwvRt;@_VZoATOcL7cWb68SnL|0@m;AbH@kvFQ9usSmskkaxfw8$TuI0?&XL->2%!L$zZm6n! zH1M{|tw~DAlic|=e_~JI0j85xWIT`HN`kof6-0`dzi6MPkb-I2XW;S_VovWpKxX-T za0%`duoMJ0;IcGCZvBD|~> zTi*t87fWm0Yja|Le5Q0h`x75xY?=kVoKu4~_(wMZBCNj*y2Grw?#uUOzji}@bF_>9 zdh3Rk`ul0j!x>cOhg|}>#X4Uk6+cekl|T*|mTXJyc5!)pg0ObwCrRF)%AxCFsx&dLTlW%Z{1pg_$ynlgcY+7cn$5RU zBh?!))Tzj#xPWCteJ`CKRlU?hXMI+>b;+OA zs#^OBZCNA8M7}s1ckSJdN;cUt$2n#{`3txOt&pK@mk%YdmOXzJ0oT#6gAc(*a6$X(~5b zE$8;d@rVv?*x6}?pz54Qe3q9mZ?Cw)rBRY&&a)(>Fk4Q%@{xY0z|5(P$)DNsi3SIQ zurKqQq_o3Q_g-ElsorMpwHQo}5Ig(J%+| z!LqVghn61J$Y;$C{%fyHkRQHsI`O|ccWXm3G=>b%d(A9Xj|ITtyq!Hx&IV}2rHlPpSuuO%8&u=zfRYO=_v>#zpDCjC!AiLjtK`UT%N0n7FIfdjp3}M znm1$((hg{YVgyt(vG?~o3smg2*5-TP7SRv46@U%f~snCCW_-AJvW6)R@wow2D%N<`9f@W(|1gYL+d0MKIg-AhUxD>n4io$#uyK*q58-|TII5x;7Uv5N!Are5BEWrLno5l?G$Oa zp}t%>&X<`9q-w32B2!N0X(t45*LFX!3U4?FQFOXMHQB1p-h3ICF|yxq|Jw6MPX2@K zmfn)MH=SUk=S?M#I|lYH#x(7AB#BFj0Esl^^t-?@Fi-$YS`()>lJiq7AI>gMMb z6)gmpMB(G0TQBwH4l5nni~l{j5TlkhxX$SpfR|7oV4#$8(6(9dUq3t8CIK`K(Qo(* z%fn2V6GoV!B-O@$sIK3xcD}}zQ!wsnbg<1_hP%hQ_Tq~L5V2+qTA0_ey=T}3m}e9t7ivtyP>lo_m%I?Ff>}nhrJm7MU%%iJ$Jn=NZ*jX_LkU? zQY~6EDCufvw#iyc?8!deBtucM?3;Z{bqfm3M8}Rkn^@E$jJ!XSvo6q^!a{W&26qD*|EnEuR$stT0f|)cRIp6X;#l~F&u*Q{K_|!GCkwS+vE93) zQRxvOTAW`i+zY7Lihhw?tUIhKgkM~b3h!_k=3qDHw8qGMc%>s_@bLbsrKp(2OK$b; zpDMvh#0zfkco)7tv#5_lfA-`_K8>2DH7~Jcw(qL;xsJqjjJISWkC`yBB1Zj(u|Ky* z#HRQ$Inl}hj1i4UToUx!$V$v|<@5u`YiO+3%4qbyl-j+3YPoi7{7FmzXRho~T@Hn& zCuykK8_94v(M%ak!diCzlmpGPm8$w}t#A~LliPmtL2oR0&)7pK11 z^RAN!%xUTddAib8a<>}o zLwWv3B#3@Di;9NHReDd^#L*6&1|azucYh5~&NwTW22QsJf7&#!e(l7&Qq@8ev_?<5uxMoILOc2ebGOu<0f6=Q?;7s)xq&xO})?`KIG472F{{(TnEKwf~zLqRIBFp z8*f?B6NM+FF8%8`L9LcsX61*)z!uAue@=O}RU&q)R{i5YIR5hZnBU4V2#U|KfCnr< zXcoXnx!b>Z9>?MRM0+xN9i%im>HgdkCQ^I*(3MZzi97ujKX+z+vKXD4)j4RU&UV#u zBZ0#-y`L|9|CTH`e(TLT6&81oGh0zmgX&E2bHq&@(2KdKos?}IwIaZMN*2Y?7F%Tz zB~Ew5#oK>cdDEAfw0KTa{7b{^ob?7##F-%AFgEt2&F9x0SRj_as8&l2ubc|fz{|ev zYn_vRk_3@3ui&_DE}r0DoIg-T7+2>=KWYjW7%%@T8&vZ+PLg6*pn)D#*vO|+`xWaE zUGbj#?@RjL((e^`b8zxzs|~0IZTnHsr=hA-BTL07G!s$z4VC_~FmE~OvAa6YdjtVY zD*CjETQ>T~8bX@qYQmk)ti(w+gL#IgT0Ow}e{|lgU+Jki0KJr8tyP1j4=EEiPQ6is zzSpkt&Ndn9pQ)V5p}h)m?sCVjv6rk;Nx*Q#;eXpJCk^sf(Br-PeU>V7pm zN`##5Ge-KkGiz<>7qmxAzw#GKpygj=+416dvLAXs2lq3yh}(U>c=F@WId|5 z+}d5|sB6 zJJfPIB7NFLyKuac$7U7M~@+4nF;GU%ojZ-zf(6KZ>E z8b}kJ`rvr!Pw9ZP9^5H)xhi@Hod>ZmY?d*O9%kwxI5d_~R@F(e=kol^i z&Hc9hirClhtL8d&yL%W+qa(iY5b#;63IRZE!Av_5l?P+ivKj)1iy60AG>sZ~71#zB z({&5cqm3oFyk&KD*+St0#s0K?m028l%$pppxu-=a5EfVTA#MN8%=^%wX-2}-^Wn+Y z*ZdCL`k4SzYCF>Pa=pAu^cj@Uwv-f(zhRAkL$Q}hW$*GveyCCO=Vj6Sx2t()hf)}K zFt8ic4E*Gg{6yN=hTzq{Rm^~yfRMAyrA&9NZWfEOoZ47V&<})Dtq=eSpPH4!#{Uvp z3E0ZI)-JUE@CaIWn7PA$|8>Gg^t=C}9!f3Jb9-~p()GLMTZ{MM+zXVf+F zKp~6kc9H(0UfQ(_NuSH(4Bke&#mudsQf0J->#KbASa7mj(Z|Xk0nE`6)(!AlCw4RH z$exRoGFLeH#ky^tyNk5!w?`jilT4F&J|OO@Y`(mjQlv_ryLM_$Qp+Cv4geDR^CT^R zib|vbRUApW3TM6p5n>Yru1E>3#0#kOp5 z{wCa(eS-VJ%}+k7o^Jb5!Vn0D(%I9rRmGkB?oeXrW2L{;U^ner9r8o%4&IF(=;6dr2$Nf{doAN+<7+ z#U!%j4=#+4B zNL`puU!%hphQSdZSrRHTIZxV5DkkbXUSX@%gNPc|W^$($o@e)R3@DhONM;hda?uXK`yJ(;o=>g<&x4gdkn)P2&|s28wAUurETuHKzy&|3&PWIM zj8rd@4&NMa$v48>(bE%d=GU+)t}=qTKyHkkb)>a6DgFdL}gH*q-c@AKeugEX`6iOyehg%=Q`mvAWJMw^H`81 z2CFT(=EgSbPs$M91I2Ogi>d!?OS6qAc)$9y?(9!~=k^^0gL3SWmqX6|n$nk%>bGl3 zEz5K`A~9N+JLkucYG}G!n%Eko1*O}hn!6Rm9z9X*eC~JtOXNs{)k%z<0ua=@edHrH zEStjll}A#4AHVNK`E?C@r(8*qxE06|*>=Gi@hO*AhR5^Lw5QYU?^0@;B+}dL+JjqC z@5H#^xtm5sT+d_eTD(q3ffu6o5#SgJP3E@fS9#bMeZ7}6BPo=qJ&xvZBhr}zK?#p#7z&KRZ=833x9s5R4Z;`{c`yi-fw%3 zz(msaTaLN+z=alebvgjvH~cW)ds@cmlQ4gns{O?3yc_RLZ_q|5W9}Nd|2hKgAnkHtogsUsR#5-G}vA47Bf+*p4t@2n_5$=IWi}WuMRL zAXU?O3!v>hRe;+x`J9BX{D?n6{jMq5cctv>e|jYOJBfd?P4=4?=lLuDbE#b=tQA|g zSN!M8>v2ifr72um(PjFcWl!n6B{O^%x8gXTPD2 zuIij~Y|wr1Pc~Yehr}06w`A@PNaU#)F@j{839!UxoW!h@9row{#jm!rKmC!GE8Z(} zrBjc3@P4&F!@c=RlJ-5wVLRn0Ri;^647KmWVsf1SLOVWcXtR@;i}()tsHJJ_+} z3HiUhaUr4)@L$2I>+n~V1BIluDk#?rk(rf6lP*A8ZfALerr(MI0l}@-H z6VmUOp(z$q0cxHu*O%jcxo*(>FE(27hkF5j1;?@1|F%t2xqSGD0sSk1xT3Pk#RrHrHp<(hKz?LF1D&)jH5|UmA2_{+d?!)~;sm%f>E~CRO`4 z!Ak0A-c$H!{E`du$z9IGg0jure5d5F0`YIAM&g4={BFK?yE4N=YG9U=h!w3X)(2Xj zU*&hlwjK0Ue{6W0l7IM3OK?vc@H^r{T|S0KQoG@uFmmC$Q&R#>Ae}2jKW6-C`C<3L z5A>rv5`s!9mJ?lZ3UwIbcoxqbY3<(0;I3VpJmML@rTb%FvS4U7fS9s@_mh3IWN{8Q z^2(2Rzdh`AHW9k5Nl)bLKrZX$r5cEi-H~i&mT|2zmgMQTA(fx6t8%-IG6*fsKmZ}* z(&T`(U56uYSwZiMAEpr>#4pvLgI|tcN_{lJ&VC|?POM?h!YVv#JZq#tGjFqKV%x+m z7+Cl62!4OR&Zr))q{yh|CY-P=JY2)j05tvPN5AUXtj&ZTi697uES`Ctp+sHL5jP6F zY?WmRNvN~8N&$G;H?P@mlk( zcP|F8BaI&gHCzJ(_EsKoTQ$DYOHd1`uny*KSdvvjYh+~q6QNLb&UZ;}aoD;hoe5o> zsS`WIu8zoenUQJY{@ispDQmO!n#Pg#?D$FCM~XwqMHPt!5^KEJw#xzFjUw@_suI&` z49mSWsA4YsMuEH22wh)Au%a>{UYnd4YrHjfUwt2(jE9YHs;zAD#NGO4Vl5Gm#l3*> zNHRwrHQ($#5Do?GdCp%QXFb=)2imnW&<<^d63Z0i=!)HBWqLK7lwLGwxTo=oVA=WJ z$CNm{PCnryRgT^|=(6%tw9ex8d`LCs5wc(Fnou2@1tZFDf~X_{PgFOyL@{NZime@qW)P^Rp`4 zvGQD+kvuwok&YH^nI2ejA;^5L;SM;n@4e=sUXOzqh9<`*0Fl)5p4TtQHuU61p-eJw zEX3IvSp#U5sI;V00L^0qv-POMgCO=qX7I^X|RJT_gxN#)$_7VnU-#J-EQzM?KZpiK#})!3qKV5rwUt^5Hk@8*pAR9&SLr zGJ-TCk%Z`xaF6&W3+BH<*%inEmvfNF=C9nIjGw8>7Un*D6)`ZU8faUa9H%anC|Qx1 zFb;R0UW0rwBq47mtvjDi4g%w6dTDZ`wy5I{pkIuxS^lRy8+p39{ZqUjweENQGYLoW z$-VUk)W0ODC`rHwPtz=9#$;8b$i7f@=KBM2k?0NkU;m=1A1v?VMaZBtzXL?-T83Eh zW`r1n2NCyS8o$q*c$c<~ZnN=6hZ}yL*m`UOco4Mh$D^OySIA@76>8gAkBV47x+)^E zfKWfW`BAJsBN62z_79mv!O z7h4_DVCn#bEAW>ii4{C?o)3L@{!7tUgT%PMYEx)2^kq8rILil=aTWX(N;1=S9lF z?zS~(cdoV7XHIeOAj4OxOETkd-hE2~tv2~fbG?Z#b<;c_{u|n`&oOH8Pfn}5)I*yF z!V3x=h6XpwmNGWl#A0!#<`sgqbXtr1c+P^a1*OUAsg_L}If!q(>nU#**2sd?{|L{K zqHWj}_uBancS+q&ztN>z@O|-=yv(eWde>J$W5R&Ke1hL>_q=fl$y0&! z3Ju)$^Km*l6a|dnS_zsZ+)HvMU!X-Qq!a_ycxM}T%xUTFF))o4aLb^^%MMqUI+Cmg z&FDSk`}M~u39ZRg?0{uIcN(bpaZ@M_=WRCaH})xdTtPNWq!CaUhP7e1zD#rV*&nxo zBP`AbzVd-Yy#o}l{7P3cduJ){G26dki_DLJc{pj;xb%emQ(@7(t5;k2?6_<^Y)_Qb zT*7EWjh8gM0!<%<_|dTN)Bks#VWwlqJiXTEVfJ~*izk_XruEJCXlzNufJ>efW6vrsE7Oj_P?dHRg0nycVfXfSK{W#ak?9T}0rEXxdCF2r~k z3k>P|6gLVXyM7E|#FtjJJo)&E-+$bH)PLKL|M=m)T#3I?5|89?P1_a3splNgdPao> zifeI#jMY*pJgS!8KI@g}RD*7oqurSBbglsd38rYKt}%w)zJ=sliBZ_mvEfWbtNtsD zCx(7H)};xL51GZ8y2Z;bs!@f1^u6){DPc)A3~6?)yPXvwuDSB7cUw+|>lv{hDDvEs z+41`{-JUsiH#>MWN6Z+Nb%eGlzVHQ0;1nQkJ4gCpY8%OwVJRC0Ljd`G{!VbaGrQ=B znqcKDt|(45ex^3?b1RUV>qWkLL;H{@)f2LcY!t3)QRC&>>{s>SOS}k3m5mu+)+#c1 zyU>*Oz?`5+Mfas~3=}~L{4;GGToIlr()WNh_#{G5(E(TzqP$UN& z#_Y@^Nyv)HANIAaDoi(T#=}Qw#TuOKsxGUB)(8@g)BqdVHyCY@TXWY4F-IC%yte0W z%RjcdTULJ!D&Bl8ES%&(Nfw|9^XKrAm6a9OCn<7}#W|j?+_EWra*vdRO((DeaxKV6fjaO0`LW*AD=8xOTGqi2% zX6`-%9Loi2p<HorhJq4DbPW%efMyYY_b*(0Y9IAOvS4TB+aKO` zf}Ld(LztewXc?1}lMMmLDvmroI+}&fpQ!JbAuJ=!$CZOtf2hdge*_Rq_h%s*7OliN zbl8L~+P0S4#{?^wVlMOn6uvR&z~&Qra_Dr05P>a}Y96RogGdd5!}se}K34p+ei~sO zEL+pm#pBeNj(7})p!UbWU`Rq`D`?%Ve*Y&RziJ)*1+5)?{&e!Vfn(PyDcZpiX0XqE zy-iYO?u3h-2d1rMz`y$aT-;6XyQg~dR$SDHj^?r1QRn;WgccZ(`NzDCP zaP?wj4wDPI6Pq`<9{jlyL$T~uv+oR4%Q305NX}n{!qKhXjxl&}^$+QuH~vbRpHQzp z%b=&TRJqeoY1`>Wk!l&Jq21}2-`Y+f^^fxJ$Hh^FA12fRfR2HqoX_$yW8C6a=abE&{;-2M86RPvO@<@{3JucgB33l{MWAk}-YuxE4h za=oncfmt~&HoM+{{cUk`Qz!j9y&5pZx79f; z8#3m~k{%| zI(Kiscn#?Dz3ACNnErFurct*4o%Bppzi@!t9Wr>f;QW4e0^*d`x|qZ3 z1iAZ+)J1!yCw_5VdY)Iz2tpqVYMtDhIz+Tp8^meUp?iDaDIo}9Kp=YPq+Zd0@e8-l zt>~}Xh?5}9`Ka4~)NdU5h~iwhAz+%$OHxKQ)s>@2K^FlnJd2(O%QF25as-$3GfMB)yPWdw` zNHy?e5pgL1U~B!$Gh9&v`S59Tu{6+pa_{#Y8;X(n)1mnSP-euz9X=>4c35JR^NG0k zJPW<33^cKRZGOZJ1pOes9VUloh_M#&LUb1Ll0kvs{Omlwu;>IbD(ps5DgcV$;?Qf}uK3=v0G*-)dM3_&&3{r+t3C=}YgD^SSbErwoZ3X1R#}?Bto)4ar0TQ-H zF8Cn|B4ynn$H*&=LaCTjUbd`^l!C`9G49i}7O=EuZ9=5csfne630JRwCA=or4}(mB zCJg&DfT27bdQG6MIAxs>m=WQfmOaPJ)I zpT0uGcT{1swem1Sj#LRdQ|+Y4v2ifiZV!_hh%F~I00oiV|y~s2# z&0*fOPer9s5T=*?p7i4=FMjJ=@ZEwI(12-o?*>5yiSHhd%E!vYt*VH3G%EIoQ;d!*a7~H+5E!FXRk6c@SP`${1q{q zg*>g6DA?p#nN^uVj}KkkpaUDFaAZ&pzDvm4N&Vg3pYl`+(~I4J_DYrC>MhTC;YKP31W0@bX}AB(~+`R4x_xdUDoTushLags!xMT*IvRYY9evOsk- z@_7YJ5N_94J=3w^arb?_T=}y5<-MVowOP9surN#Z^RS3L^(=y0%!$UGqL%~u3H4(|nMq*ZjOMR^BPIRFxl2~SRag7@Nh`R=>YF?NA2MfF zdAYcJ|u}PynbE`m?=?(7J zIuG(4@*%gCxjO~}_>I_VCW}MoDTu{fAPe|PDj#~qPfDj9TVSxxI`XdS5iRmtwn{v! zZAA&iE2266Td^&XyXx45l4v@4dY^El&eRwIjuh560)?hJY)Qh-c`c=AuiwBz!%m($ zoen;s?tYe=m%f@bTKfN9fPQq3&&gA8-s2s|&F`XLd@LB)+mAxz>ZGC>62eUz9( zXp8HSPMi1uc@g!^8yB`~pN`;|4esWXt;vA9*SE|!&AG5<5gMc8yqJMe4Bgz3hS%~$ z`rK>aZR?2HeXEbkX%DcJ z-O^RC)?3rt?T6Yq23LZz;-TJlR6F)5F6xhP#QatFe|C``9Jds%~{)Iuz zzqx7tOb|HYbP^kNVcP}0yZ!t#3jRsEDY}9Eahe@1{?W|Wa+<)W?`tt1>76XSE^4&l zJPUSg`kLKC4%(3KqG1lm@XJOB1I&D4*-sxai!0>*;29!IQP_T_%2xoSj{L`dxm(;Y z3+EozHJ+itx86j_IgLdo)@PiZXRjqfGAi9Sz91VWpq89=ym3B8*JfAle>2eDh5m*5 zPa*(X&dgqUt6-!^8R0mP@T3oS_g4JbuF?6P!*%iBI0n~kiw|)uB zU4LT)X)_IEd)UqAfo;|%uLl|j7 zz7>I_hK|$+oS=bT;z2^jDdT z0ZoOv?`%js3{f{KXB8gng^*M{cP#N?BtN`^4#DtbHuObWx7CHC$49sJPU??>pnxY9 z^nplQj+DC$ANq04!;0sN=rd-3R{Qz8f{>SFSLy3sz2D4d$`Pcfrk^r6hY8D=$5oos znF~V%E{O=(IZ+ZnWuB%q&nW_5F~J}azSHx1`v|!mtChkUCZ7L9{4Wj;0Mu?x?&*Rd zPZ@gUx#bg$U-C!oPe+1jJ0g!`+Woo6!=L`0y&WI$=(G`tb$Hj1!Q&2T)`T_?LVBYS zzuyKZXb6l&pWdw5ao!A--;@9yL;xa3!lvakmDhX@!)V)ASv;rq!IA}eP9Ru=p7zgm zN}YXz-}|5wyKPde`A5Ft{GUC;5m(efXYU4iwdAmBO6RS&EeEA{TlAg?vxm2PzpuCJ z&F7l2j*8WvF_k@}KQh*qSGIfKiD$}On}T$mtUkk_i!ZqTL3M`g>t^`we=&h%#01B` z>GM8k&j2V<^CKC_TGQaZ&fBl@LZ@Ic#SGQy4e5a67XwL;T_R3EYbo5rv?*VPsNO!L z@MKWA%L5{|eXY2}OY)W|6UrnpYeqn3lQ zFqi^w5^cz!G{W6T1;$C{-wAG{!>Gl_t~Uu_##P$%CMH|P>qO&ok|^t+FswZ)rBv;j zvg7vDvB@SbCDpg`xj@9YG`uIVl@8PRXan^V#hc`taECwMeXLK2&*!_2j|R;|cRmUO zfY6K#Genh#>XGkHELkyivn@E-9q&rEQz_jIE|eb)pJ)vpJOtEDM7@mBQ0f*iNIZP03=Te2#oY!JB4 zMLWr@9$?guLmo~?`qA;Nve}{I>`zn=(J~VlguzdsYWrW zw)9Evv<=;*v2l~n>r=SvU<{ zu>vu`zF7M{bMlyoV`}i%t*O5}Rrz;S+$WDjh6&`JkS5eLuGp1sta@79=lHXiy4ZKs z{$R+x1LlvI{`E%yRN~y&nh{{cwZtP+fwgXO0>p+bxbKt*G=@BIxb33BA=!c&ZBw;} z(oV>|h#~cd&ME+~Vk*1uTAIY=ak90C6@>)qC(oVNOHIVEb|%umo~VE1uq;Y|O!r`3 z?1VK`Ld#L8d5f|UY2HWK5vW8xXOSE0-z=Z*BkZD$A*zx*h;4}01 zCh~v|MeyUhT+pf3Zi56(DF%yCiSUv@OF zAN|<67~5u?FC}p8Y}f<%#q_K?a_I)HG%wkK@J~Os z!8J_HbEf+yAVBEU;pXk{ilDY>jvc9;%LkRJ(dfBma&U>PaKLh$QS(YI;e*iJwW&1e zlc||K?Cp3i`sY&jd9I&`=?1NkwT@M&8wJBj$;rJL6iIMC?-9aQ;j7=^Ap~#3M#nof zJD=;7sRDa763N0WC{lg}7TAY9+p>~RnNSCX=sj5swkR(T^ecwCP>mGCW0=&`44r-) z15^O7^)^1$SE#!)IY`!MP(E!PctxcBw3b+*ltF{t22wf?`5ag3`ZrW>xqw#=>rSmd z4K=rgoV`{V+f5x;I%9%5rJ#6x2T9^vbw|bn*M}^w(q6c0y9RTTGt?6)eXCqHiI%ro zgWhKGgliIE$ES_*?lbONo-jwT?**_ny&9`GIdQ6p{iCbmrmz6~=XF;28mE4&cipF% z3D{XSHvt`Kg5@EUYM$3)CbFrDBnwTmy6cChk}H@TZ0ec@>6Q{^|2+lcL$7^wXu$Ef zZu!9HjRxCVl;=R7$eo!2TMz@K1#_x7)sCcRz;qgX*LgdrF|x9uG2E1aG|8E8rAl%A zJc{qQ(n?{s`dQe!s^*3o;%e2{1D9=`o9+;^Jxi&YHBvpP4(IuQ$JQbw>S%u+-8Mct zvCESMxK=U=rEa|N^gfwd_QQ`1iURh(IGy)hh)Y-NqHi%+$05$NcuuXhq77EyD5LRHLPAUx@%G=+7wp*qkfCA9``D*Ol|8 z(y90jB#}4s9p|2;T-?hR_9b$BeC=To)7l>Zl*wKUbQos8>s={TFhQ2GdKAn_5yX7t zr&$A6J6o*|t7i_)&L|%necq(@LB@`kPB|AeB6YQ>Ndq_-O+NpXmH^>vj8q4_3_jmn zwT8Y^^nMQZ)pg;(zz{FDT-Q3=mmu6p)z!6!{aSUp3lgfFc#XK6aPLz`B@>Pjh2YcAfj)wd<%Ivc{oODeUut28FrU+kV zKi|{2s(B+{fVq>bQ`*SC6MT2+i96tl+f#<7GUWMYyH1KRd;QV)e^7N#_GpZ=U2yX; z#@Zaxyk~zt&U3B|Q#W(TWMe5;egFxdwE0J8tO={-GmRt~mpIbcK~jo++e=U#4a@Es zXH)&a(_I8>9s?x5efL2nw2(!#B|VT}<4h>-$Ei`l)Gw7%WUl^ox)xRMej~e$8ch|& zm)J3TO8tp3!5tRB5RNF1ZMjgXrKp}FC~t=o)foz=@tk0=n{G(NcfP51S*aPH=j!3x54%xKobK-(9$(na3 zNcktbv=05NZq;k}agT{DTNfdIG#T*`NL}_CL<(xeSt6A{Te(rv9~gjXtH}6T`NpQ% zJdzEx?%uxE{eYo#PVO^`r(c{K(~v=dpQwbYz?Wu$L^=N^^IHAhdy8v3kh>iO)7%-i z!g&pyGM9s!#2}&PI~ylW=NKc^v4r;^Px;ln^$o&<2eWnD1fzKW=7O_zDF>VB2qkNV zrqqU}W^j^AHgPW+al3H~P?MqVROXC-$-E{C#*cSl$_>+}^C==h2dHR`URlB0AlU>J zc6J0>Z3hG%g`W=rz%~S?Cee6RQNIG_QS991{N*j!@>%K|dnxD+s$e07YTrIJO04vV(LpDXgz%)-F~y@27I>2_zv z5%#?ihfz4XQ#~D(wA&i<+u8|)ux2Rjt|PMbPRRn#{&h{w%3$p&i0Wx;+`C zbV;G~IlxE8ciJ~pcvaAjZx(pT6X+)Ia-NnnR;L|7AhGc3ItUr~-p$xbCt%zUiLz?w z(;UQ)*Ya*NW4dE=*A+6qfwC`KydHzAJ96qNH;dbxSks1=yZ&&|?){)`AXnH$4-bd& zfnbt-W(@JKVbw` zm9_VI%rZyS$BUY}fL%Jii(-s3!kD4g&akW`D00B2Mo<>pp!}BbWD!p#|5}&F1zj5_ z3L@?;ZCNzWuXO#jlOrJy2-ZG70%e87QKWE7rgzE27QZ0tAjh?vV{}){HIF!Eu85HH zccdkAP2-eGifsDrir;7Gm;!vTLT)v=ihEE%X4Nbgk*nNbQ*i&J14+Iai?qt}irAm` zVKr-_st}r9S1sL*qTS35g6yz-?S)0d-ZzGsUinbPo+EDf|Ymv{+B7BF8|At@Pq1af9KCgTqPK|xllXcm}ubn2cQZr{=%$^9Su^~G$ zs10T({CsomM3j_`4D!q$C_!yH^2@wE={p>K6vBf(!5>G%)m?}0u5o*NEOrmf*S8^g zCF)kpGkzx~VG!Y)CxE`hd!&+3>L;buLk&Xt;fns#ihv}zkfs8l2UXifuEJl$;;$6% z*{5n!Q-aGT_9S^kM>rvl5gm>$dowiHE$~XY?b)_~Z~3HH9d4ie%*pLSUIr5T>*zc5 z<1uCQD&>)kFn97%rg(_mcKZ! z2eVGcf37|Q7ETW@(#YqQ43+J13*#R>0vT$*fA#Op=$Oi*ATn`6l{x>pMPpW7m4$$a z2Ce)X_yJ&8EUg-&yO$)?-QD%ID?}-es%bTE(XT7X#ZpQT&v0}Us*G$5uTL$tG?SR3^L42Q z@hR~22vh;w^)2(d@aCG~z_w#3aQ*$Aa*1}=Rv~OFV1e=;UwgA`*{g`KeV{vsmNdt zNs6B|X<1?%uftq-kuutxaBlP&Q2g`zpM6&4);V~@snWT>3~ic}GQE?Zr+$d&Gq8R! z`;f>>44JnttNLW3*u3)z)opt;36_SI?cR4Tye?t1Gg5RdbowKy_t}M1WQ+Wsj_^SZ zlUSX0y(6g5j4st7^@t^A`x#6shi=Vlrj_L)Au94;*D;N!i!LbRm|do?x^MA=A+4hO zza99x3?MX|17Ugy9P8YBqm=u^>hW5Wi-_#jr)Pf(mCj7xt8b~iFn^C&SE|3mGp(2K zb?nA>YfG1t`0DbASD_{rv6x3Ydo(JezNW4&(sF@AvI;FL(RT*Zoj##NQjjMTvLIMa z&SisbJ9-m%-GQn*n5DApf-xU9>z#~pgoGy&D_da*@PuQeRnuZLf=#QbyW-57#;aE$ z5gs*}?NF`vgFi46nz1(H0^?6Pc>0VV{N!#D%Kywt`H$DhGQ~#0ML-nD>9q9n4#oBG zg9~K|9aUK`?`_24pkuR!I~WdX2k5E549NU_a$%MAJxI^tuChz z5ye;LDJ$)D(U*nt&KX&1H)NO>j@H`(LPLiE6ttG>MW%U@zi}ZHBVxdi45rP+J6gc? zqlg_eHB1C>+2C}6o%MQ*$=fHmgV~Ipyu&((&^zB$GM!r*1wtoK(`*sdC)Uu~sMfaQ zFm>Gk(;?eF;HsDt_WVNb#?rNnvTt^ThD`VRn_tnr%j~+4B7kh>&`M~$Ry2&d>l(f6 zDm&pnq~eA=$gK^<)RD5KUa8BIf=jEI$@f(-25`r9;STaA_iKqa>0@t4BQ{!yJsjRu z-IH!d=xyh13)dc1*?IZbVZgWkZgu;EQMPpL3H@4{nj=!52%lMdt~Wy?N7aS08CVLn zZ_hrUZ89IBWbMb)#A*NyjGgm zMi||;0(R#PJ-#(?N4K#tx1&|iMb9?e6%ce+l~sIz{%iGrczoWL^}4-KK4}zSK(F+= zC$Rhwhh3vg6}utTvRvjv8Gk4Ew_;X9X&bSmXNvI|Yb=+J0H($NsG=9`9{ny^~gVaJ%|N`qvrOGJb#sqkUxNF7#aE?E7; zSm4+}C2B8j!_?r{3zLgP!u^b{ZVb^~fNL5P|js5~7 zL%zs3*ToP@ZiPI_Mf~ee5b>O_nUsJd!Lr z(r*l1k&rxnlZ-o_*{kI?L@pIvg^S0JS?#nz*#|YYs!*5EU%JW-3W5F2A~&$J;BD4W zE{3FftB_=$mPN7WTgpjeYT^+znTFu}lzW020z=Dn$pzy-${jhRc|(nyLNWm6WCF<@ zW)9D{uI=jm%eMF^weqqKm3(W%zKHJ<$G1%doEL@w&AQ(Fwf zFwW19_#TGjwIA+8x=ZIwi9MkL$X2}gYU7zs22aYHzloYE&UZ(?Yrt^3JGtNuyC%gb ziSIq{B%i6T3C^NwKr|~vqTN-tM2Jrq>6kDmI@{$iVE4?sHskSFOgqX-92gqbL2dA zb^BKY5RVyJabw)=gAihpGb-=Rm#k%NU_vJIW;+GUj!W)OWS9k+rB1p zRPt;i?Gd|@t(YeCz_j^pD#oW5BfN!XI9u{$l_gX0X$E;#KZZDOuM9tGT+87iajuKW zqt_-h9fYp$!gn;N?9e$U$iTh4$Cc};t9Y~PUDDWt;khgJxlIA-Ajd4pOGxotxPZTs z`vBViV8<%*A7AfSJujdSb+K#tcZ>OCbh#jLBA3JgI~@B32wP}J_gn<29%9lBXL8u( zB0(Q8gkb^Fy_BWpMSy$=+)m~rT$^|XN!iQ=V&^Ip z&Y9#65VW#lw7MP6xcM#X<0_-s+Emrfx3YO2r)R7!;uR!|1o}CP1r=VByNOq14X%k*JTh@#kRi^521{x}Se4E+Q)c$JlpY+jFv+$_HVU(91I#0UC_5)4RBj&Mu*+GAIaQNE*$=K zuD)qV8IVt*r>o4J9-Xi3(3VFGpL?;2>QLcIA0cw>AG=^bi^QL%xJId2y``A(3l2rc2e?-Bhm?zOrB z+mOzI5A2QMmBL1b7vhd-T9#RZsr9@IMzxfLa{p#mlN?hmgvp?{1qaXndjZt@(@D7T zD<<`Kmt*-&057#=xhj~!?y6hxk9ohG2~dSy^NDlAQS{3~ToM4L9*jf% ztNc{^4AM;Lm7~@%*Od2Qt=F2l9Z3^?*I|k(Hw%XzX z8C7mS)XsZ1ch-)FYf?PVmXg6ZX-RI%;`G#6O~|&(mL%Z#3kKg4ESRkIO}Ydcd}8CMXe%k> z!YJ_S-7ke&yGRn#2~SZSnsHH{nZL>}r~?fG-uqTlS>2wy^VX@{yg~-wL@1I^dfSkJ zp8D+pN4LBHS0^=Ogu~py_-*Gc`lNszinHu^U*22z3T z*z>#c^Nl6EHE`W-mWcP%J8ClfFCv*gIoeClY(Yo&N&sDZ~B_hIfxV?O--F%{kOW}BHb-9LP{D1c;%?-GWwPEYfSXja@NLeao2}&8L690KB12v z`733d!O`uj0-YD*s;HOzO)x6hmoU;SbAOC=YD;@Vu+qW@%_n1yqX<@J_l(!8&EJ;c zprtLs_-oDQTGg*KZYR^rl5AEbV?cxJEi0Ir-JDZ+2I=P%4;t0fw9sE^j`MfUMnV)C z6lpc_3_7eQfm?qXtwt^?{|DSaBfr(Lb_d38u&BRSO)>6xhs(+q7+-g*9qX~PbT>d= z1A+(k(S6!ICzt@Bu&VqTTc5k-kGbWmCNGWweR>|&lmDZSzdM@6{y5wHuEzPSeMg|ha76X)Du>nA{W3FH-|q1Iguo6GLy1)E@*jdQZ~ zD`TE$7t7&F8;wb*d(!m*0PoH)8;vHnV!aW_gPIC!zQ5UUg1Z%J6aBPgGy*6X8 z>>@RX1G_tH{RHT)8Ak*qX22NgaQFP|Z+!U^PcToWGgy|xZ7OE78goAiaF3;M8US*8 zJFp1laKnd(>6M5#Amg`t(YH9+?ii$R+n!(UR;~r#SN(DJ5`n!S#$G>LKQZ+t7)wM7 zGH2bhH+)Y*IUH~54u{<`INkDbuHiL-wFk>LYaj1N_ab-%b>5C9N7t>Mwz%Y*#KMkm zQ||(o)Uoy&488i@@g=(A3u5fW9kb16>6?sOBFbg>CVwyfxZbmX51tz$fVkT|f79~; zkgCo*!U;e^Al8t*%WlR_J60WKS&fZw%geGuOds#AAA*4INeoDcoZ1M5yX4!MNY{2R zLu%ltfwdnyu&2q0uUFSH<91%U3k6+ut-#6p1_D2 z$w<`K-P@ieU#N@TMdq%Xj1Ea`v*F#V{&XgH%02)lRT84)WE^p8*9NfmdR_7^6s(bK zz;5f9rz+M#^)dF;iE~E?>Mkf(c6kU~W%04GOzd|qF3ICC<{lQZk*E|cEfVZ_gG8>3 zC-16TUK1_|joJHCfF1yPeEE7bo7r2ne)Ql~;aENF)Z+-{Z}kCtH6wNX_$)?V8LYh) z5R!6$y`Z&M53pCeW}7BIUA^9N!9EAThleQ{rcUpIJr95=*kHZ&YxEm2z$aOHCYO7f z;k;X(6U_bDc^3fi4}S2&OBEB7!1w9Q_x&CdSQHF}VZcCPn3g)lF;~z$#(8j$rdI<%uCE>~fZ3}6gTY{S zr2&mV9cREWbCa0btR<~&GnV@X?#9~dX6>c@z07NX%A3cWd!bFh?nZ)Io7lXhTt@`M z>T$Q%^}LX!M=i-Wx#o!%%pF+&_o$frsvItOd>GwXG5tk%xGI67#QoaDM7k4e4|itK zv394zERMz5Q+9VtrCQJ`=dfI0FaO$$dNqm7@4x2AEf3cwDoeLn~(XUNcXnYGI@gHN*bql>x67pVf^`FV!`(9O%M(R3=eP!C~K z*aDe*mV+=4Yj2%PUMkvDZZeTn8S-^X-)b@b%8aug$l4nU?8Pw9Cg;W+Zitix@L_j2 z0`b{d_lfZXK#3`CAj7~?t@&NeV~z{lktk$yaS>|W|L=eF;qhc@ZxtpWqUOhvPlt zA9splUe>xFpA;@Jg&F{Q{W_Gx{pKHC^+!W{E$WRy9tyL5TH17_weq)`uQivhy%Ey4 z!++0}ID2);bHxH^F@Sz7Ln@r#4O^OtRTLc${*yQTa{y$m5+{1OW0|>gMCnV@yElos zBUo-AGwlziw<0{Kt%|PX(6-m)l5eNQQuBP-l+V&0`nRfP?GDA+8xv!9CDZ$u&yaj9 zzNq&U5g0@C{Ds#8z%#3g1-K{U?wkV150=9Vh=|$JtZ#SV$vzYZ9>McNw30zUQ5bqTKYN3})czbM64( zAOM*}+?{EjF+X3vyqUEZB8PK5TV6LDS97iV@S%S%77q(KT$7v;6&V0Hx#UZ^&YimU z`ksG%tX)dl6O!4uYBI3r1F;jR7X|W%yqBs4K?&WbT?R~G0cNn!Jf8S)fJ6g z+`z}By~vswJlsA87IzxvCjf_TydBhniJ`E1514w^7X8b>f`M71AB3xnvXf2 z0KJT7bqK(VhH%Q>W#=j2O+$p81A79*7a8;=%Hf&@?kWJ@I_nSs+`YOQ&ZhPb@ItM7 z69KP@I`I@P`6d;uDVDW6(j2A+7Fw)3UJjUtHYahOn0ndkJLlOo|0Uux|LIfqf<$FH z(Xi}nvadTzl)*I#+?A7sY@YT2fUZ7uHJVQ4Ue#z+V?O_`E*mgRO%n$_?dgIya;|E0 z&a-w$0OLT(Tlv-JiYus+ZS9>vy=s8Z@_bb1we>(yYz!_sWKz#3b&G2$0f_* z8t0Y|0KIzoU;)hjmv8$gkK>VCtD3m=D^;~ViY+(WpiSGdM7ml%EoHFw8cWPpF(35< zdtGe(G+Z;#mewUHF~|D0p5J@3=K~4y_&%QNsT3M9S=X$=aR3lt!rjodx2$UT}YxUF4mqu&h9#}pV)fyh(Koc4uIJA zF5V;qfK?StNLH$wyXAuj;CVZ!?~}^40^GNChno!svs)`Ph~n<~rS)|$;-ESeu4%={RgJFn&C!A+x&vizpsz6oY8TQXF+3Q5$K99NUGGj*~ zYyQ|;zHXhuDS#JeJ_Eqx&2>MR$vu?w$>GX&$(z%rXfEKSSUxq@kZ+Cj?T|RTqo#be z`1;8W-;^_C*E3Zmg#w1vKkJg2gZrYEJVVxE@8Ip#>5c~6HNMyY(2FN$0D$XHUJqu0 z-o?zlcIj7{S@OqRZnow`y24`Z&aigZD$(UJZpz&2Rju_CsJ92;!+bAh_W^I`rMn4NLMFYY2_%g zXpJ+h{m^G!RIJ@Kcl=>2Iy+-;*a!-GH5}kKu2&)^CU_qAK<7QbL*ZZ2L`S#g zE@4G@OOsYS z*BL~To!nPd!!YoMuQP+#^g5jm14Bzny3`F$5XIqjQM@KtFm~Fw9X7A{ZC`H`b5Cm9 zm%tssY&e|WiSiKSMcv^XiNu|<|K>Wq@YgsjGp);fRYje%8B0Y^UQf(G>@Sj%stnlcOBey!_8`9n-BnbxF6n2 z@Zu32Z`bb~{EQ1JIeRKx(Uk z0I{Ar^10=2mCcLmtUY_Iy}Y{dCt!~OHjUdn3>0sErTw{Wzq9vRYE8(KRO>*aPl&r` z=g;6x0Rh2a5p!R>7R796r3CG9X3HnC3iavp^RV^n>sS3*p!eZ-Q{Ix6Ea`FDHCsO; zc79m*2Q z@JtoM+NJq>5n1GJHQ#Tro2lnAuu2}=fPSMPQaOv?&)%6sOzm}XarwmSMkXyoK};~9 zjaBM4#oP}D`o@8KQV#d6|L`LLfZ!9ie>fVCq4u!@%Wv=K=s`fhzgL zuu7uyO!?K$aGOATHK8t3f?ZSH@^gTX?jacVgF6u(CZ4XAdDyxJ45uvl^1-OCM7la- z?NubvRSWDbHDpr&`#}ud?l;n47a@zKxw3!;y8gFvc(t~<>vzpVwFaClT=Zv8&jIi> z0KB*|ovu}?+b4qqa=PZ5z}&aW+7is&KK3VfVlN&M_LC{DkWE7*aIG6nbIDin%(a2W z)*(rB4ppIZHpZS3)Qe*0nR=VA{Os!IM6{df?^!cRqgRbCSbR_gx^0%nsS-p0CIvd@ z=RLri0{Vm_T|0q9=gD-0u8CZqmt6L>u=s83m%w`7dvQ*F z5PO&tRqB$7bqQck!{S>H?(^;R<{K9TfbL(v?#}|c2NqiQjV{Hq58EP>s`R9XuZL-F zVnYsS+bcE(4tB{ODt&8=VO=k52jNeDmy5tbISwRSfLGI zB0lRqecS6MHnNFc%q#WgvAyN%@krrfP>+r~`Ihhg=>S0R*Z%eo-A^WZrSPXQC=%)6 zZ&ZW?E-$mIi@B#rraQUh%V+I}CDMr-J2mq?H%azZ1F&ylsHs4Gg$Xxh53jNLltyDU z0Kc8R6B+;fMW+J*Vk2fwQLJ5;3fFK#4p*3KzN!7(vGOkg<4M^1l_p`ezZz1EO%3e6 zZKKXmL{WX)8=FWcj{dD92lfqYeHGYKf%-O9+=OFc737@)_$}bh#((mHIsnLuf|m=} zaGWvE*|Ozn&-a_n+_ByrjseUDLwhU2!-P9qodJ%lhk?UY>FPTe8sd_#eXSjOFxBId zFMcgcBiCVCw!U}GZUFT{hPUIj?PpfMekjQAiN|jR_)5S@p&$^Exj3V)2e4Rxh-f9L zE?HB4Uw63HwtU^z9WDv(_VHnIC-!mx&x@X~sKPAV^TgF3x=my4E%7pxVt`awk*<1| zd^P)`3H9ThVYNX{PzQ>0y?gr&jxQ({$=%jGTY1L<8MLK=B@84T%9v7{1OJ?pi%foNa zsJj4Ql}1gjTJjC9BVTrg{4TcB3}CP5dDIQ;N$_2L72$;lR)9Vyqu+Or)w$?p%|vB} z*Sqxm9-`8-3Wh8duSv?|Rx8#WtrSiZ%pGsO{e%GE;ri;qT6+)j3VBwUlIe;}ta99? zTN<-*Jxl&H4gz-9rEjhS``)CvLzCr_AX{aIdD3vm0rYb>eO7=k@qAPz7$(D})9H2L zNz^=MUZD>2qBa}ZyDXUd(SbWS5qJOdU+_5!fUZCBx*r65r)mJ=a@}hVNZ?#K6dP}R z2-}&pw9~MDPr*DvG?e`h=@tx8FY!yI(~;LRa0kob8Vl~S;Ck}S-}R9I!0fMm(?7c#Px)HmTObl1f~;1{%DX(zDbIVrGxQ!W9?3`_Fw_(nSed3!CjZ@{ZJ;K66Dj$<*FD21sl&dml}Rb z^TIU?#=gjyUuE&w!QNBJ;hNqRE(!DmU^*Jw8xbBSZY}%KQRu9kO31noiWx^0S@JC^ zJ?wHmgG<1kdfxKJ){{&9Jvcu=P+)=L8L(u)^>zKywK52&|} zxi2yJgd8sD_ouh2W)L&?O7OT1$#lnBm9EGv`J#ZmX&#Y7+5@YD_fr$FXNj?=j;*i8 z)SEua0{DX0j6y?Ik>Bg;g;4=uLQqO($0y_N+hXszN0Y!^cTA^VhWDcPx1(FJ+y^`m zh}znGrH*>?ZIr;Zr*MrN`5JEEKFvKcDx4=SU=$!+AaSK~q53 zTd7E=Ac7FMdCQ=yV_b%V^x)Ip3EL`x+ zfI-MYjciD$lLO^&P4DME?+*8^-}&JgfZ5mojemYSnbNhwujV3(WO6C>?NmcgoHk0} zPA>TaS^FVHYie9hwIBD|7u(z45ANss2^rjMpg>0CapFigw019kaw1xpzTHKpDkaY&IkcGDmnC1# z`fcWXr79_#71)n;q^K9aZ4TGidx3_LD8MB82f%0FTyM0@Z6Nm z+LQBC2(UZE*qv@GTOoTF0f1flN_lXY(8s zr)0Vk5ABkf<$>OZYQqD^n@Cq1libna?I44(0$@)A;Cbf1G>}h|U}ra<1w|LOQB@Er zQSXd;fDu{i0LM@;6G$*`9J|Wg2}dY}OEPx_pznPvl*8TKJlxs9JVsBM=Jrt0qYZA_ zQ$6|o&$_`9xY}Iug)OD#6|6}sc}oR+6#;uy9)Plpsjc^v2H+3dUoj73P>*|O;2>`O zy58EAfl%`H+_pIoBl$c2SAWzWMWgU_}ZC0)y5%#PNnCyQ5_8NjaQ; z^FIjXaNqK`e&lu*nCpbr{RG@j`d#V)r&KO^Q_VfNl(FAN!!O-|UeY=YGOWFtf!&n^ zxI(X?Mg;+pGC@J49;oBt%u@iQstj6Y>7XT7J*~Lr7fUD2and4i*W?XFTav$ZOBz(=+u`b??Oeo+72nB#jLdwfZfHc_R6klpKJcW zxmHl9h9KX!+)aY?QW;vNIlw1>W*c+gC5LN;6mHc@Nygp{fXQT}cTk?CzC{K|sPF~j z^r*90jAIhG%tpnrX30BS6QQB3J+0)eBw%mub4&RQy!!54RYT-vziWE)Hzd$J3w|DR z=M^C5ZAVvn7TtD8HqysUMv1h`L!U*i@~)-G@jZ}D2C@p`N-`9hND9PI9v2egX<`_i6g zNdT|W1rv8KdgoqO0GVgT6ATm_(T7<6wp4~T26@RThie6MkL7RyApiTf|Ktq7?AyQn zC$0nQ-KGNfLgVdCI@ph_SxiyoWKGlN=;V^GYwhPwqAL*C4+X`dS@69*gD$wme=0ZxdWjN)*hr}?G*ug5w7?$-RgNkKG!{^?fYKj z{Sk$o;h6QwGjj&OSgT-KE<-B-&;MJX!lpttyBf-@ecmRWdr}U^z}09np=(vYcp$X} zGJ;c0`GYo3A&V%POjmXPc6E=17jJgE#FCB;- z>zZ_gwKolDv%YU7I`sqV%&Tfx$c7Z>Phfh032Y>N$GmI}L6)o2MZlbN%WEE>Zc9J+ z)$bVq!Jt38Qfnrq$>C0iezTZ<*5Wm-FygqzOuJ}xWwbKZaU&+40M6XUZ4OfQ+k;{>Z!u zO=;t0{u$K?;S+B#=>tFNk001BWNklj3}We9 zD2d~5`7dDNN_8u(UyoMjzIt5hH~(Lu9Pa=5haY$ySnm$h+iv+t6Ap`lnO+NO%4fa4 zLW`@LI^#Cybf(PSKV{07v}ksfoV6(d zzX8B_s!CVVeQc;kmwGL&0(*t5y(ysH2IC{{49CXv{@2et1H!him}kb*+)W>Y`@9^j zED(ZL(1P|(9oo}4Ci(HaJKO*t8%)P?1@b^e>85rb`sK*rPNSGjwzdPTW@GLpU5C@7 z_NsJEFcLL!s_Mr1E7POUv|8~+1H8-kA9scWb$soaB>2WIdIpEU{dGSMiVNAug1PT% z_qsD4-^zr#gdA=>8QWKY2ZhNehciuQZ%4|i)(#2X!rW^rJKGe)E=PU_fl!AHQ%h^t zJ!@?5bsfmsvxlc_;d7pR9fQG<6_q$lkL#LF=qgM!k0A*=jW0EiVJrju3V^5HS#9a( zzUh0R9Bwds4fVo;CwbiRZ5wsQ+v{42MU|bc6_jf#c2jFIox=uD(7df*2C#1f`&Hm~ z>AG`yWpX}miOvi1yFKHp5g_&=FSUKehKh7kfW}y~e3c`X!YwiQ_dPo|0QCNT@>*f0 zQFl1aT&1o^U}(xAKy|o|Pa%q8w<@2etjfc`j`yx1&Yl;rivs#m=dwgO9C5b?pG^Sh zoViOViDQjEwqOYsa=8fHNpkMyR-FL6fC>F?zw&bdK(DSIt|ajKME*tqDNY90p0cw? zpDACG0e4uuy$0i_VfEzeoV#45W*zMMwhx?LJzv~48X|Bf|IF`FXB;m^0YRe9a0+4z zh6RhjNW|iKe_i<`p>4f+KhK!|=5PDZ3_$Qh-}k{+f$}}5v%bl*?)e(x?bNgctTr6_ zrX1s>+A^(0Wy)vWfb}HP?LOQKKIVd=uFHMaUKZP~J69m{$SGB17G?rG&+A@Z@)_a+ zHVS4KKOy(ytOmB4w*Zs@R;dI2IuzJS(%PE|BOBC znU%xb-5TW^DvmdbL4ESKDuKN|gRDe=uehdwC}2E;ix<8RfW!jKAW4>>U2Yn~!Ezt> zZG~*;aD-_HV_#+O0K88<{Ptiv!&M0G%s7Ns*y<0Eqh`=Wj4dpDXPeiuJv1i?WUEH* zigcx4m%G63${dyc42Tf6c@=r`%ymci9}4>e@Uwr>Y<#nBEzk0|@5Y_c=^2 zm7L|}p6>IL^Vsz=^FlU61P<>{hr{U&6xp@zM+^*&K7f}@+&0*9`L^jn%&Au9?sz@< z2CT0=6JA`jZ>6JlZCQtKI~uvm0Cr3%164uKge{sbNeVGPq;Ol&_afP-W{h zHLETW*bigJZYAiIa}A^m`5S?Vh#Bxb>QVR1bk9g7gmak#v__AOmI~Xf){;NkmanlT zgShqUSAWsJkH7R^eGUN3?rw+IR?TB5hfDlIT^e_nC-Df%M&^pQpF9Yyyq8+$qKVb* z3IgVX4Fm^Wr33|2n6AwXGKR=A3}XnM$M8IW8A{~aZkGgrs_2}(Glgz?UI4NtUGcmD z=T;c}W`f(cb2~b+_3!-fzYzcv0C;@3eYEz|?tPEnGoO^KWq*pype9bmWW#8h3iX9Kcj)ywAzkBruANzwzptBxB0)Yi!q0zs9l@OJL0g*(A znb(0m^=-C}m|-~{LBp$e2Z8TwhVa;s_p@<^dVOhiKIUGsJqdv8zaS*IUx zp&^5&fNV2la0=aUytLDB+*eP2=Q?c=Yd-|oD z`!8<+j$J~bUB<@-o-P7fdanl&Wdrz~)#)@F(`p#wK3E24vw5Qm4M4o~yfhg?gqNG{@pv%;n#l0I+)AOr~A@-_(F^fvl@+X=4wmRsuxUVPI&6K10H>Yba}bR67;K;q@|ot^r) zpGG4_Q6ZvJn5pnlGO!ovlHbMJT~DZtubrR}Wnw}E=rQVrhQ%zPiR}kdmB~o#cqGBY zK!UsetbaRr`AIvtc{v^3{_bS_HQzOuTuBJLF}8RBdH|jh$nyZtKn>Hpzncg|1fr@| z1Qwzez)TcV5N05ZBlbQ9!jD-olaS2^5x7f`D677OydF(LUGj+2r{^79_a}IFJf2M^ zvs)1p5Rs=M`_Z~>8h2ad!C#Lzp{betb<~vK#EiNGA_@z?5ry$_@&G#pR5b_!ng)TLsEmec9|v|e80h%AKN>y`u3iVDn^!V^_;@h+ z+V6f09{Xyip?h3oI{20c>i8hvP}r!8hVgNq z01H^Fm<0%eNibA97-(?+U`O|TJG<@QT~CL%FK45hcVyiEqv`bPerPxwjMPqb0hk^D zkAa>CVFMT@fk2g1M4%I^5@ooDKpy>@cv;af3tkey&K$+mfhhzt(Fo{)2}1Y$1i&nM zS#JU8lJFQDcecDN8pq)3dMF5yocfQ!trZ#=<3B;6net7kPhRIK++1%#5k^tfiACW- zdF-u%3-(ggm?_^JV_6b&pKA}Os!~+^Wx>G1%Ay3~x#6L4g4;xA5)1}v9|tYbGxCB%9~xlv~jpu*sTW zS;U$$Zq`Y!zqpI6e9XImC#;*!^D1tO1UD?$yQ)BhVXat^=}2WXRy!Jr?e{Ud=@0H6 zA76b+`Y+$H{jd2u_rq6rG950vuwxKM2f%ZNdLfW25eXOqfkdoappXD_m%D``knk9p zv+}62oB%7JzW6;wA{j2h=0$7-?vd<`1vA0?HO1oN*%)(qoLvES-2n7@6wG}Cz%u}y zj2`=T_Pz&nILxltX91;VY$uJotB3g}rV(n~GuU*sm!5UpvvInIbfZO?@_XibGif3Q zLm`SN!ObKx=_6mZ4aU&v6gnM?9S=2l9Lo4%D5HnL&As&RZi3P6J9hl=vFYT0_}=mK zAwV!)WU5mSpf>>We84vpvT=?Ww1i1+s%is;KqEj;F!2OHCu8NB0Q4pIdj#Z3_j&yD zfrP9*bjfR&0UxpaAWoQLAmHfp=r!XA&{yN`$dS>~7I5FVpb~mO8ujl7Gtq~+MQNc# zL|f%>w(c7`Y1}JkMaJnv^E6yCG#%TY3R5q8k1L_8P|_F=8_k3pOOybWz={nJj3%nH zF=RN_@#9c}{!nIj{o5Nmynn5uyVt?^@zzfN>UWK2{l3`oY%V#QYo4AP!1F*R1ac7# z8M3O16_r^4NwD7-gzXvw-wfWGV9iPQ`}}iRX6$z3$IF%H7BTpU-3Q^<<7>3C!unc|Cojx88U~l>|dl=ollHu)*4)0zE zlfjjpe(m>+rjLCMA`sU&DLMjj?J%Tg045020{BEB5@;Yv<{Sg#qO_|di^Ht^T&yLR zg!^5Vn7F_~mfi5O4DNQ7!6(?ZL_1$(vpe5P1oi-AoM8MLjE!BAxYjcFB?ixlnETUb zJ>1@naPv-oGM&i1s)-ISd!ok2$o`FUWz-4;*;9z9l(DHr=!Sd_R}GF_hEb>&rYM9N zHAXRD7N|1EQcG2WwHB(=31mD{84P9Ae^7fr2&NB%`x`sBzShzGJG05%CouV|-#45- z4%CiA)*6>tjSIji6EsS2QzU?V1*ENL00y%=k;b`t$Dr zOi8E{KC_g5*i({K^M;Fc3hGLxtkhrTg6E;&(cXBuL}w<&$!#Hs6I4S#`y#nbVXYtt z0;@9W!}j|+d3@C1_Hpv?*uT1x{?)rOynlB#{vW?{Jifixps$PSZL#UuiOQn(!sIqE zL)b(>9F<=MLBvL`Z?`H0zzt^sZG^QE}@>gTIq zF3Uf+`uXb5CjoqJMDY6iq)MPei)+iT9uX>le(Ifv004gbQ&)r0NN+`WVvN^;ogTYZ z$ekzUyvbM)D65>FOOcPI;zB)TcmT?0=%j#z#nZ9KP-oJ4{d7>+)l5|(%9zfqs2vSd zMkB~@p!UA6quYmv$MNIKm$rZN$zX8xn=<;Ee>|GrE#k{d{-Yj%OMpBN>UoI_^~epa zQ9_#tL}m*X9f9t`6|Hl|J!kHb%OnZJ3l}-9CC6E@>#lHMp4Bcpz!6TQ*!#uIM~rh`OX_4%L-cQ3Zi$p%IUPTm(cBc*kEC1!e)M%4DQE8^aEV zG93>zxbMsCu0OaN^;;V8Hl=?xRNolfgsWRLG-1NMUMH*+kr zNZ@W5>y&NBeC=vEdd@DYVs>AW;IB7`6a#?W929gjt(BejE}P6h*= zT@M~_Cy#eG!SMQ1I(~dLoBWmU9?k9_G#DmWsTWpp#Tx|je0aV`V1_b>>NSZ0TwsH# zCbPxY-QzJ^ra5RYC#ewx3=x{g&|{Ea&T!X_AigQHeCcCJCfjX}hwBy~*ByYpFCM-N z)RFSzOpLva;I4^dCV4E+d)@);5Bs0^W8YqWJZI*}x8oALGGMVWn>DX$lI|T3zNo;eO z7s0LpysXH}WC7w5$J2E^KFxpzE8x8X(n;{&$jDOycp7lt_wTk$_be%KYwr(`X6iVaz! z1y8Y75m-z`>Vn+)Eyv#{^dNTjGp&#vH(9 z1-v&VvT@?;QO|SnB7nyN>@|qGs$o4jEiHKO1MsZiT*S|(0`|6nJ8igW1%Nl+ILE`y z5RW&vgTV5mDjlwMZ(K*XYMAk9)Z^Kx9hBRgEuTgTXA|Et5tIQSKl(XhkWr{8Et1%x z6F3O{)YfVc1Txc*g-6n|QOLq)4}BTkjqY!C^muP457)uu;aaAnSF_pIe*YvGjns}8 zUBr?aabZAv5r}i_5?@a|3jtKu63^DbJ!aq(83M_lO#(O;0FFh5`f|eDGK)@vcaojY zzs4&7zXJLyE3cHSdlzu;V&+-EISW8*%AIv|{oH{?cQ^>3mzO=@W{B6Hx*rAs?v+hg z_>b*zFgk;Mqwfujx0eK8nNv~H8$`6Z|_`UBulfq{y*Q1 zh|a01>FJ))c)$kD!V(KM*v3LEjl}{9Bo=@WED#8gki0-@OqxBJPbxJ}Mve{iRe@Wn^V$ zWJcUyob#RY|5NiqfS>>p0u5wYodW_H2z&+4o*c6`!nT6sC3{nVbuK>DTrBb|uZrnJ z%5?0@#n@Hpb8p}M51GrtemJ*GUZBFcxC{V!Kw#BW;wnIoh&%uh2rt{)vSzW$JpgZ< z(gcLIRco_4=9ksFv?kfn3GjB+-1bUeem%8nv2Rx8Tj$}eH*T)+^$P>=#Q}cEpSz%X z9e}EB|jB>yOZ+!jJPk!~E{fV!a|B%$#P@HEZ9SH}%1CG5P zbM5mY`+R*_?$qN^6wcgv`}e#r?)4H!3roNs{W&iF@fU8(?|Gbb8n@g~ zmizw4#HC(5t_|BRA5ViolqT$i>iAKD)Hq@|f`}F80LzxEa1Ndq;5=uy&{EE`vMh`F z)EDzJTg=B|@~6i9!tdlJ)#CFO!0Rt5bpT3er#B`q3QRH)OoT%5P3#kU5^u-+OB?(#)8pZa1t z_Qibc%f(}7zV-dI0eIuk24KzLMIHcX0KVK0Zy+oyh(o|&5xebZwgM=vQpwtW>MX73 zQt9wmm$j<8%h1K|0QctivekOuti-Xt=e-Ht-W4;|1AFd=_fbYLdu~7G32~_^`~qL^ zetXNe+BD7c$Cd@pM5sif9@c2TSoG_yZFTRdKwoy%ep3$uq5Uwrrvr6&H_QF{pHJ<_ z1d9?P2?nbKs3v}NSRX(u1r~;9a@L8l&X+J{!M+T}E>mYaN$j zs)Bu!rj2#A(ATETcf4TWJx*dpt_AtuLCqlK!XI5B*dU)geNoC02eS@**v>mL0q+_*Vh5w9#rd&DU~ft)y90L z?~J=^^1Ti4u08PfKpS=d{8H;>eApV;WzW5@>$Y11^;e;CUwcq}<7*G;@i>E?FBan8 zNWp^$?i*Kx{&jRh?wsfPA&(RW*A@6$$Vt5qu4>4Gnc|Z;J0Kb9n?|7{2439bBSHuD)A_{|S0pOvH zt{@^yw>GIAQk(~@@kM29XrWg+WjC9%IbTf2HXT2=+39C4f9t!G>P(Aq>i|~`z(;iz zJ{o|M0m&fbg*N~X1^+7Or1PvADpyw9q#P+WG;$tMZnPHhNzReb*4%G1WM5 zv7PYiJpaBc0Kc*C=T&ISqc!xQK0Ey+Hx^S-iQHC)kt<(?yU88*+pJr^3U~Lut_U#( z06eIfL~pmz1ymQs6c)7^u#R9Y7iHyA@mUtC@Y#Zk$znD!`t+GgC(p|4tzVy%U!-EV zAK>bBU^p6ph64)z=(L<1_v{12y%V;5MlRG79l9M%;#+PTc(B&_2&l?}r{IAFt5K&*UHhV+>;l7)ZPPeh z_VOM83H4U*y&al6ub1=K3hi?VS)yp*9bDRoNQo0r5}Ie>92{_7#9ArKinaJmv)7qa z^98$Enxv|c?8Y5h0{jF>Mg!1rNKgr+c41?ISY~*3VCy90 zgv&NeH-^^^0l0Jk+++8!nxOkk++%m!d@DPA#}xV@5I>{}-@I0055!*6F~p-PdAWOX}rUiAF|E!(IIDz3uaIyH%7EKFfjOeq3L5!3)6RuB=@ zII}ffA7+8AM6Bf+;6=th&)6?C7qiq<3q3yfdit!&=g+J1tq*5rs>PP;ljx`cPOk%l z(EvyWghAK^=N7=(Irt^OA?u)(tu}i5c7MPbxYW*U9{m&Neh0w&CegX8`o`79j9%6U zUG@}9*9q|30@HiZ#=LKE?^=hGR!yS-*fjG~mSLf2@MU--b^Plsx)b-PMIO5qxA(~+ z!bC!VB1OCexDo;@QmVaRECd#YwZg`5UKyXWFZ0^aB@;K#d@J^y`jt2dHcXoa{OS-)^A`guBgK zy0XAKbHaDD&l$&0ptsvE7s(1g2Ij|p>^|s4fJeCB%yoxT@mMSw?mN4R66bqE z1Da39bML>J0ty6A-~sk#x?j~xjGNFsScQwQ-d%x*Um=ka1sc$5g$$&Y(cqFmMCyES zab?b#F)n8x04{E>eL2@fo@TR&%O>T^?-pOyBV-(C3Jh6=nMUReUXPA0=66+%rY zp|wyEFTxOrXJOCvRNa^u000zMNkl=|6LC;JB%{ z3U>wf`xdRj?fN}m!HcrXCd09S6$OBY$#aHE)Y7n~Ss{ZU_@R4(wceH$bY*-lCJoiM zTWBt4I@Lu!J9XLg+?M%yY2N#IW)~^D65zUpjvC%g1s-7D_@NWEBR{!*fzedk9;BU4wBQgKFHa77scT*xLvYCQaj#ZkCUgSOqXeka z$XK4~wDv4~f0_Tkid=uWjU5)PpIC|nj`GB@McUR(F06)fk?J@wrN|@g_fJdN5 zxL@0YsCmK<0GP7i^N^dQ0D%w@b)LK5hgG1$LBVio>tl7ho*Y(d*^nZi_16C$eJLN z0YHxcswdE)noyDeZ&}L&_re})ljG}W+3NuBY@cHlFWNo>-<&}2S|Q^O`&7SKu^&3P z#@oYbhkzWo+I6xB@Cfq=_iKI-b*;m-cil~v+jF5|iA0@%y+D%qXt)+C?`mnk{LV+H z+AnvVVNsqSL?nt-a9(R#=pvF3g>Y1Wzyf#=lvdanUlgTJoh>u(Qq9#Y^>(WDOzY{X z&&H3dJpVi|-~Rs8E_{gX+yJ;5)e!$Gfd&I0Nl2hpu4;`Bx`-`Zc{o(>7r!%%Az8+d zQiNhc2wAd3BxNgQ&yqd+mTWVOWm3r!Us2Xp`;vVdhDtIq%1o9pL)q7mF=G6#`knXR z`@GM2KJPi7^Eu}}@4W$9gm3VbHl@`*X|&82V{QjAjXQfST%PB7X}())2m!j=XS-w^ zhBeGQ{!d6Egz-i7c#+3|o#c<8PUfr2I;e?f0uv&Xh_WGo^L0TdLlq~Agx$aP;(iPS z!mUhzbyZb9lCRdi?yt0D|19X-mE7DphUfE-@;)ljwm(;*(UwUb^J0$kId=+s&@jC1 zhS=jQb0Ctd?DX%aD25ldQPF=2SB;MEK;HbAi)VcN+HreJGN;Lnl$W`;6E0vik<}rl zU%RPu6=21i6i>~y;S5VWWddor_v zM*DT)tQ&G++!mUF&x1*( zVOB@+p(Do@WH;J`1KJ3@H>r#;YWoS0pxW?wmN(rJ89ptDFnGZAb4;q}7!6Fe{P(rqfx>+}u_*EUgsOe7V48)~L z`amTyN6G(2Z`5;)f`fTP#mAWp5$*Eo;p3Sf8rnkL-8)#u{53a=AY1H&+lPJ3k@`j& z=9dB-UD!C~g9*EAtqpzcF?~`SAz}V3t(Ca8!S}D>-$ox_x;rejp(nHAa<@}nF%V=X z0U5f+i@LD=@`?R(LJeNIsAqQv69n(dd*uE8$_f#o3e5-&l3pOC8~<dEm^ zfnPpRnq^d>QE`-8WX{W=QW_3(w!KC4{e*w&5Fn; z!#8g6-upDfd1Wm~bJ|g%d}QV`Khw;L27S$Uw$$Zx?M`mEd_eNBZE?@TM7!X5HB#d< zPY;g~fpnkk7d?`WS!iZiH+63|(aY|>vP@V7{-GL#ynq$LK~%1=@dx2KMC@2{aI&0M zriUqg4}Qg&*!2s$io>C3D_GPbw_3k8fz59D*pB+G{SX6zYCN2({W}90p(r2TR%Cjl z@|?3!H$FPnelHNXULopC>!<0(rE8DIjQ<3c zV9tO0@wT_?YAKp&W7bN~CY2TsKhrVT)lHt~xT7qjBM}1Qjx|7@u;r<=Ipmn}Rrstp zUUuU=Qn3BExK2IlQ{XS*fQ~>(Ih{S$Z8xp{zey`T>YquTpO@06hcY$se>!;19Fgxj zP3@2CSOwoI6wEXKh%Ieek)O)}$CL?rKZmL@73|`#iriTTfl$*S>xz<|8TB7ztEYGU zo)71FzeGi>b-E77m!O%iPL1zw;hw4uSx$`*BAawK*@+O9lUKZ<_B4I)F8fV+I~$vP z9jb`y_t?#@T1JGxxYJ~(mG@+IoqCtdnN^64D}iELBr^HKHq5S$v!#=S^|XuIPUd5a9N;L>lTauHModl8})4heti zR+tSNE6m;eXE~43{KX+0`1qM6*=JdTe!9k4w{@H_#yG>AglpyrSyjLyM+IMBnf!We zh(qINn{rT2jwcUzogYkJSIpLwO58}PnOusFc0Yt21HSUnQUIYZBdig@Y<^ECvV~WL zXeN0LWQ1onK)qvs)Bm-R$8Y>WqbxG~VQAG+V|XFGw8dJ(JB|9z+m+$N5qkSDv9r#5@zsX>xv^oBO(g z9mvml=Cf1Q-L_ttXIXf|V{KVDK!~D2I{~ANLs0ss#iKX^c z+Gxu>S#%`)n6Q9a65qiDy|k0XzUCH(9bDKV1$F#-ZDDQPgS!Bo_`NX-B3fP_K4$B2 zuIK&hU1sK67VeA4%zq#qZDPNyX6_Cp==-521@7~)kHYNcD@;$*M&9GnBKBH7u?ULk z^9yl5$H|?NsZszrHs8H?u+M90@ni_&WUpi}X0x?tI^Sd8q3gNc%Oem}nXz43{R5-4 z)H5{J>a&3y9<)}^(B`P~CV0THJh=|r`?ch!TT{f{%YSxw1?%;IsO~(vFKd`jJ_rzg zEx^$sRY271@|qCpKO1=)zrxRs(nv#7Ag)Vx$(FV>9H(>f;=|a-#2(IE(aB6bpFEC5 znA-8L6ajT5@LlN$EvIFF&pE?h@Xl2jd*;WI8N8!$B*y~N7AC+^t_?nZ3QYOIl1m5%u zXd2na40^kMd(dF{qyV#`Jr{-bx1w=%TLJzKtN~osb81%p7Bme>a*9IW1Ph4}!`$4~ zhlp5pixXbH5FcFuhFZQ(6xn^Qr7Ol+c`pRKc#lLvOkmunz|pZwYSDB}I2JdNTToI) zGJ2)&RMW5Pc-zYKkc##|O<-Q0mektDz}aZ}%R=|ANWk>49HinKu$(QX;_}ptf++av zT|KEEXo~ zomb|-IUNp;a^0(hRpX)q{vdstZ2_x6k8PDqeWRZAnXWG`dOm)gQpnJtV*Cz$#j|kh zXaTbqoz#vY?!{GIvef$$eq7pbAwFrMiV16!#S(+~FfH2-kXFnz9@^xciy`*St=mIT zpEcNqcunl~!2r>yY;uOHpVkyiuZG^@%ODs*-R~)zA9+{vV#D*vaP6rYvcSy9w0!lj zwa3iWb@b+git*i~LU*w-4VpBd`4bz;f^LHQ9gLJ)cxa^pNR_KF++lgOnqLNGR>9or z=MICHg&Rpdk%swR+zz)BDj-k019bfHb!4Aq=n@=JLV zBHiF?Ud%%Ck|nL*9+?mZg$vWL!yab{L_%p|*g*&yMmPcRhyXmM?3G*wXAg5riHVnRS&E)EI%*-`DOzRQ5sHUW zjYYiUa%c;|zn2KeViLuw)OEo(d~S4ieAuDg87bH`rV#jm5^8Qv#t)X>ot9(2BY5|- zp7@?nhl$NWY`OvA9sI=asV@&Aww4_kJ(o3$9U1ti>!yYzXRSnOBgsoi-g8Bly?K@D zt-2dgKV2EqgSNBPzY3|3uSvGHrAOsT$|YFR{-1Etmdo<5gZ!;l^niDWGZA5mn&Dfo ze?pFiUbkSrk345~fCqT=#Gixhz_nFT?)(HX!ZYELcop>lZmf$7ycL`d2Rkn0T51Qt zj~SScSv_X?r%VLE1|l;E;;Yxo5@6w(R9SXCM4}H{m2ip>drRjq;e=C6EOtJ{#lfxh zmr$AKi814P7sF6jZ0J;csCtdPD11jTeHIg)f}H((;)rF{s2KZoJ=N!9zHq3;K#lM6 zb*T%Tv5@4; zBlJ3~I|6R))3BJ{?0j|J*aE5}d#a&yOIe4;>~2Uh*xRlYfmX_o ze?hNfw0Pl_BbTpm1><-#N`Tax{-0DS8qGjiJ&8!SnD_%kQJScOkX368Sad)asRs!D zZNC`^|f!4Xp z&CK~rL;FPJKkE_V$Tt6X2l3ID+&f1ufg%*Nu|}r$Q3*aW-3w(8fObXS^kRkXt=Rto D%H)6b literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/corkboards/tack.png b/examples/declarative/qtquick1/toys/corkboards/tack.png new file mode 100644 index 0000000000000000000000000000000000000000..cef2d1cd23dcf6508486b654f2594f3b312cea95 GIT binary patch literal 7282 zcmV-&9F60NP)7VNJ^>_ZN z>JEtrzEc*L3q-2`{x*Pj063M@;{Y}QTuJKx1n}R_iEO^o=h1fn*;_6U9R=_{0DlL- z4-()E0E)G*NURLh0$c>}NdW)(oXGa=Jo`I6}P?m_B?5kXSAdJqF-k67YJ9M)=yM>@YpoN~bCyVYmH10{r81B2OOF zkJmgP7lmq;$OWPm0KY-N z!xn(UJRm7UUI`$92-)e=m|nh&x~kv-1mH;l{@x_xOW3)586JQKz9hhdeW1K10f}nr(*!)6VHb=pAPNTc(IhR3 zL~Mn3?S}_oPo2W*V~=6$%U{Ozr=CLH9RH*MKh{-WeKzW~Q2q@852rwA&5~*jKpB9% zrxvlM`*EAH#!uG!$dxOYe&Gvv-Mij}JKy&{#E;-nYCN#H@|t1DMWVqDaEgKV1NdjD z@Lkd>JLY!!j7eJd7>`(^e)0g=TC9HXgIId-LA?0!kK^hmKA}u`_c@UZdaG}1Kt4%y z+5zuIQy&D72^#sPOh^H-lX$Gdx9F<_UZ=Y zNut*ef!`P4KLWU8zjFoic6rV$7|h#@6qwX*^tr!%$5LQA{xlh&e)d^RzW7C;EHV0? z@6oeg%!TZp$KnvF~GUKkC#Dq`)jnV)gY_ zfzS>Zw8HO#0Siz7!o~)sfAmL?$wd3&2>6k23Lp!FPjSERHPii6&hp#9FA(sv-9Pl5 ztT$3)-lu8y=rOHb5cUJ5uOoVnMdN*Sz68TSxxNlLdNl3R4}QY{=@EWP{H`+C@B0H{ zV&cC6?a+(-p+>gx(f z7lfpCyVU&_7l}e&kAD$(pa6b36?nI%#|aIJ`tXG^O_A!3LiN>dq@LQ1^jP}09`Sve&O)&&K0%7DC90C?AbRg@_E8 zxd1RAqTE`WhY&IVc?e-qVxsN(hk%C*;JaJl6E#^15in8HVmE7{r2`jTI3 zx&1WZ#%%+V0yJ zMF4OIFuD(TM6e4)o4ZqBh??Z8$lPRuDH>2Tzc)aS&FS+5((OKPs{3Vk@3E*X@;>Iv zmD>VD!MOka`|XP_zG%y`v}lAp@ZJxda{~Y)W*&;jFoZAwFcgv87?U$|2EZ)}CUF2ElcGtjlMj4aS z4-ZHL!<;#D#>{3jCnDL)FTY$6(aIzkhx^5|8`?-ADb`0Nw(=Q(g zNTQtcC8o=hs9_#8Zz^knaAGy5i^e>7=?%wB9b$6CL)U_a&%eI#A?Qv zzbo<%0$dA*0-#l-9dZcCOLgsr0N6=hJe7+8puT}6?d>9Cjn1+CKuPJHJiJSq_@|5e z0+Onzt5>hu)z#Jf#*G`r($dn3;Jt(m&6-H{_l^2uZ}7z_qOG^%MSgfNb*7Yq$Y$v>mOdmB^#}G3vtt8kS@|vKIy@nK;!BE-9B&WK&hujYIYWBOO5ufXH5q z7-kz2ihC^Od9*38DnhFe`-&8@WqA{sOExUTClfUz-Vq;74DGt^Ev?De9$YN{JR z+lC&7{<_GUg$PWvFxHs+;uHI!$J%#^`?mlbNkB_eOs)%tM@NY!11BwTj=ZO

            q|>+b<$ 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 M07*qoM6N<$f|zx+ssI20 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml new file mode 100644 index 0000000000..d2be3b6c59 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml @@ -0,0 +1,224 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import Qt.labs.particles 1.0 +import "qml" + +Item { + id: window + + property int activeSuns: 0 + + //This is a desktop-sized example + width: 800; height: 480 + + + MouseArea { + anchors.fill: parent + onClicked: window.focus = false; + } + + //This is the message box that pops up when there's an error + Rectangle { + id: dialog + + opacity: 0 + anchors.centerIn: parent + width: dialogText.width + 6; height: dialogText.height + 6 + border.color: 'black' + color: 'lightsteelblue' + z: 65535 //Arbitrary number chosen to be above all the items, including the scaled perspective ones. + + function show(str){ + dialogText.text = str; + dialogAnim.start(); + } + + Text { + id: dialogText + x: 3; y: 3 + font.pixelSize: 14 + } + + SequentialAnimation { + id: dialogAnim + NumberAnimation { target: dialog; property:"opacity"; to: 1; duration: 1000 } + PauseAnimation { duration: 5000 } + NumberAnimation { target: dialog; property:"opacity"; to: 0; duration: 1000 } + } + } + + // sky + Rectangle { + id: sky + anchors { left: parent.left; top: parent.top; right: toolbox.right; bottom: parent.verticalCenter } + gradient: Gradient { + GradientStop { id: gradientStopA; position: 0.0; color: "#0E1533" } + GradientStop { id: gradientStopB; position: 1.0; color: "#437284" } + } + } + + // stars (when there's no sun) + Particles { + id: stars + x: 0; y: 0; width: parent.width; height: parent.height / 2 + source: "images/star.png" + angleDeviation: 360 + velocity: 0; velocityDeviation: 0 + count: parent.width / 10 + fadeInDuration: 2800 + opacity: 1 + } + + // ground + Rectangle { + id: ground + z: 2 // just above the sun so that the sun can set behind it + anchors { left: parent.left; top: parent.verticalCenter; right: toolbox.left; bottom: parent.bottom } + gradient: Gradient { + GradientStop { position: 0.0; color: "ForestGreen" } + GradientStop { position: 1.0; color: "DarkGreen" } + } + } + + SystemPalette { id: activePalette } + + // right-hand panel + Rectangle { + id: toolbox + + width: 380 + color: activePalette.window + anchors { right: parent.right; top: parent.top; bottom: parent.bottom } + + Column { + anchors.centerIn: parent + spacing: 8 + + Text { text: "Drag an item into the scene." } + + Rectangle { + width: palette.width + 10; height: palette.height + 10 + border.color: "black" + + Row { + id: palette + anchors.centerIn: parent + spacing: 8 + + PaletteItem { + anchors.verticalCenter: parent.verticalCenter + componentFile: "Sun.qml" + image: "../images/sun.png" + } + PaletteItem { + anchors.verticalCenter: parent.verticalCenter + componentFile: "GenericSceneItem.qml" + image: "../images/moon.png" + } + PaletteItem { + anchors.verticalCenter: parent.verticalCenter + componentFile: "PerspectiveItem.qml" + image: "../images/tree_s.png" + } + PaletteItem { + anchors.verticalCenter: parent.verticalCenter + componentFile: "PerspectiveItem.qml" + image: "../images/rabbit_brown.png" + } + PaletteItem { + anchors.verticalCenter: parent.verticalCenter + componentFile: "PerspectiveItem.qml" + image: "../images/rabbit_bw.png" + } + } + } + + Text { text: "Active Suns: " + activeSuns } + + Rectangle { width: parent.width; height: 1; color: "black" } + + Text { text: "Arbitrary QML:" } + + Rectangle { + width: 360; height: 240 + + TextEdit { + id: qmlText + anchors.fill: parent; anchors.margins: 5 + readOnly: false + font.pixelSize: 14 + wrapMode: TextEdit.WordWrap + + text: "import QtQuick 1.0\nImage {\n id: smile\n x: 360 * Math.random()\n y: 180 * Math.random() \n source: 'images/face-smile.png'\n NumberAnimation on opacity { \n to: 0; duration: 1500\n }\n Component.onCompleted: smile.destroy(1500);\n}" + } + } + + Button { + text: "Create" + onClicked: { + try { + Qt.createQmlObject(qmlText.text, window, 'CustomObject'); + } catch(err) { + dialog.show('Error on line ' + err.qmlErrors[0].lineNumber + '\n' + err.qmlErrors[0].message); + } + } + } + } + } + + //Day state, for when a sun is added to the scene + states: State { + name: "Day" + when: window.activeSuns > 0 + + PropertyChanges { target: gradientStopA; color: "DeepSkyBlue" } + PropertyChanges { target: gradientStopB; color: "SkyBlue" } + PropertyChanges { target: stars; opacity: 0 } + } + + //! [top-level transitions] + transitions: Transition { + PropertyAnimation { duration: 3000 } + ColorAnimation { duration: 3000 } + } + //! [top-level transitions] +} diff --git a/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/NOTE b/examples/declarative/qtquick1/toys/dynamicscene/images/NOTE new file mode 100644 index 0000000000..fcd87f9132 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/images/NOTE @@ -0,0 +1 @@ +Images (except star.png) are from the KDE project. diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/face-smile.png b/examples/declarative/qtquick1/toys/dynamicscene/images/face-smile.png new file mode 100644 index 0000000000000000000000000000000000000000..3d66d725781730c7a9376a25113164f8882d9795 GIT binary patch literal 15408 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 SNxgs4ATkn);&q}%LH`e8$k9yz literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/moon.png b/examples/declarative/qtquick1/toys/dynamicscene/images/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0d6066a84bfd6c1ebb1ddd67cf29ef2493783e GIT binary patch literal 1757 zcmV<31|s>1P)N3!|q}& zyY24G|KEiF(yk=mZVHc z?UGs~wMPE7NNP1kEs~B(YMwcBMt8z1b%2JFuCA`jkhDTlsib1b6i6URk_rD27-J+U zGG8&L!%c*w(~@>d+Aisf>C-Rm96?_ohICa`b(*A7V^k*T8cE~-k}$F$J#hXxNtKd5 zlJr?&;k1(@D!psho;*qGB;6q?eb7d_k{&qSE2-KTZM^v6f;y+tJ9k!2lXSPF+ayhh zvymeqtw=i*uKZ*9`BQ&%A#H%Az)e7kixqfeB@k+9X??o2^;ov;a8p`(?Ka>>;4PrX z_6mG39(VvaaO~KL`;Q+#G0s---#W6&%C9b!RH1N3Hk!Nlp!r4;-%GkPFE96qRp}_Z zch{5|qh}BX9s-W~Sl$Kcz_znz|Hv7tk!R^EuUyauJP7o9&2YpF;N7mSuDBhWpGs3w zQXB$a@RQ+)6@-6S#l)9%gy(_%7IJL!L|50jF|pq8ExmAIaWC+s-y8?b0@lQO!$zf9 zu%M^`_}oU8WghA7?!MsUh!yDw&l0>&tq{0(@Jwsc#l`cQf%k3YS)`(;rzd^j44ah( z*bJProavV-guhzPV^wDSNT40Cmo^5alRLv zOaJCL-wV#A+Z^Y6;eTlt{4X64@?1-|JI?pQ@2;g&9p`)DsB7sVuPKcZ&ZV;)=X>E- z*V5KU`&r;WS?Lzn(z%ZFz2Lmka~$V;!TD#p*l~WcbOT46NgqCZWHONND&HejlDrKw zOpy5wv%T^mxIHl#v|SrUKzfP8Y%eq!V}1fh(oId@P6n2_$o9cU(Fs?TE(c-`av4QF zj83?czS&W(SB?So(HGXG4;}hu8c@BZru)@c46ggeuONLsqSzM%+siSXU6LEtd3 zHa$J9Z`hU*l9CRE8VZ3ofQd5S$;->_vJrTJbX8ULEs`E) z^sg;<6FxNDIAuzn)j@dYrFZSxlP~EBNy{1i>V6Dtm^$^MW*6ZDD=lCj;frpwT&!#u zdVp$RQ$ay~t;-d~d!o%OV^l7wTvB1YM{ihoY0@gnv z7Elb4e`3Uhhng54D_BiPG=V3hiC{=f2r4`RMuLO~DFR{|O)!{>MuKgH7Menj_N2YL zy}jL?86TiXxxJI>?`bo?`F%1wJ2N|^l)}Ho=BLB8jn&$#oMS0~Iz}i>rqmA~9!;(B z>#r5VHZ_Nvo91eVmdw?v(zXO#fHOejY~=c|c%x7q6&mUGb+FQ0G2>>)sD2ecN*A?%jkB_BWih;gpO{K1vm9W=C z20=)G2#Cjc`llYZ{&1&tq8K(Fd2`y*XgpsUWz|XnW{6>`$c754t^*;>gJJO7; ztZ;x}ISS=dI2fbkx!-aJ9~PW2QX-=E4d&*CYJKaqVPQ{=Fe9B+USC4ApYL`?CXEsi z?bvMYSvucnqx+IVLQiLvH5m}N`}*70o3Aaa4YifdYQnVH%kL#Q1I?Vqn*S3zr<}jd zXS{%fT8Qw}stFwojn?ek68nOPe3zeJ&{GSI`P-cl8 z`}z59XV(++jE(UaTd8xziJ)a2b>Z@WcjU8<%=h=u)|KH^>y`yiO>fwWc;y`Qbnb8hDN-8w)P$oF@E-|4`PhakW4FWFe!&m zU(B6bGEc7y>QwXu^NW%&s|x7!oz`4y9D1_WcyThfeYRI`@k)Z!n64Oz(U=s)g*Sb{@9kW!H9qF`&-aRg718#`pKV=knlUXs z)CDOVm}QMnN)fZ9yPye1qyk2y5=L|uGQ+?7qP;i0{k=C_ zH}C7exyC%OqTXl?2YhxGaYW*E$c|isloRh0{kKG4+y2oSrIg4Usg&wiUqVD1k?zD{_=#%Bu3?l@te!vnReV?>7lre00000NkvXX Hu0mjfFpfap literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_bw.png b/examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_bw.png new file mode 100644 index 0000000000000000000000000000000000000000..7bff9b92cac597223a3e8633e2803def4a6aceee GIT binary patch literal 1759 zcmV<51|a!~P)Zb6hg@BjIp;=RsD0YF4(`(xL7Qn2#3NyFbw09Yx_PF7=WegI!x2- z;GF-`jF>Oh8Wc6HLC$%a6596v0v8!$=FJXI1})RFQVoqqeP0sNS?hmYsCC`YQuU2zEYrGb7{*~mQ7ix;gdp9Lp7`RI zzA(CP-_sO;J2f>`v5Q0^;0k{(9*ge@2173@iqh!!5y1Peii5#Wdn6n=tLu6XA*9ky z2*H-j=82Qv`F2KCRrX}hleqA!3uBX$lO0V>O;A-8AONK_WSZ76qimHz3Ah_74j6Tx z(NyjCilX#X4$*5`;)ErHu&=#y4YqA#d1?7SPATPUIE)ao zD!LQ^R8{L!6y*Y?v|%k201h90{{4779`ig8wr#_49PHY)t3I2}-n4BSBX5sj=GM$w zQ2>C)9)I*^zzC!s-1*?yYB;5ohAE}55kkybhFy<8_LrWXo({)xP%4#R+cs?5hU>cM z>go#n6BI(!1m~CY?)Scb`c5)Y|G7sVe&p3E#pD-YZEYoM?TW=B5{V>cZcRdp^7i#y!AqqQLZJ}f)ZDbx(2&|o0XbX? ztm&En;NQQM2~^i?HfvNLG=3x$svv5m;JRg7#+XAXg%ARnOlG+*P}fJLl&=GFU3T8h z-(|j|YNx(hAq0AQdICE?y0g~2K`E`+ws*A8FvcLIME~dex2IduZBz&`Erh(d)^Kia zE>OLm)sFnIbIx(_;6b5jT1_|rgu~(6Lqjjb{C`zd*{64XDnRdr@D(XntIpldCGz>a zLn#GgtWy2M!f_n9u8Z#OZn|&(K49Hy1Ic7^`bR(hp^{7{&+~p( z-RXIrF*Y{#Hy_M72j?7=QdDoTy1F{--MbgPy}hfTsiubMSI)d_`q1f-5&UCf0);}s zo}Zt8xpHnSeU zY6|&$9?@tNqobqG4GawYeEsUzc=~+v_@S?vbq4i>jFk#DEx0Qv7M$Wsr(e2r(|*^moGir zoQ#~(bv@)b9+gr!QaDR*T>f4Eg#&1J>;Bn(m#0}>+tzhKNaRv)bo>$a@~7Ni*txp8b$W75xsJQ)&K2Nfd>P4e_{{OW z(~I@y#8eivb^SXekx4GghgWPVlaP+9 zNOe3isi&#jPHSy0`-1#=FN)3@_pe!NQI(jQonrCMFf2u6*?}!tHM6v??l8Obck?;Z rp!JTQUY&A`>woHd{mlRRh4lbP0l+XkKyuFM8 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/sun.png b/examples/declarative/qtquick1/toys/dynamicscene/images/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..7713ca5ce7d1223430594e4d79632a70257dce05 GIT binary patch literal 8153 zcmV;~A12_5P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iOM@ z5+^2qR+x?e03TUNL_t(|+U%LxlO@M>-oKMeRo%LK-+Q~KyJtmX8w?hL08COc1&gAM zut6)R2+EG|1H%uF@S7g&(6i}3!45z9$uD+eiCWarIqh0fr!GQVN8^r~8YOT{Tfz`J2phPG;f%+o!~S@AoG9i1DAD6!&;--lRg z-5&@aKy*3?s#Wmc3LrS&(|r9DvcCY!eh~5ZI)s_=9{^sU+E{^FUIzGImwKZum}mF@ z^tVLeWe7k5pJE`)5X_&n$4-EBMXmfc;57xH2NdR3e?}77YQ;k%1Msyc3HG$cYoDFI z=SrcaR&`|XM4w_HSTEIw=0660E|{?jvE2z70E|?q1`+1g=qhG}2%ymfP?ZF(Y2+dJ zphcDkHBv>u0rGqQL%#7T1F{Ma35|0I@L!%2<<$R(@xLkcKLF2;nZ`AI^ARaT0Mv`x zodBB#AQu%mBp8HYGX%l_XW#M3TTg0V9aSyC$qW`Vk&e2Q}P;#H+D}^DSaq#}SZA5b#+YWCQ%9 zqpHvgRNJg*%?Z`PnA5Yz;FGwM2Z-I#eIxlc?Q>BT@Zg`KYX1eqb2|kLJ_mAPP1qgGg8z0Rk^x~V&3Gaf( zyIov3?FnYc-CMEObZT+?bW;l#z*p-fB*9LsvBx5*ahpYYoGD*|cdJBn9MT?#N_s%r zlestsVasc27nHQvs5Jz`MYXRpH?|rflsC`T1h|3pM;ZSo5Ch*0Q%fB2f@b1(ekwrL*WCsUn!6Yfc>_IIMiTP z%*gP)Re|cs3VuhW$oF=9(K;s%Pp-T8Y9{MD8vW`+KCcQXOw5{`(1%q(o(7G(B+z7- z1nj$|1c*Z~5E0ZWyx(OuB|PqvcXeprBg-2=-V~CREKby%bv+SZyNMbU-dOY)pQ@sf zX8zjpqF0ENb~|ZyQR$U>ti&*-Gw{DMApF|XgnpCF`RkO8Pow_a<)|oU%~D zK3zq8D*?oasqq;xSlQ&(&4O#&ZIQ%ZV4dv|%a~PCVH=+<@+>rCaUxH0@4Rali9gF; zgi;r*D>9JEMPX$ubu9K(AQB>1Ctqwac$Iu;*hUY@VCxN5gTUu8%ludsVP0U|jRc`5 zIKO~O8tZ1#5|r)Z)n^R9n-G!@2!Ay8^o?H($UK$avE8m1x9e*65{iY`dR+Xhq}3}8 z(b~?EerD@vw2`)2qOzUAbV8)@-vu=`sNN?oBI@La&V6!~y}ZFu97h1?kgEihWI_;p*cMl^Q@EfCGr{>Utllw$KfZI_y zLIR5_3L=1i{FMM+oB-Kf(7^N2%Ixet1X~m+0?pQTNGF;^(e^fccCepx_pXi~48#*l zjdNck)m{XsC}k!h;bu_yL!Aq7De|iH8t?&Ze+Pq$f9M^*cXMIQe5cmX>*SgNd%Z

            b<3iL|%8C*7t4{PmZnxpJ}Z9PFOkp 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml new file mode 100644 index 0000000000..8cb9b58047 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: container + + property variant text + signal clicked + + height: text.height + 10; width: text.width + 20 + border.width: 1 + radius: 4 + smooth: true + + gradient: Gradient { + GradientStop { + position: 0.0 + color: !mouseArea.pressed ? activePalette.light : activePalette.button + } + GradientStop { + position: 1.0 + color: !mouseArea.pressed ? activePalette.button : activePalette.dark + } + } + + SystemPalette { id: activePalette } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: container.clicked() + } + + Text { + id: text + anchors.centerIn:parent + font.pointSize: 10 + text: parent.text + color: activePalette.buttonText + } +} diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml new file mode 100644 index 0000000000..26db1595c4 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Image { + property bool created: false + property string image + + source: image + +} diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml new file mode 100644 index 0000000000..df94cc8a02 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "itemCreation.js" as Code + +Image { + id: paletteItem + + property string componentFile + property string image + + source: image + + MouseArea { + anchors.fill: parent + + onPressed: Code.startDrag(mouse); + onPositionChanged: Code.continueDrag(mouse); + onReleased: Code.endDrag(mouse); + } +} diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml new file mode 100644 index 0000000000..9c905d8b1c --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Image { + id: rootItem + + property bool created: false + property string image + + property double scaledBottom: y + (height + height*scale) / 2 + property bool onLand: scaledBottom > window.height / 2 + + source: image + opacity: onLand ? 1 : 0.25 + scale: Math.max((y + height - 250) * 0.01, 0.3) + smooth: true + + onCreatedChanged: { + if (created && !onLand) + rootItem.destroy(); + else + z = scaledBottom; + } + + onYChanged: z = scaledBottom; +} diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml new file mode 100644 index 0000000000..3ae4305f30 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Image { + id: sun + + property bool created: false + property string image: "../images/sun.png" + + source: image + + // once item is created, start moving offscreen + NumberAnimation on y { + to: window.height / 2 + running: created + onRunningChanged: { + if (running) + duration = (window.height - sun.y) * 10; + else + state = "OffScreen" + } + } + + states: State { + name: "OffScreen" + StateChangeScript { + script: { sun.created = false; sun.destroy() } + } + } + + onCreatedChanged: { + if (created) { + sun.z = 1; // above the sky but below the ground layer + window.activeSuns++; + } else { + window.activeSuns--; + } + } +} diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js b/examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js new file mode 100644 index 0000000000..b96f3a5e39 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js @@ -0,0 +1,62 @@ +var itemComponent = null; +var draggedItem = null; +var startingMouse; +var posnInWindow; + +function startDrag(mouse) +{ + posnInWindow = paletteItem.mapToItem(window, 0, 0); + startingMouse = { x: mouse.x, y: mouse.y } + loadComponent(); +} + +//Creation is split into two functions due to an asynchronous wait while +//possible external files are loaded. + +function loadComponent() { + if (itemComponent != null) { // component has been previously loaded + createItem(); + return; + } + + itemComponent = Qt.createComponent(paletteItem.componentFile); + if (itemComponent.status == Component.Loading) //Depending on the content, it can be ready or error immediately + component.statusChanged.connect(createItem); + else + createItem(); +} + +function createItem() { + if (itemComponent.status == Component.Ready && draggedItem == null) { + draggedItem = itemComponent.createObject(window, {"image": paletteItem.image, "x": posnInWindow.x, "y": posnInWindow.y, "z": 3}); + // make sure created item is above the ground layer + } else if (itemComponent.status == Component.Error) { + draggedItem = null; + console.log("error creating component"); + console.log(itemComponent.errorString()); + } +} + +function continueDrag(mouse) +{ + if (draggedItem == null) + return; + + draggedItem.x = mouse.x + posnInWindow.x - startingMouse.x; + draggedItem.y = mouse.y + posnInWindow.y - startingMouse.y; +} + +function endDrag(mouse) +{ + if (draggedItem == null) + return; + + if (draggedItem.x + draggedItem.width > toolbox.x) { //Don't drop it in the toolbox + draggedItem.destroy(); + draggedItem = null; + } else { + draggedItem.created = true; + draggedItem = null; + } +} + diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml b/examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml new file mode 100644 index 0000000000..afc89f45c9 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: container + + property string text + property bool pressed: false + + signal clicked + + width: buttonLabel.width + 20; height: buttonLabel.height + 6 + border { width: 1; color: Qt.darker(container.color) } + radius: 8 + color: "lightgray" + smooth: true + + gradient: Gradient { + GradientStop { + position: 0.0 + color: container.pressed ? "darkgray" : "white" + } + GradientStop { + position: 1.0 + color: container.color + } + } + + MouseArea { + anchors.fill: parent + onClicked: container.clicked() + } + + Text { + id: buttonLabel + anchors.centerIn: container + text: container.text + font.pixelSize: 14 + } +} diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml b/examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml new file mode 100644 index 0000000000..dd4de5e86c --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Item { + signal clicked + + states: [ + State { name: "X"; PropertyChanges { target: image; source: "pics/x.png" } }, + State { name: "O"; PropertyChanges { target: image; source: "pics/o.png" } } + ] + + Image { + id: image + anchors.centerIn: parent + } + + MouseArea { + anchors.fill: parent + onClicked: parent.clicked() + } +} diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/board.png b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/board.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5b7ba27c23a2e61575ccfaeeb768f8df2a57cb GIT binary patch literal 12258 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 WTji6~{0wf}qm<-Tuajg=AO0`)&u+5- literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/o.png b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/o.png new file mode 100644 index 0000000000000000000000000000000000000000..abc7ee020b7e4fddbb3d79f2b3e999a3b2b319fe GIT binary patch literal 1470 zcmV;v1ws0WP)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RU3m5@37FDE$w*UYD8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b1uIEJK~#9!?VDX_990y@e^Yf!lT;@t zF~(}PkoHMqksvA!ine_yY5Pz=zz19K!B40!im0Fuf-izrup*+U5fyDKVznsxpkkGh zU}@1}<44+Puxes7X+D}Z*N6EB*QME+Gdr_8A$wq8Np|nO=YP*V_kTXdbI!4lWf2Qp zY5>##r~yy|U_r~-X;0vJo)6@K4xk-4AGiRR)aSo|rNGa?2=FOz1n76polJdwN%MdL zg|C&;R{$+ivfeP%OTb&sxliT=08;#NU<=R*ECcEi7XVoNdP?0s|T(F?gnlE zmH=MD>--wn4h#cV0T%r7pfvw^wWl`ZS z;N}DtHL1IN7#IM~1^xzB02c}9B&89!5BMI~8=D6J-7(GZw3IynybRm}tSUB3?bccm zo)alJ#V>)@SUy0WKhDJcz>B~&QSN1d&;dLR94_)VziJnM5UAF*jEhp|isucb!k*`C z26h_EZUT5;4yeyLcOqsmwF+p}pN|TJ9B?bJNyo<`$AHbwxt_>JKnvM#MElt&*H0M~ zyb*Xb1{awYf%79D0pNPzHzNy6P5B}a9tTbuK^O!&Edab~oS-{x<%@jN+af&{g7jLU z6@)pZUc=yj0$r5?Kx^!fvyE*9rHD`-xYFQc1{JPWQVs&o$ni#%CSc1fIVuIfO5GjmGtST!|#+89+D+JR#l?RhB7dSrPyX??3FE>#HK~ z{|flXU zpA9Ib7Mc<2lrOL(9F76EVJuUZQKEkcd%5nes3|dDDI`k?e72UqLm8V~iU4dRDA8M# zp8(ca>H?j_D^{GAnZ2UiLVd!@uNL>Wu4@-?p#=b6dHy&BiP=Qts4_;IPzfx7gy^mq zYdQryP`DXUCtNQjl4@Z17I>YY3e=_aTQ1_6Uk`j9bM8IBa#Llfz|%fV&>xU=Z{e`+ zu_7J=q&|mgiYOl^NaH#=M17Ly6 YzXcUc)Y}lW;Q#;t07*qoM6N<$g7v0;f&c&j literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/x.png b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/x.png new file mode 100644 index 0000000000000000000000000000000000000000..ddc65c83b8e35f408e050a2729987b2f768ec613 GIT binary patch literal 1331 zcmV-31Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RU3m5@3D-F!arT_o{8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b1fWSoK~#9!?VDd{)>RnCKSyMQR=g=p zS(yf1h>*Re7iztiixx-|if&hkfmcR`2!hTV2VQs)5Mu4-x@8$fe=>j2H zv=#UOSYZG#3=9Il0EdAgt@U^f1zrWb2{ZvY;JLEtw}Bqud!Xxo5VY16Nfv4Y`T<>m z9sx&yW}uYX(jNPdpiU zAl{|XSYH8)L{&lwJSHJUqQN0cWZS z{ESSFez^er>IuRquou_>^aVKaZs99Y?BNrfybOGoFb+p#0aogk@Zih-#UIMlQ*HQw&N#COZV1V$U`1*;6!ncP? zvVsC2AT&r-=3sz$p`41o`W_ts1BgcP^J9U89|5+77Cu@!thK%goB-|ySndY!1@Lu@ z;_K|t3rhaJUao6nARb?hR#}Zuw%Q_BHl+R!hj4kZy+A3AEk;aZ-z$~!XA}UD)7TO{ z0sfH0NzE7ljFV3*3hV^EUMUOmKs*0UrYkYVZ`;t(0o1+3T=UN&zjv z+m1_Il8W(w2mc*PsX|TMpp>u%JoNY-qZ;(5N9cUZ$2<7w{yr&fB`uMk1eP0X%@P3y z@T&{7xPXwh%j-0SpW+>0*aL(f7Z;hP%d48k%G%pJJxV9AC<*|^DY-mYT(JpbWsg>w z?*hOhF|4^502HJQ6KnDC}81%7q};SSIm6aYDyP6wl>fpfr82V1ie_{$Ll>pg9m zX?DE&BS}u90tkP{ymhu!-=hxig2fP398tX<$Lui|0)Vx^Wd{a=)$f3}fT4u@-zzJ`MhvmdXfS#j zQ)`vI5%T2AZb4DP?+a=73inD&>~v!c=#rMySYrq{B+qcujq5_*01N`>E#{p8_Q&iS z*8f?=W56kk>HSs*XZhN*2Kcdx#XX)@tE^Fls+K+Wm$$-HB4zW{m{O`if|7TEb@F>j zJ${mAiQcrDrOO()^U^SlJkFk$Zq+WE+o)_mn-dUT0OrY0q~GT*@SujB;!^=&-NLW3 p?*{99WB_CUWB_CUWB}CjcnXD=7dL0_XAS@W002ovPDHLkV1nXIO78#w literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js b/examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js new file mode 100644 index 0000000000..5a166b750f --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js @@ -0,0 +1,149 @@ +function winner(board) +{ + for (var i=0; i<3; ++i) { + if (board.children[i].state != "" + && board.children[i].state == board.children[i+3].state + && board.children[i].state == board.children[i+6].state) + return true + + if (board.children[i*3].state != "" + && board.children[i*3].state == board.children[i*3+1].state + && board.children[i*3].state == board.children[i*3+2].state) + return true + } + + if (board.children[0].state != "" + && board.children[0].state == board.children[4].state != "" + && board.children[0].state == board.children[8].state != "") + return true + + if (board.children[2].state != "" + && board.children[2].state == board.children[4].state != "" + && board.children[2].state == board.children[6].state != "") + return true + + return false +} + +function restartGame() +{ + game.running = true + + for (var i=0; i<9; ++i) + board.children[i].state = "" +} + +function makeMove(pos, player) +{ + board.children[pos].state = player + if (winner(board)) { + gameFinished(player + " wins") + return true + } else { + return false + } +} + +function canPlayAtPos(pos) +{ + return board.children[pos].state == "" +} + +function computerTurn() +{ + var r = Math.random(); + if (r < game.difficulty) + smartAI(); + else + randomAI(); +} + +function smartAI() +{ + function boardCopy(a) { + var ret = new Object; + ret.children = new Array(9); + for (var i = 0; i<9; i++) { + ret.children[i] = new Object; + ret.children[i].state = a.children[i].state; + } + return ret; + } + + for (var i=0; i<9; i++) { + var simpleBoard = boardCopy(board); + if (canPlayAtPos(i)) { + simpleBoard.children[i].state = "O"; + if (winner(simpleBoard)) { + makeMove(i, "O") + return + } + } + } + for (var i=0; i<9; i++) { + var simpleBoard = boardCopy(board); + if (canPlayAtPos(i)) { + simpleBoard.children[i].state = "X"; + if (winner(simpleBoard)) { + makeMove(i, "O") + return + } + } + } + + function thwart(a,b,c) { //If they are at a, try b or c + if (board.children[a].state == "X") { + if (canPlayAtPos(b)) { + makeMove(b, "O") + return true + } else if (canPlayAtPos(c)) { + makeMove(c, "O") + return true + } + } + return false; + } + + if (thwart(4,0,2)) return; + if (thwart(0,4,3)) return; + if (thwart(2,4,1)) return; + if (thwart(6,4,7)) return; + if (thwart(8,4,5)) return; + if (thwart(1,4,2)) return; + if (thwart(3,4,0)) return; + if (thwart(5,4,8)) return; + if (thwart(7,4,6)) return; + + for (var i =0; i<9; i++) { + if (canPlayAtPos(i)) { + makeMove(i, "O") + return + } + } + restartGame(); +} + +function randomAI() +{ + var unfilledPosns = new Array(); + + for (var i=0; i<9; ++i) { + if (canPlayAtPos(i)) + unfilledPosns.push(i); + } + + if (unfilledPosns.length == 0) { + restartGame(); + } else { + var choice = unfilledPosns[Math.floor(Math.random() * unfilledPosns.length)]; + makeMove(choice, "O"); + } +} + +function gameFinished(message) +{ + messageDisplay.text = message + messageDisplay.visible = true + game.running = false +} + diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml b/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml new file mode 100644 index 0000000000..87e3e2ec64 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "content" +import "content/tic-tac-toe.js" as Logic + +Rectangle { + id: game + + property bool running: true + property real difficulty: 1.0 //chance it will actually think + + width: display.width; height: display.height + 10 + + Image { + id: boardImage + source: "content/pics/board.png" + } + + + Column { + id: display + + Grid { + id: board + width: boardImage.width; height: boardImage.height + columns: 3 + + Repeater { + model: 9 + + TicTac { + width: board.width/3 + height: board.height/3 + + onClicked: { + if (game.running && Logic.canPlayAtPos(index)) { + if (!Logic.makeMove(index, "X")) + Logic.computerTurn(); + } + } + } + } + } + + Row { + spacing: 4 + anchors.horizontalCenter: parent.horizontalCenter + + Button { + text: "Hard" + pressed: game.difficulty == 1.0 + onClicked: { game.difficulty = 1.0 } + } + Button { + text: "Moderate" + pressed: game.difficulty == 0.8 + onClicked: { game.difficulty = 0.8 } + } + Button { + text: "Easy" + pressed: game.difficulty == 0.2 + onClicked: { game.difficulty = 0.2 } + } + } + } + + + Text { + id: messageDisplay + anchors.centerIn: parent + color: "blue" + style: Text.Outline; styleColor: "white" + font.pixelSize: 50; font.bold: true + visible: false + + Timer { + running: messageDisplay.visible + onTriggered: { + messageDisplay.visible = false; + Logic.restartGame(); + } + } + } +} diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject b/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/toys/toys.qmlproject b/examples/declarative/qtquick1/toys/toys.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/toys/toys.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml b/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml new file mode 100644 index 0000000000..2e4d81d5f6 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: page + width: 640; height: 480 + color: "Black" + + // Make a ball to bounce + Rectangle { + id: ball + + // Add a property for the target y coordinate + property variant direction : "right" + + x: 20; width: 20; height: 20; z: 1 + color: "Lime" + + // Move the ball to the right and back to the left repeatedly + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { to: page.width - 40; duration: 2000 } + PropertyAction { target: ball; property: "direction"; value: "left" } + NumberAnimation { to: 20; duration: 2000 } + PropertyAction { target: ball; property: "direction"; value: "right" } + } + + // Make y move with a velocity of 200 + Behavior on y { SpringAnimation{ velocity: 200; } + } + + Component.onCompleted: y = page.height-10; // start the ball motion + + // Detect the ball hitting the top or bottom of the view and bounce it + onYChanged: { + if (y <= 0) { + y = page.height - 20; + } else if (y >= page.height - 20) { + y = 0; + } + } + } + + // Place bats to the left and right of the view, following the y + // coordinates of the ball. + Rectangle { + id: leftBat + color: "Lime" + x: 2; width: 20; height: 90 + y: ball.direction == 'left' ? ball.y - 45 : page.height/2 -45; + Behavior on y { SpringAnimation{ velocity: 300 } } + } + Rectangle { + id: rightBat + color: "Lime" + x: page.width - 22; width: 20; height: 90 + y: ball.direction == 'right' ? ball.y - 45 : page.height/2 -45; + Behavior on y { SpringAnimation{ velocity: 300 } } + } + + // The rest, to make it look realistic, if neither ever scores... + Rectangle { color: "Lime"; x: page.width/2-80; y: 0; width: 40; height: 60 } + Rectangle { color: "Black"; x: page.width/2-70; y: 10; width: 20; height: 40 } + Rectangle { color: "Lime"; x: page.width/2+40; y: 0; width: 40; height: 60 } + Rectangle { color: "Black"; x: page.width/2+50; y: 10; width: 20; height: 40 } + Repeater { + model: page.height / 20 + Rectangle { color: "Lime"; x: page.width/2-5; y: index * 20; width: 10; height: 10 } + } +} diff --git a/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject b/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml new file mode 100644 index 0000000000..f42ec1e8fc --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 1.0 + +Item { + width: 300; height: 200 + + PieChart { + id: aPieChart + anchors.centerIn: parent + width: 100; height: 100 + name: "A simple pie chart" + color: "red" + } + + Text { + anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } + text: aPieChart.name + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro new file mode 100644 index 0000000000..77cc4cdfca --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro @@ -0,0 +1,5 @@ +QT += declarative qtquick1 + +HEADERS += piechart.h +SOURCES += piechart.cpp \ + main.cpp diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp new file mode 100644 index 0000000000..f0cf37197d --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +#include "piechart.h" +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterType("Charts", 1, 0, "PieChart"); + + QDeclarativeView view; + view.setSource(QUrl::fromLocalFile("app.qml")); + view.show(); + return app.exec(); +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp new file mode 100644 index 0000000000..bfc1645f57 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "piechart.h" +#include + +//![0] +PieChart::PieChart(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ + // need to disable this flag to draw inside a QDeclarativeItem + setFlag(QGraphicsItem::ItemHasNoContents, false); +} +//![0] + +QString PieChart::name() const +{ + return m_name; +} + +void PieChart::setName(const QString &name) +{ + m_name = name; +} + +QColor PieChart::color() const +{ + return m_color; +} + +void PieChart::setColor(const QColor &color) +{ + m_color = color; +} + +//![1] +void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +{ + QPen pen(m_color, 2); + painter->setPen(pen); + painter->setRenderHints(QPainter::Antialiasing, true); + painter->drawPie(boundingRect(), 90 * 16, 290 * 16); +} +//![1] + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h new file mode 100644 index 0000000000..06b49ba3b6 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIECHART_H +#define PIECHART_H + +//![0] +#include +#include + +class PieChart : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(QColor color READ color WRITE setColor) + +public: + PieChart(QDeclarativeItem *parent = 0); + + QString name() const; + void setName(const QString &name); + + QColor color() const; + void setColor(const QColor &color); + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + +private: + QString m_name; + QColor m_color; +}; +//![0] + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml new file mode 100644 index 0000000000..e2f34c7f7b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 1.0 + +Item { + width: 300; height: 200 + + PieChart { + id: aPieChart + anchors.centerIn: parent + width: 100; height: 100 + color: "red" + + onChartCleared: console.log("The chart has been cleared") + } + + MouseArea { + anchors.fill: parent + onClicked: aPieChart.clearChart() + } + + Text { + anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } + text: "Click anywhere to clear the chart" + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro new file mode 100644 index 0000000000..77cc4cdfca --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro @@ -0,0 +1,5 @@ +QT += declarative qtquick1 + +HEADERS += piechart.h +SOURCES += piechart.cpp \ + main.cpp diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp new file mode 100644 index 0000000000..f0cf37197d --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +#include "piechart.h" +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterType("Charts", 1, 0, "PieChart"); + + QDeclarativeView view; + view.setSource(QUrl::fromLocalFile("app.qml")); + view.show(); + return app.exec(); +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp new file mode 100644 index 0000000000..78970e536f --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "piechart.h" +#include +#include + +PieChart::PieChart(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ + // need to disable this flag to draw inside a QDeclarativeItem + setFlag(QGraphicsItem::ItemHasNoContents, false); +} + +QString PieChart::name() const +{ + return m_name; +} + +void PieChart::setName(const QString &name) +{ + m_name = name; +} + +QColor PieChart::color() const +{ + return m_color; +} + +void PieChart::setColor(const QColor &color) +{ + m_color = color; +} + +void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +{ + QPen pen(m_color, 2); + painter->setPen(pen); + painter->setRenderHints(QPainter::Antialiasing, true); + painter->drawPie(boundingRect(), 90 * 16, 290 * 16); +} + +//![0] +void PieChart::clearChart() +{ + setColor(QColor(Qt::transparent)); + update(); + + emit chartCleared(); +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h new file mode 100644 index 0000000000..5aebecc8a8 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIECHART_H +#define PIECHART_H + +#include +#include + +//![0] +class PieChart : public QDeclarativeItem +{ +//![0] + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(QColor color READ color WRITE setColor) + +//![1] +public: +//![1] + + PieChart(QDeclarativeItem *parent = 0); + + QString name() const; + void setName(const QString &name); + + QColor color() const; + void setColor(const QColor &color); + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + +//![2] + Q_INVOKABLE void clearChart(); + +signals: + void chartCleared(); +//![2] + +private: + QString m_name; + QColor m_color; + +//![3] +}; +//![3] + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml new file mode 100644 index 0000000000..b4ad5efb56 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 1.0 + +Item { + width: 300; height: 200 + + Row { + anchors.centerIn: parent + spacing: 20 + + PieChart { + id: chartA + width: 100; height: 100 + color: "red" + } + + PieChart { + id: chartB + width: 100; height: 100 + color: chartA.color + } + } + + MouseArea { + anchors.fill: parent + onClicked: { chartA.color = "blue" } + } + + Text { + anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } + text: "Click anywhere to change the chart color" + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro new file mode 100644 index 0000000000..77cc4cdfca --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro @@ -0,0 +1,5 @@ +QT += declarative qtquick1 + +HEADERS += piechart.h +SOURCES += piechart.cpp \ + main.cpp diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp new file mode 100644 index 0000000000..f0cf37197d --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +#include "piechart.h" +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterType("Charts", 1, 0, "PieChart"); + + QDeclarativeView view; + view.setSource(QUrl::fromLocalFile("app.qml")); + view.show(); + return app.exec(); +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp new file mode 100644 index 0000000000..375025e694 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "piechart.h" +#include +#include + +PieChart::PieChart(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ + // need to disable this flag to draw inside a QDeclarativeItem + setFlag(QGraphicsItem::ItemHasNoContents, false); +} + +QString PieChart::name() const +{ + return m_name; +} + +void PieChart::setName(const QString &name) +{ + m_name = name; +} + +QColor PieChart::color() const +{ + return m_color; +} + +//![0] +void PieChart::setColor(const QColor &color) +{ + if (color != m_color) { + m_color = color; + update(); // repaint with the new color + emit colorChanged(); + } +} +//![0] + +void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +{ + QPen pen(m_color, 2); + painter->setPen(pen); + painter->setRenderHints(QPainter::Antialiasing, true); + painter->drawPie(boundingRect(), 90 * 16, 290 * 16); +} + +void PieChart::clearChart() +{ + setColor(QColor(Qt::transparent)); + update(); +} diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h new file mode 100644 index 0000000000..4fd41d489b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIECHART_H +#define PIECHART_H + +#include +#include + +//![0] +class PieChart : public QDeclarativeItem +{ +//![0] + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + +//![1] + Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) +public: +//![1] + + PieChart(QDeclarativeItem *parent = 0); + + QString name() const; + void setName(const QString &name); + + QColor color() const; + void setColor(const QColor &color); + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + + Q_INVOKABLE void clearChart(); + +//![2] +signals: + void colorChanged(); +//![2] + +private: + QString m_name; + QColor m_color; + +//![3] +}; +//![3] + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml new file mode 100644 index 0000000000..8fee24581c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 1.0 + +Item { + width: 300; height: 200 + + PieChart { + id: chart + anchors.centerIn: parent + width: 100; height: 100 + + pieSlice: PieSlice { + anchors.fill: parent + color: "red" + } + } + + Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color) +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro new file mode 100644 index 0000000000..f5dc31a3db --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro @@ -0,0 +1,7 @@ +QT += declarative qtquick1 + +HEADERS += piechart.h \ + pieslice.h +SOURCES += piechart.cpp \ + pieslice.cpp \ + main.cpp diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp new file mode 100644 index 0000000000..9fb548c548 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "piechart.h" +#include "pieslice.h" + +#include +#include + +//![0] +int main(int argc, char *argv[]) +{ +//![0] + QApplication app(argc, argv); + + qmlRegisterType("Charts", 1, 0, "PieChart"); + +//![1] + qmlRegisterType("Charts", 1, 0, "PieSlice"); +//![1] + + QDeclarativeView view; + view.setSource(QUrl::fromLocalFile("app.qml")); + view.show(); + return app.exec(); + +//![2] +} +//![2] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp new file mode 100644 index 0000000000..b1f4278a95 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "piechart.h" +#include "pieslice.h" + +PieChart::PieChart(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ + // this doesn't need to disable QGraphicsItem::ItemHasNoContents + // anymore since the drawing is now done in PieSlice +} + +QString PieChart::name() const +{ + return m_name; +} + +void PieChart::setName(const QString &name) +{ + m_name = name; +} + +PieSlice *PieChart::pieSlice() const +{ + return m_pieSlice; +} + +//![0] +void PieChart::setPieSlice(PieSlice *pieSlice) +{ + m_pieSlice = pieSlice; + pieSlice->setParentItem(this); +} +//![0] + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h new file mode 100644 index 0000000000..ec9e61c204 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIECHART_H +#define PIECHART_H + +#include + +class PieSlice; + +//![0] +class PieChart : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(PieSlice* pieSlice READ pieSlice WRITE setPieSlice) +//![0] + Q_PROPERTY(QString name READ name WRITE setName) + +//![1] +public: +//![1] + + PieChart(QDeclarativeItem *parent = 0); + + QString name() const; + void setName(const QString &name); + +//![2] + PieSlice *pieSlice() const; + void setPieSlice(PieSlice *pieSlice); +//![2] + +private: + QString m_name; + PieSlice *m_pieSlice; + +//![3] +}; +//![3] + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp new file mode 100644 index 0000000000..f36c8ce3f4 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "pieslice.h" + +#include + +PieSlice::PieSlice(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ + // need to disable this flag to draw inside a QDeclarativeItem + setFlag(QGraphicsItem::ItemHasNoContents, false); +} + +QColor PieSlice::color() const +{ + return m_color; +} + +void PieSlice::setColor(const QColor &color) +{ + m_color = color; +} + +void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +{ + QPen pen(m_color, 2); + painter->setPen(pen); + painter->setRenderHints(QPainter::Antialiasing, true); + painter->drawPie(boundingRect(), 90 * 16, 290 * 16); +} + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h new file mode 100644 index 0000000000..3e7fcbab49 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIESLICE_H +#define PIESLICE_H + +#include +#include + +//![0] +class PieSlice : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(QColor color READ color WRITE setColor) + +public: + PieSlice(QDeclarativeItem *parent = 0); + + QColor color() const; + void setColor(const QColor &color); + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + +private: + QColor m_color; +}; +//![0] + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml new file mode 100644 index 0000000000..cb46ebf7c7 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 1.0 + +Item { + width: 300; height: 200 + + PieChart { + anchors.centerIn: parent + width: 100; height: 100 + + slices: [ + PieSlice { + anchors.fill: parent + color: "red" + fromAngle: 0; angleSpan: 110 + }, + PieSlice { + anchors.fill: parent + color: "black" + fromAngle: 110; angleSpan: 50 + }, + PieSlice { + anchors.fill: parent + color: "blue" + fromAngle: 160; angleSpan: 100 + } + ] + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro new file mode 100644 index 0000000000..f5dc31a3db --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro @@ -0,0 +1,7 @@ +QT += declarative qtquick1 + +HEADERS += piechart.h \ + pieslice.h +SOURCES += piechart.cpp \ + pieslice.cpp \ + main.cpp diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp new file mode 100644 index 0000000000..2832e85ff8 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "piechart.h" +#include "pieslice.h" + +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterType("Charts", 1, 0, "PieChart"); + qmlRegisterType("Charts", 1, 0, "PieSlice"); + + QDeclarativeView view; + view.setSource(QUrl::fromLocalFile("app.qml")); + view.show(); + return app.exec(); +} diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp new file mode 100644 index 0000000000..1719c0f30a --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "piechart.h" +#include "pieslice.h" + +PieChart::PieChart(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ +} + +QString PieChart::name() const +{ + return m_name; +} + +void PieChart::setName(const QString &name) +{ + m_name = name; +} + +//![0] +QDeclarativeListProperty PieChart::slices() +{ + return QDeclarativeListProperty(this, 0, &PieChart::append_slice); +} + +void PieChart::append_slice(QDeclarativeListProperty *list, PieSlice *slice) +{ + PieChart *chart = qobject_cast(list->object); + if (chart) { + slice->setParentItem(chart); + chart->m_slices.append(slice); + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h new file mode 100644 index 0000000000..aba695c608 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIECHART_H +#define PIECHART_H + +#include + +class PieSlice; + +//![0] +class PieChart : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(QDeclarativeListProperty slices READ slices) +//![0] + Q_PROPERTY(QString name READ name WRITE setName) + +//![1] +public: +//![1] + PieChart(QDeclarativeItem *parent = 0); + + QString name() const; + void setName(const QString &name); + +//![2] + QDeclarativeListProperty slices(); + +private: + static void append_slice(QDeclarativeListProperty *list, PieSlice *slice); + + QString m_name; + QList m_slices; +}; +//![2] + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp new file mode 100644 index 0000000000..16f4bae11b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "pieslice.h" + +#include + +PieSlice::PieSlice(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ + // need to disable this flag to draw inside a QDeclarativeItem + setFlag(QGraphicsItem::ItemHasNoContents, false); +} + +QColor PieSlice::color() const +{ + return m_color; +} + +void PieSlice::setColor(const QColor &color) +{ + m_color = color; +} + +int PieSlice::fromAngle() const +{ + return m_fromAngle; +} + +void PieSlice::setFromAngle(int angle) +{ + m_fromAngle = angle; +} + +int PieSlice::angleSpan() const +{ + return m_angleSpan; +} + +void PieSlice::setAngleSpan(int angle) +{ + m_angleSpan = angle; +} + +void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +{ + QPen pen(m_color, 2); + painter->setPen(pen); + painter->setRenderHints(QPainter::Antialiasing, true); + painter->drawPie(boundingRect(), m_fromAngle * 16, m_angleSpan * 16); +} + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h new file mode 100644 index 0000000000..40e4f8a9ca --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIESLICE_H +#define PIESLICE_H + +#include +#include + +//![0] +class PieSlice : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(int fromAngle READ fromAngle WRITE setFromAngle) + Q_PROPERTY(int angleSpan READ angleSpan WRITE setAngleSpan) +//![0] + +public: + PieSlice(QDeclarativeItem *parent = 0); + + QColor color() const; + void setColor(const QColor &color); + + int fromAngle() const; + void setFromAngle(int angle); + + int angleSpan() const; + void setAngleSpan(int span); + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + +private: + QColor m_color; + int m_fromAngle; + int m_angleSpan; +}; + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml new file mode 100644 index 0000000000..fded8f3329 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 + +Item { + width: 300; height: 200 + + PieChart { + anchors.centerIn: parent + width: 100; height: 100 + + slices: [ + PieSlice { + anchors.fill: parent + color: "red" + fromAngle: 0; angleSpan: 110 + }, + PieSlice { + anchors.fill: parent + color: "black" + fromAngle: 110; angleSpan: 50 + }, + PieSlice { + anchors.fill: parent + color: "blue" + fromAngle: 160; angleSpan: 100 + } + ] + } +} + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro new file mode 100644 index 0000000000..3533096b8b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro @@ -0,0 +1,20 @@ +TEMPLATE = lib +CONFIG += qt plugin +QT += declarative qtquick1 + +DESTDIR = lib +OBJECTS_DIR = tmp +MOC_DIR = tmp + +HEADERS += piechart.h \ + pieslice.h \ + chartsplugin.h + +SOURCES += piechart.cpp \ + pieslice.cpp \ + chartsplugin.cpp + +symbian { + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) + TARGET.EPOCALLOWDLLDATA = 1 +} diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp new file mode 100644 index 0000000000..08ffbe4836 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "chartsplugin.h" +//![0] +#include "piechart.h" +#include "pieslice.h" + +void ChartsPlugin::registerTypes(const char *uri) +{ + qmlRegisterType(uri, 1, 0, "PieChart"); + qmlRegisterType(uri, 1, 0, "PieSlice"); +} + +Q_EXPORT_PLUGIN2(chartsplugin, ChartsPlugin); +//![0] + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h new file mode 100644 index 0000000000..8cb6ded41d --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef CHARTSPLUGIN_H +#define CHARTSPLUGIN_H + +//![0] +#include + +class ChartsPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + void registerTypes(const char *uri); +}; +//![0] + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp new file mode 100644 index 0000000000..c1ea448422 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "piechart.h" +#include "pieslice.h" + +PieChart::PieChart(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ +} + +QString PieChart::name() const +{ + return m_name; +} + +void PieChart::setName(const QString &name) +{ + m_name = name; +} + +QDeclarativeListProperty PieChart::slices() +{ + return QDeclarativeListProperty(this, 0, &PieChart::append_slice); +} + +void PieChart::append_slice(QDeclarativeListProperty *list, PieSlice *slice) +{ + PieChart *chart = qobject_cast(list->object); + if (chart) { + slice->setParentItem(chart); + chart->m_slices.append(slice); + } +} + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h new file mode 100644 index 0000000000..2f86d224fa --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIECHART_H +#define PIECHART_H + +#include + +class PieSlice; + +class PieChart : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(QDeclarativeListProperty slices READ slices) + Q_PROPERTY(QString name READ name WRITE setName) + +public: + PieChart(QDeclarativeItem *parent = 0); + + QString name() const; + void setName(const QString &name); + + QDeclarativeListProperty slices(); + +private: + static void append_slice(QDeclarativeListProperty *list, PieSlice *slice); + + QString m_name; + QList m_slices; +}; + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp new file mode 100644 index 0000000000..16f4bae11b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "pieslice.h" + +#include + +PieSlice::PieSlice(QDeclarativeItem *parent) + : QDeclarativeItem(parent) +{ + // need to disable this flag to draw inside a QDeclarativeItem + setFlag(QGraphicsItem::ItemHasNoContents, false); +} + +QColor PieSlice::color() const +{ + return m_color; +} + +void PieSlice::setColor(const QColor &color) +{ + m_color = color; +} + +int PieSlice::fromAngle() const +{ + return m_fromAngle; +} + +void PieSlice::setFromAngle(int angle) +{ + m_fromAngle = angle; +} + +int PieSlice::angleSpan() const +{ + return m_angleSpan; +} + +void PieSlice::setAngleSpan(int angle) +{ + m_angleSpan = angle; +} + +void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) +{ + QPen pen(m_color, 2); + painter->setPen(pen); + painter->setRenderHints(QPainter::Antialiasing, true); + painter->drawPie(boundingRect(), m_fromAngle * 16, m_angleSpan * 16); +} + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h new file mode 100644 index 0000000000..f1f1e8904b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PIESLICE_H +#define PIESLICE_H + +#include +#include + +class PieSlice : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(int fromAngle READ fromAngle WRITE setFromAngle) + Q_PROPERTY(int angleSpan READ angleSpan WRITE setAngleSpan) + +public: + PieSlice(QDeclarativeItem *parent = 0); + + QColor color() const; + void setColor(const QColor &color); + + int fromAngle() const; + void setFromAngle(int angle); + + int angleSpan() const; + void setAngleSpan(int span); + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); + +private: + QColor m_color; + int m_fromAngle; + int m_angleSpan; +}; + +#endif + diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir new file mode 100644 index 0000000000..a83bf85ddb --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir @@ -0,0 +1 @@ +plugin chapter6-plugins lib diff --git a/examples/declarative/qtquick1/tutorials/extending/extending.pro b/examples/declarative/qtquick1/tutorials/extending/extending.pro new file mode 100644 index 0000000000..a665975382 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/extending.pro @@ -0,0 +1,10 @@ +TEMPLATE = subdirs + +SUBDIRS += \ + chapter1-basics \ + chapter2-methods \ + chapter3-bindings \ + chapter4-customPropertyTypes \ + chapter5-listproperties \ + chapter6-plugins + diff --git a/examples/declarative/qtquick1/tutorials/helloworld/Cell.qml b/examples/declarative/qtquick1/tutorials/helloworld/Cell.qml new file mode 100644 index 0000000000..39f859192b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/helloworld/Cell.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 + +//![1] +Item { + id: container +//![4] + property alias cellColor: rectangle.color +//![4] +//![5] + signal clicked(color cellColor) +//![5] + + width: 40; height: 25 +//![1] + +//![2] + Rectangle { + id: rectangle + border.color: "white" + anchors.fill: parent + } +//![2] + +//![3] + MouseArea { + anchors.fill: parent + onClicked: container.clicked(container.cellColor) + } +//![3] +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml b/examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml new file mode 100644 index 0000000000..de709954a8 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +//![3] +import QtQuick 1.0 +//![3] + +//![1] +Rectangle { + id: page + width: 500; height: 200 + color: "lightgray" +//![1] + +//![2] + Text { + id: helloText + text: "Hello world!" + y: 30 + anchors.horizontalCenter: page.horizontalCenter + font.pointSize: 24; font.bold: true + } +//![2] +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml b/examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml new file mode 100644 index 0000000000..88f347a45c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 + +Rectangle { + id: page + width: 500; height: 200 + color: "lightgray" + + Text { + id: helloText + text: "Hello world!" + y: 30 + anchors.horizontalCenter: page.horizontalCenter + font.pointSize: 24; font.bold: true + } + + Grid { + id: colorPicker + x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4 + rows: 2; columns: 3; spacing: 3 + +//![1] + Cell { cellColor: "red"; onClicked: helloText.color = cellColor } +//![1] + Cell { cellColor: "green"; onClicked: helloText.color = cellColor } + Cell { cellColor: "blue"; onClicked: helloText.color = cellColor } + Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor } + Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor } + Cell { cellColor: "black"; onClicked: helloText.color = cellColor } + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml b/examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml new file mode 100644 index 0000000000..282af9c4b4 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 + +Rectangle { + id: page + width: 500; height: 200 + color: "lightgray" + + Text { + id: helloText + text: "Hello world!" + y: 30 + anchors.horizontalCenter: page.horizontalCenter + font.pointSize: 24; font.bold: true + +//![1] + MouseArea { id: mouseArea; anchors.fill: parent } +//![1] + +//![2] + states: State { + name: "down"; when: mouseArea.pressed == true + PropertyChanges { target: helloText; y: 160; rotation: 180; color: "red" } + } +//![2] + +//![3] + transitions: Transition { + from: ""; to: "down"; reversible: true + ParallelAnimation { + NumberAnimation { properties: "y,rotation"; duration: 500; easing.type: Easing.InOutQuad } + ColorAnimation { duration: 500 } + } + } +//![3] + } + + Grid { + id: colorPicker + x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4 + rows: 2; columns: 3; spacing: 3 + + Cell { cellColor: "red"; onClicked: helloText.color = cellColor } + Cell { cellColor: "green"; onClicked: helloText.color = cellColor } + Cell { cellColor: "blue"; onClicked: helloText.color = cellColor } + Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor } + Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor } + Cell { cellColor: "black"; onClicked: helloText.color = cellColor } + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml new file mode 100644 index 0000000000..645e2f0031 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 + +Item { + id: block + + Image { + id: img + anchors.fill: parent + source: "../shared/pics/redStone.png" + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml new file mode 100644 index 0000000000..a9aa938e12 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 + +Rectangle { + id: container + + property string text: "Button" + + signal clicked + + width: buttonLabel.width + 20; height: buttonLabel.height + 5 + border { width: 1; color: Qt.darker(activePalette.button) } + smooth: true + radius: 8 + + // color the button with a gradient + gradient: Gradient { + GradientStop { + position: 0.0 + color: { + if (mouseArea.pressed) + return activePalette.dark + else + return activePalette.light + } + } + GradientStop { position: 1.0; color: activePalette.button } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: container.clicked(); + } + + Text { + id: buttonLabel + anchors.centerIn: container + color: activePalette.buttonText + text: container.text + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml new file mode 100644 index 0000000000..d82a33c22b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 + +Rectangle { + id: screen + + width: 490; height: 720 + + SystemPalette { id: activePalette } + + Item { + width: parent.width + anchors { top: parent.top; bottom: toolBar.top } + + Image { + id: background + anchors.fill: parent + source: "../shared/pics/background.jpg" + fillMode: Image.PreserveAspectCrop + } + } + + Rectangle { + id: toolBar + width: parent.width; height: 30 + color: activePalette.window + anchors.bottom: screen.bottom + + Button { + anchors { left: parent.left; verticalCenter: parent.verticalCenter } + text: "New Game" + onClicked: console.log("This doesn't do anything yet...") + } + + Text { + id: score + anchors { right: parent.right; verticalCenter: parent.verticalCenter } + text: "Score: Who knows?" + } + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject b/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml new file mode 100644 index 0000000000..9da8267663 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Item { + id: block + + Image { + id: img + anchors.fill: parent + source: "../shared/pics/redStone.png" + } +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml new file mode 100644 index 0000000000..aef0a1ec1b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: container + + property string text: "Button" + + signal clicked + + width: buttonLabel.width + 20; height: buttonLabel.height + 5 + border { width: 1; color: Qt.darker(activePalette.button) } + smooth: true + radius: 8 + + // color the button with a gradient + gradient: Gradient { + GradientStop { + position: 0.0 + color: { + if (mouseArea.pressed) + return activePalette.dark + else + return activePalette.light + } + } + GradientStop { position: 1.0; color: activePalette.button } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: container.clicked(); + } + + Text { + id: buttonLabel + anchors.centerIn: container + color: activePalette.buttonText + text: container.text + } +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js new file mode 100644 index 0000000000..c749dc17b1 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js @@ -0,0 +1,63 @@ +//![0] +var blockSize = 40; +var maxColumn = 10; +var maxRow = 15; +var maxIndex = maxColumn * maxRow; +var board = new Array(maxIndex); +var component; + +//Index function used instead of a 2D array +function index(column, row) { + return column + (row * maxColumn); +} + +function startNewGame() { + //Delete blocks from previous game + for (var i = 0; i < maxIndex; i++) { + if (board[i] != null) + board[i].destroy(); + } + + //Calculate board size + maxColumn = Math.floor(background.width / blockSize); + maxRow = Math.floor(background.height / blockSize); + maxIndex = maxRow * maxColumn; + + //Initialize Board + board = new Array(maxIndex); + for (var column = 0; column < maxColumn; column++) { + for (var row = 0; row < maxRow; row++) { + board[index(column, row)] = null; + createBlock(column, row); + } + } +} + +function createBlock(column, row) { + if (component == null) + component = Qt.createComponent("Block.qml"); + + // Note that if Block.qml was not a local file, component.status would be + // Loading and we should wait for the component's statusChanged() signal to + // know when the file is downloaded and ready before calling createObject(). + if (component.status == Component.Ready) { + var dynamicObject = component.createObject(background); + if (dynamicObject == null) { + console.log("error creating block"); + console.log(component.errorString()); + return false; + } + dynamicObject.x = column * blockSize; + dynamicObject.y = row * blockSize; + dynamicObject.width = blockSize; + dynamicObject.height = blockSize; + board[index(column, row)] = dynamicObject; + } else { + console.log("error loading block component"); + console.log(component.errorString()); + return false; + } + return true; +} +//![0] + diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml new file mode 100644 index 0000000000..24391e5bf7 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +//![2] +import "samegame.js" as SameGame +//![2] + +Rectangle { + id: screen + + width: 490; height: 720 + + SystemPalette { id: activePalette } + + Item { + width: parent.width + anchors { top: parent.top; bottom: toolBar.top } + + Image { + id: background + anchors.fill: parent + source: "../shared/pics/background.jpg" + fillMode: Image.PreserveAspectCrop + } + } + + Rectangle { + id: toolBar + width: parent.width; height: 32 + color: activePalette.window + anchors.bottom: screen.bottom + +//![1] + Button { + anchors { left: parent.left; verticalCenter: parent.verticalCenter } + text: "New Game" + onClicked: SameGame.startNewGame() + } +//![1] + + Text { + id: score + anchors { right: parent.right; verticalCenter: parent.verticalCenter } + text: "Score: Who knows?" + } + } +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml new file mode 100644 index 0000000000..86c2f706f3 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 + +Item { + id: block + + property int type: 0 + + Image { + id: img + + anchors.fill: parent + source: { + if (type == 0) + return "../shared/pics/redStone.png"; + else if (type == 1) + return "../shared/pics/blueStone.png"; + else + return "../shared/pics/greenStone.png"; + } + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml new file mode 100644 index 0000000000..aef0a1ec1b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: container + + property string text: "Button" + + signal clicked + + width: buttonLabel.width + 20; height: buttonLabel.height + 5 + border { width: 1; color: Qt.darker(activePalette.button) } + smooth: true + radius: 8 + + // color the button with a gradient + gradient: Gradient { + GradientStop { + position: 0.0 + color: { + if (mouseArea.pressed) + return activePalette.dark + else + return activePalette.light + } + } + GradientStop { position: 1.0; color: activePalette.button } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: container.clicked(); + } + + Text { + id: buttonLabel + anchors.centerIn: container + color: activePalette.buttonText + text: container.text + } +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml new file mode 100644 index 0000000000..0af4e2c566 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 + +Rectangle { + id: container + + function show(text) { + dialogText.text = text; + container.opacity = 1; + } + + function hide() { + container.opacity = 0; + } + + width: dialogText.width + 20 + height: dialogText.height + 20 + opacity: 0 + + Text { + id: dialogText + anchors.centerIn: parent + text: "" + } + + MouseArea { + anchors.fill: parent + onClicked: hide(); + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js new file mode 100644 index 0000000000..01edc5bd41 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js @@ -0,0 +1,174 @@ +/* This script file handles the game logic */ +var maxColumn = 10; +var maxRow = 15; +var maxIndex = maxColumn * maxRow; +var board = new Array(maxIndex); +var component; + +//Index function used instead of a 2D array +function index(column, row) { + return column + (row * maxColumn); +} + +function startNewGame() { + //Calculate board size + maxColumn = Math.floor(gameCanvas.width / gameCanvas.blockSize); + maxRow = Math.floor(gameCanvas.height / gameCanvas.blockSize); + maxIndex = maxRow * maxColumn; + + //Close dialogs + dialog.hide(); + + //Initialize Board + board = new Array(maxIndex); + gameCanvas.score = 0; + for (var column = 0; column < maxColumn; column++) { + for (var row = 0; row < maxRow; row++) { + board[index(column, row)] = null; + createBlock(column, row); + } + } +} + +function createBlock(column, row) { + if (component == null) + component = Qt.createComponent("Block.qml"); + + // Note that if Block.qml was not a local file, component.status would be + // Loading and we should wait for the component's statusChanged() signal to + // know when the file is downloaded and ready before calling createObject(). + if (component.status == Component.Ready) { + var dynamicObject = component.createObject(gameCanvas); + if (dynamicObject == null) { + console.log("error creating block"); + console.log(component.errorString()); + return false; + } + dynamicObject.type = Math.floor(Math.random() * 3); + dynamicObject.x = column * gameCanvas.blockSize; + dynamicObject.y = row * gameCanvas.blockSize; + dynamicObject.width = gameCanvas.blockSize; + dynamicObject.height = gameCanvas.blockSize; + board[index(column, row)] = dynamicObject; + } else { + console.log("error loading block component"); + console.log(component.errorString()); + return false; + } + return true; +} + +var fillFound; //Set after a floodFill call to the number of blocks found +var floodBoard; //Set to 1 if the floodFill reaches off that node + +//![1] +function handleClick(xPos, yPos) { + var column = Math.floor(xPos / gameCanvas.blockSize); + var row = Math.floor(yPos / gameCanvas.blockSize); + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return; + if (board[index(column, row)] == null) + return; + //If it's a valid block, remove it and all connected (does nothing if it's not connected) + floodFill(column, row, -1); + if (fillFound <= 0) + return; + gameCanvas.score += (fillFound - 1) * (fillFound - 1); + shuffleDown(); + victoryCheck(); +} +//![1] + +function floodFill(column, row, type) { + if (board[index(column, row)] == null) + return; + var first = false; + if (type == -1) { + first = true; + type = board[index(column, row)].type; + + //Flood fill initialization + fillFound = 0; + floodBoard = new Array(maxIndex); + } + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return; + if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type)) + return; + floodBoard[index(column, row)] = 1; + floodFill(column + 1, row, type); + floodFill(column - 1, row, type); + floodFill(column, row + 1, type); + floodFill(column, row - 1, type); + if (first == true && fillFound == 0) + return; //Can't remove single blocks + board[index(column, row)].opacity = 0; + board[index(column, row)] = null; + fillFound += 1; +} + +function shuffleDown() { + //Fall down + for (var column = 0; column < maxColumn; column++) { + var fallDist = 0; + for (var row = maxRow - 1; row >= 0; row--) { + if (board[index(column, row)] == null) { + fallDist += 1; + } else { + if (fallDist > 0) { + var obj = board[index(column, row)]; + obj.y += fallDist * gameCanvas.blockSize; + board[index(column, row + fallDist)] = obj; + board[index(column, row)] = null; + } + } + } + } + //Fall to the left + var fallDist = 0; + for (var column = 0; column < maxColumn; column++) { + if (board[index(column, maxRow - 1)] == null) { + fallDist += 1; + } else { + if (fallDist > 0) { + for (var row = 0; row < maxRow; row++) { + var obj = board[index(column, row)]; + if (obj == null) + continue; + obj.x -= fallDist * gameCanvas.blockSize; + board[index(column - fallDist, row)] = obj; + board[index(column, row)] = null; + } + } + } + } +} + +//![2] +function victoryCheck() { + //Award bonus points if no blocks left + var deservesBonus = true; + for (var column = maxColumn - 1; column >= 0; column--) + if (board[index(column, maxRow - 1)] != null) + deservesBonus = false; + if (deservesBonus) + gameCanvas.score += 500; + + //Check whether game has finished + if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1))) + dialog.show("Game Over. Your score is " + gameCanvas.score); +} +//![2] + +//only floods up and right, to see if it can find adjacent same-typed blocks +function floodMoveCheck(column, row, type) { + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return false; + if (board[index(column, row)] == null) + return false; + var myType = board[index(column, row)].type; + if (type == myType) + return true; + return floodMoveCheck(column + 1, row, myType) || floodMoveCheck(column, row - 1, board[index(column, row)].type); +} + diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml new file mode 100644 index 0000000000..068fa8b95e --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 1.0 +import "samegame.js" as SameGame + +Rectangle { + id: screen + + width: 490; height: 720 + + SystemPalette { id: activePalette } + + Item { + width: parent.width + anchors { top: parent.top; bottom: toolBar.top } + + Image { + id: background + anchors.fill: parent + source: "../shared/pics/background.jpg" + fillMode: Image.PreserveAspectCrop + } + +//![1] + Item { + id: gameCanvas + + property int score: 0 + property int blockSize: 40 + + width: parent.width - (parent.width % blockSize) + height: parent.height - (parent.height % blockSize) + anchors.centerIn: parent + + MouseArea { + anchors.fill: parent + onClicked: SameGame.handleClick(mouse.x, mouse.y) + } + } +//![1] + } + +//![2] + Dialog { + id: dialog + anchors.centerIn: parent + z: 100 + } +//![2] + + Rectangle { + id: toolBar + width: parent.width; height: 30 + color: activePalette.window + anchors.bottom: screen.bottom + + Button { + anchors { left: parent.left; verticalCenter: parent.verticalCenter } + text: "New Game" + onClicked: SameGame.startNewGame() + } + + Text { + id: score + anchors { right: parent.right; verticalCenter: parent.verticalCenter } + text: "Score: Who knows?" + } + } +} +//![0] diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml new file mode 100644 index 0000000000..08ee0efdff --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import Qt.labs.particles 1.0 + +Item { + id: block + + property int type: 0 + property bool dying: false + + //![1] + property bool spawned: false + + Behavior on x { + enabled: spawned; + SpringAnimation{ spring: 2; damping: 0.2 } + } + Behavior on y { + SpringAnimation{ spring: 2; damping: 0.2 } + } + //![1] + + //![2] + Image { + id: img + + anchors.fill: parent + source: { + if (type == 0) + return "../../shared/pics/redStone.png"; + else if (type == 1) + return "../../shared/pics/blueStone.png"; + else + return "../../shared/pics/greenStone.png"; + } + opacity: 0 + + Behavior on opacity { + NumberAnimation { properties:"opacity"; duration: 200 } + } + } + //![2] + + //![3] + Particles { + id: particles + + width: 1; height: 1 + anchors.centerIn: parent + + emissionRate: 0 + lifeSpan: 700; lifeSpanDeviation: 600 + angle: 0; angleDeviation: 360; + velocity: 100; velocityDeviation: 30 + source: { + if (type == 0) + return "../../shared/pics/redStar.png"; + else if (type == 1) + return "../../shared/pics/blueStar.png"; + else + return "../../shared/pics/greenStar.png"; + } + } + //![3] + + //![4] + states: [ + State { + name: "AliveState" + when: spawned == true && dying == false + PropertyChanges { target: img; opacity: 1 } + }, + + State { + name: "DeathState" + when: dying == true + StateChangeScript { script: particles.burst(50); } + PropertyChanges { target: img; opacity: 0 } + StateChangeScript { script: block.destroy(1000); } + } + ] + //![4] +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml new file mode 100644 index 0000000000..aef0a1ec1b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: container + + property string text: "Button" + + signal clicked + + width: buttonLabel.width + 20; height: buttonLabel.height + 5 + border { width: 1; color: Qt.darker(activePalette.button) } + smooth: true + radius: 8 + + // color the button with a gradient + gradient: Gradient { + GradientStop { + position: 0.0 + color: { + if (mouseArea.pressed) + return activePalette.dark + else + return activePalette.light + } + } + GradientStop { position: 1.0; color: activePalette.button } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: container.clicked(); + } + + Text { + id: buttonLabel + anchors.centerIn: container + color: activePalette.buttonText + text: container.text + } +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml new file mode 100644 index 0000000000..6276fcf1f9 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +//![0] +Rectangle { + id: container +//![0] + +//![1] + property string inputText: textInput.text + signal closed + + function show(text) { + dialogText.text = text; + container.opacity = 1; + textInput.opacity = 0; + } + + function showWithInput(text) { + show(text); + textInput.opacity = 1; + textInput.focus = true; + textInput.text = "" + } + + function hide() { + textInput.focus = false; + container.opacity = 0; + container.closed(); + } +//![1] + + width: dialogText.width + textInput.width + 20 + height: dialogText.height + 20 + opacity: 0 + visible: opacity > 0 + + Text { + id: dialogText + anchors { verticalCenter: parent.verticalCenter; left: parent.left; leftMargin: 10 } + text: "" + } + +//![2] + TextInput { + id: textInput + anchors { verticalCenter: parent.verticalCenter; left: dialogText.right } + width: 80 + text: "" + + onAccepted: container.hide() // close dialog when Enter is pressed + } +//![2] + + MouseArea { + anchors.fill: parent + + onClicked: { + if (textInput.text == "" && textInput.opacity > 0) + textInput.openSoftwareInputPanel(); + else + hide(); + } + } + +//![3] +} +//![3] diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js new file mode 100755 index 0000000000..59ac446452 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js @@ -0,0 +1,225 @@ +/* This script file handles the game logic */ +var maxColumn = 10; +var maxRow = 15; +var maxIndex = maxColumn * maxRow; +var board = new Array(maxIndex); +var component; +var scoresURL = ""; +var gameDuration; + +//Index function used instead of a 2D array +function index(column, row) { + return column + (row * maxColumn); +} + +function startNewGame() { + //Delete blocks from previous game + for (var i = 0; i < maxIndex; i++) { + if (board[i] != null) + board[i].destroy(); + } + + //Calculate board size + maxColumn = Math.floor(gameCanvas.width / gameCanvas.blockSize); + maxRow = Math.floor(gameCanvas.height / gameCanvas.blockSize); + maxIndex = maxRow * maxColumn; + + //Close dialogs + nameInputDialog.hide(); + dialog.hide(); + + //Initialize Board + board = new Array(maxIndex); + gameCanvas.score = 0; + for (var column = 0; column < maxColumn; column++) { + for (var row = 0; row < maxRow; row++) { + board[index(column, row)] = null; + createBlock(column, row); + } + } + + gameDuration = new Date(); +} + +function createBlock(column, row) { + if (component == null) + component = Qt.createComponent("content/BoomBlock.qml"); + + // Note that if Block.qml was not a local file, component.status would be + // Loading and we should wait for the component's statusChanged() signal to + // know when the file is downloaded and ready before calling createObject(). + if (component.status == Component.Ready) { + var dynamicObject = component.createObject(gameCanvas); + if (dynamicObject == null) { + console.log("error creating block"); + console.log(component.errorString()); + return false; + } + dynamicObject.type = Math.floor(Math.random() * 3); + dynamicObject.x = column * gameCanvas.blockSize; + dynamicObject.y = row * gameCanvas.blockSize; + dynamicObject.width = gameCanvas.blockSize; + dynamicObject.height = gameCanvas.blockSize; + dynamicObject.spawned = true; + board[index(column, row)] = dynamicObject; + } else { + console.log("error loading block component"); + console.log(component.errorString()); + return false; + } + return true; +} + +var fillFound; //Set after a floodFill call to the number of blocks found +var floodBoard; //Set to 1 if the floodFill reaches off that node + +function handleClick(xPos, yPos) { + var column = Math.floor(xPos / gameCanvas.blockSize); + var row = Math.floor(yPos / gameCanvas.blockSize); + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return; + if (board[index(column, row)] == null) + return; + //If it's a valid block, remove it and all connected (does nothing if it's not connected) + floodFill(column, row, -1); + if (fillFound <= 0) + return; + gameCanvas.score += (fillFound - 1) * (fillFound - 1); + shuffleDown(); + victoryCheck(); +} + +function floodFill(column, row, type) { + if (board[index(column, row)] == null) + return; + var first = false; + if (type == -1) { + first = true; + type = board[index(column, row)].type; + + //Flood fill initialization + fillFound = 0; + floodBoard = new Array(maxIndex); + } + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return; + if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type)) + return; + floodBoard[index(column, row)] = 1; + floodFill(column + 1, row, type); + floodFill(column - 1, row, type); + floodFill(column, row + 1, type); + floodFill(column, row - 1, type); + if (first == true && fillFound == 0) + return; //Can't remove single blocks + board[index(column, row)].dying = true; + board[index(column, row)] = null; + fillFound += 1; +} + +function shuffleDown() { + //Fall down + for (var column = 0; column < maxColumn; column++) { + var fallDist = 0; + for (var row = maxRow - 1; row >= 0; row--) { + if (board[index(column, row)] == null) { + fallDist += 1; + } else { + if (fallDist > 0) { + var obj = board[index(column, row)]; + obj.y = (row + fallDist) * gameCanvas.blockSize; + board[index(column, row + fallDist)] = obj; + board[index(column, row)] = null; + } + } + } + } + //Fall to the left + fallDist = 0; + for (column = 0; column < maxColumn; column++) { + if (board[index(column, maxRow - 1)] == null) { + fallDist += 1; + } else { + if (fallDist > 0) { + for (row = 0; row < maxRow; row++) { + obj = board[index(column, row)]; + if (obj == null) + continue; + obj.x = (column - fallDist) * gameCanvas.blockSize; + board[index(column - fallDist, row)] = obj; + board[index(column, row)] = null; + } + } + } + } +} + +//![3] +function victoryCheck() { +//![3] + //Award bonus points if no blocks left + var deservesBonus = true; + for (var column = maxColumn - 1; column >= 0; column--) + if (board[index(column, maxRow - 1)] != null) + deservesBonus = false; + if (deservesBonus) + gameCanvas.score += 500; + +//![4] + //Check whether game has finished + if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1))) { + gameDuration = new Date() - gameDuration; + nameInputDialog.showWithInput("You won! Please enter your name: "); + } +} +//![4] + +//only floods up and right, to see if it can find adjacent same-typed blocks +function floodMoveCheck(column, row, type) { + if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) + return false; + if (board[index(column, row)] == null) + return false; + var myType = board[index(column, row)].type; + if (type == myType) + return true; + return floodMoveCheck(column + 1, row, myType) || floodMoveCheck(column, row - 1, board[index(column, row)].type); +} + +//![2] +function saveHighScore(name) { + if (scoresURL != "") + sendHighScore(name); + + var db = openDatabaseSync("SameGameScores", "1.0", "Local SameGame High Scores", 100); + var dataStr = "INSERT INTO Scores VALUES(?, ?, ?, ?)"; + var data = [name, gameCanvas.score, maxColumn + "x" + maxRow, Math.floor(gameDuration / 1000)]; + db.transaction(function(tx) { + tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(name TEXT, score NUMBER, gridSize TEXT, time NUMBER)'); + tx.executeSql(dataStr, data); + + var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "12x17" ORDER BY score desc LIMIT 10'); + var r = "\nHIGH SCORES for a standard sized grid\n\n" + for (var i = 0; i < rs.rows.length; i++) { + r += (i + 1) + ". " + rs.rows.item(i).name + ' got ' + rs.rows.item(i).score + ' points in ' + rs.rows.item(i).time + ' seconds.\n'; + } + dialog.show(r); + }); +} +//![2] + +//![1] +function sendHighScore(name) { + var postman = new XMLHttpRequest() + var postData = "name=" + name + "&score=" + gameCanvas.score + "&gridSize=" + maxColumn + "x" + maxRow + "&time=" + Math.floor(gameDuration / 1000); + postman.open("POST", scoresURL, true); + postman.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + postman.onreadystatechange = function() { + if (postman.readyState == postman.DONE) { + dialog.show("Your score has been uploaded."); + } + } + postman.send(postData); +} +//![1] + diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README new file mode 100644 index 0000000000..eaa00fae37 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README @@ -0,0 +1 @@ +The SameGame example can interface with a simple PHP script to store XML high score data on a remote server. We do not have a publically accessible server available for this use, but if you have access to a PHP capable webserver you can copy the files (score_data.xml, score.php, score_style.xsl) to it and alter the highscore_server variable at the top of the samegame.js file to point to it. diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml new file mode 100755 index 0000000000..c3fd90d9cf --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml @@ -0,0 +1,2 @@ +1000000Alan the Tester0x00 +6213Alan12x1751 diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl new file mode 100755 index 0000000000..670354c965 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl @@ -0,0 +1,28 @@ + + + + + SameGame High Scores + +

            SameGame High Scores

            + + + + + + + + + + + + + + + + +
            NameScoreGrid SizeTime, s
            + + + + diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php new file mode 100755 index 0000000000..f2ccb8e871 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php @@ -0,0 +1,31 @@ +"; + echo "SameGame High Scores"; + if($score > 0){#Sending in a new high score + $name = $_POST["name"]; + $grid = $_POST["gridSize"]; + $time = $_POST["time"]; + if($name == "") + $name = "Anonymous"; + $file = fopen("score_data.xml", "a"); + $ret = fwrite($file, "". $score . "" + . $name . "" . $grid . "" + . $time . "\n"); + echo "Your score has been recorded. Thanks for playing!"; + if($ret == False) + echo "
            There was an error though, so don't expect to see that score again."; + }else{#Read high score list + #Now uses XSLT to display. So just print the file. With XML cruft added. + #Note that firefox at least won't apply the XSLT on a php file. So redirecting + $file = fopen("scores.xml", "w"); + $ret = fwrite($file, '' . "\n" + . '' . "\n" + . "\n" . file_get_contents("score_data.xml") . "\n"); + if($ret == False) + echo "There was an internal error. Sorry."; + else + echo ''; + } + echo ""; +?> diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml new file mode 100644 index 0000000000..157cd1345d --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "content" +import "content/samegame.js" as SameGame + +Rectangle { + id: screen + + width: 490; height: 720 + + SystemPalette { id: activePalette } + + Item { + width: parent.width + anchors { top: parent.top; bottom: toolBar.top } + + Image { + id: background + anchors.fill: parent + source: "../shared/pics/background.jpg" + fillMode: Image.PreserveAspectCrop + } + + Item { + id: gameCanvas + property int score: 0 + property int blockSize: 40 + + anchors.centerIn: parent + width: parent.width - (parent.width % blockSize); + height: parent.height - (parent.height % blockSize); + + MouseArea { + anchors.fill: parent; onClicked: SameGame.handleClick(mouse.x,mouse.y); + } + } + } + + Dialog { + id: dialog + anchors.centerIn: parent + z: 100 + } + + //![0] + Dialog { + id: nameInputDialog + anchors.centerIn: parent + z: 100 + + onClosed: { + if (nameInputDialog.inputText != "") + SameGame.saveHighScore(nameInputDialog.inputText); + } + } + //![0] + + Rectangle { + id: toolBar + width: parent.width; height: 30 + color: activePalette.window + anchors.bottom: screen.bottom + + Button { + anchors { left: parent.left; verticalCenter: parent.verticalCenter } + text: "New Game" + onClicked: SameGame.startNewGame() + } + + Text { + id: score + anchors { right: parent.right; verticalCenter: parent.verticalCenter } + text: "Score: " + gameCanvas.score + } + } +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/background.jpg b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..903d395c8d04c9c1f3ceec8e38aadaccf073ff01 GIT binary patch literal 36473 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 S~YJ6cAChryNrla?vKGSWGwlkT#oISh*m6) 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStar.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStar.png new file mode 100644 index 0000000000000000000000000000000000000000..cd068547198be068e337176857026a1f29e7202b GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggab^#V~1tp6FFQCvwPZ!4!i_>>6 zDe@f(5Ma5$-lVWVe1(364BO$vTLp5L;#iJ*DopiVaV*qihCT;lonzV4H|O4+Ns%lM z^__VvZP~R&3OOyosb zjPAsJJGb#bZ2+6U*f&P2$Dj1t6&0^#)N=_kJ(Q{`|8EzR^ye!>B##b9*@MOLK*uq7 My85}Sb4q9e09G(v)c^nh literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStone.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStone.png new file mode 100644 index 0000000000000000000000000000000000000000..b568a1900c3c656039afe3e6271a469b4b2f7603 GIT binary patch literal 2932 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 #?4kbOf9x1)YLbkap0(F02g!D* zNh8ESh>>OnrU^{jZ#ii}H7&R+u#|v*Mk6a$xTk1Bh%(oE@`oW+|iT*c{{0V7nB@H8qA=~0&Zj%(lA#??VLfuOL{M99CdTwbIWc=!NS5O%Bs~g zc{T%-1lVoE&~24D}GV>B>dkWrFyo>twqwp7{Z7;euz z;(cZ|C|8=8v^VyC$Q|WGa5hWs+2t_nfyV3}YT7C$1|&3yugQFkgk~2GXxiJ(nPZd- z2F9}u#N{&QVwBgbkdjt3wSrlgX9Z(zhGbpHI^a6sW`Oti!33CkA;uyiSfCS|oinpcB3}^$e@Pax`G)06Ty)7UOcrx{&u;$eD_ZfIjWV*6p|) zql)v9Jca}(sfeON8KLlmT=)k&?`G!rIxF1pk*^LtpK4r6B|EEX0b^YP%3Hu4$ZR(c z(boRY)NA)>Rfqu-J(-4`PJyP-jy#ls^SN+&-eI|X-fpFq@X}_@r^XI^dlqtl6_fIA z2G?DJPCu!cyr~F>W5bpDX1G`{Y4d1RK ze|e|j(`yF2ZO;eBrsZVa1lH*%$eD^eAT6M;!By#*>_Uq#kx(Hq5`ZGYMgwK!wH3!J ziw4@g`tJP?_GfUo!{@Rke)$p0p~C{vkN|cR>_Vrv3!1lKmbM;ehSl2Ls`d>uvwSs# zkZji-4>xNj*T;Nz8qfzU|M!M_o|!hDI%t3MSQh^N2-rip&=ZR_HcjC2q*~sEP78dW zr z?x+haHRbf+JEh*bx^(oihYv5^au(O{-GUR^S_`D=4SvbV5^%nNBB+CS$gS zTfDuw$ye@_7ykH`{lcYf|F59E7Ra~W;Q`3^QZR2J`=Kfaw}+GFjo80>iQZ^Z`~A7E z_hqENWqee8@c5>osisuZg0dJh9uK*mTXu8yx>YFFSp@?@pdw?j1Tl=yz9pJ(D{p zs*$R$_3mU6u5FK}=eH)eE)L5p?-cbVt?KJ&*aS9#EnpiM0b`(Sf&DzByoZ7_pV|lZ zwfAxhx+>NkRp*WwV~*v*p-f}|nyD&LwW@=Tnh-aL@dg@hpn4m)+ky>Ss4-BqaMhfO zx)P~5SOHcMIoLkS+c7Fs$1Tj=Ik1^p(-vx`+PrcP4e?^DnOAdm z&ja`7l-<{YXYKEs7Gk`IQhVjyV(vW@a53DnpsJnAQ#a?tX1;b-bfE>P<`in?R0<1f z>0T}7y#N>A%O2on4{%}OOf&})_W*f7vBm5E0IhF_Ml((E_5c6?07*qoM6N<$g6)ir A8~^|S literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/star.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/star.png new file mode 100644 index 0000000000000000000000000000000000000000..defbde53ca489900adbd2eb6b6c83a97cab11e80 GIT binary patch literal 262 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
            5>3iwi@r29@E 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 ST^L&c0000 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/content/overlay.png b/examples/declarative/qtquick1/ui-components/dialcontrol/content/overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..3860a7b59092048eeb1e0ffe3b2ee87af95f5177 GIT binary patch literal 3564 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 Vh5vkKWu5>4002ovPDHLkV1nYy`N{wQ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml new file mode 100644 index 0000000000..9168f8141a --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [imports] +import QtQuick 1.0 +import "content" +//! [imports] + +//! [0] +Rectangle { + color: "#545454" + width: 300; height: 300 + + // Dial with a slider to adjust it + Dial { + id: dial + anchors.centerIn: parent + value: slider.x * 100 / (container.width - 34) + } + + Rectangle { + id: container + anchors { bottom: parent.bottom; left: parent.left + right: parent.right; leftMargin: 20; rightMargin: 20 + bottomMargin: 10 + } + height: 16 + + radius: 8 + opacity: 0.7 + smooth: true + gradient: Gradient { + GradientStop { position: 0.0; color: "gray" } + GradientStop { position: 1.0; color: "white" } + } + + Rectangle { + id: slider + x: 1; y: 1; width: 30; height: 14 + radius: 6 + smooth: true + gradient: Gradient { + GradientStop { position: 0.0; color: "#424242" } + GradientStop { position: 1.0; color: "black" } + } + + MouseArea { + anchors.fill: parent + anchors.margins: -16 // Increase mouse area a lot outside the slider + drag.target: parent; drag.axis: Drag.XAxis + drag.minimumX: 2; drag.maximumX: container.width - 32 + } + } + } + QuitButton { + anchors.right: parent.right + anchors.top: parent.top + anchors.margins: 10 + } +} +//! [0] diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/ui-components/flipable/content/5_heart.png b/examples/declarative/qtquick1/ui-components/flipable/content/5_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..fb59d81453affcf40f5925a63bda3a8d4b40d646 GIT binary patch literal 3872 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

          1. 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¬*4@bB4>T8KgjTKVsU+dBO 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
          2. pAlc`H}@r^ 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

            ~a!-gFM~SrS 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

            H36`LR)y(yk4@m`m%X;Rxfu{4`VCpkICO7*cA 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 XAv9i>#+k9J00000NkvXXu0mjfEn}^) literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg-focus.png b/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg-focus.png new file mode 100644 index 0000000000000000000000000000000000000000..bbfac38d2d2b85169894bdf1b5e800cd042e6c31 GIT binary patch literal 526 zcmV+p0`dKcP)X1^@s6sPETi00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01r9<01r9=mpR+Q00007bV*G`2iXb_ z02wGngYHrQ000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0004LNklZE0mJLLRJb3N#2FL46ncvI}0TgrK~K}ENs-E zkxZTnLmBRwxo0fILaZHif3M(Ew{tq*>pVZ@%TOlJnxfViW3Xi+g6H}8ehkL}1@KZR zaCCah*1;Lst4AxK$`zU$su&;aprwuHX2Ud2E86W9mHd&7=^5@vl7%p;m zEbpYLi`S59uR>|9S>MkvG1|}ca0fPRpev56TvoT!EY43N#u(18A4xXWV&jsHwPddz z5D^5R6dEf&{ZDg6D1{$~-cI3fw?l-Dun{)GM%V}&VI%Cn#wu3`Eo!gt#h_gIY%-xW zQA6(L-b!rl=AO2uIK~*1=le{JbhET^NLUJKv8=&1_tPxQ4WV^_^OVn*gW!!!?wPf{ zBQCDfia+ Q6951J07*qoM6N<$f^*c}CIA2c literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg.png b/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..9044226f855dbeb3d38a07aaa78639a229ae9171 GIT binary patch literal 426 zcmV;b0agBqP)X0ssI2CyhWc00001b5ch_0Itp) z=>Px#32;bRa{vGjIsgCLsrfwU$*#8Th-#N^{p9}{Hz*I;%krEL>ODLtLX<3#{2p9k`8jpLv-+F3t&NYl@ zjAgUg?efm*+Il84XGkf+FnI91>VB + + +]> + + + + + + + + + + + + + + diff --git a/examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg b/examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg new file mode 100644 index 0000000000..fb6933718e --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg @@ -0,0 +1,867 @@ + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml b/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml new file mode 100644 index 0000000000..0a869b5166 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 +import "content" + +Rectangle { + color: "white" + width: 400; height: 250 + +//![0] + Switch { anchors.centerIn: parent; on: false } +//![0] +} diff --git a/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject b/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml b/examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml new file mode 100644 index 0000000000..73b643138d --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Image { + property alias model: view.model + property alias delegate: view.delegate + property alias currentIndex: view.currentIndex + property real itemHeight: 30 + + source: "spinner-bg.png" + clip: true + + PathView { + id: view + anchors.fill: parent + + pathItemCount: height/itemHeight + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + highlight: Image { source: "spinner-select.png"; width: view.width; height: itemHeight+4 } + dragMargin: view.width/2 + + path: Path { + startX: view.width/2; startY: -itemHeight/2 + PathLine { x: view.width/2; y: view.pathItemCount*itemHeight + itemHeight } + } + } + + Keys.onDownPressed: view.incrementCurrentIndex() + Keys.onUpPressed: view.decrementCurrentIndex() +} diff --git a/examples/declarative/qtquick1/ui-components/spinner/content/spinner-bg.png b/examples/declarative/qtquick1/ui-components/spinner/content/spinner-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b3556f1f9f7b43b467a6f6ca74a4927c310ee045 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^fpNMot25*#A7;b=Kfg{% zt(+y8nY&GSueHMGJGKIK=Tyx(Cv(b|I_7np*tU1IWZ=~_w__5I8d-LFZt@8+Jy&8Q z@Kxd?hj9{b@b8eBD~?5aNu`M{Idx?9#-15VOZNL@)ATg7*1uPS`Sb)w_JgC|E!c^E&de7gFg`?1aW_s$)QrzGWg zT#1Tb-G9UN&Uf1|`HkHY$r92+#eT`oJ-nZ!8F%JPIL!toB&Abw0%ESG=5&AsHagZR zFL<$6TKbVWlaZN5(Yg6o-QOrhWfy-H++DHGEPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igM#0xunX zk)P23001I%MObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakAa8CUVIWOmV~41BLjV8) zQAtEWR4C7NlCe(1KoCUVuFpY%0wI9}9{>%4pWw@BsVPAM2`QA2ASKx6U5Y!~=frGj z&&8t~losM-cN@-niq88b?U;$p;JW5#-CCcp$RH8D~kwGbdc5 z@7xku58O174L7VX^oJuFl<7F27(2p-V|FMuS2oNM2@*$oBf&g6tc*gp$9~{RBKp0tGfOMdQvb)4i z;#K|<$buY{?Y)BJn39wCt14_%=wV)%RCELg-Jp=vTDqj*xq079p>$-7sFReF^bzc}rfIZsWCvmhAC x0;9ochfszPx!@6LykW%>!HQc%7MxO3^9RB*qNy5mp=SU9002ovPDHLkV1nx1%P{}| literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject b/examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/ui-components/ui-components.qmlproject b/examples/declarative/qtquick1/ui-components/ui-components.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/ui-components.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/xml/xml.qmlproject b/examples/declarative/qtquick1/xml/xml.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/xml/xml.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/examples/declarative/qtquick1/xml/xmlhttprequest/data.xml b/examples/declarative/qtquick1/xml/xmlhttprequest/data.xml new file mode 100644 index 0000000000..8b7f1e116d --- /dev/null +++ b/examples/declarative/qtquick1/xml/xmlhttprequest/data.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml new file mode 100644 index 0000000000..9cbdcafb98 --- /dev/null +++ b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + width: 350; height: 400 + + function showRequestInfo(text) { + log.text = log.text + "\n" + text + console.log(text) + } + + Text { id: log; anchors.fill: parent; anchors.margins: 10 } + + Rectangle { + id: button + anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom; anchors.margins: 10 + width: buttonText.width + 10; height: buttonText.height + 10 + border.width: mouseArea.pressed ? 2 : 1 + radius : 5; smooth: true + + Text { id: buttonText; anchors.centerIn: parent; text: "Request data.xml" } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: { + log.text = "" + console.log("\n") + + var doc = new XMLHttpRequest(); + doc.onreadystatechange = function() { + if (doc.readyState == XMLHttpRequest.HEADERS_RECEIVED) { + showRequestInfo("Headers -->"); + showRequestInfo(doc.getAllResponseHeaders ()); + showRequestInfo("Last modified -->"); + showRequestInfo(doc.getResponseHeader ("Last-Modified")); + + } else if (doc.readyState == XMLHttpRequest.DONE) { + var a = doc.responseXML.documentElement; + for (var ii = 0; ii < a.childNodes.length; ++ii) { + showRequestInfo(a.childNodes[ii].nodeName); + } + showRequestInfo("Headers -->"); + showRequestInfo(doc.getAllResponseHeaders ()); + showRequestInfo("Last modified -->"); + showRequestInfo(doc.getResponseHeader ("Last-Modified")); + } + } + + doc.open("GET", "data.xml"); + doc.send(); + } + } + } +} + diff --git a/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject new file mode 100644 index 0000000000..d4909f8685 --- /dev/null +++ b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.0 + +Project { + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + // importPaths: [ " ../exampleplugin " ] +} diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp index 4a3a0857c2..4df4e12176 100644 --- a/tests/auto/declarative/examples/tst_examples.cpp +++ b/tests/auto/declarative/examples/tst_examples.cpp @@ -69,6 +69,9 @@ tst_examples::tst_examples() { // Add directories you want excluded here + // Not run in QSGView + excludedDirs << "examples/declarative/qtquick1"; + // These snippets are not expected to run on their own. excludedDirs << "doc/src/snippets/declarative/visualdatamodel_rootindex"; excludedDirs << "doc/src/snippets/declarative/qtbinding"; diff --git a/tests/auto/qtquick1/examples/data/dummytest.qml b/tests/auto/qtquick1/examples/data/dummytest.qml new file mode 100644 index 0000000000..b20e907f27 --- /dev/null +++ b/tests/auto/qtquick1/examples/data/dummytest.qml @@ -0,0 +1,6 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { msec: 0 } + Frame { msec: 10 } +} diff --git a/tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml b/tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml new file mode 100644 index 0000000000..d31787b939 --- /dev/null +++ b/tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml @@ -0,0 +1,6 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { msec: 0 } + Frame { msec: 2000 } +} diff --git a/tests/auto/qtquick1/examples/examples.pro b/tests/auto/qtquick1/examples/examples.pro new file mode 100644 index 0000000000..14756b9df2 --- /dev/null +++ b/tests/auto/qtquick1/examples/examples.pro @@ -0,0 +1,14 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative qtquick1 +macx:CONFIG -= app_bundle + +include(../../../../tools/qmlviewer/qml.pri) + +SOURCES += tst_examples.cpp +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + +QT += core-private gui-private declarative-private qtquick1-private + +qpa:CONFIG+=insignificant_test # QTBUG-20990, aborts diff --git a/tests/auto/qtquick1/examples/tst_examples.cpp b/tests/auto/qtquick1/examples/tst_examples.cpp new file mode 100644 index 0000000000..c2859dc5ef --- /dev/null +++ b/tests/auto/qtquick1/examples/tst_examples.cpp @@ -0,0 +1,212 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 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 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include "qmlruntime.h" +#include +#include + +class tst_examples : public QObject +{ + Q_OBJECT +public: + tst_examples(); + +private slots: + void examples_data(); + void examples(); + + void namingConvention(); +private: + QStringList excludedDirs; + + void namingConvention(const QDir &); + QStringList findQmlFiles(const QDir &); +}; + +tst_examples::tst_examples() +{ + // Add directories you want excluded here + +#ifdef QT_NO_WEBKIT + excludedDirs << "examples/declarative/qtquick1/modelviews/webview"; + excludedDirs << "examples/declarative/qtquick1/webbrowser"; + excludedDirs << "doc/src/snippets/declarative/qtquick1/webview"; + excludedDirs << "doc/src/snippets/qtquick1/qtquick1/webview"; +#endif + +#ifdef QT_NO_XMLPATTERNS + excludedDirs << "examples/declarative/qtquick1/xml/xmldata"; + excludedDirs << "examples/declarative/qtquick1/twitter"; + excludedDirs << "examples/declarative/qtquick1/flickr"; + excludedDirs << "examples/declarative/qtquick1/photoviewer"; +#endif +} + +/* +This tests that the examples follow the naming convention required +to have them tested by the examples() test. +*/ +void tst_examples::namingConvention(const QDir &d) +{ + for (int ii = 0; ii < excludedDirs.count(); ++ii) { + QString s = excludedDirs.at(ii); + if (d.absolutePath().endsWith(s)) + return; + } + + QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"), + QDir::Files); + + bool seenQml = !files.isEmpty(); + bool seenLowercase = false; + + foreach (const QString &file, files) { + if (file.at(0).isLower()) + seenLowercase = true; + } + + if (!seenQml) { + QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | + QDir::NoSymLinks); + foreach (const QString &dir, dirs) { + QDir sub = d; + sub.cd(dir); + namingConvention(sub); + } + } else if (!seenLowercase) { + QFAIL(qPrintable(QString( + "Directory %1 violates naming convention; expected at least one qml file " + "starting with lower case, got: %2" + ).arg(d.absolutePath()).arg(files.join(",")))); + } +} + +void tst_examples::namingConvention() +{ + QString examples = QLibraryInfo::location(QLibraryInfo::ExamplesPath); + + namingConvention(QDir(examples)); +} + +QStringList tst_examples::findQmlFiles(const QDir &d) +{ + for (int ii = 0; ii < excludedDirs.count(); ++ii) { + QString s = excludedDirs.at(ii); + if (d.absolutePath().endsWith(s)) + return QStringList(); + } + + QStringList rv; + + QStringList cppfiles = d.entryList(QStringList() << QLatin1String("*.cpp"), QDir::Files); + if (cppfiles.isEmpty()) { + QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"), + QDir::Files); + foreach (const QString &file, files) { + if (file.at(0).isLower()) { + rv << d.absoluteFilePath(file); + } + } + } + + QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | + QDir::NoSymLinks); + foreach (const QString &dir, dirs) { + QDir sub = d; + sub.cd(dir); + rv << findQmlFiles(sub); + } + + return rv; +} + +/* +This test runs all the examples in the declarative UI source tree and ensures +that they start and exit cleanly. + +Examples are any .qml files under the examples/ directory that start +with a lower case letter. +*/ +static void silentErrorsMsgHandler(QtMsgType, const char *) +{ +} + + +void tst_examples::examples_data() +{ + QTest::addColumn("file"); + + QString examples = QLatin1String(SRCDIR) + "/../../../../examples/declarative/qtquick1"; + + QStringList files; + files << findQmlFiles(QDir(examples)); + + foreach (const QString &file, files) + QTest::newRow(qPrintable(file)) << file; +} + +void tst_examples::examples() +{ + QFETCH(QString, file); + + QDeclarativeViewer viewer; + + QtMsgHandler old = qInstallMsgHandler(silentErrorsMsgHandler); + QVERIFY(viewer.open(file)); + qInstallMsgHandler(old); + + if (viewer.view()->status() == QDeclarativeView::Error) + qWarning() << viewer.view()->errors(); + + QCOMPARE(viewer.view()->status(), QDeclarativeView::Ready); + viewer.show(); + + QTest::qWaitForWindowShown(&viewer); +} + +QTEST_MAIN(tst_examples) + +#include "tst_examples.moc" diff --git a/tests/auto/qtquick1/qtquick1.pro b/tests/auto/qtquick1/qtquick1.pro index 0c3e2498ff..489accb839 100644 --- a/tests/auto/qtquick1/qtquick1.pro +++ b/tests/auto/qtquick1/qtquick1.pro @@ -43,6 +43,7 @@ contains(QT_CONFIG, private_tests) { qdeclarativetimer \ qdeclarativevisualdatamodel \ qdeclarativexmllistmodel \ + examples } From d4289798cb2eca6d38ee9e978192b3156d07edd8 Mon Sep 17 00:00:00 2001 From: Aurindam Jana Date: Thu, 1 Sep 2011 12:32:11 +0200 Subject: [PATCH 34/68] Auto Unit test cases for Javascript Debugging. Change-Id: Iad2deee390deb916854795d27dc38d70891930f6 Reviewed-on: http://codereview.qt.nokia.com/4067 Reviewed-by: Qt Sanity Bot Reviewed-by: Kai Koehne --- tests/auto/declarative/declarative.pro | 1 + .../qdeclarativedebugjs/data/test.js | 53 + .../qdeclarativedebugjs/data/test.qml | 92 + .../qdeclarativedebugjs.pro | 25 + .../tst_qdeclarativedebugjs.cpp | 1681 +++++++++++++++++ 5 files changed, 1852 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativedebugjs/data/test.js create mode 100644 tests/auto/declarative/qdeclarativedebugjs/data/test.qml create mode 100644 tests/auto/declarative/qdeclarativedebugjs/qdeclarativedebugjs.pro create mode 100644 tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index ab7943dab5..2dbbcb93af 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -34,6 +34,7 @@ PRIVATETESTS += \ qdeclarativeenginedebug \ qdeclarativedebugclient \ qdeclarativedebugservice \ + qdeclarativedebugjs \ qdeclarativeecmascript \ qdeclarativeimageprovider \ qdeclarativeinstruction \ diff --git a/tests/auto/declarative/qdeclarativedebugjs/data/test.js b/tests/auto/declarative/qdeclarativedebugjs/data/test.js new file mode 100644 index 0000000000..230a4ea7de --- /dev/null +++ b/tests/auto/declarative/qdeclarativedebugjs/data/test.js @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 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 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +function printMessage(msg) +{ + print(msg); +} + +function add(a,b) +{ + //This is a comment and below is an empty line + + var out = a + b; + return out; +} diff --git a/tests/auto/declarative/qdeclarativedebugjs/data/test.qml b/tests/auto/declarative/qdeclarativedebugjs/data/test.qml new file mode 100644 index 0000000000..2ccb0b85e6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativedebugjs/data/test.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 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 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "test.js" as Script + +//DO NOT CHANGE + +Rectangle { + id: root + width: 10; height: 10; + Component.onCompleted: doSomethingElse() + + property int result:0 + + property int someValue: 10 + + function doSomething() { + var a = root.result; + var b = commonFunction(); + var c = [1,2,3]; + var d = Script.add(a,c[2]); + result += d; + } + + Timer { + interval: 200; running: true; repeat: false + onTriggered: { + doSomething(); + Script.printMessage("onTriggered"); + } + } + + function commonFunction() { + console.log("commonFunction"); + return 5; + } + + function doSomethingElse() { + result = Script.add(result,5); + eval("print(root.result)"); + } + + Timer { + interval: 4000; running: true; repeat: true + onTriggered: { + doSomethingElse(); + dummy(); + } + } + + +} + diff --git a/tests/auto/declarative/qdeclarativedebugjs/qdeclarativedebugjs.pro b/tests/auto/declarative/qdeclarativedebugjs/qdeclarativedebugjs.pro new file mode 100644 index 0000000000..883f94111a --- /dev/null +++ b/tests/auto/declarative/qdeclarativedebugjs/qdeclarativedebugjs.pro @@ -0,0 +1,25 @@ +load(qttest_p4) +QT += declarative network script declarative-private +macx:CONFIG -= app_bundle + +HEADERS += ../shared/debugutil_p.h + +SOURCES += tst_qdeclarativedebugjs.cpp \ + ../shared/debugutil.cpp + +INCLUDEPATH += ../shared + +# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage +# LIBS += -lgcov + +symbian { + importFiles.files = data + importFiles.path = . + DEPLOYMENT += importFiles +} + +OTHER_FILES = data/test.qml \ + data/test.js + + +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp b/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp new file mode 100644 index 0000000000..17048599a2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp @@ -0,0 +1,1681 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 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 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//QDeclarativeDebugTest +#include "../../../shared/util.h" +#include "../shared/debugutil_p.h" + +const char *SEQ = "seq"; +const char *TYPE = "type"; +const char *COMMAND = "command"; +const char *ARGUMENTS = "arguments"; +const char *STEPACTION = "stepaction"; +const char *STEPCOUNT = "stepcount"; +const char *EXPRESSION = "expression"; +const char *FRAME = "frame"; +const char *GLOBAL = "global"; +const char *DISABLEBREAK = "disable_break"; +const char *HANDLES = "handles"; +const char *INCLUDESOURCE = "includeSource"; +const char *FROMFRAME = "fromFrame"; +const char *TOFRAME = "toFrame"; +const char *BOTTOM = "bottom"; +const char *NUMBER = "number"; +const char *FRAMENUMBER = "frameNumber"; +const char *TYPES = "types"; +const char *IDS = "ids"; +const char *FILTER = "filter"; +const char *FROMLINE = "fromLine"; +const char *TOLINE = "toLine"; +const char *TARGET = "target"; +const char *LINE = "line"; +const char *COLUMN = "column"; +const char *ENABLED = "enabled"; +const char *CONDITION = "condition"; +const char *IGNORECOUNT = "ignoreCount"; +const char *BREAKPOINT = "breakpoint"; +const char *FLAGS = "flags"; + +const char *CONTINEDEBUGGING = "continue"; +const char *EVALUATE = "evaluate"; +const char *LOOKUP = "lookup"; +const char *BACKTRACE = "backtrace"; +const char *SCOPE = "scope"; +const char *SCOPES = "scopes"; +const char *SCRIPTS = "scripts"; +const char *SOURCE = "source"; +const char *SETBREAKPOINT = "setbreakpoint"; +const char *CHANGEBREAKPOINT = "changebreakpoint"; +const char *CLEARBREAKPOINT = "clearbreakpoint"; +const char *SETEXCEPTIONBREAK = "setexceptionbreak"; +const char *V8FLAGS = "v8flags"; +const char *VERSION = "version"; +const char *DISCONNECT = "disconnect"; +const char *LISTBREAKPOINTS = "listbreakpoints"; +const char *GC = "gc"; +//const char *PROFILE = "profile"; + +const char *CONNECT = "connect"; +const char *INTERRUPT = "interrupt"; + +const char *REQUEST = "request"; +const char *IN = "in"; +const char *NEXT = "next"; +const char *OUT = "out"; + +const char *FUNCTION = "function"; +const char *SCRIPT = "script"; + +const char *ALL = "all"; +const char *UNCAUGHT = "uncaught"; + +//const char *PAUSE = "pause"; +//const char *RESUME = "resume"; + +const char *BLOCKMODE = "-qmljsdebugger=port:3771,block"; +const char *NORMALMODE = "-qmljsdebugger=port:3771"; +const char *QMLFILE = "test.qml"; +const char *JSFILE = "test.js"; + +#define VARIANTMAPINIT \ + QString obj("{}"); \ + QJSValue jsonVal = parser.call(QJSValue(), QJSValueList() << obj); \ + jsonVal.setProperty(SEQ,QJSValue(seq++)); \ + jsonVal.setProperty(TYPE,REQUEST); + +inline QString TEST_FILE(const QString &filename) +{ + QFileInfo fileInfo(__FILE__); + return fileInfo.absoluteDir().filePath("data/" + filename); +} + +class QJSDebugProcess; +class QJSDebugClient; + +class tst_QDeclarativeDebugJS : public QObject +{ + Q_OBJECT + +private slots: + + void initTestCase(); + void cleanupTestCase(); + + void init(); + void cleanup(); + + void getVersion(); + + void applyV8Flags(); + + void disconnect(); + + void gc(); + + void listBreakpoints(); + + void setBreakpointInScriptOnCompleted(); + void setBreakpointInScriptOnTimerCallback(); + void setBreakpointInScriptInDifferentFile(); + void setBreakpointInScriptOnComment(); + void setBreakpointInScriptOnEmptyLine(); + void setBreakpointInScriptWithCondition(); + //void setBreakpointInFunction(); //NOT SUPPORTED + + void changeBreakpoint(); + void changeBreakpointOnCondition(); + + void clearBreakpoint(); + + void setExceptionBreak(); + + void stepNext(); + void stepNextWithCount(); + void stepIn(); + void stepOut(); + void continueDebugging(); + + void backtrace(); + + void getFrameDetails(); + + void getScopeDetails(); + + void evaluateInGlobalScope(); + void evaluateInLocalScope(); + + void getScopes(); + + void getScripts(); + + void getSource(); + + // void profile(); //NOT SUPPORTED + + // void verifyQMLOptimizerDisabled(); + +private: + QJSDebugProcess *process; + QJSDebugClient *client; + QDeclarativeDebugConnection *connection; +}; + +class QJSDebugProcess : public QObject +{ + Q_OBJECT +public: + QJSDebugProcess(); + ~QJSDebugProcess(); + + void start(const QStringList &arguments); + bool waitForSessionStart(); + +private slots: + void processAppOutput(); + +private: + void stop(); + +private: + QProcess m_process; + QTimer m_timer; + QEventLoop m_eventLoop; + QMutex m_mutex; + bool m_started; +}; + +QJSDebugProcess::QJSDebugProcess() + : m_started(false) +{ + m_process.setProcessChannelMode(QProcess::MergedChannels); + m_timer.setSingleShot(true); + m_timer.setInterval(5000); + connect(&m_process, SIGNAL(readyReadStandardOutput()), this, SLOT(processAppOutput())); + connect(&m_timer, SIGNAL(timeout()), &m_eventLoop, SLOT(quit())); + +// QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); +// env.insert("QML_DISABLE_OPTIMIZER", "1"); // Add an environment variable +// m_process.setProcessEnvironment(env); + +} + +QJSDebugProcess::~QJSDebugProcess() +{ + stop(); +} + +void QJSDebugProcess::start(const QStringList &arguments) +{ + m_mutex.lock(); + m_process.start(QLibraryInfo::location(QLibraryInfo::BinariesPath) + "/qmlscene", arguments); + m_process.waitForStarted(); + m_timer.start(); + m_mutex.unlock(); +} + +void QJSDebugProcess::stop() +{ + if (m_process.state() != QProcess::NotRunning) { + m_process.terminate(); + m_process.waitForFinished(5000); + } +} + +bool QJSDebugProcess::waitForSessionStart() +{ + m_eventLoop.exec(QEventLoop::ExcludeUserInputEvents); + + return m_started; +} + +void QJSDebugProcess::processAppOutput() +{ + m_mutex.lock(); + const QString appOutput = m_process.readAll(); + static QRegExp newline("[\n\r]{1,2}"); + QStringList lines = appOutput.split(newline); + foreach (const QString &line, lines) { + if (line.isEmpty()) + continue; + if (line.startsWith("Qml debugging is enabled")) // ignore + continue; + if (line.startsWith("QDeclarativeDebugServer:")) { + if (line.contains("Waiting for connection ")) { + m_started = true; + m_eventLoop.quit(); + continue; + } + if (line.contains("Connection established")) { + continue; + } + } + qDebug() << line; + } + m_mutex.unlock(); +} + +class QJSDebugClient : public QDeclarativeDebugClient +{ + Q_OBJECT +public: + enum StepAction + { + Continue, + In, + Out, + Next + }; + + enum Exception + { + All, + Uncaught + }; + +// enum ProfileCommand +// { +// Pause, +// Resume +// }; + + QJSDebugClient(QDeclarativeDebugConnection *connection) + : QDeclarativeDebugClient(QLatin1String("V8Debugger"), connection), + seq(0) + { + parser = jsEngine.evaluate(QLatin1String("JSON.parse")); + stringify = jsEngine.evaluate(QLatin1String("JSON.stringify")); + } + + void startDebugging(); + void interrupt(); + + void continueDebugging(StepAction stepAction, int stepCount = 1); + void evaluate(QString expr, bool global = false, bool disableBreak = false, int frame = -1, const QVariantMap &addContext = QVariantMap()); + void lookup(QList handles, bool includeSource = false); + void backtrace(int fromFrame = -1, int toFrame = -1, bool bottom = false); + void frame(int number = -1); + void scope(int number = -1, int frameNumber = -1); + void scopes(int frameNumber = -1); + void scripts(int types = 4, QList ids = QList(), bool includeSource = false, QVariant filter = QVariant()); + void source(int frame = -1, int fromLine = -1, int toLine = -1); + void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = true, QString condition = QString(), int ignoreCount = -1); + void changeBreakpoint(int breakpoint, bool enabled = true, QString condition = QString(), int ignoreCount = -1); + void clearBreakpoint(int breakpoint); + void setExceptionBreak(Exception type, bool enabled = false); + void v8flags(QString flags); + void version(); + //void profile(ProfileCommand command); //NOT SUPPORTED + void disconnect(); + void gc(); + void listBreakpoints(); + +protected: + //inherited from QDeclarativeDebugClient + void statusChanged(Status status); + void messageReceived(const QByteArray &data); + +signals: + void enabled(); + void breakpointSet(); + void result(); + void stopped(); + +private: + void sendMessage(const QByteArray &); + void flushSendBuffer(); + QByteArray packMessage(QByteArray message); + +private: + QJSEngine jsEngine; + int seq; + + QList sendBuffer; + +public: + QJSValue parser; + QJSValue stringify; + QByteArray response; + +}; + +void QJSDebugClient::startDebugging() +{ + // { "seq" : , + // "type" : "request", + // "command" : "connect", + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(CONNECT))); + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::interrupt() +{ + // { "seq" : , + // "type" : "request", + // "command" : "interrupt", + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(INTERRUPT))); + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::continueDebugging(StepAction action, int count) +{ + // { "seq" : , + // "type" : "request", + // "command" : "continue", + // "arguments" : { "stepaction" : <"in", "next" or "out">, + // "stepcount" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(CONTINEDEBUGGING))); + + if (action != Continue) { + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + switch (action) { + case In: args.setProperty(QLatin1String(STEPACTION),QJSValue(QLatin1String(IN))); + break; + case Out: args.setProperty(QLatin1String(STEPACTION),QJSValue(QLatin1String(OUT))); + break; + case Next: args.setProperty(QLatin1String(STEPACTION),QJSValue(QLatin1String(NEXT))); + break; + default:break; + } + if (args.isValid()) { + if (count != 1) + args.setProperty(QLatin1String(STEPCOUNT),QJSValue(count)); + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + } + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::evaluate(QString expr, bool global, bool disableBreak, int frame, const QVariantMap &/*addContext*/) +{ + // { "seq" : , + // "type" : "request", + // "command" : "evaluate", + // "arguments" : { "expression" : , + // "frame" : , + // "global" : , + // "disable_break" : , + // "additional_context" : [ + // { "name" : , "handle" : }, + // { "name" : , "handle" : }, + // ... + // ] + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(EVALUATE))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + args.setProperty(QLatin1String(EXPRESSION),QJSValue(expr)); + + if (frame != -1) + args.setProperty(QLatin1String(FRAME),QJSValue(frame)); + + if (global) + args.setProperty(QLatin1String(GLOBAL),QJSValue(global)); + + if (disableBreak) + args.setProperty(QLatin1String(DISABLEBREAK),QJSValue(disableBreak)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::lookup(QList handles, bool includeSource) +{ + // { "seq" : , + // "type" : "request", + // "command" : "lookup", + // "arguments" : { "handles" : , + // "includeSource" : , + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(LOOKUP))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + + QString arr("[]"); + QJSValue array = parser.call(QJSValue(), QJSValueList() << arr); + int index = 0; + foreach (int handle, handles) { + array.setProperty(index++,QJSValue(handle)); + } + args.setProperty(QLatin1String(HANDLES),array); + + if (includeSource) + args.setProperty(QLatin1String(INCLUDESOURCE),QJSValue(includeSource)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::backtrace(int fromFrame, int toFrame, bool bottom) +{ + // { "seq" : , + // "type" : "request", + // "command" : "backtrace", + // "arguments" : { "fromFrame" : + // "toFrame" : + // "bottom" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(BACKTRACE))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + + if (fromFrame != -1) + args.setProperty(QLatin1String(FROMFRAME),QJSValue(fromFrame)); + + if (toFrame != -1) + args.setProperty(QLatin1String(TOFRAME),QJSValue(toFrame)); + + if (bottom) + args.setProperty(QLatin1String(BOTTOM),QJSValue(bottom)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::frame(int number) +{ + // { "seq" : , + // "type" : "request", + // "command" : "frame", + // "arguments" : { "number" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(FRAME))); + + if (number != -1) { + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + args.setProperty(QLatin1String(NUMBER),QJSValue(number)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::scope(int number, int frameNumber) +{ + // { "seq" : , + // "type" : "request", + // "command" : "scope", + // "arguments" : { "number" : + // "frameNumber" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(SCOPE))); + + if (number != -1) { + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + args.setProperty(QLatin1String(NUMBER),QJSValue(number)); + + if (frameNumber != -1) + args.setProperty(QLatin1String(FRAMENUMBER),QJSValue(frameNumber)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::scopes(int frameNumber) +{ + // { "seq" : , + // "type" : "request", + // "command" : "scopes", + // "arguments" : { "frameNumber" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(SCOPES))); + + if (frameNumber != -1) { + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + args.setProperty(QLatin1String(FRAMENUMBER),QJSValue(frameNumber)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::scripts(int types, QList ids, bool includeSource, QVariant /*filter*/) +{ + // { "seq" : , + // "type" : "request", + // "command" : "scripts", + // "arguments" : { "types" : + // "ids" : + // "includeSource" : + // "filter" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(SCRIPTS))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + args.setProperty(QLatin1String(TYPES),QJSValue(types)); + + if (ids.count()) { + QString arr("[]"); + QJSValue array = parser.call(QJSValue(), QJSValueList() << arr); + int index = 0; + foreach (int id, ids) { + array.setProperty(index++,QJSValue(id)); + } + args.setProperty(QLatin1String(IDS),array); + } + + if (includeSource) + args.setProperty(QLatin1String(INCLUDESOURCE),QJSValue(includeSource)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::source(int frame, int fromLine, int toLine) +{ + // { "seq" : , + // "type" : "request", + // "command" : "source", + // "arguments" : { "frame" : + // "fromLine" : + // "toLine" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(SOURCE))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + + if (frame != -1) + args.setProperty(QLatin1String(FRAME),QJSValue(frame)); + + if (fromLine != -1) + args.setProperty(QLatin1String(FROMLINE),QJSValue(fromLine)); + + if (toLine != -1) + args.setProperty(QLatin1String(TOLINE),QJSValue(toLine)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::setBreakpoint(QString type, QString target, int line, int column, bool enabled, QString condition, int ignoreCount) +{ + // { "seq" : , + // "type" : "request", + // "command" : "setbreakpoint", + // "arguments" : { "type" : <"function" or "script" or "scriptId" or "scriptRegExp"> + // "target" : + // "line" : + // "column" : + // "enabled" : + // "condition" : + // "ignoreCount" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(SETBREAKPOINT))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + + args.setProperty(QLatin1String(TYPE),QJSValue(type)); + args.setProperty(QLatin1String(TARGET),QJSValue(target)); + + if (line != -1) + args.setProperty(QLatin1String(LINE),QJSValue(line)); + + if (column != -1) + args.setProperty(QLatin1String(COLUMN),QJSValue(column)); + + args.setProperty(QLatin1String(ENABLED),QJSValue(enabled)); + + if (!condition.isEmpty()) + args.setProperty(QLatin1String(CONDITION),QJSValue(condition)); + + if (ignoreCount != -1) + args.setProperty(QLatin1String(IGNORECOUNT),QJSValue(ignoreCount)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::changeBreakpoint(int breakpoint, bool enabled, QString condition, int ignoreCount) +{ + // { "seq" : , + // "type" : "request", + // "command" : "changebreakpoint", + // "arguments" : { "breakpoint" : + // "enabled" : + // "condition" : + // "ignoreCount" : , + // "type" : "request", + // "command" : "clearbreakpoint", + // "arguments" : { "breakpoint" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(CLEARBREAKPOINT))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + + args.setProperty(QLatin1String(BREAKPOINT),QJSValue(breakpoint)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::setExceptionBreak(Exception type, bool enabled) +{ + // { "seq" : , + // "type" : "request", + // "command" : "setexceptionbreak", + // "arguments" : { "type" : , + // "enabled" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(SETEXCEPTIONBREAK))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + + if (type == All) + args.setProperty(QLatin1String(TYPE),QJSValue(QLatin1String(ALL))); + else if (type == Uncaught) + args.setProperty(QLatin1String(TYPE),QJSValue(QLatin1String(UNCAUGHT))); + + if (enabled) + args.setProperty(QLatin1String(ENABLED),QJSValue(enabled)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::v8flags(QString flags) +{ + // { "seq" : , + // "type" : "request", + // "command" : "v8flags", + // "arguments" : { "flags" : + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(V8FLAGS))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + + args.setProperty(QLatin1String(FLAGS),QJSValue(flags)); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::version() +{ + // { "seq" : , + // "type" : "request", + // "command" : "version", + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(VERSION))); + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +//void QJSDebugClient::profile(ProfileCommand command) +//{ +//// { "seq" : , +//// "type" : "request", +//// "command" : "profile", +//// "arguments" : { "command" : "resume" or "pause" } +//// } +// VARIANTMAPINIT; +// jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(PROFILE))); + +// QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + +// if (command == Resume) +// args.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(RESUME))); +// else +// args.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(PAUSE))); + +// args.setProperty(QLatin1String("modules"),QJSValue(1)); +// if (args.isValid()) { +// jsonVal.setProperty(QLatin1String(ARGUMENTS),args); +// } + +// QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); +// sendMessage(packMessage(json.toString().toUtf8())); +//} + +void QJSDebugClient::disconnect() +{ + // { "seq" : , + // "type" : "request", + // "command" : "disconnect", + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(DISCONNECT))); + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::gc() +{ + // { "seq" : , + // "type" : "request", + // "command" : "gc", + // "arguments" : { "type" : , + // } + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(GC))); + + QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); + + args.setProperty(QLatin1String(FLAGS),QJSValue(QLatin1String(ALL))); + + if (args.isValid()) { + jsonVal.setProperty(QLatin1String(ARGUMENTS),args); + } + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::listBreakpoints() +{ + // { "seq" : , + // "type" : "request", + // "command" : "listbreakpoints", + // } + VARIANTMAPINIT; + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(LISTBREAKPOINTS))); + + QJSValue json = stringify.call(QJSValue(), QJSValueList() << jsonVal); + sendMessage(packMessage(json.toString().toUtf8())); +} + +void QJSDebugClient::statusChanged(Status status) +{ + if (status == Enabled) { + flushSendBuffer(); + emit enabled(); + } +} + +void QJSDebugClient::messageReceived(const QByteArray &data) +{ + QDataStream ds(data); + QByteArray command; + ds >> command; + + if (command == "V8DEBUG") { + ds >> response; + QString jsonString(response); + QVariantMap value = parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + QString type = value.value("type").toString(); + + if (type == "response") { + + if (!value.value("success").toBool()) { + qDebug() << "Error: The test case will fail since no signal is emitted"; + return; + } + + QString debugCommand(value.value("command").toString()); + if (debugCommand == "backtrace" || + debugCommand == "lookup" || + debugCommand == "setbreakpoint" || + debugCommand == "evaluate" || + debugCommand == "listbreakpoints" || + debugCommand == "version" || + debugCommand == "v8flags" || + debugCommand == "disconnect" || + debugCommand == "gc" || + debugCommand == "changebreakpoint" || + debugCommand == "clearbreakpoint" || + debugCommand == "frame" || + debugCommand == "scope" || + debugCommand == "scopes" || + debugCommand == "scripts" || + debugCommand == "source" || + debugCommand == "setexceptionbreak" /*|| + debugCommand == "profile"*/) { + emit result(); + + } else { + // DO NOTHING + } + + } else if (type == "event") { + QString event(value.value("event").toString()); + + if (event == "break" || + event == "exception") { + emit stopped(); + } + } + } +} + +void QJSDebugClient::sendMessage(const QByteArray &msg) +{ + if (status() == Enabled) { + QDeclarativeDebugClient::sendMessage(msg); + } else { + sendBuffer.append(msg); + } +} + +void QJSDebugClient::flushSendBuffer() +{ + foreach (const QByteArray &msg, sendBuffer) + QDeclarativeDebugClient::sendMessage(msg); + sendBuffer.clear(); +} + +QByteArray QJSDebugClient::packMessage(QByteArray message) +{ + QByteArray reply; + QDataStream rs(&reply, QIODevice::WriteOnly); + QByteArray cmd = "V8DEBUG"; + rs << cmd << message; + return reply; +} + +void tst_QDeclarativeDebugJS::initTestCase() +{ + process = 0; + client = 0; + connection = 0; +} + +void tst_QDeclarativeDebugJS::cleanupTestCase() +{ + if (process) + delete process; + + if (client) + delete client; + + if (connection) + delete connection; +} + +void tst_QDeclarativeDebugJS::init() +{ + connection = new QDeclarativeDebugConnection(); + process = new QJSDebugProcess(); + client = new QJSDebugClient(connection); + + process->start(QStringList() << QLatin1String(BLOCKMODE) << TEST_FILE(QLatin1String(QMLFILE))); + QVERIFY(process->waitForSessionStart()); + + connection->connectToHost("127.0.0.1", 3771); + QVERIFY(connection->waitForConnected()); + + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(enabled()))); +} + +void tst_QDeclarativeDebugJS::cleanup() +{ + if (process) + delete process; + + if (client) + delete client; + + if (connection) + delete connection; + + process = 0; + client = 0; + connection = 0; +} + +void tst_QDeclarativeDebugJS::getVersion() +{ + //void version() + + client->interrupt(); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->version(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::applyV8Flags() +{ + //void v8flags(QString flags) + + client->interrupt(); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->v8flags(QString()); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::disconnect() +{ + //void disconnect() + + client->interrupt(); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->disconnect(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::gc() +{ + //void gc() + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(JSFILE), 2, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->gc(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::listBreakpoints() +{ + //void listBreakpoints() + + int sourceLine1 = 57; + int sourceLine2 = 60; + int sourceLine3 = 67; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine1, -1, true); + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine2, -1, true); + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(JSFILE), sourceLine3, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->listBreakpoints(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QList breakpoints = value.value("body").toMap().value("breakpoints").toList(); + + QCOMPARE(breakpoints.count(), 3); +} + +void tst_QDeclarativeDebugJS::setBreakpointInScriptOnCompleted() +{ + //void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + + int sourceLine = 49; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(QMLFILE)); +} + +void tst_QDeclarativeDebugJS::setBreakpointInScriptOnTimerCallback() +{ + //void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + + int sourceLine = 66; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(QMLFILE)); +} + +void tst_QDeclarativeDebugJS::setBreakpointInScriptInDifferentFile() +{ + //void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + + int sourceLine = 43; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(JSFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(JSFILE)); +} + +void tst_QDeclarativeDebugJS::setBreakpointInScriptOnComment() +{ + //void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + + int sourceLine = 48; + int actualLine = 50; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(JSFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), actualLine); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(JSFILE)); +} + +void tst_QDeclarativeDebugJS::setBreakpointInScriptOnEmptyLine() +{ + //void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + + int sourceLine = 49; + int actualLine = 50; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(JSFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), actualLine); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(JSFILE)); +} + +void tst_QDeclarativeDebugJS::setBreakpointInScriptWithCondition() +{ + //void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + + int out = 10; + int sourceLine = 51; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(JSFILE), sourceLine, -1, true, QLatin1String("out > 10")); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + //Verify the value of 'out' + client->evaluate(QLatin1String("out")); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QVERIFY(body.value("value").toInt() > out); +} + +//void tst_QDeclarativeDebugJS::setBreakpointInFunction() +//{ +// //void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + +// int actualLine = 31; + +// client->startDebugging(); +// client->setBreakpoint(QLatin1String(FUNCTION), QLatin1String("doSomethingElse"), -1, -1, true); + +// QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + +// QString jsonString(client->response); +// QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + +// QVariantMap body = value.value("body").toMap(); + +// QCOMPARE(body.value("sourceLine").toInt(), actualLine); +// QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(QMLFILE)); +//} + +void tst_QDeclarativeDebugJS::changeBreakpoint() +{ + //void changeBreakpoint(int breakpoint, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + + int sourceLine1 = 77; + int sourceLine2 = 78; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine1, -1, true); + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine2, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + //Will hit 1st brakpoint, change this breakpoint enable = false + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + QList breakpointsHit = body.value("breakpoints").toList(); + + int breakpoint = breakpointsHit.at(0).toInt(); + client->changeBreakpoint(breakpoint,false); + + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + //Continue with debugging + client->continueDebugging(QJSDebugClient::Continue); + //Hit 2nd breakpoint + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + //Continue with debugging + client->continueDebugging(QJSDebugClient::Continue); + //Should stop at 2nd breakpoint + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + jsonString = client->response; + value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine2); +} + +void tst_QDeclarativeDebugJS::changeBreakpointOnCondition() +{ + //void changeBreakpoint(int breakpoint, bool enabled = false, QString condition = QString(), int ignoreCount = -1) + + int sourceLine1 = 77; + int sourceLine2 = 78; + int result = 5; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine1, -1, true); + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine2, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + //Will hit 1st brakpoint, change this breakpoint enable = false + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + QList breakpointsHit = body.value("breakpoints").toList(); + + int breakpoint = breakpointsHit.at(0).toInt(); + client->changeBreakpoint(breakpoint,false,QLatin1String("result > 5")); + + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + //Continue with debugging + client->continueDebugging(QJSDebugClient::Continue); + //Hit 2nd breakpoint + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + //Continue with debugging + client->continueDebugging(QJSDebugClient::Continue); + //Should stop at 2nd breakpoint + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + jsonString = client->response; + value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine2); + + //Verify the value of 'result' + client->evaluate(QLatin1String("result")); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + jsonString = client->response; + value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + body = value.value("body").toMap(); + + QVERIFY(body.value("value").toInt() > result); +} + +void tst_QDeclarativeDebugJS::clearBreakpoint() +{ + //void clearBreakpoint(int breakpoint); + + int sourceLine1 = 77; + int sourceLine2 = 78; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine1, -1, true); + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine2, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + //Will hit 1st brakpoint, change this breakpoint enable = false + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + QList breakpointsHit = body.value("breakpoints").toList(); + + int breakpoint = breakpointsHit.at(0).toInt(); + client->changeBreakpoint(breakpoint,false,QLatin1String("result > 5")); + + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + //Continue with debugging + client->continueDebugging(QJSDebugClient::Continue); + //Hit 2nd breakpoint + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + //Continue with debugging + client->continueDebugging(QJSDebugClient::Continue); + //Should stop at 2nd breakpoint + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + jsonString = client->response; + value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine2); +} + +void tst_QDeclarativeDebugJS::setExceptionBreak() +{ + //void setExceptionBreak(QString type, bool enabled = false); + + client->interrupt(); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->setExceptionBreak(QJSDebugClient::All,true); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + client->continueDebugging(QJSDebugClient::Continue); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); +} + +void tst_QDeclarativeDebugJS::stepNext() +{ + //void continueDebugging(StepAction stepAction, int stepCount = 1); + + int sourceLine = 72; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->continueDebugging(QJSDebugClient::Next); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine + 1); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(QMLFILE)); +} + +void tst_QDeclarativeDebugJS::stepNextWithCount() +{ + //void continueDebugging(StepAction stepAction, int stepCount = 1); + + int sourceLine = 59; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->continueDebugging(QJSDebugClient::Next,2); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine + 2); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(QMLFILE)); +} + +void tst_QDeclarativeDebugJS::stepIn() +{ + //void continueDebugging(StepAction stepAction, int stepCount = 1); + + int sourceLine = 66; + int actualLine = 56; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->continueDebugging(QJSDebugClient::In); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), actualLine); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(QMLFILE)); +} + +void tst_QDeclarativeDebugJS::stepOut() +{ + //void continueDebugging(StepAction stepAction, int stepCount = 1); + + int sourceLine = 56; + int actualLine = 67; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->continueDebugging(QJSDebugClient::Out); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), actualLine); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(QMLFILE)); +} + +void tst_QDeclarativeDebugJS::continueDebugging() +{ + //void continueDebugging(StepAction stepAction, int stepCount = 1); + + int sourceLine1 = 56; + int sourceLine2 = 60; + + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine1, -1, true); + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine2, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->continueDebugging(QJSDebugClient::Continue); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("sourceLine").toInt(), sourceLine2); + QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(QMLFILE)); +} + +void tst_QDeclarativeDebugJS::backtrace() +{ + //void backtrace(int fromFrame = -1, int toFrame = -1, bool bottom = false); + + int sourceLine = 60; + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->backtrace(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::getFrameDetails() +{ + //void frame(int number = -1); + + int sourceLine = 60; + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->frame(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::getScopeDetails() +{ + //void scope(int number = -1, int frameNumber = -1); + + int sourceLine = 60; + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->scope(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::evaluateInGlobalScope() +{ + //void evaluate(QString expr, bool global = false, bool disableBreak = false, int frame = -1, const QVariantMap &addContext = QVariantMap()); + + int sourceLine = 49; + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->evaluate(QLatin1String("print('Hello World')"),true); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + //Verify the value of 'print' + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("text").toString(),QLatin1String("undefined")); +} + +void tst_QDeclarativeDebugJS::evaluateInLocalScope() +{ + //void evaluate(QString expr, bool global = false, bool disableBreak = false, int frame = -1, const QVariantMap &addContext = QVariantMap()); + + int sourceLine = 60; + client->setBreakpoint(QLatin1String(SCRIPT), QLatin1String(QMLFILE), sourceLine, -1, true); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->evaluate(QLatin1String("root.someValue")); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); + + //Verify the value of 'root.someValue' + QString jsonString(client->response); + QVariantMap value = client->parser.call(QJSValue(), QJSValueList() << QJSValue(jsonString)).toVariant().toMap(); + + QVariantMap body = value.value("body").toMap(); + + QCOMPARE(body.value("value").toInt(),10); +} + +void tst_QDeclarativeDebugJS::getScopes() +{ + //void scopes(int frameNumber = -1); + + client->interrupt(); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->scopes(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::getScripts() +{ + //void scripts(int types = -1, QList ids = QList(), bool includeSource = false, QVariant filter = QVariant()); + + client->interrupt(); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->scripts(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +void tst_QDeclarativeDebugJS::getSource() +{ + //void source(int frame = -1, int fromLine = -1, int toLine = -1); + + client->interrupt(); + client->startDebugging(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(stopped()))); + + client->source(); + QVERIFY(QDeclarativeDebugTest::waitForSignal(client, SIGNAL(result()))); +} + +QTEST_MAIN(tst_QDeclarativeDebugJS) + +#include "tst_qdeclarativedebugjs.moc" + From dd3983655c40a6c8879b8980d41a0cd2b7612da9 Mon Sep 17 00:00:00 2001 From: Aurindam Jana Date: Fri, 2 Sep 2011 18:05:29 +0200 Subject: [PATCH 35/68] Remove friend class QV8DebugService from QV8Engine. The friend class is now redundant since QVDebugService now uses only public methods of QV8Engine. Change-Id: I492555d75bcbe08f921c5f2c3d634c691ed1223c Reviewed-on: http://codereview.qt.nokia.com/4151 Reviewed-by: Qt Sanity Bot Reviewed-by: Kai Koehne --- src/declarative/qml/v8/qv8engine_p.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/declarative/qml/v8/qv8engine_p.h b/src/declarative/qml/v8/qv8engine_p.h index ab4da423ee..6f09e977d5 100644 --- a/src/declarative/qml/v8/qv8engine_p.h +++ b/src/declarative/qml/v8/qv8engine_p.h @@ -470,7 +470,6 @@ private: ValueIteratorList m_valueIterators; Q_DISABLE_COPY(QV8Engine) - friend class QV8DebugService; }; // Allocate a new Persistent handle. *ALL* persistent handles in QML must be allocated From 87bb76ae8b59f5b504c49e242e24d6867f8b7789 Mon Sep 17 00:00:00 2001 From: Aurindam Jana Date: Mon, 5 Sep 2011 17:36:52 +0200 Subject: [PATCH 36/68] JSDebugging Auto Test: Fix build break. Change-Id: I7969267e6331f8d348f7206c4aff99c99294e515 Reviewed-on: http://codereview.qt.nokia.com/4216 Reviewed-by: Qt Sanity Bot Reviewed-by: Christian Stenger --- .../qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp b/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp index 17048599a2..bfefe4870e 100644 --- a/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp +++ b/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp @@ -100,7 +100,7 @@ const char *V8FLAGS = "v8flags"; const char *VERSION = "version"; const char *DISCONNECT = "disconnect"; const char *LISTBREAKPOINTS = "listbreakpoints"; -const char *GC = "gc"; +const char *GARBAGECOLLECTOR = "gc"; //const char *PROFILE = "profile"; const char *CONNECT = "connect"; @@ -916,7 +916,7 @@ void QJSDebugClient::gc() // } // } VARIANTMAPINIT; - jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(GC))); + jsonVal.setProperty(QLatin1String(COMMAND),QJSValue(QLatin1String(GARBAGECOLLECTOR))); QJSValue args = parser.call(QJSValue(), QJSValueList() << obj); From c0fe60cad2c48f18e618c3ca4589abe73752389e Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 5 Sep 2011 11:40:10 +1000 Subject: [PATCH 37/68] View refill operations should take qreal, not int Regression from initial creation of QSGItemView. Task-number: QTBUG-21281 Change-Id: I810a0b56ba4bacda49ac62b6e4c11cf9c1825c10 Reviewed-on: http://codereview.qt.nokia.com/4160 Reviewed-by: Bea Lam Reviewed-by: Qt Sanity Bot --- src/declarative/items/qsggridview.cpp | 8 ++++---- src/declarative/items/qsgitemview_p_p.h | 4 ++-- src/declarative/items/qsglistview.cpp | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/declarative/items/qsggridview.cpp b/src/declarative/items/qsggridview.cpp index 1d4e8313b4..e2fe5cd9c8 100644 --- a/src/declarative/items/qsggridview.cpp +++ b/src/declarative/items/qsggridview.cpp @@ -160,8 +160,8 @@ public: FxViewItem *snapItemAt(qreal pos) const; int snapIndex() const; - virtual bool addVisibleItems(int fillFrom, int fillTo, bool doBuffer); - virtual bool removeNonVisibleItems(int bufferFrom, int bufferTo); + virtual bool addVisibleItems(qreal fillFrom, qreal fillTo, bool doBuffer); + virtual bool removeNonVisibleItems(qreal bufferFrom, qreal bufferTo); virtual void visibleItemsChanged(); virtual FxViewItem *newViewItem(int index, QSGItem *item); @@ -387,7 +387,7 @@ FxViewItem *QSGGridViewPrivate::newViewItem(int modelIndex, QSGItem *item) return new FxGridItemSG(item, q, false); } -bool QSGGridViewPrivate::addVisibleItems(int fillFrom, int fillTo, bool doBuffer) +bool QSGGridViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, bool doBuffer) { int colPos = colPosAt(visibleIndex); int rowPos = rowPosAt(visibleIndex); @@ -479,7 +479,7 @@ bool QSGGridViewPrivate::addVisibleItems(int fillFrom, int fillTo, bool doBuffer return changed; } -bool QSGGridViewPrivate::removeNonVisibleItems(int bufferFrom, int bufferTo) +bool QSGGridViewPrivate::removeNonVisibleItems(qreal bufferFrom, qreal bufferTo) { FxGridItemSG *item = 0; bool changed = false; diff --git a/src/declarative/items/qsgitemview_p_p.h b/src/declarative/items/qsgitemview_p_p.h index 243045526a..2164dd60f4 100644 --- a/src/declarative/items/qsgitemview_p_p.h +++ b/src/declarative/items/qsgitemview_p_p.h @@ -217,8 +217,8 @@ protected: virtual void setPosition(qreal pos) = 0; virtual void fixupPosition() = 0; - virtual bool addVisibleItems(int fillFrom, int fillTo, bool doBuffer) = 0; - virtual bool removeNonVisibleItems(int bufferFrom, int bufferTo) = 0; + virtual bool addVisibleItems(qreal fillFrom, qreal fillTo, bool doBuffer) = 0; + virtual bool removeNonVisibleItems(qreal bufferFrom, qreal bufferTo) = 0; virtual void visibleItemsChanged() = 0; virtual FxViewItem *newViewItem(int index, QSGItem *item) = 0; diff --git a/src/declarative/items/qsglistview.cpp b/src/declarative/items/qsglistview.cpp index 321c66c41a..e8a6bf2d50 100644 --- a/src/declarative/items/qsglistview.cpp +++ b/src/declarative/items/qsglistview.cpp @@ -201,8 +201,8 @@ public: virtual void init(); virtual void clear(); - virtual bool addVisibleItems(int fillFrom, int fillTo, bool doBuffer); - virtual bool removeNonVisibleItems(int bufferFrom, int bufferTo); + virtual bool addVisibleItems(qreal fillFrom, qreal fillTo, bool doBuffer); + virtual bool removeNonVisibleItems(qreal bufferFrom, qreal bufferTo); virtual void visibleItemsChanged(); virtual FxViewItem *newViewItem(int index, QSGItem *item); @@ -539,7 +539,7 @@ void QSGListViewPrivate::releaseItem(FxViewItem *item) QSGItemViewPrivate::releaseItem(item); } -bool QSGListViewPrivate::addVisibleItems(int fillFrom, int fillTo, bool doBuffer) +bool QSGListViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, bool doBuffer) { qreal itemEnd = visiblePos; if (visibleItems.count()) { @@ -603,7 +603,7 @@ bool QSGListViewPrivate::addVisibleItems(int fillFrom, int fillTo, bool doBuffer return changed; } -bool QSGListViewPrivate::removeNonVisibleItems(int bufferFrom, int bufferTo) +bool QSGListViewPrivate::removeNonVisibleItems(qreal bufferFrom, qreal bufferTo) { FxViewItem *item = 0; bool changed = false; From 249754bf7fe4a195c723eea73f2dd55a2bd905cb Mon Sep 17 00:00:00 2001 From: Andrew den Exter Date: Tue, 19 Jul 2011 15:15:58 +1000 Subject: [PATCH 38/68] Delay masking the last character in Password echo mode. If QT_GUI_PASSWORD_ECHO_DELAY is defined in qplatformdefs.h with an integer value in milliseconds, QLineEdit and TextInput will display the last character entered unmasked for that delay period and then mask the character as normal. If QT_GUI_PASSWORD_ECHO_DELAY is not defined then the behaviour is unchanged. Task-number: QTBUG-17003 Reviewed-by: Martin Jones (cherry picked from commit f9e7aee2019d321edd655bfde7de43f20a106971) Change-Id: Iddfa0daa1b39f0589cab27e5003fdd86ad81ff89 Reviewed-on: http://codereview.qt.nokia.com/4170 Reviewed-by: Andrew den Exter --- src/declarative/items/qsgtextinput.cpp | 2 +- .../graphicsitems/qdeclarativetextinput.cpp | 2 +- .../qsgtextinput/tst_qsgtextinput.cpp | 58 ++++++++++++++++++ .../tst_qdeclarativetextinput.cpp | 61 +++++++++++++++++++ 4 files changed, 121 insertions(+), 2 deletions(-) diff --git a/src/declarative/items/qsgtextinput.cpp b/src/declarative/items/qsgtextinput.cpp index 222a9002e7..01e517397c 100644 --- a/src/declarative/items/qsgtextinput.cpp +++ b/src/declarative/items/qsgtextinput.cpp @@ -1817,7 +1817,7 @@ void QSGTextInput::itemChange(ItemChange change, const ItemChangeData &value) bool hasFocus = value.boolValue; d->focused = hasFocus; setCursorVisible(hasFocus && d->canvas && d->canvas->hasFocus()); - if(echoMode() == QSGTextInput::PasswordEchoOnEdit && !hasFocus) + if(!hasFocus && d->control->passwordEchoEditing()) d->control->updatePasswordEchoEditing(false);//QLineControl sets it on key events, but doesn't deal with focus events if (!hasFocus) d->control->deselect(); diff --git a/src/qtquick1/graphicsitems/qdeclarativetextinput.cpp b/src/qtquick1/graphicsitems/qdeclarativetextinput.cpp index a14d837be0..c61a3ff089 100644 --- a/src/qtquick1/graphicsitems/qdeclarativetextinput.cpp +++ b/src/qtquick1/graphicsitems/qdeclarativetextinput.cpp @@ -1058,7 +1058,7 @@ void QDeclarative1TextInputPrivate::focusChanged(bool hasFocus) Q_Q(QDeclarative1TextInput); focused = hasFocus; q->setCursorVisible(hasFocus && scene && scene->hasFocus()); - if(q->echoMode() == QDeclarative1TextInput::PasswordEchoOnEdit && !hasFocus) + if(!hasFocus && control->passwordEchoEditing()) control->updatePasswordEchoEditing(false);//QLineControl sets it on key events, but doesn't deal with focus events if (!hasFocus) control->deselect(); diff --git a/tests/auto/declarative/qsgtextinput/tst_qsgtextinput.cpp b/tests/auto/declarative/qsgtextinput/tst_qsgtextinput.cpp index 32e59c2a6d..1ada6895c0 100644 --- a/tests/auto/declarative/qsgtextinput/tst_qsgtextinput.cpp +++ b/tests/auto/declarative/qsgtextinput/tst_qsgtextinput.cpp @@ -55,6 +55,8 @@ #include #include +#include "qplatformdefs.h" + #ifdef Q_OS_SYMBIAN // In Symbian OS test data is located in applications private dir #define SRCDIR "." @@ -132,6 +134,9 @@ private slots: void focusOutClearSelection(); void echoMode(); +#ifdef QT_GUI_PASSWORD_ECHO_DELAY + void passwordEchoDelay(); +#endif void geometrySignals(); void testQtQuick11Attributes(); void testQtQuick11Attributes_data(); @@ -1944,6 +1949,59 @@ void tst_qsgtextinput::echoMode() QCOMPARE(input->inputMethodQuery(Qt::ImSurroundingText).toString(), initial); } +#ifdef QT_GUI_PASSWORD_ECHO_DELAY +void tst_qdeclarativetextinput::passwordEchoDelay() +{ + QSGView canvas(QUrl::fromLocalFile(SRCDIR "/data/echoMode.qml")); + canvas.show(); + canvas.setFocus(); + QApplication::setActiveWindow(&canvas); + QTest::qWaitForWindowShown(&canvas); + QTRY_COMPARE(QApplication::activeWindow(), static_cast(&canvas)); + + QVERIFY(canvas.rootObject() != 0); + + QSGTextInput *input = qobject_cast(qvariant_cast(canvas.rootObject()->property("myInput"))); + + QChar fillChar = QLatin1Char('*'); + + input->setEchoMode(QDeclarativeTextInput::Password); + QCOMPARE(input->displayText(), QString(8, fillChar)); + input->setText(QString()); + QCOMPARE(input->displayText(), QString()); + + QTest::keyPress(&canvas, '0'); + QTest::keyPress(&canvas, '1'); + QTest::keyPress(&canvas, '2'); + QCOMPARE(input->displayText(), QString(2, fillChar) + QLatin1Char('2')); + QTest::keyPress(&canvas, '3'); + QTest::keyPress(&canvas, '4'); + QCOMPARE(input->displayText(), QString(4, fillChar) + QLatin1Char('4')); + QTest::keyPress(&canvas, Qt::Key_Backspace); + QCOMPARE(input->displayText(), QString(4, fillChar)); + QTest::keyPress(&canvas, '4'); + QCOMPARE(input->displayText(), QString(4, fillChar) + QLatin1Char('4')); + QTest::qWait(QT_GUI_PASSWORD_ECHO_DELAY); + QTRY_COMPARE(input->displayText(), QString(5, fillChar)); + QTest::keyPress(&canvas, '5'); + QCOMPARE(input->displayText(), QString(5, fillChar) + QLatin1Char('5')); + input->setFocus(false); + QVERIFY(!input->hasFocus()); + QCOMPARE(input->displayText(), QString(6, fillChar)); + input->setFocus(true); + QTRY_VERIFY(input->hasFocus()); + QCOMPARE(input->displayText(), QString(6, fillChar)); + QTest::keyPress(&canvas, '6'); + QCOMPARE(input->displayText(), QString(6, fillChar) + QLatin1Char('6')); + + QInputMethodEvent ev; + ev.setCommitString(QLatin1String("7")); + QApplication::sendEvent(&canvas, &ev); + QCOMPARE(input->displayText(), QString(7, fillChar) + QLatin1Char('7')); +} +#endif + + void tst_qsgtextinput::simulateKey(QSGView *view, int key) { QKeyEvent press(QKeyEvent::KeyPress, key, 0); diff --git a/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 2d86a4b038..fe77312e54 100644 --- a/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -52,6 +52,8 @@ #include #include +#include "qplatformdefs.h" + #ifdef Q_OS_SYMBIAN // In Symbian OS test data is located in applications private dir #define SRCDIR "." @@ -133,6 +135,9 @@ private slots: void focusOutClearSelection(); void echoMode(); +#ifdef QT_GUI_PASSWORD_ECHO_DELAY + void passwordEchoDelay(); +#endif void geometrySignals(); void testQtQuick11Attributes(); void testQtQuick11Attributes_data(); @@ -2062,6 +2067,62 @@ void tst_qdeclarativetextinput::echoMode() delete canvas; } + +#ifdef QT_GUI_PASSWORD_ECHO_DELAY +void tst_qdeclarativetextinput::passwordEchoDelay() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/echoMode.qml"); + canvas->show(); + canvas->setFocus(); + QApplication::setActiveWindow(canvas); + QTest::qWaitForWindowShown(canvas); + QTRY_COMPARE(QApplication::activeWindow(), static_cast(canvas)); + + QVERIFY(canvas->rootObject() != 0); + + QDeclarative1TextInput *input = qobject_cast(qvariant_cast(canvas->rootObject()->property("myInput"))); + + QChar fillChar = QLatin1Char('*'); + + input->setEchoMode(QDeclarativeTextInput::Password); + QCOMPARE(input->displayText(), QString(8, fillChar)); + input->setText(QString()); + QCOMPARE(input->displayText(), QString()); + + QTest::keyPress(canvas, '0'); + QTest::keyPress(canvas, '1'); + QTest::keyPress(canvas, '2'); + QCOMPARE(input->displayText(), QString(2, fillChar) + QLatin1Char('2')); + QTest::keyPress(canvas, '3'); + QTest::keyPress(canvas, '4'); + QCOMPARE(input->displayText(), QString(4, fillChar) + QLatin1Char('4')); + QTest::keyPress(canvas, Qt::Key_Backspace); + QCOMPARE(input->displayText(), QString(4, fillChar)); + QTest::keyPress(canvas, '4'); + QCOMPARE(input->displayText(), QString(4, fillChar) + QLatin1Char('4')); + QTest::qWait(QT_GUI_PASSWORD_ECHO_DELAY); + QTRY_COMPARE(input->displayText(), QString(5, fillChar)); + QTest::keyPress(canvas, '5'); + QCOMPARE(input->displayText(), QString(5, fillChar) + QLatin1Char('5')); + input->setFocus(false); + QVERIFY(!input->hasFocus()); + QCOMPARE(input->displayText(), QString(6, fillChar)); + input->setFocus(true); + QTRY_VERIFY(input->hasFocus()); + QCOMPARE(input->displayText(), QString(6, fillChar)); + QTest::keyPress(canvas, '6'); + QCOMPARE(input->displayText(), QString(6, fillChar) + QLatin1Char('6')); + + QInputMethodEvent ev; + ev.setCommitString(QLatin1String("7")); + QApplication::sendEvent(canvas, &ev); + QCOMPARE(input->displayText(), QString(7, fillChar) + QLatin1Char('7')); + + delete canvas; +} +#endif + + void tst_qdeclarativetextinput::simulateKey(QDeclarativeView *view, int key) { QKeyEvent press(QKeyEvent::KeyPress, key, 0); From 5f3e4e72cf130dfb140f5726ffa4160cf81000de Mon Sep 17 00:00:00 2001 From: Andrew den Exter Date: Mon, 9 May 2011 13:57:34 +1000 Subject: [PATCH 39/68] Update TextEdit tests with changes from 4.8. Test are for changes cherry-picked to qtbase as: 8febd569408db19c8a83e16cc7a8574f9b00084b bb2f045c10965542ae14275e8ce5a97e42931d8d Change-Id: I186b80be1a706d8be442d4e6e5e2734ec677d235 Reviewed-on: http://codereview.qt.nokia.com/4172 Reviewed-by: Qt Sanity Bot Reviewed-by: Andrew den Exter --- .../data/mouseselection_false_words.qml | 3 +- .../data/mouseselection_true_words.qml | 3 +- .../qsgtextedit/tst_qsgtextedit.cpp | 88 +++++++++++++++---- .../data/mouseselection_false_words.qml | 5 +- .../data/mouseselection_true_words.qml | 5 +- .../tst_qdeclarativetextedit.cpp | 70 ++++++++++----- 6 files changed, 126 insertions(+), 48 deletions(-) diff --git a/tests/auto/declarative/qsgtextedit/data/mouseselection_false_words.qml b/tests/auto/declarative/qsgtextedit/data/mouseselection_false_words.qml index ac32f4ced7..86aea46a85 100644 --- a/tests/auto/declarative/qsgtextedit/data/mouseselection_false_words.qml +++ b/tests/auto/declarative/qsgtextedit/data/mouseselection_false_words.qml @@ -2,6 +2,7 @@ import QtQuick 2.0 TextEdit { focus: true - text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ" selectByMouse: false + mouseSelectionMode: TextEdit.SelectWords } diff --git a/tests/auto/declarative/qsgtextedit/data/mouseselection_true_words.qml b/tests/auto/declarative/qsgtextedit/data/mouseselection_true_words.qml index 7c7cb0b6fc..c356999220 100644 --- a/tests/auto/declarative/qsgtextedit/data/mouseselection_true_words.qml +++ b/tests/auto/declarative/qsgtextedit/data/mouseselection_true_words.qml @@ -2,6 +2,7 @@ import QtQuick 2.0 TextEdit { focus: true - text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ" selectByMouse: true + mouseSelectionMode: TextEdit.SelectWords } diff --git a/tests/auto/declarative/qsgtextedit/tst_qsgtextedit.cpp b/tests/auto/declarative/qsgtextedit/tst_qsgtextedit.cpp index 2a94e20d3f..fdbedaedd8 100644 --- a/tests/auto/declarative/qsgtextedit/tst_qsgtextedit.cpp +++ b/tests/auto/declarative/qsgtextedit/tst_qsgtextedit.cpp @@ -1339,20 +1339,32 @@ void tst_qsgtextedit::moveCursorSelectionSequence() void tst_qsgtextedit::mouseSelection_data() { QTest::addColumn("qmlfile"); - QTest::addColumn("expectSelection"); + QTest::addColumn("from"); + QTest::addColumn("to"); + QTest::addColumn("selectedText"); // import installed - QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << true; - QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << false; - QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << false; - QTest::newRow("on word selection") << SRCDIR "/data/mouseselection_true_words.qml" << true; - QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << false; + QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << 4 << 9 << "45678"; + QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << 4 << 9 << QString(); + QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << 4 << 9 << QString(); + QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << 4 << 9 << QString(); + QTest::newRow("on word selection (4,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 4 << 9 << "0123456789"; + QTest::newRow("on word selection (2,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (2,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (9,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (9,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (13,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 13 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (20,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 20 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (12,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 12 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (30,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 30 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; } void tst_qsgtextedit::mouseSelection() { QFETCH(QString, qmlfile); - QFETCH(bool, expectSelection); + QFETCH(int, from); + QFETCH(int, to); + QFETCH(QString, selectedText); QSGView canvas(QUrl::fromLocalFile(qmlfile)); @@ -1366,19 +1378,20 @@ void tst_qsgtextedit::mouseSelection() QVERIFY(textEditObject != 0); // press-and-drag-and-release from x1 to x2 - int x1 = 10; - int x2 = 70; - int y = textEditObject->height()/2; - QTest::mousePress(&canvas, Qt::LeftButton, 0, QPoint(x1,y)); - //QTest::mouseMove(canvas, QPoint(x2,y)); // doesn't work - QMouseEvent mv(QEvent::MouseMove, QPoint(x2,y), Qt::LeftButton, Qt::LeftButton,Qt::NoModifier); + QPoint p1 = textEditObject->positionToRectangle(from).center().toPoint(); + QPoint p2 = textEditObject->positionToRectangle(to).center().toPoint(); + QTest::mousePress(&canvas, Qt::LeftButton, 0, p1); + //QTest::mouseMove(canvas->viewport(), canvas->mapFromScene(QPoint(x2,y))); // doesn't work + QMouseEvent mv(QEvent::MouseMove, p2, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier); QApplication::sendEvent(&canvas, &mv); - QTest::mouseRelease(&canvas, Qt::LeftButton, 0, QPoint(x2,y)); - QString str = textEditObject->selectedText(); - if (expectSelection) - QVERIFY(str.length() > 3); // don't reallly care *what* was selected (and it's too sensitive to platform) - else - QVERIFY(str.isEmpty()); + QTest::mouseRelease(&canvas, Qt::LeftButton, 0, p2); + QCOMPARE(textEditObject->selectedText(), selectedText); + + // Clicking and shift to clicking between the same points should select the same text. + textEditObject->setCursorPosition(0); + QTest::mouseClick(&canvas, Qt::LeftButton, Qt::NoModifier, p1); + QTest::mouseClick(&canvas, Qt::LeftButton, Qt::ShiftModifier, p2); + QCOMPARE(textEditObject->selectedText(), selectedText); } void tst_qsgtextedit::dragMouseSelection() @@ -1572,6 +1585,43 @@ void tst_qsgtextedit::cursorDelegate() QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); } + // Clear preedit text; + QInputMethodEvent event; + QApplication::sendEvent(&view, &event); + + + // Test delegate gets moved on mouse press. + textEditObject->setSelectByMouse(true); + textEditObject->setCursorPosition(0); + const QPoint point1 = textEditObject->positionToRectangle(5).center().toPoint(); + QTest::mouseClick(&view, Qt::LeftButton, 0, point1); + QVERIFY(textEditObject->cursorPosition() != 0); + QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); + QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); + + // Test delegate gets moved on mouse drag + textEditObject->setCursorPosition(0); + const QPoint point2 = textEditObject->positionToRectangle(10).center().toPoint(); + QTest::mousePress(&view, Qt::LeftButton, 0, point1); + QMouseEvent mv(QEvent::MouseMove, point2, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier); + QApplication::sendEvent(&view, &mv); + QTest::mouseRelease(&view, Qt::LeftButton, 0, point2); + QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); + QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); + + textEditObject->setReadOnly(true); + textEditObject->setCursorPosition(0); + QTest::mouseClick(&view, Qt::LeftButton, 0, textEditObject->positionToRectangle(5).center().toPoint()); + QVERIFY(textEditObject->cursorPosition() != 0); + QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); + QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); + + textEditObject->setCursorPosition(0); + QTest::mouseClick(&view, Qt::LeftButton, 0, textEditObject->positionToRectangle(5).center().toPoint()); + QVERIFY(textEditObject->cursorPosition() != 0); + QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); + QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); + textEditObject->setCursorPosition(0); QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); diff --git a/tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_false_words.qml b/tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_false_words.qml index 22a9871306..f8d2e4e2f2 100644 --- a/tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_false_words.qml +++ b/tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_false_words.qml @@ -1,7 +1,8 @@ -import QtQuick 1.0 +import QtQuick 1.1 TextEdit { focus: true - text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ" selectByMouse: false + mouseSelectionMode: TextEdit.SelectWords } diff --git a/tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_true_words.qml b/tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_true_words.qml index d61da46f48..f58fd45837 100644 --- a/tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_true_words.qml +++ b/tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_true_words.qml @@ -1,7 +1,8 @@ -import QtQuick 1.0 +import QtQuick 1.1 TextEdit { focus: true - text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ" selectByMouse: true + mouseSelectionMode: TextEdit.SelectWords } diff --git a/tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index 76f4687e2e..e74ad4440d 100644 --- a/tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -1315,20 +1315,32 @@ void tst_qdeclarativetextedit::moveCursorSelectionSequence() void tst_qdeclarativetextedit::mouseSelection_data() { QTest::addColumn("qmlfile"); - QTest::addColumn("expectSelection"); + QTest::addColumn("from"); + QTest::addColumn("to"); + QTest::addColumn("selectedText"); // import installed - QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << true; - QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << false; - QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << false; - QTest::newRow("on word selection") << SRCDIR "/data/mouseselection_true_words.qml" << true; - QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << false; + QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << 4 << 9 << "45678"; + QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << 4 << 9 << QString(); + QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << 4 << 9 << QString(); + QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << 4 << 9 << QString(); + QTest::newRow("on word selection (4,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 4 << 9 << "0123456789"; + QTest::newRow("on word selection (2,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (2,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (9,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (9,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (13,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 13 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (20,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 20 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (12,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 12 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + QTest::newRow("on word selection (30,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 30 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"; } void tst_qdeclarativetextedit::mouseSelection() { QFETCH(QString, qmlfile); - QFETCH(bool, expectSelection); + QFETCH(int, from); + QFETCH(int, to); + QFETCH(QString, selectedText); QDeclarativeView *canvas = createView(qmlfile); @@ -1342,25 +1354,20 @@ void tst_qdeclarativetextedit::mouseSelection() QVERIFY(textEditObject != 0); // press-and-drag-and-release from x1 to x2 - int x1 = 10; - int x2 = 70; - int y = textEditObject->height()/2; - QTest::mousePress(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(x1,y))); + QPoint p1 = canvas->mapFromScene(textEditObject->positionToRectangle(from).center()); + QPoint p2 = canvas->mapFromScene(textEditObject->positionToRectangle(to).center()); + QTest::mousePress(canvas->viewport(), Qt::LeftButton, 0, p1); //QTest::mouseMove(canvas->viewport(), canvas->mapFromScene(QPoint(x2,y))); // doesn't work - QMouseEvent mv(QEvent::MouseMove, canvas->mapFromScene(QPoint(x2,y)), Qt::LeftButton, Qt::LeftButton,Qt::NoModifier); + QMouseEvent mv(QEvent::MouseMove, canvas->mapFromScene(p2), Qt::LeftButton, Qt::LeftButton,Qt::NoModifier); QApplication::sendEvent(canvas->viewport(), &mv); - QTest::mouseRelease(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(x2,y))); - QString str = textEditObject->selectedText(); - if (expectSelection) - QVERIFY(str.length() > 3); // don't reallly care *what* was selected (and it's too sensitive to platform) - else - QVERIFY(str.isEmpty()); + QTest::mouseRelease(canvas->viewport(), Qt::LeftButton, 0, p2); + QCOMPARE(textEditObject->selectedText(), selectedText); // Clicking and shift to clicking between the same points should select the same text. textEditObject->setCursorPosition(0); - QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::NoModifier, canvas->mapFromScene(QPoint(x1,y))); - QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::ShiftModifier, canvas->mapFromScene(QPoint(x2,y))); - QCOMPARE(textEditObject->selectedText(), str); + QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::NoModifier, p1); + QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::ShiftModifier, p2); + QCOMPARE(textEditObject->selectedText(), selectedText); delete canvas; } @@ -1682,16 +1689,33 @@ void tst_qdeclarativetextedit::cursorDelegate() QInputMethodEvent event; QApplication::sendEvent(view, &event); + // Test delegate gets moved on mouse press. textEditObject->setSelectByMouse(true); textEditObject->setCursorPosition(0); - qDebug() << textEditObject->boundingRect() << textEditObject->positionToRectangle(5).center() << view->mapFromScene(textEditObject->positionToRectangle(5).center()); + const QPoint point1 = view->mapFromScene(textEditObject->positionToRectangle(5).center()); + QTest::mouseClick(view->viewport(), Qt::LeftButton, 0, point1); + QVERIFY(textEditObject->cursorPosition() != 0); + QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); + QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); + + // Test delegate gets moved on mouse drag + textEditObject->setCursorPosition(0); + const QPoint point2 = view->mapFromScene(textEditObject->positionToRectangle(10).center()); + QTest::mousePress(view->viewport(), Qt::LeftButton, 0, point1); + QMouseEvent mv(QEvent::MouseMove, point2, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier); + QApplication::sendEvent(view->viewport(), &mv); + QTest::mouseRelease(view->viewport(), Qt::LeftButton, 0, point2); + QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); + QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); + + textEditObject->setReadOnly(true); + textEditObject->setCursorPosition(0); QTest::mouseClick(view->viewport(), Qt::LeftButton, 0, view->mapFromScene(textEditObject->positionToRectangle(5).center())); QVERIFY(textEditObject->cursorPosition() != 0); QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x())); QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y())); - textEditObject->setReadOnly(true); textEditObject->setCursorPosition(0); QTest::mouseClick(view->viewport(), Qt::LeftButton, 0, view->mapFromScene(textEditObject->positionToRectangle(5).center())); QVERIFY(textEditObject->cursorPosition() != 0); From 0c0f03e2b9756afb4e868a76734cc90102218f0a Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Tue, 30 Aug 2011 14:40:41 +1000 Subject: [PATCH 40/68] Improvements to textFormat: Text.StyledText Add support for: -

            to
            headers -

            paragraph - underlined text - anchor -

            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

          3. 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�E;OX3AS*Q0`ce< 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�{3 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