Qt How-To: Listen to Orientation Changes in N900

Couple days ago I posted a video example of the MVC-model running on N900. Someone asked me that how did I do that thing and I believe that the question was about how to react on orientation changes in Qt application on N900. If you are not familiar with Qt D-Bus Module it’s worth to read the documentation from here first.

The orientation changes in N900 can be listened through a dbus interface. Doing that is pretty straight forward and it requires only couple lines of code:

QDBusConnection systemBus = QDBusConnection::systemBus();
systemBus.connect(“com.nokia.mce”,
“/com/nokia/mce/signal”,
“com.nokia.mce.signal”,
“sig_device_orientation_ind”,
&scene, SLOT(orientationChanged(QString)));
    MyReceiverClass * receiver = new MyReceiverClass(this);
    QDBusConnection systemBus = QDBusConnection::systemBus();
    systemBus.connect("com.nokia.mce",
                      "/com/nokia/mce/signal",
                      "com.nokia.mce.signal",
                      "sig_device_orientation_ind",
                      receiver, SLOT(orientationChanged(QString)));

In the code snipplet above I have a basic QObject based class “MyReceiverClass” which have a slot called “orientationChanged(QString)”. This slot takes a QString as an argument. When a signal called “sig_device_orientation_ind” has been send via D-Bus, the receiver’s slot will be called automatically and it can have one of the  ”landscape” or “portrait” strings as a literal value. The rest of is up to the developer to decide what to do in the slot.

That’s it. Simple, isn’t it?

Tags: , , , ,

Leave a Reply

You must be logged in to post a comment.