Krita Source Code Documentation
Loading...
Searching...
No Matches
CommentDelegate Class Reference

Paints the comment menu of the storyboard docker and creates widgets for editing data in CommentModel. More...

#include <CommentDelegate.h>

+ Inheritance diagram for CommentDelegate:

Public Member Functions

 CommentDelegate (QObject *parent)
 
QWidget * createEditor (QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
 
bool editorEvent (QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override
 
void paint (QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
 
void setEditorData (QWidget *editor, const QModelIndex &index) const override
 
void setModelData (QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
 
QSize sizeHint (const QStyleOptionViewItem &option, const QModelIndex &index) const override
 
void updateEditorGeometry (QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override
 
 ~CommentDelegate () override
 

Detailed Description

Paints the comment menu of the storyboard docker and creates widgets for editing data in CommentModel.

Definition at line 19 of file CommentDelegate.h.

Constructor & Destructor Documentation

◆ CommentDelegate()

CommentDelegate::CommentDelegate ( QObject * parent)

Definition at line 19 of file CommentDelegate.cpp.

20 : QStyledItemDelegate(parent)
21{
22}

◆ ~CommentDelegate()

CommentDelegate::~CommentDelegate ( )
override

Definition at line 24 of file CommentDelegate.cpp.

25{
26}

Member Function Documentation

◆ createEditor()

QWidget * CommentDelegate::createEditor ( QWidget * parent,
const QStyleOptionViewItem & option,
const QModelIndex & index ) const
override

Definition at line 61 of file CommentDelegate.cpp.

64{
65 QLineEdit *editor = new QLineEdit(parent);
66 return editor;
67}

◆ editorEvent()

bool CommentDelegate::editorEvent ( QEvent * event,
QAbstractItemModel * model,
const QStyleOptionViewItem & option,
const QModelIndex & index )
override

Definition at line 69 of file CommentDelegate.cpp.

70{
71 QStyleOptionViewItem newOption = option;
72
73 if ((event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonDblClick)
74 && (index.flags() & Qt::ItemIsEnabled)) {
75 QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
76
77 QRect visibilityRect = option.rect;
78 visibilityRect.setSize(QSize(22, 22));
79 const bool visibilityClicked = visibilityRect.isValid() &&
80 visibilityRect.contains(mouseEvent->pos());
81
82 const bool leftButton = mouseEvent->buttons() & Qt::LeftButton;
83
84 if (leftButton && visibilityClicked) {
85 model->setData(index, true, Qt::DecorationRole);
86 return true;
87 }
88 }
89 return false;
90}

◆ paint()

void CommentDelegate::paint ( QPainter * painter,
const QStyleOptionViewItem & option,
const QModelIndex & index ) const
override

Definition at line 28 of file CommentDelegate.cpp.

29{
30 p->save();
31 {
32 QStyle *style = option.widget ? option.widget->style() : QApplication::style();
33 style->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, p, option.widget);
34
35 p->setFont(option.font);
36
37 {
38 QIcon icon =index.model()->data(index, Qt::DecorationRole).value<QIcon>();
39 QRect r = option.rect;
40 r.setSize(QSize(22, 22));
41 icon.paint(p, r);
42 }
43 {
44 QRect r = option.rect;
45 r.translate(25, 0);
46 QString value = index.model()->data(index, Qt::DisplayRole).toString();
47
48 p->drawText(r, Qt::AlignLeft | Qt::AlignVCenter, value);
49 }
50 }
51 p->restore();
52}
float value(const T *src, size_t ch)
const Params2D p

References p, and value().

◆ setEditorData()

void CommentDelegate::setEditorData ( QWidget * editor,
const QModelIndex & index ) const
override

Definition at line 93 of file CommentDelegate.cpp.

95{
96 QString value = index.model()->data(index, Qt::EditRole).toString();
97
98 QLineEdit *lineEdit = static_cast<QLineEdit*>(editor);
99 lineEdit->setText(value);
100}

References value().

◆ setModelData()

void CommentDelegate::setModelData ( QWidget * editor,
QAbstractItemModel * model,
const QModelIndex & index ) const
override

Definition at line 102 of file CommentDelegate.cpp.

104{
105 QLineEdit *lineEdit = static_cast<QLineEdit*>(editor);
106 QString value = lineEdit->text();
107
108 //TO DO: don't add empty string
109 model->setData(index, value, Qt::EditRole);
110}

References value().

◆ sizeHint()

QSize CommentDelegate::sizeHint ( const QStyleOptionViewItem & option,
const QModelIndex & index ) const
override

Definition at line 54 of file CommentDelegate.cpp.

56{
57 Q_UNUSED(index);
58 return QSize(option.rect.width(), 22);
59}

◆ updateEditorGeometry()

void CommentDelegate::updateEditorGeometry ( QWidget * editor,
const QStyleOptionViewItem & option,
const QModelIndex & index ) const
override

Definition at line 112 of file CommentDelegate.cpp.

114{
115 editor->setGeometry(option.rect);
116}

The documentation for this class was generated from the following files: