Files
gxde-ai-see/src/todo/todowindow.h
T
shenmo 4291ee286c
Building GXDE Arch Package / detect (push) Skipped
Building GXDE Arch Package / aarch64-arch (push) Skipped
Building GXDE Arch Package / x86_64-arch (push) Skipped
Building GXDE Testing Package / call-arch (push) Skipped
Building Program / call (push) Skipped
Building GXDE Testing Package / call-zhuangzhuang (push) Skipped
Building GXDE Testing Package (zhuangzhuang) / call-i386-zhuangzhuang (push) Skipped
Building GXDE Testing Package (zhuangzhuang) / call-amd64-zhuangzhuang (push) Skipped
Building GXDE Testing Package (zhuangzhuang) / call-arm64-zhuangzhuang (push) Skipped
Building GXDE Testing Package (zhuangzhuang) / call-riscv64-zhuangzhuang (push) Skipped
Building GXDE Testing Package (zhuangzhuang) / call-loong64-zhuangzhuang (push) Skipped
Building GXDE Package / ${{ inputs.display-name || 'Build Job' }} (push) Skipped
chore(release): 1.0.0~beta2
- 会话列表拖拽排序/多选/批量删除
- 128k/1024k token 上下文上限
- 待办取消置顶;全屏隐藏联动
- 英文回退翻译补齐;新应用图标
- DTK 关于窗口、分词/朗读对话框、消息常驻操作
2026-10-30 22:37:05 +08:00

58 lines
1.4 KiB
C++

// SPDX-FileCopyrightText: 2026 GXDE OS Team
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <DBlurEffectWidget>
#include <QWidget>
class QLabel;
class QListView;
class TodoModel;
/**
* Floating todo window (optional keep-above, draggable, hidden from the dock).
*
* On Wayland it is a layer-shell overlay surface (keyboard interactivity is
* none so it never steals focus); new entries are added from the panel or the
* "+" button which opens a normal dialog.
*/
class TodoWindow : public Dtk::Widget::DBlurEffectWidget
{
Q_OBJECT
public:
explicit TodoWindow(TodoModel *model, QWidget *parent = nullptr);
void popup();
void refreshLayout();
protected:
void contextMenuEvent(QContextMenuEvent *event) override;
void showEvent(QShowEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
signals:
void recreateRequested();
private:
void setupWindow();
void setupUi();
void addEntry();
void applyMargins();
void saveMargins();
TodoModel *m_model = nullptr;
QListView *m_view = nullptr;
QLabel *m_countLabel = nullptr;
int m_rightMargin = 16;
int m_topMargin = 72;
bool m_keepAbove = true;
bool m_dragging = false;
QPoint m_dragStart;
int m_dragStartRight = 0;
int m_dragStartTop = 0;
};