┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicolas Fella <[email protected]>2023-07-08 23:46:29 +0200
committerNicolas Fella <[email protected]>2023-07-09 00:21:42 +0200
commitc34b2f04fd540622a671e4848a37e509a6721d2c (patch)
tree5fff644b958d34919042e82f1ec373d1a775d118 /src
parent31a8866ac0aa3966cd77e87e14974f0a6a66f940 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/settings/contextmenu/contextmenusettingspage.cpp5
-rw-r--r--src/settings/general/previewssettingspage.cpp1
-rw-r--r--src/settings/serviceitemdelegate.cpp109
-rw-r--r--src/settings/serviceitemdelegate.h42
-rw-r--r--src/settings/servicemodel.cpp10
-rw-r--r--src/settings/servicemodel.h3
7 files changed, 5 insertions, 169 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9cd4e2932..5a481e39f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -300,7 +300,6 @@ target_sources(dolphinstatic PRIVATE
settings/navigation/navigationsettingspage.cpp
settings/contextmenu/contextmenusettingspage.cpp
settings/settingspagebase.cpp
- settings/serviceitemdelegate.cpp
settings/servicemodel.cpp
settings/startup/startupsettingspage.cpp
settings/trash/trashsettingspage.cpp
@@ -359,7 +358,6 @@ target_sources(dolphinstatic PRIVATE
settings/navigation/navigationsettingspage.h
settings/contextmenu/contextmenusettingspage.h
settings/settingspagebase.h
- settings/serviceitemdelegate.h
settings/servicemodel.h
settings/startup/startupsettingspage.h
settings/trash/trashsettingspage.h
@@ -531,14 +529,12 @@ if(NOT WIN32)
settings/general/previewssettingspage.cpp
settings/general/confirmationssettingspage.cpp
settings/settingspagebase.cpp
- settings/serviceitemdelegate.cpp
settings/servicemodel.cpp
settings/kcm/kcmdolphingeneral.h
settings/general/behaviorsettingspage.h
settings/general/previewssettingspage.h
settings/general/confirmationssettingspage.h
settings/settingspagebase.h
- settings/serviceitemdelegate.h
settings/servicemodel.h
)
diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp
index 07deb778a..eeaf3c168 100644
--- a/src/settings/contextmenu/contextmenusettingspage.cpp
+++ b/src/settings/contextmenu/contextmenusettingspage.cpp
@@ -10,7 +10,6 @@
#include "dolphin_generalsettings.h"
#include "dolphin_versioncontrolsettings.h"
#include "global.h"
-#include "settings/serviceitemdelegate.h"
#include "settings/servicemodel.h"
#include <KDesktopFile>
@@ -72,7 +71,6 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC
m_listView = new QListView(this);
QScroller::grabGesture(m_listView->viewport(), QScroller::TouchGesture);
- auto *delegate = new ServiceItemDelegate(m_listView, m_listView);
m_serviceModel = new ServiceModel(this);
m_sortModel = new QSortFilterProxyModel(this);
m_sortModel->setSourceModel(m_serviceModel);
@@ -81,7 +79,6 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC
m_sortModel->setFilterRole(Qt::DisplayRole);
m_sortModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
m_listView->setModel(m_sortModel);
- m_listView->setItemDelegate(delegate);
m_listView->setVerticalScrollMode(QListView::ScrollPerPixel);
connect(m_listView, &QListView::clicked, this, &ContextMenuSettingsPage::changed);
@@ -267,7 +264,7 @@ void ContextMenuSettingsPage::showEvent(QShowEvent *event)
for (const QString &id : m_actionIds) {
const QAction *action = m_actions->action(id);
if (action) {
- addRow(action->icon().name(), action->text(), id, entryVisible(id));
+ addRow(action->icon().name(), KLocalizedString::removeAcceleratorMarker(action->text()), id, entryVisible(id));
}
}
}
diff --git a/src/settings/general/previewssettingspage.cpp b/src/settings/general/previewssettingspage.cpp
index 1e96025fd..dd1ce942e 100644
--- a/src/settings/general/previewssettingspage.cpp
+++ b/src/settings/general/previewssettingspage.cpp
@@ -7,7 +7,6 @@
#include "previewssettingspage.h"
#include "dolphin_generalsettings.h"
-#include "settings/serviceitemdelegate.h"
#include "settings/servicemodel.h"
#include <KIO/PreviewJob>
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 <[email protected]>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "serviceitemdelegate.h"
-
-#include "servicemodel.h"
-
-#include <QAbstractItemView>
-#include <QCheckBox>
-#include <QPainter>
-#include <QPushButton>
-
-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<QWidget *> 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<QWidget *> &widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const
-{
- QCheckBox *checkBox = static_cast<QCheckBox *>(widgets[0]);
- QPushButton *configureButton = static_cast<QPushButton *>(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::CheckState>() == 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<QAbstractItemModel *>(focusedIndex().model());
- model->setData(focusedIndex(), checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
-}
-
-void ServiceItemDelegate::slotConfigureButtonClicked()
-{
- Q_EMIT requestServiceConfiguration(focusedIndex());
-}
-
-#include "moc_serviceitemdelegate.cpp"
diff --git a/src/settings/serviceitemdelegate.h b/src/settings/serviceitemdelegate.h
deleted file mode 100644
index d7b243878..000000000
--- a/src/settings/serviceitemdelegate.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2011 Peter Penz <[email protected]>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#ifndef SERVICEITEMDELEGATE_H
-#define SERVICEITEMDELEGATE_H
-
-#include <KWidgetItemDelegate>
-
-/**
- * @brief Widget item delegate for a service that can be enabled or disabled.
- *
- * Additionally it is possible to configure a service.
- * @see ServiceModel
- */
-class ServiceItemDelegate : public KWidgetItemDelegate
-{
- Q_OBJECT
-
-public:
- explicit ServiceItemDelegate(QAbstractItemView *itemView, QObject *parent = nullptr);
- ~ServiceItemDelegate() override;
-
- QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
-
- void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
-
- QList<QWidget *> createItemWidgets(const QModelIndex &) const override;
-
- void updateItemWidgets(const QList<QWidget *> &widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const override;
-
-Q_SIGNALS:
- void requestServiceConfiguration(const QModelIndex &index);
-
-private Q_SLOTS:
- void slotCheckBoxClicked(bool checked);
- void slotConfigureButtonClicked();
-};
-
-#endif
diff --git a/src/settings/servicemodel.cpp b/src/settings/servicemodel.cpp
index 5333e88b9..c2ebda7c1 100644
--- a/src/settings/servicemodel.cpp
+++ b/src/settings/servicemodel.cpp
@@ -6,6 +6,8 @@
#include "servicemodel.h"
+#include <QIcon>
+
ServiceModel::ServiceModel(QObject *parent)
: QAbstractListModel(parent)
, m_items()
@@ -30,7 +32,6 @@ bool ServiceModel::insertRows(int row, int count, const QModelIndex &parent)
for (int i = 0; i < count; ++i) {
ServiceItem item;
item.checked = Qt::Unchecked;
- item.configurable = false;
m_items.insert(row, item);
}
endInsertRows();
@@ -49,9 +50,6 @@ bool ServiceModel::setData(const QModelIndex &index, const QVariant &value, int
case Qt::CheckStateRole:
m_items[row].checked = value.value<Qt::CheckState>();
break;
- case ConfigurableRole:
- m_items[row].configurable = value.toBool();
- break;
case Qt::DecorationRole:
m_items[row].icon = value.toString();
break;
@@ -74,12 +72,10 @@ QVariant ServiceModel::data(const QModelIndex &index, int role) const
const int row = index.row();
if (row < rowCount()) {
switch (role) {
- case ConfigurableRole:
- return m_items[row].configurable;
case Qt::CheckStateRole:
return m_items[row].checked;
case Qt::DecorationRole:
- return m_items[row].icon;
+ return QIcon::fromTheme(m_items[row].icon);
case Qt::DisplayRole:
return m_items[row].text;
case DesktopEntryNameRole:
diff --git a/src/settings/servicemodel.h b/src/settings/servicemodel.h
index 7a8607926..0abe1fe46 100644
--- a/src/settings/servicemodel.h
+++ b/src/settings/servicemodel.h
@@ -25,7 +25,7 @@ class ServiceModel : public QAbstractListModel
Q_OBJECT
public:
- enum Role { DesktopEntryNameRole = Qt::UserRole, ConfigurableRole };
+ enum Role { DesktopEntryNameRole = Qt::UserRole };
explicit ServiceModel(QObject *parent = nullptr);
~ServiceModel() override;
@@ -40,7 +40,6 @@ public:
private:
struct ServiceItem {
Qt::CheckState checked;
- bool configurable;
QString icon;
QString text;
QString desktopEntryName;