File indexing completed on 2024-05-19 04:07:48
0001 /* 0002 SPDX-FileCopyrightText: 2009, 2010 Stefan Majewsky <majewsky@gmx.net> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "slicerconfwidget.h" 0008 #include "propertywidget.h" 0009 0010 #include <Pala/Slicer> 0011 #include <Pala/SlicerMode> 0012 #include <Pala/SlicerProperty> 0013 0014 #include <QFormLayout> 0015 0016 Palapeli::SlicerConfigWidget::SlicerConfigWidget(const Pala::Slicer* slicer) 0017 : m_layout(new QFormLayout) 0018 { 0019 setLayout(m_layout); 0020 //create property widgets 0021 const QList<const Pala::SlicerProperty*> properties = slicer->propertyList(); 0022 for (const Pala::SlicerProperty* property : properties) 0023 { 0024 Palapeli::PropertyWidget* propWidget = Palapeli::createPropertyWidget(property); 0025 Entry entry = { property, propWidget }; 0026 m_entries << entry; 0027 m_layout->addRow(property->caption() + QLatin1Char(':'), propWidget); 0028 } 0029 } 0030 0031 QMap<QByteArray, QVariant> Palapeli::SlicerConfigWidget::arguments() const 0032 { 0033 QMap<QByteArray, QVariant> result; 0034 for (const Entry& entry : m_entries) 0035 result.insert(entry.property->key(), entry.widget->propertyValue()); 0036 return result; 0037 } 0038 0039 void Palapeli::SlicerConfigWidget::setMode(const Pala::SlicerMode* mode) 0040 { 0041 //determine enabled properties 0042 QList<const Pala::SlicerProperty*> enabledProps; 0043 for (const Entry& entry : std::as_const(m_entries)) 0044 enabledProps << entry.property; 0045 if (mode) 0046 mode->filterProperties(enabledProps); 0047 //update widget visibility according to enabled/disabled state 0048 for (const Entry& entry : std::as_const(m_entries)) 0049 { 0050 const bool isVisible = enabledProps.contains(entry.property); 0051 entry.widget->setVisible(isVisible); 0052 m_layout->labelForField(entry.widget)->setVisible(isVisible); 0053 } 0054 }