X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fstatusnotifieritemdbus.cpp;h=fb10ce128ad489ef0e50963dcb66c6068fffbd63;hp=e359c45d04e36cd94dbe2133a38681ffb599550f;hb=c1cf157116de7fc3da96203aa6f03c38c7ebb650;hpb=5d9af8ed007d38faf3995ea18174249121f246fe diff --git a/src/qtui/statusnotifieritemdbus.cpp b/src/qtui/statusnotifieritemdbus.cpp index e359c45d..fb10ce12 100644 --- a/src/qtui/statusnotifieritemdbus.cpp +++ b/src/qtui/statusnotifieritemdbus.cpp @@ -4,9 +4,9 @@ * Quasselfied 2010 by Manuel Nickschas * * * * This file 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) any later version. * + * 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 * @@ -16,44 +16,39 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include "mainwin.h" -#include "qtui.h" #include "statusnotifieritemdbus.h" -#include "statusnotifieritem.h" +#include #include -#include #include -#include #include -#include - -#ifdef HAVE_KDE -# include -# include -#endif +#include -#include "statusnotifierwatcher.h" +#include "mainwin.h" +#include "qtui.h" +#include "statusnotifieritem.h" #include "statusnotifieritemadaptor.h" +#include "statusnotifierwatcher.h" #ifdef Q_OS_WIN64 __inline int toInt(WId wid) { - return (int)((__int64)wid); + return (int)((__int64)wid); } #else __inline int toInt(WId wid) { - return (int)wid; + return (int)wid; } + #endif // Marshall the ImageStruct data into a D-BUS argument -const QDBusArgument &operator<<(QDBusArgument &argument, const DBusImageStruct &icon) +const QDBusArgument& operator<<(QDBusArgument& argument, const DBusImageStruct& icon) { argument.beginStructure(); argument << icon.width; @@ -64,7 +59,7 @@ const QDBusArgument &operator<<(QDBusArgument &argument, const DBusImageStruct & } // Retrieve the ImageStruct data from the D-BUS argument -const QDBusArgument &operator>>(const QDBusArgument &argument, DBusImageStruct &icon) +const QDBusArgument& operator>>(const QDBusArgument& argument, DBusImageStruct& icon) { qint32 width; qint32 height; @@ -83,38 +78,36 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, DBusImageStruct & return argument; } - // Marshall the ImageVector data into a D-BUS argument -const QDBusArgument &operator<<(QDBusArgument &argument, const DBusImageVector &iconVector) +const QDBusArgument& operator<<(QDBusArgument& argument, const DBusImageVector& iconVector) { argument.beginArray(qMetaTypeId()); - for (int i=0; i>(const QDBusArgument &argument, DBusImageVector &iconVector) +const QDBusArgument& operator>>(const QDBusArgument& argument, DBusImageVector& iconVector) { argument.beginArray(); iconVector.clear(); - while ( !argument.atEnd() ) { - DBusImageStruct element; - argument >> element; - iconVector.append(element); + while (!argument.atEnd()) { + DBusImageStruct element; + argument >> element; + iconVector.append(element); } argument.endArray(); - return argument; } // Marshall the ToolTipStruct data into a D-BUS argument -const QDBusArgument &operator<<(QDBusArgument &argument, const DBusToolTipStruct &toolTip) +const QDBusArgument& operator<<(QDBusArgument& argument, const DBusToolTipStruct& toolTip) { argument.beginStructure(); argument << toolTip.icon; @@ -126,7 +119,7 @@ const QDBusArgument &operator<<(QDBusArgument &argument, const DBusToolTipStruct } // Retrieve the ToolTipStruct data from the D-BUS argument -const QDBusArgument &operator>>(const QDBusArgument &argument, DBusToolTipStruct &toolTip) +const QDBusArgument& operator>>(const QDBusArgument& argument, DBusToolTipStruct& toolTip) { QString icon; DBusImageVector image; @@ -148,26 +141,21 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, DBusToolTipStruct return argument; } - int StatusNotifierItemDBus::s_serviceCount = 0; -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)) +StatusNotifierItemDBus::StatusNotifierItemDBus(StatusNotifierItem* parent) + : QObject(parent) + , m_statusNotifierItem(parent) + , 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(); - m_dbus.registerObject("/StatusNotifierItem", this); + new StatusNotifierItemAdaptor(this); } StatusNotifierItemDBus::~StatusNotifierItemDBus() { - unregisterService(); + unregisterTrayIcon(); } QDBusConnection StatusNotifierItemDBus::dbusConnection() const @@ -177,32 +165,30 @@ QDBusConnection StatusNotifierItemDBus::dbusConnection() const // 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.unregisterService(m_service); + if (m_dbus.isConnected()) { + m_dbus.unregisterObject("/StatusNotifierItem"); } } QString StatusNotifierItemDBus::service() const { - return m_service; + return m_dbus.baseService(); } -//DBUS slots -//Values and calls have been adapted to Quassel +// DBUS slots +// Values and calls have been adapted to Quassel QString StatusNotifierItemDBus::Category() const { - return QString("Communications"); // no need to make this configurable for Quassel + return QString("Communications"); // no need to make this configurable for Quassel } QString StatusNotifierItemDBus::Title() const @@ -217,7 +203,9 @@ QString StatusNotifierItemDBus::Id() const QString StatusNotifierItemDBus::Status() const { - return m_statusNotifierItem->metaObject()->enumerator(m_statusNotifierItem->metaObject()->indexOfEnumerator("State")).valueToKey(m_statusNotifierItem->state()); + return m_statusNotifierItem->metaObject() + ->enumerator(m_statusNotifierItem->metaObject()->indexOfEnumerator("State")) + .valueToKey(m_statusNotifierItem->state()); } int StatusNotifierItemDBus::WindowId() const @@ -225,9 +213,8 @@ int StatusNotifierItemDBus::WindowId() const return toInt(QtUi::mainWindow()->winId()); } - -//Icon -//We don't need to support serialized icon data in Quassel +// Icon +// We don't need to support serialized icon data in Quassel QString StatusNotifierItemDBus::IconName() const { @@ -249,7 +236,7 @@ DBusImageVector StatusNotifierItemDBus::OverlayIconPixmap() const return DBusImageVector(); } -//Requesting attention icon and movie +// Requesting attention icon and movie QString StatusNotifierItemDBus::AttentionIconName() const { @@ -266,8 +253,7 @@ QString StatusNotifierItemDBus::AttentionMovieName() const return QString(); } - -//ToolTip +// ToolTip DBusToolTipStruct StatusNotifierItemDBus::ToolTip() const { @@ -285,15 +271,14 @@ QString StatusNotifierItemDBus::IconThemePath() const return m_statusNotifierItem->iconThemePath(); } -//Menu +// Menu QDBusObjectPath StatusNotifierItemDBus::Menu() const { return QDBusObjectPath(m_statusNotifierItem->menuObjectPath()); } - -//Interaction +// Interaction void StatusNotifierItemDBus::ContextMenu(int x, int y) { @@ -301,25 +286,18 @@ void StatusNotifierItemDBus::ContextMenu(int x, int y) return; } - //TODO: nicer placement, possible? + // TODO: nicer placement, possible? if (!m_statusNotifierItem->trayMenu()->isVisible()) { -#ifdef HAVE_KDE - m_statusNotifierItem->trayMenu()->setWindowFlags(Qt::Window|Qt::FramelessWindowHint); -#endif - m_statusNotifierItem->trayMenu()->popup(QPoint(x,y)); -#ifdef HAVE_KDE - 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()->popup(QPoint(x, y)); + } + else { m_statusNotifierItem->trayMenu()->hide(); } } void StatusNotifierItemDBus::Activate(int x, int y) { - m_statusNotifierItem->activated(QPoint(x,y)); + m_statusNotifierItem->activated(QPoint(x, y)); } void StatusNotifierItemDBus::SecondaryActivate(int x, int y) @@ -329,7 +307,7 @@ void StatusNotifierItemDBus::SecondaryActivate(int x, int y) // emit m_statusNotifierItem->secondaryActivateRequested(QPoint(x,y)); } -void StatusNotifierItemDBus::Scroll(int delta, const QString &orientation) +void StatusNotifierItemDBus::Scroll(int delta, const QString& orientation) { Q_UNUSED(delta) Q_UNUSED(orientation)