Switcher, Symbian task manager
Switcher is a task manager for Symbian S^3 that showed running processes as tiles. The 3D part of the app ran on my OpenGL ES engine. The app went into the Ovi Store in 2012, and Symbian died in 2013. Everything below is history.
Where the project comes from
The idea of a task manager existed months before the S^3 version. The first attempt was based on Python and PyS60. That attempt became too time intensive next to my university studies, and PyS60 does not run well on S^3. The S^3 version used the C++ engine instead. A video of the older attempt existed, but unfortunately it got lost in time.
In April 2012 I started the new project on top of the 2012 engine.
Process control
Task reading and task closing worked in April 2012. Killing a process needs a certificate with the PowerMgmt capability. Without that certificate the thread panics and the app exits. The planned Task Settings window would have offered these actions:
- send system events like
EApaSystemEventShutdown - kill the thread of a task
- read CPU time, priority and flags
Two problems blocked me. First, my knowledge of Symbian C++ was not enough to capture the menu key long press event inside Qt. Second, the 3D window refused to work after the Qt 2D content was opened. The menu key was also unusable outside the application, so I used the proximity sensor to bring the app to the foreground.
Releases
Alpha v0.11, unsigned, April 2012
Implemented: the GUI, thread priority setup, process priority setup, killing tasks. The 3D window was not part of the alpha.

Early 3D gui to list all running tasks:

Alpha v0.20, unsigned, June 2012
New features:
- main window with CPU usage in percent for every task
- long press menu in the main window
- bigger buttons
- colored buttons and attribute values in the task setup window
- system info window with drive stats and a CPU usage graph

The tiles update themselves, and the proximity sensor brings the task manager back to the foreground. What remained was scrolling the tiles, making them touchable, and connecting the 3D app to the working 2D app. I also asked at this point whether the app should be free or paid, and I added a donation option.
Version 1.0, September 2012
Version 1.0 went to the store. The submission failed first, because the permission to read the C:\ drive was missing, where the settings file and the logs were stored. That caused a fatal chain reaction in the graph drawing.
Switcher passed the Ovi Store quality assurance on 2012-09-19, and it became available on 2012-09-25. The store listing existed at http://store.ovi.com/content/313719. The 100th purchase happened in November 2012.


Bugs on the platform
Out of memory in the Qt UI code
This bug deserved its own post. See the QPixmap bug for the broken code, the working code and the reasoning. Short version: scaling a QPixmap leaks memory on Symbian, and converting to QImage before the scale fixes it.
Custom fonts in modded ROMs
One bug appeared on devices with custom fonts. It looked like modded ROM fonts were the cause, yet the app worked once on a device with modded fonts. The error was QSymbianLeaveExceptionKrerralreadyExists, and it appeared in all applications. Other people had the same problem, and the Qt developers at Digia had an exception in the basic Symbian implementation without knowing the reason for the failure.
The 3D UI rewrite
The UI of the first release was bad. The new UI was rendered in OpenGL ES 2.0 without any Qt element. A preview animation showed the idea in December 2012, see the UI preview video.
The design work in March 2013 started on paper, then it became a digital layout with metrics. Red areas were touch areas and buttons. Green areas were dynamic information rectangles. A yellow area was a simple overlay.


Almost every UI element used one single image as texture atlas. That choice lets the user modify the whole look by replacing one file.

In the code the base classes came first, and the higher level classes like buttons, lists and switches came from them. Elements were detected by touch gestures in 3D space. The engine emulated OpenGL ES 2.0 on my desktop machine, so everything on the screen looked 100 percent identical to the phone.


The engine project got its own repository, and the phone got started for the first time in May 2013. The app needed a few seconds at the start, and after that it ran like on the desktop machine. The demo showed a draggable green formation that springs back on release, and the exit button already worked. The demo is still downloadable: switcher.zip.
Source code and the end
I published the source of Switcher v1.0 in October 2013.
- Switcher source: github.com/AJ92/Switcher
Nokia's Symbian OS died, and Switcher with it. The old Symbian downloads with the .sis files are gone.