From 92efbe52c318bf533033e1a8c88a908e5f4e38b4 Mon Sep 17 00:00:00 2001 From: jzxc95 <907297917@qq.com> Date: Thu, 14 Oct 2021 20:30:53 +0800 Subject: [PATCH 1/7] add device name when actvating or deactivating && lan list sort --- .../kylinactiveconnectresource.cpp | 20 +++++++++++++++++++ .../kylinactiveconnectresource.h | 2 ++ .../dbus-interface/kylinconnectoperation.cpp | 5 +++++ .../dbus-interface/kylinconnectresource.cpp | 19 ++++++++++++++++++ src/frontend/tab-pages/lanpage.cpp | 11 +++++++++- 5 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/backend/dbus-interface/kylinactiveconnectresource.cpp b/src/backend/dbus-interface/kylinactiveconnectresource.cpp index df31ff31..3c94b975 100644 --- a/src/backend/dbus-interface/kylinactiveconnectresource.cpp +++ b/src/backend/dbus-interface/kylinactiveconnectresource.cpp @@ -560,3 +560,23 @@ bool KyActiveConnectResourse::isActiveConnection(QString uuid, QStringList &devN } } } + +QString KyActiveConnectResourse::getDeviceOfActivateConnect(QString conUuid) +{ + QString deviceName = ""; + + NetworkManager::ActiveConnection::Ptr activeConnectPtr = + m_networkResourceInstance->getActiveConnect(conUuid); + + if (nullptr == activeConnectPtr) { + qWarning()<< "[KyActiveConnectResourse]" <<"it can not find connect "<< conUuid; + return deviceName; + } + + QStringList interfaces = activeConnectPtr->devices(); + QString ifaceUni = interfaces.at(0); + NetworkManager::Device:: Ptr devicePtr = + m_networkResourceInstance->findDeviceUni(ifaceUni); + deviceName = devicePtr->interfaceName(); + return deviceName; +} diff --git a/src/backend/dbus-interface/kylinactiveconnectresource.h b/src/backend/dbus-interface/kylinactiveconnectresource.h index 93225d1b..4a291167 100644 --- a/src/backend/dbus-interface/kylinactiveconnectresource.h +++ b/src/backend/dbus-interface/kylinactiveconnectresource.h @@ -37,6 +37,8 @@ public: bool isActiveConnection(QString uuid, QStringList &devName); + QString getDeviceOfActivateConnect(QString conUuid); + private: void getActiveConnectIp(NetworkManager::ActiveConnection::Ptr activeConnectPtr, QString &ipv4Address, diff --git a/src/backend/dbus-interface/kylinconnectoperation.cpp b/src/backend/dbus-interface/kylinconnectoperation.cpp index 4701df6b..bb05e3fd 100644 --- a/src/backend/dbus-interface/kylinconnectoperation.cpp +++ b/src/backend/dbus-interface/kylinconnectoperation.cpp @@ -208,9 +208,14 @@ void KyConnectOperation::activateConnection(const QString connectUuid, const QSt void KyConnectOperation::deactivateConnection(const QString activeConnectName, const QString &activeConnectUuid) { + NetworkManager::ActiveConnection::Ptr activateConnectPtr = nullptr; qDebug()<<"deactivetate connect name"<getActiveConnect(activeConnectUuid); if (nullptr == activateConnectPtr) { QString errorMessage = tr("it can not find the activate connect") diff --git a/src/backend/dbus-interface/kylinconnectresource.cpp b/src/backend/dbus-interface/kylinconnectresource.cpp index 3b0b95ae..ef266586 100644 --- a/src/backend/dbus-interface/kylinconnectresource.cpp +++ b/src/backend/dbus-interface/kylinconnectresource.cpp @@ -8,6 +8,22 @@ #include #include +static bool subLanListSort(const KyConnectItem* info1, const KyConnectItem* info2) +{ + QString name1 = info1->m_connectName; + QString name2 = info2->m_connectName; + bool result = true; + if (QString::compare(name1, name2, Qt::CaseInsensitive) > 0) { + result = false; + } + return result; +} + +static void lanListSort(QList &list) +{ + qSort(list.begin(), list.end(), subLanListSort); +} + KyConnectResourse::KyConnectResourse(QObject *parent) : QObject(parent) { m_networkResourceInstance = KyNetworkResourceManager::getInstance(); @@ -152,6 +168,9 @@ void KyConnectResourse::getConnectionList(QString deviceName, connectPtr = nullptr; } + if (connectItemList.size() > 1) { + lanListSort(connectItemList); + } return; } diff --git a/src/frontend/tab-pages/lanpage.cpp b/src/frontend/tab-pages/lanpage.cpp index 3a77c360..2537ba36 100644 --- a/src/frontend/tab-pages/lanpage.cpp +++ b/src/frontend/tab-pages/lanpage.cpp @@ -22,6 +22,7 @@ LanPage::LanPage(QWidget *parent) : TabPage(parent) m_activeResourse = new KyActiveConnectResourse(this); m_connectResourse = new KyConnectResourse(this); m_deviceResource = new KyNetworkDeviceResourse(this); + m_wiredConnectOperation = new KyWiredConnectOperation(this); initUI(); initNetSwitch(); @@ -792,11 +793,19 @@ void LanPage::onUpdateLanlist(QString uuid, updateActivatedConnectionArea(uuid); } else if (state == NetworkManager::ActiveConnection::State::Deactivated) { updateConnectionArea(uuid); + } else if (state == NetworkManager::ActiveConnection::State::Activating + || state == NetworkManager::ActiveConnection::State::Deactivating) { + QString devName = m_activeResourse->getDeviceOfActivateConnect(uuid); + if (devName.isEmpty()) { + NetworkManager::ConnectionSettings::ConnectionType type = NetworkManager::ConnectionSettings::Wired; + m_connectResourse->getInterfaceByUuid(devName, type, uuid); + } + emit lanActiveConnectionStateChanged(devName, uuid, state); } - return; } + void LanPage::getWiredList(QMap > &map) { QStringList devlist; From 808613285ca28c7839ce2de061d93ef86455cd1f Mon Sep 17 00:00:00 2001 From: jzxc95 <907297917@qq.com> Date: Thu, 14 Oct 2021 20:33:09 +0800 Subject: [PATCH 2/7] remove useless code --- src/backend/dbus-interface/kylinconnectoperation.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/backend/dbus-interface/kylinconnectoperation.cpp b/src/backend/dbus-interface/kylinconnectoperation.cpp index bb05e3fd..7c4b1eeb 100644 --- a/src/backend/dbus-interface/kylinconnectoperation.cpp +++ b/src/backend/dbus-interface/kylinconnectoperation.cpp @@ -208,14 +208,10 @@ void KyConnectOperation::activateConnection(const QString connectUuid, const QSt void KyConnectOperation::deactivateConnection(const QString activeConnectName, const QString &activeConnectUuid) { - NetworkManager::ActiveConnection::Ptr activateConnectPtr = nullptr; qDebug()<<"deactivetate connect name"<getActiveConnect(activeConnectUuid); if (nullptr == activateConnectPtr) { QString errorMessage = tr("it can not find the activate connect") From 6a0806dae0b6c3f25429372e9da796a8ef4930b1 Mon Sep 17 00:00:00 2001 From: jzxc95 <907297917@qq.com> Date: Fri, 15 Oct 2021 09:21:52 +0800 Subject: [PATCH 3/7] out arg --- src/frontend/tab-pages/lanpage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/tab-pages/lanpage.cpp b/src/frontend/tab-pages/lanpage.cpp index 2537ba36..0c11cb56 100644 --- a/src/frontend/tab-pages/lanpage.cpp +++ b/src/frontend/tab-pages/lanpage.cpp @@ -797,7 +797,7 @@ void LanPage::onUpdateLanlist(QString uuid, || state == NetworkManager::ActiveConnection::State::Deactivating) { QString devName = m_activeResourse->getDeviceOfActivateConnect(uuid); if (devName.isEmpty()) { - NetworkManager::ConnectionSettings::ConnectionType type = NetworkManager::ConnectionSettings::Wired; + NetworkManager::ConnectionSettings::ConnectionType type; m_connectResourse->getInterfaceByUuid(devName, type, uuid); } emit lanActiveConnectionStateChanged(devName, uuid, state); From 957cad765352cdc485918f1529f93de9fba4fd62 Mon Sep 17 00:00:00 2001 From: kangshuning Date: Fri, 15 Oct 2021 11:50:41 +0800 Subject: [PATCH 4/7] bug#83296 --- src/frontend/netdetails/detailitem.cpp | 6 -- src/frontend/netdetails/detailitem.h | 16 --- src/frontend/netdetails/detailpage.cpp | 124 +++++++++++++---------- src/frontend/netdetails/detailpage.h | 18 +++- src/frontend/netdetails/detailwidget.cpp | 32 ++++++ src/frontend/netdetails/detailwidget.h | 27 +++++ src/frontend/netdetails/netdetail.cpp | 23 ++++- src/frontend/netdetails/netdetail.h | 1 + src/frontend/netdetails/netdetails.pri | 2 + 9 files changed, 170 insertions(+), 79 deletions(-) delete mode 100644 src/frontend/netdetails/detailitem.cpp delete mode 100644 src/frontend/netdetails/detailitem.h create mode 100644 src/frontend/netdetails/detailwidget.cpp create mode 100644 src/frontend/netdetails/detailwidget.h diff --git a/src/frontend/netdetails/detailitem.cpp b/src/frontend/netdetails/detailitem.cpp deleted file mode 100644 index be9001a4..00000000 --- a/src/frontend/netdetails/detailitem.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "detailitem.h" - -DetailItem::DetailItem(QWidget *parent) : QWidget(parent) -{ - -} diff --git a/src/frontend/netdetails/detailitem.h b/src/frontend/netdetails/detailitem.h deleted file mode 100644 index 6e775c6f..00000000 --- a/src/frontend/netdetails/detailitem.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef DETAILITEM_H -#define DETAILITEM_H - -#include - -class DetailItem : public QWidget -{ - Q_OBJECT -public: - explicit DetailItem(QWidget *parent = nullptr); - -signals: - -}; - -#endif // DETAILITEM_H diff --git a/src/frontend/netdetails/detailpage.cpp b/src/frontend/netdetails/detailpage.cpp index 572ea7e3..7b8e45a8 100644 --- a/src/frontend/netdetails/detailpage.cpp +++ b/src/frontend/netdetails/detailpage.cpp @@ -1,5 +1,6 @@ #include "detailpage.h" #include +#include extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed); @@ -73,68 +74,78 @@ bool DetailPage::checkIsChanged(const ConInfo info) } } +void DetailPage::addDetailItem(QListWidget *listWidget, DetailWidget *detailWidget) +{ + QListWidgetItem *listWidgetItem = new QListWidgetItem(listWidget); + listWidgetItem->setSizeHint(QSize(listWidget->width(),36)); + listWidgetItem->setFlags(Qt::NoItemFlags); + listWidget->addItem(listWidgetItem); + listWidget->setItemWidget(listWidgetItem, detailWidget); +} + void DetailPage::initUI() { forgetNetBox = new QCheckBox(this); layout = new QVBoxLayout(this); + layout->setContentsMargins(0,0,0,0); - mDetailLayout = new QFormLayout(this); + QWidget *mDetailFrame = new QFrame(this); + mDetailLayout = new QVBoxLayout(mDetailFrame); + mDetailLayout->setContentsMargins(0,0,0,0); + + m_listWidget = new QListWidget(mDetailFrame); + m_listWidget->setFrameShape(QFrame::Shape::NoFrame); + m_listWidget->setBackgroundRole(QPalette::Base); + m_listWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus); + mDetailLayout->addWidget(m_listWidget); mSSID = new QLineEdit(this); mSSID->setAlignment(Qt::AlignRight); if (!isCreate) { - mSSID->setStyleSheet("background:transparent;border-width:0;border-style:outset"); + mSSID->setStyleSheet("background:transparent;border-width:0px;border-style:none"); mSSID->setFocusPolicy(Qt::NoFocus); } else { - mSSID->setStyleSheet("border-width:0;border-style:outset"); +// mSSID->setStyleSheet("border-width:1px;;border-style:solid;border-color:black;border-radius:2px"); + mSSID->setStyleSheet("border-top:0px solid;border-bottom:1px solid;border-left:0px solid;border-right: 0px solid;"); + mSSID->setPlaceholderText(tr("Please input SSID:")); } - QHBoxLayout *mSsidLayout = new QHBoxLayout(this); - mSsidLayout->addStretch(); - mSsidLayout->addWidget(mSSID); + m_ssidWidget = new DetailWidget(qobject_cast(mSSID), m_listWidget); + m_ssidWidget->setKey(tr("SSID:")); - mProtocol = new QLabel(this); - QHBoxLayout *mProtocolLayout = new QHBoxLayout(this); - mProtocolLayout->addStretch(); - mProtocolLayout->addWidget(mProtocol); + mProtocol = new QLabel(this); + m_protocolWidget = new DetailWidget(qobject_cast(mProtocol), m_listWidget); + m_protocolWidget->setKey(tr("Protocol:")); - mSecType = new QLabel(this); - QHBoxLayout *mSecTypeLayout = new QHBoxLayout(this); - mSecTypeLayout->addStretch(); - mSecTypeLayout->addWidget(mSecType); + mSecType = new QLabel(this); + m_secTypeWidget = new DetailWidget(qobject_cast(mSecType)); + m_secTypeWidget->setKey(tr("Security Type:")); - mHz = new QLabel(this); - QHBoxLayout *mHzLayout = new QHBoxLayout(this); - mHzLayout->addStretch(); - mHzLayout->addWidget(mHz); + mHz = new QLabel(this); + m_hzWidget = new DetailWidget(qobject_cast(mHz)); + m_hzWidget->setKey(tr("Hz:")); - mChan = new QLabel(this); - QHBoxLayout *mChanLayout = new QHBoxLayout(this); - mChanLayout->addStretch(); - mChanLayout->addWidget(mChan); + mChan = new QLabel(this); + m_chanelWidget = new DetailWidget(qobject_cast(mChan)); + m_chanelWidget->setKey(tr("Chan:")); mBandWidth = new QLabel(this); - QHBoxLayout *mBandWidthLayout = new QHBoxLayout(this); - mBandWidthLayout->addStretch(); - mBandWidthLayout->addWidget(mBandWidth); + m_bandwidthWidget = new DetailWidget(qobject_cast(mBandWidth), m_listWidget); + m_bandwidthWidget->setKey(tr("BandWidth:")); - mIPV4 = new QLabel(this); - QHBoxLayout *mIPV4Layout = new QHBoxLayout(this); - mIPV4Layout->addStretch(); - mIPV4Layout->addWidget(mIPV4); + mIPV4 = new QLabel(this); + m_ipv4Widget = new DetailWidget(qobject_cast(mIPV4), m_listWidget); + m_ipv4Widget->setKey(tr("IPV4:")); - mIPV4Dns = new QLabel(this); - QHBoxLayout *mIPV4DnsLayout = new QHBoxLayout(this); - mIPV4DnsLayout->addStretch(); - mIPV4DnsLayout->addWidget(mIPV4Dns); + mIPV4Dns = new QLabel(this); + m_ipv4DnsWidget = new DetailWidget(qobject_cast(mIPV4Dns), m_listWidget); + m_ipv4DnsWidget->setKey(tr("IPV4 Dns:")); - mIPV6 = new QLabel(this); - QHBoxLayout *mIPV6Layout = new QHBoxLayout(this); - mIPV6Layout->addStretch(); - mIPV6Layout->addWidget(mIPV6); + mIPV6 = new QLabel(this); + m_ipv6Widget = new DetailWidget(qobject_cast(mIPV6), m_listWidget); + m_ipv6Widget->setKey(tr("IPV6:")); - mMac = new QLabel(this); - QHBoxLayout *mMacLayout = new QHBoxLayout(this); - mMacLayout->addStretch(); - mMacLayout->addWidget(mMac); + mMac = new QLabel(this); + m_macWidget = new DetailWidget(qobject_cast(mMac), m_listWidget); + m_macWidget->setKey(tr("Mac:")); autoConnect = new QLabel(this); @@ -147,23 +158,28 @@ void DetailPage::initUI() { mAutoLayout->addWidget(autoConnect); mAutoLayout->addSpacerItem(horizontalSpacer); - mDetailLayout->addRow(tr("SSID:"), mSsidLayout); - mDetailLayout->addRow(tr("Protocol:"), mProtocolLayout); + this->addDetailItem(m_listWidget, m_ssidWidget); + this->addDetailItem(m_listWidget, m_protocolWidget); if (mIsWlan) { - mDetailLayout->addRow(tr("Security Type:"), mSecTypeLayout); - mDetailLayout->addRow(tr("Hz:"), mHzLayout); - mDetailLayout->addRow(tr("Chan:"), mChanLayout); + this->addDetailItem(m_listWidget, m_secTypeWidget); + this->addDetailItem(m_listWidget, m_hzWidget); + this->addDetailItem(m_listWidget, m_chanelWidget); } - mDetailLayout->addRow(tr("BandWidth:"), mBandWidthLayout); - mDetailLayout->addRow(tr("IPV6:"), mIPV6Layout); - mDetailLayout->addRow(tr("IPV4:"), mIPV4Layout); - mDetailLayout->addRow(tr("IPV4 Dns:"), mIPV4DnsLayout); - mDetailLayout->addRow(tr("Mac:"), mMacLayout); + this->addDetailItem(m_listWidget, m_bandwidthWidget); + this->addDetailItem(m_listWidget, m_ipv6Widget); + this->addDetailItem(m_listWidget, m_ipv4Widget); + this->addDetailItem(m_listWidget, m_ipv4DnsWidget); + this->addDetailItem(m_listWidget, m_macWidget); - layout->addLayout(mDetailLayout); - layout->addStretch(); + QPalette mpal(m_listWidget->palette()); + mpal.setColor(QPalette::Base, qApp->palette().base().color()); + mpal.setColor(QPalette::AlternateBase, qApp->palette().alternateBase().color()); + m_listWidget->setAlternatingRowColors(true); +// m_listWidget->setAutoFillBackground(true); + m_listWidget->setPalette(mpal); + + layout->addWidget(mDetailFrame); layout->addLayout(mAutoLayout); - } void DetailPage::setEnableOfSaveBtn() { diff --git a/src/frontend/netdetails/detailpage.h b/src/frontend/netdetails/detailpage.h index 719e33ce..fa40c35a 100644 --- a/src/frontend/netdetails/detailpage.h +++ b/src/frontend/netdetails/detailpage.h @@ -7,7 +7,10 @@ #include #include #include +#include +#include +#include "detailwidget.h" #include "coninfo.h" class DetailPage : public QFrame @@ -34,8 +37,21 @@ public: private: void initUI(); + void addDetailItem(QListWidget *listWidget, DetailWidget *detailWidget); public: + QListWidget * m_listWidget = nullptr; + DetailWidget * m_ssidWidget = nullptr; + DetailWidget * m_protocolWidget = nullptr; + DetailWidget * m_secTypeWidget = nullptr; + DetailWidget * m_hzWidget = nullptr; + DetailWidget * m_chanelWidget = nullptr; + DetailWidget * m_bandwidthWidget = nullptr; + DetailWidget * m_ipv4Widget = nullptr; + DetailWidget * m_ipv4DnsWidget = nullptr; + DetailWidget * m_ipv6Widget = nullptr; + DetailWidget * m_macWidget = nullptr; + QLineEdit *mSSID; QLabel *mProtocol; QLabel *mSecType; @@ -51,7 +67,7 @@ public: // QWidget *autoFrame; private: QVBoxLayout *layout; - QFormLayout *mDetailLayout; + QVBoxLayout *mDetailLayout; QHBoxLayout *mAutoLayout; QCheckBox *forgetNetBox; bool mIsWlan; diff --git a/src/frontend/netdetails/detailwidget.cpp b/src/frontend/netdetails/detailwidget.cpp new file mode 100644 index 00000000..a045e0ce --- /dev/null +++ b/src/frontend/netdetails/detailwidget.cpp @@ -0,0 +1,32 @@ +#include "detailwidget.h" +#define ITEM_HEIGHT 36 +#define ITEM_MARGINS 18,0,16,0 + +DetailWidget::DetailWidget(QWidget *valueWidget, QWidget *parent) + : m_valueWidget(valueWidget) , QWidget(parent) +{ +// m_valueWidget = valueWidget; + initUI(); +} + +DetailWidget::~DetailWidget() +{ + +} + +void DetailWidget::initUI() +{ + this->setFixedHeight(ITEM_HEIGHT); + m_mainLayout = new QHBoxLayout(this); + m_mainLayout->setContentsMargins(ITEM_MARGINS); + + m_keyLabel = new QLabel(this); + m_mainLayout->addWidget(m_keyLabel); + m_mainLayout->addStretch(); + m_mainLayout->addWidget(m_valueWidget); +} + +void DetailWidget::setKey(const QString &keyLabel) +{ + m_keyLabel->setText(keyLabel); +} diff --git a/src/frontend/netdetails/detailwidget.h b/src/frontend/netdetails/detailwidget.h new file mode 100644 index 00000000..00333bb2 --- /dev/null +++ b/src/frontend/netdetails/detailwidget.h @@ -0,0 +1,27 @@ +#ifndef DetailWidget_H +#define DetailWidget_H + +#include +#include +#include + +class DetailWidget : public QWidget +{ + Q_OBJECT +public: + explicit DetailWidget(QWidget *valueWidget = nullptr, QWidget *parent = nullptr); + ~DetailWidget(); + + void setKey(const QString &keyLabel); + +private: + QHBoxLayout * m_mainLayout = nullptr; + QLabel * m_keyLabel = nullptr; + QWidget * m_valueWidget = nullptr; + + void initUI(); +signals: + +}; + +#endif // DetailWidget_H diff --git a/src/frontend/netdetails/netdetail.cpp b/src/frontend/netdetails/netdetail.cpp index 0b1de9d3..11f124d7 100644 --- a/src/frontend/netdetails/netdetail.cpp +++ b/src/frontend/netdetails/netdetail.cpp @@ -3,8 +3,8 @@ #include "backend/kylinipv6arping.h" #include "xatom/xatom-helper.h" -#define WINDOW_WIDTH 540 -#define WINDOW_HEIGHT 574 +#define WINDOW_WIDTH 520 +#define WINDOW_HEIGHT 590 #define BUTTON_SIZE 30 #define ICON_SIZE 22,22 #define TITLE_LAYOUT_MARGINS 9,9,0,0 @@ -80,6 +80,7 @@ NetDetail::NetDetail(QString interface, QString name, QString uuid, bool isActiv getConInfo(m_info); pagePadding(name,isWlan); + connect(qApp, &QApplication::paletteChanged, this, &NetDetail::onPaletteChanged); isCreateOk = !(m_isCreateNet && !isWlan); isDetailOk = !(m_name.isEmpty()); @@ -97,6 +98,20 @@ NetDetail::~NetDetail() } +void NetDetail::onPaletteChanged() +{ + QPalette pal = qApp->palette(); + pal.setColor(QPalette::Window, qApp->palette().base().color()); + this->setPalette(pal); + + QPalette listwidget_pal(detailPage->m_listWidget->palette()); + listwidget_pal.setColor(QPalette::Base, qApp->palette().base().color()); + listwidget_pal.setColor(QPalette::AlternateBase, qApp->palette().alternateBase().color()); + detailPage->m_listWidget->setAlternatingRowColors(true); + detailPage->m_listWidget->setPalette(listwidget_pal); + +} + void NetDetail::paintEvent(QPaintEvent *event) { return QDialog::paintEvent(event); @@ -227,6 +242,10 @@ void NetDetail::initUI() bottomLayout->addWidget(cancelBtn); bottomLayout->addWidget(confimBtn); + QPalette pal(this->palette()); + pal.setColor(QPalette::Background, qApp->palette().base().color()); + this->setAutoFillBackground(true); + this->setPalette(pal); } void NetDetail::loadPage() diff --git a/src/frontend/netdetails/netdetail.h b/src/frontend/netdetails/netdetail.h index d6c721a0..e40db6c0 100644 --- a/src/frontend/netdetails/netdetail.h +++ b/src/frontend/netdetails/netdetail.h @@ -127,5 +127,6 @@ private: private slots: void on_btnConfirm_clicked(); void on_btnForget_clicked(); + void onPaletteChanged(); }; #endif // NETDETAIL_H diff --git a/src/frontend/netdetails/netdetails.pri b/src/frontend/netdetails/netdetails.pri index 206899b9..720a66b8 100644 --- a/src/frontend/netdetails/netdetails.pri +++ b/src/frontend/netdetails/netdetails.pri @@ -5,6 +5,7 @@ HEADERS += \ $$PWD/creatnetpage.h \ $$PWD/customtabstyle.h \ $$PWD/detailpage.h \ + $$PWD/detailwidget.h \ $$PWD/ipv4page.h \ $$PWD/ipv6page.h \ $$PWD/netdetail.h \ @@ -14,6 +15,7 @@ SOURCES += \ $$PWD/creatnetpage.cpp \ $$PWD/customtabstyle.cpp \ $$PWD/detailpage.cpp \ + $$PWD/detailwidget.cpp \ $$PWD/ipv4page.cpp \ $$PWD/ipv6page.cpp \ $$PWD/netdetail.cpp \ From e2d0c9ea30ad4584bee254f27bc7ac5a81535b6b Mon Sep 17 00:00:00 2001 From: jzxc95 <907297917@qq.com> Date: Fri, 15 Oct 2021 14:41:18 +0800 Subject: [PATCH 5/7] src/backend/dbus-interface/kylinnetworkdeviceresource.cpp --- .../kylinnetworkdeviceresource.h | 1 + .../kywirelessconnectoperation.cpp | 36 ++++++++++++++++--- .../kywirelessconnectoperation.h | 20 ++++++++--- src/backend/dbusadaptor.cpp | 17 ++++++--- src/backend/dbusadaptor.h | 8 +++-- src/frontend/mainwindow.cpp | 13 ++++--- src/frontend/mainwindow.h | 8 +++-- src/frontend/tab-pages/wlanpage.cpp | 33 ++++++++--------- src/frontend/tab-pages/wlanpage.h | 8 +++-- 9 files changed, 99 insertions(+), 45 deletions(-) diff --git a/src/backend/dbus-interface/kylinnetworkdeviceresource.h b/src/backend/dbus-interface/kylinnetworkdeviceresource.h index d879b8c8..0aabc8a3 100644 --- a/src/backend/dbus-interface/kylinnetworkdeviceresource.h +++ b/src/backend/dbus-interface/kylinnetworkdeviceresource.h @@ -37,6 +37,7 @@ public: // void disconnectDevice(); //void setDeviceAutoConnect(); void getDeviceActiveAPInfo(const QString devName, QString &strMac, uint &iHz, uint &iChan, QString &secuType); + int getWirelessDeviceCapability(const QString deviceName); private: KyWiredConnectOperation wiredOperation; diff --git a/src/backend/dbus-interface/kywirelessconnectoperation.cpp b/src/backend/dbus-interface/kywirelessconnectoperation.cpp index 51569465..818f1eba 100644 --- a/src/backend/dbus-interface/kywirelessconnectoperation.cpp +++ b/src/backend/dbus-interface/kywirelessconnectoperation.cpp @@ -684,7 +684,10 @@ bool KyWirelessConnectOperation::getConnSecretFlags(QString &connUuid, NetworkMa } NetworkManager::ConnectionSettings::Ptr - KyWirelessConnectOperation::createWirelessApSetting(const QString apSsid, const QString apPassword, const QString apDevice) + KyWirelessConnectOperation::createWirelessApSetting(const QString apSsid, + const QString apPassword, + const QString apDevice, + const QString wirelessBand) { NetworkManager::ConnectionSettings::Ptr connectionSettings = NetworkManager::ConnectionSettings::Ptr(new NetworkManager::ConnectionSettings(NetworkManager::ConnectionSettings::Wireless)); @@ -710,6 +713,15 @@ NetworkManager::ConnectionSettings::Ptr wirelessSetting->setSsid(apSsid.toUtf8()); wirelessSetting->setMode(NetworkManager::WirelessSetting::NetworkMode::Ap); wirelessSetting->setSecurity("802-11-wireless-security"); + if (wirelessBand == WIFI_BAND_2_4GHZ) { + wirelessSetting->setBand(NetworkManager::WirelessSetting::FrequencyBand::Bg); + } else if (wirelessBand == WIFI_BAND_5GHZ) { + wirelessSetting->setBand(NetworkManager::WirelessSetting::FrequencyBand::A); + } else { + qWarning()<<"[KyWirelessConnectOperation] the band type undefined"<setBand(NetworkManager::WirelessSetting::FrequencyBand::Automatic); + } + NetworkManager::WirelessSecuritySetting::Ptr wirelessSecuritySetting = connectionSettings->setting(NetworkManager::Setting::WirelessSecurity).dynamicCast(); @@ -726,7 +738,9 @@ NetworkManager::ConnectionSettings::Ptr void KyWirelessConnectOperation::updateWirelessApSetting( NetworkManager::Connection::Ptr apConnectPtr, - const QString apName, const QString apPassword, const QString apDevice) + const QString apName, const QString apPassword, + const QString apDevice, const QString wirelessBand) + { NetworkManager::ConnectionSettings::Ptr apConnectSettingPtr = apConnectPtr->settings(); apConnectSettingPtr->setId(apName); @@ -737,6 +751,15 @@ void KyWirelessConnectOperation::updateWirelessApSetting( = apConnectSettingPtr->setting(NetworkManager::Setting::Wireless).dynamicCast(); wirelessSetting->setInitialized(true); wirelessSetting->setSsid(apName.toUtf8()); + if (wirelessBand == WIFI_BAND_2_4GHZ) { + wirelessSetting->setBand(NetworkManager::WirelessSetting::FrequencyBand::Bg); + } else if (wirelessBand == WIFI_BAND_5GHZ) { + wirelessSetting->setBand(NetworkManager::WirelessSetting::FrequencyBand::A); + } else { + qWarning()<<"[KyWirelessConnectOperation] the band type undefined"<setBand(NetworkManager::WirelessSetting::FrequencyBand::Automatic); + } + NetworkManager::WirelessSecuritySetting::Ptr wirelessSecuritySetting = apConnectSettingPtr->setting(NetworkManager::Setting::WirelessSecurity).dynamicCast(); @@ -752,8 +775,11 @@ void KyWirelessConnectOperation::updateWirelessApSetting( } void KyWirelessConnectOperation::activeWirelessAp(const QString apUuid, const QString apName, - const QString apPassword, const QString apDevice) + const QString apPassword, const QString apDevice, + const QString wirelessBand) + { + qDebug() << "activeWirelessAp]" << apUuid << apName << apPassword << apDevice << wirelessBand; //1、检查连接是否存在 NetworkManager::Connection::Ptr connectPtr = m_networkResourceInstance->getConnect(apUuid); if (nullptr == connectPtr) { @@ -768,7 +794,7 @@ void KyWirelessConnectOperation::activeWirelessAp(const QString apUuid, const QS QString deviceIdentifier = devicePtr->uni(); NetworkManager::ConnectionSettings::Ptr apConnectSettingPtr = - createWirelessApSetting(apName, apPassword, apDevice); + createWirelessApSetting(apName, apPassword, apDevice, wirelessBand); QString specificObject = ""; QDBusPendingCallWatcher * watcher; watcher = new QDBusPendingCallWatcher{NetworkManager::addAndActivateConnection(apConnectSettingPtr->toMap(), deviceIdentifier, specificObject), this}; @@ -781,7 +807,7 @@ void KyWirelessConnectOperation::activeWirelessAp(const QString apUuid, const QS watcher->deleteLater(); }); } else { - updateWirelessApSetting(connectPtr, apName, apPassword, apDevice); + updateWirelessApSetting(connectPtr, apName, apPassword, apDevice, wirelessBand); QTimer::singleShot(500, this, [=](){ activateApConnectionByUuid(apUuid, apDevice); }); diff --git a/src/backend/dbus-interface/kywirelessconnectoperation.h b/src/backend/dbus-interface/kywirelessconnectoperation.h index d160edb9..9a481b56 100644 --- a/src/backend/dbus-interface/kywirelessconnectoperation.h +++ b/src/backend/dbus-interface/kywirelessconnectoperation.h @@ -9,7 +9,10 @@ #include "kyenterpricesettinginfo.h" const QByteArray GSETTINGS_SCHEMA = "org.ukui.kylin-nm.switch"; -const QString WIRELESS_SWITCH = "wirelessswitch"; +const QString WIRELESS_SWITCH = "wirelessswitch"; + +const QString WIFI_BAND_2_4GHZ = "2.4Ghz"; +const QString WIFI_BAND_5GHZ = "5Ghz"; enum KySecuType { NONE = 0, @@ -105,13 +108,22 @@ public: //申请扫描 void requestWirelessScan(); - void activeWirelessAp(const QString apUuid, const QString apName, const QString apPassword, const QString apDevice); + void activeWirelessAp(const QString apUuid, const QString apName, + const QString apPassword, const QString apDevice, + const QString wirelessBand); void deactiveWirelessAp(const QString apName, const QString apUuid); private: - NetworkManager::ConnectionSettings::Ptr createWirelessApSetting(const QString apSsid, const QString apPassword, const QString apDevice); + NetworkManager::ConnectionSettings::Ptr createWirelessApSetting(const QString apSsid, + const QString apPassword, + const QString apDevice, + const QString wirelessBand); void updateWirelessApSetting(NetworkManager::Connection::Ptr apConnectPtr, - const QString apName, const QString apPassword, const QString apDevice); + const QString apName, + const QString apPassword, + const QString apDevice, + const QString wirelessBand); + diff --git a/src/backend/dbusadaptor.cpp b/src/backend/dbusadaptor.cpp index 58639274..ea26d293 100644 --- a/src/backend/dbusadaptor.cpp +++ b/src/backend/dbusadaptor.cpp @@ -30,6 +30,7 @@ DbusAdaptor::DbusAdaptor(MainWindow *parent) { // constructor qDBusRegisterMetaType >(); + qDBusRegisterMetaType >(); qDBusRegisterMetaType >(); qDBusRegisterMetaType >>(); //setAutoRelaySignals(true)后会自动转发mainwindow发出的同名信号,因此不必再额外写一个转发 @@ -175,6 +176,14 @@ QMap DbusAdaptor::getDeviceListAndEnabled(int devType) return map; } +//获取无线设备能力 +QMap DbusAdaptor::getWirelessDeviceCap() +{ + QMap map; + parent()->getWirelessDeviceCap(map); + return map; +} + //唤起属性页 根据网卡类型 参数2 为ssid/uuid void DbusAdaptor::showPropertyWidget(QString devName, QString ssid) { @@ -190,15 +199,15 @@ void DbusAdaptor::showCreateWiredConnectWidget(QString devName) } //开启热点 -void DbusAdaptor::activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice) +void DbusAdaptor::activeWirelessAp(const QString apName, const QString apPassword, const QString band, const QString apDevice) { - parent()->activeWirelessAp(apName, apPassword, apDevice); + parent()->activeWirelessAp(apName, apPassword, band, apDevice); } //断开热点 -void DbusAdaptor::deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice) +void DbusAdaptor::deactiveWirelessAp(const QString apName, const QString uuid) { - parent()->deactiveWirelessAp(apName, apPassword, apDevice); + parent()->deactiveWirelessAp(apName, uuid); } //获取热点 diff --git a/src/backend/dbusadaptor.h b/src/backend/dbusadaptor.h index b59e76d1..3a383c6d 100644 --- a/src/backend/dbusadaptor.h +++ b/src/backend/dbusadaptor.h @@ -68,14 +68,16 @@ public Q_SLOTS: // METHODS Q_NOREPLY void deActivateConnect(int type, QString devName, QString ssid); //获取设备列表和启用/禁用状态 QMap getDeviceListAndEnabled(int devType); + //获取无线设备能力 + QMap getWirelessDeviceCap(); //唤起属性页 根据网卡类型 参数2 为ssid/uuid Q_NOREPLY void showPropertyWidget(QString devName, QString ssid); //唤起新建有线连接界面 Q_NOREPLY void showCreateWiredConnectWidget(QString devName); //开启热点 - void activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice); + void activeWirelessAp(const QString apName, const QString apPassword, const QString band, const QString apDevice); //断开热点 - void deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice); + void deactiveWirelessAp(const QString apName, const QString uuid); //获取热点 QStringList getStoredApInfo(); //wifi扫描 @@ -99,7 +101,7 @@ Q_SIGNALS: // SIGNALS //热点断开 void hotspotDeactivated(QString devName, QString ssid); //热点连接 - void hotspotActivated(QString devName, QString ssid); + void hotspotActivated(QString devName, QString ssid, QString uuid); //信号强度变化 void signalStrengthChange(QString devName, QString ssid, int strength); diff --git a/src/frontend/mainwindow.cpp b/src/frontend/mainwindow.cpp index 0a9af414..f8d6db02 100644 --- a/src/frontend/mainwindow.cpp +++ b/src/frontend/mainwindow.cpp @@ -419,18 +419,18 @@ void MainWindow::getWiredList(QMap> &map) * @param apPassword * @param apDevice */ -void MainWindow::activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice) +void MainWindow::activeWirelessAp(const QString apName, const QString apPassword, const QString band, const QString apDevice) { - m_wlanWidget->activeWirelessAp(apName, apPassword, apDevice); + m_wlanWidget->activeWirelessAp(apName, apPassword, band, apDevice); } /** * @brief MainWindow::activeWirelessAp 断开热点,供dbus调用 * @param apName */ -void MainWindow::deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice) +void MainWindow::deactiveWirelessAp(const QString apName, const QString uuid) { - m_wlanWidget->deactiveWirelessAp(apName, apPassword, apDevice); + m_wlanWidget->deactiveWirelessAp(apName, uuid); } /** @@ -484,6 +484,11 @@ void MainWindow::showCreateWiredConnectWidget(const QString devName) netDetail->show(); } +void MainWindow::getWirelessDeviceCap(QMap &map) +{ + m_wlanWidget->getWirelessDeviceCap(map); +} + //有线连接断开 void MainWindow::activateWired(const QString& devName, const QString& connUuid) { diff --git a/src/frontend/mainwindow.h b/src/frontend/mainwindow.h index 65549f70..d028bc37 100644 --- a/src/frontend/mainwindow.h +++ b/src/frontend/mainwindow.h @@ -30,9 +30,9 @@ public: void getWirelessList(QMap > &map); void getWiredList(QMap> &map); //开启热点 - void activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice); + void activeWirelessAp(const QString apName, const QString apPassword, const QString wirelessBand, const QString apDevice); //断开热点 - void deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice); + void deactiveWirelessAp(const QString apName, const QString uuid); //获取热点 void getStoredApInfo(QStringList &list); //有线连接断开 @@ -49,6 +49,8 @@ public: //唤起新建有线连接界面 void showCreateWiredConnectWidget(const QString devName); + void getWirelessDeviceCap(QMap &map); + void rescan(); signals: @@ -68,7 +70,7 @@ signals: void deactivateFailed(QString errorMessage); //热点断开 void hotspotDeactivated(QString devName, QString ssid); - void hotspotActivated(QString devName, QString ssid); + void hotspotActivated(QString devName, QString ssid, QString uuid); //信号强度变化 void signalStrengthChange(QString devName, QString ssid, int strength); //安全性变化 diff --git a/src/frontend/tab-pages/wlanpage.cpp b/src/frontend/tab-pages/wlanpage.cpp index 4d37476c..75e8a1a4 100644 --- a/src/frontend/tab-pages/wlanpage.cpp +++ b/src/frontend/tab-pages/wlanpage.cpp @@ -561,7 +561,7 @@ void WlanPage::onActivatedWlanChanged(QString uuid, NetworkManager::ActiveConnec foreach (auto item, apConnectItemList) { if (item->m_connectUuid == uuid) { qDebug() << "[WlanPage] hotspot Deactivated"; - emit hotspotActivated(item->m_ifaceName, ssid); + emit hotspotActivated(item->m_ifaceName, ssid, uuid); break; } } @@ -686,6 +686,8 @@ void WlanPage::showControlCenter() } void WlanPage::onWifiEnabledChanged(bool isWifiOn) { + qDebug() << "[WlanPage]onWifiEnabledChanged====================================" << isWifiOn; + qDebug() << "realstatus" << m_wirelessConnectOpreation->getWirelessEnabled(); //监听外部命令导致wifi状态变化,更新界面 //应该先检测是否有无线网卡可用,才改变开关状态 m_netDeviceResource->getNetworkDeviceList(NetworkManager::Device::Type::Wifi, m_devList); @@ -811,7 +813,7 @@ void WlanPage::getWirelessList(QMap > &map) } //开启热点 -void WlanPage::activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice) +void WlanPage::activeWirelessAp(const QString apName, const QString apPassword, const QString wirelessBand, const QString apDevice) { QString uuid(""); QList apConnectItemList; @@ -819,29 +821,14 @@ void WlanPage::activeWirelessAp(const QString apName, const QString apPassword, if (!apConnectItemList.isEmpty()) { uuid = apConnectItemList.at(0)->m_connectUuid; } - m_wirelessConnectOpreation->activeWirelessAp(uuid, apName, apPassword, apDevice); + m_wirelessConnectOpreation->activeWirelessAp(uuid, apName, apPassword, apDevice, wirelessBand); } //断开热点 -void WlanPage::deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice) +void WlanPage::deactiveWirelessAp(const QString apName, const QString uuid) { - QString uuid(""); - QList apConnectItemList; - m_apConnectResource->getApConnections(apConnectItemList); - if (!apConnectItemList.isEmpty()) { - foreach (auto item, apConnectItemList) { - if (apName == item->m_connectName && apPassword == item->m_password && apDevice == item->m_ifaceName) { - uuid = item->m_connectUuid; - qDebug() << "[WlanPage] deactiveWirelessAp uuid = " << uuid; - break; - } - } - } if (!uuid.isEmpty()) { m_wirelessConnectOpreation->deactiveWirelessAp(apName, uuid); - } else { - qDebug() << "[WlanPage] deactiveWirelessAp can not find apName " << apName; - emit deactivateFailed("Deactivate hotspot failed.Don't exist " + apName); } } @@ -950,3 +937,11 @@ void WlanPage::showDetailPage(QString devName, QString ssid) netDetail->show(); } +void WlanPage::getWirelessDeviceCap(QMap &map) +{ + for (int i = 0; i < m_devList.size(); ++i) { + QString devName = m_devList.at(i); + map.insert(devName, m_netDeviceResource->getWirelessDeviceCapability(devName)); + } +} + diff --git a/src/frontend/tab-pages/wlanpage.h b/src/frontend/tab-pages/wlanpage.h index 51014334..75a79600 100644 --- a/src/frontend/tab-pages/wlanpage.h +++ b/src/frontend/tab-pages/wlanpage.h @@ -31,9 +31,9 @@ public: //for dbus void getWirelessList(QMap > &map); //开启热点 - void activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice); + void activeWirelessAp(const QString apName, const QString apPassword, const QString wirelessBand, const QString apDevice); //断开热点 - void deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice); + void deactiveWirelessAp(const QString apName, const QString uuid); //获取热点 void getStoredApInfo(QStringList &list); void activateWireless(const QString& devName, const QString& ssid); @@ -41,13 +41,15 @@ public: void showDetailPage(QString devName, QString uuid); + void getWirelessDeviceCap(QMap &map); + signals: void oneItemExpanded(const QString &ssid); void wlanAdd(QString devName, QStringList info); void wlanRemove(QString devName,QString ssid); void wlanActiveConnectionStateChanged(QString interface, QString ssid, QString uuid, int status); void hotspotDeactivated(QString devName, QString ssid); - void hotspotActivated(QString devName, QString ssid); + void hotspotActivated(QString devName, QString ssid, QString uuid); void signalStrengthChange(QString devName, QString ssid, int strength); void secuTypeChange(QString devName, QString ssid, QString secuType); void hiddenWlanClicked(); From d84c97cbc7d34185b05d6c3f047bbee7c8b54ed9 Mon Sep 17 00:00:00 2001 From: jzxc95 <907297917@qq.com> Date: Fri, 15 Oct 2021 14:42:20 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=BC=8F=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kylinnetworkdeviceresource.cpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/backend/dbus-interface/kylinnetworkdeviceresource.cpp b/src/backend/dbus-interface/kylinnetworkdeviceresource.cpp index c41dd93f..c95b7ec9 100644 --- a/src/backend/dbus-interface/kylinnetworkdeviceresource.cpp +++ b/src/backend/dbus-interface/kylinnetworkdeviceresource.cpp @@ -202,6 +202,33 @@ void KyNetworkDeviceResourse::getDeviceActiveAPInfo(const QString devName, QStri } } +int KyNetworkDeviceResourse::getWirelessDeviceCapability(const QString deviceName) +{ + NetworkManager::Device::Ptr connectDevice = + m_networkResourceInstance->findDeviceInterface(deviceName); + if (connectDevice->isValid() + && NetworkManager::Device::Type::Wifi == connectDevice->type()) { + NetworkManager::WirelessDevice *wirelessDevicePtr = + qobject_cast(connectDevice.data()); + + int cap = 0; + if (wirelessDevicePtr->wirelessCapabilities() & NetworkManager::WirelessDevice::ApCap) { + cap = cap | 0x01; + } + if (wirelessDevicePtr->wirelessCapabilities() & NetworkManager::WirelessDevice::Freq2Ghz) { + cap = cap | 0x02; + } + if (wirelessDevicePtr->wirelessCapabilities() & NetworkManager::WirelessDevice::Freq5Ghz) { + cap = cap | 0x04; + } + return cap; + } else { + qWarning()<<"[KyNetworkDeviceResourse]"< Date: Fri, 15 Oct 2021 15:18:55 +0800 Subject: [PATCH 7/7] add getApinfoBySsid --- .../dbus-interface/kylinapconnectitem.cpp | 1 + src/backend/dbus-interface/kylinapconnectitem.h | 2 ++ .../dbus-interface/kylinconnectresource.cpp | 8 ++++++++ src/backend/dbusadaptor.cpp | 8 ++++++++ src/backend/dbusadaptor.h | 1 + src/frontend/mainwindow.cpp | 6 +++++- src/frontend/mainwindow.h | 1 + src/frontend/tab-pages/wlanpage.cpp | 16 ++++++++++++++++ src/frontend/tab-pages/wlanpage.h | 1 + 9 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/backend/dbus-interface/kylinapconnectitem.cpp b/src/backend/dbus-interface/kylinapconnectitem.cpp index 2a94b4aa..d7e4ea2e 100644 --- a/src/backend/dbus-interface/kylinapconnectitem.cpp +++ b/src/backend/dbus-interface/kylinapconnectitem.cpp @@ -7,6 +7,7 @@ KyApConnectItem::KyApConnectItem(QObject *parent) : QObject(parent) m_connectUuid = ""; m_ifaceName = ""; m_password = ""; + m_band = ""; m_isActivated = false; } diff --git a/src/backend/dbus-interface/kylinapconnectitem.h b/src/backend/dbus-interface/kylinapconnectitem.h index 9ead7b6d..76569b06 100644 --- a/src/backend/dbus-interface/kylinapconnectitem.h +++ b/src/backend/dbus-interface/kylinapconnectitem.h @@ -16,7 +16,9 @@ public: QString m_connectUuid; QString m_ifaceName; QString m_password; + QString m_band; bool m_isActivated; + }; #endif // KYLINAPCONNECTITEM_H diff --git a/src/backend/dbus-interface/kylinconnectresource.cpp b/src/backend/dbus-interface/kylinconnectresource.cpp index ef266586..026a512d 100644 --- a/src/backend/dbus-interface/kylinconnectresource.cpp +++ b/src/backend/dbus-interface/kylinconnectresource.cpp @@ -8,6 +8,9 @@ #include #include +const QString str2GBand = "2.4Ghz"; +const QString str5GBand = "5Ghz"; + static bool subLanListSort(const KyConnectItem* info1, const KyConnectItem* info2) { QString name1 = info1->m_connectName; @@ -549,6 +552,11 @@ KyApConnectItem *KyConnectResourse::getApConnectItem(NetworkManager::Connection: KyApConnectItem *apConnectItem = new KyApConnectItem(); apConnectItem->m_connectName = connectPtr->name(); apConnectItem->m_connectUuid = connectPtr->uuid(); + if (wirelessSetting->band() == NetworkManager::WirelessSetting::FrequencyBand::A) { + apConnectItem->m_band = str2GBand; + } else if (wirelessSetting->band() == NetworkManager::WirelessSetting::FrequencyBand::Bg) { + apConnectItem->m_band = str5GBand; + } apConnectItem->m_ifaceName = settingPtr->interfaceName(); apConnectItem->m_isActivated = m_networkResourceInstance->isActiveConnection(connectPtr->uuid()); diff --git a/src/backend/dbusadaptor.cpp b/src/backend/dbusadaptor.cpp index ea26d293..05762e36 100644 --- a/src/backend/dbusadaptor.cpp +++ b/src/backend/dbusadaptor.cpp @@ -219,6 +219,14 @@ QStringList DbusAdaptor::getStoredApInfo() return list; } +QStringList DbusAdaptor::getApInfoBySsid(QString devName, QString ssid) +{ + QStringList list; + list.clear(); + parent()->getApInfoBySsid(devName, ssid, list); + return list; +} + //扫描 void DbusAdaptor::reScan() diff --git a/src/backend/dbusadaptor.h b/src/backend/dbusadaptor.h index 3a383c6d..a96a674e 100644 --- a/src/backend/dbusadaptor.h +++ b/src/backend/dbusadaptor.h @@ -80,6 +80,7 @@ public Q_SLOTS: // METHODS void deactiveWirelessAp(const QString apName, const QString uuid); //获取热点 QStringList getStoredApInfo(); + QStringList getApInfoBySsid(QString devName, QString ssid); //wifi扫描 void reScan(); Q_SIGNALS: // SIGNALS diff --git a/src/frontend/mainwindow.cpp b/src/frontend/mainwindow.cpp index f8d6db02..a0ae7554 100644 --- a/src/frontend/mainwindow.cpp +++ b/src/frontend/mainwindow.cpp @@ -437,12 +437,16 @@ void MainWindow::deactiveWirelessAp(const QString apName, const QString uuid) * @brief MainWindow::activeWirelessAp 获取热点,供dbus调用 * @param list */ +void MainWindow::getApInfoBySsid(QString devName, QString ssid, QStringList &list) +{ + m_wlanWidget->getApInfoBySsid(devName, ssid, list); +} + void MainWindow::getStoredApInfo(QStringList &list) { m_wlanWidget->getStoredApInfo(list); } - void MainWindow::setWiredDeviceEnable(const QString& devName, bool enable) { m_lanWidget->setWiredDeviceEnable(devName, enable); diff --git a/src/frontend/mainwindow.h b/src/frontend/mainwindow.h index d028bc37..f67611b9 100644 --- a/src/frontend/mainwindow.h +++ b/src/frontend/mainwindow.h @@ -35,6 +35,7 @@ public: void deactiveWirelessAp(const QString apName, const QString uuid); //获取热点 void getStoredApInfo(QStringList &list); + void getApInfoBySsid(QString devName, QString ssid, QStringList &list); //有线连接断开 void activateWired(const QString& devName, const QString& connUuid); void deactivateWired(const QString& devName, const QString& connUuid); diff --git a/src/frontend/tab-pages/wlanpage.cpp b/src/frontend/tab-pages/wlanpage.cpp index 75e8a1a4..c4f9a272 100644 --- a/src/frontend/tab-pages/wlanpage.cpp +++ b/src/frontend/tab-pages/wlanpage.cpp @@ -842,6 +842,22 @@ void WlanPage::getStoredApInfo(QStringList &list) list << apConnectItemList.at(0)->m_password; list << apConnectItemList.at(0)->m_ifaceName; list << (apConnectItemList.at(0)->m_isActivated? "true":"false"); + list << apConnectItemList.at(0)->m_connectUuid; + list << apConnectItemList.at(0)->m_band; + } +} + +void WlanPage::getApInfoBySsid(QString devName, QString ssid, QStringList &list) +{ + list.clear(); + QList apConnectItemList; + m_apConnectResource->getApConnections(apConnectItemList); + for (int i = 0; i < apConnectItemList.size(); i++) { + if (apConnectItemList.at(i)->m_connectName == ssid + && apConnectItemList.at(i)->m_ifaceName == devName) { + list << apConnectItemList.at(i)->m_password; + list << apConnectItemList.at(i)->m_band; + } } } diff --git a/src/frontend/tab-pages/wlanpage.h b/src/frontend/tab-pages/wlanpage.h index 75a79600..9e0639a2 100644 --- a/src/frontend/tab-pages/wlanpage.h +++ b/src/frontend/tab-pages/wlanpage.h @@ -36,6 +36,7 @@ public: void deactiveWirelessAp(const QString apName, const QString uuid); //获取热点 void getStoredApInfo(QStringList &list); + void getApInfoBySsid(QString devName, QString ssid, QStringList &list); void activateWireless(const QString& devName, const QString& ssid); void deactivateWireless(const QString& devName, const QString& ssid);