From 898f650815a80c2bb631ddfcf7d9940cb319a01d Mon Sep 17 00:00:00 2001 From: Luc Menut <lmenut@mageia.org> Date: Mon, 6 Oct 2014 01:13:22 +0200 Subject: [PATCH 1/2] Save the default application into the group [Default Applications] as per mime-apps spec http://standards.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html#default --- keditfiletype/mimetypedata.cpp | 11 +++++++++++ keditfiletype/mimetypedata.h | 1 + 2 files changed, 12 insertions(+) diff --git a/keditfiletype/mimetypedata.cpp b/keditfiletype/mimetypedata.cpp index 18e2c9f..9219762 100644 --- a/keditfiletype/mimetypedata.cpp +++ b/keditfiletype/mimetypedata.cpp @@ -324,6 +324,9 @@ void MimeTypeData::syncServices() const QStringList oldAppServices = getAppOffers(); if (oldAppServices != m_appServices) { + // Save the default application according to mime-apps-spec 1.0 + KConfigGroup defaultApp(profile, "Default Applications"); + saveDefaultApplication(defaultApp, m_appServices); // Save preferred services KConfigGroup addedApps(profile, "Added Associations"); saveServices(addedApps, m_appServices); @@ -389,6 +392,14 @@ void MimeTypeData::saveServices(KConfigGroup & config, const QStringList& servic config.writeXdgListEntry(name(), collectStorageIds(services)); } +void MimeTypeData::saveDefaultApplication(KConfigGroup & config, const QStringList& services) +{ + if (services.isEmpty()) + config.deleteEntry(name()); + else + config.writeXdgListEntry(name(), QStringList(collectStorageIds(services).first())); +} + void MimeTypeData::refresh() { if (m_isGroup) diff --git a/keditfiletype/mimetypedata.h b/keditfiletype/mimetypedata.h index 042b043..0c1bcf2 100644 --- a/keditfiletype/mimetypedata.h +++ b/keditfiletype/mimetypedata.h @@ -114,6 +114,7 @@ private: void getMyServiceOffers() const; void syncServices(); void saveServices(KConfigGroup & config, const QStringList& services); + void saveDefaultApplication(KConfigGroup & config, const QStringList& services); void saveRemovedServices(KConfigGroup & config, const QStringList& services, const QStringList& oldServices); KMimeType::Ptr m_mimetype; // 0 if this is data for a mimetype group (m_isGroup==true) -- 2.1.2