diff --git a/src/backend/dbus-interface/kylinagentinterface.c b/src/backend/dbus-interface/kylinagentinterface.c index 114a58f4..c00d26d1 100644 --- a/src/backend/dbus-interface/kylinagentinterface.c +++ b/src/backend/dbus-interface/kylinagentinterface.c @@ -81,6 +81,32 @@ free_wifi_info (SecretsRequest *req) } } + +void +applet_secrets_request_free (SecretsRequest *req) +{ + g_return_if_fail (req != NULL); + + if (req->free_func) + req->free_func (req); + + secrets_reqs = g_slist_remove (secrets_reqs, req); + + g_object_unref (req->connection); + g_free (req->setting_name); + g_strfreev (req->hints); + memset (req, 0, req->totsize); + g_free (req); +} + +void +applet_secrets_request_complete (SecretsRequest *req, + GVariant *settings, + GError *error) +{ + req->callback (req->agent, error ? NULL : settings, error, req->callback_data); +} + static void get_secrets_dialog_response_cb (GtkDialog *foo, gint response, @@ -230,24 +256,6 @@ l_out: //return 0; } - -void -applet_secrets_request_free (SecretsRequest *req) -{ - g_return_if_fail (req != NULL); - - if (req->free_func) - req->free_func (req); - - secrets_reqs = g_slist_remove (secrets_reqs, req); - - g_object_unref (req->connection); - g_free (req->setting_name); - g_strfreev (req->hints); - memset (req, 0, req->totsize); - g_free (req); -} - static SecretsRequest * applet_secrets_request_new (size_t totsize, NMConnection *connection, @@ -277,15 +285,6 @@ applet_secrets_request_new (size_t totsize, return req; } -void -applet_secrets_request_complete (SecretsRequest *req, - GVariant *settings, - GError *error) -{ - req->callback (req->agent, error ? NULL : settings, error, req->callback_data); -} - - static void get_existing_secrets_cb (NMSecretAgentOld *agent, NMConnection *connection, diff --git a/src/frontend/list-items/lanlistitem.cpp b/src/frontend/list-items/lanlistitem.cpp index a08850e7..5f99d10f 100644 --- a/src/frontend/list-items/lanlistitem.cpp +++ b/src/frontend/list-items/lanlistitem.cpp @@ -82,11 +82,17 @@ void LanListItem::onRightButtonClicked() void LanListItem::onInfoButtonClicked() { + if(isDetailShow){ + qDebug() << "has show the detail page,and do not show again" << Q_FUNC_INFO << __LINE__; + return; + } if(m_data){ qDebug()<<"Net active or not:"<m_connectName, m_data->m_connectUuid, m_isActive,false, false, this); + connect(netDetail, &NetDetail::detailPageClose, this, &LanListItem::onDetailShow); netDetail->show(); + emit this->detailShow(true); } else{ qDebug() << "On lan info button clicked! But there is no wlan connect " ; diff --git a/src/frontend/list-items/listitem.cpp b/src/frontend/list-items/listitem.cpp index 021402c0..07c973c4 100644 --- a/src/frontend/list-items/listitem.cpp +++ b/src/frontend/list-items/listitem.cpp @@ -13,9 +13,11 @@ ListItem::ListItem(QWidget *parent) : QFrame(parent) { + isDetailShow = false; initUI(); initConnection(); connect(qApp, &QApplication::paletteChanged, this, &ListItem::onPaletteChanged); + connect(this, &ListItem::detailShow, this, &ListItem::onDetailShow); // m_itemFrame->installEventFilter(this); } @@ -160,3 +162,8 @@ void ListItem::onPaletteChanged() pal.setColor(QPalette::Window, qApp->palette().base().color()); this->setPalette(pal); } + +void ListItem::onDetailShow(bool isShow) +{ + isDetailShow = isShow; +} diff --git a/src/frontend/list-items/listitem.h b/src/frontend/list-items/listitem.h index 36f04f97..2e19c6c5 100644 --- a/src/frontend/list-items/listitem.h +++ b/src/frontend/list-items/listitem.h @@ -39,6 +39,7 @@ protected: public: QVBoxLayout * m_mainLayout = nullptr; QHBoxLayout * m_hItemLayout = nullptr; + bool isDetailShow; private: void initUI(); void initConnection(); @@ -46,6 +47,10 @@ private: public slots: virtual void onNetButtonClicked() = 0; void onPaletteChanged(); + void onDetailShow(bool isShow); + +signals: + void detailShow(bool isShow); }; #endif // LISTITEM_H diff --git a/src/frontend/list-items/wlanlistitem.cpp b/src/frontend/list-items/wlanlistitem.cpp index 03925255..3738f306 100644 --- a/src/frontend/list-items/wlanlistitem.cpp +++ b/src/frontend/list-items/wlanlistitem.cpp @@ -58,8 +58,8 @@ void WlanListItem::setExpanded(const bool &expanded) } this->setFixedHeight(expanded ? EXPANDED_HEIGHT : NORMAL_HEIGHT); - m_pwdFrame->setVisible(expanded); - m_autoConnectFrame->setVisible(expanded); +// m_pwdFrame->setVisible(false); +// m_autoConnectFrame->setVisible(false); emit this->itemHeightChanged(m_data->m_NetSsid); if (!expanded) { QPalette pal = qApp->palette(); @@ -68,6 +68,12 @@ void WlanListItem::setExpanded(const bool &expanded) } } +void WlanListItem::setWlanItemPwdVisible(const bool &expanded) +{ + m_pwdFrame->setVisible(expanded); + m_autoConnectFrame->setVisible(expanded); +} + QString WlanListItem::getSsid() { if (!m_data) { @@ -259,11 +265,17 @@ void WlanListItem::refreshIcon() void WlanListItem::onInfoButtonClicked() { //ZJP_TODO 呼出无线详情页 + if(isDetailShow){ + qDebug() << "has show the detail page,and do not show again" << Q_FUNC_INFO << __LINE__; + return; + } if(m_data){ qDebug()<<"Net active or not:"<m_NetSsid, m_data->m_connectUuid, m_isActive, true, !m_data->m_isConfigured, this); + connect(netDetail, &NetDetail::detailPageClose, this, &WlanListItem::onDetailShow); netDetail->show(); + emit this->detailShow(true); } else{ qDebug() << "On wlan info button clicked! But there is no wlan connect " ; diff --git a/src/frontend/list-items/wlanlistitem.h b/src/frontend/list-items/wlanlistitem.h index 56b554d4..4a6d65f8 100644 --- a/src/frontend/list-items/wlanlistitem.h +++ b/src/frontend/list-items/wlanlistitem.h @@ -30,6 +30,7 @@ public: void setWlanSignal(const int &signal); void setWlanState(const int &state); void setExpanded(const bool &expanded); + void setWlanItemPwdVisible(const bool &expanded); QString getSsid(); KyWirelessNetItem *m_data = nullptr; protected: diff --git a/src/frontend/mainwindow.cpp b/src/frontend/mainwindow.cpp index a0ae7554..c88ad2c4 100644 --- a/src/frontend/mainwindow.cpp +++ b/src/frontend/mainwindow.cpp @@ -151,6 +151,7 @@ void MainWindow::initTrayIcon() m_trayIconMenu->addAction(m_showSettingsAction); m_trayIcon->setContextMenu(m_trayIconMenu); m_trayIcon->setIcon(QIcon::fromTheme("network-wired-signal-excellent-symbolic")); + onRefreshTrayIcon(); connect(m_trayIcon, &QSystemTrayIcon::activated, this, &MainWindow::onTrayIconActivated); // connect(m_showMainwindowAction, &QAction::triggered, this, &MainWindow::onShowMainwindowActionTriggled); diff --git a/src/frontend/netdetails/netdetail.cpp b/src/frontend/netdetails/netdetail.cpp index 11f124d7..8f85ed15 100644 --- a/src/frontend/netdetails/netdetail.cpp +++ b/src/frontend/netdetails/netdetail.cpp @@ -117,6 +117,12 @@ void NetDetail::paintEvent(QPaintEvent *event) return QDialog::paintEvent(event); } +void NetDetail::closeEvent(QCloseEvent *event) +{ + emit this->detailPageClose(false); + return QDialog::closeEvent(event); +} + void NetDetail::centerToScreen() { QDesktopWidget* m = QApplication::desktop(); diff --git a/src/frontend/netdetails/netdetail.h b/src/frontend/netdetails/netdetail.h index e40db6c0..950670af 100644 --- a/src/frontend/netdetails/netdetail.h +++ b/src/frontend/netdetails/netdetail.h @@ -19,6 +19,7 @@ #include #include #include +#include #include "detailpage.h" #include "ipv4page.h" @@ -37,6 +38,7 @@ public: ~NetDetail(); protected: void paintEvent(QPaintEvent *event); + void closeEvent(QCloseEvent *event); private: void initUI(); @@ -127,6 +129,9 @@ private: private slots: void on_btnConfirm_clicked(); void on_btnForget_clicked(); + +signals: + void detailPageClose(bool on); void onPaletteChanged(); }; #endif // NETDETAIL_H diff --git a/src/frontend/tab-pages/lanpage.cpp b/src/frontend/tab-pages/lanpage.cpp index 6880ba99..55dce961 100644 --- a/src/frontend/tab-pages/lanpage.cpp +++ b/src/frontend/tab-pages/lanpage.cpp @@ -766,8 +766,6 @@ void LanPage::updateConnectionArea(QString uuid) qDebug()<<"[LanPage] update connection item"<m_connectName; QListWidgetItem *p_listWidgetItem = addNewItem(p_newItem, m_inactivatedLanListWidget); m_deactiveMap.insert(p_newItem, p_listWidgetItem); - - emit this->lanConnectChanged(); } else { delete p_newItem; p_newItem = nullptr; @@ -790,8 +788,10 @@ void LanPage::onUpdateLanlist(QString uuid, if (state == NetworkManager::ActiveConnection::State::Activated) { updateActivatedConnectionArea(uuid); + m_isLanConnected = true; } else if (state == NetworkManager::ActiveConnection::State::Deactivated) { updateConnectionArea(uuid); + m_isLanConnected = false; } else if (state == NetworkManager::ActiveConnection::State::Activating || state == NetworkManager::ActiveConnection::State::Deactivating) { QString devName = m_activeResourse->getDeviceOfActivateConnect(uuid); @@ -801,6 +801,8 @@ void LanPage::onUpdateLanlist(QString uuid, } emit lanActiveConnectionStateChanged(devName, uuid, state); } + + emit this->lanConnectChanged(); return; } @@ -1048,7 +1050,6 @@ void LanPage::activateWired(const QString& devName, const QString& connUuid) { qDebug() << "[LanPage] activateWired" << devName << connUuid; m_wiredConnectOperation->activateConnection(connUuid, devName); - emit this->lanConnectChanged(); } void LanPage::deactivateWired(const QString& devName, const QString& connUuid) diff --git a/src/frontend/tab-pages/wlanpage.cpp b/src/frontend/tab-pages/wlanpage.cpp index c4f9a272..1db5d3ee 100644 --- a/src/frontend/tab-pages/wlanpage.cpp +++ b/src/frontend/tab-pages/wlanpage.cpp @@ -277,11 +277,12 @@ void WlanPage::appendActiveWlan(const QString &uuid, int &height) } KyWirelessNetItem *item_data = new KyWirelessNetItem(data); WlanListItem *wlanItemWidget = new WlanListItem(m_resource, item_data, m_defaultDevice); + connect(wlanItemWidget, &WlanListItem::itemHeightChanged, this, &WlanPage::onItemHeightChanged); + connect(wlanItemWidget, &WlanListItem::connectButtonClicked, this, &WlanPage::onConnectButtonClicked); qDebug() << "Activated wlan: ssid = " << item_data->m_NetSsid; QListWidgetItem *wlanItem = new QListWidgetItem(); wlanItem->setSizeHint(QSize(m_activatedNetListWidget->width(), wlanItemWidget->height())); m_activatedNetListWidget->addItem(wlanItem); - emit this->wlanConnectChanged(); qDebug() << "[wlanpage]emit wlanConnectChanged()" << Q_FUNC_INFO << __LINE__ ; m_activatedNetListWidget->setItemWidget(wlanItem, wlanItemWidget); wlanItemWidget->setActive(true); @@ -383,6 +384,10 @@ void WlanPage::onWlanRemoved(QString interface, QString ssid) int height = m_itemsMap.value(ssid).second->height(); m_inactivatedNetListWidget->setFixedHeight(m_inactivatedNetListWidget->height() - height - NET_LIST_SPACING); m_inactivatedWlanListAreaCentralWidget->setFixedHeight(m_inactivatedNetListWidget->height() + m_hiddenWlanLabel->height()); + QListWidgetItem * aItem = (m_itemsMap.value(ssid)).first; + delete aItem; + WlanListItem * awItem = (m_itemsMap.value(ssid)).second; + delete awItem; } m_itemsMap.remove(ssid); } @@ -493,9 +498,11 @@ void WlanPage::onActivatedWlanChanged(QString uuid, NetworkManager::ActiveConnec if(NetworkManager::ActiveConnection::State::Activated == state){ m_wlanIsConnected = true; qDebug() << "[wlanpage] wlanIsConnected status : " << m_wlanIsConnected << Q_FUNC_INFO << __LINE__ ; + emit this->wlanConnectChanged(); } else { m_wlanIsConnected = false; qDebug() << "[wlanpage] wlanIsConnected status : " << m_wlanIsConnected << Q_FUNC_INFO << __LINE__ ; + emit this->wlanConnectChanged(); } //弹窗显示wifi连接状况 @@ -600,22 +607,32 @@ void WlanPage::onActivatedWlanChanged(QString uuid, NetworkManager::ActiveConnec void WlanPage::onItemHeightChanged(const QString &ssid) { + qDebug() << "onItemHeightChanged" << __LINE__; if (!m_itemsMap.contains(ssid)) { return; } + //新的展开item QListWidgetItem *item = (m_itemsMap.value(ssid)).first; + WlanListItem * m_item = (m_itemsMap.value(ssid)).second; if (m_expandedItem && m_expandedItem != item) { + qDebug() << "onItemHeightChanged : the old fold and the new expanded" << m_expandedItem << item << __LINE__; QSize size(m_inactivatedNetListWidget->itemWidget(m_expandedItem)->size().width(), NORMAL_HEIGHT); //旧的收起 m_expandedItem->setSizeHint(size); m_inactivatedNetListWidget->itemWidget(m_expandedItem)->setFixedHeight(NORMAL_HEIGHT); + m_wlanExpandedItem->setWlanItemPwdVisible(false); //新的展开 m_expandedItem = item; + m_wlanExpandedItem = m_item; item->setSizeHint(m_inactivatedNetListWidget->itemWidget(item)->size()); + m_item->setWlanItemPwdVisible(true); } else if (!m_expandedItem) { + qDebug() << "onItemHeightChanged : only expanded the new one " << m_expandedItem << item << __LINE__; m_expandedItem = item; + m_wlanExpandedItem = m_item; m_inactivatedNetListWidget->setFixedHeight(m_inactivatedNetListWidget->height() + m_inactivatedNetListWidget->itemWidget(item)->height() - item->sizeHint().height()); m_inactivatedWlanListAreaCentralWidget->setFixedHeight(m_inactivatedNetListWidget->height() + m_hiddenWlanLabel->height()); item->setSizeHint(m_inactivatedNetListWidget->itemWidget(item)->size()); + m_item->setWlanItemPwdVisible(true); } } diff --git a/src/frontend/tab-pages/wlanpage.h b/src/frontend/tab-pages/wlanpage.h index 9e0639a2..ebebb1f2 100644 --- a/src/frontend/tab-pages/wlanpage.h +++ b/src/frontend/tab-pages/wlanpage.h @@ -87,6 +87,7 @@ private: QMap> m_itemsMap; QListWidgetItem *m_expandedItem = nullptr; + WlanListItem *m_wlanExpandedItem = nullptr; QFrame * m_inactivatedWlanListAreaCentralWidget = nullptr; QVBoxLayout * m_inactivatedWlanListAreaLayout = nullptr; QFrame * m_hiddenWlanWidget = nullptr;