File indexing completed on 2024-05-05 04:05:48

0001 /*
0002     SPDX-FileCopyrightText: 2010 Stefan Majewsky <majewsky@gmx.net>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "slicermode.h"
0008 #include "slicerproperty.h"
0009 
0010 class Pala::SlicerModePrivate
0011 {
0012     public:
0013         QByteArray m_key;
0014         QString m_name;
0015 
0016         QHash<QByteArray, bool> m_propertyEnabledExceptions;
0017 };
0018 
0019 Pala::SlicerMode::SlicerMode(const QByteArray& key, const QString& name)
0020     : d_ptr(new Pala::SlicerModePrivate)
0021 {
0022     Q_D(SlicerMode);
0023     d->m_key = key;
0024     d->m_name = name;
0025 }
0026 
0027 Pala::SlicerMode::~SlicerMode() = default;
0028 
0029 void Pala::SlicerMode::filterProperties(QList<const Pala::SlicerProperty*>& properties) const
0030 {
0031     Q_D(const SlicerMode);
0032     QMutableListIterator<const Pala::SlicerProperty*> iter(properties);
0033     while (iter.hasNext())
0034     {
0035         const Pala::SlicerProperty* property = iter.next();
0036         bool isEnabled = property->isEnabled();
0037         if (d->m_propertyEnabledExceptions.contains(property->key()))
0038             isEnabled = d->m_propertyEnabledExceptions.value(property->key());
0039         if (!isEnabled)
0040             iter.remove();
0041     }
0042 }
0043 
0044 QByteArray Pala::SlicerMode::key() const
0045 {
0046     Q_D(const SlicerMode);
0047     return d->m_key;
0048 }
0049 
0050 QString Pala::SlicerMode::name() const
0051 {
0052     Q_D(const SlicerMode);
0053     return d->m_name;
0054 }
0055 
0056 void Pala::SlicerMode::setPropertyEnabled(const QByteArray& property, bool enabled)
0057 {
0058     Q_D(SlicerMode);
0059     d->m_propertyEnabledExceptions.insert(property, enabled);
0060 }