- 传送门 desktop 入口,--show 再点一次回 daemon;右键菜单加隐藏 - 暂存区清空后整个面板隐藏 - 右键菜单弹到面板左侧,避免被自己遮挡 - 启动悬停 80ms - 添加待办后立即打开待办窗口;待办独立图标 - 分词胶囊按浅/深色取色,修复透明不可见 - 关于改用 DAboutDialog - 聊天消息下方常驻 复制/编辑/重试;助手消息可编辑、可从任意一条重试
56 lines
1.3 KiB
C++
56 lines
1.3 KiB
C++
// SPDX-FileCopyrightText: 2026 GXDE OS Team
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <QScrollArea>
|
|
#include <QVector>
|
|
|
|
#include "chatclient.h"
|
|
|
|
class QLabel;
|
|
class QMimeData;
|
|
class QUrl;
|
|
class QVBoxLayout;
|
|
|
|
/**
|
|
* Scrollable message list with chat bubbles, avatars and inline actions.
|
|
*/
|
|
class ChatMessageList : public QScrollArea
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit ChatMessageList(QWidget *parent = nullptr);
|
|
|
|
void setMessages(const QVector<ChatMessage> &messages);
|
|
void appendMessage(const ChatMessage &message);
|
|
void updateMessage(int index, const QString &content);
|
|
void appendNote(const QString &text);
|
|
void clear();
|
|
|
|
void scrollToBottom();
|
|
|
|
signals:
|
|
void dropped(const QMimeData *mime);
|
|
void copyRequested(int index);
|
|
void editRequested(int index);
|
|
void forkRequested(int index);
|
|
void retryRequested(int index);
|
|
void linkActivated(const QUrl &url);
|
|
|
|
protected:
|
|
void dragEnterEvent(QDragEnterEvent *event) override;
|
|
void dragMoveEvent(QDragMoveEvent *event) override;
|
|
void dropEvent(QDropEvent *event) override;
|
|
|
|
private:
|
|
void rebuild();
|
|
|
|
QWidget *m_container = nullptr;
|
|
QVBoxLayout *m_layout = nullptr;
|
|
QWidget *m_welcome = nullptr;
|
|
QVector<class MessageRow *> m_rows;
|
|
QVector<ChatMessage> m_messages;
|
|
};
|