File indexing completed on 2024-05-12 05:37:17

0001 /*
0002     SPDX-FileCopyrightText: 2007 Marco Martin <notmart@gmail.com>
0003     SPDX-FileCopyrightText: 2013 Andrea Scarpino <scarpino@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "favicons.h"
0009 
0010 #include <QImage>
0011 #include <QPixmap>
0012 
0013 #include "faviconprovider.h"
0014 
0015 FaviconsEngine::FaviconsEngine(QObject *parent)
0016     : Plasma5Support::DataEngine(parent)
0017 {
0018 }
0019 
0020 FaviconsEngine::~FaviconsEngine()
0021 {
0022 }
0023 
0024 bool FaviconsEngine::updateSourceEvent(const QString &identifier)
0025 {
0026     FaviconProvider *provider = new FaviconProvider(this, identifier);
0027 
0028     connect(provider, &FaviconProvider::finished, this, &FaviconsEngine::finished);
0029     connect(provider, &FaviconProvider::error, this, &FaviconsEngine::error);
0030 
0031     if (!provider->image().isNull()) {
0032         setData(provider->identifier(), QStringLiteral("Icon"), provider->image());
0033     }
0034 
0035     return true;
0036 }
0037 
0038 bool FaviconsEngine::sourceRequestEvent(const QString &identifier)
0039 {
0040     setData(identifier, QPixmap());
0041     return updateSourceEvent(identifier);
0042 }
0043 
0044 void FaviconsEngine::finished(FaviconProvider *provider)
0045 {
0046     setData(provider->identifier(), QStringLiteral("Icon"), provider->image());
0047     provider->deleteLater();
0048 }
0049 
0050 void FaviconsEngine::error(FaviconProvider *provider)
0051 {
0052     setData(provider->identifier(), QImage());
0053     provider->deleteLater();
0054 }
0055 
0056 K_PLUGIN_CLASS_WITH_JSON(FaviconsEngine, "plasma-dataengine-favicons.json")
0057 
0058 #include "favicons.moc"