]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Replace ServiceItemDelegate with standard Qt item delegate
authorNicolas Fella <nicolas.fella@gmx.de>
Sat, 8 Jul 2023 21:46:29 +0000 (23:46 +0200)
committerNicolas Fella <nicolas.fella@gmx.de>
Sat, 8 Jul 2023 22:21:42 +0000 (00:21 +0200)
We don't need a custom delegate here

Using the standard one from Qt also slightly improves margins

src/CMakeLists.txt
src/settings/contextmenu/contextmenusettingspage.cpp
src/settings/general/previewssettingspage.cpp
src/settings/serviceitemdelegate.cpp [deleted file]
src/settings/serviceitemdelegate.h [deleted file]
src/settings/servicemodel.cpp
src/settings/servicemodel.h

index 9cd4e2932c5ce92f7409745746b7b4a246654ffa..5a481e39ff4b4e89ff3f87ebb3f1c4f74bffd0b6 100644 (file)
@@ -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
     )
 
index 07deb778a29daada9ec6c36e8af0e119cf6180ff..eeaf3c168773d924bf45b28d2051712d6d29ecc4 100644 (file)
@@ -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));
                 }
             }
         }
index 1e96025fd502545d4710dba44de6085ca3468e8c..dd1ce942e076ee94898addf935e2ce2b94dad308 100644 (file)
@@ -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 (file)
index 929e699..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
- *
- * 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 (file)
index d7b2438..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
- *
- * 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
index 5333e88b957b1e6c662d007378466ea380ae401a..c2ebda7c16338e74bb2b6c8932cca8abe30c9e1d 100644 (file)
@@ -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:
index 7a8607926d59d1ecd14eb95cf4582fba14a6df94..0abe1fe46f339c060000ae696878b6cbc8d55d7b 100644 (file)
@@ -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;