diff --git a/src/gui/applicationlauncherjob.h b/src/gui/applicationlauncherjob.h --- a/src/gui/applicationlauncherjob.h +++ b/src/gui/applicationlauncherjob.h @@ -47,6 +47,14 @@ * The job finishes when the application is successfully started. At that point you can * query the PID(s). * + * For error handling, either connect to the result() signal, or for a simple messagebox on error, + * you can do + * @code + * auto *delegate = new KDialogJobUiDelegate; + * delegate->setAutoErrorHandlingEnabled(true); + * job->setUiDelegate(delegate); + * @endcode + * * @since 5.69 */ class KIOGUI_EXPORT ApplicationLauncherJob : public KJob diff --git a/src/widgets/kpropertiesdialog.cpp b/src/widgets/kpropertiesdialog.cpp --- a/src/widgets/kpropertiesdialog.cpp +++ b/src/widgets/kpropertiesdialog.cpp @@ -87,6 +87,7 @@ #include #include +#include #include #include #include @@ -115,7 +116,7 @@ #include #include #include -#include +#include #include #include #include @@ -1106,7 +1107,7 @@ sizelay->addWidget(d->m_sizeDetermineButton, 0); sizelay->addWidget(d->m_sizeStopButton, 0); - if (!QStandardPaths::findExecutable(QStringLiteral("filelight")).isEmpty()) { + if (KService::serviceByDesktopName(QStringLiteral("org.kde.filelight"))) { d->m_sizeDetailsButton = new QPushButton(i18n("Explore in Filelight"), d->m_frame); d->m_sizeDetailsButton->setIcon(QIcon::fromTheme(QStringLiteral("filelight"))); connect(d->m_sizeDetailsButton, &QPushButton::clicked, this, &KFilePropsPlugin::slotSizeDetails); @@ -1450,7 +1451,15 @@ void KFilePropsPlugin::slotSizeDetails() { // Open the current folder in filelight - KRun::run((QStandardPaths::findExecutable(QStringLiteral("filelight"))), { properties->url() }, properties->window(), QStringLiteral("Filelight"), QStringLiteral("filelight")); + KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.filelight")); + if (service) { + auto *job = new KIO::ApplicationLauncherJob(service); + job->setUrls({ properties->url() }); + job->start(); + auto *delegate = new KDialogJobUiDelegate; + delegate->setAutoErrorHandlingEnabled(true); + job->setUiDelegate(delegate); + } } KFilePropsPlugin::~KFilePropsPlugin()