Necessitas/TODO
Welcome to the Necessitas TODO wiki page
Qt framework
Must be implemented before first beta release
Android assets support
- Android assets are readonly resources and are a must for any android applications, the implementation will be simple, the problem is how to handle it in Qt, my suggestion is to use the existing Qt resources mechanism: let's say that the application wants to open a file (":/path/my_file"), Qt will search for that file in the application resources, and if is not found, then it will also search it in android assets, more about android assets can be found here: http://developer.android.com/reference/android/content/res/AssetManager.html.
OpenGL support
- OpenGL support, this, IMHO, is the hardest feature to implement. Before we go further, I'd like to make something clear: I'm not an OpenGL expert, actually I'm an OpenGL beginner! Let me start with an introduction about Android OpenGL limitations:
- you can't create more than one OpenGL context (it seems this limitation is not resent any more on latest platforms). - you can't create more than one Window surface, actually you can create more than one, but they are useless because you can't control their Z order. - you can create additionally Pixel buffer surfaces.
- The problem is that Qt needs an OpenGL surface for every Top Level Widget (TLW), so, because on Android you can't create more than one Window surfaces, I've see two possible solutions:
- Using a pixmap or a pbuffer surface, for every TLW, make them textures and then compose them to a windows surface.
pro: - the user can do anything with that surface. con: - the speed will be slow.
- Using frame buffer objects, this is our favorite approach, the problem is that your OpenGL implementation needs to be changed (a lot).
pro: - probably is the fastest way to do it. con: - only platforms >=5 are supports OpenGL ES 2, android-4 platform has FBO support only via OpenGL extensions.
- the users are limited.
Android style plugin
- We must to implement an android plugin, Qt apps must look the same as native Android apps.
- We need to find a way to use android menus or to paint them from Qt.
- using the existing Android menu system is the easiest but it has some limitations (e.g you can add a submenu to any menu (except a submenu), only menus can have icons, etc., check http://developer.android.com/guide/topics/ui/menus.html ) - using our own menu implementation, it will be a little difficult to simulate Android's menus, but it will be very flexible.
- Aurelien Gateau contact me about this topic and he suggest me to use his work to implement this feature, check http://agateau.wordpress.com/2010/05/10/getting-menus-out-of-application-windows/ and http://gitorious.org/~agateau/qt/agateau-qt.
QDesktopServices
- QDesktopServices implementation (at least for openUrl) IMHO it should be handled by platform plugin .
QSystemTrayIcon
- QSystemTrayIcon must be implemented (using Android's notifications system, http://developer.android.com/guide/topics/ui/notifiers/notifications.html).Also this one should be implemented outside qt tree (platform plugin).
Find a way to compile for all android platforms at once
Can be safely implemented after first beta release
Qt dialogs
- Android comes with a few dialogs (http://developer.android.com/reference/android/app/Dialog.html) and I don't think Qt can use Android's native dialogs, so, if they are implemented in Qt it should not be a problem.
QtCreator
Find a way to compile for all android platforms at once, and handle the results corectly
Prepare the package for android market publishing
Documentation
QtMobility
QtWebKit
Speed and memory usage
- QtWebKit 2.1.x is still 2x times slower than Google's WebKit, also the memory consumption is still insanely high (to run SunSpider benchmark, needs >200Mb)