* 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 <QApplication>
#include <QDBusConnection>
-#include <QPixmap>
#include <QImage>
-#include <QApplication>
#include <QMenu>
-#include <QMovie>
-
-#ifdef HAVE_KDE
-# include <KWindowInfo>
-# include <KWindowSystem>
-#endif
+#include <QPixmap>
-#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;
}
// 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;
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<DBusImageStruct>());
- 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();
- 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;
}
// 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;
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();
+ new StatusNotifierItemAdaptor(this);
}
StatusNotifierItemDBus::~StatusNotifierItemDBus()
{
- unregisterService();
+ unregisterTrayIcon();
}
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()) {
+ 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
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 DBusImageVector();
}
-//Requesting attention icon and movie
+// Requesting attention icon and movie
QString StatusNotifierItemDBus::AttentionIconName() const
{
return QString();
}
-
-//ToolTip
+// ToolTip
DBusToolTipStruct StatusNotifierItemDBus::ToolTip() 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)
{
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)
// 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)