/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://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 https://www.qt.io/terms-conditions. For further
** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \example itemviews/chart
    \title Chart Example
    \ingroup examples-itemviews
    \brief The Chart example shows how to create a custom view for the model/view framework.

    \image chart-example.png

    In this example, the items in a table model are represented as slices in a pie chart,
    relying on the flexibility of the model/view architecture to handle custom editing
    and selection features.

    \b{Note that you only need to create a new view class if your data requires a
    specialized representation.} You should first consider using a standard QListView,
    QTableView, or QTreeView with a custom QItemDelegate subclass if you need to
    represent data in a special way.

    \omit
    \section1 PieView Class Definition

    The \c PieView class is a subclass of QAbstractItemView. The base class provides
    much of the functionality required by view classes, so we only need to provide
    implementations for three public functions: visualRect(), scrollTo(), and
    indexAt(). However, the view needs to maintain strict control over its look and
    feel, so we also provide implementations for a number of other functions:

    \snippet itemviews/chart/pieview.h 0



    \section1 PieView Class Implementation

    The paint event renders the data from the standard item model as a pie chart.
    We interpret the data in the following way:

    \list
    \li Column 0 contains data in two different roles:
       The \l{Qt::ItemDataRole}{DisplayRole} contains a label, and the
       \l{Qt::ItemDataRole}{DecorationRole} contains the color of the pie slice.
    \li Column 1 contains a quantity which we will convert to the angular extent of
       the slice.
    \endlist

    The figure is always drawn with the chart on the left and the key on
    the right. This means that we must try and obtain an area that is wider
    than it is tall. We do this by imposing a particular aspect ratio on
    the chart and applying it to the available vertical space. This ensures
    that we always obtain the maximum horizontal space for the aspect ratio
    used.
    We also apply fixed size margin around the figure.

    We use logical coordinates to draw the chart and key, and position them
    on the view using viewports.
    \endomit
*/
