From d30ce7b3ddaf1c2f87984c2d92e4745a3c241b8f Mon Sep 17 00:00:00 2001 From: ksn Date: Tue, 14 Sep 2021 10:17:37 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=9C=89=E7=BA=BF=E5=BC=80=E5=85=B3?= =?UTF-8?q?=E5=8F=8A=E7=BD=91=E5=8D=A1=E6=8F=92=E6=8B=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/list-items/lanlistitem.cpp | 13 +- src/frontend/new-mainwindow.cpp | 15 ++- src/frontend/new-mainwindow.h | 3 + src/frontend/tab-pages/lanpage.cpp | 160 ++++++++++-------------- src/frontend/tab-pages/lanpage.h | 7 +- src/frontend/tab-pages/tabpage.cpp | 3 +- src/frontend/tab-pages/tabpage.h | 2 +- 7 files changed, 90 insertions(+), 113 deletions(-) diff --git a/src/frontend/list-items/lanlistitem.cpp b/src/frontend/list-items/lanlistitem.cpp index 32f52da0..2de371f2 100644 --- a/src/frontend/list-items/lanlistitem.cpp +++ b/src/frontend/list-items/lanlistitem.cpp @@ -11,15 +11,6 @@ LanListItem::LanListItem(KyConnectItem *data, QString deviceName, QWidget *paren m_data = data; m_nameLabel->setText(m_data->m_connectName); -// if (m_data != nullptr) { -// if (m_data->m_connectState == NetworkManager::ActiveConnection::State::Activated) { -// setIcon(true); -// m_isActive = true; -// } else { -// setIcon(false); -// m_isActive = false; -// } -// } if (m_data != nullptr) { if (m_data->m_connectState == NetworkManager::ActiveConnection::State::Activated) { m_netButton->stopLoading(); @@ -58,14 +49,14 @@ void LanListItem::onNetButtonClicked() if (!m_isActive) { //未连接,点击后连 m_connectOperation->activateWiredConnection(m_data->m_connectUuid, deviceName); - qDebug() << m_data->m_connectName << "Connect after user clicked!"; + qDebug() << m_data->m_connectName << "Connect after user clicked!" << deviceName; // m_data->m_connectState = NetworkManager::ActiveConnection::State::Activating; // refreshIcon(); m_isActive = true; } else { //连接,点击后断开 m_connectOperation->deactivateWiredConnection(m_data->m_connectName, m_data->m_connectUuid); - qDebug() << m_data->m_connectName << "Disconnect after user clicked!"; + qDebug() << m_data->m_connectName << "Disconnect after user clicked!" << deviceName; // m_data->m_connectState = NetworkManager::ActiveConnection::State::Deactivated; // refreshIcon(); m_isActive = false; diff --git a/src/frontend/new-mainwindow.cpp b/src/frontend/new-mainwindow.cpp index 81d003b2..abfed366 100644 --- a/src/frontend/new-mainwindow.cpp +++ b/src/frontend/new-mainwindow.cpp @@ -114,8 +114,19 @@ void MainWindow::initUI() m_lanWidget = new LanPage(m_centralWidget); m_wlanWidget = new WlanPage(m_centralWidget); connect(this, &MainWindow::mainWindowVisibleChanged, m_wlanWidget, &WlanPage::onMainWindowVisibleChanged); - m_centralWidget->addTab(m_lanWidget, QIcon::fromTheme("network-wired-connected-symbolic", QIcon::fromTheme("network-wired-symbolic", QIcon(":/res/l/network-online.svg"))), tr("LAN")); - m_centralWidget->addTab(m_wlanWidget, QIcon::fromTheme("network-wireless-signal-excellent-symbolic", QIcon(":/res/x/wifi-list-bg.svg")), tr("WLAN")); +// m_centralWidget->addTab(m_lanWidget, QIcon::fromTheme("network-wired-connected-symbolic", QIcon::fromTheme("network-wired-symbolic", QIcon(":/res/l/network-online.svg"))), tr("LAN")); +// m_centralWidget->addTab(m_wlanWidget, QIcon::fromTheme("network-wireless-signal-excellent-symbolic", QIcon(":/res/x/wifi-list-bg.svg")), tr("WLAN")); + + m_centralWidget->addTab(m_lanWidget, tr("")); + m_centralWidget->addTab(m_wlanWidget,tr("")); + m_tabBarLayout = new QHBoxLayout(this); + m_lanLabel = new QLabel(tr("LAN")); + m_lanLabel->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); + m_wlanLabel = new QLabel(tr("WLAN")); + m_wlanLabel->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); + m_tabBarLayout->addWidget(m_lanLabel); + m_tabBarLayout->addWidget(m_wlanLabel); + m_centralWidget->tabBar()->setLayout(m_tabBarLayout); } /** diff --git a/src/frontend/new-mainwindow.h b/src/frontend/new-mainwindow.h index b052bee4..b2b6e0ff 100644 --- a/src/frontend/new-mainwindow.h +++ b/src/frontend/new-mainwindow.h @@ -77,6 +77,9 @@ private: //主窗口的主要构成控件 QTabWidget * m_centralWidget = nullptr; + QHBoxLayout * m_tabBarLayout = nullptr; + QLabel * m_lanLabel = nullptr; + QLabel * m_wlanLabel = nullptr; LanPage * m_lanWidget = nullptr; WlanPage * m_wlanWidget = nullptr; diff --git a/src/frontend/tab-pages/lanpage.cpp b/src/frontend/tab-pages/lanpage.cpp index 64a9ab3b..91145764 100644 --- a/src/frontend/tab-pages/lanpage.cpp +++ b/src/frontend/tab-pages/lanpage.cpp @@ -19,21 +19,21 @@ const QByteArray GSETTINGS_SCHEMA = "org.ukui.kylin-nm.switch"; LanPage::LanPage(QWidget *parent) : TabPage(parent) { - m_activeResourse = new KyActiveConnectResourse; - m_connectResourse = new KyConnectResourse; - m_device = new KyNetworkDeviceResourse; - devList.empty(); + m_activeResourse = new KyActiveConnectResourse(this); + m_connectResourse = new KyConnectResourse(this); + m_device = new KyNetworkDeviceResourse(this); + m_devList.empty(); m_nullLanItem = new LanListItem(); - initDevice(); initUI(); - initDeviceCombox(); + if (QGSettings::isSchemaInstalled(GSETTINGS_SCHEMA)) { m_switchGsettings = new QGSettings(GSETTINGS_SCHEMA); initNetSwitch(); - } else { + } else { qDebug()<<"[LanPage] org.ukui.kylin-nm.switch is not installed!"; - } + } + initDeviceCombox(); initList(m_deviceName); connect(m_activeResourse, &KyActiveConnectResourse::stateChangeReason, this, &LanPage::updateLanlist); connect(m_connectResourse, &KyConnectResourse::connectionAdd, this, &LanPage::addConnectionSlot); @@ -41,7 +41,6 @@ LanPage::LanPage(QWidget *parent) : TabPage(parent) connect(m_device, &KyNetworkDeviceResourse::deviceAdd, this, &LanPage::onDeviceAdd); connect(m_device, &KyNetworkDeviceResourse::deviceRemove, this, &LanPage::onDeviceRemove); connect(m_device, &KyNetworkDeviceResourse::deviceNameUpdate, this, &LanPage::onDeviceNameUpdate); - connect(this, &LanPage::deviceStatusChanged, this, &LanPage::onDeviceChanged); } LanPage::~LanPage() @@ -53,17 +52,7 @@ void LanPage::initNetSwitch() { if (m_switchGsettings->keys().contains(WIRED_SWITCH)) { m_netSwitch->setSwitchStatus(m_switchGsettings->get(WIRED_SWITCH).toBool()); - if (m_netSwitch->getSwitchStatus()) { - if (m_deviceMap.count() <= 1) { - m_deviceFrame->hide(); - } else { - m_deviceFrame->show(); - initDeviceCombox(); - } - } else { - m_inactivatedLanListWidget->hide(); - m_deviceFrame->hide(); - } + initDeviceCombox(); connect(m_switchGsettings, &QGSettings::changed, this, &LanPage::onSwithGsettingsChanged); } connect(m_netSwitch, &SwitchButton::clicked, this, &LanPage::onLanSwitchClicked); @@ -78,13 +67,7 @@ void LanPage::onSwithGsettingsChanged(const QString &key) if (isOn) { m_device->setDeviceAutoConnect(); m_inactivatedLanListWidget->show(); -// m_deviceFrame->show(); - if (m_deviceMap.count() <= 1) { - m_deviceFrame->hide(); - } else { - m_deviceFrame->show(); - initDeviceCombox(); - } + initDeviceCombox(); } else { m_device->disconnectDevice(); m_inactivatedLanListWidget->hide(); @@ -101,14 +84,8 @@ void LanPage::onLanSwitchClicked() if (m_netSwitch->getSwitchStatus()) { m_device->setDeviceAutoConnect(); m_inactivatedLanListWidget->show(); -// m_deviceFrame->show(); - if (m_deviceMap.count() <= 1) { - m_deviceFrame->hide(); - } else { - m_deviceFrame->show(); - initDeviceCombox(); - } m_switchGsettings->set(WIRED_SWITCH,true); + initDeviceCombox(); } else { qDebug()<<"[LanPage]Switch off! Disconnect Device!"; m_device->disconnectDevice(); @@ -159,48 +136,57 @@ void LanPage::addConnectionSlot(QString uuid) //新增一个有线 } } -void LanPage::initDevice() -{ - QSettings * m_settings = new QSettings(CONFIG_FILE_PATH, QSettings::IniFormat); - m_settings->beginGroup("DEFAULTCARD"); - QString key("wired"); - m_deviceName = m_settings->value(key, "").toString(); - if (m_deviceName.isEmpty()) { - qDebug() << "initDevice but defalut wired card is null"; - if (!devList.isEmpty()) { - m_deviceName = devList.at(0); - m_settings->setValue(key, m_deviceName); - } - } - updateDefaultDevice(m_deviceName); - qDebug() << "[LanPage] initDevice defaultDevice = " << m_deviceName; +//void LanPage::initDevice() +//{ +// QSettings * m_settings = new QSettings(CONFIG_FILE_PATH, QSettings::IniFormat); +// m_settings->beginGroup("DEFAULTCARD"); +// QString key("wired"); +// m_deviceName = m_settings->value(key, "").toString(); +// if (m_deviceName.isEmpty()) { +// qDebug() << "initDevice but defalut wired card is null"; +// if (!m_devList.isEmpty()) { +// m_deviceName = m_devList.at(0); +// m_settings->setValue(key, m_deviceName); +// } +// } +// updateDefaultDevice(m_deviceName); +// qDebug() << "[LanPage] initDevice defaultDevice = " << m_deviceName; - m_settings->endGroup(); - m_settings->sync(); - delete m_settings; - m_settings = nullptr; - for (int i = 0; i < devList.size(); ++i) { - qDebug() << "[LanPage] Device: " << devList.at(i); - } -} +// m_settings->endGroup(); +// m_settings->sync(); +// delete m_settings; +// m_settings = nullptr; +// for (int i = 0; i < m_devList.size(); ++i) { +// qDebug() << "[LanPage] Device: " << m_devList.at(i); +// } +//} void LanPage::initDeviceCombox() { //TODO 获取设备列表,单设备时隐藏下拉框,多设备时添加到下拉框 m_deviceComboBox->clear(); - m_deviceMap.clear(); - getWiredList(m_deviceMap); -// if (m_deactiveMap.count() <= 1) { -// m_deviceFrame->hide(); -// } else{ - m_deviceFrame->show(); - QMap >::iterator iter; - for (iter = m_deviceMap.begin(); iter != m_deviceMap.constEnd(); ++iter) { - m_deviceComboBox->addItem(iter.key()); - } -// } + m_devList.clear(); - qDebug() << "[LanPage]current:" << m_deviceComboBox->currentText(); + bool isOn = m_switchGsettings->get(WIRED_SWITCH).toBool(); + if (!isOn) { + m_deviceFrame->hide(); + } else { + m_device->getNetworkDeviceList(NetworkManager::Device::Type::Ethernet, m_devList); + if (m_devList.size() == 1) { + m_deviceFrame->hide(); + m_deviceName = m_devList.at(0); + initList(m_deviceName); + return; + } else { + for (int i=0; ishow(); + m_deviceComboBox->addItem(m_devList.at(i)); + } + } + qDebug() << "[LanPage]Current device:" << m_deviceComboBox->currentText(); + m_deviceName = m_deviceComboBox->currentText(); + initList(m_deviceName); + } } void LanPage::onDeviceAdd(QString deviceName, NetworkManager::Device::Type deviceType) @@ -209,13 +195,14 @@ void LanPage::onDeviceAdd(QString deviceName, NetworkManager::Device::Type devic if (deviceType != NetworkManager::Device::Type::Ethernet) { return; } - devList << deviceName; + m_devList << deviceName; if (getDefaultDevice().isEmpty()) { updateDefaultDevice(deviceName); setDefaultDevice(WIRED, deviceName); } emit deviceStatusChanged(); + initDeviceCombox(); } void LanPage::onDeviceRemove(QString deviceName) @@ -233,27 +220,11 @@ void LanPage::onDeviceRemove(QString deviceName) updateDefaultDevice(newDefaultDevice); setDefaultDevice(WIRED, newDefaultDevice); } - if (devList.contains(deviceName)) { - devList.removeOne(deviceName); + if (m_devList.contains(deviceName)) { + m_devList.removeOne(deviceName); } emit deviceStatusChanged(); -} - -void LanPage::onDeviceChanged() -{ - m_deviceMap.clear(); - getWiredList(m_deviceMap); - qDebug() << "[LanPage]:Device Changed! initDeviceCombox!"; - if (m_netSwitch->getSwitchStatus()) { - if (m_deviceMap.count() <= 1) { - m_deviceFrame->hide(); - } else { - m_deviceFrame->show(); - initDeviceCombox(); - } - } else { - m_deviceFrame->hide(); - } + initDeviceCombox(); } void LanPage::onDeviceNameUpdate(QString oldName, QString newName) @@ -263,11 +234,12 @@ void LanPage::onDeviceNameUpdate(QString oldName, QString newName) setDefaultDevice(WIRED, newName); } - if (devList.contains(oldName)) { - devList.removeOne(oldName); - devList.append(newName); + if (m_devList.contains(oldName)) { + m_devList.removeOne(oldName); + m_devList.append(newName); qDebug() << "LanPage emit deviceNameUpdate " << oldName << newName; emit deviceNameChanged(oldName, newName); + initDeviceCombox(); } } @@ -319,6 +291,7 @@ void LanPage::addNewItem(KyConnectItem *itemData, QListWidget *listWidget) listWidget->addItem(m_listWidgetItem); m_testLanItem = new LanListItem(itemData, m_deviceName); + qDebug() << "[LanPage] addNewItem, connection: " << itemData->m_connectName << "deviceName: " << m_deviceName; listWidget->setItemWidget(m_listWidgetItem, m_testLanItem); } @@ -376,6 +349,7 @@ void LanPage::updateLanlist(QString uuid, NetworkManager::ActiveConnection::Stat emit listUpdate(devName); } + qDebug() << "[LanPage] Update Device Name:" << m_deviceName; if (state == NetworkManager::ActiveConnection::State::Deactivated) { qDebug()<<"Get a deactivate, begin to remove it from activeList"; QMap::iterator i; @@ -442,7 +416,7 @@ void LanPage::updateLanlist(QString uuid, NetworkManager::ActiveConnection::Stat m_nullItem->setSizeHint(QSize(m_activatedLanListWidget->width(),ITEM_HEIGHT)); m_activatedLanListWidget->addItem(m_nullItem); m_nullLanItem = new LanListItem(); - qDebug() << "[LanPage] ADD!"; + qDebug() << "[LanPage] Add nullItem!"; m_activatedLanListWidget->setItemWidget(m_nullItem, m_nullLanItem); } } diff --git a/src/frontend/tab-pages/lanpage.h b/src/frontend/tab-pages/lanpage.h index 4754769e..2769fa3c 100644 --- a/src/frontend/tab-pages/lanpage.h +++ b/src/frontend/tab-pages/lanpage.h @@ -31,12 +31,10 @@ signals: void wiredActivating(QString devName, QString ssid); private: - void initDevice();//初始化默认设备 void initDeviceCombox(); void initUI(); void initList(QString m_deviceName); void addNewItem(KyConnectItem *itemData, QListWidget *listWidget); - void addNew(LanListItem *item, QListWidget *listWidget); void initNetSwitch(); private: @@ -55,7 +53,7 @@ private: QList m_activedList; QList m_deactivedList; - QMap > m_deviceMap; +// QMap > m_deviceMap; QMap m_deactiveMap; QMap m_activeMap; @@ -64,7 +62,7 @@ private: // QMap m_activeMap; QString m_deviceName; - QStringList devList; + QStringList m_devList; QGSettings * m_switchGsettings = nullptr; private slots: @@ -75,7 +73,6 @@ private slots: void onLanSwitchClicked(); void onDeviceAdd(QString deviceName, NetworkManager::Device::Type deviceType); void onDeviceRemove(QString deviceName); - void onDeviceChanged(); void onDeviceNameUpdate(QString oldName, QString newName); void onDeviceComboxIndexChanged(int currentIndex); }; diff --git a/src/frontend/tab-pages/tabpage.cpp b/src/frontend/tab-pages/tabpage.cpp index ed28e6f1..8bce1609 100644 --- a/src/frontend/tab-pages/tabpage.cpp +++ b/src/frontend/tab-pages/tabpage.cpp @@ -34,6 +34,7 @@ void TabPage::initUI() //临时增加的下拉框选择网卡区域 m_deviceFrame = new QFrame(this); + m_deviceFrame->setFixedHeight(TITLE_FRAME_HEIGHT); m_deviceLayout = new QHBoxLayout(m_deviceFrame); m_deviceLayout->setContentsMargins(DEVICE_LAYOUT_MARGINS); m_deviceFrame->setLayout(m_deviceLayout); @@ -57,7 +58,7 @@ void TabPage::initUI() m_activatedNetDivider = new Divider(this); m_inactivatedNetFrame = new QFrame(this); - m_inactivatedNetFrame->setMinimumHeight(INACTIVE_AREA_MIN_HEIGHT); +// m_inactivatedNetFrame->setMinimumHeight(INACTIVE_AREA_MIN_HEIGHT); m_inactivatedNetLayout = new QVBoxLayout(m_inactivatedNetFrame); m_inactivatedNetLayout->setContentsMargins(NET_LAYOUT_MARGINS); m_inactivatedNetLayout->setSpacing(NET_LAYOUT_SPACING); diff --git a/src/frontend/tab-pages/tabpage.h b/src/frontend/tab-pages/tabpage.h index f4a06d1f..13e4bf65 100644 --- a/src/frontend/tab-pages/tabpage.h +++ b/src/frontend/tab-pages/tabpage.h @@ -58,7 +58,7 @@ signals: protected: void initUI(); - virtual void initDevice() = 0;//初始化默认设备 +// virtual void initDevice() = 0;//初始化默认设备 virtual void initDeviceCombox() = 0;//初始化设备选择下拉框 QVBoxLayout * m_mainLayout = nullptr; QFrame * m_titleFrame = nullptr; From ed82533377091e3067f21859d0297350ada5c9d1 Mon Sep 17 00:00:00 2001 From: renpeijia Date: Wed, 15 Sep 2021 11:18:41 +0800 Subject: [PATCH 2/8] feature:function of wired switch is finished. --- .../kylinnetworkdeviceresource.cpp | 6 +- .../kylinnetworkdeviceresource.h | 6 +- .../kylinwiredconnectoperation.cpp | 89 +++++++++++++++++++ .../kylinwiredconnectoperation.h | 12 +++ src/frontend/mainwindow.cpp | 4 +- src/frontend/tab-pages/lanpage.cpp | 67 ++++++++++---- 6 files changed, 158 insertions(+), 26 deletions(-) diff --git a/src/backend/dbus-interface/kylinnetworkdeviceresource.cpp b/src/backend/dbus-interface/kylinnetworkdeviceresource.cpp index a7de989a..1794a4b7 100644 --- a/src/backend/dbus-interface/kylinnetworkdeviceresource.cpp +++ b/src/backend/dbus-interface/kylinnetworkdeviceresource.cpp @@ -6,7 +6,7 @@ KyNetworkDeviceResourse::KyNetworkDeviceResourse(QObject *parent) : QObject(pare m_networkResourceInstance = KyNetworkResourceManager::getInstance(); // m_activeConnectUuidList.clear(); - m_activeConnectUuidMap.clear(); + //m_activeConnectUuidMap.clear(); m_deviceMap.clear(); //TODO::get uuid from settings for system reboot; @@ -173,8 +173,6 @@ void KyNetworkDeviceResourse::DeviceSpeed(QString deviceName, KyConnectItem *wir return; } -#endif - void KyNetworkDeviceResourse::disconnectDevice() { @@ -248,6 +246,8 @@ void KyNetworkDeviceResourse::setDeviceAutoConnect() return; } +#endif + void KyNetworkDeviceResourse::onDeviceUpdate(NetworkManager::Device * dev) { QString dbusPath = dev->uni(); diff --git a/src/backend/dbus-interface/kylinnetworkdeviceresource.h b/src/backend/dbus-interface/kylinnetworkdeviceresource.h index 216bf9f7..3411b5a9 100644 --- a/src/backend/dbus-interface/kylinnetworkdeviceresource.h +++ b/src/backend/dbus-interface/kylinnetworkdeviceresource.h @@ -34,14 +34,14 @@ public: bool wiredDeviceCarriered(QString deviceName); //void DeviceSpeed(QString deviceName, KyWiredConnectItem *wiredItem); void setDeviceRefreshRate(QString deviceName, int ms); - void disconnectDevice(); - void setDeviceAutoConnect(); + // void disconnectDevice(); + //void setDeviceAutoConnect(); private: KyWiredConnectOperation wiredOperation; KyNetworkResourceManager *m_networkResourceInstance = nullptr; QStringList m_activeConnectUuidList; - QMap m_activeConnectUuidMap; + // QMap m_activeConnectUuidMap; QMap m_deviceMap; void initDeviceMap(); diff --git a/src/backend/dbus-interface/kylinwiredconnectoperation.cpp b/src/backend/dbus-interface/kylinwiredconnectoperation.cpp index c5951070..471d562b 100644 --- a/src/backend/dbus-interface/kylinwiredconnectoperation.cpp +++ b/src/backend/dbus-interface/kylinwiredconnectoperation.cpp @@ -164,3 +164,92 @@ void KyWiredConnectOperation::activateVpnConnection(const QString connectUuid) return; } + +void KyWiredConnectOperation::saveActiveConnection(QString &deviceName, QString &connectUuid) +{ + QSettings *p_settings = new QSettings(WIRED_NETWORK_STATE_CONF_FILE, QSettings::IniFormat); + + QString settingValue = p_settings->value(deviceName).toString(); + if (settingValue.isEmpty()) { + p_settings->setValue(deviceName, connectUuid); + p_settings->sync(); + } + + delete p_settings; + p_settings = nullptr; + + return; +} + +void KyWiredConnectOperation::getActiveConnection(QString &deviceName, QString &connectUuid) +{ + QSettings *p_settings = new QSettings(WIRED_NETWORK_STATE_CONF_FILE, QSettings::IniFormat); + + connectUuid = p_settings->value(deviceName).toString(); + p_settings->remove(deviceName); + + delete p_settings; + p_settings = nullptr; + + return; +} + +int KyWiredConnectOperation::closeWiredNetworkWithDevice(QString deviceName) +{ + NetworkManager::Device::Ptr wiredDevicePtr = + m_networkResourceInstance->findDeviceInterface(deviceName); + + if (!wiredDevicePtr->isValid()) { + qWarning()<<"[KyWiredConnectOperation]"<<"the network device" << deviceName <<"is not exist."; + return -ENXIO; + } + + if (NetworkManager::Device::Type::Ethernet != wiredDevicePtr->type()) { + qWarning()<<"[KyWiredConnectOperation]"<<"the device type" + << wiredDevicePtr->type() <<"is not Ethernet."; + return -EINVAL; + } + + NetworkManager::ActiveConnection::Ptr activeConnectPtr = wiredDevicePtr->activeConnection(); + if (nullptr != activeConnectPtr) { + QString activeConnectUuid = activeConnectPtr->uuid(); + if (!activeConnectUuid.isEmpty()) { + qDebug()<<"[KyWiredConnectOperation]" <<"close wired network save connection uuid" + << activeConnectUuid <<"device name " << deviceName; + saveActiveConnection(deviceName, activeConnectUuid); + } + } + + wiredDevicePtr->disconnectInterface(); + + return 0; +} + +int KyWiredConnectOperation::openWiredNetworkWithDevice(QString deviceName) +{ + NetworkManager::Device::Ptr wiredDevicePtr = + m_networkResourceInstance->findDeviceInterface(deviceName); + + if (!wiredDevicePtr->isValid()) { + qWarning()<<"[KyWiredConnectOperation]"<<"the network device" << deviceName <<"is not exist."; + return -ENXIO; + } + + if (NetworkManager::Device::Type::Ethernet != wiredDevicePtr->type()) { + qWarning()<<"[KyWiredConnectOperation]"<<"the device type" + << wiredDevicePtr->type() <<"is not Ethernet."; + return -EINVAL; + } + + QString connectUuid; + getActiveConnection(deviceName, connectUuid); + if (!connectUuid.isEmpty()) { + qDebug()<<"[KyWiredConnectOperation]" << "open wired network active connection" + << connectUuid <<"device name" << deviceName; + activateConnection(connectUuid, deviceName); + } + + wiredDevicePtr->setAutoconnect(true); + + return 0; +} diff --git a/src/backend/dbus-interface/kylinwiredconnectoperation.h b/src/backend/dbus-interface/kylinwiredconnectoperation.h index eede3108..4a0e0ee6 100644 --- a/src/backend/dbus-interface/kylinwiredconnectoperation.h +++ b/src/backend/dbus-interface/kylinwiredconnectoperation.h @@ -1,10 +1,15 @@ #ifndef KYLINWIREDCONNECTOPERATION_H #define KYLINWIREDCONNECTOPERATION_H +#include +#include + #include "kylinnetworkresourcemanager.h" #include "kylinconnectsetting.h" #include "kylinconnectoperation.h" +const QString WIRED_NETWORK_STATE_CONF_FILE = QDir::homePath() + "/.config/ukui/kylin-nm-wired.ini"; + class KyWiredConnectOperation : public KyConnectOperation { Q_OBJECT @@ -19,6 +24,13 @@ public: void activateWiredConnection(const QString connectUuid, const QString devName); void activateVpnConnection(const QString connectUuid); void deactivateWiredConnection(const QString activeConnectName, const QString &activeConnectUuid); + + int closeWiredNetworkWithDevice(QString deviceName); + int openWiredNetworkWithDevice(QString deviceName); + +private: + void getActiveConnection(QString &deviceName, QString &connectUuid); + void saveActiveConnection(QString &deviceName, QString &connectUuid); }; #endif // KYLINWIREDCONNECTOPERATION_H diff --git a/src/frontend/mainwindow.cpp b/src/frontend/mainwindow.cpp index 49e9556e..481c92f0 100644 --- a/src/frontend/mainwindow.cpp +++ b/src/frontend/mainwindow.cpp @@ -1421,7 +1421,7 @@ void OldMainWindow::onBtnLanClicked(int flag) switch (flag) { case 0: { qDebug()<<"On btnWired clicked! will close switch button----------------------------"; - m_networkDevice.disconnectDevice(); + // m_networkDevice.disconnectDevice(); emit this->onWiredDeviceChanged(false); #if 0 QtConcurrent::run([=]() { @@ -1439,7 +1439,7 @@ void OldMainWindow::onBtnLanClicked(int flag) } case 1: { qDebug()<<"On btnWired clicked! will open switch button++++++++++++++++++++++++++++"; - m_networkDevice.setDeviceAutoConnect(); + //m_networkDevice.setDeviceAutoConnect(); emit this->onWiredDeviceChanged(true); #if 0 QtConcurrent::run([=]() { diff --git a/src/frontend/tab-pages/lanpage.cpp b/src/frontend/tab-pages/lanpage.cpp index 91145764..69bd15cb 100644 --- a/src/frontend/tab-pages/lanpage.cpp +++ b/src/frontend/tab-pages/lanpage.cpp @@ -22,22 +22,26 @@ LanPage::LanPage(QWidget *parent) : TabPage(parent) m_activeResourse = new KyActiveConnectResourse(this); m_connectResourse = new KyConnectResourse(this); m_device = new KyNetworkDeviceResourse(this); - m_devList.empty(); m_nullLanItem = new LanListItem(); + m_devList.empty(); + initUI(); if (QGSettings::isSchemaInstalled(GSETTINGS_SCHEMA)) { - m_switchGsettings = new QGSettings(GSETTINGS_SCHEMA); - initNetSwitch(); + m_switchGsettings = new QGSettings(GSETTINGS_SCHEMA); + initNetSwitch(); } else { - qDebug()<<"[LanPage] org.ukui.kylin-nm.switch is not installed!"; + qDebug()<<"[LanPage] org.ukui.kylin-nm.switch is not installed!"; } + initDeviceCombox(); initList(m_deviceName); + connect(m_activeResourse, &KyActiveConnectResourse::stateChangeReason, this, &LanPage::updateLanlist); connect(m_connectResourse, &KyConnectResourse::connectionAdd, this, &LanPage::addConnectionSlot); connect(m_connectResourse, &KyConnectResourse::connectionRemove, this, &LanPage::removeConnectionSlot); + connect(m_device, &KyNetworkDeviceResourse::deviceAdd, this, &LanPage::onDeviceAdd); connect(m_device, &KyNetworkDeviceResourse::deviceRemove, this, &LanPage::onDeviceRemove); connect(m_device, &KyNetworkDeviceResourse::deviceNameUpdate, this, &LanPage::onDeviceNameUpdate); @@ -62,17 +66,30 @@ void LanPage::onSwithGsettingsChanged(const QString &key) { if (key == WIRED_SWITCH) { m_netSwitch->blockSignals(true); - qDebug()<<"[LanPage] SwitchButton statue changed to ::"<get(WIRED_SWITCH).toBool(); + + qDebug()<<"[LanPage] SwitchButton statue changed to ::" <get(WIRED_SWITCH).toBool(); + + KyWiredConnectOperation wiredOperation; + bool isOn = m_switchGsettings->get(WIRED_SWITCH).toBool(); if (isOn) { - m_device->setDeviceAutoConnect(); + for (int index = 0; index < m_devList.size(); ++index) { + qDebug()<<"[LanPage] open wired device "<< m_devList.at(index); + wiredOperation.openWiredNetworkWithDevice(m_devList.at(index)); + } + m_inactivatedLanListWidget->show(); initDeviceCombox(); } else { - m_device->disconnectDevice(); + for (int index = 0; index < m_devList.size(); ++index) { + qDebug()<<"[LanPage] close wired device "<< m_devList.at(index); + wiredOperation.closeWiredNetworkWithDevice(m_devList.at(index)); + } + m_inactivatedLanListWidget->hide(); m_deviceFrame->hide(); } + m_netSwitch->setSwitchStatus(isOn); m_netSwitch->blockSignals(false); } @@ -80,15 +97,24 @@ void LanPage::onSwithGsettingsChanged(const QString &key) void LanPage::onLanSwitchClicked() { - qDebug()<<"[LanPage] On lan switch button clicked! Status:"<getSwitchStatus(); + qDebug()<<"[LanPage] On lan switch button clicked! Status:" <getSwitchStatus(); + + KyWiredConnectOperation wiredOperation; + if (m_netSwitch->getSwitchStatus()) { - m_device->setDeviceAutoConnect(); + for (int index = 0; index < m_devList.size(); ++index) { + qDebug()<<"[LanPage] open wired device "<< m_devList.at(index); + wiredOperation.openWiredNetworkWithDevice(m_devList.at(index)); + } + m_inactivatedLanListWidget->show(); m_switchGsettings->set(WIRED_SWITCH,true); initDeviceCombox(); } else { - qDebug()<<"[LanPage]Switch off! Disconnect Device!"; - m_device->disconnectDevice(); + for (int index = 0; index < m_devList.size(); ++index) { + qDebug()<<"[LanPage] close wired device "<< m_devList.at(index); + wiredOperation.closeWiredNetworkWithDevice(m_devList.at(index)); + } m_inactivatedLanListWidget->hide(); m_deviceFrame->hide(); m_switchGsettings->set(WIRED_SWITCH,false); @@ -183,6 +209,7 @@ void LanPage::initDeviceCombox() m_deviceComboBox->addItem(m_devList.at(i)); } } + qDebug() << "[LanPage]Current device:" << m_deviceComboBox->currentText(); m_deviceName = m_deviceComboBox->currentText(); initList(m_deviceName); @@ -191,13 +218,15 @@ void LanPage::initDeviceCombox() void LanPage::onDeviceAdd(QString deviceName, NetworkManager::Device::Type deviceType) { - qDebug() << "[LanPage] Begin add device:" << deviceName; if (deviceType != NetworkManager::Device::Type::Ethernet) { return; } + + qDebug() << "[LanPage] Begin add device:" << deviceName; + m_devList << deviceName; - if (getDefaultDevice().isEmpty()) - { + + if (getDefaultDevice().isEmpty()) { updateDefaultDevice(deviceName); setDefaultDevice(WIRED, deviceName); } @@ -208,8 +237,7 @@ void LanPage::onDeviceAdd(QString deviceName, NetworkManager::Device::Type devic void LanPage::onDeviceRemove(QString deviceName) { qDebug() << "[LanPage] deviceRemove:" << deviceName; - if (getDefaultDevice() == deviceName) - { + if (getDefaultDevice() == deviceName) { QStringList list; QString newDefaultDevice = ""; list.empty(); @@ -220,9 +248,11 @@ void LanPage::onDeviceRemove(QString deviceName) updateDefaultDevice(newDefaultDevice); setDefaultDevice(WIRED, newDefaultDevice); } + if (m_devList.contains(deviceName)) { m_devList.removeOne(deviceName); } + emit deviceStatusChanged(); initDeviceCombox(); } @@ -303,11 +333,12 @@ void LanPage::initList(QString m_deviceName) //程序拉起,初始化显 m_deactiveMap.clear(); m_activedList.clear(); m_deactivedList.clear(); - m_activeResourse->getActiveConnectionList(m_deviceName,NetworkManager::ConnectionSettings::Wired,m_activedList); //激活列表的显示 + + m_activeResourse->getActiveConnectionList(m_deviceName, + NetworkManager::ConnectionSettings::Wired, m_activedList); //激活列表的显示 qDebug() << "[LanPage]init list! Active list:" << m_activedList.size() << "Deactive list:" << m_deactivedList.size(); if (!m_activedList.isEmpty()) { for (int i = 0; i < m_activedList.size(); i++) { - KyConnectItem *activeItemData = m_activedList.at(i); addNewItem(activeItemData, m_activatedLanListWidget); From 63a55ddb927351568e928ff5084988b6f336bc6f Mon Sep 17 00:00:00 2001 From: zhangjiaping Date: Thu, 16 Sep 2021 10:52:02 +0800 Subject: [PATCH 3/8] Feature:Add loading animation. --- src/frontend/list-items/wlanlistitem.cpp | 15 +++-- src/frontend/tab-pages/tabpage.cpp | 6 +- src/frontend/tab-pages/tabpage.h | 2 +- src/frontend/tab-pages/wlanpage.cpp | 37 ++++++++---- src/frontend/tools/radioitembutton.cpp | 73 +++++++++++++----------- src/frontend/tools/radioitembutton.h | 12 ++-- 6 files changed, 83 insertions(+), 62 deletions(-) diff --git a/src/frontend/list-items/wlanlistitem.cpp b/src/frontend/list-items/wlanlistitem.cpp index 5b2061f4..c4c393eb 100644 --- a/src/frontend/list-items/wlanlistitem.cpp +++ b/src/frontend/list-items/wlanlistitem.cpp @@ -122,8 +122,8 @@ void WlanListItem::initWlanUI() #define CONNECT_BUTTON_WIDTH 96 #define FRAME_CONTENT_MARGINS 56,4,16,4 #define FRAME_SPACING 8 -#define PWD_CONTENT_MARGINS 8,0,32,0 -#define SHOW_PWD_BUTTON_SIZE 16,16 +#define PWD_CONTENT_MARGINS 8,0,34,0 +#define SHOW_PWD_BUTTON_SIZE 24,24 #define PWD_LAYOUT_MARGINS 8,0,8,0 //密码输入区域的UI m_pwdFrame = new QFrame(this); @@ -136,11 +136,15 @@ void WlanListItem::initWlanUI() connect(m_pwdLineEdit, &QLineEdit::textChanged, this, &WlanListItem::onPwdEditorTextChanged); m_pwdLineEdit->setFixedHeight(PWD_AREA_HEIGHT); m_pwdLineEdit->setEchoMode(QLineEdit::EchoMode::Password); + m_pwdLineEdit->setTextMargins(PWD_CONTENT_MARGINS); m_pwdLineEditLyt = new QHBoxLayout(m_pwdLineEdit); m_pwdLineEditLyt->setContentsMargins(PWD_LAYOUT_MARGINS); m_pwdLineEdit->setLayout(m_pwdLineEditLyt); m_showPwdButton = new QPushButton(m_pwdLineEdit); m_showPwdButton->setFixedSize(SHOW_PWD_BUTTON_SIZE); + m_showPwdButton->setAutoFillBackground(false); + m_showPwdButton->setIcon(QIcon(":/res/h/hide-pwd.png")); + m_showPwdButton->setCursor(Qt::PointingHandCursor); connect(m_showPwdButton, &QPushButton::clicked, this, &WlanListItem::onShowPwdButtonClicked); m_pwdLineEditLyt->addStretch(); m_pwdLineEditLyt->addWidget(m_showPwdButton); @@ -329,11 +333,10 @@ void WlanListItem::onShowPwdButtonClicked() return; } if (m_pwdLineEdit->echoMode() == QLineEdit::EchoMode::Password) { - //TODO 按钮图标要发生改变 - + m_showPwdButton->setIcon(QIcon(":/res/h/show-pwd.png")); m_pwdLineEdit->setEchoMode(QLineEdit::EchoMode::Normal); } else { - //TODO 按钮图标要发生改变 + m_showPwdButton->setIcon(QIcon(":/res/h/hide-pwd.png")); m_pwdLineEdit->setEchoMode(QLineEdit::EchoMode::Password); } } @@ -385,7 +388,7 @@ void WlanListItem::onWlanStatusChange(QString uuid, NetworkManager::ActiveConnec QString ssid; m_resource->getSsidByUuid(uuid,ssid); if (m_data->m_NetSsid == ssid) { - qDebug() << "[WlanPage] State changed to :" << state << Q_FUNC_INFO <<__LINE__; + qDebug() << ssid << " state changed to :" << state << Q_FUNC_INFO <<__LINE__; if (state == NetworkManager::ActiveConnection::State::Activating) { m_netButton->startLoading(); } else { diff --git a/src/frontend/tab-pages/tabpage.cpp b/src/frontend/tab-pages/tabpage.cpp index ed28e6f1..90e9194b 100644 --- a/src/frontend/tab-pages/tabpage.cpp +++ b/src/frontend/tab-pages/tabpage.cpp @@ -93,13 +93,13 @@ void TabPage::initUI() void TabPage::updateDefaultDevice(QString &deviceName) { qDebug() << "updateDefaultDevice" << deviceName; - defaultDevice = deviceName; + m_defaultDevice = deviceName; } QString TabPage::getDefaultDevice() { - qDebug() << "getDefaultDevice" << defaultDevice; - return defaultDevice; + qDebug() << "getDefaultDevice" << m_defaultDevice; + return m_defaultDevice; } void setDefaultDevice(KyDeviceType deviceType, QString deviceName) diff --git a/src/frontend/tab-pages/tabpage.h b/src/frontend/tab-pages/tabpage.h index f4a06d1f..625ff685 100644 --- a/src/frontend/tab-pages/tabpage.h +++ b/src/frontend/tab-pages/tabpage.h @@ -83,7 +83,7 @@ protected: QHBoxLayout * m_settingsLayout = nullptr; QLabel * m_settingsLabel = nullptr; - QString defaultDevice = ""; + QString m_defaultDevice = ""; //临时增加的下拉框选择网卡区域 QFrame * m_deviceFrame = nullptr; diff --git a/src/frontend/tab-pages/wlanpage.cpp b/src/frontend/tab-pages/wlanpage.cpp index 28ffcadf..c534f31e 100644 --- a/src/frontend/tab-pages/wlanpage.cpp +++ b/src/frontend/tab-pages/wlanpage.cpp @@ -193,7 +193,7 @@ void WlanPage::getActiveWlan() QMap::iterator iter = actMap.begin(); int height = 0; while (iter != actMap.end()) { - if (iter.key() == defaultDevice && !iter.value().isEmpty()) { + if (iter.key() == m_defaultDevice && !iter.value().isEmpty()) { QString ssid = iter.value().at(0); appendActiveWlan(ssid, height); break; @@ -220,11 +220,11 @@ void WlanPage::appendActiveWlan(const QString &ssid, int &height) m_activatedWlanSSid = ssid; KyWirelessNetItem data; - if (!m_resource->getWifiNetwork(defaultDevice, ssid, data)) { + if (!m_resource->getWifiNetwork(m_defaultDevice, ssid, data)) { return; } KyWirelessNetItem *item_data = new KyWirelessNetItem(data); - WlanListItem *wlanItemWidget = new WlanListItem(m_resource, item_data, defaultDevice); + WlanListItem *wlanItemWidget = new WlanListItem(m_resource, item_data, m_defaultDevice); qDebug() << "Activated wlan: ssid = " << item_data->m_NetSsid; QListWidgetItem *wlanItem = new QListWidgetItem(m_activatedNetListWidget); wlanItem->setSizeHint(QSize(m_activatedNetListWidget->width(), wlanItemWidget->height())); @@ -248,8 +248,7 @@ void WlanPage::getAllWlan() m_itemsMap.clear(); QList wlanList; // if (!m_resource->getAllDeviceWifiNetwork(map)) - if (!m_resource->getDeviceWifiNetwork(defaultDevice, wlanList)) //ZJP_TODO 获取默认网卡并传入 - { + if (!m_resource->getDeviceWifiNetwork(m_defaultDevice, wlanList)) { //ZJP_TODO 获取默认网卡并传入 return; } int height = 0; @@ -259,7 +258,7 @@ void WlanPage::getAllWlan() } KyWirelessNetItem *data = new KyWirelessNetItem(itemData); - WlanListItem *wlanItemWidget = new WlanListItem(m_resource, data, defaultDevice); + WlanListItem *wlanItemWidget = new WlanListItem(m_resource, data, m_defaultDevice); QListWidgetItem *wlanItem = new QListWidgetItem(m_inactivatedNetListWidget); connect(wlanItemWidget, &WlanListItem::itemHeightChanged, this, &WlanPage::onItemHeightChanged); connect(wlanItemWidget, &WlanListItem::connectButtonClicked, this, &WlanPage::onConnectButtonClicked); @@ -282,8 +281,9 @@ void WlanPage::onWlanAdded(QString interface, KyWirelessNetItem &item) qDebug() << "A Wlan Added! interface = " << interface << "; ssid = " << item.m_NetSsid << Q_FUNC_INFO <<__LINE__; KyWirelessNetItem *data = new KyWirelessNetItem(item); - WlanListItem *wlanItemWidget = new WlanListItem(m_resource, data, defaultDevice); + WlanListItem *wlanItemWidget = new WlanListItem(m_resource, data, m_defaultDevice); connect(wlanItemWidget, &WlanListItem::itemHeightChanged, this, &WlanPage::onItemHeightChanged); + connect(wlanItemWidget, &WlanListItem::connectButtonClicked, this, &WlanPage::onConnectButtonClicked); QListWidgetItem *wlanItem = new QListWidgetItem(m_inactivatedNetListWidget); wlanItem->setSizeHint(QSize(m_inactivatedNetListWidget->width(), wlanItemWidget->height())); m_inactivatedNetListWidget->setItemWidget(wlanItem, wlanItemWidget); @@ -454,13 +454,26 @@ void WlanPage::onActivatedWlanChanged(QString uuid, NetworkManager::ActiveConnec m_activatedNetListWidget->clear(); int height = 0; appendActiveWlan(ssid, height); - onWlanRemoved(defaultDevice, ssid); + onWlanRemoved(m_defaultDevice, ssid); // this->showDesktopNotify(tr("Connect WLAN succeed")); } else if (state == NetworkManager::ActiveConnection::State::Deactivated) { - onWlanUpdated(); + QString oldActWlanSsid = m_activatedWlanSSid; + getActiveWlan(); + QString newActWlanSsid = m_activatedWlanSSid; + if (oldActWlanSsid != newActWlanSsid) { + if (!oldActWlanSsid.isEmpty()) { + KyWirelessNetItem item; + if(m_resource->getWifiNetwork(m_defaultDevice, oldActWlanSsid, item)) { + onWlanAdded(m_defaultDevice, item); + } + } + if (!newActWlanSsid.isEmpty()) { + onWlanRemoved(m_defaultDevice, newActWlanSsid); + } + } // this->showDesktopNotify(tr("Disconnect WLAN succeed")); } else { - onWlanUpdated(); + qDebug() << "Unexpected wlan state, will do nothing." << Q_FUNC_INFO << __LINE__; } } @@ -488,7 +501,7 @@ void WlanPage::onItemHeightChanged(const QString &ssid) void WlanPage::onConnectButtonClicked(KyWirelessConnectSetting &connSettingInfo, const bool &isHidden) { qDebug() << "Received signal of connecting wlan, ssid = " << connSettingInfo.m_ssid << Q_FUNC_INFO << __LINE__; - m_wirelessConnectOpreation->addAndActiveWirelessConnect(defaultDevice, connSettingInfo, isHidden); + m_wirelessConnectOpreation->addAndActiveWirelessConnect(m_defaultDevice, connSettingInfo, isHidden); } /** @@ -515,7 +528,7 @@ void WlanPage::onDeviceComboxIndexChanged(int currentIndex) //TODO 设备变更时更新设备和列表 QString currentDevice = m_deviceComboBox->itemText(currentIndex); qDebug() << "Current device changed! device = " << currentDevice << Q_FUNC_INFO << __LINE__; - defaultDevice = currentDevice; + m_defaultDevice = currentDevice; getActiveWlan(); getAllWlan(); } diff --git a/src/frontend/tools/radioitembutton.cpp b/src/frontend/tools/radioitembutton.cpp index 47c0556a..8a885abc 100644 --- a/src/frontend/tools/radioitembutton.cpp +++ b/src/frontend/tools/radioitembutton.cpp @@ -33,6 +33,11 @@ RadioItemButton::RadioItemButton(QWidget *parent) : QPushButton(parent) connect(qApp, &QApplication::paletteChanged, this, &RadioItemButton::onPaletteChanged); } +RadioItemButton::~RadioItemButton() +{ + +} + void RadioItemButton::startLoading() { emit this->requestStartLoading(); @@ -72,50 +77,40 @@ void RadioItemButton::setActive(const bool &isActive) } void RadioItemButton::onLoadingStarted() { - if (!m_loadingTimer) { - m_loadingTimer = new QTimer(); - connect(m_loadingTimer, &QTimer::timeout, this, &RadioItemButton::onLoadingTimerTimeout); +#define ANIMATION_SPEED 0.5*1000 +#define START_ROTATION 0 +#define END_ROTATION 360 +#define ANIMATION_LOOP -1 //无限旋转 + if (!m_iconLabel) { + qWarning() << "Start loading failed, iconLabel is null pointer!" << Q_FUNC_INFO << __LINE__; } - if (!m_timeoutTimer) { - m_timeoutTimer = new QTimer(); - connect(m_timeoutTimer, &QTimer::timeout, this, &RadioItemButton::onLoadingStopped); + if (!m_animation) { + m_animation = new QVariantAnimation(m_iconLabel); } - if (m_loadingTimer->isActive()) { - return; - } - m_loadingTimer->start(FLASH_SPEED); - m_timeoutTimer->stop(); - m_timeoutTimer->start(TIMEOUT_TIMER); + m_animation->setDuration(ANIMATION_SPEED); + m_animation->setStartValue(START_ROTATION); + m_animation->setEndValue(END_ROTATION); + m_animation->setLoopCount(ANIMATION_LOOP); + connect(m_animation, &QVariantAnimation::valueChanged, this, &RadioItemButton::onAnimationValueChanged); + m_animation->start(); } void RadioItemButton::onLoadingStopped() { - //ZJP_TODO 停止播放转圈动画 - if (this->m_loadingTimer) { - this->m_loadingTimer->stop(); + if (!m_animation) { + qWarning() << "Stop loading failed, m_animation is null pointer!" << Q_FUNC_INFO << __LINE__; + return; } else { - qWarning() << "Stop loading failed, m_loadingTimer is nullptr." << Q_FUNC_INFO << __LINE__; + m_animation->stop(); } - if (this->m_timeoutTimer) { - this->m_timeoutTimer->stop(); + + if (!m_iconLabel) { + qWarning() << "Stop loading failed, iconLabel is null pointer!" << Q_FUNC_INFO << __LINE__; + return; } else { - qWarning() << "Stop timeout_timer failed, m_timeoutTimer is nullptr." << Q_FUNC_INFO << __LINE__; - } -} - -void RadioItemButton::onLoadingTimerTimeout() -{ - QString qpmQss = ":/res/s/conning-a/"; - qpmQss.append(QString::number(this->currentPage)); - qpmQss.append(".png"); - qDebug()<setPixmap(QPixmap(qpmQss)); - - this->currentPage --; - - if (this->currentPage < 1) { - this->currentPage = 8; //循环播放 + m_iconLabel->setPixmap(m_pixmap); } + qDebug() << "Stop loading succeed!" << Q_FUNC_INFO << __LINE__; } void RadioItemButton::onPaletteChanged() @@ -129,6 +124,16 @@ void RadioItemButton::onPaletteChanged() } } +void RadioItemButton::onAnimationValueChanged(const QVariant& value) +{ + if (!m_iconLabel) { + return; + } + QTransform t; + t.rotate(value.toReal()); + m_iconLabel->setPixmap(QIcon(":/res/s/conning-a/1.png").pixmap(ICON_SIZE).transformed(t)); +} + void RadioItemButton::paintEvent(QPaintEvent *event) { QPalette pal = this->palette(); diff --git a/src/frontend/tools/radioitembutton.h b/src/frontend/tools/radioitembutton.h index cd224487..ccc37748 100644 --- a/src/frontend/tools/radioitembutton.h +++ b/src/frontend/tools/radioitembutton.h @@ -3,16 +3,18 @@ #include #include #include -#include +#include +#include #define MIDDLE_COLOR 178 class RadioItemButton : public QPushButton { Q_OBJECT + public: RadioItemButton(QWidget * parent = nullptr); - ~RadioItemButton() = default; + ~RadioItemButton(); void startLoading(); void stopLoading(); void setButtonIcon(const QIcon &icon); @@ -37,18 +39,16 @@ protected: private: bool m_isActivated = false; QLabel * m_iconLabel = nullptr; - QTimer * m_loadingTimer = nullptr; - QTimer * m_timeoutTimer = nullptr; QColor m_backgroundColor; + QVariantAnimation * m_animation = nullptr; - int currentPage = 8; QPixmap m_pixmap; private slots: void onLoadingStarted(); void onLoadingStopped(); - void onLoadingTimerTimeout(); void onPaletteChanged(); + void onAnimationValueChanged(const QVariant& value); }; #endif // NETBUTTON_H From e5aae2bbcccd102a9f47069fb21e2499d908d52f Mon Sep 17 00:00:00 2001 From: zhangjiaping Date: Thu, 16 Sep 2021 14:14:53 +0800 Subject: [PATCH 4/8] Optimize code. --- src/frontend/tab-pages/wlanpage.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/frontend/tab-pages/wlanpage.cpp b/src/frontend/tab-pages/wlanpage.cpp index c534f31e..3c34e093 100644 --- a/src/frontend/tab-pages/wlanpage.cpp +++ b/src/frontend/tab-pages/wlanpage.cpp @@ -147,14 +147,11 @@ void WlanPage::initDevice() QSettings * m_settings = new QSettings(CONFIG_FILE_PATH, QSettings::IniFormat); m_settings->beginGroup("DEFAULTCARD"); QString key("wireless"); - QString deviceName = m_settings->value(key, "").toString(); + QString deviceName; m_netDeviceResource->getNetworkDeviceList(NetworkManager::Device::Type::Wifi, m_devList); - if (deviceName.isEmpty()) { - qDebug() << "initDevice but defalut wireless card is null"; - if (!m_devList.isEmpty()) { - deviceName = m_devList.at(0); - m_settings->setValue(key, deviceName); - } + if (!m_devList.isEmpty()) { + deviceName = m_devList.at(0); + m_settings->setValue(key, deviceName); } updateDefaultDevice(deviceName); qDebug() << "[WlanPage] initDevice defaultDevice = " << deviceName; From 2334cccda7b91862a2a7f6d67943245381b94687 Mon Sep 17 00:00:00 2001 From: ksn Date: Thu, 16 Sep 2021 15:58:44 +0800 Subject: [PATCH 5/8] 0915 --- src/frontend/tab-pages/lanpage.cpp | 66 +----------------------------- 1 file changed, 2 insertions(+), 64 deletions(-) diff --git a/src/frontend/tab-pages/lanpage.cpp b/src/frontend/tab-pages/lanpage.cpp index a4f110d4..a21c1a5b 100644 --- a/src/frontend/tab-pages/lanpage.cpp +++ b/src/frontend/tab-pages/lanpage.cpp @@ -19,7 +19,7 @@ const QString WIRED_SWITCH = "wiredswitch"; LanPage::LanPage(QWidget *parent) : TabPage(parent) { -<<<<<<< HEAD + m_activeResourse = new KyActiveConnectResourse(this); m_connectResourse = new KyConnectResourse(this); m_device = new KyNetworkDeviceResourse(this); @@ -36,41 +36,16 @@ LanPage::LanPage(QWidget *parent) : TabPage(parent) qDebug()<<"[LanPage] org.ukui.kylin-nm.switch is not installed!"; } -======= - //释放问题 - m_activeResourse = new KyActiveConnectResourse; - m_connectResourse = new KyConnectResourse; - m_device = new KyNetworkDeviceResourse; - devList.empty(); - m_nullLanItem = new LanListItem(); - initUI(); - if (QGSettings::isSchemaInstalled(GSETTINGS_SCHEMA)) { - m_switchGsettings = new QGSettings(GSETTINGS_SCHEMA); - initNetSwitch(); - } else { - qDebug()<<"[LanPage] org.ukui.kylin-nm.switch is not installed!"; - } - initDevice(); ->>>>>>> 636ec6af4c89576d5c6536da19ab208c4e5e7583 initDeviceCombox(); initList(m_deviceName); connect(m_activeResourse, &KyActiveConnectResourse::stateChangeReason, this, &LanPage::updateLanlist); connect(m_connectResourse, &KyConnectResourse::connectionAdd, this, &LanPage::addConnectionSlot); connect(m_connectResourse, &KyConnectResourse::connectionRemove, this, &LanPage::removeConnectionSlot); -<<<<<<< HEAD connect(m_device, &KyNetworkDeviceResourse::deviceAdd, this, &LanPage::onDeviceAdd); connect(m_device, &KyNetworkDeviceResourse::deviceRemove, this, &LanPage::onDeviceRemove); connect(m_device, &KyNetworkDeviceResourse::deviceNameUpdate, this, &LanPage::onDeviceNameUpdate); -======= - connect(m_connectResourse, &KyConnectResourse::connectionUpdate, this, &LanPage::connectionUpdateSlot); - connect(m_device, &KyNetworkDeviceResourse::deviceAdd, this, &LanPage::onDeviceAdd); - connect(m_device, &KyNetworkDeviceResourse::deviceRemove, this, &LanPage::onDeviceRemove); - connect(m_device, &KyNetworkDeviceResourse::deviceNameUpdate, this, &LanPage::onDeviceNameUpdate); - //为什么同一个类中要用信号槽 - connect(this, &LanPage::deviceStatusChanged, this, &LanPage::onDeviceChanged); ->>>>>>> 636ec6af4c89576d5c6536da19ab208c4e5e7583 } LanPage::~LanPage() @@ -275,7 +250,6 @@ void LanPage::initDeviceCombox() QMap enableMap; getDeviceEnableState(0,enableMap); m_deviceComboBox->clear(); -<<<<<<< HEAD m_devList.clear(); bool isOn = m_switchGsettings->get(WIRED_SWITCH).toBool(); @@ -294,32 +268,6 @@ void LanPage::initDeviceCombox() m_deviceComboBox->addItem(m_devList.at(i)); } } -======= - m_deviceMap.clear(); - getWiredList(m_deviceMap); - m_deviceFrame->show(); - QMap >::iterator iter; - for (iter = m_deviceMap.begin(); iter != m_deviceMap.constEnd(); ++iter) { - if (enableMap.contains(iter.key())) { - if (enableMap[iter.key()]) { - m_deviceComboBox->addItem(iter.key()); - } - } else { - m_deviceComboBox->addItem(iter.key()); - saveDeviceEnableState(iter.key(), true); - } - } - if (m_deviceComboBox->currentText().isEmpty()) { - if (m_switchGsettings->get(WIRED_SWITCH).toBool()) { - m_switchGsettings->set(WIRED_SWITCH,false); - } - } else { - if (!m_switchGsettings->get(WIRED_SWITCH).toBool()) { - m_switchGsettings->set(WIRED_SWITCH,true); - } - } ->>>>>>> 636ec6af4c89576d5c6536da19ab208c4e5e7583 - qDebug() << "[LanPage]Current device:" << m_deviceComboBox->currentText(); m_deviceName = m_deviceComboBox->currentText(); initList(m_deviceName); @@ -374,17 +322,11 @@ void LanPage::onDeviceNameUpdate(QString oldName, QString newName) setDefaultDevice(WIRED, newName); } -<<<<<<< HEAD - if (m_devList.contains(oldName)) { - m_devList.removeOne(oldName); - m_devList.append(newName); - qDebug() << "LanPage emit deviceNameUpdate " << oldName << newName; -======= if (devList.contains(oldName)) { devList.removeOne(oldName); devList.append(newName); qDebug() << "[LanPage] emit deviceNameUpdate " << oldName << newName; ->>>>>>> 636ec6af4c89576d5c6536da19ab208c4e5e7583 + emit deviceNameChanged(oldName, newName); initDeviceCombox(); } @@ -512,12 +454,8 @@ void LanPage::updateLanlist(QString uuid, NetworkManager::ActiveConnection::Stat emit lanActiveConnectionStateChanged(devName, uuid, state); } -<<<<<<< HEAD qDebug() << "[LanPage] Update Device Name:" << m_deviceName; -======= - ->>>>>>> 636ec6af4c89576d5c6536da19ab208c4e5e7583 if (state == NetworkManager::ActiveConnection::State::Deactivated) { qDebug()<<"Get a deactivate, begin to remove it from activeList"; QMap::iterator i; From e5cf2f7d3503521b0fda5e95e8d2c165dff9a45d Mon Sep 17 00:00:00 2001 From: zhangjiaping Date: Fri, 17 Sep 2021 10:22:11 +0800 Subject: [PATCH 6/8] Optimize code. --- .../dbus-interface/kywirelessnetresource.cpp | 5 +++-- src/frontend/list-items/wlanlistitem.cpp | 3 +++ src/frontend/tab-pages/wlanpage.cpp | 18 +++++++++++------- src/frontend/tab-pages/wlanpage.h | 3 ++- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/backend/dbus-interface/kywirelessnetresource.cpp b/src/backend/dbus-interface/kywirelessnetresource.cpp index 783f34c8..48d5f99d 100644 --- a/src/backend/dbus-interface/kywirelessnetresource.cpp +++ b/src/backend/dbus-interface/kywirelessnetresource.cpp @@ -114,16 +114,17 @@ void KyWirelessNetResource::getWirelessActiveConnection(NetworkManager::ActiveCo continue; } + qDebug() << "getWirelessActiveConnection " << activeConnectionPtr->uuid(); QString ssid; QString ifaceName = getDeviceIFace(activeConnectionPtr,ssid); if(ifaceName.isEmpty() || ssid.isNull()) { continue; } if (map.contains(ifaceName)) { - map[ifaceName].append(ssid); + map[ifaceName].append(activeConnectionPtr->uuid()); } else { QStringList list; - list.append(ssid); + list.append(activeConnectionPtr->uuid()); map.insert(ifaceName,list); } } diff --git a/src/frontend/list-items/wlanlistitem.cpp b/src/frontend/list-items/wlanlistitem.cpp index c4c393eb..12605594 100644 --- a/src/frontend/list-items/wlanlistitem.cpp +++ b/src/frontend/list-items/wlanlistitem.cpp @@ -78,6 +78,9 @@ void WlanListItem::resizeEvent(QResizeEvent *event) void WlanListItem::onRightButtonClicked() { + if (!m_menu) { + return; + } m_menu->clear(); if (!this->m_data) { return; diff --git a/src/frontend/tab-pages/wlanpage.cpp b/src/frontend/tab-pages/wlanpage.cpp index 3c34e093..5ef5529a 100644 --- a/src/frontend/tab-pages/wlanpage.cpp +++ b/src/frontend/tab-pages/wlanpage.cpp @@ -191,8 +191,8 @@ void WlanPage::getActiveWlan() int height = 0; while (iter != actMap.end()) { if (iter.key() == m_defaultDevice && !iter.value().isEmpty()) { - QString ssid = iter.value().at(0); - appendActiveWlan(ssid, height); + QString uuid = iter.value().at(0); + appendActiveWlan(uuid, height); break; } iter ++; @@ -202,6 +202,7 @@ void WlanPage::getActiveWlan() } else { //未连接任何WiFi的情况 m_activatedWlanSSid.clear(); + m_activatedWlanUuid.clear(); WlanListItem *wlanItemWidget = new WlanListItem(); qDebug() << "There is no activated wlan." << Q_FUNC_INFO << __LINE__ ; QListWidgetItem *wlanItem = new QListWidgetItem(m_activatedNetListWidget); @@ -212,12 +213,15 @@ void WlanPage::getActiveWlan() } } -void WlanPage::appendActiveWlan(const QString &ssid, int &height) +void WlanPage::appendActiveWlan(const QString &uuid, int &height) { - m_activatedWlanSSid = ssid; + qDebug() << "appendActiveWlan" << uuid; + m_activatedWlanUuid = uuid; + m_resource->getSsidByUuid(uuid, m_activatedWlanSSid); KyWirelessNetItem data; - if (!m_resource->getWifiNetwork(m_defaultDevice, ssid, data)) { + if (!m_resource->getWifiNetwork(m_defaultDevice, m_activatedWlanSSid, data)) { + qWarning() << "Get activated wlan failed! ssid = " << m_activatedWlanSSid <<"; device = " << m_defaultDevice << "; uuid = " << m_activatedWlanUuid; return; } KyWirelessNetItem *item_data = new KyWirelessNetItem(data); @@ -450,10 +454,10 @@ void WlanPage::onActivatedWlanChanged(QString uuid, NetworkManager::ActiveConnec //onWlanRemoved(m_wlanDevice, ssid); m_activatedNetListWidget->clear(); int height = 0; - appendActiveWlan(ssid, height); + appendActiveWlan(uuid, height); onWlanRemoved(m_defaultDevice, ssid); // this->showDesktopNotify(tr("Connect WLAN succeed")); - } else if (state == NetworkManager::ActiveConnection::State::Deactivated) { + } else if (state == NetworkManager::ActiveConnection::State::Deactivated && (uuid.isEmpty() || (!uuid.isEmpty() && uuid == m_activatedWlanUuid))) { QString oldActWlanSsid = m_activatedWlanSSid; getActiveWlan(); QString newActWlanSsid = m_activatedWlanSSid; diff --git a/src/frontend/tab-pages/wlanpage.h b/src/frontend/tab-pages/wlanpage.h index c6177ce5..75c7f442 100644 --- a/src/frontend/tab-pages/wlanpage.h +++ b/src/frontend/tab-pages/wlanpage.h @@ -58,7 +58,7 @@ private: void initDeviceCombox(); void getActiveWlan(); - void appendActiveWlan(const QString &ssid, int &height); + void appendActiveWlan(const QString &uuid, int &height); void getAllWlan(); QMap m_itemsMap; QListWidgetItem *m_expandedItem = nullptr; @@ -70,6 +70,7 @@ private: QLabel * m_hiddenWlanLabel = nullptr; QString m_activatedWlanSSid; + QString m_activatedWlanUuid; QStringList m_devList; KyWirelessNetResource *m_resource = nullptr; From 825b41422ee71b572045300f416f43bd5f21e2dd Mon Sep 17 00:00:00 2001 From: ksn Date: Fri, 17 Sep 2021 14:04:14 +0800 Subject: [PATCH 7/8] add LanConnection loading --- src/frontend/list-items/lanlistitem.cpp | 69 ++++++++++++------------ src/frontend/list-items/lanlistitem.h | 4 +- src/frontend/tab-pages/lanpage.cpp | 46 ++++++++++++++-- src/frontend/tab-pages/lanpage.h | 1 + src/frontend/tools/radioitembutton.cpp | 2 +- src/translations/kylin-nm_bo.qm | 1 + src/translations/kylin-nm_tr.qm | Bin 0 -> 21755 bytes 7 files changed, 83 insertions(+), 40 deletions(-) create mode 100644 src/translations/kylin-nm_bo.qm create mode 100644 src/translations/kylin-nm_tr.qm diff --git a/src/frontend/list-items/lanlistitem.cpp b/src/frontend/list-items/lanlistitem.cpp index 07dff196..a06d8448 100644 --- a/src/frontend/list-items/lanlistitem.cpp +++ b/src/frontend/list-items/lanlistitem.cpp @@ -8,27 +8,25 @@ LanListItem::LanListItem(KyConnectItem *data, QString deviceName, QWidget *paren : m_data(data), deviceName(deviceName), ListItem(parent) //item数据传入 { m_connectOperation = new KyWiredConnectOperation; + m_activeConnectResource = new KyActiveConnectResourse; + m_connectResource = new KyConnectResourse; m_data = data; m_nameLabel->setText(m_data->m_connectName); if (m_data != nullptr) { if (m_data->m_connectState == NetworkManager::ActiveConnection::State::Activated) { - m_netButton->stopLoading(); setIcon(true); m_isActive = true; - } else if (m_data->m_connectState == NetworkManager::ActiveConnection::State::Deactivated) - { - m_netButton->stopLoading(); - setIcon(false); - m_isActive = false; } else { -// m_netButton->startLoading(); + setIcon(false); + m_isActive = false; } } m_netButton->setActive(m_isActive); m_itemFrame->installEventFilter(this); connect(this->m_infoButton, &InfoButton::clicked, this, &LanListItem::onInfoButtonClicked); + connect(m_activeConnectResource, &KyActiveConnectResourse::stateChangeReason, this, &LanListItem::onLanStatusChange); } LanListItem::LanListItem(QWidget *parent) : ListItem(parent) @@ -40,6 +38,15 @@ LanListItem::LanListItem(QWidget *parent) : ListItem(parent) this->m_infoButton->hide(); } +void LanListItem::setIcon(bool isOn) +{ + if (isOn) { + m_netButton->setButtonIcon(QIcon::fromTheme("network-wired-connected-symbolic")); + } else { + m_netButton->setButtonIcon(QIcon::fromTheme("network-wired-disconnected-symbolic")); + } +} + void LanListItem::onNetButtonClicked() { if(!m_data){ @@ -51,43 +58,16 @@ void LanListItem::onNetButtonClicked() m_connectOperation->activateWiredConnection(m_data->m_connectUuid, deviceName); qDebug() << m_data->m_connectName << "Connect after user clicked!" << deviceName; // m_data->m_connectState = NetworkManager::ActiveConnection::State::Activating; -// refreshIcon(); m_isActive = true; } else { //连接,点击后断开 m_connectOperation->deactivateWiredConnection(m_data->m_connectName, m_data->m_connectUuid); qDebug() << m_data->m_connectName << "Disconnect after user clicked!" << deviceName; // m_data->m_connectState = NetworkManager::ActiveConnection::State::Deactivated; -// refreshIcon(); m_isActive = false; } } -void LanListItem::setIcon(bool isOn) -{ - if (isOn) { - m_netButton->setButtonIcon(QIcon::fromTheme("network-wired-connected-symbolic")); - } else { - m_netButton->setButtonIcon(QIcon::fromTheme("network-wired-disconnected-symbolic")); - } -} -void LanListItem::refreshIcon() -{ - switch (m_data->m_connectState) { - case NetworkManager::ActiveConnection::State::Activated: - m_netButton->stopLoading(); - setIcon(true); - break; - case NetworkManager::ActiveConnection::State::Activating: - m_netButton->startLoading(); - break; - case NetworkManager::ActiveConnection::State::Deactivated: - m_netButton->stopLoading(); - setIcon(false); - break; - } -} - void LanListItem::onRightButtonClicked() { //右键点击事件 @@ -105,3 +85,24 @@ void LanListItem::onInfoButtonClicked() qDebug() << "On lan info button clicked! But there is no wlan connect " ; } } + +void LanListItem::onLanStatusChange(QString uuid, NetworkManager::ActiveConnection::State state, NetworkManager::ActiveConnection::Reason reason) +{ + qDebug() <<"[LanListItem]:Connection State Change to:" << state; + if (m_data->m_connectUuid == uuid) { + if (state == NetworkManager::ActiveConnection::State::Activating || state == NetworkManager::ActiveConnection::State::Deactivating) { + qDebug() << "[LanListItem]:Activating!Loading!" << state; + m_netButton->startLoading(); + } + else { + qDebug() << "[LanListItem]:Stop!" << state; + m_netButton->stopLoading(); + if (state == NetworkManager::ActiveConnection::State::Activated) { + setIcon(true); + } + else { + setIcon(false); + } + } + } +} diff --git a/src/frontend/list-items/lanlistitem.h b/src/frontend/list-items/lanlistitem.h index 69ae7d0b..bd46ae9e 100644 --- a/src/frontend/list-items/lanlistitem.h +++ b/src/frontend/list-items/lanlistitem.h @@ -18,9 +18,10 @@ public: KyConnectItem *m_data = nullptr; KyWiredConnectOperation *m_connectOperation = nullptr; + KyActiveConnectResourse *m_activeConnectResource = nullptr; + KyConnectResourse *m_connectResource = nullptr; QString deviceName = ""; - void refreshIcon(); protected: void setIcon(bool isOn); @@ -32,6 +33,7 @@ private: private slots: void onInfoButtonClicked(); void onNetButtonClicked(); + void onLanStatusChange(QString uuid, NetworkManager::ActiveConnection::State state, NetworkManager::ActiveConnection::Reason reason); }; #endif // LANLISTITEM_H diff --git a/src/frontend/tab-pages/lanpage.cpp b/src/frontend/tab-pages/lanpage.cpp index a21c1a5b..a43ecd8e 100644 --- a/src/frontend/tab-pages/lanpage.cpp +++ b/src/frontend/tab-pages/lanpage.cpp @@ -43,6 +43,8 @@ LanPage::LanPage(QWidget *parent) : TabPage(parent) connect(m_connectResourse, &KyConnectResourse::connectionAdd, this, &LanPage::addConnectionSlot); connect(m_connectResourse, &KyConnectResourse::connectionRemove, this, &LanPage::removeConnectionSlot); + connect(m_connectResourse, &KyConnectResourse::connectionUpdate, this, &LanPage::onLanDataChange); + connect(m_device, &KyNetworkDeviceResourse::deviceAdd, this, &LanPage::onDeviceAdd); connect(m_device, &KyNetworkDeviceResourse::deviceRemove, this, &LanPage::onDeviceRemove); connect(m_device, &KyNetworkDeviceResourse::deviceNameUpdate, this, &LanPage::onDeviceNameUpdate); @@ -322,9 +324,9 @@ void LanPage::onDeviceNameUpdate(QString oldName, QString newName) setDefaultDevice(WIRED, newName); } - if (devList.contains(oldName)) { - devList.removeOne(oldName); - devList.append(newName); + if (m_devList.contains(oldName)) { + m_devList.removeOne(oldName); + m_devList.append(newName); qDebug() << "[LanPage] emit deviceNameUpdate " << oldName << newName; emit deviceNameChanged(oldName, newName); @@ -382,6 +384,7 @@ void LanPage::addNewItem(KyConnectItem *itemData, QListWidget *listWidget) m_testLanItem = new LanListItem(itemData, m_deviceName); qDebug() << "[LanPage] addNewItem, connection: " << itemData->m_connectName << "deviceName: " << m_deviceName; listWidget->setItemWidget(m_listWidgetItem, m_testLanItem); + qDebug() << "??????????"; } void LanPage::initList(QString m_deviceName) //程序拉起,初始化显示 @@ -512,8 +515,13 @@ void LanPage::updateLanlist(QString uuid, NetworkManager::ActiveConnection::Stat } } } - else if (state == NetworkManager::ActiveConnection::State::Activating){ + else{ +// QMap::iterator i; +// for (i = m_deactiveMap.begin(); i != m_deactiveMap.constEnd(); ++i) { +// KyConnectItem *m_item = i.key(); +// if (m_item->m_connectUuid == uuid) { +// } } if (m_activeMap.count() <= 0) { @@ -557,6 +565,36 @@ void LanPage::getWiredList(QMap > &map) return; } +void LanPage::onLanDataChange(QString uuid) +{ + QString devName; + NetworkManager::ConnectionSettings::ConnectionType type; + + if(m_connectResourse->getInterfaceByUuid(devName, type, uuid)) { + if (type != NetworkManager::ConnectionSettings::ConnectionType::Wired) { + qDebug() << "[LanPage] Connection data changed but type is not Wired"; + return; + } + else { + qDebug() << "[LanPage] Connection data changed!"; + QMap::iterator iter; + for (iter = m_deactiveMap.begin(); iter != m_deactiveMap.constEnd(); ++iter) { + KyConnectItem *m_item = iter.key(); + if (m_item->m_connectUuid == uuid) { + m_inactivatedLanListWidget->removeItemWidget(iter.value()); + delete iter.value(); + m_deactiveMap.erase(iter); + KyConnectItem *m_itemData = new KyConnectItem(this); + m_itemData = m_connectResourse->getConnectionItemByUuid(uuid, devName); + m_deactiveMap.insert(m_itemData, m_listWidgetItem); + addNewItem(m_itemData, m_inactivatedLanListWidget); + break; + } + } + } + } +} + void LanPage::setWiredDeviceEnable(const QString& devName, bool enable) { saveDeviceEnableState(devName, enable); diff --git a/src/frontend/tab-pages/lanpage.h b/src/frontend/tab-pages/lanpage.h index 4dccdab0..4a8bf456 100644 --- a/src/frontend/tab-pages/lanpage.h +++ b/src/frontend/tab-pages/lanpage.h @@ -79,6 +79,7 @@ private slots: void onDeviceRemove(QString deviceName); void onDeviceNameUpdate(QString oldName, QString newName); void onDeviceComboxIndexChanged(int currentIndex); + void onLanDataChange(QString uuid); }; #endif // LANPAGE_H diff --git a/src/frontend/tools/radioitembutton.cpp b/src/frontend/tools/radioitembutton.cpp index 47c0556a..30a7c86c 100644 --- a/src/frontend/tools/radioitembutton.cpp +++ b/src/frontend/tools/radioitembutton.cpp @@ -108,7 +108,7 @@ void RadioItemButton::onLoadingTimerTimeout() QString qpmQss = ":/res/s/conning-a/"; qpmQss.append(QString::number(this->currentPage)); qpmQss.append(".png"); - qDebug()<setPixmap(QPixmap(qpmQss)); this->currentPage --; diff --git a/src/translations/kylin-nm_bo.qm b/src/translations/kylin-nm_bo.qm new file mode 100644 index 00000000..be651eed --- /dev/null +++ b/src/translations/kylin-nm_bo.qm @@ -0,0 +1 @@ +O30c@imYnTQm%qwf4zcwA$V7 zt}IK04w=vyngW4lOhX~96AYy^Lw{h}q$PwVaf>18G=(q&v@;}NduV8#Caq_RG3|Hm z*}eOA_uc)GSD^!p{K@Ng&bjy8bH8)%-Fx1)Z+RBKa`Ew#KUz`$-8;VioqydWMCm^X zQGBZqMdOS++lBb-Ss}Lmr6_vjX(5~si=sCk5TgGc#(`l`e7F~KuQ68kGS-}9TzVVh z@?DH;8yK5hjGJ#@?6{tB`(DPKrHuU_h~oR66k>0kDE{ghwCiC}{L<}0^!`#bFS=WZ zJ?+AC@naztl!)LvZv%V83;xYQ>|Q2bJ^f$k!?zeevy$UUa%JE{`&nUtz5Nm~ru0#)jJ&SFdH<_#|WNA;zt>jN8kL&JICe_nG3l4WC22 zKg~GsKgAulejai5v*Ll((-@D(i}yWJf#*&YAAS{nt~_4+;^`+aUN4lC{QY-?=ol&~ zt#3oSt}t%@^O8Fr{0hcxwB)X5Fb)+@FfQ4{xW-ZPek=O7Z+oe;@--n`BaGKP&uF+9 z*ZwO$6+$+S6fa95W5f_zz%Xm#44Rmb>VF}`b>9R2rx5j`>}>acL*FUJYpyU}H_d1qW^8O{ z+&XP-vB^>yPicnH9PNp<4-aFh4akw@Xw|d&L92VO&HHFIzM=*2=VoW^37Ymgnm9$-th{a zD%@2*`aSSo-NWVg|MU)gu&?~f-&_O!+so*Dow4d|#$`7$UjKE*4I3F-IvCq7Gj={( z{si%E)A{n3_y0hMoxdo5^=rrnZP!*jb!ZCqe$2S?JmdOs#h={_e-~C(Joo0W;HQ&} z+ZHf(y}{VmS@DxT=xJ`QT=P^d+WYOw9lht!Z)fGB^#>vUUgcvS9ztA|FxH%AT=ER# z@&$}*CKxx}#@PBR#;xZWcf4GA=4G_IaJKTwUH5{wRxw_GBjfrru0^N5EyTi`8EgN7 zafO4i@!uG?bTQu8=NedcJ9za9W9RLz3HrO^ZpNx+#zhY^)<49!;ymNJR~VZwFt**| zn*GdDAqMVp&E87*H?DtJ_&eZ*n;2`l7#mJ8u6~lS^(%~9hh67Be^Q8^N!Q0eMV$7$ zx6u2?tKdi9!k<^3M!x#KSBU-9h465L7!Yo8RQN;yKU2aGT?NbWXRnyR-%SS|5heJk z?(%qy5pT%!7=vbHIuM#D#ix$$fPZXvAT(J(x?G}5ctl8;A}l(Ep=8S-8#2S;P9s&O zMjQ|k*lrX(qEB>-A+b)$IlHDJfySP`?xA(5g5xO-pFl@KP-e)kOyX}I{P^+r88pc+ zy!eftv3AxiJ1e_ha0Ieb&@hFLyTxQd3*-VKq?)s}+wC{}frv30GTjl=@SD@dwDgFd zJz|UnLii*y9+-+m|7Fx2@}#!iSygqbeMJg%X&TDh=Jkur?#+;Vg~Ng$yP{N`>^?6 z{HJ_Swg-NlcF))~u}17ecn!h`#udh_0p{G-HE8(Vlct@Z1F`H&h~<*~ZvT|q#?@8g zH^e1GN(9}XOt9eCZ(>+IcKU13C=((SaA5?PwP9uG^rSmHVJFuLW3jO0Fr0-3GEE_y z8j>C{r5ttLAYv~Tb#5Qx(K8bbOPg@pm14<_(5A^kfgX}0XSGd%Nxhkr|L!MuE6b~` zmcwQw;`JX38?h#gdHvq-xM|Y{r#KkXs&p+lU_&Ama$e71?!u|+(V}7ZaWh@yd2FM$ z!lbB;Ix1DXLF@r5%%Ypb4I?VTlF4r&kzb$J<1zil2x5&imG}6L;UjazJLZ+_R|_Ts zgDM(n!fa|%9dLFZk*x8vd!DkD&Oiw%*6y>=Ul^1%D-2lniZRK*M0T^XQ^(;(8fz={ zMW2^s$b>l|Nspqzk7yt~3Tbi+#fTTo;EfV!07%h8&&=Rizv^Kdr7{jVqDQ$=RlvGGYHKp?;Vyr`KQkGak`bztU22s@yC%>+qGj|;X{u404DgXZ67{xD zWgRkn05dwa(DBn!r{IWESBX{EIH?&$GL}rP(`0~yRCCa{M7)iIWe)W9T^B&Cstug09IDfNzNm==uFmF8!OqhQ+YXw zWppZN-A+@6Rtr4YMzG!*!jLtJ4$&-Hkp)}C3CpU!wr2)QHB6$B-XWv0qq()Ia~l^cOX60C?WSrrfJTBv1Qoj{$U zBoBxoEHg9`n{vK`2xiRdleDc(c^J~<8v6b|hL z)$q6tMSqX)#A=5^fe5l9c7MHH7_}k%nRd+Tu-y9yVPT?eyt+Dw)zz@-V8y{H43Q7| z4(=OH*V3hEDQ(DPrbatQWm^-+$#E!bhG_YpPSHlBEDp>T1Z9WVB$qg}TO==r@qbW^ z!zJ{4oNMYRNLyMvHXX$}k~|w654po>4eeHjwjlm*K=db?8-P=0V75^b-3j~_U!!$l zpVuw=@qgU+E2s%uns11;V!)g+8vD!>w5aMD?(XkTI}r7{OigP#H5{qAS{HP>lx<>q zTK9``$(%lA?=#&&nX*@A$|IJkojH>zwO5k{l#-(1Hzw~>ezI)RlN_W3a!vqBQkMX* zIYiL&>hh@Erpw8o8kNQBQrFnICjiyz`AY!G1kRP>>}-jJO#G}AWXsP=z-6UYi^X*0 zs)Xl@T$O>VC0C`WUQe#pPN$()rE0$ERT=t!L9ePc4e99B;=_ytYtd+bCNT$s9f}cb zy?z&AX=8T#2&FW?tgX~mCGX!9&y`^l!TT?pJg?*%kU+bTRFTDz&1nZXCKsm2>tNCN z8qw9=WsI7k2##-PqmxeMdaX+9nG0=H;_9zWRIiRg(%H#v%b|L_k~UuGFCFv5PQ0o2 z7tkO-9YR@-p{lya1A(wJ+A%p}h-W78+pL;*%LW5RQZ#$RM#%il zDf;pwT|j4>cU2P?Bk#ucAz^GFLim})PkbyYXzO7dH$!yrlFs&AQn+fze5G(@;OaB4 zQsu&)A?7JVG^=4NJIqcpn$x?a6bxVWra-Bj=S_jK zlT)5aTAnH;84`_7Y)#so1$|qV`|d)uDRUarHESO8n9gJliA<*=_uYkZRUVU|u66Ub zflu>g z9_-)L4GQ{R#ys}Y>X^sBL$L-y5Z$Rhb_C9RiS;s;TVe#>1Ot!$P@b{hHlOL!WC z+I**ZK5rRIqd(__rO~s|_KU7e1XM*|d?kNLps}zm2MhXd4VENZO!(eFW4hheG~Il6 z<3Y;!`=*ryvOPC zJj|uBV$F^T_X{&-M@_SJ$4eg_dJQ^)+2ixxiLKhD=~9lbN$^#paQ*ZS7@! zchy!pyWP$$mMb#aD`mF&v%KtOE2||)+o!X*p=B$V^Q9+SEqPyA+gkZ#mesaRvEE8f zSW{ar%cicUZB^Cc+E$~iK^Oz2(FL@KCElDZjUIE%J>`qYyH_p?L5!Gur|D`4$4=i> z9*o(k%!$J66l7p9JCV!;W+yd|{AFh@hvlZ7cy|1i)s>jSgw~=&dn@gzZ>b6^4P;D$f5JU;h@Ju*jPU_maO5VMa6($8oaAkvQ zG*Fjl+iU0WxSNU+({w)XJZRVNPlg8VT2iC#pVBP`Dx*4~{9i_QNxgoLc|zxX>&h#E zLo=?t?AnqO3!<9JT40r+FX)yB5_6}lsDfN5D=PA7s}=#n`%%yTx@bRY zZmzT+70-?)qYr0wPHg8%n%zl-u$I|vE!wh^*4_rkrJwjtEp?4#rz^u$s-i_vAQBD+ zBHgm`QBL4BxZV?yl^j%MHHhn06LN=YBoZ-yBghniX*q69 zmaq%bi2_EB5;NT#qmogo(6ZFysPS8hT18D!D2-*ZnNJhfCiksFhW@zx2AT?EsPrVa z;?_k}_-XW_s40Y!X2Vk8nrtiIoSv*dwdGU`Nbh~1s$q|%vZSKN8y@A7TKmYVg<#@4 z8E|H*;>Qu|tzEP<*m#r|Lr}WgH?u$Bk#~Xv7^Ox)B~=P`8wO9N^f94TC8$O_;NO_?5K*F~z+WbZ zxN0ibk5;TFH>X{O-x1IV)h*kM0zQqu41$*OiFL(vFZ2KfW8!;3jN#F7lWVb(Ep})u z#tPE;v^CJW`W5)I*v>v8XLTgPK#Y?>29Xl4eSE84H#EWdHv(XZE z%sqPl3D(gDdT;o=;nb1CpwuPIZhoVJ^-T(ugY+tqbW@`-y62%1HL9;3#h>(cl^OKL zKpb9*?z7^B$_t0bQKuZ|Zo6P{#Hd^aNm1;b2Fc@97kd=u>?Rg36rux=I;r4+hs@H=dH1d|Q%HD`NcOZeS37+WKg#e`Yun3(Z- z{hR!9JDcpkPg6Q8Kj1eh|ERb9~i}(BVJEr+@fh8)~_l)vkRXDkvR`(f|fKxn(*9Wl=%+f;>Q+rl`41m#aY(NAEo_6 z$G7PE7ZYz!E8eaXpJPBJ^ng|bZV^P-^C2C*mnkF*Xp+|oRa8SlTY+O!A-q8&`sNZ) zN`k)KAaXkRql2qh8lJ)@$7H(Z6v`w{W$R)5d?ZugM|hfQR_K#EEepR@lAL4j|1sRb epbz}+F~bv)K+u@P+hN?t Date: Sat, 18 Sep 2021 15:34:27 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E5=93=8D=E5=BA=94=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E7=9A=84=E5=8D=95=E7=BD=91=E5=8D=A1=E5=BC=80?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kylinwiredconnectoperation.cpp | 2 +- src/frontend/list-items/lanlistitem.cpp | 12 +- src/frontend/tab-pages/lanpage.cpp | 119 ++++++++++-------- src/frontend/tab-pages/tabpage.cpp | 11 +- src/frontend/tab-pages/tabpage.h | 1 + 5 files changed, 86 insertions(+), 59 deletions(-) diff --git a/src/backend/dbus-interface/kylinwiredconnectoperation.cpp b/src/backend/dbus-interface/kylinwiredconnectoperation.cpp index 471d562b..a4146205 100644 --- a/src/backend/dbus-interface/kylinwiredconnectoperation.cpp +++ b/src/backend/dbus-interface/kylinwiredconnectoperation.cpp @@ -199,7 +199,7 @@ int KyWiredConnectOperation::closeWiredNetworkWithDevice(QString deviceName) NetworkManager::Device::Ptr wiredDevicePtr = m_networkResourceInstance->findDeviceInterface(deviceName); - if (!wiredDevicePtr->isValid()) { + if (wiredDevicePtr.isNull()) { qWarning()<<"[KyWiredConnectOperation]"<<"the network device" << deviceName <<"is not exist."; return -ENXIO; } diff --git a/src/frontend/list-items/lanlistitem.cpp b/src/frontend/list-items/lanlistitem.cpp index a06d8448..814ba804 100644 --- a/src/frontend/list-items/lanlistitem.cpp +++ b/src/frontend/list-items/lanlistitem.cpp @@ -7,9 +7,9 @@ LanListItem::LanListItem(KyConnectItem *data, QString deviceName, QWidget *parent) : m_data(data), deviceName(deviceName), ListItem(parent) //item数据传入 { - m_connectOperation = new KyWiredConnectOperation; - m_activeConnectResource = new KyActiveConnectResourse; - m_connectResource = new KyConnectResourse; + m_connectOperation = new KyWiredConnectOperation(this); + m_activeConnectResource = new KyActiveConnectResourse(this); + m_connectResource = new KyConnectResourse(this); m_data = data; m_nameLabel->setText(m_data->m_connectName); @@ -93,14 +93,12 @@ void LanListItem::onLanStatusChange(QString uuid, NetworkManager::ActiveConnecti if (state == NetworkManager::ActiveConnection::State::Activating || state == NetworkManager::ActiveConnection::State::Deactivating) { qDebug() << "[LanListItem]:Activating!Loading!" << state; m_netButton->startLoading(); - } - else { + } else { qDebug() << "[LanListItem]:Stop!" << state; m_netButton->stopLoading(); if (state == NetworkManager::ActiveConnection::State::Activated) { setIcon(true); - } - else { + } else { setIcon(false); } } diff --git a/src/frontend/tab-pages/lanpage.cpp b/src/frontend/tab-pages/lanpage.cpp index a43ecd8e..0038a65a 100644 --- a/src/frontend/tab-pages/lanpage.cpp +++ b/src/frontend/tab-pages/lanpage.cpp @@ -42,6 +42,7 @@ LanPage::LanPage(QWidget *parent) : TabPage(parent) connect(m_activeResourse, &KyActiveConnectResourse::stateChangeReason, this, &LanPage::updateLanlist); connect(m_connectResourse, &KyConnectResourse::connectionAdd, this, &LanPage::addConnectionSlot); connect(m_connectResourse, &KyConnectResourse::connectionRemove, this, &LanPage::removeConnectionSlot); + connect(m_connectResourse, &KyConnectResourse::connectionUpdate, this, &LanPage::connectionUpdateSlot); connect(m_connectResourse, &KyConnectResourse::connectionUpdate, this, &LanPage::onLanDataChange); @@ -88,11 +89,9 @@ void LanPage::onSwithGsettingsChanged(const QString &key) qDebug()<<"[LanPage] close wired device "<< m_devList.at(index); wiredOperation.closeWiredNetworkWithDevice(m_devList.at(index)); } - m_inactivatedLanListWidget->hide(); m_deviceFrame->hide(); } - m_netSwitch->setSwitchStatus(isOn); m_netSwitch->blockSignals(false); } @@ -102,24 +101,9 @@ void LanPage::onLanSwitchClicked() { qDebug()<<"[LanPage] On lan switch button clicked! Status:" <getSwitchStatus(); - KyWiredConnectOperation wiredOperation; - if (m_netSwitch->getSwitchStatus()) { - for (int index = 0; index < m_devList.size(); ++index) { - qDebug()<<"[LanPage] open wired device "<< m_devList.at(index); - wiredOperation.openWiredNetworkWithDevice(m_devList.at(index)); - } - - m_inactivatedLanListWidget->show(); m_switchGsettings->set(WIRED_SWITCH,true); - initDeviceCombox(); } else { - for (int index = 0; index < m_devList.size(); ++index) { - qDebug()<<"[LanPage] close wired device "<< m_devList.at(index); - wiredOperation.closeWiredNetworkWithDevice(m_devList.at(index)); - } - m_inactivatedLanListWidget->hide(); - m_deviceFrame->hide(); m_switchGsettings->set(WIRED_SWITCH,false); } } @@ -248,26 +232,61 @@ void LanPage::connectionUpdateSlot(QString uuid) void LanPage::initDeviceCombox() { - //TODO 获取设备列表,单设备时隐藏下拉框,多设备时添加到下拉框 - QMap enableMap; - getDeviceEnableState(0,enableMap); + //TODO 获取设备列表,单设备时隐藏下拉框,多设备时添加到下拉框;m_devList记录插入的所有设备,deviceMap记录设备状态 + QMap deviceMap; + getDeviceEnableState(0,deviceMap); + QStringList enableDevice; m_deviceComboBox->clear(); m_devList.clear(); + enableDevice.clear(); + + if (!m_switchGsettings) { + qDebug() << "[LanPage]:m_switchGsettings is null" << Q_FUNC_INFO << __LINE__; + return; + } bool isOn = m_switchGsettings->get(WIRED_SWITCH).toBool(); if (!isOn) { m_deviceFrame->hide(); } else { m_device->getNetworkDeviceList(NetworkManager::Device::Type::Ethernet, m_devList); - if (m_devList.size() == 1) { - m_deviceFrame->hide(); - m_deviceName = m_devList.at(0); - initList(m_deviceName); + for (int i=0; ishow(); + m_deviceComboBox->hide(); + m_tipsLabel->show(); + m_activatedNetFrame->hide(); + m_inactivatedNetFrame->hide(); + m_activatedNetDivider->hide(); + m_inactivatedNetDivider->hide(); return; } else { - for (int i=0; ishow(); + m_inactivatedNetFrame->show(); + m_activatedNetDivider->show(); + m_inactivatedNetDivider->show(); + if (enableDevice.count() == 1) { + m_deviceFrame->hide(); + m_deviceName = enableDevice.at(0); + initList(m_deviceName); + return; + } else { m_deviceFrame->show(); - m_deviceComboBox->addItem(m_devList.at(i)); + m_tipsLabel->hide(); + m_deviceComboBox->show(); + for (int j=0; jaddItem(enableDevice.at(j)); + } } } qDebug() << "[LanPage]Current device:" << m_deviceComboBox->currentText(); @@ -384,7 +403,6 @@ void LanPage::addNewItem(KyConnectItem *itemData, QListWidget *listWidget) m_testLanItem = new LanListItem(itemData, m_deviceName); qDebug() << "[LanPage] addNewItem, connection: " << itemData->m_connectName << "deviceName: " << m_deviceName; listWidget->setItemWidget(m_listWidgetItem, m_testLanItem); - qDebug() << "??????????"; } void LanPage::initList(QString m_deviceName) //程序拉起,初始化显示 @@ -516,12 +534,7 @@ void LanPage::updateLanlist(QString uuid, NetworkManager::ActiveConnection::Stat } } else{ -// QMap::iterator i; -// for (i = m_deactiveMap.begin(); i != m_deactiveMap.constEnd(); ++i) { -// KyConnectItem *m_item = i.key(); -// if (m_item->m_connectUuid == uuid) { -// } } if (m_activeMap.count() <= 0) { @@ -575,23 +588,25 @@ void LanPage::onLanDataChange(QString uuid) qDebug() << "[LanPage] Connection data changed but type is not Wired"; return; } - else { - qDebug() << "[LanPage] Connection data changed!"; - QMap::iterator iter; - for (iter = m_deactiveMap.begin(); iter != m_deactiveMap.constEnd(); ++iter) { - KyConnectItem *m_item = iter.key(); - if (m_item->m_connectUuid == uuid) { - m_inactivatedLanListWidget->removeItemWidget(iter.value()); - delete iter.value(); - m_deactiveMap.erase(iter); - KyConnectItem *m_itemData = new KyConnectItem(this); - m_itemData = m_connectResourse->getConnectionItemByUuid(uuid, devName); - m_deactiveMap.insert(m_itemData, m_listWidgetItem); - addNewItem(m_itemData, m_inactivatedLanListWidget); - break; - } - } - } + qDebug() << "[LanPage] Connection data changed!"; +// KyConnectItem *m_itemData = new KyConnectItem(this); +// m_itemData = m_connectResourse->getConnectionItemByUuid(uuid, devName); +// qDebug() << "[LanPage] DATA" << m_itemData->m_connectState; + +// QMap::iterator iter; +// for (iter = m_deactiveMap.begin(); iter != m_deactiveMap.constEnd(); ++iter) { +// KyConnectItem *m_item = iter.key(); +// if (m_item->m_connectUuid == uuid) { +// m_inactivatedLanListWidget->removeItemWidget(iter.value()); +// delete iter.value(); +// m_deactiveMap.erase(iter); +// KyConnectItem *m_itemData = new KyConnectItem(this); +// m_itemData = m_connectResourse->getConnectionItemByUuid(uuid, devName); +// m_deactiveMap.insert(m_itemData, m_listWidgetItem); +// addNewItem(m_itemData, m_inactivatedLanListWidget); +// break; +// } +// } } } @@ -599,6 +614,12 @@ void LanPage::setWiredDeviceEnable(const QString& devName, bool enable) { saveDeviceEnableState(devName, enable); initDeviceCombox(); + KyWiredConnectOperation wiredOperation; + if (enable) { + wiredOperation.openWiredNetworkWithDevice(devName); + } else { + wiredOperation.closeWiredNetworkWithDevice(devName); + } } void LanPage::activateWired(const QString& devName, const QString& connUuid) diff --git a/src/frontend/tab-pages/tabpage.cpp b/src/frontend/tab-pages/tabpage.cpp index cb4340af..0273fdb6 100644 --- a/src/frontend/tab-pages/tabpage.cpp +++ b/src/frontend/tab-pages/tabpage.cpp @@ -1,6 +1,7 @@ #include "tabpage.h" #include #include +#include TabPage::TabPage(QWidget *parent) : QWidget(parent) { @@ -39,12 +40,15 @@ void TabPage::initUI() m_deviceLayout->setContentsMargins(DEVICE_LAYOUT_MARGINS); m_deviceFrame->setLayout(m_deviceLayout); m_deviceLabel = new QLabel(m_deviceFrame); + m_deviceLabel->setText(tr("Current Device")); m_deviceComboBox = new QComboBox(m_deviceFrame); m_deviceComboBox->setFixedWidth(DEVICE_COMBOBOX_WIDTH); - m_deviceLabel->setText(tr("Current Device")); + m_tipsLabel = new QLabel(m_deviceFrame); + m_tipsLabel->setText(tr("Devices Closed!")); m_deviceLayout->addWidget(m_deviceLabel); m_deviceLayout->addStretch(); m_deviceLayout->addWidget(m_deviceComboBox); + m_deviceLayout->addWidget(m_tipsLabel); connect(m_deviceComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &TabPage::onDeviceComboxIndexChanged); m_activatedNetFrame = new QFrame(this); @@ -167,7 +171,7 @@ void getDeviceEnableState(int type, QMap &map) { map.clear(); if (!QFile::exists(CONFIG_FILE_PATH)) { - return; + qDebug() << "CONFIG_FILE_PATH not exist"; } if (type != WIRED && type != WIRELESS) { qDebug() << "getDeviceEnableState but wrong type"; @@ -186,6 +190,9 @@ void getDeviceEnableState(int type, QMap &map) kdr->getNetworkDeviceList(NetworkManager::Device::Type::Ethernet, wiredDevList); if (!wiredDevList.isEmpty()) { for (int i = 0; i < wiredDevList.size(); ++i) { + if (!m_settings->contains(wiredDevList.at(i))) { + saveDeviceEnableState(wiredDevList.at(i),true); + } bool enable = m_settings->value(wiredDevList.at(i), true).toBool(); map.insert(wiredDevList.at(i), enable); } diff --git a/src/frontend/tab-pages/tabpage.h b/src/frontend/tab-pages/tabpage.h index 951611d3..2aee84a8 100644 --- a/src/frontend/tab-pages/tabpage.h +++ b/src/frontend/tab-pages/tabpage.h @@ -91,6 +91,7 @@ protected: QHBoxLayout * m_deviceLayout = nullptr; QLabel * m_deviceLabel = nullptr; QComboBox * m_deviceComboBox = nullptr; + QLabel * m_tipsLabel = nullptr; public slots: virtual void onDeviceComboxIndexChanged(int currentIndex) = 0;