File indexing completed on 2024-04-28 04:58:04

0001 /*
0002     windowsimagecreator.cpp - Thumbnail Creator for Microsoft Windows Images
0003 
0004     SPDX-FileCopyrightText: 2009 Pali Rohár <pali.rohar@gmail.com>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "windowsimagecreator.h"
0010 #include "icoutils.h"
0011 
0012 #include <QImage>
0013 #include <QImageReader>
0014 #include <QMimeDatabase>
0015 #include <QString>
0016 
0017 #include <KPluginFactory>
0018 
0019 K_PLUGIN_CLASS_WITH_JSON(WindowsImageCreator, "windowsimagethumbnail.json")
0020 
0021 WindowsImageCreator::WindowsImageCreator(QObject *parent, const QVariantList &args)
0022     : KIO::ThumbnailCreator(parent, args)
0023 {
0024 }
0025 
0026 KIO::ThumbnailResult WindowsImageCreator::create(const KIO::ThumbnailRequest &request)
0027 {
0028     const QString path = request.url().toLocalFile();
0029     QImage img;
0030     if (IcoUtils::loadIcoImage(path, img, request.targetSize().width(), request.targetSize().height())) {
0031         return KIO::ThumbnailResult::pass(img);
0032     }
0033 
0034     // Maybe it's an animated cursor
0035     if (QMimeDatabase().mimeTypeForFile(path).name() == QLatin1String("application/x-navi-animation")) {
0036         QImageReader reader(path, "ani");
0037         reader.read(&img);
0038         return KIO::ThumbnailResult::pass(img);
0039     }
0040 
0041     return KIO::ThumbnailResult::fail();
0042 }
0043 
0044 #include "moc_windowsimagecreator.cpp"
0045 #include "windowsimagecreator.moc"