7#include "textautogeneratewidget.h"
8#include "core/textautogeneratechatmodel.h"
9#include "core/textautogenerateengineloader.h"
10#include "core/textautogenerateengineutil.h"
11#include "core/textautogeneratemanager.h"
12#include "core/textautogeneratemessage.h"
13#include "core/textautogeneratetextclient.h"
14#include "core/textautogeneratetextplugin.h"
15#include "textautogeneratetextwidget_debug.h"
16#include "widgets/textautogenerateheaderwidget.h"
17#include "widgets/textautogeneratehistorywidget.h"
18#include "widgets/textautogenerateresultwidget.h"
19#include "widgets/textautogeneratetextlineeditwidget.h"
21#include <KConfigGroup>
22#include <KSharedConfig>
23#include <KSplitterCollapserButton>
27using namespace TextAutogenerateText;
28TextAutogenerateWidget::TextAutogenerateWidget(
QWidget *parent)
30 , mTextAutogenerateResultWidget(new TextAutogenerateResultWidget(this))
31 , mTextAutogenerateTextLineEditWidget(new TextAutogenerateTextLineEditWidget(this))
33 , mHistoryWidget(new TextAutogenerateHistoryWidget(this))
34 , mHeaderWidget(new TextAutogenerateHeaderWidget(this))
37 mainLayout->setObjectName(QStringLiteral(
"mainLayout"));
38 mainLayout->setContentsMargins(
QMargins{});
39 mHeaderWidget->setObjectName(QStringLiteral(
"mHeaderWidget"));
40 mainLayout->addWidget(mHeaderWidget);
43 mSplitter->setObjectName(QStringLiteral(
"mSplitter"));
45 mainLayout->addWidget(mSplitter, 1);
47 mTextAutogenerateResultWidget->setObjectName(QStringLiteral(
"mTextAutogenerateResultWidget"));
49 mHistoryWidget->setObjectName(QStringLiteral(
"mHistoryWidget"));
50 mSplitter->addWidget(mHistoryWidget);
51 mSplitter->addWidget(mTextAutogenerateResultWidget);
55 mTextAutogenerateTextLineEditWidget->setObjectName(QStringLiteral(
"mTextAutogenerateTextLineEditWidget"));
56 mainLayout->addWidget(mTextAutogenerateTextLineEditWidget);
57 connect(mTextAutogenerateTextLineEditWidget, &TextAutogenerateTextLineEditWidget::editingFinished,
this, &TextAutogenerateWidget::slotEditingFinished);
59 connect(mHeaderWidget, &TextAutogenerateHeaderWidget::configChanged,
this, &TextAutogenerateWidget::slotConfigureChanged);
60 connect(mHeaderWidget, &TextAutogenerateHeaderWidget::clearModel,
this, &TextAutogenerateWidget::slotClearModel);
65TextAutogenerateWidget::~TextAutogenerateWidget()
67 if (mTextAutogeneratePlugin) {
68 mTextAutogeneratePlugin->stop();
69 mTextAutogeneratePlugin->deleteLater();
74void TextAutogenerateWidget::slotClearModel()
76 TextAutogenerateManager::self()->textAutoGenerateChatModel()->resetConversation();
79void TextAutogenerateWidget::writeConfig()
82 group.writeEntry(
"mainSplitter", mSplitter->sizes());
85void TextAutogenerateWidget::readConfig()
88 const QList<int>
size = {100, 400};
90 mSplitter->setSizes(group.readEntry(
"mainSplitter",
size));
93QString TextAutogenerateWidget::textLineEdit()
const
95 return mTextAutogenerateTextLineEditWidget->text();
98void TextAutogenerateWidget::loadEngine()
100 if (mTextAutogeneratePlugin) {
102 delete mTextAutogeneratePlugin;
103 mTextAutogeneratePlugin =
nullptr;
106 TextAutogenerateText::TextAutogenerateEngineLoader::self()->loadPlugins();
108 mTextAutogenerateClient =
109 TextAutogenerateText::TextAutogenerateEngineLoader::self()->createTextAutoGenerateTextClient(TextAutogenerateEngineUtil::loadEngine());
110 if (!mTextAutogenerateClient) {
111 const QString fallBackEngineName = TextAutogenerateText::TextAutogenerateEngineLoader::self()->fallbackFirstEngine();
112 if (!fallBackEngineName.
isEmpty()) {
113 mTextAutogenerateClient = TextAutogenerateText::TextAutogenerateEngineLoader::self()->createTextAutoGenerateTextClient(fallBackEngineName);
116 if (mTextAutogenerateClient) {
117 mHeaderWidget->updateEngineName(TextAutogenerateText::TextAutogenerateEngineLoader::self()->generateDisplayName(mTextAutogenerateClient));
118 mTextAutogeneratePlugin = mTextAutogenerateClient->createTextAutogeneratePlugin();
119 connect(mTextAutogeneratePlugin, &TextAutogenerateText::TextAutogenerateTextPlugin::finished,
this, &TextAutogenerateWidget::slotAutogenerateFinished);
120 connect(mTextAutogeneratePlugin,
121 &TextAutogenerateText::TextAutogenerateTextPlugin::errorOccurred,
123 &TextAutogenerateWidget::slotAutogenerateFailed);
125 qCWarning(TEXTAUTOGENERATETEXT_WIDGET_LOG) <<
"Impossible to create client" << TextAutogenerateEngineUtil::loadEngine();
129void TextAutogenerateWidget::slotConfigureChanged()
134void TextAutogenerateWidget::slotEditingFinished(
const QString &str)
136 mTextAutogeneratePlugin->sendMessage(str);
139void TextAutogenerateWidget::slotAutogenerateFinished(
const TextAutoGenerateMessage &msg)
141 qDebug() <<
" TextAutogenerateWidget::slotAutogenerateFinished " << msg;
145void TextAutogenerateWidget::slotAutogenerateFailed(
const QString &errorMessage)
147 qDebug() <<
" TextAutogenerateWidget::slotAutogenerateFailed " <<
errorMessage;
151#include "moc_textautogeneratewidget.cpp"
static KSharedConfig::Ptr openStateConfig(const QString &fileName=QString())
KCALUTILS_EXPORT QString errorMessage(const KCalendarCore::Exception &exception)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
bool disconnect(const QMetaObject::Connection &connection)
bool isEmpty() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)