#include "statusnotifieritemdbus.h"
#include "statusnotifieritem.h"
+#include <QApplication>
#include <QDBusConnection>
-#include <QPixmap>
#include <QImage>
-#include <QApplication>
#include <QMenu>
-#include <QMovie>
-
-#ifdef HAVE_KDE4
-# include <KWindowInfo>
-# include <KWindowSystem>
-#endif
+#include <QPixmap>
#include "statusnotifierwatcher.h"
#include "statusnotifieritemadaptor.h"
return (int)((__int64)wid);
}
-
#else
__inline int toInt(WId wid)
{
const QDBusArgument &operator<<(QDBusArgument &argument, const DBusImageVector &iconVector)
{
argument.beginArray(qMetaTypeId<DBusImageStruct>());
- for (int i = 0; i < iconVector.size(); ++i) {
- argument << iconVector[i];
+ for (const auto &i : iconVector) {
+ argument << i;
}
argument.endArray();
return argument;
StatusNotifierItemDBus::StatusNotifierItemDBus(StatusNotifierItem *parent)
: QObject(parent),
m_statusNotifierItem(parent),
- m_service(QString("org.kde.StatusNotifierItem-%1-%2")
- .arg(QCoreApplication::applicationPid())
- .arg(++s_serviceCount)),
- m_dbus(QDBusConnection::connectToBus(QDBusConnection::SessionBus, m_service))
+ m_dbus(QDBusConnection::connectToBus(QDBusConnection::SessionBus,
+ QString("org.kde.StatusNotifierItem-%1-%2").arg(QCoreApplication::applicationPid()).arg(++s_serviceCount)))
{
new StatusNotifierItemAdaptor(this);
- //qDebug() << "service is" << m_service;
- registerService();
}
StatusNotifierItemDBus::~StatusNotifierItemDBus()
{
- unregisterService();
+ unregisterTrayIcon();
}
// FIXME: prevent double registrations, also test this on platforms != KDE
//
-void StatusNotifierItemDBus::registerService()
+void StatusNotifierItemDBus::registerTrayIcon()
{
- //qDebug() << "registering to" << m_service;
- m_dbus.registerService(m_service);
m_dbus.registerObject("/StatusNotifierItem", this);
}
// FIXME: see above
-void StatusNotifierItemDBus::unregisterService()
+void StatusNotifierItemDBus::unregisterTrayIcon()
{
- //qDebug() << "unregistering from" << m_service;
if (m_dbus.isConnected()) {
m_dbus.unregisterObject("/StatusNotifierItem");
- m_dbus.unregisterService(m_service);
}
}
QString StatusNotifierItemDBus::service() const
{
- return m_service;
+ return m_dbus.baseService();
}
//TODO: nicer placement, possible?
if (!m_statusNotifierItem->trayMenu()->isVisible()) {
-#ifdef HAVE_KDE4
- m_statusNotifierItem->trayMenu()->setWindowFlags(Qt::Window|Qt::FramelessWindowHint);
-#endif
m_statusNotifierItem->trayMenu()->popup(QPoint(x, y));
-#ifdef HAVE_KDE4
- KWindowSystem::setState(m_statusNotifierItem->trayMenu()->winId(), NET::SkipTaskbar|NET::SkipPager|NET::KeepAbove);
- KWindowSystem::setType(m_statusNotifierItem->trayMenu()->winId(), NET::PopupMenu);
- KWindowSystem::forceActiveWindow(m_statusNotifierItem->trayMenu()->winId());
-#endif
}
else {
m_statusNotifierItem->trayMenu()->hide();