How to use standard Maemo 5 notifications in Qt applications
Article Metadata
This article shows how to integrate with the Maemo 5 libnotify library, which provides a centralised and non-intrusive mechanism for supplying user notifications (desktop notifications are sent to a notification daemon, as defined in the Desktop Notifications spec).
The libnotify API can be found here: libnotify API or here: Maemo 5 libnotify API
libnotify is glib-based library, but you still can use it from Qt as it integrates glib event loop.
First step you need to add libnotify to your project. This is done by using pkg-config with qmake. Add these lines to your .pro file:
CONFIG += link_pkgconfig
PKGCONFIG += libnotify
The content of main.cpp file with minimal sample code:
#include <libnotify/notify.h>
#include <QApplication>
#include <QMainWindow>
#include <QDebug>
int
main (int argc,
char **argv)
{
const char name[] = "Qt sample notification app";
NotifyNotification *notification;
QApplication app(argc, argv);
QMainWindow win;
/* Init libnotify library */
notify_init(name);
win.show();
/* Create notification */
notification = notify_notification_new(name,
"Just want you to know...", NULL, NULL);
if (notification) {
/* Set timeout */
notify_notification_set_timeout(notification, 3000);
/* Schedule notification for showing */
if (!notify_notification_show(notification, NULL))
qDebug("Failed to send notification");
/* Clean up the memory */
g_object_unref(notification);
} else
qDebug("Failed to create notification");
return app.exec();
}
Screenshot:
Alternatively you can use libnotifymm C++ bindings to achieve the same goal:
CONFIG += link_pkgconfig
PKGCONFIG += libnotifymm-1.0 gtkmm-2.4
The content of main.cpp file with minimal sample code:
#include <libnotifymm/init.h>
#include <libnotifymm/notification.h>
#include <QApplication>
#include <QMainWindow>
#include <QDebug>
int
main (int argc,
char **argv)
{
const char name[] = "Qt sample notification app";
const char body[] = "Just want you to know...";
QApplication app(argc, argv);
QMainWindow win;
Notify::init(name);
Notify::Notification notification(name, body);
win.show();
notification.set_timeout(3000);
std::auto_ptr<Glib::Error> err(0);
if (!notification.show(err))
qDebug("Failed to send notification");
return app.exec();
}



Marwa Shams - error with #include <libnotify/notify.h>
I had an error when I add #include <libnotify/notify.h>.Marwa Shams 17:09, 5 August 2011 (EEST)
error: libnotify/notify.h: No such file or directory