From 89a40f3ae3bcfe5dceed1712f0086394b30821d7 Mon Sep 17 00:00:00 2001 From: zhangyuanyuan1 Date: Fri, 21 Jul 2023 18:16:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=98=E7=9B=98=E6=97=A0?= =?UTF-8?q?=E7=BA=BF=E7=BD=91=E7=BB=9C=E8=BE=93=E5=85=A5=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/list-items/wlanlistitem.cpp | 40 ++++++++++++------------ src/frontend/list-items/wlanlistitem.h | 4 +-- src/frontend/tab-pages/wlanpage.cpp | 34 +++++++++++++++++--- src/frontend/tab-pages/wlanpage.h | 3 ++ 4 files changed, 54 insertions(+), 27 deletions(-) diff --git a/src/frontend/list-items/wlanlistitem.cpp b/src/frontend/list-items/wlanlistitem.cpp index ce35d5c0..2dbbcbe9 100644 --- a/src/frontend/list-items/wlanlistitem.cpp +++ b/src/frontend/list-items/wlanlistitem.cpp @@ -199,7 +199,7 @@ void WlanListItem::onRightButtonClicked() void WlanListItem::enterEvent(QEvent *event) { //qDebug()<< LOG_FLAG <<"enterEvent" << m_wirelessNetItem.m_NetSsid; - m_mouseIsOut = false; +// m_mouseIsOut = false; if (m_pwdFrame != nullptr && !m_pwdFrame->isVisible()) { if (Deactivated != m_connectState) { m_hoverButton->setProperty("useButtonPalette", true); @@ -223,7 +223,7 @@ void WlanListItem::enterEvent(QEvent *event) void WlanListItem::leaveEvent(QEvent *event) { //qDebug()<< LOG_FLAG <<"leaveEvent"<< m_wirelessNetItem.m_NetSsid; - m_mouseIsOut = true; +// m_mouseIsOut = true; m_hoverButton->hide(); if (m_connectState == Activated || m_connectState == Deactivating) { m_nameLabel->setLabelMaximumWidth(NAMELABLE_MAX_WIDTH_ACTIVATED); @@ -234,12 +234,12 @@ void WlanListItem::leaveEvent(QEvent *event) } else { m_nameLabel->setLabelMaximumWidth(NAMELABLE_MAX_WIDTH_DEACTIVATED); } - if (m_pwdFrame && m_pwdFrame->isVisible()) { - if (m_focusIsOut) { - setExpanded(false); - } - return QFrame::leaveEvent(event); - } +// if (m_pwdFrame && m_pwdFrame->isVisible()) { +// if (m_focusIsOut) { +// setExpanded(false); +// } +// return QFrame::leaveEvent(event); +// } return ListItem::leaveEvent(event); } @@ -252,18 +252,18 @@ bool WlanListItem::eventFilter(QObject *watched, QEvent *event) } } - if (watched == m_pwdLineEdit) { - if (event->type() == QEvent::FocusOut) { - m_focusIsOut = true; - //qDebug()<< LOG_FLAG <<"focusOutEvent" << m_wirelessNetItem.m_NetSsid; - if (m_mouseIsOut) { - setExpanded(false); - } - } else if (event->type() == QEvent::FocusIn) { - //qDebug()<< LOG_FLAG <<"focusInEvent" << m_wirelessNetItem.m_NetSsid; - m_focusIsOut = false; - } - } +// if (watched == m_pwdLineEdit) { +// if (event->type() == QEvent::FocusOut) { +// m_focusIsOut = true; +// //qDebug()<< LOG_FLAG <<"focusOutEvent" << m_wirelessNetItem.m_NetSsid; +// if (m_mouseIsOut) { +// setExpanded(false); +// } +// } else if (event->type() == QEvent::FocusIn) { +// //qDebug()<< LOG_FLAG <<"focusInEvent" << m_wirelessNetItem.m_NetSsid; +// m_focusIsOut = false; +// } +// } return QFrame::eventFilter(watched, event); } diff --git a/src/frontend/list-items/wlanlistitem.h b/src/frontend/list-items/wlanlistitem.h index 11ea69ce..c0d085e0 100644 --- a/src/frontend/list-items/wlanlistitem.h +++ b/src/frontend/list-items/wlanlistitem.h @@ -122,8 +122,8 @@ private: QCheckBox *m_autoConnectCheckBox = nullptr; QLabel *m_autoConnectLabel = nullptr; - bool m_focusIsOut = true; - bool m_mouseIsOut = true; + //bool m_focusIsOut = true; + //bool m_mouseIsOut = true; bool m_forgetConnection = false; bool m_isApMode = false; diff --git a/src/frontend/tab-pages/wlanpage.cpp b/src/frontend/tab-pages/wlanpage.cpp index a4d409e3..9240bcd3 100644 --- a/src/frontend/tab-pages/wlanpage.cpp +++ b/src/frontend/tab-pages/wlanpage.cpp @@ -154,11 +154,12 @@ void WlanPage::initWlanUI() addWlanMoreItem(); m_inactivatedAreaLayout->addWidget(m_inactivatedNetListWidget); - connect(m_inactivatedNetListWidget, &QListWidget::currentItemChanged, this, [=]() { - if (m_inactivatedNetListWidget->currentItem() != nullptr) { - m_inactivatedNetListWidget->currentItem()->setSelected(false); - } - }); + connect(m_inactivatedNetListWidget, &QListWidget::currentItemChanged, + this, &WlanPage::onInactivateListWidgetItemChanged); + + //点击【已连接】网络区域 去掉其他网络的选中效果 + connect(m_activatedNetListWidget, &QListWidget::clicked, this, &WlanPage::setInactivateListItemNoSelect); + connect(m_activatedNetListWidget, &QListWidget::currentItemChanged, this, &WlanPage::setInactivateListItemNoSelect); QPalette pal = m_activatedNetListWidget->palette(); pal.setBrush(QPalette::Base, QColor(0,0,0,0)); //背景透明 @@ -890,6 +891,28 @@ void WlanPage::onDeviceManagedChanged(QString deviceName, bool managed) } } +void WlanPage::onInactivateListWidgetItemChanged(QListWidgetItem *current, QListWidgetItem *previous) +{ + if (previous != nullptr) { + QSize normalSize(previous->sizeHint().width(), NORMAL_HEIGHT); + previous->setSizeHint(normalSize); + WlanListItem *p_wlanItem = (WlanListItem*)m_inactivatedNetListWidget->itemWidget(previous); + p_wlanItem->setExpanded(false); + } + if (current != nullptr) { + current->setSelected(false); + } +} + +void WlanPage::setInactivateListItemNoSelect() +{ + if (m_inactivatedNetListWidget->currentItem() != nullptr) { + WlanListItem *p_wlanItem = (WlanListItem*)m_inactivatedNetListWidget->itemWidget(m_inactivatedNetListWidget->currentItem()); + p_wlanItem->setExpanded(false); + m_inactivatedNetListWidget->currentItem()->setSelected(false); + } +} + void WlanPage::sendApStateChangeSignal(QString uuid, QString ssid, QString deviceName, @@ -1535,6 +1558,7 @@ void WlanPage::onWlanPageVisibleChanged(int index) qDebug() << "wlanpage not visible"; showNonePwd(); } + m_inactivatedNetListWidget->setCurrentIndex(QModelIndex()); // 去除item选中效果 } void WlanPage::showNonePwd() diff --git a/src/frontend/tab-pages/wlanpage.h b/src/frontend/tab-pages/wlanpage.h index 26079e09..a2563bf4 100644 --- a/src/frontend/tab-pages/wlanpage.h +++ b/src/frontend/tab-pages/wlanpage.h @@ -138,6 +138,9 @@ private Q_SLOTS: void onWlanStateChanged(NetworkManager::Device::State newstate, NetworkManager::Device::State oldstate, NetworkManager::Device::StateChangeReason reason); void onDeviceManagedChanged(QString deviceName, bool managed); + void onInactivateListWidgetItemChanged(QListWidgetItem *current, QListWidgetItem *previous); + void setInactivateListItemNoSelect(); + protected: bool eventFilter(QObject *watched, QEvent *event);