X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fstatusnotifieritemdbus.cpp;h=fb10ce128ad489ef0e50963dcb66c6068fffbd63;hp=2be232838510ebfc9491397e09ecb1dfc7b2de27;hb=9188f1a4880dc7f4c26612a265c1d874f6df5a8c;hpb=695758015a80eb8c158a9ac4c0f1c0b547e70df3 diff --git a/src/qtui/statusnotifieritemdbus.cpp b/src/qtui/statusnotifieritemdbus.cpp index 2be23283..fb10ce12 100644 --- a/src/qtui/statusnotifieritemdbus.cpp +++ b/src/qtui/statusnotifieritemdbus.cpp @@ -19,25 +19,19 @@ * 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_KDE4 -# 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) @@ -45,18 +39,16 @@ __inline int toInt(WId wid) return (int)((__int64)wid); } - #else __inline int toInt(WId 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; @@ -66,9 +58,8 @@ const QDBusArgument &operator<<(QDBusArgument &argument, const DBusImageStruct & return argument; } - // 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; @@ -87,21 +78,19 @@ 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 < iconVector.size(); ++i) { - argument << iconVector[i]; + for (const auto& i : iconVector) { + argument << i; } argument.endArray(); return argument; } - // Retrieve the ImageVector data from the D-BUS argument -const QDBusArgument &operator>>(const QDBusArgument &argument, DBusImageVector &iconVector) +const QDBusArgument& operator>>(const QDBusArgument& argument, DBusImageVector& iconVector) { argument.beginArray(); iconVector.clear(); @@ -117,9 +106,8 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, DBusImageVector & 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; @@ -130,9 +118,8 @@ const QDBusArgument &operator<<(QDBusArgument &argument, const DBusToolTipStruct return argument; } - // 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; @@ -154,143 +141,119 @@ 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(); } - StatusNotifierItemDBus::~StatusNotifierItemDBus() { - unregisterService(); + unregisterTrayIcon(); } - QDBusConnection StatusNotifierItemDBus::dbusConnection() const { return m_dbus; } - // 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(); } - -//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 { return m_statusNotifierItem->title(); } - QString StatusNotifierItemDBus::Id() const { return QString("QuasselIRC"); } - 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 { 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 { return m_statusNotifierItem->iconName(); } - DBusImageVector StatusNotifierItemDBus::IconPixmap() const { return DBusImageVector(); } - QString StatusNotifierItemDBus::OverlayIconName() const { return QString(); } - DBusImageVector StatusNotifierItemDBus::OverlayIconPixmap() const { return DBusImageVector(); } - -//Requesting attention icon and movie +// Requesting attention icon and movie QString StatusNotifierItemDBus::AttentionIconName() const { return m_statusNotifierItem->attentionIconName(); } - DBusImageVector StatusNotifierItemDBus::AttentionIconPixmap() const { return DBusImageVector(); } - QString StatusNotifierItemDBus::AttentionMovieName() const { return QString(); } - -//ToolTip +// ToolTip DBusToolTipStruct StatusNotifierItemDBus::ToolTip() const { @@ -303,22 +266,19 @@ DBusToolTipStruct StatusNotifierItemDBus::ToolTip() const return toolTip; } - 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) { @@ -326,30 +286,20 @@ void StatusNotifierItemDBus::ContextMenu(int x, int y) return; } - //TODO: nicer placement, possible? + // 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(); } } - void StatusNotifierItemDBus::Activate(int x, int y) { m_statusNotifierItem->activated(QPoint(x, y)); } - void StatusNotifierItemDBus::SecondaryActivate(int x, int y) { Q_UNUSED(x) @@ -357,8 +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)