Handle the fwd of important signals from LLM object so qml doesn't have to deal with which chat is current.

This commit is contained in:
Adam Treat 2023-05-01 12:41:03 -04:00
parent 8b94a23253
commit 482f543675
3 changed files with 20 additions and 6 deletions

14
llm.cpp
View File

@ -25,13 +25,18 @@ LLM::LLM()
{ {
connect(Download::globalInstance(), &Download::modelListChanged, connect(Download::globalInstance(), &Download::modelListChanged,
this, &LLM::modelListChanged, Qt::QueuedConnection); this, &LLM::modelListChanged, Qt::QueuedConnection);
// FIXME: This should be moved to connect whenever we make a new chat object in future // FIXME: These should be moved to connect whenever we make a new chat object in future
connect(m_currentChat, &Chat::modelNameChanged, connect(m_currentChat, &Chat::modelNameChanged,
this, &LLM::modelListChanged, Qt::QueuedConnection); this, &LLM::modelListChanged, Qt::QueuedConnection);
connect(m_currentChat, &Chat::recalcChanged,
this, &LLM::recalcChanged, Qt::QueuedConnection);
connect(m_currentChat, &Chat::responseChanged,
this, &LLM::responseChanged, Qt::QueuedConnection);
} }
QList<QString> LLM::modelList() const QList<QString> LLM::modelList() const
{ {
Q_ASSERT(m_currentChat);
// Build a model list from exepath and from the localpath // Build a model list from exepath and from the localpath
QList<QString> list; QList<QString> list;
@ -107,3 +112,10 @@ bool LLM::checkForUpdates() const
return QProcess::startDetached(fileName); return QProcess::startDetached(fileName);
} }
bool LLM::isRecalc() const
{
Q_ASSERT(m_currentChat);
return m_currentChat->isRecalc();
}

4
llm.h
View File

@ -10,6 +10,7 @@ class LLM : public QObject
Q_OBJECT Q_OBJECT
Q_PROPERTY(QList<QString> modelList READ modelList NOTIFY modelListChanged) Q_PROPERTY(QList<QString> modelList READ modelList NOTIFY modelListChanged)
Q_PROPERTY(Chat *currentChat READ currentChat NOTIFY currentChatChanged) Q_PROPERTY(Chat *currentChat READ currentChat NOTIFY currentChatChanged)
Q_PROPERTY(bool isRecalc READ isRecalc NOTIFY recalcChanged)
public: public:
@ -18,10 +19,13 @@ public:
QList<QString> modelList() const; QList<QString> modelList() const;
Q_INVOKABLE bool checkForUpdates() const; Q_INVOKABLE bool checkForUpdates() const;
Chat *currentChat() const { return m_currentChat; } Chat *currentChat() const { return m_currentChat; }
bool isRecalc() const;
Q_SIGNALS: Q_SIGNALS:
void modelListChanged(); void modelListChanged();
void currentChatChanged(); void currentChatChanged();
void recalcChanged();
void responseChanged();
private: private:
Chat *m_currentChat; Chat *m_currentChat;

View File

@ -353,10 +353,9 @@ Window {
text: qsTr("Recalculating context.") text: qsTr("Recalculating context.")
Connections { Connections {
// FIXME: This connection has to be setup everytime a new chat object is created target: LLM
target: LLM.currentChat
function onRecalcChanged() { function onRecalcChanged() {
if (LLM.currentChat.isRecalc) if (LLM.isRecalc)
recalcPopup.open() recalcPopup.open()
else else
recalcPopup.close() recalcPopup.close()
@ -817,8 +816,7 @@ Window {
property bool isAutoScrolling: false property bool isAutoScrolling: false
Connections { Connections {
// FIXME: This connection has to be setup everytime a new chat object is created target: LLM
target: LLM.currentChat
function onResponseChanged() { function onResponseChanged() {
if (listView.shouldAutoScroll) { if (listView.shouldAutoScroll) {
listView.isAutoScrolling = true listView.isAutoScrolling = true