Check for service availability

This commit is contained in:
Cedric Bellegarde 2013-03-22 11:58:55 +01:00
parent fa62c270e6
commit 8165b83a27

View file

@ -16,19 +16,31 @@
#ifdef USE_FDO_NOTIFICATIONS #ifdef USE_FDO_NOTIFICATIONS
#include <QDBusConnection> #include <QDBusConnection>
#include <QDBusInterface>
#include <QDBusMessage> #include <QDBusMessage>
#include <QDBusPendingCall> #include <QDBusPendingCall>
#define NOTIFICATIONS_SERVICE "org.freedesktop.Notifications"
#define NOTIFICATIONS_PATH "/org/freedesktop/Notifications"
#define NOTIFICATIONS_IFACE "org.freedesktop.Notifications"
#endif #endif
void Systray::showMessage(const QString & title, const QString & message, MessageIcon icon, int millisecondsTimeoutHint) void Systray::showMessage(const QString & title, const QString & message, MessageIcon icon, int millisecondsTimeoutHint)
{ {
bool useFdoNotifications = false;
#ifdef USE_FDO_NOTIFICATIONS #ifdef USE_FDO_NOTIFICATIONS
QList<QVariant> args = QList<QVariant>() << "owncloud" << quint32(0) << "owncloud" if(QDBusInterface(NOTIFICATIONS_SERVICE, NOTIFICATIONS_PATH, NOTIFICATIONS_IFACE).isValid()) {
<< title << message << QStringList () << QVariantMap() << qint32(-1); useFdoNotifications = true;
QDBusMessage method = QDBusMessage::createMethodCall("org.freedesktop.Notifications","/org/freedesktop/Notifications", "", "Notify"); }
method.setArguments(args);
QDBusConnection::sessionBus().asyncCall(method);
#else
QSystemTrayIcon::showMessage(title, message, icon, millisecondsTimeoutHint);
#endif #endif
if (useFdoNotifications) {
QList<QVariant> args = QList<QVariant>() << "owncloud" << quint32(0) << "owncloud"
<< title << message << QStringList () << QVariantMap() << qint32(-1);
QDBusMessage method = QDBusMessage::createMethodCall(NOTIFICATIONS_SERVICE, NOTIFICATIONS_PATH, NOTIFICATIONS_IFACE, "Notify");
method.setArguments(args);
QDBusConnection::sessionBus().asyncCall(method);
} else {
QSystemTrayIcon::showMessage(title, message, icon, millisecondsTimeoutHint);
}
} }