File indexing completed on 2024-04-28 15:09:10

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