/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** 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 The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU 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$
**
****************************************************************************/

/*!
    \example places_list
    \title Places List (QML)
    \ingroup qtlocation-examples

    \brief The Places List example demonstrates how to search for and display a list of places using a \l ListView.
    \image places-list.png

    \include examples-run.qdocinc

    The \c {Places List} example demonstrates how to search for a list of places
    in a certain area and displays the result using a \l ListView. In this particular case, a search
    for places associated with the term \c pizza is performed.

    \section1 Performing a Place Search

    To write a QML application that will show places in a list, we start by
    making the following import declarations.

    \snippet places_list/places_list.qml Imports

    Instantiate a \l Plugin instance.  The \l Plugin is effectively the backend
    from where places are sourced from.  Depending on the type of the plugin,
    some mandatory parameters may be need to be filled in. The most likely type
    of PluginParameter are some form of service access token which are documented
    in the service plugin. As an example see the \l
    {Mandatory Parameters} {HERE Plugin} documentation. In this snippet the \c osm
    plugin is used which does not require any further parameter:

    \snippet places_list/places_list.qml Initialize Plugin

    Next we instantiate a \l PlaceSearchModel which we can use to specify
    search parameters and perform a places search operation.  For illustrative
    purposes, \l {PlaceSearchModel::update} {update()} is invoked once
    construction of the model is complete.  Typically \l
    {PlaceSearchModel::update} {update()} would be invoked in response to a
    user action such as a button click.

    \snippet places_list/places_list.qml PlaceSearchModel

    Finally we instantiate a \l ListView to show the search results found by
    the model.  An inline delegate has been used and we have assumed that
    every search result is of \l {Search Result Types} {type} \c
    PlaceSearchesult.  Consequently it is assumed that we always have access to
    the \e place \l {PlaceSearchModel Roles} {role},  other search result types
    may not have a \e place \l {PlaceSearchModel Roles} {role}.

    \snippet places_list/places_list.qml Places ListView
*/
