]> cloud.milkyroute.net Git - dolphin.git/commitdiff
servicemenuinstaller: Use QMimeDatabase instead of running xdg-mime
authorAlexander Potashev <aspotashev@gmail.com>
Sun, 14 Jul 2019 23:21:35 +0000 (02:21 +0300)
committerAlexander Potashev <aspotashev@gmail.com>
Mon, 15 Jul 2019 20:51:47 +0000 (23:51 +0300)
Test Plan: ./test_run.rb still passes all tests.

Reviewers: elvisangelaccio, sitter, ngraham

Reviewed By: elvisangelaccio, ngraham

Subscribers: kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D22465

src/settings/services/servicemenuinstaller/servicemenuinstaller.cpp

index 9c614a8d31d12428b820278d664e9b6c99eedb2f..6969647aa82f969da2e38cd9e0be4acfffa3a30d 100644 (file)
@@ -24,6 +24,7 @@
 #include <QDir>
 #include <QDirIterator>
 #include <QCommandLineParser>
+#include <QMimeDatabase>
 
 #include <KLocalizedString>
 
@@ -42,41 +43,6 @@ Q_NORETURN void fail(const QString &str)
     exit(1);
 }
 
-bool evaluateShell(const QString &program, const QStringList &arguments, QString &output, QString &errorText)
-{
-    QProcess process;
-    process.start(program, arguments, QIODevice::ReadOnly);
-    if (!process.waitForStarted()) {
-        fail(i18n("Failed to run process: %1 %2", program, arguments.join(" ")));
-    }
-
-    if (!process.waitForFinished()) {
-        fail(i18n("Process did not finish in reasonable time: %1 %2", program, arguments.join(" ")));
-    }
-
-    const auto stdoutResult = QString::fromUtf8(process.readAllStandardOutput()).trimmed();
-    const auto stderrResult = QString::fromUtf8(process.readAllStandardError()).trimmed();
-
-    if (process.exitStatus() == QProcess::NormalExit && process.exitCode() == 0) {
-        output = stdoutResult;
-        return true;
-    } else {
-        errorText = stderrResult + stdoutResult;
-        return false;
-    }
-}
-
-QString mimeType(const QString &path)
-{
-    QString result;
-    QString errorText;
-    if (evaluateShell("xdg-mime", QStringList{"query", "filetype", path}, result, errorText)) {
-        return result;
-    } else {
-        fail(i18n("Failed to run xdg-mime %1: %2", path, errorText));
-    }
-}
-
 QString getServiceMenusDir()
 {
     const QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
@@ -114,7 +80,7 @@ void runUncompress(const QString &inputPath, const QString &outputPath) {
                                           "multipart/x-zip"},
                               UncompressCommand{"unzip", QStringList{}, QStringList{"-d"}}});
 
-    const auto mime = mimeType(inputPath);
+    const auto mime = QMimeDatabase().mimeTypeForFile(inputPath).name();
 
     UncompressCommand command{};
     for (const auto &pair : mimeTypeToCommand) {