Chat: - DTK2 窗口:左侧会话列表 + 右侧对话区 + 输入框 - DeepSeek / 自定义 API,SSE 流式输出,首字即显示 - 会话持久化到 chat.json,新建/切换/标题自动生成 - 设置对话框:API Key、API 地址、模型、系统提示,含开通指引 - 拖放:左侧空白=新建对话,左侧会话=指定会话,右侧对话区=当前会话 - Ctrl+Enter 发送,错误以消息形式回显 Todo: - 待办窗口(layer-shell,不抢焦点、不进 dock),复选框/删除/新建 - 待办持久化 todo.json,--todo 打开,独立 desktop 入口 其他: - desktop 入口改为打开对话窗口,--chat 参数 - 单实例消息支持 show/todo/chat
46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
// SPDX-FileCopyrightText: 2026 GXDE OS Team
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <QObject>
|
|
|
|
class ChatWindow;
|
|
class PortalPanel;
|
|
class QLocalServer;
|
|
class StagingModel;
|
|
class TodoWindow;
|
|
|
|
/**
|
|
* Application controller: owns the staging model, the panel and the single
|
|
* instance machinery.
|
|
*/
|
|
class App : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit App(QObject *parent = nullptr);
|
|
|
|
/**
|
|
* @param daemon run in the background, only show the panel when needed
|
|
* @param forceShow always show the panel on startup
|
|
* @return false when another instance is already running
|
|
*/
|
|
bool init(bool daemon, bool forceShow, bool showTodo = false, bool showChat = false);
|
|
|
|
private:
|
|
void ensurePanel();
|
|
void showPanel();
|
|
void showTodoWindow();
|
|
void showChatWindow();
|
|
|
|
StagingModel *m_model = nullptr;
|
|
PortalPanel *m_panel = nullptr;
|
|
TodoWindow *m_todoWindow = nullptr;
|
|
ChatWindow *m_chatWindow = nullptr;
|
|
QLocalServer *m_server = nullptr;
|
|
bool m_daemon = false;
|
|
bool m_dragging = false;
|
|
};
|