From 2ceb6f3abca081464614cf99a42ae76c396c8f26 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Thu, 15 Aug 2019 16:05:09 +0000 Subject: user/[KDE Applications]: Bump to 19.08.0 --- user/kfilemetadata/add-mimeutils.patch | 186 +++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 user/kfilemetadata/add-mimeutils.patch (limited to 'user/kfilemetadata/add-mimeutils.patch') diff --git a/user/kfilemetadata/add-mimeutils.patch b/user/kfilemetadata/add-mimeutils.patch new file mode 100644 index 000000000..5ea2cef37 --- /dev/null +++ b/user/kfilemetadata/add-mimeutils.patch @@ -0,0 +1,186 @@ +From 69c25514cf6a08ceaaacbc4092cc02ff40853228 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Mon, 25 Mar 2019 17:40:41 +0100 +Subject: Add helper function to determine mime type based on content and + extension + +Summary: +The QMimeDatabase::MatchDefault only falls back to content matching +if the extension is not known. This fails for e.g. Matroska files, where +the content allows to distinguish between audio and video files. + +CCBUG: 403902 + +Reviewers: #baloo, #frameworks, astippich, ngraham, poboiko + +Reviewed By: #baloo, astippich, ngraham + +Subscribers: kde-frameworks-devel + +Tags: #frameworks, #baloo + +Differential Revision: https://phabricator.kde.org/D20045 +--- + src/CMakeLists.txt | 1 + + src/mimeutils.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/mimeutils.h | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 106 insertions(+) + create mode 100644 src/mimeutils.cpp + create mode 100644 src/mimeutils.h + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index c3cbe8c..fc4ce19 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -14,6 +14,7 @@ set(KF5FileMetaData_SRCS + writercollection.cpp + externalwriter.cpp + formatstrings.cpp ++ mimeutils.cpp + ) + ecm_qt_declare_logging_category(KF5FileMetaData_SRCS HEADER kfilemetadata_debug.h IDENTIFIER KFILEMETADATA_LOG CATEGORY_NAME kf5.kfilemetadata) + +diff --git a/src/mimeutils.cpp b/src/mimeutils.cpp +new file mode 100644 +index 0000000..7ea4dc8 +--- /dev/null ++++ b/src/mimeutils.cpp +@@ -0,0 +1,50 @@ ++/* ++ * This file is part of KFileMetaData ++ * Copyright (C) 2019 Stefan Brüns ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * 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 ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ * ++ */ ++ ++#include "mimeutils.h" ++ ++namespace KFileMetaData { ++namespace MimeUtils { ++ ++QMimeType strictMimeType(const QString& filePath, const QMimeDatabase& db) ++{ ++ auto extensionMimes = db.mimeTypesForFileName(filePath); ++ auto contentMime = db.mimeTypeForFile(filePath, QMimeDatabase::MatchContent); ++ ++ if (extensionMimes.contains(contentMime)) { ++ // content based mime type is one of the types for the file extension, e.g.: ++ // *.ogg -> [ audio/ogg, audio/x-vorbis+ogg, ...] ++ // content -> audio/x-vorbis+ogg ++ return contentMime; ++ } ++ ++ for (auto mime : extensionMimes) { ++ // check if the content is generic and the extension is more specific, e.g.: ++ // *.mkv -> [ video/matroska ] ++ // content -> application/matroska ++ if (mime.inherits(contentMime.name())) { ++ return mime; ++ } ++ } ++ // content mime type does not match the extension, trust the content ++ return contentMime; ++} ++ ++}} // namespace KFileMetaData::MimeUtils +diff --git a/src/mimeutils.h b/src/mimeutils.h +new file mode 100644 +index 0000000..f33e100 +--- /dev/null ++++ b/src/mimeutils.h +@@ -0,0 +1,55 @@ ++/* ++ * This file is part of KFileMetaData ++ * Copyright (C) 2019 Stefan Brüns ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * 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 ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ * ++ */ ++ ++#ifndef KFILEMETADATA_MIMEUTILS ++#define KFILEMETADATA_MIMEUTILS ++ ++#include ++#include "kfilemetadata_export.h" ++ ++namespace KFileMetaData ++{ ++namespace MimeUtils ++{ ++ ++/** ++ * Returns the mimetype for a file ++ * ++ * The function uses both content and filename to determine the ++ * \c QMimeType. In case the extension mimetype is more specific ++ * than the content mimetype, and the first inherits the latter, ++ * the extension mimetype is preferred. ++ * If the extension does not match the content, the content has ++ * higher priority. ++ * The file must exist and be readable. ++ * ++ * @since 5.57 ++ * ++ * \sa QMimeDatabase::mimeTypesForFileName ++ * \sa QMimeType::inherits ++ */ ++KFILEMETADATA_EXPORT ++QMimeType strictMimeType(const QString& filePath, const QMimeDatabase& db); ++ ++ ++} // namespace MimeUtils ++} // namespace KFileMetaData ++ ++#endif // KFILEMETADATA_MIMEUTILS +-- +cgit v1.1 + +From b56d0cb5b90baeef2ada6ba0cbaea91506df1270 Mon Sep 17 00:00:00 2001 +From: Alexander Stippich +Date: Wed, 27 Mar 2019 20:41:49 +0100 +Subject: Generate header for new MimeUtils + +--- + src/CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index fc4ce19..73bf7d0 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -75,6 +75,7 @@ ecm_generate_headers(KF5FileMetaData_CamelCase_HEADERS + WriterPlugin + WriterCollection + EmbeddedImageData ++ MimeUtils + + PREFIX kfilemetadata + REQUIRED_HEADERS KF5FileMetaData_HEADERS +-- +cgit v1.1 + -- cgit v1.2.3-60-g2f50