File indexing completed on 2024-04-28 03:43:07
0001 /* Ekos Filter Delegates 0002 0003 Collection of delegates assigned to each individual column 0004 in the table view. 0005 0006 SPDX-FileCopyrightText: 2017 Jasem Mutlaq <mutlaqja@ikarustech.com> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #pragma once 0012 0013 #include <QStyledItemDelegate> 0014 #include <QItemDelegate> 0015 0016 class QCheckBox; 0017 class QSpinBox; 0018 class QDoubleSpinBox; 0019 class QComboBox; 0020 0021 class NotEditableDelegate : public QStyledItemDelegate 0022 { 0023 Q_OBJECT 0024 public: 0025 explicit NotEditableDelegate(QObject *parent = nullptr) 0026 : QStyledItemDelegate(parent) 0027 {} 0028 0029 protected: 0030 bool editorEvent(QEvent *, QAbstractItemModel *, const QStyleOptionViewItem &, const QModelIndex &) override 0031 { 0032 return false; 0033 } 0034 QWidget* createEditor(QWidget *, const QStyleOptionViewItem &, const QModelIndex &) const override 0035 { 0036 return nullptr; 0037 } 0038 }; 0039 0040 class UseAutoFocusDelegate : public QItemDelegate 0041 { 0042 Q_OBJECT 0043 public: 0044 explicit UseAutoFocusDelegate(QObject *parent = nullptr) : QItemDelegate(parent) {} 0045 0046 QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0047 void setEditorData(QWidget *, const QModelIndex &index) const override; 0048 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0049 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; 0050 void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0051 bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &, const QModelIndex &index) override; 0052 0053 private: 0054 mutable QCheckBox *cb = { nullptr }; 0055 }; 0056 0057 class ExposureDelegate : public QStyledItemDelegate 0058 { 0059 Q_OBJECT 0060 public: 0061 explicit ExposureDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {} 0062 0063 QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0064 void setEditorData(QWidget *, const QModelIndex &index) const override; 0065 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; 0066 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0067 0068 private: 0069 mutable QDoubleSpinBox *spinbox = { nullptr }; 0070 }; 0071 0072 class OffsetDelegate : public QStyledItemDelegate 0073 { 0074 Q_OBJECT 0075 public: 0076 explicit OffsetDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {} 0077 0078 QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0079 void setEditorData(QWidget *, const QModelIndex &index) const override; 0080 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; 0081 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0082 0083 private: 0084 mutable QSpinBox *spinbox = { nullptr }; 0085 }; 0086 0087 class LockDelegate : public QStyledItemDelegate 0088 { 0089 Q_OBJECT 0090 public: 0091 explicit LockDelegate(QStringList filterList, QObject *parent = nullptr); 0092 0093 QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0094 void setEditorData(QWidget *, const QModelIndex &index) const override; 0095 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; 0096 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0097 void setCurrentFilterList(const QStringList &list); 0098 0099 private: 0100 mutable QComboBox *lockbox = { nullptr }; 0101 QStringList m_FilterList; 0102 }; 0103