Changeset View
Changeset View
Standalone View
Standalone View
plugins/runcommand/runcommandplugin.cpp
Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Line(s) | 60 | if (np.has(QStringLiteral("key"))) { | |||
---|---|---|---|---|---|
61 | QJsonDocument commandsDocument = QJsonDocument::fromJson(config()->get<QByteArray>(QStringLiteral("commands"), "{}")); | 61 | QJsonDocument commandsDocument = QJsonDocument::fromJson(config()->get<QByteArray>(QStringLiteral("commands"), "{}")); | ||
62 | QJsonObject commands = commandsDocument.object(); | 62 | QJsonObject commands = commandsDocument.object(); | ||
63 | QString key = np.get<QString>(QStringLiteral("key")); | 63 | QString key = np.get<QString>(QStringLiteral("key")); | ||
64 | QJsonValue value = commands[key]; | 64 | QJsonValue value = commands[key]; | ||
65 | if (value == QJsonValue::Undefined) { | 65 | if (value == QJsonValue::Undefined) { | ||
66 | qCWarning(KDECONNECT_PLUGIN_RUNCOMMAND) << key << "is not a configured command"; | 66 | qCWarning(KDECONNECT_PLUGIN_RUNCOMMAND) << key << "is not a configured command"; | ||
67 | } | 67 | } | ||
68 | const QJsonObject commandJson = value.toObject(); | 68 | const QJsonObject commandJson = value.toObject(); | ||
69 | qCInfo(KDECONNECT_PLUGIN_RUNCOMMAND) << "Running:" << "/bin/sh" << "-c" << commandJson[QStringLiteral("command")].toString(); | 69 | | ||
70 | QProcess::startDetached(QStringLiteral("/bin/sh"), QStringList()<< QStringLiteral("-c") << commandJson[QStringLiteral("command")].toString()); | 70 | QString command = commandJson[QStringLiteral("command")].toString(); | ||
71 | QStringList args = np.get<QStringList>("args"); | ||||
72 | | ||||
73 | for (int i = 0; i < args.size(); i++) { | ||||
74 | command = command.arg(args[i]); | ||||
75 | } | ||||
76 | | ||||
77 | qCInfo(KDECONNECT_PLUGIN_RUNCOMMAND) << "Running:" << "/bin/sh" << "-c" << command; | ||||
78 | QProcess::startDetached(QStringLiteral("/bin/sh"), QStringList()<< QStringLiteral("-c") << command); | ||||
71 | return true; | 79 | return true; | ||
72 | } else if (np.has("setup")) { | 80 | } else if (np.has("setup")) { | ||
73 | QProcess::startDetached(QStringLiteral("kcmshell5"), {QStringLiteral("kdeconnect"), QStringLiteral("--args"), QString(device()->id() + QStringLiteral(":kdeconnect_runcommand")) }); | 81 | QProcess::startDetached(QStringLiteral("kcmshell5"), {QStringLiteral("kdeconnect"), QStringLiteral("--args"), QString(device()->id() + QStringLiteral(":kdeconnect_runcommand")) }); | ||
74 | } | 82 | } | ||
75 | 83 | | |||
76 | return false; | 84 | return false; | ||
77 | } | 85 | } | ||
78 | 86 | | |||
79 | void RunCommandPlugin::connected() | 87 | void RunCommandPlugin::connected() | ||
80 | { | 88 | { | ||
81 | 89 | | |||
82 | sendConfig(); | 90 | sendConfig(); | ||
83 | } | 91 | } | ||
84 | 92 | | |||
85 | void RunCommandPlugin::sendConfig() | 93 | void RunCommandPlugin::sendConfig() | ||
86 | { | 94 | { | ||
87 | QString commands = config()->get<QString>(QStringLiteral("commands"),QStringLiteral("{}")); | 95 | QString commands = config()->get<QString>(QStringLiteral("commands"),QStringLiteral("{}")); | ||
88 | NetworkPacket np(PACKET_TYPE_RUNCOMMAND, {{"commandList", commands}}); | 96 | NetworkPacket np(PACKET_TYPE_RUNCOMMAND, {{"commandList", commands}}); | ||
89 | 97 | | |||
90 | #if KCMUTILS_VERSION >= QT_VERSION_CHECK(5, 45, 0) | 98 | #if KCMUTILS_VERSION >= QT_VERSION_CHECK(5, 45, 0) | ||
91 | np.set<bool>(QStringLiteral("canAddCommand"), true); | 99 | np.set<bool>(QStringLiteral("canAddCommand"), true); | ||
92 | #endif | 100 | #endif | ||
101 | np.set<bool>(QStringLiteral("argsSupported"), true); | ||||
93 | 102 | | |||
94 | sendPacket(np); | 103 | sendPacket(np); | ||
95 | } | 104 | } | ||
96 | 105 | | |||
97 | void RunCommandPlugin::configChanged() { | 106 | void RunCommandPlugin::configChanged() { | ||
98 | sendConfig(); | 107 | sendConfig(); | ||
99 | } | 108 | } | ||
100 | 109 | | |||
101 | #include "runcommandplugin.moc" | 110 | #include "runcommandplugin.moc" |