File indexing completed on 2024-05-12 05:52:36

0001 /*
0002     SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "kdeapplicationlistviewdelegate.h"
0008 #include "categorytypecombobox.h"
0009 #include "model/kdeapplicationloggingcategorymodel.h"
0010 
0011 KDEApplicationListViewDelegate::KDEApplicationListViewDelegate(QObject *parent)
0012     : QStyledItemDelegate(parent)
0013 {
0014 }
0015 
0016 KDEApplicationListViewDelegate::~KDEApplicationListViewDelegate() = default;
0017 
0018 QWidget *KDEApplicationListViewDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem & /*option*/, const QModelIndex & /*index*/) const
0019 {
0020     auto *comboBox = new CategoryTypeComboBox(false, parent);
0021     auto *that = const_cast<KDEApplicationListViewDelegate *>(this);
0022     connect(comboBox, &CategoryTypeComboBox::activated, this, [=]() {
0023         Q_EMIT that->commitData(mComboBox);
0024         Q_EMIT that->closeEditor(mComboBox);
0025     });
0026     const_cast<KDEApplicationListViewDelegate *>(this)->mComboBox = comboBox;
0027     return comboBox;
0028 }
0029 
0030 void KDEApplicationListViewDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
0031 {
0032     auto loggingIndex = index.model()->index(index.row(), KDEApplicationLoggingCategoryModel::LoggingTypeRole);
0033     qobject_cast<CategoryTypeComboBox *>(editor)->setType(loggingIndex.data().value<LoggingCategory::LoggingType>());
0034 }
0035 
0036 void KDEApplicationListViewDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
0037 {
0038     auto loggingIndex = index.model()->index(index.row(), KDEApplicationLoggingCategoryModel::LoggingTypeRole);
0039     model->setData(loggingIndex, qobject_cast<CategoryTypeComboBox *>(editor)->type());
0040 }
0041 
0042 void KDEApplicationListViewDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex & /*index*/) const
0043 {
0044     editor->setGeometry(option.rect);
0045 }
0046 
0047 #include "moc_kdeapplicationlistviewdelegate.cpp"