KTextAddons

textautogeneratehistorylistviewdelegate.cpp
1/*
2 SPDX-FileCopyrightText: 2025 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "textautogeneratehistorylistviewdelegate.h"
8#include "core/textautogeneratechatmodel.h"
9#include <QAbstractItemView>
10#include <QHelpEvent>
11#include <QLineEdit>
12#include <QToolTip>
13
14using namespace TextAutogenerateText;
15TextAutogenerateHistoryListViewDelegate::TextAutogenerateHistoryListViewDelegate(QObject *parent)
16 : QItemDelegate{parent}
17{
18}
19
20TextAutogenerateHistoryListViewDelegate::~TextAutogenerateHistoryListViewDelegate() = default;
21
22bool TextAutogenerateHistoryListViewDelegate::helpEvent(QHelpEvent *helpEvent,
24 const QStyleOptionViewItem &option,
25 const QModelIndex &index)
26{
27 Q_UNUSED(option);
28 if (!index.isValid()) {
29 return false;
30 }
31 if (helpEvent->type() == QEvent::ToolTip) {
32 const QString subject = index.data(TextAutoGenerateChatModel::MessageRole).toString();
33 QToolTip::showText(helpEvent->globalPos(), subject, view);
34 return true;
35 }
36 return false;
37}
38
39QWidget *TextAutogenerateHistoryListViewDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
40{
41 Q_UNUSED(option);
42 Q_UNUSED(index);
43 QLineEdit *editor = new QLineEdit(parent);
44 return editor;
45}
46
47void TextAutogenerateHistoryListViewDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
48{
49 QLineEdit *lineEdit = qobject_cast<QLineEdit *>(editor);
50 if (lineEdit) {
51 QString text = index.data(TextAutoGenerateChatModel::TopicRole).toString();
52 if (text.isEmpty()) {
53 text = index.data(TextAutoGenerateChatModel::MessageRole).toString();
54 }
55 lineEdit->setText(text);
56 }
57}
58
59void TextAutogenerateHistoryListViewDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
60{
61 QLineEdit *lineEdit = qobject_cast<QLineEdit *>(editor);
62 if (lineEdit) {
63 model->setData(index, lineEdit->text(), TextAutoGenerateChatModel::TopicRole);
64 }
65}
66
67void TextAutogenerateHistoryListViewDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
68{
69 Q_UNUSED(index);
70 editor->setGeometry(option.rect);
71}
72
73#include "moc_textautogeneratehistorylistviewdelegate.cpp"
virtual bool setData(const QModelIndex &index, const QVariant &value, int role)
void setText(const QString &)
QVariant data(int role) const const
bool isValid() const const
QObject * parent() const const
T qobject_cast(QObject *object)
bool isEmpty() const const
void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect, int msecDisplayTime)
QString toString() const const
void setGeometry(const QRect &)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri May 2 2025 12:06:03 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.