6#include "textautogeneratemanager.h"
7#include "core/textautogeneratechatmodel.h"
8#include "core/textautogenerateengineutil.h"
10#include <KConfigGroup>
11#include <QRegularExpression>
13using namespace TextAutogenerateText;
14TextAutogenerateManager::TextAutogenerateManager(
QObject *parent)
20TextAutogenerateManager::~TextAutogenerateManager() =
default;
24 static TextAutogenerateManager s_self;
28void TextAutogenerateManager::ask(
const QString &msg)
30 Q_EMIT sendMessageRequested(msg);
35 return mTextAutoGenerateChatModel;
38void TextAutogenerateManager::filterListMessages(QList<TextAutoGenerateMessage> &messages,
bool archived)
const
40 std::sort(messages.
begin(), messages.
end(), [archived](
const TextAutoGenerateMessage &left,
const TextAutoGenerateMessage &right) {
52 if (left.dateTime() == right.dateTime()) {
53 if (left.sender() == TextAutoGenerateMessage::Sender::User) {
57 return left.dateTime() <
right.dateTime();
61bool TextAutogenerateManager::showArchived()
const
66void TextAutogenerateManager::setShowArchived(
bool newShowArchived)
68 mShowArchived = newShowArchived;
71void TextAutogenerateManager::loadHistory()
73 QList<TextAutoGenerateMessage> messages;
74 KSharedConfig::Ptr config;
75 const QStringList keyGroups = keyRecorderList(config);
77 for (
const QString &groupName : keyGroups) {
78 KConfigGroup group = config->group(groupName);
79 TextAutoGenerateMessage message;
81 message.setContent(group.
readEntry(QStringLiteral(
"Content")));
83 message.setSender(
static_cast<TextAutoGenerateMessage::Sender
>(
sender));
84 message.setDateTime(group.
readEntry(QStringLiteral(
"DateTime"), 0));
85 message.setUuid(group.
readEntry(QStringLiteral(
"Uuid"), QByteArray()));
86 message.setAnswerUuid(group.
readEntry(QStringLiteral(
"AnswerUuid"), QByteArray()));
87 message.setTopic(group.
readEntry(QStringLiteral(
"Topic"), QString()));
88 message.setArchived(group.
readEntry(QStringLiteral(
"Archived"),
false));
90 messages.
append(std::move(message));
92 filterListMessages(messages, mShowArchived);
93 mTextAutoGenerateChatModel->setMessages(messages);
96void TextAutogenerateManager::saveHistory()
98 const QList<TextAutoGenerateMessage> messages = mTextAutoGenerateChatModel->messages();
99 KSharedConfig::Ptr config;
100 const QStringList filterGroups = keyRecorderList(config);
102 for (
const QString &group : filterGroups) {
103 config->deleteGroup(group);
105 for (
int i = 0, total = messages.
count(); i < total; ++i) {
106 const QString groupName = QStringLiteral(
"AutoGenerate #%1").
arg(i);
107 KConfigGroup group = config->
group(groupName);
108 const TextAutoGenerateMessage &info = messages.
at(i);
109 group.
writeEntry(QStringLiteral(
"Content"), info.content());
110 group.
writeEntry(QStringLiteral(
"Sender"),
static_cast<int>(info.sender()));
111 group.
writeEntry(QStringLiteral(
"DateTime"), info.dateTime());
112 group.
writeEntry(QStringLiteral(
"Uuid"), info.uuid());
113 group.
writeEntry(QStringLiteral(
"AnswerUuid"), info.answerUuid());
114 group.
writeEntry(QStringLiteral(
"Topic"), info.topic());
115 group.
writeEntry(QStringLiteral(
"Archived"), info.archived());
120QStringList TextAutogenerateManager::keyRecorderList(KSharedConfig::Ptr &config)
const
123 const QStringList keyGroups = config->groupList().filter(QRegularExpression(QStringLiteral(
"AutoGenerate #\\d+")));
127#include "moc_textautogeneratemanager.cpp"
KConfigGroup group(const QString &group)
void writeEntry(const char *key, const char *value, WriteConfigFlags pFlags=Normal)
QString readEntry(const char *key, const char *aDefault=nullptr) const
static KSharedConfig::Ptr openConfig(const QString &fileName=QString(), OpenFlags mode=FullConfig, QStandardPaths::StandardLocation type=QStandardPaths::GenericConfigLocation)
The TextAutoGenerateChatModel class.
The TextAutogenerateManager class.
void append(QList< T > &&value)
const_reference at(qsizetype i) const const
qsizetype count() const const
QObject * sender() const const
QString arg(Args &&... args) const const
QTextStream & left(QTextStream &stream)
QTextStream & right(QTextStream &stream)