]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/contextmenu/servicemenuinstaller/servicemenuinstaller.cpp
Use cmakedefine01
[dolphin.git] / src / settings / contextmenu / servicemenuinstaller / servicemenuinstaller.cpp
index 91da3d256ea367c407a9084d891b3c783079b6fe..9a6d2f6d6f7622d794643a575ee7c822ec74cae5 100644 (file)
@@ -17,7 +17,7 @@
 #include <KLocalizedString>
 #include <KShell>
 
-#include "../../../config-packagekit.h"
+#include "../../../config-dolphin.h"
 
 Q_GLOBAL_STATIC_WITH_ARGS(QStringList, binaryPackages, ({QLatin1String("application/vnd.debian.binary-package"),
                                                         QLatin1String("application/x-rpm"),
@@ -29,7 +29,7 @@ enum PackageOperation {
     Uninstall
 };
 
-#ifdef HAVE_PACKAGEKIT
+#if HAVE_PACKAGEKIT
 #include <PackageKit/Daemon>
 #include <PackageKit/Details>
 #include <PackageKit/Transaction>
@@ -50,10 +50,10 @@ Q_NORETURN void fail(const QString &str)
 QString getServiceMenusDir()
 {
     const QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
-    return QDir(dataLocation).absoluteFilePath("kservices5/ServiceMenus");
+    return QDir(dataLocation).absoluteFilePath("kio/servicemenus");
 }
 
-#ifdef HAVE_PACKAGEKIT
+#if HAVE_PACKAGEKIT
 void packageKitInstall(const QString &fileName)
 {
     PackageKit::Transaction *transaction = PackageKit::Daemon::installFile(fileName, PackageKit::Transaction::TransactionFlagNone);
@@ -111,7 +111,7 @@ void packageKitUninstall(const QString &fileName)
 
 Q_NORETURN void packageKit(PackageOperation operation, const QString &fileName)
 {
-#ifdef HAVE_PACKAGEKIT
+#if HAVE_PACKAGEKIT
     QFileInfo fileInfo(fileName);
     if (!fileInfo.exists()) {
         fail(i18n("The file does not exist!"));
@@ -204,7 +204,7 @@ QString findRecursive(const QString &dir, const QString &basename)
 {
     QDirIterator it(dir, QStringList{basename}, QDir::Files, QDirIterator::Subdirectories);
     while (it.hasNext()) {
-        return QFileInfo(it.next()).canonicalFilePath();
+        return QFileInfo(it.next()).absoluteFilePath();
     }
 
     return QString();
@@ -300,6 +300,8 @@ bool cmdInstall(const QString &archive, QString &errorText)
             errorText = i18n("Failed to copy .desktop file %1 to %2: %3", archive, dest, source.errorString());
             return false;
         }
+        QFile destFile(dest);
+        destFile.setPermissions(destFile.permissions() | QFile::ExeOwner);
     } else {
         if (binaryPackages->contains(QMimeDatabase().mimeTypeForFile(archive).name())) {
             packageKit(PackageOperation::Install, archive);
@@ -335,7 +337,7 @@ bool cmdInstall(const QString &archive, QString &errorText)
 
         // If "install-it" is missing, try "install"
         QString installerPath;
-        const QStringList basenames2 = {"installKDE4.sh", "installKDE4", "install.sh", "install"};
+        const QStringList basenames2 = {"installKDE4.sh", "installKDE4", "install.sh", "install*.sh"};
         for (const auto &basename : basenames2) {
             const auto path = findRecursive(dir, basename);
             if (!path.isEmpty()) {
@@ -377,7 +379,7 @@ bool cmdUninstall(const QString &archive, QString &errorText)
 
         // Try "deinstall" first
         QString deinstallPath;
-        const QStringList basenames1 = {"uninstall.sh", "uninstal", "deinstall.sh", "deinstall"};
+        const QStringList basenames1 = {"uninstall.sh", "uninstall", "deinstall.sh", "deinstall"};
         for (const auto &basename : basenames1) {
             const auto path = findRecursive(dir, basename);
             if (!path.isEmpty()) {