From c34b2f04fd540622a671e4848a37e509a6721d2c Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Sat, 8 Jul 2023 23:46:29 +0200 Subject: Replace ServiceItemDelegate with standard Qt item delegate We don't need a custom delegate here Using the standard one from Qt also slightly improves margins --- src/settings/serviceitemdelegate.cpp | 109 ----------------------------------- 1 file changed, 109 deletions(-) delete mode 100644 src/settings/serviceitemdelegate.cpp (limited to 'src/settings/serviceitemdelegate.cpp') diff --git a/src/settings/serviceitemdelegate.cpp b/src/settings/serviceitemdelegate.cpp deleted file mode 100644 index 929e699d8..000000000 --- a/src/settings/serviceitemdelegate.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 Peter Penz - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "serviceitemdelegate.h" - -#include "servicemodel.h" - -#include -#include -#include -#include - -ServiceItemDelegate::ServiceItemDelegate(QAbstractItemView *itemView, QObject *parent) - : KWidgetItemDelegate(itemView, parent) -{ -} - -ServiceItemDelegate::~ServiceItemDelegate() -{ -} - -QSize ServiceItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(index) - - const QStyle *style = itemView()->style(); - const int buttonHeight = style->pixelMetric(QStyle::PM_ButtonMargin) * 2 + style->pixelMetric(QStyle::PM_ButtonIconSize); - const int fontHeight = option.fontMetrics.height(); - return QSize(100, qMax(buttonHeight, fontHeight)); -} - -void ServiceItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(index) - painter->save(); - - itemView()->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter); - - if (option.state & QStyle::State_Selected) { - painter->setPen(option.palette.highlightedText().color()); - } - - painter->restore(); -} - -QList ServiceItemDelegate::createItemWidgets(const QModelIndex &) const -{ - QCheckBox *checkBox = new QCheckBox(); - QPalette palette = checkBox->palette(); - palette.setColor(QPalette::WindowText, palette.color(QPalette::Text)); - checkBox->setPalette(palette); - connect(checkBox, &QCheckBox::clicked, this, &ServiceItemDelegate::slotCheckBoxClicked); - - QPushButton *configureButton = new QPushButton(); - connect(configureButton, &QPushButton::clicked, this, &ServiceItemDelegate::slotConfigureButtonClicked); - - return {checkBox, configureButton}; -} - -void ServiceItemDelegate::updateItemWidgets(const QList &widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const -{ - QCheckBox *checkBox = static_cast(widgets[0]); - QPushButton *configureButton = static_cast(widgets[1]); - - const int itemHeight = sizeHint(option, index).height(); - - // Update the checkbox showing the service name and icon - const QAbstractItemModel *model = index.model(); - checkBox->setText(model->data(index).toString()); - const QString iconName = model->data(index, Qt::DecorationRole).toString(); - if (!iconName.isEmpty()) { - checkBox->setIcon(QIcon::fromTheme(iconName)); - } - checkBox->setChecked(model->data(index, Qt::CheckStateRole).value() == Qt::Checked); - - const bool configurable = model->data(index, ServiceModel::ConfigurableRole).toBool(); - - int checkBoxWidth = option.rect.width(); - if (configurable) { - checkBoxWidth -= configureButton->sizeHint().width(); - } - checkBox->resize(checkBoxWidth, checkBox->sizeHint().height()); - checkBox->move(0, (itemHeight - checkBox->height()) / 2); - - // Update the configuration button - if (configurable) { - configureButton->setEnabled(checkBox->isChecked()); - configureButton->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); - configureButton->resize(configureButton->sizeHint()); - configureButton->move(option.rect.right() - configureButton->width(), (itemHeight - configureButton->height()) / 2); - } - configureButton->setVisible(configurable); -} - -void ServiceItemDelegate::slotCheckBoxClicked(bool checked) -{ - QAbstractItemModel *model = const_cast(focusedIndex().model()); - model->setData(focusedIndex(), checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole); -} - -void ServiceItemDelegate::slotConfigureButtonClicked() -{ - Q_EMIT requestServiceConfiguration(focusedIndex()); -} - -#include "moc_serviceitemdelegate.cpp" -- cgit v1.3