mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-29 15:03:09 +00:00
async dbus call
This commit is contained in:
parent
b405f43ed3
commit
fdb34e9a74
2 changed files with 20 additions and 7 deletions
|
|
@ -23,6 +23,8 @@
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDBusMessage>
|
#include <QDBusMessage>
|
||||||
#include <QDBusConnection>
|
#include <QDBusConnection>
|
||||||
|
#include <QDBusPendingCallWatcher>
|
||||||
|
#include <QDBusPendingReply>
|
||||||
|
|
||||||
#include <Plasma/Package>
|
#include <Plasma/Package>
|
||||||
|
|
||||||
|
|
@ -48,23 +50,29 @@ TaskPanel::~TaskPanel()
|
||||||
void TaskPanel::executeScript(const QString &script)
|
void TaskPanel::executeScript(const QString &script)
|
||||||
{
|
{
|
||||||
//Plasma::Package p =
|
//Plasma::Package p =
|
||||||
qWarning()<<"AAAAAA"<<package().filePath("scripts", script + ".js")<<package().path();
|
|
||||||
QDBusMessage message = QDBusMessage::createMethodCall(s_kwinService, "/Scripting", QString(), "loadScript");
|
QDBusMessage message = QDBusMessage::createMethodCall(s_kwinService, "/Scripting", QString(), "loadScript");
|
||||||
QList<QVariant> arguments;
|
QList<QVariant> arguments;
|
||||||
arguments << QVariant(package().filePath("scripts", script + ".js"));
|
arguments << QVariant(package().filePath("scripts", script + ".js"));
|
||||||
message.setArguments(arguments);
|
message.setArguments(arguments);
|
||||||
QDBusMessage reply = QDBusConnection::sessionBus().call(message);
|
QDBusPendingReply<void> asyncCall = QDBusConnection::sessionBus().asyncCall(message);
|
||||||
|
|
||||||
|
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(asyncCall, this);
|
||||||
|
QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
|
||||||
|
this, SLOT(loadScriptFinishedSlot(QDBusPendingCallWatcher*)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskPanel::loadScriptFinishedSlot(QDBusPendingCallWatcher *watcher)
|
||||||
|
{
|
||||||
|
QDBusMessage reply = watcher->reply();
|
||||||
if (reply.type() == QDBusMessage::ErrorMessage) {
|
if (reply.type() == QDBusMessage::ErrorMessage) {
|
||||||
qWarning() << reply.errorMessage();
|
qWarning() << reply.errorMessage();
|
||||||
} else {
|
} else {
|
||||||
const int id = reply.arguments().first().toInt();
|
const int id = reply.arguments().first().toInt();
|
||||||
QDBusConnection::sessionBus().connect(s_kwinService, "/" + QString::number(id), QString(), "print", this, SLOT(print(QString)));
|
QDBusConnection::sessionBus().connect(s_kwinService, "/" + QString::number(id), QString(), "print", this, SLOT(print(QString)));
|
||||||
QDBusConnection::sessionBus().connect(s_kwinService, "/" + QString::number(id), QString(), "printError", this, SLOT(print(QString)));
|
QDBusConnection::sessionBus().connect(s_kwinService, "/" + QString::number(id), QString(), "printError", this, SLOT(print(QString)));
|
||||||
message = QDBusMessage::createMethodCall(s_kwinService, "/" + QString::number(id), QString(), "run");
|
QDBusMessage message = QDBusMessage::createMethodCall(s_kwinService, "/" + QString::number(id), QString(), "run");
|
||||||
reply = QDBusConnection::sessionBus().call(message);
|
//fire blindly the call for now
|
||||||
if (reply.type() == QDBusMessage::ErrorMessage) {
|
reply = QDBusConnection::sessionBus().asyncCall(message);
|
||||||
qWarning() << reply.errorMessage();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@
|
||||||
|
|
||||||
#include <Plasma/Containment>
|
#include <Plasma/Containment>
|
||||||
|
|
||||||
|
class QDBusPendingCallWatcher;
|
||||||
|
|
||||||
namespace KWayland
|
namespace KWayland
|
||||||
{
|
{
|
||||||
namespace Client
|
namespace Client
|
||||||
|
|
@ -51,6 +53,9 @@ public:
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void showingDesktopChanged(bool);
|
void showingDesktopChanged(bool);
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void loadScriptFinishedSlot(QDBusPendingCallWatcher *watcher);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void initWayland();
|
void initWayland();
|
||||||
bool m_showingDesktop;
|
bool m_showingDesktop;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue