fix: 根据连接状态和是否IP冲突判断图标显示方式

根据需求优先以无线连接的图标作为基础,再根据连接状态信号强度以及是否IP冲突为条件决定如何显示图标

Log: 修复在IP冲突时关闭网络连接时任务栏网络图标消失的问题
Bug: https://pms.uniontech.com/zentao/bug-view-91519.html
Change-Id: I2755b1a236e48f7192ebaac91b434c2e53a66eca
This commit is contained in:
chenjun 2021-08-17 15:41:17 +08:00 committed by yanghongwei
parent 361f0153de
commit 6b67127b01

View File

@ -342,47 +342,6 @@ void NetworkItem::refreshIcon()
int iconSize = PLUGIN_ICON_MAX_SIZE;
int strength = 0;
if (m_ipConflict) {
stateString = "offline";
// 当无线网络和有线网络并存的情况,显示无线网络,因此无线网络后更新状态
// 所以先从从有线网络中查找,查找失败,然后再从无线中查找,
// 有线
foreach(auto ip, getActiveWiredList()) {
if (m_conflictMap.keys().contains(ip)) {
iconString = QString("network-%1-symbolic").arg(stateString);
break;
}
}
// 无线
foreach(auto ip, getActiveWirelessList()) {
if (m_conflictMap.keys().contains(ip)) {
iconString = QString("network-wireless-%1-symbolic").arg(stateString);
break;
}
}
// 从ip冲突到到冲突解除中间过渡的状态图标
if (iconString.isEmpty()) {
// 存在激活的有线网卡就显示有线的
if (getActiveWiredList().size() > 0)
iconString = QString("network-%1-symbolic").arg(stateString);
// 存在激活的无线网卡就显示无线的
if (getActiveWirelessList().size() > 0)
iconString = QString("network-wireless-%1-symbolic").arg(stateString);
}
if (height() <= PLUGIN_BACKGROUND_MIN_SIZE
&& DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType)
iconString.append(PLUGIN_MIN_ICON_NAME);
m_iconPixmap = ImageUtil::loadSvg(iconString, ":/", iconSize, ratio);
update();
return;
}
switch (m_pluginState) {
case Disabled:
case Adisabled:
@ -398,10 +357,34 @@ void NetworkItem::refreshIcon()
strength = getStrongestAp();
stateString = getStrengthStateString(strength);
iconString = QString("wireless-%1-symbolic").arg(stateString);
//如果无线连接有IP冲突则显示已连接但是无法访问网络的图标
if (m_ipConflict && getActiveWirelessList().size() > 0) {
foreach(auto ip, getActiveWirelessList()) {
if (m_conflictMap.keys().contains(ip)) {
stateString = "offline";
iconString = QString("network-wireless-%1-symbolic").arg(stateString);
break;
}
}
}
break;
case Bconnected:
stateString = "online";
iconString = QString("network-%1-symbolic").arg(stateString);
//如果有线连接有IP冲突则显示有线连接断开的图标
if (m_ipConflict && getActiveWiredList().size() > 0) {
foreach(auto ip, getActiveWiredList()) {
if (m_conflictMap.keys().contains(ip)) {
stateString = "offline";
iconString = QString("network-%1-symbolic").arg(stateString);
break;
}
}
}
break;
case Disconnected:
case Adisconnected: