Commit Graph
105 Commits
Author SHA1 Message Date
Jokul 77e2276e99 fix: 会话总量改为网卡开机累计值
会话总量不再累加差值,改为直接读取活动接口累计字节数(开机至今):
切换网卡后立即显示新网卡累计值,无流量网卡显示 0
2026-08-09 07:48:00 +08:00
Jokul beb13fc33d fix: 切换网卡后会话流量重置为 0
setActiveInterface 重置会话总量 m_totalDownload/m_totalUpload 为 0,
与包统计重置逻辑一致,切换后显示当前网卡的会话流量
2026-08-09 07:41:58 +08:00
Jokul f4d749daed style: 弹窗连接数文案改为 TCP 连接更直观 2026-08-09 07:34:42 +08:00
Jokul 18e433ea06 fix: UI 语义区分会话总量与日月累计 + 修复 onVisibleChanged 重复
弹窗'流量总计'改为'本次会话',明确是本次 dde-shell 运行期间累计;
流量统计窗口'按接口累计'改为'今日累计/本月累计',明确是跨重启持久化。
修复 TrafficStatsWindow onVisibleChanged 重复设置导致插件加载失败
2026-08-09 07:21:13 +08:00
Jokul 6671bb0bd2 fix: TrafficStatsWindow onVisibleChanged 重复设置导致插件加载失败
窗口已有 onVisibleChanged(居中定位),新增刷新逻辑时又写了一个,
QML 不允许同一属性设置两次,运行时报错导致 applet 加载失败。
合并到现有的 onVisibleChanged 中
2026-08-09 07:10:09 +08:00
Jokul e5b2060ff0 fix: 流量统计窗口四个问题
1. 窗口宽度 560->620 容纳列宽,关闭按钮不再被遮挡
2. tab 切换无效:onCurrentTabChanged 已生效,补充窗口可见时立即刷新
3. 数值不刷新:新增 5 秒定时器(窗口可见时运行),不依赖 C++ 30 秒信号
4. 国际化:补全 TrafficStatistics/ByDay/ByMonth 等 12 条翻译
2026-08-09 07:07:29 +08:00
Jokul b0cf2150f4 feat: 新增日/月流量统计功能(持久化) 2026-08-09 00:49:44 +08:00
Jokul e626b9ce92 fix: 补充新增标签的国际化翻译
Lane A/P2 新增的 Signal/Connections/Refresh Interval 三个 qsTr 标签
未更新 .ts 翻译文件,导致中文系统下显示英文。补入对应翻译
2026-08-09 00:37:44 +08:00
Jokul 96c3c055c2 fix: 修复 NetworkPopup 大括号多余导致语法错误
Lane A 新增接口信息区内容时引入了一个多余的闭合大括号,
导致 QML 引擎报 727 行语法错误、applet 加载失败
2026-08-09 00:34:09 +08:00
Jokul 1d79dbf261 fix: 修复 fontScale 删除残留导致 applet 加载失败
Lane B 删除 fontScale 属性时遗漏了 Lane A 新增的 4 处引用(链路速率/
WiFi 信号/TCP 连接数/接口名),QML 引擎解析到 popup.fontScale 未定义
报语法错误,导致整个 applet 加载失败、插件消失
2026-08-09 00:30:16 +08:00
Jokul 77039d807c feat: 流量波动图支持 1/5/30 分钟时间窗口切换 2026-08-09 00:21:57 +08:00
Jokul 84e56c547c refactor: 提取 WindowTheme 和 TitleBar 消除三窗口样板重复 2026-08-09 00:17:51 +08:00
Jokul 640cc2ab84 feat: C++后端功能扩展(链路速率/刷新间隔/TCP连接数/WiFi信号)
P7 链路速率:读 /sys/class/net/<iface>/speed,无线失败时降级解析 iw bitrate,
弹窗接口名旁显示(>=1000 显示 Gbps)
P5 可配置刷新间隔:新增 refreshInterval 属性,设置窗口可选 1/2/5 秒并持久化
P3 TCP 连接数:统计 /proc/net/tcp 与 tcp6 的 ESTABLISHED 连接数,弹窗展示
P6 WiFi 信号强度:读 /proc/net/wireless 的 level(dBm),弹窗接口信息区展示
所有读取均优雅降级(文件缺失/读取失败返回默认值),不改动速度计算逻辑
2026-08-09 00:07:41 +08:00
Jokul 34e163c6d2 fix: CMake Test 依赖改为可选,解决无 Qt6 Test 包环境构建失败 2026-08-08 23:58:49 +08:00
Jokul da271deea0 refactor: 清理 NetworkPopup fontScale 死代码 2026-08-08 23:58:49 +08:00
Jokul 30a186b6dc style: 包统计行布局改为与流量总计行一致
标签+↓蓝粗箭头+数值+↑绿粗箭头+数值拆分为独立 Text 元素,
与上方流量总计行视觉对称
2026-08-08 23:51:44 +08:00
Jokul 6ef9a23a24 fix: 弹窗高度增加容纳包统计行 + 文案调整
PanelPopup 高度 250->280 容纳新增的包统计行;
翻译文案:Total->流量总计、Packets->包统计
2026-08-08 23:48:23 +08:00
Jokul a5cfffc2f1 fix: 包统计行从接口信息区移到累计流量区下方
包统计与流量统计同属累计数据,放一起信息归属清晰;移除接口信息区的
包统计行,在总计行下方新增居中显示;标签加 qsTr 支持国际化
2026-08-08 23:32:53 +08:00
Jokul ee885e0dbb fix: 关于窗口无法拖动
drag.target 对 Window 无效,改用 startSystemMove() 系统级窗口拖动,
与 SettingsWindow/TrafficChartWindow 一致
2026-08-08 23:24:45 +08:00
Jokul d18314bdec feat: 弹窗展示包统计/错误/丢包数据
C++ 后端暴露活动接口的收发包/错误/丢包累计统计(rxPackets/txPackets/
rxErrors/txErrors/rxDropped/txDropped,quint64 + packetStatsChanged 信号),
弹窗接口信息区新增一行紧凑包统计,包总数始终显示,
错误/丢包仅在存在时显示;箭头遵循应用惯例 ↓=接收、↑=发送
2026-08-08 23:23:38 +08:00
Jokul 4aca583d2d perf: C++ 后端性能优化
- 正则预编译:readNetworkStats 的正则改为 static const,仅首次编译一次
- 信号脏标记:速度/总量仅在值实际变化时才发射 speedChanged/totalChanged,
  避免网络空闲时每秒触发 QML 无效重绘
- IP 检测降频:detectIpAddress 由每秒改为每 5 秒检测一次
- 历史缓存:speedHistoryDownload/Upload 增加懒重建缓存,避免 QML
  每次读取都重新构造 300 个 QPointF
2026-08-08 23:22:12 +08:00
Jokul 0f70beaab8 fix: 流量波动图尖峰问题
曲线绘制改用 5 点滑动平均(±2 样本),抑制 1 秒采样的亚秒混叠尖峰,
使曲线反映趋势而非瞬时脉冲;hover 提示仍显示原始值供诊断。
Y 轴下限从 1KB 提高到 8KB,纯空闲时微小波动也有 KB 级刻度可辨
2026-08-08 22:41:50 +08:00
Jokul 0814cc70ca fix: 网卡类型描述国际化翻译 context 错误
interfaceDescription 从 SettingsWindow 迁移到 NetCommon 后,翻译 context
未同步更新,导致中文系统下显示英文。将 9 条翻译从 SettingsWindow context
迁到 NetCommon context;NetworkPopup 新增的 IPv4/IPv6 标签补充翻译条目
2026-08-08 22:04:08 +08:00
Jokul d1b7e083eb fix: 任务栏箭头与数值间距固定 + 数值右侧留边距
整数部分宽度改为动态计算两行最大整数位数,右对齐到此宽度:
箭头与数值间距固定不随位数变化,短的整数补占位,小数点对齐;
数值右侧加 4px 边距避免贴边
2026-08-08 21:47:00 +08:00
Jokul 72c1f1e702 feat: 任务栏双行网速数值小数点垂直对齐
将数值拆为整数部分(右对齐固定宽度)+ 小数+单位部分(左对齐),
整数位数不同时小数点仍垂直对齐,箭头位置保持不变
2026-08-08 21:35:38 +08:00
Jokul 9b8f6367e9 fix: 切换网卡时弹窗高度跳动
接口信息区改为固定高度 60px(按最多 3 行内容计算),内容顶部对齐。
无论有无 IP 地址,区域高度恒定,弹窗整体高度不随网卡切换跳动
2026-08-08 21:23:51 +08:00
Jokul 8129730d43 fix: 无 IP 地址时接口名位置与有 IP 时保持一致
去掉接口信息区外层 Item 包装和 anchors.centerIn,直接用 ColumnLayout
内容自然撑高、顶部对齐。无论有无 IP 地址,接口名行始终在顶部同一
垂直位置,切换网卡时不再跳动
2026-08-08 21:19:48 +08:00
Jokul 28829c2ab7 fix: IPv6 地址错位 + 复制按钮颜色不明显
接口信息区改为三行对称结构:行1 接口名居中,行2/行3 为 IPv4/IPv6
地址行,用固定宽度标签对齐,两行结构对称不再随地址长度错位;
复制图标默认色从 tertiaryText 改为 primaryText,深色背景上清晰可见
2026-08-08 21:10:29 +08:00
Jokul 45fd39407f feat: 重新设计左键弹窗布局
通透分区方案:去掉自绘卡片背景改用分隔线+留白划分四区,
速度数字 24px 为视觉锚点,适配用户 textColor 和网卡类型图标,
预留 fontScale 字号缩放扩展点,IPv4/IPv6 旁加一键复制图标。

分支 feature/popup-redesign 的 7 个 commit 合并。
2026-08-08 21:03:10 +08:00
Jokul 98f88c05c5 feat: 弹窗 IPv4/IPv6 地址旁加一键复制图标
接口信息区每个 IP 地址后加 ⧉ 复制图标,点击写入剪贴板,
复制后短暂显示 ✓ 反馈(2 秒后恢复),hover 图标变蓝提示可交互
2026-08-08 21:00:50 +08:00
Jokul 7ebfa5b74e fix: 无 IP 地址时网卡名在接口信息区垂直居中
接口信息区改为外层 Item 固定高度 + 内层 ColumnLayout anchors.centerIn,
无 IP 地址时单行内容在区域内垂直居中,避免贴顶偏上
2026-08-08 20:54:10 +08:00
Jokul e7f0200da4 fix: 弹窗文字颜色改用 dock 上下文调色板并修复无地址时塌陷
NetworkPopup 不再自建 NetCommon 实例,改由 networkview.qml 传入 dock 上下文的
common 实例,避免 PanelPopup 窗口上下文 DTK.palette.windowText 深色模式返回深色
文字导致深底深字;接口信息区加 minimumHeight 防止无 IP 地址时高度塌陷
2026-08-08 20:46:14 +08:00
Jokul 37300e3b79 fix: 拆分接口信息行使接口名跟随用户 textColor
将图标+接口名+IPv4 从单 Text 拆分为 RowLayout 内三个独立 Text,
接口名用 primaryText 跟随用户字体色,图标用 tertiaryText、IPv4 用 secondaryText 保持层次
2026-08-08 20:32:46 +08:00
Jokul e6123b1600 fix: 修复 textColor 字符串类型访问 .r/.g/.b 导致字体色跟随失效 2026-08-08 20:21:13 +08:00
Jokul 483c0f2ee6 feat: 重新设计左键弹窗布局
采用通透分区方案,去掉自绘卡片背景改用分隔线+留白划分四区:
接口信息(含类型图标)/ 实时速度(24px 锚点)/ 累计流量 / 接口切换
速度数值与单位拆分显示,chip 未选中态改透明+边框
适配用户 textColor(仅主要文字跟随)、预留 fontScale 字号缩放扩展点
2026-08-08 20:15:01 +08:00
Jokul d1b222486b refactor: 提取 interfaceIcon/interfaceDescription 到 NetCommon 共享
将 SettingsWindow 的接口图标和描述函数迁移到 NetCommon.qml,
消除与 NetworkPopup 的重复定义;新增 formatSpeedValue/formatSpeedUnit
为弹窗速度数值与单位拆分显示做准备
2026-08-08 20:08:59 +08:00
Jokul 90a2f39e75 docs: 左键弹窗重新设计实现计划 2026-08-08 19:57:12 +08:00
Jokul 01e38db724 docs: 左键弹窗重新设计文档
重新设计 NetworkPopup 布局结构,采用通透分区方案:
去掉自绘卡片背景,用分隔线+留白划分区域,速度数字放大为视觉锚点。
适配用户字体颜色、网卡类型图标,预留 fontScale 字号缩放扩展点。
2026-08-08 19:45:12 +08:00
Jokul d0ce71ddab chore: gitignore添加*.deb,移除误提交的构建产物 2026-07-24 19:38:04 +08:00
Jokul 8cd402a474 fix: build-deb.sh依赖检查补充libdtk6gui-dev和libxkbcommon-dev
DDEShellConfig.cmake 间接依赖 Dtk6Gui 和 XKB,原依赖检查列表
遗漏这两个包导致 CMake 配置失败。同步更新 README.md 构建依赖
列表和对应关系表。
2026-07-24 19:37:34 +08:00
Jokul 73e5487d71 chore: 版本号升至 1.2.0
1.1.0 -> 1.2.0 变更清单:

新增功能:
- 国际化支持(英文源串+中文翻译,按系统语言自动加载)
- C++ 后端单元测试(5个测试用例)
- 全接口速度历史采样(切换网卡趋势图立即有数据)

缺陷修复:
- 速度计算按真实时间间隔而非假定1秒
- 计数器回绕时负速度钳制为0
- 总量统计改为累加会话增量,切换网卡不再跳变
- 独立窗口及任务栏图标适配深色模式
- detectInterfaces过滤规则统一,消除UI闪烁
- setActiveInterface校验接口有效性
- 窗口居中适配多显示器
- version()元数据为空时回退到编译时版本号
- SPDX版权头改为2026 Jokul

重构:
- 抽取NetCommon.qml消除跨组件重复代码
- 删除interfaceStats死代码
- 移除refresh()的Q_INVOKABLE标记

文档:
- 更新README和AGENTS.md
- 新增需求报告
v1.2.0
2026-07-24 19:16:39 +08:00
Jokul 02296ba13e docs: 重整需求报告,移除已修复缺陷,仅保留待开发需求 2026-07-24 19:06:20 +08:00
Jokul 2e615df2ff test: 新增C++后端单元测试,标记#17完成并更新审查清单
新建 tests/tst_networkmonitorapplet.cpp(Qt Test),5个测试用例覆盖
isPhysicalInterface、速度计算、负值钳制、总量累加、接口校验。

同时更新审查清单:#17标记完成,推荐开发中#19/#20/#21/#23/#30/#33
标记为随缺陷修复一并完成。
2026-07-24 19:03:52 +08:00
Jokul fba506d9d8 feat: 国际化支持,英文源串+中文翻译
全部44处qsTr源串改为英文,新建translations/jnetapplet_zh_CN.ts
中文翻译文件。CMake增加LinguistTools+qt_add_translation编译
.ts->.qm,init()按系统语言加载.qm并安装到qApp。

中文系统显示中文翻译,英文系统显示英文源串。
2026-07-24 11:40:12 +08:00
Jokul 43fdcc8b0a docs: 更新README和AGENTS.md同步当前项目状态
功能特性补全设置窗口/字体颜色/流量波动图/IPv6/深色模式/全接口采样。
项目结构补全6个组件。C++ Backend属性列表移除interfaceStats,新增
ipv6Address/version/textColor/speedHistory等。修正卸载入口描述。
2026-07-24 11:14:42 +08:00
Jokul a4fe4fdc83 refactor: 移除refresh()的Q_INVOKABLE标记
refresh() 是 m_refreshTimer 每秒回调,QML 从不直接调用。
移除 Q_INVOKABLE 防止 QML 误调用打破定时间隔。函数本身保留。
2026-07-24 11:10:55 +08:00
Jokul 35dc998448 refactor: 删除interfaceStats死代码
删除未使用的 Q_PROPERTY interfaceStats、interfaceStats() 实现、
statsChanged 信号、QML 属性绑定。#14 随之解决(interfaceStats
整体删除,不再有不完整输出)。
2026-07-24 11:04:59 +08:00
Jokul 110032f3c9 refactor: 抽取NetCommon.qml消除跨组件重复代码
新建 package/components/NetCommon.qml 聚合公共颜色定义(主题感知色
+强调色)和工具函数(isPhysicalIf/formatSpeed/formatTotal/downloadValueColor)。

networkview.qml、NetworkPopup.qml、TrafficChartWindow.qml 删除各自
的重复定义改为引用 common.xxx,净删除91行重复代码。downloadValueColor
由属性绑定改为函数(调用方传速度值)。视觉行为零变化。
2026-07-24 11:00:02 +08:00
Jokul 36200e7c50 fix: version()元数据为空时回退到编译时版本号
CMakeLists.txt 新增 target_compile_definitions 将 project(VERSION)
暴露为 PROJECT_VERSION 宏。version() 在 pluginMetaData 返回空时
回退到该宏,避免 AboutWindow 版本行显示空白。
2026-07-24 10:07:37 +08:00
Jokul 4b5cde4361 fix: SPDX版权头从占位符改为2026 Jokul
8个源文件的 SPDX-FileCopyrightText: 2024 MyCompany 改为 2026 Jokul。
2026-07-24 10:02:46 +08:00