diff --git a/tests/runapplication.cpp b/tests/runapplication.cpp index 0d99d224..e62d46a3 100644 --- a/tests/runapplication.cpp +++ b/tests/runapplication.cpp @@ -1,47 +1,62 @@ /* This file is part of the KDE libraries Copyright (c) 1999 Waldo Bastian - Copyright (c) 2009 David Faure + Copyright (c) 2009, 2020 David Faure This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include #include +#include +#include #include #include -int -main(int argc, char *argv[]) +int main(int argc, char *argv[]) { - QApplication a(argc, argv); + QApplication app(argc, argv); - QString serviceId = QStringLiteral("kwrite.desktop"); + QString serviceId = QStringLiteral("org.kde.kwrite"); if (argc > 1) { serviceId = QString::fromLocal8Bit(argv[1]); } QList urls; if (argc > 2) { urls << QUrl::fromUserInput(QString::fromLocal8Bit(argv[2])); } - KService::Ptr service = KService::serviceByDesktopPath(serviceId); + KService::Ptr service = KService::serviceByDesktopName(serviceId); if (!service) { - service = new KService(serviceId); + service = KService::serviceByStorageId(serviceId + QLatin1String(".desktop")); + if (!service) { + qWarning() << "Service not found" << serviceId; + return 1; + } } - qint64 pid = KRun::runApplication(*service, urls, nullptr); - qDebug() << "Started. pid=" << pid; - return 0; + KIO::ApplicationLauncherJob *job = new KIO::ApplicationLauncherJob(service); + job->setUrls(urls); + job->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, nullptr)); + job->start(); + + QObject::connect(job, &KJob::result, &app, [&]() { + if (job->error()) { + app.exit(1); + } else { + qDebug() << "Started. pid=" << job->pid(); + } + }); + + return app.exec(); }