From 31bf3102fe8f8cdd3f1448f0f22f182d0c2820d2 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 23 May 2017 21:00:50 +0200 Subject: Moved MIME related stuff to a mime subdir --- framework/src/domain/mimetreeparser/otp/util.cpp | 136 ----------------------- 1 file changed, 136 deletions(-) delete mode 100644 framework/src/domain/mimetreeparser/otp/util.cpp (limited to 'framework/src/domain/mimetreeparser/otp/util.cpp') diff --git a/framework/src/domain/mimetreeparser/otp/util.cpp b/framework/src/domain/mimetreeparser/otp/util.cpp deleted file mode 100644 index 5ca8d828..00000000 --- a/framework/src/domain/mimetreeparser/otp/util.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* - Copyright (c) 2016 Sandro Knauß - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "util.h" - -#include "mimetreeparser_debug.h" - -#include "nodehelper.h" - -#include - -#include -#include - -using namespace MimeTreeParser::Util; - -bool MimeTreeParser::Util::isTypeBlacklisted(KMime::Content *node) -{ - const QByteArray mediaTypeLower = node->contentType()->mediaType().toLower(); - bool typeBlacklisted = mediaTypeLower == "multipart"; - if (!typeBlacklisted) { - typeBlacklisted = KMime::isCryptoPart(node); - } - typeBlacklisted = typeBlacklisted || node == node->topLevel(); - const bool firstTextChildOfEncapsulatedMsg = - mediaTypeLower == "text" && - node->contentType()->subType().toLower() == "plain" && - node->parent() && node->parent()->contentType()->mediaType().toLower() == "message"; - return typeBlacklisted || firstTextChildOfEncapsulatedMsg; -} - -QString MimeTreeParser::Util::labelForContent(KMime::Content *node) -{ - const QString name = node->contentType()->name(); - QString label = name.isEmpty() ? NodeHelper::fileName(node) : name; - if (label.isEmpty()) { - label = node->contentDescription()->asUnicodeString(); - } - return label; -} - -QMimeType MimeTreeParser::Util::mimetype(const QString &name) -{ - QMimeDatabase db; - // consider the filename if mimetype cannot be found by content-type - const auto mimeTypes = db.mimeTypesForFileName(name); - for (const auto &mt : mimeTypes) { - if (mt.name() != QLatin1String("application/octet-stream")) { - return mt; - } - } - - // consider the attachment's contents if neither the Content-Type header - // nor the filename give us a clue - return db.mimeTypeForFile(name); -} - -QString MimeTreeParser::Util::iconNameForMimetype(const QString &mimeType, - const QString &fallbackFileName1, - const QString &fallbackFileName2) -{ - QString fileName; - QString tMimeType = mimeType; - - // convert non-registered types to registered types - if (mimeType == QLatin1String("application/x-vnd.kolab.contact")) { - tMimeType = QStringLiteral("text/x-vcard"); - } else if (mimeType == QLatin1String("application/x-vnd.kolab.event")) { - tMimeType = QStringLiteral("application/x-vnd.akonadi.calendar.event"); - } else if (mimeType == QLatin1String("application/x-vnd.kolab.task")) { - tMimeType = QStringLiteral("application/x-vnd.akonadi.calendar.todo"); - } else if (mimeType == QLatin1String("application/x-vnd.kolab.journal")) { - tMimeType = QStringLiteral("application/x-vnd.akonadi.calendar.journal"); - } else if (mimeType == QLatin1String("application/x-vnd.kolab.note")) { - tMimeType = QStringLiteral("application/x-vnd.akonadi.note"); - } else if (mimeType == QLatin1String("image/jpg")) { - tMimeType = QStringLiteral("image/jpeg"); - } - QMimeDatabase mimeDb; - auto mime = mimeDb.mimeTypeForName(tMimeType); - if (mime.isValid()) { - fileName = mime.iconName(); - } else { - fileName = QStringLiteral("unknown"); - if (!tMimeType.isEmpty()) { - qCWarning(MIMETREEPARSER_LOG) << "unknown mimetype" << tMimeType; - } - } - //WorkAround for #199083 - if (fileName == QLatin1String("text-vcard")) { - fileName = QStringLiteral("text-x-vcard"); - } - - if (fileName.isEmpty()) { - fileName = fallbackFileName1; - if (fileName.isEmpty()) { - fileName = fallbackFileName2; - } - if (!fileName.isEmpty()) { - fileName = mimeDb.mimeTypeForFile(QLatin1String("/tmp/") + fileName).iconName(); - } - } - - return fileName; -} - -QString MimeTreeParser::Util::iconNameForContent(KMime::Content *node) -{ - if (!node) { - return QString(); - } - - QByteArray mimeType = node->contentType()->mimeType(); - if (mimeType.isNull() || mimeType == "application/octet-stream") { - const QString mime = mimetype(node->contentDisposition()->filename()).name(); - mimeType = mime.toLatin1(); - } - mimeType = mimeType.toLower(); - return iconNameForMimetype(QLatin1String(mimeType), node->contentDisposition()->filename(), - node->contentType()->name()); -} -- cgit v1.2.3