Qt 5.1 introduces many new features and improvements as well as bugfixes
over the 5.0.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

  http://qt-project.org/doc/qt-5.1

The Qt version 5.1 series is binary compatible with the 5.0.x series.
Applications compiled for 5.0 will continue to run with 5.1.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

  http://bugreports.qt-project.org/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                           General                                        *
****************************************************************************

 - Add a QAmbientTemperatureSensor class.
 - Add a QAltimeter class.
 - Add QHolsterSensor
 - Add API for duplicate skipping
 - Add QPressureSensor
 - Add QSensor::isFeatureSupported()
 - Add linux sys accelerometer reader backend
 - Introduce QRotationReading::setFromEuler() in favor of set{X/Y/Z}()
 - Add support for the compass sensor
 - Add support for the pressure sensor
 - Add support for the IR proximity sensor
 - Add support for tilt sensor
 - Add sensor backend for sensorfw
 - Add freefall sensor gesture

Qt for Android
--------------

 - Sensor implementation for Android

Qt for BlackBerry
-----------------

 - Support QMagnetometer::returnGeoValues
 - Prevent spurious calls to dataAvailable() when stopped

Qt for iOS
----------

 - Implement accelerometer for iOS

