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 }