Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > core-updates-src > by-pkgid > 3217f2ffb2e1974b9bd45bb03736f88d > files > 2

kdelibs4-4.14.35-1.mga5.src.rpm

From 012e360d42bab9dfdbe411f1b03e028dafaf4d72 Mon Sep 17 00:00:00 2001
From: Luc Menut <lmenut@mageia.org>
Date: Mon, 6 Oct 2014 00:39:32 +0200
Subject: [PATCH 2/3] Read mimeapps.list from XDG_CONFIG_HOME and
 XDG_CONFIG_DIRS

as per mime-apps-spec

http://standards.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html#file
---
 kded/kmimeassociations.cpp | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/kded/kmimeassociations.cpp b/kded/kmimeassociations.cpp
index 052251d..bb22e30 100644
--- a/kded/kmimeassociations.cpp
+++ b/kded/kmimeassociations.cpp
@@ -28,6 +28,8 @@
 #include <kglobal.h>
 #include <kstandarddirs.h>
 
+#include <QtCore/QFile>
+
 KMimeAssociations::KMimeAssociations(KOfferHash& offerHash)
     : m_offerHash(offerHash)
 {
@@ -52,8 +54,24 @@ text/plain=gnome-gedit.desktop;gnu-emacs.desktop;
 
 bool KMimeAssociations::parseAllMimeAppsList()
 {
+    // search for mimeapps.list in $XDG_CONFIG_HOME and $XDG_CONFIG_DIRS
+    // http://standards.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html
+    QStringList xdgConfigMimeappsDirs = QFile::decodeName(qgetenv("XDG_CONFIG_DIRS")).split(':');
+    if (xdgConfigMimeappsDirs.isEmpty()) {
+        xdgConfigMimeappsDirs.append(QLatin1String("/etc/xdg"));
+    }
+    xdgConfigMimeappsDirs.prepend(KGlobal::dirs()->localxdgconfdir());
+
+    QStringList xdgConfigMimeappsFiles;
+    Q_FOREACH(const QString &dir, xdgConfigMimeappsDirs) {
+        const QString file = dir + QLatin1String("/mimeapps.list");
+        if (QFile::exists(file)) {
+            xdgConfigMimeappsFiles.append(file);
+        }
+    }
+
     // Using the "merged view" from KConfig is not enough since we -add- at every level, we don't replace.
-    const QStringList mimeappsFiles = KGlobal::dirs()->findAllResources("xdgdata-apps", "mimeapps.list");
+    const QStringList mimeappsFiles = xdgConfigMimeappsFiles + KGlobal::dirs()->findAllResources("xdgdata-apps", "mimeapps.list");
     if (mimeappsFiles.isEmpty())
         return false;
 
-- 
2.1.2