﻿/****************************************************************************
**
** Copyright (C) 2019 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$
**
****************************************************************************/

/*!
    \page whatsnew53.html
    \title What's New in Qt 5.3
    \brief Lists the new features in Qt 5.3

    The focus for Qt 5.3 is mainly about improving the stability, performance,
    and first-time user experience of the product. Qt 5.3 will also offer
    a good amount of new and exciting features, and a new platform:
    WinRT/Windows Phone.

    This page is a summary of new features. For specific API changes, the
    \l{List of API Changes} section contains links to new and obsolete classes.

    \section1 New Modules

    \list
    \li \l{Enginio Manual}{Enginio} - A client-side library for \l{Qt Cloud Services}.
    \li \l{Qt WebSockets} - An add-on module that implements the \WebSocket standard
    \l{http://tools.ietf.org/html/rfc6455}{RFC 6455}
    \endlist

    For more information, visit the \l{All Modules} page.

    \section1 New Platforms

    Qt 5.3 introduces support for WinRT and Windows Phone on a beta quality
    level. Most features in Qt Core, GUI, Network, Widgets, QML, Quick, and
    Sensors are already working.

    \list
    \li Windows Runtime platforms: Windows 8/RT (Modern UI), Windows Phone 8.
    \endlist


    \section1 New Features

    \section2 Qt Core Module
    \list
    \li Logging: It is now possible to configure logging rules (for example, the
    message types for which categories are printed) on the filesystem or in
    \e{QtProject/qtlogging.ini}. You can also use qCDebug and friends in a
    printf-style way, in addition to the streaming operator syntax.
    \endlist

    \section2 Qt GUI Module
    \list
    \li Qt's iOS plugin now implements support for input methods, spell checking
    and word completion.
    \li Embedded Linux platform specifics (plugins like eglfs and linuxfb) are
    now documented.
    \endlist

    \section2 Qt Quick Module
    \list
    \li Introduced QQuickWidget for easy and flexibe integration of views
    with QWidget-based UIs.
    \endlist

    \section2 Qt Quick Controls Module
    \list
    \li The \l Calendar control was added. Calendar allows selection of dates from
    a grid of days, similar to QCalendarWidget.
    \li \l MenuStyle and \l MenuBarStyle controls introduced.
    \endlist

    \section2 Qt Quick Dialogs Module
    \list

    \li The QML implementations are now built with QtQuick.Controls (and
    therefore the source is moved from qtdeclarative.git to
    qtquickcontrols.git), which enables adding some features such as folder
    shortcuts (both standard locations and bookmarked locations), and comboboxes
    for file filters and writing systems.
    \li There is a new Dialog type which provides only the standard buttons, so
    that you can construct dialogs with arbitrary contents, such as various
    types of input dialogs and pickers.
    \endlist

    \section2 Qt Network Module
    \list
    \li Support for the SPDY protocol (version 3.0) was added.
    \endlist

    \section2 Qt Multimedia Module
    \list
    \li A new QCameraInfo class was added. It allows to get static information
    about cameras such as physical position and sensor orientation. In addition,
    the class provides a way to list available cameras on the system and
    deprecates QCamera::availableDevices().
    \endlist

    \section2 Qt WebKit Module
    \list
    \li Support for HTML5 Video Track. Subtitles and captions for HTML5 video.
    \li Support for Indexed DB API. See \l{http://www.w3.org/TR/IndexedDB/}.
    \endlist

    \section2 Qt Positioning Module
    \list
    \li The module has been ported to Android and iOS. Android supports position
    and satellite updates while iOS supports position updates only.
    \endlist

    \section2 Qt Bluetooth Module
    \list
    \li The module has been ported to Android.
    \endlist

    \section2 Qt QML Module
    \list
    \li Profiling support for V4, using the same event types as the QML profiler.
    \li Profile or debug multiple QML engines in one application with the new EngineControl debug service.
    \endlist

    \section2 XInput2 Smooth Scrolling
    \list
    \li Qt's XCB plugin now listens to XInput2 scrolling events which means
    it will respond to high resolution smooth scrolling events on devices where
    they are supported. Currently this is mainly touch pads.
    \endlist

    \section1 Qt Creator 3.1

    The release of Qt Creator 3.1 coincides with the release of Qt 5.3. The
    release introduces new features as well as bug fixes and improvements.

    For more information, visit the \l{Qt Creator Manual}.

    \section2 WinRT Plugin

    Qt Creator 3.1 introduces a WinRT plugin that facilitates deployment and
    development of applications. The plugin is still experimental but the
    main features that already work nicely are:

    \list
    \li Registration of Windows Runtime and Windows Phone Qt versions.
    \li Support for Windows Runtime and Windows Phone Kits.
    \li Building of Windows Runtime and Windows Phone applications.
    \li Running of applications for Windows Runtime and Windows Phone via Qt Creator’s \gui Run button.
    \endlist

    To enable the plugin, go to \gui Help > \gui{About Plugins} and enable
    \gui WinRT in \gui{Device Support}.

    \section2 Editors
    \list
    \li Better support of multiple editors and windows.
    \li New \l{Qt Creator: Beautifying Source Code}{Beautifier plugin} for
    applying indentation and other coding styles.
    \endlist

    \section2 C++
    \list
    \li Experimental new Clang based code model.
    \endlist

    \section2 iOS
    \list
    \li Better support of multiple devices.
    \endlist

    \section2 QML
    \list
    \li Better Qbs support.
    \li Better defaulting and import resolution.
    \li JavaScript profiler frontend (V4 only), integrated in QML profiler
    \e events and \e timeline views.
    \endlist

    \section2 Debugger
    \list
    \li Improved LLDB support.
    \li Removed support for GDB builds without Python.
    \endlist

    \section2 Devices
    \list
    \li SSH parameters now available as Qt Creator variables, for example, for
    use in custom run configurations.
    \endlist

    \section1 List of API Changes

    The pages below contain a list of API changes in Qt 5.3:
    \list
    \li \l{New Classes and Functions in Qt 5.3}
    \li \l{Obsolete Classes}
    \endlist

    \section1 Additions to Other Qt 5 Releases

    \list
    \li \l{What's New in Qt 5.4}
    \li \l{What's New in Qt 5.2}
    \li \l{What's New in Qt 5.1}
    \li \l{What's New in Qt 5.0}
    \endlist

*/

/*!
    \page newclasses53.html
    \title New Classes and Functions in Qt 5.3
    \brief A list of new APIs in Qt 5.3

    This page contains a comprehensive list of all new classes and functions
    introduced in Qt 5.3. Links to new APIs in previous Qt 5 releases are found
    at the bottom of this page.

    \sincelist 5.3

    \section1 Additions to Other Qt 5 Releases

    \list
    \li \l{What's New in Qt 5.6}
    \li \l{What's New in Qt 5.5}
    \li \l{What's New in Qt 5.4}
    \li \l{What's New in Qt 5.2}
    \li \l{What's New in Qt 5.1}
    \li \l{What's New in Qt 5.0}
    \endlist
*/
