File indexing completed on 2024-05-12 16:01:33

0001 /*
0002  * SPDX-FileCopyrightText: 2015 Stefano Bonicatti <smjert@gmail.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 #include "kis_md5_generator.h"
0007 
0008 #include <kis_debug.h>
0009 #include <KoStore.h>
0010 
0011 KisMD5Generator::KisMD5Generator()
0012 {
0013 
0014 }
0015 
0016 KisMD5Generator::~KisMD5Generator()
0017 {
0018 
0019 }
0020 
0021 QByteArray KisMD5Generator::generateHash(const QString &filename)
0022 {
0023     QByteArray ba;
0024     if(filename.startsWith("bundle://")) {
0025         QString bn = filename.mid(9);
0026         int pos = bn.lastIndexOf(":");
0027         QString fn = bn.right(bn.size() - pos - 1);
0028         bn = bn.left(pos);
0029 
0030         QScopedPointer<KoStore> resourceStore(KoStore::createStore(bn, KoStore::Read, "application/x-krita-resourcebundle", KoStore::Zip));
0031         if (!resourceStore || resourceStore->bad()) {
0032             warnKrita << "Could not open store on bundle" << bn;
0033             return ba;
0034         }
0035 
0036         if (resourceStore->isOpen()) resourceStore->close();
0037 
0038         if (!resourceStore->open(fn)) {
0039             warnKrita << "Could not open preset" << fn << "in bundle" << bn;
0040             return ba;
0041         }
0042 
0043         ba = resourceStore->device()->readAll();
0044 
0045         resourceStore->close();
0046         return KoMD5Generator::generateHash(ba);
0047 
0048     }
0049 
0050     return KoMD5Generator::generateHash(filename);
0051 }