/***************************************************************************
- * Copyright (C) 2005-2010 by the Quassel Project *
+ * Copyright (C) 2005-2012 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This contains code from KStatusNotifierItem, part of the KDE libs *
* Copyright (C) 2009 Marco Martin <notmart@gmail.com> *
* *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) version 3. *
+ * This file is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Library General Public License (LGPL) *
+ * as published by the Free Software Foundation; either version 2 of the *
+ * License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#ifdef HAVE_DBUS
+#include "notificationsclient.h"
#include "systemtray.h"
#include "statusnotifierwatcher.h"
explicit StatusNotifierItem(QWidget *parent);
virtual ~StatusNotifierItem();
+ virtual bool isSystemTrayAvailable() const;
+ virtual bool isVisible() const;
+
public slots:
virtual void setState(State state);
+ virtual void setVisible(bool visible);
+ virtual void showMessage(const QString &title, const QString &message, MessageIcon icon = Information, int msTimeout = 10000, uint notificationId = 0);
+ virtual void closeMessage(uint notificationId);
protected:
virtual void init();
QString iconName() const;
QString attentionIconName() const;
QString toolTipIconName() const;
+ QString iconThemePath() const;
+ QString menuObjectPath() const;
virtual bool eventFilter(QObject *watched, QEvent *event);
private slots:
void activated(const QPoint &pos);
void serviceChange(const QString& name, const QString& oldOwner, const QString& newOwner);
+ void checkForRegisteredHosts();
+
+ void notificationClosed(uint id, uint reason);
+ void notificationInvoked(uint id, const QString &action);
private:
void registerToDaemon();
static const int _protocolVersion;
+ static const QString _statusNotifierWatcherServiceName;
StatusNotifierItemDBus *_statusNotifierItemDBus;
org::kde::StatusNotifierWatcher *_statusNotifierWatcher;
- //org::freedesktop::Notifications *_notificationsClient;
+ org::freedesktop::Notifications *_notificationsClient;
+ bool _notificationsClientSupportsMarkup;
+ bool _notificationsClientSupportsActions;
+ quint32 _lastNotificationsDBusId;
+ QHash<uint, uint> _notificationsIdMap; ///< Maps our own notification ID to the D-Bus one
+
+ QString _iconThemePath;
+ QString _menuObjectPath;
friend class StatusNotifierItemDBus;
};