File indexing completed on 2024-05-19 04:53:51

0001 /*
0002     SPDX-FileCopyrightText: 2016 Nicolas Carion
0003     SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 #include "keywordparamwidget.hpp"
0007 #include "assets/model/assetparametermodel.hpp"
0008 
0009 KeywordParamWidget::KeywordParamWidget(std::shared_ptr<AssetParameterModel> model, QModelIndex index, QWidget *parent)
0010     : AbstractParamWidget(std::move(model), index, parent)
0011 {
0012     setupUi(this);
0013 
0014     // setup the comment
0015     QString comment = m_model->data(m_index, AssetParameterModel::CommentRole).toString();
0016     setToolTip(comment);
0017 
0018     // setup the name
0019     label->setText(m_model->data(m_index, Qt::DisplayRole).toString());
0020 
0021     QStringList kwrdValues = m_model->data(m_index, AssetParameterModel::ListValuesRole).toStringList();
0022     QStringList kwrdNames = m_model->data(m_index, AssetParameterModel::ListNamesRole).toStringList();
0023     comboboxwidget->addItems(kwrdNames);
0024     int i = 0;
0025     for (const QString &keywordVal : qAsConst(kwrdValues)) {
0026         if (i >= comboboxwidget->count()) {
0027             break;
0028         }
0029         comboboxwidget->setItemData(i, keywordVal);
0030         i++;
0031     }
0032     comboboxwidget->insertItem(0, i18n("<Select a Keyword>"));
0033     comboboxwidget->setCurrentIndex(0);
0034     // set check state
0035     slotRefresh();
0036     setMinimumHeight(comboboxwidget->sizeHint().height());
0037 
0038     // Q_EMIT the signal of the base class when appropriate
0039     connect(lineeditwidget, &QLineEdit::editingFinished, this, [this]() { Q_EMIT valueChanged(m_index, lineeditwidget->text(), true); });
0040     connect(comboboxwidget, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, [this](int ix) {
0041         if (ix > 0) {
0042             QString comboval = comboboxwidget->itemData(ix).toString();
0043             this->lineeditwidget->insert(comboval);
0044             Q_EMIT valueChanged(m_index, lineeditwidget->text(), true);
0045             comboboxwidget->setCurrentIndex(0);
0046         }
0047     });
0048 }
0049 
0050 void KeywordParamWidget::slotShowComment(bool show)
0051 {
0052     Q_UNUSED(show);
0053 }
0054 
0055 void KeywordParamWidget::slotRefresh()
0056 {
0057     lineeditwidget->setText(m_model->data(m_index, AssetParameterModel::ValueRole).toString());
0058 }