summaryrefslogtreecommitdiff
path: root/src/lib/xdgstatusnotifieritem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/xdgstatusnotifieritem.cpp')
-rw-r--r--src/lib/xdgstatusnotifieritem.cpp169
1 files changed, 169 insertions, 0 deletions
diff --git a/src/lib/xdgstatusnotifieritem.cpp b/src/lib/xdgstatusnotifieritem.cpp
new file mode 100644
index 0000000..1a14846
--- /dev/null
+++ b/src/lib/xdgstatusnotifieritem.cpp
@@ -0,0 +1,169 @@
+#include "xdgstatusnotifieritem.h"
+#include <statusnotifieritemadaptor.h>
+#include <XdgStatusNotifierWatcherIface.h>
+#include <QDBusConnection>
+#include <QGuiApplication>
+#include <debug.h>
+
+using namespace xdg;
+
+StatusNotifierItem::StatusNotifierItem(QObject *parent)
+ : QObject{parent}
+{
+ QDBusConnection bus = QDBusConnection::sessionBus();
+ if (!bus.isConnected()) {
+ qCWarning(SYSTEM_TRAY) << "Cannot connect to the D-Bus session bus.\n" << "Please check your system settings and try again.\n";
+ }
+ QString serviceName = "org.xdgutils.";
+ setId((QGuiApplication::desktopFileName().isEmpty())?(QCoreApplication::applicationName()):(QGuiApplication::desktopFileName()));
+ serviceName.append(Id());
+ serviceName.append("-");
+ serviceName.append(QString::number(QCoreApplication::applicationPid()));
+ qCDebug(SYSTEM_TRAY) << "Register Item service" << serviceName << ":" << bus.registerService(serviceName);
+ new StatusNotifierItemAdaptor(this);
+ bus.registerObject("/StatusNotifierItem", this);
+ OrgKdeStatusNotifierWatcherInterface *watcher = new OrgKdeStatusNotifierWatcherInterface("org.kde.StatusNotifierWatcher", "/StatusNotifierWatcher", bus);
+ watcher->RegisterStatusNotifierItem(serviceName);
+}
+
+QString StatusNotifierItem::Title() const
+{
+ return m_Title;
+}
+
+void StatusNotifierItem::setTitle(const QString &newTitle)
+{
+ if (m_Title == newTitle)
+ return;
+ m_Title = newTitle;
+ emit NewTitle();
+ emit TitleChanged();
+}
+
+QString StatusNotifierItem::IconName() const
+{
+ return m_IconName;
+}
+
+void StatusNotifierItem::setIconName(const QString &newIconName)
+{
+ if (m_IconName == newIconName)
+ return;
+ m_IconName = newIconName;
+ emit IconNameChanged();
+ emit NewIcon();
+}
+
+
+void StatusNotifierItem::Activate(uint x, uint y)
+{
+ emit activated(x, y);
+}
+
+void StatusNotifierItem::SecondaryActivate(uint x, uint y)
+{
+ emit secondaryActivated(x, y);
+}
+
+QString StatusNotifierItem::Status() const
+{
+ return m_Status;
+}
+
+void StatusNotifierItem::setStatus(const QString &newStatus)
+{
+ if (m_Status == newStatus)
+ return;
+ if(!xdgStatus.contains(newStatus))
+ {
+ qCWarning(SYSTEM_TRAY) << "Status " << newStatus << "not authorized";
+ return;
+ }
+ m_Status = newStatus;
+ emit StatusChanged();
+ emit NewStatus(m_Status);
+}
+
+QString StatusNotifierItem::OverlayIconName() const
+{
+ return m_OverlayIconName;
+}
+
+void StatusNotifierItem::setOverlayIconName(const QString &newOverlayIconName)
+{
+ if (m_OverlayIconName == newOverlayIconName)
+ return;
+ m_OverlayIconName = newOverlayIconName;
+ emit overlayIconNameChanged();
+ emit NewOverlayIcon();
+}
+
+QString StatusNotifierItem::Category() const
+{
+ return m_Category;
+}
+
+void StatusNotifierItem::setCategory(const QString &newCategory)
+{
+ if (m_Category == newCategory)
+ return;
+ if(!xdgCategories.contains(newCategory))
+ {
+ qCWarning(SYSTEM_TRAY) << "Category " << newCategory << "not authorized";
+ return;
+ }
+ m_Category = newCategory;
+ emit CategoryChanged();
+}
+
+QString StatusNotifierItem::Id() const
+{
+ return m_Id;
+}
+
+void StatusNotifierItem::setId(const QString &newId)
+{
+ if (m_Id == newId)
+ return;
+ m_Id = newId;
+ emit IdChanged();
+}
+
+QString StatusNotifierItem::WindowId() const
+{
+ return m_WindowId;
+}
+
+void StatusNotifierItem::setWindowId(const QString &newWindowId)
+{
+ if (m_WindowId == newWindowId)
+ return;
+ m_WindowId = newWindowId;
+ emit WindowIdChanged();
+}
+
+QString StatusNotifierItem::AttentionIconName() const
+{
+ return m_AttentionIconName;
+}
+
+void StatusNotifierItem::setAttentionIconName(const QString &newAttentionIconName)
+{
+ if (m_AttentionIconName == newAttentionIconName)
+ return;
+ m_AttentionIconName = newAttentionIconName;
+ emit AttentionIconNameChanged();
+}
+
+QString StatusNotifierItem::AttentionMovieName() const
+{
+ return m_AttentionMovieName;
+}
+
+void StatusNotifierItem::setAttentionMovieName(const QString &newAttentionMovieName)
+{
+ if (m_AttentionMovieName == newAttentionMovieName)
+ return;
+ m_AttentionMovieName = newAttentionMovieName;
+ emit AttentionMovieNameChanged();
+}