File indexing completed on 2024-05-12 15:59:02
0001 /* This file is part of the KDE project 0002 * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "KisPreExportChecker.h" 0008 #include "KisExportCheckBase.h" 0009 #include "KisExportCheckRegistry.h" 0010 0011 #include <kis_image.h> 0012 0013 KisPreExportChecker::KisPreExportChecker() 0014 { 0015 KisExportCheckRegistry::instance(); 0016 } 0017 0018 bool KisPreExportChecker::check(KisImageSP image, QMap<QString, KisExportCheckBase*> filterChecks) 0019 { 0020 bool doPerLayerChecks = false; 0021 if (filterChecks.contains("MultiLayerCheck") && filterChecks["MultiLayerCheck"]->check(image) == KisExportCheckBase::SUPPORTED) { 0022 doPerLayerChecks = true; 0023 } 0024 0025 Q_FOREACH(const QString &id, KisExportCheckRegistry::instance()->keys()) { 0026 0027 KisExportCheckFactory *factory = KisExportCheckRegistry::instance()->get(id); 0028 KisExportCheckBase *check = factory->create(KisExportCheckBase::SUPPORTED); 0029 0030 if (!doPerLayerChecks && check->perLayerCheck()) { 0031 continue; 0032 } 0033 0034 if (check->checkNeeded(image)) { 0035 if (!filterChecks.contains(id)) { 0036 m_warnings << check->warning(); 0037 } 0038 else { 0039 KisExportCheckBase *filterCheck = filterChecks[id]; 0040 KisExportCheckBase::Level level = filterCheck->check(image); 0041 QString warning = filterCheck->warning(); 0042 0043 if (level == KisExportCheckBase::PARTIALLY) { 0044 m_warnings << warning; 0045 } 0046 else if (level == KisExportCheckBase::UNSUPPORTED) { 0047 m_errors << warning; 0048 } 0049 else { 0050 continue; 0051 } 0052 } 0053 } 0054 delete check; 0055 } 0056 return m_warnings.isEmpty() && m_errors.isEmpty(); 0057 } 0058 0059 QStringList KisPreExportChecker::errors() const 0060 { 0061 return m_errors; 0062 } 0063 0064 0065 QStringList KisPreExportChecker::warnings() const 0066 { 0067 return m_warnings; 0068 } 0069