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"