1/*
2 SPDX-FileCopyrightText: 2015 Kai Uwe Broulik <kde@privat.broulik.de>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#include "kcmlauncher_p.h"
8
9#include <KIO/CommandLauncherJob>
10#include <KService>
11
12void KCMLauncher::open(const QStringList &names) const
13{
14 KIO::CommandLauncherJob *job = new KIO::CommandLauncherJob(QStringLiteral("kcmshell6"), names);
15 job->start();
16}
17
18void KCMLauncher::openSystemSettings(const QString &name, const QStringList &args) const
19{
20 // The desktop filename is the same as the binary and icon
21 const QString systemSettings = QStringLiteral("systemsettings");
22 KIO::CommandLauncherJob *job = nullptr;
23
24 QStringList cmdline{name};
25 if (!args.isEmpty()) {
26 cmdline.append(QStringLiteral("--args"));
27 cmdline.append(t: args.join(sep: QLatin1Char(' ')));
28 }
29
30 // Open in System Settings if it's available
31 if (KService::serviceByDesktopName(name: systemSettings)) {
32 job = new KIO::CommandLauncherJob(systemSettings, cmdline);
33 job->setDesktopName(systemSettings);
34 } else {
35 job = new KIO::CommandLauncherJob(QStringLiteral("kcmshell6"), cmdline);
36 }
37
38 job->start();
39}
40
41void KCMLauncher::openInfoCenter(const QString &name) const
42{
43 const QString infoCenterDesktopFile = QStringLiteral("org.kde.kinfocenter");
44 const QString infoCenterbinary = QStringLiteral("kinfocenter");
45
46 KIO::CommandLauncherJob *job = nullptr;
47
48 // Open in Info Center if it's available
49 if (KService::serviceByDesktopName(name: infoCenterDesktopFile)) {
50 job = new KIO::CommandLauncherJob(infoCenterbinary, QStringList(name));
51 job->setDesktopName(infoCenterDesktopFile);
52 } else {
53 job = new KIO::CommandLauncherJob(QStringLiteral("kcmshell6"), QStringList(name));
54 }
55
56 job->start();
57}
58
59#include "moc_kcmlauncher_p.cpp"
60

source code of kcmutils/src/qml/kcmlauncher.cpp