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 }