/****************************************************************************
**
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.  For licensing terms and
** conditions see http://qt.digia.com/licensing.  For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file.  Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: http://www.gnu.org/copyleft/fdl.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
  \page qdeclarativeelements.html
  \target elements
  \title QML Elements
  \brief A listing of standard QML elements.

These are the functionally grouped lists of QML elements as part of
\l{Qt Quick}.

Elements are declared with the their name and two curly braces. Elements may
be nested in elements, thereby creating a parent-child relationship between the
two elements.

To see the QML elements listed by functional area, see the
\l{Groups Of Related QML Elements} page.

\section1 Basic QML Elements
\list
\li \l {Item} - Basic item element inherited by QML elements
\li \l {Component} - Encapsulates QML elements during importing
\li \l {QML:QtObject} {QtObject} - Basic element containing only the \c {objectName} property
\endlist

\section1 Graphics
\list
\li \l {Rectangle} - A rectangle element
\li \l {Image} - For incorporating bitmaps into a scene
\li \l {BorderImage} - Allows the use of images as borders
\li \l {AnimatedImage} - For playing animations stored in a series of frames
\li \l {Gradient} - For defining a color gradient
\li \l {GradientStop} - Used to define a color within a \l {Gradient}
\li \l {SystemPalette} - Provides access to the Qt palettes
\endlist

\section1 Text Handling
\list
\li \l {Text} - For inserting formatted text into a scene
\li \l {TextInput} - Captures user key input
\li \l {TextEdit} - Displays multiple lines of editable formatted text
\li \l {IntValidator} - Validates values as integers
\li \l {DoubleValidator} - Validates real values
\li \l {RegExpValidator} - Validator for string regular expressions
\li \l {FontLoader} - Loads fonts by name or URL
\endlist

\section1 Mouse and Interaction Area
\list
\li \l {MouseArea} - Sets up an area for mouse interaction
\li \l {Keys} - Provides components with attached properties to handle key input.
\li \l {FocusScope} - Element that mediate keyboard focus changes
\li \l {Flickable} - Provides a surface that can be "flicked"
\li \l {Flipable} - Provides a surface that produces "flipping" effects
\li \l {PinchArea} - Enables simple pinch gesture handling
\endlist

\section1 Positioners and Repeater
\list
\li \l {Column} - Arranges its children vertically
\li \l {Row} - Arranges its children horizontally
\li \l {Grid} - Positions its children in a grid
\li \l {Flow} - Positions its children with wrapping support
\li \l {Repeater} - Uses a model to create multiple components
\endlist

\section1 Transformations
\list
\li \l {Scale} - Assigns item scaling behaviors
\li \l {Rotation} - Assigns item rotation behaviors
\li \l {Translate} - Assigns item translation behaviors
\endlist

\section1 States
\list
\li \l {State} - Defines sets of configurations of objects and properties
\li \l {PropertyChanges} - Describes property changes within a state
\li \l {StateGroup} - Contains a set of states and state transitions
\li \l {StateChangeScript} - Allows script binding in a state
\li \l {ParentChange} - Re-parent an Item in a state change
\li \l {AnchorChanges} - Change the anchors of an item in a state
\endlist

\section1 Animation and Transitions
\list
\li \l {Transition} - Animates transitions during state changes
\li \l {SequentialAnimation} - Runs animations sequentially
\li \l {ParallelAnimation} - Runs animations in parallel
\li \l {Behavior} - Specifies a default animation for property changes
\li \l {PropertyAction} - Sets immediate property changes during animation
\li \l {PauseAnimation} - Introduces a pause in an animation
\li \l {SmoothedAnimation} - Allows a property to smoothly track a value
\li \l {SpringAnimation} - Allows a property to track a value in a spring-like motion
\li \l {ScriptAction} - Runs scripts during an animation
\endlist

Elements that animate properties based on data types
\list
\li \l {PropertyAnimation} - Animates property changes
\li \l {NumberAnimation} - Animates properties of type qreal
\li \l {Vector3dAnimation} - Animates properties of type QVector3d
\li \l {ColorAnimation} - Animates color changes
\li \l {RotationAnimation} - Animates rotations
\li \l {ParentAnimation} - Animates parent changes
\li \l {AnchorAnimation} - Animates anchor changes
\endlist

\section1 Models and Data Handling
\list
\li \l {ListModel} - Defines a list of data
\li \l {ListElement} - Defines a data item in a \l {ListModel}
\li \l {VisualItemModel} - Contains items that already defines its own visual delegate
\li \l {VisualDataModel} - Encapsulates a model and a delegate
\li \l {XmlListModel} - Specifies a model using XPath expressions
\li \l {XmlRole} - Specifies a role for an \l {XmlListModel}
\li \l {Binding} - Binds any value to any property
\li \l {Package} - Collection that enables sharing of items within different views
\endlist

\section1 Views
\list
\li \l {ListView} - Provides a list visualization of a model
\li \l {GridView} - Provides a grid visualization of a model
\li \l {PathView} - Visualizes a model's contents along a path. See \l {Path Definition}{Path Elements} for more information.
\endlist

\section1 Path Definition
\list
\li \l {Path} - Defines a path used by \l {PathView}
\li \l {PathLine} - Defines a line in \l {Path}
\li \l {PathQuad} - Defines a quadratic Bezier curve in a \l {Path}
\li \l {PathCubic} - Defines a cubic Bezier curve in a \l {Path}
\li \l {PathAttribute} - Allows the setting of attributes along a \l {Path}
\li \l {PathPercent} - Modifies the item distribution along a \l {Path}
\endlist

\section1 Utility
\list
\li \l {Connections} - Explicitly connects signals and signal handlers
\li \l {Timer} - Provides timed triggers
\li \l {QML:Qt} {Qt} - The QML global Qt object provides useful enums and functions from Qt.
\li \l {WorkerScript} - Enables the use of threads in QML
\li \l {Loader} - Controls the loading of items or components
\li \l {LayoutItem} - Allows declarative UI elements inside Qt's Graphics View layouts
\endlist

\section1 Graphical Effects
\list
\li \l {Particles} - Generates and animates particles
\li \l {ParticleMotionLinear} - Adds linear motion behavior to \l {Particles}
\li \l {ParticleMotionGravity} - Adds gravitational motion to \l {Particles}
\li \l {ParticleMotionWander} - Adds varied motions to \l {Particles}
\li \l {ShaderEffectItem} - Enables the use of OpenGL Shading Language together with QML
\li \l {ShaderEffectSource} - Encapsulates QML item tree as a source item for \l {ShaderEffectItem}
\endlist

\section1 Add-On Elements
These elements are not included in the \c{QtQuick 1.0} module. Their respective QML bindings
should first be obtained and installed.
\list
\li \l{WebView}{QtWebKit QML Module - WebView Element} - For displaying Web contents
\li \l{http://doc.qt.nokia.com/qtmobility-1.1.0/qml-plugins.html}{Mobility QML Plugins}
\li \l {http://doc.qt.nokia.com/qt-components-symbian-1.1/index.html}{Qt Quick Components}
\endlist

*/


/*!
    \group qml-groups
    \title Groups Of Related QML Elements

    \brief If you know what kind of QML element you want (Basic Visual,
    Interaction, Animation, etc), look here.

    This is a list of functional groups of QML elements.

    \generatelist{related}

*/

/*!
    \group qml-basic-visual-elements
    \title Basic QML Visual Elements
    \ingroup qml-groups

    \brief Elements for constructing basic visual items.

    \generatelist{related}

*/

/*!
    \group qml-basic-interaction-elements
    \title Basic QML Interaction Elements
    \ingroup qml-groups

    \brief Elements for handling basic interactions.

    \generatelist{related}

*/

/*!
    \group qml-state-elements
    \title QML State Elements
    \ingroup qml-groups

    \brief Elements for handling state changes.

    \generatelist{related}

*/

/*!
    \group qml-event-elements
    \title QML Event Elements
    \ingroup qml-groups

    \brief Elements for handling events.

    \generatelist{related}

*/

/*!
    \group qml-animation-transition
    \title QML Animation and Transition Elements
    \ingroup qml-groups

    \brief Elements for handling animations and transitions.

    \generatelist{related}

*/

/*!
    \group qml-working-with-data
    \title Working With Data in QML
    \ingroup qml-groups

    \brief Elements for working with data.

    \generatelist{related}

*/

/*!
    \group qml-view-elements
    \title QML View Elements
    \ingroup qml-groups

    \brief Elements for handling views.

    \generatelist{related}

*/

/*!
    \group qml-positioning-elements
    \title QML Positioning Elements
    \ingroup qml-groups

    \brief Elements for positioning items.

    \generatelist{related}

*/

/*!
    \group qml-utility-elements
    \title QML Utility Elements
    \ingroup qml-groups

    \brief Elements for handling misc operations.

    \generatelist{related}

*/

/*!
    \group qml-transform-elements
    \title QML Transform Elements
    \ingroup qml-groups

    \brief Elements for handling transformations.

    \generatelist{related}

*/

/*!
    \group qml-particle-elements
    \title QML Particle Elements
    \ingroup qml-groups

    \brief Elements for handling particle effects.

    \generatelist{related}

*/

/*!
    \group qml-shader-elements
    \title QML Shader Elements
    \ingroup qml-groups

    \brief Elements for using OpenGL shading language code together with the QML code.

    \generatelist{related}

*/
