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 }