Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b59848f0a | ||
|
|
8ad2ad71c3 | ||
|
|
0bf771b6b0 | ||
|
|
83f1a2002a | ||
|
|
f50a3fe8e5 |
+20
-26
@@ -1,5 +1,13 @@
|
||||
# 更新日志
|
||||
|
||||
## v2.1.0 - 2026-08-09
|
||||
|
||||
v2.0.0 后的优化版本。
|
||||
|
||||
### 优化
|
||||
|
||||
- 流量统计裁剪上限调整:按日保留 30 天,按月保留 12 个月
|
||||
|
||||
## v2.0.0 - 2026-08-09
|
||||
|
||||
本次为大版本更新,涵盖弹窗重新设计、多个新功能窗口、性能优化和架构重构。
|
||||
@@ -20,36 +28,22 @@
|
||||
|
||||
### 优化
|
||||
|
||||
- **弹窗文字颜色修复**:改用 dock 上下文调色板,深色模式文字清晰可见
|
||||
- **弹窗高度固定**:切换网卡时弹窗高度不再跳动
|
||||
- **IPv4/IPv6 地址行对称**:固定宽度标签对齐,不再随地址长度错位
|
||||
- **会话总量语义明确**:改为网卡开机累计值,切换网卡立即显示对应数据
|
||||
- **流量波动图曲线平滑**:5 点滑动平均抑制亚秒混叠尖峰
|
||||
- **C++ 后端性能优化**:正则预编译、信号脏标记、IP 检测降频、历史 QVariantList 缓存
|
||||
- **TCP 进程名反查**:改用 ss 命令(netlink),解决普通用户 /proc 权限限制
|
||||
- 弹窗文字颜色改用 dock 上下文调色板,深色模式文字清晰可见
|
||||
- 弹窗高度固定,切换网卡时不再跳动
|
||||
- IPv4/IPv6 地址行固定宽度标签对齐,不再随地址长度错位
|
||||
- 流量波动图曲线 5 点滑动平均,抑制亚秒混叠尖峰
|
||||
- C++ 后端性能优化:正则预编译、信号脏标记、IP 检测降频、历史 QVariantList 缓存
|
||||
- TCP 进程名反查改用 ss 命令(netlink),不受 /proc 权限限制
|
||||
|
||||
### 重构
|
||||
|
||||
- **提取 WindowTheme + TitleBar**:消除三个独立窗口约 150 行样板重复
|
||||
- **提取 interfaceIcon/interfaceDescription 到 NetCommon**:消除 SettingsWindow 与 NetworkPopup 重复
|
||||
- **清理 fontScale 死代码**:移除为不存在功能预埋的 30+ 处乘法噪声
|
||||
- **CMake Test 改为可选依赖**:解决无 Qt6 Test 开发包环境构建失败
|
||||
|
||||
### Bug 修复
|
||||
|
||||
- 修复关于窗口无法拖动(drag.target 对 Window 无效,改用 startSystemMove)
|
||||
- 修复网卡类型描述国际化翻译 context 错误(迁移到 NetCommon 后未同步)
|
||||
- 修复无 IP 地址时接口信息区塌陷/错位
|
||||
- 修复 IPv6 地址行与 IPv4 行错位
|
||||
- 修复切换网卡时弹窗高度跳动
|
||||
- 修复复制按钮颜色在深色背景下不可见
|
||||
- 修复右键菜单 TCP Connections 国际化缺失
|
||||
- 修复 TextField rightItem 属性不存在导致插件加载失败
|
||||
- 修复 NetworkPopup 大括号多余导致语法错误
|
||||
- 修复 TrafficStatsWindow onVisibleChanged 重复设置导致插件加载失败
|
||||
- 提取 WindowTheme + TitleBar 组件,消除三个独立窗口约 150 行样板重复
|
||||
- 提取 interfaceIcon/interfaceDescription 到 NetCommon,消除跨组件重复
|
||||
- 清理 fontScale 死代码,移除 30+ 处乘法噪声
|
||||
- CMake Test 改为可选依赖,解决无 Qt6 Test 开发包环境构建失败
|
||||
|
||||
### 其他
|
||||
|
||||
- 右键菜单顺序调整:流量波动图 → 流量统计 → TCP 连接 → 设置 → 关于
|
||||
- 全项目国际化翻译补全(75+ 条翻译)
|
||||
- 右键菜单顺序调整:流量波动图 -> 流量统计 -> TCP 连接 -> 设置 -> 关于
|
||||
- 全项目国际化翻译补全(77 条翻译)
|
||||
- 任务栏数值右侧留边距
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(JNetApplet VERSION 2.0.0 LANGUAGES CXX)
|
||||
project(JNetApplet VERSION 2.1.0 LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
> **📦 本仓库已迁移至 GitHub:[GershonWang/JNetApplet](https://github.com/GershonWang/JNetApplet)**
|
||||
>
|
||||
> 此仓库代码已停止更新,最新源码、Issue 与版本发布请前往:
|
||||
> <https://github.com/GershonWang/JNetApplet>
|
||||
|
||||
---
|
||||
|
||||
# JNetApplet
|
||||
|
||||
基于 dde-shell 的**深度系统任务栏网络速率监控插件**,使用 C++ 后端采集数据、
|
||||
|
||||
@@ -545,11 +545,11 @@ void NetworkMonitorApplet::calculateSpeed()
|
||||
const qint64 txDeltaClamped = txDelta > 0 ? txDelta : 0;
|
||||
m_downloadSpeed = rxDeltaClamped / elapsedSec;
|
||||
m_uploadSpeed = txDeltaClamped / elapsedSec;
|
||||
// 会话总量:直接读取活动接口累计字节数(开机至今),而非累加差值
|
||||
// 设计原因:用户期望"本次会话"显示当前网卡从开机起的累计流量,
|
||||
// 切换网卡后立即显示新网卡的累计值,无流量网卡显示 0
|
||||
m_totalDownload = currentRxBytes;
|
||||
m_totalUpload = currentTxBytes;
|
||||
// 会话总量:累加差值(dde-shell 启动至今的流量),重启清零
|
||||
// 设计原因:用户期望"本次会话"是本次 dde-shell 运行期间的流量,
|
||||
// 与流量统计窗口的"今日累计"(从0点起)区分,数值不会超过今日累计
|
||||
m_totalDownload += rxDeltaClamped;
|
||||
m_totalUpload += txDeltaClamped;
|
||||
// 累加日/月流量日志(仅活动接口增量,与速度计算口径一致)
|
||||
appendToTrafficLog(rxDeltaClamped, txDeltaClamped);
|
||||
m_lastRxBytes = currentRxBytes;
|
||||
@@ -573,15 +573,6 @@ void NetworkMonitorApplet::calculateSpeed()
|
||||
m_rxDropped = static_cast<quint64>(iface.rxDropped);
|
||||
m_txDropped = static_cast<quint64>(iface.txDropped);
|
||||
emit packetStatsChanged();
|
||||
|
||||
// 接口切换后立即更新会话总量为新网卡的累计字节数(开机至今)
|
||||
// 设计原因:会话总量改为读取活动接口累计值,切换后应立即显示新网卡数据,
|
||||
// 无需等下一次 calculateSpeed(1 秒后)才更新
|
||||
if (m_interfaces.contains(m_activeInterface)) {
|
||||
m_totalDownload = m_interfaces[m_activeInterface].rxBytes;
|
||||
m_totalUpload = m_interfaces[m_activeInterface].txBytes;
|
||||
emit totalChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1036,7 +1027,7 @@ void NetworkMonitorApplet::appendToTrafficLog(qint64 rxDelta, qint64 txDelta)
|
||||
m_trafficLog[QStringLiteral("byMonth")] = byMonth;
|
||||
}
|
||||
|
||||
// 裁剪超期记录:按日最多 90 天、按月最多 24 个月,超出删除最旧记录
|
||||
// 裁剪超期记录:按日最多 30 天、按月最多 12 个月,超出删除最旧记录
|
||||
// 日期/月份均为 ISO 格式("yyyy-MM-dd"/"yyyy-MM"),字典序即时间序,
|
||||
// 排序后取最小的超量个删除,保证始终保留最近的记录
|
||||
void NetworkMonitorApplet::pruneTrafficLog()
|
||||
|
||||
@@ -212,7 +212,7 @@ private:
|
||||
void saveTrafficLog();
|
||||
// 将本次流量增量累加到当日/当月/当前活动接口的日志记录中(每秒调用,内存操作)
|
||||
void appendToTrafficLog(qint64 rxDelta, qint64 txDelta);
|
||||
// 裁剪超期记录:按日最多 90 天、按月最多 24 个月,超出删除最旧记录
|
||||
// 裁剪超期记录:按日最多 30 天、按月最多 12 个月,超出删除最旧记录
|
||||
void pruneTrafficLog();
|
||||
|
||||
QTimer *m_refreshTimer;
|
||||
@@ -303,9 +303,9 @@ private:
|
||||
// 降频保存计数器:每 30 秒(按刷新间隔折算)写盘一次并通知 QML,
|
||||
// 避免每秒磁盘 IO 与 QML 重绘;析构函数再兜底保存一次
|
||||
int m_trafficSaveCounter;
|
||||
// 按日记录最多保留 90 天、按月最多保留 24 个月,超出自动裁剪最旧记录
|
||||
static constexpr int MAX_DAY_ENTRIES = 90;
|
||||
static constexpr int MAX_MONTH_ENTRIES = 24;
|
||||
// 按日记录最多保留 30 天、按月最多保留 12 个月,超出自动裁剪最旧记录
|
||||
static constexpr int MAX_DAY_ENTRIES = 30;
|
||||
static constexpr int MAX_MONTH_ENTRIES = 12;
|
||||
|
||||
// ---- TCP 连接清单成员 ----
|
||||
// TCP 连接详情列表(QVariantList of QVariantMap),供 QML 连接清单窗口读取
|
||||
|
||||
Reference in New Issue
Block a user