RazorNotification => LxQt::Notification
authorAlexander Sokolov <sokoloff.a@gmail.com>
Sun, 6 Oct 2013 08:27:02 +0000 (12:27 +0400)
committerAlexander Sokolov <sokoloff.a@gmail.com>
Sun, 6 Oct 2013 08:27:02 +0000 (12:27 +0400)
CMakeLists.txt
lxqtnotification.cpp [new file with mode: 0644]
lxqtnotification.h [new file with mode: 0644]
lxqtnotification_p.h [new file with mode: 0644]
lxqtpower/lxqtpowerproviders.cpp
razornotification.cpp [deleted file]
razornotification.h [deleted file]
razornotification_p.h [deleted file]

index a5452a8..f49bd90 100644 (file)
@@ -23,7 +23,7 @@ set(PUB_HDRS
     configdialog/pageselectwidget.h
 
     lxqtpower/lxqtpower.h
-    razornotification.h
+    lxqtnotification.h
     lxqtautostartentry.h
     translatorsinfo/translatorsinfo.h
     lxqtgridlayout.h
@@ -57,7 +57,7 @@ set(SRCS
 
     lxqtpower/lxqtpower.cpp
     lxqtpower/lxqtpowerproviders.cpp
-    razornotification.cpp
+    lxqtnotification.cpp
     lxqtautostartentry.cpp
     translatorsinfo/translatorsinfo.cpp
     lxqtgridlayout.cpp
@@ -76,8 +76,8 @@ set(MOCS
     configdialog/configdialog.h
     configdialog/pageselectwidget.h
 
-    razornotification.h
-    razornotification_p.h
+    lxqtnotification.h
+    lxqtnotification_p.h
     lxqtpower/lxqtpower.h
     lxqtpower/lxqtpowerproviders.h
     lxqtgridlayout.h
diff --git a/lxqtnotification.cpp b/lxqtnotification.cpp
new file mode 100644 (file)
index 0000000..5b721a3
--- /dev/null
@@ -0,0 +1,210 @@
+/* BEGIN_COMMON_COPYRIGHT_HEADER
+ * (c)LGPL2+
+ *
+ * Razor - a lightweight, Qt based, desktop toolset
+ * http://razor-qt.org
+ *
+ * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * END_COMMON_COPYRIGHT_HEADER */
+
+#include "lxqtnotification.h"
+#include "lxqtnotification_p.h"
+#include <QtGui/QMessageBox>
+#include <QDebug>
+
+using namespace LxQt;
+
+Notification::Notification(const QString& summary, QObject* parent) :
+    QObject(parent),
+    d_ptr(new NotificationPrivate(summary, this))
+{
+}
+
+Notification::~Notification()
+{
+    Q_D(Notification);
+    delete d;
+}
+
+void Notification::update()
+{
+    Q_D(Notification);
+    d->update();
+}
+
+void Notification::close()
+{
+    Q_D(Notification);
+    d->close();
+}
+
+void Notification::setSummary(const QString& summary)
+{
+    Q_D(Notification);
+    d->mSummary = summary;
+}
+
+void Notification::setBody(const QString& body)
+{
+    Q_D(Notification);
+    d->mBody = body;
+}
+
+void Notification::setIcon(const QString& iconName)
+{
+    Q_D(Notification);
+    d->mIconName = iconName;
+}
+
+void Notification::setActions(const QStringList& actions, int defaultAction)
+{
+    Q_D(Notification);
+    d->setActions(actions, defaultAction);
+}
+
+void Notification::setTimeout(int timeout)
+{
+    Q_D(Notification);
+    d->mTimeout = timeout;
+}
+
+void Notification::setHint(const QString& hintName, const QVariant& value)
+{
+    Q_D(Notification);
+    d->mHints.insert(hintName, value);
+}
+
+void Notification::setUrgencyHint(Urgency urgency)
+{
+    Q_D(Notification);
+    d->mHints.insert("urgency", qvariant_cast<uchar>(urgency));
+}
+
+void Notification::clearHints()
+{
+    Q_D(Notification);
+    d->mHints.clear();
+}
+
+QStringList Notification::getCapabilities()
+{
+    Q_D(Notification);
+    return d->mInterface->GetCapabilities().value();
+}
+
+const Notification::ServerInfo Notification::serverInfo()
+{
+    Q_D(Notification);
+    return d->serverInfo();
+}
+
+void Notification::notify(const QString& summary, const QString& body, const QString& iconName)
+{
+    Notification notification(summary);
+    notification.setBody(body);
+    notification.setIcon(iconName);
+    notification.update();
+}
+
+NotificationPrivate::NotificationPrivate(const QString& summary, Notification* parent) :
+    mId(0),
+    mSummary(summary),
+    mTimeout(-1),
+    q_ptr(parent)
+{
+    mInterface = new OrgFreedesktopNotificationsInterface("org.freedesktop.Notifications",
+                                                          "/org/freedesktop/Notifications",
+                                                          QDBusConnection::sessionBus(), this);
+    connect(mInterface, SIGNAL(NotificationClosed(uint, uint)), this, SLOT(notificationClosed(uint,uint)));
+    connect(mInterface, SIGNAL(ActionInvoked(uint,QString)), this, SLOT(handleAction(uint,QString)));
+}
+
+NotificationPrivate::~NotificationPrivate()
+{
+}
+
+void NotificationPrivate::update()
+{
+    QDBusPendingReply<uint> reply = mInterface->Notify(qAppName(), mId, mIconName, mSummary, mBody, mActions, mHints, mTimeout);
+    reply.waitForFinished();
+    if (!reply.isError())
+    {
+        mId = reply.value();
+    }
+    else
+    {
+        if (mHints.contains("urgency") && mHints.value("urgency").toInt() != Notification::UrgencyLow)
+            QMessageBox::information(0, tr("Notifications Fallback"), mSummary + " \n\n " + mBody);
+    }
+}
+
+
+void NotificationPrivate::setActions(QStringList actions, int defaultAction)
+{
+    mActions.clear();
+    mDefaultAction = defaultAction;
+    for (int ix = 0; ix < actions.size(); ix++)
+    {
+        if (ix == defaultAction)
+            mActions.append("default");
+        else
+            mActions.append(QString::number(ix));
+        mActions.append(actions[ix]);
+    }
+}
+
+const Notification::ServerInfo NotificationPrivate::serverInfo()
+{
+    Notification::ServerInfo info;
+    info.name = mInterface->GetServerInformation(info.vendor, info.version, info.specVersion);
+    return info;
+}
+
+void NotificationPrivate::handleAction(uint id, QString key)
+{
+    if (id != mId)
+        return;
+
+    Q_Q(Notification);
+    qDebug() << "action invoked:" << key;
+    bool ok = true;
+    int keyId;
+    if (key == "default")
+        keyId = mDefaultAction;
+    else
+        keyId = key.toInt(&ok);
+
+    if (ok && key >= 0)
+        emit q->actionActivated(keyId);
+}
+
+void NotificationPrivate::close()
+{
+    mInterface->CloseNotification(mId);
+    mId = 0;
+}
+
+void NotificationPrivate::notificationClosed(uint id, uint reason)
+{
+    Q_Q(Notification);
+    if (id != 0 && id == mId)
+    {
+        mId = 0;
+    }
+    emit q->notificationClosed(Notification::CloseReason(reason));
+}
diff --git a/lxqtnotification.h b/lxqtnotification.h
new file mode 100644 (file)
index 0000000..1aae4af
--- /dev/null
@@ -0,0 +1,191 @@
+/* BEGIN_COMMON_COPYRIGHT_HEADER
+ * (c)LGPL2+
+ *
+ * Razor - a lightweight, Qt based, desktop toolset
+ * http://razor-qt.org
+ *
+ * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * END_COMMON_COPYRIGHT_HEADER */
+
+#ifndef LXQTNOTIFICATION_H
+#define LXQTNOTIFICATION_H
+
+#include <QtCore/QStringList>
+
+namespace LxQt
+{
+
+class NotificationPrivate;
+
+/**
+ * \brief Libnotify-style desktop notifications
+ *
+ * Spec: http://developer.gnome.org/notification-spec
+ */
+class Notification : public QObject
+{
+    Q_OBJECT
+public:
+    /*!
+     * \brief Notification is an object that represents a single notification.
+     * \param summary Summary text briefly describing the notification (required by the spec)
+     */
+    Notification(const QString& summary = QString(), QObject* parent = 0);
+    ~Notification();
+
+    enum CloseReason
+    {
+        //! The notification expired.
+        Expired     = 1,
+        //! The notification was dismissed by the user.
+        Dismissed   = 2,
+        //! The notification was closed by a call to close().
+        ForceClosed = 3,
+        //! Undefined/reserved reasons.
+        Unknown     = 4
+    };
+
+    enum Urgency
+    {
+        UrgencyLow      = 0,
+        UrgencyNormal   = 1,
+        UrgencyCritical = 2
+    };
+
+    struct ServerInfo
+    {
+        //! The product name of the server.
+        QString name;
+        //! The vendor name. For example, "razor-qt.org"
+        QString vendor;
+        //! The server's version number.
+        QString version;
+        //! The specification version the server is compliant with.
+        QString specVersion;
+    };
+
+    /*!
+     * \brief Set the summary text briefly describing the notification
+     */
+    void setSummary(const QString& summary);
+
+    /*!
+     * \brief Set the detailed body text
+     */
+    void setBody(const QString& body);
+
+    /*!
+     * \brief Set an icon to display
+     * \param iconName  Name of the icon
+     */
+    void setIcon(const QString& iconName);
+
+    /*!
+     * \brief Set action buttons for the notification. Whenever an action is
+     *        activated, the actionActivated() signal is emitted with the list
+     *        index of the activated action.
+     * \param actions       List of action button titles
+     * \param defaultAction Index of the default action which gets activated
+     *                      when the notification body is clicked
+     * \sa actionActivated()
+     */
+    void setActions(const QStringList& actions, int defaultAction = -1);
+
+    /*!
+     * \brief Set the timeout for the notification
+     * \param timeout Milliseconds for timeout, or zero to never time out.
+     */
+    void setTimeout(int timeout);
+
+    /*!
+     * \brief Set notification hint.
+     * \note  For description of Hints, see http://developer.gnome.org/notification-spec/#hints
+     * \note  For D-Bus-to-Qt mappings, see https://qt-project.org/doc/qdbustypesystem.html
+     * \param hint  Hint name
+     * \param value The hint data
+     */
+    void setHint(const QString& hint, const QVariant& value);
+
+    /*!
+     * \brief Set the "urgency" hint
+     * \param urgency
+     */
+    void setUrgencyHint(Urgency urgency);
+
+    /*!
+     * \brief Remove all hints that were set
+     * \sa setHint()
+     */
+    void clearHints();
+
+    /*!
+     * \brief returns a list of optional capabilities supported by the server.
+     * For the list, see http://developer.gnome.org/notification-spec/#commands
+     */
+    QStringList getCapabilities();
+
+    /*!
+     * \brief Returns information about the notifications server
+     */
+    const ServerInfo serverInfo();
+
+    /*!
+     * \brief Convenience function to create and display a notification for the most common
+     *        cases. For anything more complex, create a Notification object, set the
+     *        desired properties and call update(). (That's what this does internally.)
+     * \sa Notification()
+     */
+    static void notify(const QString& summary,
+                const QString& body = QString(),
+                const QString& iconName = QString()
+            );
+
+public slots:
+    /*!
+     * \brief Display the notification or update it if it's already visible
+     */
+    void update();
+
+    /*!
+     * \brief Causes a notification to be forcefully closed and removed from the user's view.
+     * It can be used, for example, in the event that what the notification pertains to
+     * is no longer relevant, or to cancel a notification with no expiration time.
+     */
+    void close();
+
+signals:
+    /*!
+     * \brief Emitted when the notification is closed
+     * \param reason How notification was closed
+     */
+    void notificationClosed(CloseReason reason);
+
+    /*!
+     * \brief Emitted when an action button is activated.
+     * \param actionNumber Index of the actions array for the activated button.
+     * \sa setActions()
+     */
+    void actionActivated(int actionNumber);
+
+private:
+    Q_DECLARE_PRIVATE(Notification)
+    NotificationPrivate* const d_ptr;
+};
+
+} // namespace LxQt
+#endif // LXQTNOTIFICATION_H
diff --git a/lxqtnotification_p.h b/lxqtnotification_p.h
new file mode 100644 (file)
index 0000000..a3860d5
--- /dev/null
@@ -0,0 +1,67 @@
+/* BEGIN_COMMON_COPYRIGHT_HEADER
+ * (c)LGPL2+
+ *
+ * Razor - a lightweight, Qt based, desktop toolset
+ * http://razor-qt.org
+ *
+ * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * END_COMMON_COPYRIGHT_HEADER */
+
+#ifndef LXQTNOTIFICATION_P_H
+#define LXQTNOTIFICATION_P_H
+
+#include "lxqtnotification.h"
+#include "notifications_interface.h"
+
+namespace LxQt
+{
+
+class NotificationPrivate : public QObject
+{
+    Q_OBJECT
+public:
+    NotificationPrivate(const QString& summary, Notification* parent);
+    ~NotificationPrivate();
+
+    void update();
+    void close();
+    void setActions(QStringList actions, int defaultAction);
+    const Notification::ServerInfo serverInfo();
+
+public slots:
+    void handleAction(uint id, QString key);
+    void notificationClosed(uint, uint);
+
+private:
+    OrgFreedesktopNotificationsInterface* mInterface;
+    uint mId;
+
+    QString mSummary;
+    QString mBody;
+    QString mIconName;
+    QStringList mActions;
+    QVariantMap mHints;
+    int mDefaultAction;
+    int mTimeout;
+
+    Notification* const q_ptr;
+    Q_DECLARE_PUBLIC(Notification)
+};
+
+} // namespace LxQt
+#endif // LXQTNOTIFICATION_P_H
index bc7620a..6067ca8 100644 (file)
@@ -31,7 +31,7 @@
 #include <QtDBus/QDBusInterface>
 #include <QtCore/QProcess>
 #include <QtCore/QDebug>
-#include "razornotification.h"
+#include "lxqtnotification.h"
 
 #define UPOWER_SERVICE          "org.freedesktop.UPower"
 #define UPOWER_PATH             "/org/freedesktop/UPower"
@@ -83,7 +83,7 @@ bool dbusCall(const QString &service,
         qWarning() << "dbusCall: QDBusInterface is invalid" << service << path << interface << method;
         if (errorCheck == PowerProvider::CheckDBUS)
         {
-            RazorNotification::notify(
+            Notification::notify(
                                     QObject::tr("Power Manager Error"),
                                     QObject::tr("QDBusInterface is invalid")+ "\n\n" + service + " " + path + " " + interface + " " + method,
                                     "razor-logo.png");
@@ -98,7 +98,7 @@ bool dbusCall(const QString &service,
         printDBusMsg(msg);
         if (errorCheck == PowerProvider::CheckDBUS)
         {
-            RazorNotification::notify(
+            Notification::notify(
                                     QObject::tr("Power Manager Error (D-BUS call)"),
                                     msg.errorName() + "\n\n" + msg.errorMessage(),
                                     "razor-logo.png");
@@ -132,7 +132,7 @@ bool dbusCallSystemd(const QString &service,
         qWarning() << "dbusCall: QDBusInterface is invalid" << service << path << interface << method;
         if (errorCheck == PowerProvider::CheckDBUS)
         {
-            RazorNotification::notify(
+            Notification::notify(
                                     QObject::tr("Power Manager Error"),
                                     QObject::tr("QDBusInterface is invalid")+ "\n\n" + service + " " + path + " " + interface + " " + method,
                                     "razor-logo.png");
@@ -147,7 +147,7 @@ bool dbusCallSystemd(const QString &service,
         printDBusMsg(msg);
         if (errorCheck == PowerProvider::CheckDBUS)
         {
-            RazorNotification::notify(
+            Notification::notify(
                                     QObject::tr("Power Manager Error (D-BUS call)"),
                                     msg.errorName() + "\n\n" + msg.errorMessage(),
                                     "razor-logo.png");
@@ -178,7 +178,7 @@ bool dbusGetProperty(const QString &service,
     if (!dbus.isValid())
     {
         qWarning() << "dbusGetProperty: QDBusInterface is invalid" << service << path << interface << property;
-//        RazorNotification::notify(QObject::tr("Razor Power Manager"),
+//        Notification::notify(QObject::tr("Razor Power Manager"),
 //                                  "razor-logo.png",
 //                                  QObject::tr("Power Manager Error"),
 //                                  QObject::tr("QDBusInterface is invalid")+ "\n\n" + service +" " + path +" " + interface +" " + property);
@@ -191,7 +191,7 @@ bool dbusGetProperty(const QString &service,
     if (!msg.errorName().isEmpty())
     {
         printDBusMsg(msg);
-//        RazorNotification::notify(QObject::tr("Razor Power Manager"),
+//        Notification::notify(QObject::tr("Razor Power Manager"),
 //                                  "razor-logo.png",
 //                                  QObject::tr("Power Manager Error (Get Property)"),
 //                                  msg.errorName() + "\n\n" + msg.errorMessage());
diff --git a/razornotification.cpp b/razornotification.cpp
deleted file mode 100644 (file)
index ef2397e..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-/* BEGIN_COMMON_COPYRIGHT_HEADER
- * (c)LGPL2+
- *
- * Razor - a lightweight, Qt based, desktop toolset
- * http://razor-qt.org
- *
- * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * END_COMMON_COPYRIGHT_HEADER */
-
-#include "razornotification.h"
-#include "razornotification_p.h"
-#include <QtGui/QMessageBox>
-#include <QDebug>
-
-RazorNotification::RazorNotification(const QString& summary, QObject* parent) :
-    QObject(parent),
-    d_ptr(new RazorNotificationPrivate(summary, this))
-{
-}
-
-RazorNotification::~RazorNotification()
-{
-    Q_D(RazorNotification);
-    delete d;
-}
-
-void RazorNotification::update()
-{
-    Q_D(RazorNotification);
-    d->update();
-}
-
-void RazorNotification::close()
-{
-    Q_D(RazorNotification);
-    d->close();
-}
-
-void RazorNotification::setSummary(const QString& summary)
-{
-    Q_D(RazorNotification);
-    d->mSummary = summary;
-}
-
-void RazorNotification::setBody(const QString& body)
-{
-    Q_D(RazorNotification);
-    d->mBody = body;
-}
-
-void RazorNotification::setIcon(const QString& iconName)
-{
-    Q_D(RazorNotification);
-    d->mIconName = iconName;
-}
-
-void RazorNotification::setActions(const QStringList& actions, int defaultAction)
-{
-    Q_D(RazorNotification);
-    d->setActions(actions, defaultAction);
-}
-
-void RazorNotification::setTimeout(int timeout)
-{
-    Q_D(RazorNotification);
-    d->mTimeout = timeout;
-}
-
-void RazorNotification::setHint(const QString& hintName, const QVariant& value)
-{
-    Q_D(RazorNotification);
-    d->mHints.insert(hintName, value);
-}
-
-void RazorNotification::setUrgencyHint(Urgency urgency)
-{
-    Q_D(RazorNotification);
-    d->mHints.insert("urgency", qvariant_cast<uchar>(urgency));
-}
-
-void RazorNotification::clearHints()
-{
-    Q_D(RazorNotification);
-    d->mHints.clear();
-}
-
-QStringList RazorNotification::getCapabilities()
-{
-    Q_D(RazorNotification);
-    return d->mInterface->GetCapabilities().value();
-}
-
-const RazorNotification::ServerInfo RazorNotification::serverInfo()
-{
-    Q_D(RazorNotification);
-    return d->serverInfo();
-}
-
-void RazorNotification::notify(const QString& summary, const QString& body, const QString& iconName)
-{
-    RazorNotification notification(summary);
-    notification.setBody(body);
-    notification.setIcon(iconName);
-    notification.update();
-}
-
-RazorNotificationPrivate::RazorNotificationPrivate(const QString& summary, RazorNotification* parent) :
-    mId(0),
-    mSummary(summary),
-    mTimeout(-1),
-    q_ptr(parent)
-{
-    mInterface = new OrgFreedesktopNotificationsInterface("org.freedesktop.Notifications",
-                                                          "/org/freedesktop/Notifications",
-                                                          QDBusConnection::sessionBus(), this);
-    connect(mInterface, SIGNAL(NotificationClosed(uint, uint)), this, SLOT(notificationClosed(uint,uint)));
-    connect(mInterface, SIGNAL(ActionInvoked(uint,QString)), this, SLOT(handleAction(uint,QString)));
-}
-
-RazorNotificationPrivate::~RazorNotificationPrivate()
-{
-}
-
-void RazorNotificationPrivate::update()
-{
-    QDBusPendingReply<uint> reply = mInterface->Notify(qAppName(), mId, mIconName, mSummary, mBody, mActions, mHints, mTimeout);
-    reply.waitForFinished();
-    if (!reply.isError())
-    {
-        mId = reply.value();
-    }
-    else
-    {
-        if (mHints.contains("urgency") && mHints.value("urgency").toInt() != RazorNotification::UrgencyLow)
-            QMessageBox::information(0, tr("Notifications Fallback"), mSummary + " \n\n " + mBody);
-    }
-}
-
-
-void RazorNotificationPrivate::setActions(QStringList actions, int defaultAction)
-{
-    mActions.clear();
-    mDefaultAction = defaultAction;
-    for (int ix = 0; ix < actions.size(); ix++)
-    {
-        if (ix == defaultAction)
-            mActions.append("default");
-        else
-            mActions.append(QString::number(ix));
-        mActions.append(actions[ix]);
-    }
-}
-
-const RazorNotification::ServerInfo RazorNotificationPrivate::serverInfo()
-{
-    RazorNotification::ServerInfo info;
-    info.name = mInterface->GetServerInformation(info.vendor, info.version, info.specVersion);
-    return info;
-}
-
-void RazorNotificationPrivate::handleAction(uint id, QString key)
-{
-    if (id != mId)
-        return;
-
-    Q_Q(RazorNotification);
-    qDebug() << "action invoked:" << key;
-    bool ok = true;
-    int keyId;
-    if (key == "default")
-        keyId = mDefaultAction;
-    else
-        keyId = key.toInt(&ok);
-
-    if (ok && key >= 0)
-        emit q->actionActivated(keyId);
-}
-
-void RazorNotificationPrivate::close()
-{
-    mInterface->CloseNotification(mId);
-    mId = 0;
-}
-
-void RazorNotificationPrivate::notificationClosed(uint id, uint reason)
-{
-    Q_Q(RazorNotification);
-    if (id != 0 && id == mId)
-    {
-        mId = 0;
-    }
-    emit q->notificationClosed(RazorNotification::CloseReason(reason));
-}
diff --git a/razornotification.h b/razornotification.h
deleted file mode 100644 (file)
index 01aa07f..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/* BEGIN_COMMON_COPYRIGHT_HEADER
- * (c)LGPL2+
- *
- * Razor - a lightweight, Qt based, desktop toolset
- * http://razor-qt.org
- *
- * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * END_COMMON_COPYRIGHT_HEADER */
-
-#ifndef RAZORNOTIFICATION_H
-#define RAZORNOTIFICATION_H
-
-#include <QtCore/QStringList>
-
-class RazorNotificationPrivate;
-
-/**
- * \brief Libnotify-style desktop notifications
- *
- * Spec: http://developer.gnome.org/notification-spec
- */
-class RazorNotification : public QObject
-{
-    Q_OBJECT
-public:
-    /*!
-     * \brief RazorNotification is an object that represents a single notification.
-     * \param summary Summary text briefly describing the notification (required by the spec)
-     */
-    RazorNotification(const QString& summary = QString(), QObject* parent = 0);
-    ~RazorNotification();
-
-    enum CloseReason
-    {
-        //! The notification expired.
-        Expired     = 1,
-        //! The notification was dismissed by the user.
-        Dismissed   = 2,
-        //! The notification was closed by a call to close().
-        ForceClosed = 3,
-        //! Undefined/reserved reasons.
-        Unknown     = 4
-    };
-
-    enum Urgency
-    {
-        UrgencyLow      = 0,
-        UrgencyNormal   = 1,
-        UrgencyCritical = 2
-    };
-
-    struct ServerInfo
-    {
-        //! The product name of the server.
-        QString name;
-        //! The vendor name. For example, "razor-qt.org"
-        QString vendor;
-        //! The server's version number.
-        QString version;
-        //! The specification version the server is compliant with.
-        QString specVersion;
-    };
-
-    /*!
-     * \brief Set the summary text briefly describing the notification
-     */
-    void setSummary(const QString& summary);
-
-    /*!
-     * \brief Set the detailed body text
-     */
-    void setBody(const QString& body);
-
-    /*!
-     * \brief Set an icon to display
-     * \param iconName  Name of the icon
-     */
-    void setIcon(const QString& iconName);
-
-    /*!
-     * \brief Set action buttons for the notification. Whenever an action is
-     *        activated, the actionActivated() signal is emitted with the list
-     *        index of the activated action.
-     * \param actions       List of action button titles
-     * \param defaultAction Index of the default action which gets activated
-     *                      when the notification body is clicked
-     * \sa actionActivated()
-     */
-    void setActions(const QStringList& actions, int defaultAction = -1);
-
-    /*!
-     * \brief Set the timeout for the notification
-     * \param timeout Milliseconds for timeout, or zero to never time out.
-     */
-    void setTimeout(int timeout);
-
-    /*!
-     * \brief Set notification hint.
-     * \note  For description of Hints, see http://developer.gnome.org/notification-spec/#hints
-     * \note  For D-Bus-to-Qt mappings, see https://qt-project.org/doc/qdbustypesystem.html
-     * \param hint  Hint name
-     * \param value The hint data
-     */
-    void setHint(const QString& hint, const QVariant& value);
-
-    /*!
-     * \brief Set the "urgency" hint
-     * \param urgency
-     */
-    void setUrgencyHint(Urgency urgency);
-
-    /*!
-     * \brief Remove all hints that were set
-     * \sa setHint()
-     */
-    void clearHints();
-
-    /*!
-     * \brief returns a list of optional capabilities supported by the server.
-     * For the list, see http://developer.gnome.org/notification-spec/#commands
-     */
-    QStringList getCapabilities();
-
-    /*!
-     * \brief Returns information about the notifications server
-     */
-    const ServerInfo serverInfo();
-
-    /*!
-     * \brief Convenience function to create and display a notification for the most common
-     *        cases. For anything more complex, create a RazorNotification object, set the
-     *        desired properties and call update(). (That's what this does internally.)
-     * \sa RazorNotification()
-     */
-    static void notify(const QString& summary,
-                const QString& body = QString(),
-                const QString& iconName = QString()
-            );
-
-public slots:
-    /*!
-     * \brief Display the notification or update it if it's already visible
-     */
-    void update();
-
-    /*!
-     * \brief Causes a notification to be forcefully closed and removed from the user's view.
-     * It can be used, for example, in the event that what the notification pertains to
-     * is no longer relevant, or to cancel a notification with no expiration time.
-     */
-    void close();
-
-signals:
-    /*!
-     * \brief Emitted when the notification is closed
-     * \param reason How notification was closed
-     */
-    void notificationClosed(CloseReason reason);
-
-    /*!
-     * \brief Emitted when an action button is activated.
-     * \param actionNumber Index of the actions array for the activated button.
-     * \sa setActions()
-     */
-    void actionActivated(int actionNumber);
-
-private:
-    Q_DECLARE_PRIVATE(RazorNotification)
-    RazorNotificationPrivate* const d_ptr;
-};
-
-#endif // RAZORNOTIFICATION_H
diff --git a/razornotification_p.h b/razornotification_p.h
deleted file mode 100644 (file)
index 28029e8..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* BEGIN_COMMON_COPYRIGHT_HEADER
- * (c)LGPL2+
- *
- * Razor - a lightweight, Qt based, desktop toolset
- * http://razor-qt.org
- *
- * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * END_COMMON_COPYRIGHT_HEADER */
-
-#ifndef RAZORNOTIFICATION_P_H
-#define RAZORNOTIFICATION_P_H
-
-#include "razornotification.h"
-#include "notifications_interface.h"
-
-class RazorNotificationPrivate : public QObject
-{
-    Q_OBJECT
-public:
-    RazorNotificationPrivate(const QString& summary, RazorNotification* parent);
-    ~RazorNotificationPrivate();
-
-    void update();
-    void close();
-    void setActions(QStringList actions, int defaultAction);
-    const RazorNotification::ServerInfo serverInfo();
-
-public slots:
-    void handleAction(uint id, QString key);
-    void notificationClosed(uint, uint);
-
-private:
-    OrgFreedesktopNotificationsInterface* mInterface;
-    uint mId;
-
-    QString mSummary;
-    QString mBody;
-    QString mIconName;
-    QStringList mActions;
-    QVariantMap mHints;
-    int mDefaultAction;
-    int mTimeout;
-
-    RazorNotification* const q_ptr;
-    Q_DECLARE_PUBLIC(RazorNotification)
-};
-
-#endif // RAZORNOTIFICATION_P_H