KFileMetaData

extractorplugin.cpp
1/*
2 SPDX-FileCopyrightText: 2012 Vishesh Handa <me@vhanda.in>
3 SPDX-FileCopyrightText: 2012 Jörg Ehrichs <joerg.ehrichs@gmx.de>
4
5 SPDX-License-Identifier: LGPL-2.1-or-later
6*/
7
8
9#include "extractorplugin.h"
10
11#include <QMimeDatabase>
12#include <QDebug>
13#include <QTimeZone>
14
15using namespace KFileMetaData;
16
17ExtractorPlugin::ExtractorPlugin(QObject* parent): QObject(parent)
18{
19}
20
21ExtractorPlugin::~ExtractorPlugin()
22{
23}
24
25//
26// Helper functions
27//
28
30{
31 QDateTime dateTime;
32
33 if (!dateTime.isValid()) {
34 dateTime = QDateTime::fromString(dateString, QStringLiteral("yyyy-MM-dd"));
36 }
37 if (!dateTime.isValid()) {
38 dateTime = QDateTime::fromString(dateString, QStringLiteral("dd-MM-yyyy"));
40 }
41 if (!dateTime.isValid()) {
42 dateTime = QDateTime::fromString(dateString, QStringLiteral("yyyy-MM"));
44 }
45 if (!dateTime.isValid()) {
46 dateTime = QDateTime::fromString(dateString, QStringLiteral("MM-yyyy"));
48 }
49 if (!dateTime.isValid()) {
50 dateTime = QDateTime::fromString(dateString, QStringLiteral("yyyy.MM.dd"));
52 }
53 if (!dateTime.isValid()) {
54 dateTime = QDateTime::fromString(dateString, QStringLiteral("dd.MM.yyyy"));
56 }
57 if (!dateTime.isValid()) {
58 dateTime = QDateTime::fromString(dateString, QStringLiteral("dd MMMM yyyy"));
60 }
61 if (!dateTime.isValid()) {
62 dateTime = QDateTime::fromString(dateString, QStringLiteral("MM.yyyy"));
64 }
65 if (!dateTime.isValid()) {
66 dateTime = QDateTime::fromString(dateString, QStringLiteral("yyyy.MM"));
68 }
69 if (!dateTime.isValid()) {
70 dateTime = QDateTime::fromString(dateString, QStringLiteral("yyyy"));
72 }
73 if (!dateTime.isValid()) {
74 dateTime = QDateTime::fromString(dateString, QStringLiteral("yy"));
76 }
77 if (!dateTime.isValid()) {
78 dateTime = QDateTime::fromString(dateString, Qt::ISODate);
79 }
80 if (!dateTime.isValid()) {
81 dateTime = QDateTime::fromString(dateString, QStringLiteral("dddd d MMM yyyy h':'mm':'ss AP"));
83 }
84 if (!dateTime.isValid()) {
85 dateTime = QDateTime::fromString(dateString, QStringLiteral("yyyy:MM:dd hh:mm:ss"));
87 }
88 if (!dateTime.isValid()) {
89 dateTime = QLocale().toDateTime(dateString, QLocale::ShortFormat);
91 }
92 if (!dateTime.isValid()) {
93 dateTime = QLocale().toDateTime(dateString, QLocale::LongFormat);
95 }
96 if (!dateTime.isValid()) {
97 qWarning() << "Could not determine correct datetime format from:" << dateString;
98 return QDateTime();
99 }
100
101 return dateTime;
102}
103
105{
106 QString cleanedString = string;
107 cleanedString = cleanedString.remove(QLatin1Char('{'));
108 cleanedString = cleanedString.remove(QLatin1Char('}'));
109
110 QStringList contactStrings = string.split(QLatin1Char(','), Qt::SkipEmptyParts);
111 if (contactStrings.size() == 1) {
112 contactStrings = string.split(QLatin1Char(';'), Qt::SkipEmptyParts);
113 }
114
115 if (contactStrings.size() == 1) {
116 contactStrings = string.split(QStringLiteral(" ft "), Qt::SkipEmptyParts);
117 }
118
119 if (contactStrings.size() == 1) {
120 contactStrings = string.split(QStringLiteral(" feat. "), Qt::SkipEmptyParts);
121 }
122
123 if (contactStrings.size() == 1) {
124 contactStrings = string.split(QStringLiteral(" feat "), Qt::SkipEmptyParts);
125 }
126
127 QStringList list;
128 list.reserve(contactStrings.count());
129 for (const QString& contactName : std::as_const(contactStrings)) {
130 list << contactName.trimmed();
131 }
132
133 return list;
134}
135
137{
138 const QStringList allTypes = mimetypes();
139 if (allTypes.contains(mimetype)) {
140 return mimetype;
141 }
142
143 QMimeDatabase db;
144 auto type = db.mimeTypeForName(mimetype);
145 const QStringList ancestors = type.allAncestors();
146 for (auto ancestor : ancestors) {
147 if (allTypes.contains(ancestor)) {
148 return ancestor;
149 }
150 }
151
152 return QString();
153}
154
155#include "moc_extractorplugin.cpp"
static QStringList contactsFromString(const QString &string)
Tries to split the string into names.
static QDateTime dateTimeFromString(const QString &dateString)
Tries to extract a valid date time from the string provided.
virtual QStringList mimetypes() const =0
Provide a list of mimetypes which are supported by this plugin.
QString getSupportedMimeType(const QString &mimetype) const
Return the inherited mimetype which the extractor directly supports.
QDateTime fromString(QStringView string, QStringView format, QCalendar cal)
bool isValid() const const
void setTimeZone(const QTimeZone &toZone)
qsizetype count() const const
void reserve(qsizetype size)
qsizetype size() const const
QDateTime toDateTime(const QString &string, FormatType format) const const
QMimeType mimeTypeForName(const QString &nameOrAlias) const const
QString & remove(QChar ch, Qt::CaseSensitivity cs)
bool contains(QLatin1StringView str, Qt::CaseSensitivity cs) const const
SkipEmptyParts
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:17:53 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.