Today we are making available the Qt 4.7.4 release bundle for all Symbian^3, Symbian Anna, and Symbian Belle devices. The Qt SDK 1.1.4 update has the necessary Symbian Anna and Belle build targets available allowing application development for Qt 4.7.4. Nokia Store deployments are also possible.
This is a big release for Qt developers. In this blog post I’d like to present an overview of the current Qt deployment situation on Symbian devices. The later part highlights the most important changes we have in the Qt 4.7.4 release bundle from the Symbian perspective. Those of you who know the Qt Symbian deployment history can skip directly to Qt 4.7.4 section.
Qt deployment on Symbian devices
The first officially supported Qt release for Symbian devices was Qt 4.6.3. It was released together with Qt SDK in June 2010. Following this, applications created with this SDK could be deployed to Nokia Store (or Ovi Store as it was known then). Then this year in May 2011 Qt 4.7.3 for Symbian with Qt Quick was made available in the Qt SDK 1.1, and Qt Quick applications could be deployed to Nokia Store.
Qt was not available right away as pre-installed in any Symbian devices when Qt 4.6 was made available for Symbian. In fall 2010 the Nokia N8 was released and it was the first Symbian device with pre-installed Qt. Then in the middle of 2011 Symbian Anna was made available with the Qt 4.7 -based bundle with Qt Mobility 1.1. Now the latest Symbian Anna devices have out-of-the-box support for Qt Quick.
For older S60 3rd and 5th Edition devices Qt is an add-on component requiring initial download of Qt libraries on the first Qt application installation. A special deployment mechanism called Smart Installer is used to deploy Qt to devices such as these that do not have Qt as pre-installed or in the firmware.
When the user downloads and installs a Qt application, Smart Installer checks package dependencies and installs Qt and other support modules when needed. Modules are also upgraded to newer versions when necessary. Normally this happens when the user downloads an application from Nokia Store.
Smart Installer is the main deployment channel for the Qt release bundle to S60 3rd and 5th Edition devices. Smart Installer also updates Symbian^3 devices’ pre-installed Qt 4.6.3-based bundle (that resides on the C: drive), to the Qt 4.7.3-based bundle. Furthermore, an important reason for Smart Installer deployments is the fact that Symbian^3 devices do not have the pre-installed Qt Mobility module. Hence, before the application is installed on Symbian^3, often at least the Qt Mobility module is deployed unless it is already deployed by earlier application installations. Developers have always been advised to take into account this additional download need because it increases the application’s delivery size.
In July 2011 Qt Quick Components 1.0 for Symbian was released with Smart Installer deployments for Symbian Anna devices.
Today’s Qt 4.7.4 bundle is the next big Qt release with many improvements for Symbian OS. This release is shipping already in the new Symbian Belle devices, like Nokia 700 and Nokia 701, as part of the device firmware. Now we are making it available also to devices with Symbian Anna (and Symbian^3) through Smart Installer deployments and we are also bringing finalized Qt SDK support.
Qt 4.7.4 release bundle for Symbian
The Qt 4.7.4 release bundle contains
It is supported in Symbian Anna (and Symbian^3) devices onwards. Most benefits mentioned in the Qt 4.7.4 release post by Jarmo are valid for Symbian, too. In general, this release has a huge amount of stability, performance and functionality improvements for Symbian. Many of the changes also make Qt better integrated to the Symbian operating system services.
In Qt graphics system for Symbian there are big changes in how graphics resources are managed in the default OpenVG graphics system used by Qt applications. We are also introducing the opt-in OpenGL ES based graphics system to wider use with better resource management as part of Qt 4.7.4. Both of these changes improve the use of scarce GPU memory and have better graphics memory releasing schemes when applications are moved to background. We have also better integration to Symbian OS transition animations. This means that when stopping and starting Qt applications there are smoother animations that are also better aligned with the same effects presented with Symbian OS Avkon applications.
Regarding the user interface, Qt Quick Components 1.1 and Qt Quick 1.1 modules provide the biggest improvements. There’s another post by Sami detailing changes available for components. For both we have also changes explained in the Qt Quick – What’s New and Qt Quick Components – What’s New documents. The use of Qt Quick Components allows application to achieve the new Symbian UI Design Guidelines. This means that Qt applications match and are consistent with the native applications on Symbian Belle devices.
In the “core” of Qt there are plenty of minor improvements and bug fixes to UI features. Often these fixes will improve all style of Qt applications regardless of the UI technology: QWidgets and graphics view based and QML UIs too. For example, on physical keyboard devices Nokia E7 and Nokia E6, text editing key accelerometers (ctrl+c/ctrl+v) work now out-of-the-box in editors without any need for an application to implement such copy/paste functionality.
Split-view keyboard on the bottom, editor using it on the top.
Perhaps the most welcomed UI feature of Qt 4.7.4 is the integration of Qt text input system to the Symbian partial screen text input component also known as split-view input. The split-view input is a new virtual keyboard in Symbian Anna where it is used in many native Avkon applications. It allows application content to be visible above the split-view keyboard. This is in contrast to the earlier full screen input that didn’t allow application content to be visible during text input. In Qt 4.7.4, the split-view is now integrated into all editor widgets in graphics-viewbased UIs including Qt Quick/QML editors. By default this feature is disabled because the split-view input needs application awareness due to layout change in the visual area of the application when the new keyboard is opened. It is enabled by setting the application attribute
Qt::AA_S60DisablePartialScreenInputMode to false. Qt Quick Components 1.1 uses this split-view feature too and it will be available when application starts to use the new
import com.nokia.symbian 1.1of the components. The import 1.0 still uses the full screen input. So in other words, Qt Quick 1.1 or plain-Qt applications turn it on with the application attribute but Qt Quick Components 1.1 using applications with the new 1.1 components import.
Symbian Belle UI: new iconic softkeys on the bottom, status bar on the top and status panel half open on screen.
Qt 4.7.4 also enables the new Symbian Belle features like the new iconic toolbar support: QActions can have SVG images and the new Symbian OS toolbar icon set can be accessed via QStyle API. As mentioned, Qt Quick Components is provided as an easy way to align the application UI to the new UI style. For example, using StatusBar from the Qt Quick Components allows an application to automatically provide access to the new Belle UI’s status panel feature that is opened by doing touch swipe down gesture on top of the status bar.
Qt Quick with Qt Quick Components is the recommended UI solution for Symbian applications. In fact we have documented that old QtGui module widgets on Symbian are deprecated and developers should use Qt Quick Components instead in new application projects. In that document we also have a list of widgets that should never be used from QtGui module on Symbian because they have never been supported or worked properly.
The last new UI feature worth mentioning is the TV-out support in Qt 4.7.4. When using TV-out, this feature makes possible to use TV display as an independent screen rather than just clone of the device screen. Applications can provide different control view on device screen and a presentation mode with larger resolution on the TV-out display. It works with devices with either analog 3.5mm composite video output or HDMI output.
By default, in Symbian devices the content shown in TV-out is a clone of the device screen. From now on, however, parenting a widget to
QDesktopWidget::screen(1) and calling
show() will turn off cloning and have different content shown instead. The screenCount member function and the screenCountChanged signal can be used
to detect the availability of the secondary display, just like on other platforms.
The new Nokia 603 is NFC enabled
Together with Qt 4.7.4, the Qt Mobility module is updated to version 1.2. The main new features are the two new local communications APIs: NFC (Near Field Communication) and Bluetooth. Bluetooth is a basic feature in all Symbian devices but NFC is a new hardware feature only in latest device models. The NFC hardware support is however becoming rapidly available. All new Symbian devices – Nokia 603, Nokia 700 and Nokia 701 – are NFC-enabled. From the earlier Symbian devices only Nokia C7 is NFC enabled. To find out more on the NFC development check the Introduction to NFC guide from Nokia Developer and the general NFC page.
There are other minor improvements and lots of bug fixes in Qt Mobility as well. For example, QAudioOutput class has now a proper support for pausing in Symbian. Earlier, calling suspend via API was emulated by using stop underneath the implementation that caused delays on doing resume later. Video outputs are rendered now with black when nothing is rendered. This improves UIs when QML video and camera elements are used.
The QML ShaderEffectItem is also available in this bundle. Kim showcased it very nicely in his earlier post.
There has been lot of effort made in Qt 4.7.4 to improve the memory management. Applications using Qt 4.7.4 libraries normally consume less RAM than using earlier Qt libraries. Symbian platform uses predefined sizes for stacks and heaps. However, application developers need to be very careful on memory usage. If an application exceeds stack or heap limits, it may crash or fail to complete its task. Crashes that seem to have no reason can often be traced back to insufficient stack and/or heap sizes. Application developers should use reasonable values for maximum heap size. Either too small or too big value could cause the application’s failure. Other than RAM, there is very limited video/graphic memory of 32 MB especially in Symbian^3 and Symbian Anna devices (the new devices that shipped with Symbian Belle have four times larger GPU memory of 128 MB). It’s important that applications using large graphics resources follow graphic memory handling guidelines.
See also our Qt 4.7.4 release application compatibility notes from Qt Developer Network.
The rest of this post talks of non-feature aspects of this release: what kind of build targets we have in Qt SDK and how the Symbian support is aligned with Qt found in Nokia N9. But first, I’ll explain one internal change that is good to know.