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 |
|
Jokul
|
6d17f638e7
|
fix: 窗口居中加Screen.virtualX/virtualY偏移适配多显示器
原 Screen.width/height 居中在虚拟桌面原点,多显示器下窗口可能出
现在非预期屏幕。加 virtualX/virtualY 偏移后在任务栏所在屏幕内居中。
|
2026-07-24 09:57:32 +08:00 |
|
Jokul
|
9803c59e76
|
fix: 为所有接口采集速度历史而非仅活动接口
原 calculateSpeed 仅给活动接口追加采样点,切换到非活动接口时趋势图
为空需等待数分钟。新增 m_lastRxBytesByIface/m_lastTxBytesByIface
跟踪所有接口字节基线,遍历全部接口采集速度历史。
切换接口时趋势图立即有数据,新增接口(如USB网卡)也自动开始采集。
|
2026-07-24 09:53:39 +08:00 |
|
Jokul
|
8e7b945a7c
|
fix: setActiveInterface校验接口有效性
传入不存在的接口名会被持久化到配置文件且当前会话速度恒为0。
增加 m_interfaceList.contains 校验,无效接口名直接忽略。
|
2026-07-24 09:41:20 +08:00 |
|
Jokul
|
91bc3174a0
|
fix: detectInterfaces过滤规则与readNetworkStats统一
detectInterfaces 原仅过滤 lo,docker/veth/br- 接口会在首次刷新前
短暂出现在列表中后被 readNetworkStats 覆盖,造成 UI 闪烁。
统一过滤规则为 lo/veth*/docker*/br-*。
|
2026-07-24 09:37:11 +08:00 |
|
Jokul
|
c614df5fbe
|
fix: 独立窗口及任务栏图标适配深色模式
4 个独立窗口(AboutWindow/SettingsWindow/TextColorPicker/TrafficChartWindow)
新增 isDarkMode 属性,由 networkview.qml 检测后注入,各窗口定义深/浅双色方案。
深色模式检测从 DockPalette.iconTextPalette 改为 DTK.palette.window.hslLightness,
因 DockPalette 不随系统深色主题变化。
同时将 networkview.qml 任务栏图标和 NetworkPopup 弹窗的颜色基从
DockPalette.iconTextPalette 改为 DTK.palette.windowText,修复深色模式
下黑底黑字、浅色模式下白底白字的问题。
|
2026-07-24 09:30:18 +08:00 |
|
Jokul
|
42028d93bd
|
fix: 总量统计改为累加会话增量而非取计数器值
原 m_totalDownload = currentRxBytes 直接取活动接口计数器值,切换
网卡时跳变到新接口计数器,网卡重启时归零,语义有误导。
改为 m_totalDownload += rxDeltaClamped 累加会话增量,总计从 0
开始增长,切换网卡不再跳变。跨重启持久化属于后续 #18 的范畴。
|
2026-07-23 00:11:09 +08:00 |
|
Jokul
|
af7ae6b334
|
fix: 计数器回绕/重置时钳制负速度为0
网卡重启、/proc/net/dev 计数器溢出或接口重置时,字节差值为负,
QML 会显示负速度。对 rxDelta/txDelta 钳制为 0 避免此问题。
|
2026-07-23 00:06:43 +08:00 |
|
Jokul
|
e53981f828
|
fix: 速度计算按真实时间间隔而非假定为1秒
calculateSpeed() 原直接取字节差作为 bytes/sec,假定定时器严格
1 秒触发。系统负载高时 QTimer 延迟会导致速度失真。
改为记录上次采样的毫秒时间戳 m_lastTimestampMs,按真实流逝时间
delta_bytes / elapsed_seconds 计算速度;速度存储由 qint64 改为
double 保留精度;elapsedSec > 0 守卫避免除零。
同时新增 docs/project-review.md 项目审查清单。
|
2026-07-23 00:01:39 +08:00 |
|
Jokul
|
9f11b32b5e
|
refactor: 拆分弹窗到独立组件 NetworkPopup.qml
将 networkview.qml 中 PanelPopup 弹窗内容提取到独立组件
package/components/NetworkPopup.qml,减少主文件约 400 行。
PanelPopup 是 dock 上下文类型,不能作为独立组件根元素,因此
NetworkPopup.qml 用 Control 作为根(只含弹窗内容),由
networkview.qml 的 PanelPopup 壳包裹,定位和可见性管理在壳层处理。
|
2026-07-22 23:28:07 +08:00 |
|
Jokul
|
b9b5232d5f
|
feat: 活动接口选择持久化到配置文件
- 构造函数从 ~/.config/jnetapplet/settings.ini 读取上次保存的 activeInterface
- setActiveInterface 切换接口时写入配置,弹窗 chip 和设置窗口统一持久化
- 保存的接口已不存在时(如 USB 网卡拔出)清空回退到自动选择
- 下次启动插件自动恢复用户上次选择的网卡
|
2026-07-22 22:42:35 +08:00 |
|
Jokul
|
7f7ab2d737
|
feat: 设置窗口网卡列表样式增强
- 增加网卡类型图标、hover 背景高亮、选中行浅蓝底+蓝边框
- 修复 RadioButton text 在 dde-shell/DTK 下渲染异常导致接口名不可见,
改用独立 Text 元素渲染接口名
- 行高 36->30、间距 4->2 收紧列表布局
- 网卡超过 5 行时 ScrollView 垂直滚动,滚动条样式与弹窗一致
- 行内所有元素垂直居中对齐
- 整行点击即可切换网卡,RadioButton 替换为自绘圆点指示器
- 选中态颜色加深为 #1565c0 提升图标对比度
|
2026-07-22 22:33:46 +08:00 |
|
Jokul
|
c4246cd122
|
feat: chip列表稳定排序+自动滚动到选中网卡
- sortedInterfaces 不再将活动接口移到最前,改为物理网卡在前、虚拟网卡
在后各自按名称排序,切换网卡时列表顺序不再跳动
- 新增 scrollToActiveChip 函数,活动接口变化时自动滚动 Flickable 使选中
chip 完整可见,左侧截断对齐左缘、右侧截断对齐右缘
- 用 NumberAnimation(200ms OutCubic)驱动 contentX 平滑滚动,用户拖拽时
自动停止动画避免争抢
- popup 打开时用 Qt.callLater 直接定位活动 chip(无动画)
|
2026-07-22 21:40:20 +08:00 |
|
Jokul
|
539442ef48
|
fix: 网卡切换chip列表溢出时显示水平滚动条
网卡数量过多或名称过长时,chip 列表溢出弹窗右边界被裁切且无滚动条。
增大 Flickable 高度(32->40px)容纳滚动条,并为 ScrollBar 添加自定义
contentItem 样式,确保深浅主题下均可见可交互。
|
2026-07-22 21:25:15 +08:00 |
|
Jokul
|
647d0878de
|
chore: 版本号升至 1.1.0 准备封版
v1.1.0
|
2026-07-20 23:49:46 +08:00 |
|
Jokul
|
d4627f82d5
|
fix: 流量波动图Y轴动态适应最近活动,峰值过后自动缩小
- Y轴上限从全量5分钟缓冲改为最近60秒窗口计算
- 解决历史高峰值(如12MB/s下载)导致Y轴长期偏高、
当前低网速曲线被压到底部无法观察波动的问题
- 峰值滑出60秒窗口后Y轴自动缩小,始终为当前活动提供合适显示比例
|
2026-07-20 23:23:08 +08:00 |
|
Jokul
|
a12a106791
|
fix: SettingsWindow 组件加载失败修复 + 设置窗口交互优化
- 修复 import "components" 错误:SettingsWindow.qml 位于 components/ 目录,
该 import 会找 components/components/(不存在)导致 QML 加载失败、插件消失;
同目录组件 QML 自动解析,删除该 import
- 接口名左对齐、类型描述右对齐:RadioButton 只显示接口名,描述用独立
Text 右对齐,替代原 modelData + " - " + 描述 的连写形式
- 窗口高度 450 -> 390,字体颜色到卸载按钮的 fillHeight 改固定 4px 间距,
消除原大段空白
- 标题栏拖动改用 startSystemMove() 系统级窗口拖动(参考 TrafficChartWindow),
替代手动鼠标事件模拟,解决拖动抖动/不跟手问题
|
2026-07-20 23:10:20 +08:00 |
|
Jokul
|
02c6d055ce
|
refactor: 抽取设置窗口到独立组件 package/components/SettingsWindow.qml
- 新建 SettingsWindow.qml(411 行):Window 根元素,对外属性 applet /
networkInterfaces / activeInterface / accentColor,内部化 interfaceDescription
函数、clipboardHelper、statusHideTimer,完整搬移标题栏、网络接口选择区、
字体颜色选择区、卸载按钮、卸载确认对话框
- networkview.qml 从 1126 行缩减至 751 行:删除内联设置窗口及相关辅助,
原位置实例化 SettingsWindow 并保留 id: settingsWindow(右键菜单引用无需改动)
- 模式参考 AboutWindow.qml:对外依赖通过 property 注入,组件可独立预览
|
2026-07-20 22:10:55 +08:00 |
|
Jokul
|
9a02f10eb8
|
fix: 设置弹框移除底部关闭按钮、禁止拖拽缩放、标题栏可拖动
- 移除底部「关闭」按钮(保留标题栏 × 按钮关闭窗口)
- 设置 minimumWidth/maximumWidth/minimumHeight/maximumHeight
固定窗口尺寸 340x450,禁止拖拽改变宽高
- 标题栏 MouseArea 已有 drag.target: settingsWindow 拖动能力
|
2026-07-20 21:44:52 +08:00 |
|
Jokul
|
4c6bc6f689
|
feat: 设置窗口网络接口列表显示类型描述
- 新增 interfaceDescription 函数:根据接口名模式返回类型说明
(有线/无线/VPN/容器/桥接/虚拟桥接/本地回环/虚拟接口/其他)
- RadioButton 文本从 modelData 改为 modelData + 描述(如 enp3s0 — 有线网络)
|
2026-07-20 21:37:54 +08:00 |
|
Jokul
|
f7157e15e8
|
fix: 任务栏 ↑↓ 箭头颜色跟随字体颜色设置
- 横向/竖向布局共 4 处箭头 Text 的 color 从 root.secondaryText
改为 root.speedTextColor,与网速数值统一受 textColor 属性控制
- 弹窗详情的标签色(secondaryText)保持不变,不受字体颜色设置影响
|
2026-07-20 21:30:42 +08:00 |
|
Jokul
|
22900737b0
|
feat: 设置窗口新增字体颜色选择,任务栏网速数值色可自定义并持久化
- 新增 TextColorPicker.qml 颜色选择器组件:预设 8 色 + 跟随系统选项,
2px 深色边框高亮选中态,白色圆角卡片与设置窗口其他区视觉一致
- C++ 后端新增 textColor Q_PROPERTY:QString 存储,空串=跟随系统主题,
非空用 QColor 校验,写入 ~/.config/jnetapplet/settings.ini 持久化
- networkview.qml 新增 speedTextColor 属性回退逻辑:applet.textColor
优先,空串时回退到 DockPalette 派生的 primaryText(深浅色自适应)
- 任务栏 4 处数值 Text(横向/竖向 × 下载/上传)color 绑定改为
speedTextColor;设置窗口网络接口区下方新增字体颜色选择区
|
2026-07-20 21:17:59 +08:00 |
|