File indexing completed on 2024-06-23 05:08:09
0001 /* 0002 This file is part of KOrganizer. 0003 0004 SPDX-FileCopyrightText: 2008 Thomas Thrainer <tom_t@gmx.at> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 0007 */ 0008 0009 #pragma once 0010 0011 #include <QStyledItemDelegate> 0012 0013 class QPainter; 0014 class QSize; 0015 class QStyleOptionViewItem; 0016 class QTextDocument; 0017 0018 /** 0019 This delegate is responsible for displaying progress bars for the completion 0020 status of indivitual todos. It also provides a slider to change the completion 0021 status of the todo when in editing mode. 0022 0023 @author Thomas Thrainer 0024 */ 0025 class TodoCompleteDelegate : public QStyledItemDelegate 0026 { 0027 Q_OBJECT 0028 public: 0029 explicit TodoCompleteDelegate(QObject *parent = nullptr); 0030 0031 void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0032 QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0033 0034 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0035 void setEditorData(QWidget *editor, const QModelIndex &index) const override; 0036 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; 0037 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0038 0039 private: 0040 void initStyleOptionProgressBar(QStyleOptionProgressBar *option, const QModelIndex &index) const; 0041 }; 0042 0043 class TodoCompleteSlider : public QSlider 0044 { 0045 Q_OBJECT 0046 0047 public: 0048 explicit TodoCompleteSlider(QWidget *parent); 0049 0050 private Q_SLOTS: 0051 void updateTip(int value); 0052 }; 0053 0054 /** 0055 This delegate is responsible for displaying the priority of todos. 0056 It also provides a combo box to change the priority of the todo 0057 when in editing mode. 0058 0059 @author Thomas Thrainer 0060 */ 0061 class TodoPriorityDelegate : public QStyledItemDelegate 0062 { 0063 Q_OBJECT 0064 public: 0065 explicit TodoPriorityDelegate(QObject *parent = nullptr); 0066 0067 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0068 void setEditorData(QWidget *editor, const QModelIndex &index) const override; 0069 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; 0070 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0071 }; 0072 0073 /** 0074 This delegate is responsible for displaying the due date of todos. 0075 It also provides a combo box to change the due date of the todo 0076 when in editing mode. 0077 0078 @author Thomas Thrainer 0079 */ 0080 class TodoDueDateDelegate : public QStyledItemDelegate 0081 { 0082 Q_OBJECT 0083 public: 0084 explicit TodoDueDateDelegate(QObject *parent = nullptr); 0085 0086 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0087 void setEditorData(QWidget *editor, const QModelIndex &index) const override; 0088 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; 0089 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0090 }; 0091 0092 /** 0093 This delegate is responsible for displaying the categories of todos. 0094 It also provides a combo box to change the categories of the todo 0095 when in editing mode. 0096 0097 @author Thomas Thrainer 0098 */ 0099 class TodoCategoriesDelegate : public QStyledItemDelegate 0100 { 0101 Q_OBJECT 0102 public: 0103 explicit TodoCategoriesDelegate(QObject *parent = nullptr); 0104 0105 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0106 void setEditorData(QWidget *editor, const QModelIndex &index) const override; 0107 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; 0108 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0109 }; 0110 0111 /** 0112 This delegate is responsible for displaying possible rich text elements 0113 of a todo. That's the summary and the description. 0114 0115 @author Thomas Thrainer 0116 */ 0117 class TodoRichTextDelegate : public QStyledItemDelegate 0118 { 0119 Q_OBJECT 0120 public: 0121 explicit TodoRichTextDelegate(QObject *parent = nullptr); 0122 0123 void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0124 QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0125 0126 private: 0127 QTextDocument *m_textDoc = nullptr; 0128 };