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
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
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
)
#include "dolphin_generalsettings.h"
#include "dolphin_versioncontrolsettings.h"
#include "global.h"
-#include "settings/serviceitemdelegate.h"
#include "settings/servicemodel.h"
#include <KDesktopFile>
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);
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);
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));
}
}
}
#include "previewssettingspage.h"
#include "dolphin_generalsettings.h"
-#include "settings/serviceitemdelegate.h"
#include "settings/servicemodel.h"
#include <KIO/PreviewJob>
+++ /dev/null
-/*
- * 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"
+++ /dev/null
-/*
- * 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
#include "servicemodel.h"
+#include <QIcon>
+
ServiceModel::ServiceModel(QObject *parent)
: QAbstractListModel(parent)
, m_items()
for (int i = 0; i < count; ++i) {
ServiceItem item;
item.checked = Qt::Unchecked;
- item.configurable = false;
m_items.insert(row, item);
}
endInsertRows();
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;
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:
Q_OBJECT
public:
- enum Role { DesktopEntryNameRole = Qt::UserRole, ConfigurableRole };
+ enum Role { DesktopEntryNameRole = Qt::UserRole };
explicit ServiceModel(QObject *parent = nullptr);
~ServiceModel() override;
private:
struct ServiceItem {
Qt::CheckState checked;
- bool configurable;
QString icon;
QString text;
QString desktopEntryName;