/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** 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 Digia.  For licensing terms and
** conditions see http://qt.digia.com/licensing.  For further information
** use the contact form at http://qt.digia.com/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 portingqmlapp.html
\title Porting QML Applications to Qt 5 Example
\brief Provides step-by-step instructions to port a QML application to Qt 5.

The new version of Qt Quick in Qt 5 brings in some changes to the way QML
applications are developed. For the complete list of changes that affect
existing QML applications, refer to \l{Porting QML Applications to Qt 5}.

This topic will walk through the porting process to make the \c{flickr} Qt 4
QML demo work on Qt 5. If you have the SDK based on Qt 4.8 installed, you can
find this demo application under
\c{<install_dir_root>/Examples/4.x/declarative/demos/}.

Follow these step-by-step instructions to port the \e{flickr} Qt 4 QML
application work to Qt 5:
\list 1
 \li Open the \e{flickr} project using Qt Creator.
 \li Edit all the \c{.qml} files and replace the \c{import QtQuick 1.0} statements
     with \c{import QtQuick 2.0}.
 \li Add the additional \c{import QtQuick.XmlListModel 2.0} statement to
     \c{qml/common/RssModel.qml}.

     \note \l{Qt Quick XmlListModel QML Types}{XmlListModel} is part of a
     submodule under \c{QtQuick} and it must be imported explicitly in order
     to use it.

 \li Make the following changes to
     \c{qmlapplicationviewer/qmlapplicationviewer.h}:
  \list
   \li Replace the \c{#include <QtDeclarative/QDeclarativeView>} with
       \c{#include <QQuickView>}.
   \li Replace \c{QDeclarativeView} with \c{QQuickView} in the class
       declaration for \c{QmlApplicationViewer}.
   \li Replace the parameter for \c{QmlApplicationViewer} constructor from
       \c{QWidget} to \c{QWindow}.
  \endlist
 \li Make the following changes to
     \c{qmlapplicationviewer/qmlapplicationviewer.cpp}:
  \list
   \li Replace all the \c{QtCore} and \c{QtDeclarative} include statements with
       these:
    \code
      #include <QCoreApplication>
      #include <QDir>
      #include <QFileInfo>
      #include <QQmlComponent>
      #include <QQmlEngine>
      #include <QQmlContext>
      #include <QDebug>
     \endcode
   \li Replace all instances of \c{QWidget} with \c{QWindow}, and
       \c{QDeclarativeView} with \c{QQuickView}.
   \li Remove the code between \c{#if defined(Q_OS_SYMBIAN)} and \c{#endif}
       macros as Symbian platform is not supported in Qt 5.
   \li Remove the code between \c{#if QT_VERSION < 0x040702} and \c{#else}, and
       \c{#endif // QT_VERSION < 0x040702} macros towards the end.
  \endlist
 \li Save changes to the project and run the application.
\endlist

Once you see the application running, check whether it behaves as expected. Here is a
snapshot of the application running on Ubuntu v12.04:
\image flickr_application.png

\section1 Related Topics
\l{Porting QML Applications to Qt 5}
*/
