gpt4all/gpt4all-chat/toolmodel.cpp
Adam Treat 054ca43d52 Display the antenna by introducing notion of privacy scopes to tools.
Signed-off-by: Adam Treat <treat.adam@gmail.com>
2024-08-14 12:14:31 -04:00

48 lines
1.4 KiB
C++

#include "toolmodel.h"
#include <QGlobalStatic>
#include <QGuiApplication>
#include <QJsonDocument>
#include "bravesearch.h"
#include "localdocssearch.h"
class MyToolModel: public ToolModel { };
Q_GLOBAL_STATIC(MyToolModel, toolModelInstance)
ToolModel *ToolModel::globalInstance()
{
return toolModelInstance();
}
ToolModel::ToolModel()
: QAbstractListModel(nullptr) {
QCoreApplication::instance()->installEventFilter(this);
Tool* localDocsSearch = new LocalDocsSearch;
m_tools.append(localDocsSearch);
m_toolMap.insert(localDocsSearch->function(), localDocsSearch);
connect(localDocsSearch, &Tool::usageModeChanged, this, &ToolModel::privacyScopeChanged);
Tool *braveSearch = new BraveSearch;
m_tools.append(braveSearch);
m_toolMap.insert(braveSearch->function(), braveSearch);
connect(braveSearch, &Tool::usageModeChanged, this, &ToolModel::privacyScopeChanged);
}
bool ToolModel::eventFilter(QObject *obj, QEvent *ev)
{
if (obj == QCoreApplication::instance() && ev->type() == QEvent::LanguageChange)
emit dataChanged(index(0, 0), index(m_tools.size() - 1, 0));
return false;
}
ToolEnums::PrivacyScope ToolModel::privacyScope() const
{
ToolEnums::PrivacyScope scope = ToolEnums::PrivacyScope::Local; // highest scope
for (const Tool *t : m_tools)
if (t->usageMode() != ToolEnums::UsageMode::Disabled)
scope = std::min(scope, t->privacyScope());
return scope;
}