File indexing completed on 2024-05-12 15:51:17

0001 // SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu>
0002 // SPDX-License-Identifier: LGPL-2.1-only or LGPL-3.0-only or LicenseRef-KDE-Accepted-LGPL
0003 
0004 #include "manualcontentlister.h"
0005 #include "contentquery.h"
0006 #include <QDebug>
0007 #include <QMimeDatabase>
0008 #include <QUrl>
0009 #include <QVariant>
0010 
0011 class ManualContentLister::Private
0012 {
0013 public:
0014     Private(ManualContentLister *qq)
0015         : q(qq)
0016     {
0017     }
0018     ManualContentLister *q = nullptr;
0019     QList<ContentQuery *> queries;
0020     QMimeDatabase mimeDatabase;
0021 };
0022 
0023 ManualContentLister::ManualContentLister(QObject *parent)
0024     : ContentListerBase(parent)
0025     , d(std::make_unique<ManualContentLister::Private>(this))
0026 {
0027 }
0028 
0029 ManualContentLister::~ManualContentLister() = default;
0030 
0031 void ManualContentLister::startSearch(const QList<ContentQuery *> &queries)
0032 {
0033     d->queries = queries;
0034 }
0035 
0036 bool ManualContentLister::addFile(const QUrl &filePath)
0037 {
0038     const auto &mimeType = d->mimeDatabase.mimeTypeForFile(filePath.toLocalFile()).name();
0039     bool mimeTypeAccepted = false;
0040     for (const auto &query : std::as_const(d->queries)) {
0041         if (query->mimeTypes().contains(mimeType)) {
0042             mimeTypeAccepted = true;
0043         }
0044     }
0045     if (!mimeTypeAccepted) {
0046         return false;
0047     }
0048 
0049     auto metadata = ContentListerBase::metaDataForFile(filePath.toLocalFile());
0050 
0051     Q_EMIT fileFound(filePath.toLocalFile(), metadata);
0052 
0053     return true;
0054 }
0055 
0056 #include "moc_manualcontentlister.cpp"