KTextAddons

textautogeneratehistorylistview.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 "textautogeneratehistorylistview.h"
8#include "core/textautogeneratechatmodel.h"
9#include "core/textautogeneratehistorysortfilterproxymodel.h"
10#include "core/textautogeneratemanager.h"
11#include "textautogeneratehistorylistviewdelegate.h"
12#include <KLocalizedString>
13#include <QContextMenuEvent>
14#include <QMenu>
15
16using namespace TextAutogenerateText;
17TextAutogenerateHistoryListView::TextAutogenerateHistoryListView(QWidget *parent)
18 : QListView(parent)
19 , mHistoryProxyModel(new TextAutoGenerateHistorySortFilterProxyModel(this))
20{
21 setDragEnabled(false);
22 setUniformItemSizes(false);
23 // Add delegate
24 setItemDelegate(new TextAutogenerateHistoryListViewDelegate(this));
25
26 mHistoryProxyModel->setSourceModel(TextAutogenerateManager::self()->textAutoGenerateChatModel());
27 setModel(mHistoryProxyModel);
28}
29
30TextAutogenerateHistoryListView::~TextAutogenerateHistoryListView() = default;
31
32void TextAutogenerateHistoryListView::contextMenuEvent(QContextMenuEvent *event)
33{
34 QMenu menu(this);
35 const QModelIndex index = indexAt(event->pos());
36 if (index.isValid()) {
37 auto renameHistory = new QAction(QIcon::fromTheme(QStringLiteral("document-edit")), i18nc("@action", "Modify…"), &menu);
38 connect(renameHistory, &QAction::triggered, this, [index]() {
39 const QByteArray uuid = index.data(TextAutoGenerateChatModel::UuidRole).toByteArray();
40 if (!uuid.isEmpty()) {
41 // TextAutogenerateManager::self()->textAutoGenerateChatModel()->removeDiscussion(uuid);
42 }
43 });
44 menu.addAction(renameHistory);
45
46 menu.addSeparator();
47
48 auto removeHistory = new QAction(QIcon::fromTheme(QStringLiteral("list-remove")), i18nc("@action", "Remove…"), &menu);
49 connect(removeHistory, &QAction::triggered, this, [index]() {
50 const QByteArray uuid = index.data(TextAutoGenerateChatModel::UuidRole).toByteArray();
51 if (!uuid.isEmpty()) {
52 TextAutogenerateManager::self()->textAutoGenerateChatModel()->removeDiscussion(uuid);
53 }
54 });
55 menu.addAction(removeHistory);
56 }
57 if (!menu.actions().isEmpty()) {
58 menu.exec(event->globalPos());
59 }
60}
61
62void TextAutogenerateHistoryListView::slotSearchTextChanged(const QString &str)
63{
64 // Improve it ???
65 mHistoryProxyModel->setFilterFixedString(str);
66}
67#include "moc_textautogeneratehistorylistview.cpp"
QString i18nc(const char *context, const char *text, const TYPE &arg...)
virtual bool event(QEvent *event) override
void triggered(bool checked)
bool isEmpty() const const
QIcon fromTheme(const QString &name)
virtual QModelIndex indexAt(const QPoint &p) const const override
QVariant data(int role) const const
bool isValid() const const
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QByteArray toByteArray() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 25 2025 12:06:13 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.