File indexing completed on 2024-05-12 04:52:52
0001 /* 0002 SPDX-FileCopyrightText: 2016 Nicolas Carion 0003 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 */ 0005 0006 #include "doubleparamwidget.hpp" 0007 #include "assets/model/assetparametermodel.hpp" 0008 #include "widgets/doublewidget.h" 0009 #include <QVBoxLayout> 0010 #include <utility> 0011 0012 DoubleParamWidget::DoubleParamWidget(std::shared_ptr<AssetParameterModel> model, QModelIndex index, QWidget *parent) 0013 : AbstractParamWidget(std::move(model), index, parent) 0014 , m_doubleWidget(nullptr) 0015 { 0016 m_lay = new QVBoxLayout(this); 0017 m_lay->setContentsMargins(0, 0, 0, 0); 0018 m_lay->setSpacing(0); 0019 0020 // Retrieve parameters from the model 0021 QString name = m_model->data(m_index, Qt::DisplayRole).toString(); 0022 double value = m_model->data(m_index, AssetParameterModel::ValueRole).toDouble(); 0023 double min = m_model->data(m_index, AssetParameterModel::MinRole).toDouble(); 0024 double max = m_model->data(m_index, AssetParameterModel::MaxRole).toDouble(); 0025 double defaultValue = m_model->data(m_index, AssetParameterModel::DefaultRole).toDouble(); 0026 QString comment = m_model->data(m_index, AssetParameterModel::CommentRole).toString(); 0027 QString suffix = m_model->data(m_index, AssetParameterModel::SuffixRole).toString(); 0028 int decimals = m_model->data(m_index, AssetParameterModel::DecimalsRole).toInt(); 0029 double factor = m_model->data(m_index, AssetParameterModel::FactorRole).toDouble(); 0030 // Construct object 0031 m_doubleWidget = new DoubleWidget(name, value, min, max, factor, defaultValue, comment, -1, suffix, decimals, 0032 m_model->data(m_index, AssetParameterModel::OddRole).toBool(), this); 0033 m_lay->addWidget(m_doubleWidget); 0034 setMinimumHeight(m_doubleWidget->height()); 0035 0036 // Connect signal 0037 connect(m_doubleWidget, &DoubleWidget::valueChanged, this, [this](double val) { Q_EMIT valueChanged(m_index, QString::number(val, 'f'), true); }); 0038 slotRefresh(); 0039 } 0040 0041 void DoubleParamWidget::slotRefresh() 0042 { 0043 QSignalBlocker bk(m_doubleWidget); 0044 double value = m_model->data(m_index, AssetParameterModel::ValueRole).toDouble(); 0045 m_doubleWidget->setValue(value); 0046 } 0047 0048 void DoubleParamWidget::slotShowComment(bool show) 0049 { 0050 m_doubleWidget->slotShowComment(show); 0051 }