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"