KWin
Loading...
Searching...
No Matches
dbuscall.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#pragma once
10
11#include <QObject>
12#include <QString>
13#include <QVariant>
14
15namespace KWin
16{
17
64class DBusCall : public QObject
65{
66 Q_OBJECT
67 Q_PROPERTY(QString service READ service WRITE setService NOTIFY serviceChanged)
68 Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged)
69 Q_PROPERTY(QString dbusInterface READ interface WRITE setInterface NOTIFY interfaceChanged)
70 Q_PROPERTY(QString method READ method WRITE setMethod NOTIFY methodChanged)
71 Q_PROPERTY(QVariantList arguments READ arguments WRITE setArguments NOTIFY argumentsChanged)
72public:
73 explicit DBusCall(QObject *parent = nullptr);
74 ~DBusCall() override;
75
76 const QString &service() const;
77 const QString &path() const;
78 const QString &interface() const;
79 const QString &method() const;
80 const QVariantList &arguments() const;
81
82public Q_SLOTS:
83 void call();
84
85 void setService(const QString &service);
86 void setPath(const QString &path);
87 void setInterface(const QString &interface);
88 void setMethod(const QString &method);
89 void setArguments(const QVariantList &arguments);
90
91Q_SIGNALS:
92 void finished(QVariantList returnValue);
93 void failed();
94
100
101private:
102 QString m_service;
103 QString m_path;
104 QString m_interface;
105 QString m_method;
106 QVariantList m_arguments;
107};
108
109#define GENERIC_WRAPPER(type, name, upperName) \
110 inline type DBusCall::name() const \
111 { \
112 return m_##name; \
113 } \
114 inline void DBusCall::set##upperName(type name) \
115 { \
116 if (m_##name == name) { \
117 return; \
118 } \
119 m_##name = name; \
120 Q_EMIT name##Changed(); \
121 }
122#define WRAPPER(name, upperName) \
123 GENERIC_WRAPPER(const QString &, name, upperName)
124
125WRAPPER(interface, Interface)
126WRAPPER(method, Method)
127WRAPPER(path, Path)
128WRAPPER(service, Service)
129
130GENERIC_WRAPPER(const QVariantList &, arguments, Arguments)
131#undef WRAPPER
132#undef GENERIC_WRAPPER
133
134} // KWin
Qml export for providing a wrapper for sending a message over the DBus session bus.
Definition dbuscall.h:65
QString dbusInterface
Definition dbuscall.h:69
void serviceChanged()
void setPath(const QString &path)
void finished(QVariantList returnValue)
void setInterface(const QString &interface)
void interfaceChanged()
QVariantList arguments
Definition dbuscall.h:71
void setService(const QString &service)
QString service
Definition dbuscall.h:67
void methodChanged()
void pathChanged()
void argumentsChanged()
QString method
Definition dbuscall.h:70
void setArguments(const QVariantList &arguments)
QString path
Definition dbuscall.h:68
const QString & interface() const
void setMethod(const QString &method)
#define GENERIC_WRAPPER(type, name, upperName)
Definition dbuscall.h:109
#define WRAPPER(name, upperName)
Definition dbuscall.h:122
#define private
#define explicit