Commit Graph
20 Commits
Author SHA1 Message Date
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 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 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 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 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 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 b9b5232d5f feat: 活动接口选择持久化到配置文件
- 构造函数从 ~/.config/jnetapplet/settings.ini 读取上次保存的 activeInterface
- setActiveInterface 切换接口时写入配置,弹窗 chip 和设置窗口统一持久化
- 保存的接口已不存在时(如 USB 网卡拔出)清空回退到自动选择
- 下次启动插件自动恢复用户上次选择的网卡
2026-07-22 22:42:35 +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
Jokul d0b8272ec6 feat: 新增流量波动图窗口,展示活动接口最近 5 分钟网速趋势
- C++ 后端增加 SpeedSample 采样结构与每接口环形缓冲(MAX_HISTORY_SAMPLES=300,
  即 5 分钟/1Hz),通过 speedHistoryDownload/speedHistoryUpload 暴露为
  QVariantList of QPointF 供 QML 绘制;接口切换/消失时同步清理历史避免泄漏
- 新增 package/components/TrafficChartWindow.qml:纯 QML Canvas 绘制下载/上传
  双折线,无外部依赖;支持 hover 辅助线、置顶图钉、空状态兜底
- networkview.qml 右键菜单增加"流量波动图"入口,弹出屏幕居中独立窗口
2026-07-19 21:38:54 +08:00
Jokul c1a535a005 fix: version() 用 value("Version") 直接读取(DPluginMetaData 已展开 Plugin 层级) 2026-07-19 19:22:54 +08:00
Jokul c07f17d212 fix: version() 尝试两种元数据访问方式(直接/嵌套),加 qDebug 排查 2026-07-19 19:20:41 +08:00
Jokul fcb43fe34f feat: About 窗口版本号改为项目统一版本,仓库地址增加一键复制按钮 2026-07-19 19:13:13 +08:00
Jokul 0f58dcad03 refactor: C++ 后端文件移入 src/ 目录,优化项目结构层级 2026-07-19 17:02:45 +08:00