qtzibit: tiny programs make amazing web mashups using Simile-Widgets Exhibit, QtWebKit and QML

INTRODUCTION

Qtzibit is a demonstration application integrating Exhibit, QtWebKit and QML technolgies to build powerful custom web-mashups that run locally on the mobile platform as applications, rather than a traditional client/server architecture implemented via browser/website. Qtzibit is based on Simile-Widgets Exhibit 2.0 project: http://www.simile-widgets.org/exhibit/ . Wikipedia describes Exhibit as a "lightweight, structured-data publishing framework that allows developers to create web pages with support for sorting, filtering and rich visualizations. Oriented towards semantic web-type problems..."

AN OPEN SOURCE PLATFORM

Qtzibit is an open-source project ( http://code.google.com/p/qtzibit/ ) that brings the power of Exhibit from the client/server world to a standalone application that runs on mobile devices or any Linux platform supporting QtSDK 1.1. Providing a number of interesting demonstration applications, the Qtzibit application is a captivating way of browsing and mashing-up structured JSON data.

The purpose of qtzibit is to demonstrate the power of this open-source "semantic web" technology for building custom Qt applications. As such, Qtzibit allows substantial mashup-applications to be written with surprisingly little code. The example apps in the qtzibit application are available in source form to allow inspection, modification and customization. The code is open-source:

svn checkout http://qtzibit.googlecode.com/svn/trunk qtzibit ; qtcreator qtzibit/qtzibit.pro

EXAMPLE APPS AND THEIR SOURCECODE

Some examples implemented with qtzibit, with links to their associated source directories. All but the last two examples use the Exhibit framework:

Toplevel
YouTube named feeds
Browse podcasts
Bugxhibit timeline
Bugxhibit tiles
Geospatial timeline map
Geospatial timeline
US presidents
Century of RedSox vs Yankees Timeplot
Googlemaps flying to antartica
Google maps streetview

INTEGRATION OF WEB AND QML

The combination of QML, and Exhibit, communicating via JSON structures to their respective JavaScript engines can end up being a best-of-both worlds solution. Qtzibit provides a complementary data rendering mechanism to QML, using a rich, abstract DOM-based model to render and layout data. You get similar high-level data abstractions of QML's datamodels that render using web-layouts and stylesheets rather than QML delegates...

The ease with which web-based apps can be integrated with QML-based QtMobility JSON/javascript data, as well as platform database and security information, allows qtzibit to be used as a multiplatform Web-OS-like environment for application creation and distribution.

USAGE DETAILS

Usage: /opt/qtzibit/bin/qtzibit [[--raster] --url FULLPATHTOFILE.HTML ]

Launched from the installed /usr/share/applications/qtzibit.desktop file, '/opt/qtzibit/bin/qtzibit' with no parameters is used. However you may want to make your own copy of the desktop file and customize things:

cp /usr/share/applications/qtzibit.desktop ~/.local/share/applications ; $EDITOR ~/.local/share/applications/qtzibit.desktop

Add "--raster" parameter of you don't have a decent/working GL implementation in which case Qt will use the relatively efficient but generic backend. Of course, if your platform is MeeGo compliant, you shoudn't need this. Some other Linux platforms might.

The "--url" parameter is for debugging or passing FULLPATHTOFILE.HTML: your own HTML files under development. It also allows you to launch directly to a given application's path under /opt/qtzibit/slib/webapp/examples/ . For example having a file ~/.local/share/applications/bugxhibit.desktop with an "Exec=/opt/qtzibit/bin/qtzibit --url /opt/qtzibit/slib/webapp/examples/Bugxhibit/bugxhibit.html" would launch the bugxhibit example directly.

On MeeGo Tablet Ux, you may want to make a local qtzibit.desktop copy and comment-out the existing "Exec" line
and add "Exec=invoker --single-instance --type=d /opt/qmltube/bin/qtzibit" instead. This will allow only one instance of the app to run, and/or prevent multiple copies running and being inaccessible once app-switcher is used.

KNOWN ISSUES IN THIS FIRST PUBLIC RELEASE

See http://code.google.com/p/qtzibit/issues/list for an up-to-date buglist.

( http://code.google.com/p/qtzibit/issues/detail?id=1 ) If one of the mashups has an external link, and you click it, there's no "touchscreen" way of going back. If you have a mouse plugged in to your tablet, or have a netbook with a touchpad, you can right-click and go 'Back'. (TODO: clicked links launch platform browser).

( http://code.google.com/p/qtzibit/issues/detail?id=2 ): On tablet, virtual keyboard pops up in the timeline. If there's another view, select it, and go to the app-chooser and back to qtzibit again. Should pop down the keyboard. (TODO: fix this by forcing VKB to pop down when done). And the reason for this is that there are keybindings (that need to be disabled for tablet) in the timeline. Of course, the keybindings -- arrow keys, page up/down, home/end -- are very useful for navigating in the timeline. If only the VKB had just the bound navigation keys selected, much like a numeric entry field only has numbers....

( http://code.google.com/p/qtzibit/issues/detail?id=3 ): Weird thing happens (Qt bug?) where, when "Flickable" toggle is set, if you slide around the timeline using the touchscreen, the entire framing of the timeline slides over revealing blank space. Turn off "flickable" mode and this won't happen.

( http://code.google.com/p/qtzibit/issues/detail?id=4 ): If "flickable" mode is off, touching and swiping in the timeline, or on a map, can sometimes lead to it being "selected" -- you'll note the color inverting. Touch/click somewhere else on the screen to unselect this undesired selection. (TODO: fix this).