Random tidbits of information about projects I'm hacking on...
Contents |
During the MeeGo Conference I gave a presentation on multi-point-touch support on MeeGo (overview and video slides). As mentioned during that presentation, to add multi-point-touch to Qt applications running on top of MeeGo 1.1 requires a few changes.
The components that need to be changed are:
New components:
To get the above, you can add my home project:
cd /etc/zypp/repos.d sudo wget http://download.meego.com/live/home:/jketreno/Trunk/home:jketreno.repo sudo sed -i -e 's,^gpg,#gpg,g' home:jketreno.repo zypper refresh
Next, force a re-installation of the packages provided from my home project:
zypper install -f --from=home_jketreno kernel_netbook libqt* qt-qmlviewer mtdev \
xf86-input-mtev multipointtouchplugin
It will prompt you to switch to the versions of the various packages provided from the above repository. Accept the changes, and reboot.
The mechanism to talk to the xf86-input-mtev driver is not merged into the Qt package itself. Until that occurs, applications interested in working with touch events need to add the following to the beginning of their application, within the main() function:
foreach (QString path, QCoreApplication::libraryPaths()) {
QPluginLoader loader(path + "/libmultipointtouchplugin.so");
loader.load();
if (loader.isLoaded()) {
loader.instance();
break;
}
}
At the beginning of the file, you also need to include QPluginLoader:
#include <QPluginLoader>
And that's it.
The version of qmlviewer built and installed with the Qt package in my home project has the above code enabled, providing Touch events into qml applications run within qmlviewer. If you are loading your QML application using your own native loader, you will need to follow the steps above for enabling a native applications.
As Frederik Gladhorn indicated during [his talk http://conference2010.meego.com/session/gestures-qt] at the MeeGo Conference in Dublin, the folks over at Qt have been working on an improved QML GestureArea component.
You can pull and play with what they're cooking as follows:
git clone git://gitorious.org/qt-labs/qml-gesturearea.git git clone git://gitorious.org/qt-labs/qml-gestures-examples.git
To build qml-gesturearea, you may need to patch it (I did):
cd qml-gesturearea sed -i -e 's,q->timeout(),700,g' qdeclarativegesturerecognizers.cpp qmake make && sudo make install
Assuming you are using the qmlviewer provided with qt-qmlviewer in my home project, you should then be able to run the following:
qmlviewer ../qml-gestures-examples/dashboard/MainWidget.qml
and interact with the example.