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