/****************************************************************************
**
** 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$
**
****************************************************************************/

/*!
    \page qtlabscontrols-customize.html
    \title Customizing Qt Labs Controls
    \brief A set of UI controls to create user interfaces in Qt Quick

    Qt Labs Controls consist of a hierarchy (tree) of items. In order to
    provide a custom look and feel, the default QML implementation of each
    item can be replaced with a custom one. The following snippets present
    the default implementations of various items. These can be used as a
    starting point to implement a custom look and feel.

    \section1 Customizing BusyIndicator

        BusyIndicator consists of two visual items: \l {Control::background}{background}
        and \l {Control::contentItem}{contentItem}.

        \section3 Background

            \image qtlabscontrols-busyindicator-background.png

            BusyIndicator has no background item by default.

        \section3 Content item

            \image qtlabscontrols-busyindicator-contentItem.png

            \snippet BusyIndicator.qml contentItem


    \section1 Customizing Button

        Button consists of two visual items: \l {Control::background}{background}
        and \l {AbstractButton::label}{label}.

        \section3 Background

            \image qtlabscontrols-button-background.png

            \snippet Button.qml background

        \section3 Label

            \image qtlabscontrols-button-label.png

            \snippet Button.qml label


    \section1 Customizing CheckBox

        CheckBox consists of three visual items: \l {Control::background}{background},
        \l {AbstractButton::label}{label} and \l {AbstractButton::indicator}{indicator}.

        \section3 Background

            \image qtlabscontrols-checkbox-background.png

            CheckBox has no background item by default.

        \section3 Label

            \image qtlabscontrols-checkbox-label.png

            \snippet CheckBox.qml label

        \section3 Indicator

            \image qtlabscontrols-checkbox-indicator.png

            \snippet CheckBox.qml indicator


    \section1 Customizing ComboBox

        ComboBox consists of \l {Control::background}{background},
        \l {Control::contentItem}{content item}, \l {ComboBox::popup}{popup},
        and \l {ComboBox::delegate}{delegate}.

        \section3 Background

            \image qtlabscontrols-combobox-background.png

            \snippet ComboBox.qml background

        \section3 Content item

            \image qtlabscontrols-combobox-contentItem.png

            \snippet ComboBox.qml contentItem

        \section3 Popup

            \image qtlabscontrols-combobox-popup.png

            \snippet ComboBox.qml popup

        \section3 Delegate

            \image qtlabscontrols-combobox-delegate.png

            \snippet ComboBox.qml delegate


    \section1 Customizing Dial

        Dial consists of two visual items: \l {Control::background}{background}
        and \l {Dial::handle}{handle}.

        \section3 Background

            \image qtlabscontrols-dial-background.png

            \snippet Dial.qml background

        \section3 Indicator

            \image qtlabscontrols-dial-handle.png

            \snippet Dial.qml handle


    \section1 Customizing Drawer

        Drawer can have a visual \l {Control::background}{background}
        item. The navigation is implemented by the \l {Control::contentItem}
        {content item}.

        \section3 Background

            \snippet Drawer.qml background

        \section3 Content item

            Drawer has no content item by default.


    \section1 Customizing Frame

        Frame consists of two visual items: \l {Control::background}{background}
        and \l {Frame::frame}{frame}.

        \section3 Background

            \image qtlabscontrols-frame-background.png

            Frame has no background item by default.

        \section3 Frame

            \image qtlabscontrols-frame-frame.png

            \snippet Frame.qml frame


    \section1 Customizing GroupBox

        GroupBox consists of three visual items: \l {Control::background}{background},
        \l {Frame::frame}{frame} and \l {GroupBox::label}{label}.

        \section3 Background

            \image qtlabscontrols-groupbox-background.png

            GroupBox has no background item by default.

        \section3 Frame

            \image qtlabscontrols-groupbox-frame.png

            \snippet GroupBox.qml frame

        \section3 Label

            \image qtlabscontrols-groupbox-label.png

            \snippet GroupBox.qml label


    \section1 Customizing ItemDelegate

        ItemDelegate consists of three visual items: \l {Control::background}{background},
        \l {AbstractButton::label}{label} and \l {AbstractButton::indicator}{indicator}.
        The indicator is only visible for \l {AbstractButton::checkable}{checkable} items.

        \section3 Background

            \image qtlabscontrols-itemdelegate-background.png

            \snippet ItemDelegate.qml background

        \section3 Label

            \image qtlabscontrols-itemdelegate-label.png

            \snippet ItemDelegate.qml label

        \section3 Indicator

            \image qtlabscontrols-itemdelegate-indicator.png

            \snippet ItemDelegate.qml indicator


    \section1 Customizing Label

        Label can have a visual \l {Label::background}{background} item.

        \section3 Background

            \image qtlabscontrols-label-background.png

            Label has no background item by default.


    \section1 Customizing Menu

        Menu consists of a \l {Popup::}{contentItem}.

        \section3 Content item

            \image qtlabscontrols-menu-contentItem.png

            \snippet Menu.qml contentItem


    \section1 Customizing MenuItem

        MenuItem can be customized in the same manner as
        \l {Customizing Button}{Button}.


    \section1 Customizing PageIndicator

        TODO


    \section1 Customizing Pane

        Pane consists of a \l {Control::background}{background}.

        \section3 Background

            \image qtlabscontrols-pane-background.png

            \snippet Pane.qml background


    \section1 Customizing ProgressBar

        ProgressBar consists of two visual items: \l {Control::background}{background}
        and \l {ProgressBar::indicator}{indicator}.

        \section3 Background

            \image qtlabscontrols-progressbar-background.png

            \snippet ProgressBar.qml background

        \section3 Indicator

            \image qtlabscontrols-progressbar-indicator.png

            \snippet ProgressBar.qml indicator


    \section1 Customizing RadioButton

        RadioButton consists of three visual items: \l {Control::background}{background},
        \l {AbstractButton::label}{label} and \l {AbstractButton::indicator}{indicator}.

        \section3 Background

            \image qtlabscontrols-radiobutton-background.png

            RadioButton has no background item by default.

        \section3 Label

            \image qtlabscontrols-radiobutton-label.png

            \snippet RadioButton.qml label

        \section3 Indicator

            \image qtlabscontrols-radiobutton-indicator.png

            \snippet RadioButton.qml indicator


    \section1 Customizing RangeSlider

        RangeSlider consists of four visual items:
        \l {Control::background}{background}, \l {RangeSlider::track}{track},
        \l {RangeSlider::first}{first.handle} and
        \l {RangeSlider::second.handle}{second.handle}.

        \section3 Background

            \image qtlabscontrols-rangeslider-background.png

            RangeSlider has no background item by default.

        \section3 Track

            \image qtlabscontrols-rangeslider-track.png

            \snippet RangeSlider.qml track

        \section3 First Handle

            \image qtlabscontrols-rangeslider-first-handle.png

            \snippet RangeSlider.qml firstHandle

        \section3 Second Handle

            \image qtlabscontrols-rangeslider-second-handle.png

            \snippet RangeSlider.qml secondHandle


    \section1 Customizing ScrollBar

        ScrollBar consists of two visual items: \l {Control::background}{background}
        and \l {ScrollBar::handle}{handle}.

        \section3 Background

            \image qtlabscontrols-scrollbar-background.png

            ScrollBar has no background item by default.

        \section3 Handle

            \image qtlabscontrols-scrollbar-handle.png

            \snippet ScrollBar.qml handle


    \section1 Customizing ScrollIndicator

        ScrollIndicator consists of two visual items: \l {Control::background}{background}
        and \l {ScrollIndicator::indicator}{indicator}.

        \section3 Background

            \image qtlabscontrols-scrollindicator-background.png

            ScrollIndicator has no background item by default.

        \section3 Indicator

            \image qtlabscontrols-scrollindicator-indicator.png

            \snippet ScrollIndicator.qml indicator


    \section1 Customizing Slider

        Slider consists of three visual items: \l {Control::background}{background},
        \l {Slider::track}{track} and \l {Slider::handle}{handle}.

        \section3 Background

            \image qtlabscontrols-slider-background.png

            Slider has no background item by default.

        \section3 Track

            \image qtlabscontrols-slider-track.png

            \snippet Slider.qml track

        \section3 Handle

            \image qtlabscontrols-slider-handle.png

            \snippet Slider.qml handle


    \section1 Customizing SpinBox

        SpinBox consists of four visual items: \l {Control::background}{background},
        \l {Control::contentItem}{contentItem}, \l {SpinBox::up.indicator}{up indicator},
        and \l {SpinBox::down.indicator}{down indicator}.

        \section3 Background

            \image qtlabscontrols-spinbox-background.png

            \snippet SpinBox.qml background

        \section3 Content item

            \image qtlabscontrols-spinbox-contentItem.png

            \snippet SpinBox.qml contentItem

        \section3 Down indicator

            \image qtlabscontrols-spinbox-down.png

            \snippet SpinBox.qml down.indicator

        \section3 Up indicator

            \image qtlabscontrols-spinbox-up.png

            \snippet SpinBox.qml up.indicator


    \section1 Customizing StackView

        StackView can have a visual \l {Control::background}{background}
        item, and it allows customizing the transitions that are used for
        push, pop, and replace operations.

        \section3 Push enter

            \snippet StackView.qml pushEnter

        \section3 Push exit

            \snippet StackView.qml pushExit

        \section3 Pop enter

            \snippet StackView.qml popEnter

        \section3 Pop exit

            \snippet StackView.qml popExit

        \section3 Replace enter

            \snippet StackView.qml replaceEnter

        \section3 Replace exit

            \snippet StackView.qml replaceExit


    \section1 Customizing SwipeView

        SwipeView can have a visual \l {Control::background}{background}
        item. The navigation is implemented by the \l {Control::contentItem}
        {content item}.

        \section3 Background

        SwipeView has no background item by default.

        \section3 Content item

        \snippet SwipeView.qml contentItem

    \section1 Customizing Switch

        Switch consists of three visual items: \l {Control::background}{background},
        \l {AbstractButton::label}{label} and \l {AbstractButton::indicator}{indicator}.

        \section3 Background

            \image qtlabscontrols-switch-background.png

            Switch has no background item by default.

        \section3 Label

            \image qtlabscontrols-switch-label.png

            \snippet Switch.qml label

        \section3 Indicator

            \image qtlabscontrols-switch-indicator.png

            \snippet Switch.qml indicator


    \section1 Customizing TabBar

        TODO


    \section1 Customizing TabButton

        TODO


    \section1 Customizing TextArea

        TODO


    \section1 Customizing TextField

        TextField offers a customizable \l {TextField::background}{background} item.

        \section3 Background

            \image qtlabscontrols-textfield-background.png

            \snippet TextField.qml background


    \section1 Customizing ToolBar

        ToolBar consists of two visual items: \l {Control::background}{background} and
        \l {Frame::frame}{frame}.

        \section3 Background

            \image qtlabscontrols-toolbar-background.png

            \snippet ToolBar.qml background

        \section3 Frame

            \image qtlabscontrols-toolbar-frame.png

            ToolBar has no frame item by default.


    \section1 Customizing ToolButton

        ToolButton consists of two visual items: \l {Control::background}{background}
        and \l {AbstractButton::label}{label}.

        \section3 Background

            \image qtlabscontrols-toolbutton-background.png

            \snippet ToolButton.qml background

        \section3 Label

            \image qtlabscontrols-toolbutton-label.png

            \snippet ToolButton.qml label

    \section1 Customizing Tumbler

        Tumbler consists of three visual items:
        \l {Control::background}{background},
        \l {Control::contentItem}{contentItem}, and
        \l {Tumbler::delegate}{delegate}.

        \section3 Background

            \image qtlabscontrols-tumbler-background.png

            Tumbler has no background item by default.

        \section3 Content Item

            \image qtlabscontrols-tumbler-contentItem.png

            \snippet Tumbler.qml contentItem

        \section3 Delegate

            \image qtlabscontrols-tumbler-delegate.png

            \snippet Tumbler.qml delegate
*/
