feat: Add Google AI provider and template

This commit is contained in:
Petr Mironychev
2025-02-25 14:14:48 +01:00
parent 1b06a651f0
commit 7ba615a72d
16 changed files with 524 additions and 47 deletions

View File

@ -21,8 +21,14 @@
#include <QFile>
#include <QFileInfo>
#include <QJsonObject>
#include <QTextStream>
#include "GeneralSettings.hpp"
#include "Logger.hpp"
#include <texteditor/textdocument.h>
#include <utils/filepath.h>
namespace QodeAssist::Context {
ContextManager &ContextManager::instance()
@ -64,4 +70,33 @@ ContentFile ContextManager::createContentFile(const QString &filePath) const
return contentFile;
}
ProgrammingLanguage ContextManager::getDocumentLanguage(const QJsonObject &request) const
{
QJsonObject params = request["params"].toObject();
QJsonObject doc = params["doc"].toObject();
QString uri = doc["uri"].toString();
Utils::FilePath filePath = Utils::FilePath::fromString(QUrl(uri).toLocalFile());
TextEditor::TextDocument *textDocument = TextEditor::TextDocument::textDocumentForFilePath(
filePath);
if (!textDocument) {
LOG_MESSAGE("Error: Document is not available for" + filePath.toString());
return Context::ProgrammingLanguage::Unknown;
}
return Context::ProgrammingLanguageUtils::fromMimeType(textDocument->mimeType());
}
bool ContextManager::isSpecifyCompletion(const QJsonObject &request)
{
auto &generalSettings = Settings::generalSettings();
Context::ProgrammingLanguage documentLanguage = getDocumentLanguage(request);
Context::ProgrammingLanguage preset1Language = Context::ProgrammingLanguageUtils::fromString(
generalSettings.preset1Language.displayForIndex(generalSettings.preset1Language()));
return generalSettings.specifyPreset1() && documentLanguage == preset1Language;
}
} // namespace QodeAssist::Context

View File

@ -23,6 +23,7 @@
#include <QString>
#include "ContentFile.hpp"
#include "ProgrammingLanguage.hpp"
namespace QodeAssist::Context {
@ -34,6 +35,8 @@ public:
static ContextManager &instance();
QString readFile(const QString &filePath) const;
QList<ContentFile> getContentFiles(const QStringList &filePaths) const;
ProgrammingLanguage getDocumentLanguage(const QJsonObject &request) const;
bool isSpecifyCompletion(const QJsonObject &request);
private:
explicit ContextManager(QObject *parent = nullptr);