// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
    \example qmllegend
    \title Qt Quick 2 Legend Example
    \ingroup qtdatavisualization_examples
    \brief Showing graph legend in a QML application.

    The Qt Quick 2 legend example shows how to make an interactive legend for a graph.

    \image qmllegend-example.png

    The interesting thing about this example is displaying the legend. We'll concentrate on
    that and skip explaining the basic functionality - for
    more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.

    \include examples-run.qdocinc

    \section1 Legend

    The legend is simply a column of custom \c LegendItem items inside a transparent rectangle.
    Each item is supplied with a series and the graph theme:

    \snippet qmllegend/qml/qmllegend/main.qml 0

    The legend items consist of a marker rectangle, which indicates the color of the series,
    and a text field, which shows the name of the series. The colors we get from the series and
    the theme supplied at legend item initialization:

    \snippet qmllegend/qml/qmllegend/LegendItem.qml 0
    \dots 4
    \snippet qmllegend/qml/qmllegend/LegendItem.qml 1

    We want the legend to be interactive, so we add additional logic to enable selection of a
    series by clicking on a legend item, as well as highlighting the legend item corresponding
    to the selected series.

    The highlight depends on the selection state of the series, so we define two states, which
    follow the Bar3DSeries::selectedBar property and adjust the \c legendItem color appropriately:

    \snippet qmllegend/qml/qmllegend/LegendItem.qml 3

    To make the legend item interactive, we define a MouseArea to detect clicks on it and adjust
    the series selection accordingly:

    \snippet qmllegend/qml/qmllegend/LegendItem.qml 2

    The \c previousSelection used above is another custom property of \c LegendItem, which we update
    whenever selection changes on the series. This way we remember the last selected bar of
    each series:

    \snippet qmllegend/qml/qmllegend/LegendItem.qml 4
*/
