Finalize desktop pet feature set and GitHub export

This commit is contained in:
2026-06-17 04:50:25 +08:00
parent 6c2926b57a
commit 6812dbb110
62 changed files with 7774 additions and 504 deletions
+47
View File
@@ -0,0 +1,47 @@
#pragma once
#include "WebChatTypes.h"
#include <QByteArray>
#include <QMetaObject>
#include <QNetworkAccessManager>
#include <QPointer>
#include <QTimer>
#include <QUrl>
#include <functional>
class QNetworkReply;
class WebChatManager
{
public:
using WebChatCallback = std::function<void(const WebChatResponse &)>;
WebChatManager();
~WebChatManager();
bool isBusy() const;
void sendWebChat(const WebChatRequest &request, WebChatCallback callback);
void cancel();
private:
void startOpenAIResponses(const WebChatRequest &request);
void startGeminiGrounding(const WebChatRequest &request);
void startRequest(const QUrl &url, const QByteArray &payload, int messageCount, const QByteArray &authorizationHeader = {});
void finishReply();
void finishWithError(const QString &message, int httpStatus = 0);
void invokeCallback(const WebChatResponse &response);
void clearReply();
WebChatResponse parseOpenAIResponse(QNetworkReply *reply, const QByteArray &body) const;
WebChatResponse parseGeminiResponse(QNetworkReply *reply, const QByteArray &body) const;
QNetworkAccessManager m_networkManager;
QPointer<QNetworkReply> m_currentReply;
QMetaObject::Connection m_replyFinishedConnection;
QTimer m_timeoutTimer;
WebChatCallback m_callback;
WebProviderKind m_currentKind = WebProviderKind::None;
AIConfig m_currentConfig;
};