Merge branch '0908' into 'dbus-interface'

0908

See merge request kylin-desktop/kylin-nm!259
This commit is contained in:
ren peijia 2021-09-18 09:12:07 +00:00
commit 27e493e81b
16 changed files with 359 additions and 201 deletions

View File

@ -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();

View File

@ -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<QString, QString> m_activeConnectUuidMap;
// QMap<QString, QString> m_activeConnectUuidMap;
QMap<QString, QString> m_deviceMap;
void initDeviceMap();

View File

@ -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.isNull()) {
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;
}

View File

@ -1,10 +1,15 @@
#ifndef KYLINWIREDCONNECTOPERATION_H
#define KYLINWIREDCONNECTOPERATION_H
#include <QSettings>
#include <QDir>
#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

View File

@ -7,37 +7,26 @@
LanListItem::LanListItem(KyConnectItem *data, QString deviceName, QWidget *parent)
: m_data(data), deviceName(deviceName), ListItem(parent) //item数据传入
{
m_connectOperation = new KyWiredConnectOperation;
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);
// 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();
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)
@ -49,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){
@ -58,45 +56,18 @@ 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;
}
}
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()
{
//右键点击事件
@ -114,3 +85,22 @@ 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);
}
}
}
}

View File

@ -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

View File

@ -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([=]() {

View File

@ -116,8 +116,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);
}
/**

View File

@ -92,6 +92,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;

View File

@ -19,31 +19,36 @@ const QString WIRED_SWITCH = "wiredswitch";
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_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!";
}
initDevice();
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_connectResourse, &KyConnectResourse::connectionUpdate, this, &LanPage::connectionUpdateSlot);
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);
//为什么同一个类中要用信号槽
connect(this, &LanPage::deviceStatusChanged, this, &LanPage::onDeviceChanged);
}
LanPage::~LanPage()
@ -55,17 +60,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);
@ -75,20 +70,25 @@ void LanPage::onSwithGsettingsChanged(const QString &key)
{
if (key == WIRED_SWITCH) {
m_netSwitch->blockSignals(true);
qDebug()<<"[LanPage] SwitchButton statue changed to ::"<<m_switchGsettings->get(WIRED_SWITCH).toBool();
qDebug()<<"[LanPage] SwitchButton statue changed to ::" <<m_switchGsettings->get(WIRED_SWITCH).toBool();
KyWiredConnectOperation wiredOperation;
bool isOn = m_switchGsettings->get(WIRED_SWITCH).toBool();
if (isOn) {
m_device->setDeviceAutoConnect();
m_inactivatedLanListWidget->show();
// m_deviceFrame->show();
if (m_deviceMap.count() <= 1) {
m_deviceFrame->hide();
} else {
m_deviceFrame->show();
initDeviceCombox();
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();
}
@ -99,23 +99,11 @@ void LanPage::onSwithGsettingsChanged(const QString &key)
void LanPage::onLanSwitchClicked()
{
qDebug()<<"[LanPage] On lan switch button clicked! Status:"<<m_netSwitch->getSwitchStatus();
qDebug()<<"[LanPage] On lan switch button clicked! Status:" <<m_netSwitch->getSwitchStatus();
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);
} else {
qDebug()<<"[LanPage]Switch off! Disconnect Device!";
m_device->disconnectDevice();
m_inactivatedLanListWidget->hide();
m_deviceFrame->hide();
m_switchGsettings->set(WIRED_SWITCH,false);
}
}
@ -217,84 +205,118 @@ void LanPage::connectionUpdateSlot(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 获取设备列表,单设备时隐藏下拉框,多设备时添加到下拉框
QMap<QString, bool> enableMap;
getDeviceEnableState(0,enableMap);
//TODO 获取设备列表,单设备时隐藏下拉框,多设备时添加到下拉框;m_devList记录插入的所有设备deviceMap记录设备状态
QMap<QString, bool> deviceMap;
getDeviceEnableState(0,deviceMap);
QStringList enableDevice;
m_deviceComboBox->clear();
m_deviceMap.clear();
getWiredList(m_deviceMap);
m_deviceFrame->show();
QMap<QString, QVector<QStringList> >::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);
}
m_devList.clear();
enableDevice.clear();
if (!m_switchGsettings) {
qDebug() << "[LanPage]:m_switchGsettings is null" << Q_FUNC_INFO << __LINE__;
return;
}
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);
for (int i=0; i<m_devList.size(); ++i) {
if (deviceMap.contains(m_devList.at(i))) {
if (deviceMap[m_devList.at(i)]) {
enableDevice << m_devList.at(i);
}
} else {
saveDeviceEnableState(m_devList.at(i), true);
enableDevice << m_devList.at(i);
}
}
qDebug() << "[LanPage]device num:" << enableDevice.count();
if (enableDevice.count() == 0) {
m_deviceFrame->show();
m_deviceComboBox->hide();
m_tipsLabel->show();
m_activatedNetFrame->hide();
m_inactivatedNetFrame->hide();
m_activatedNetDivider->hide();
m_inactivatedNetDivider->hide();
return;
} else {
m_activatedNetFrame->show();
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_tipsLabel->hide();
m_deviceComboBox->show();
for (int j=0; j<enableDevice.count(); ++j) {
m_deviceComboBox->addItem(enableDevice.at(j));
}
}
}
qDebug() << "[LanPage]Current device:" << m_deviceComboBox->currentText();
m_deviceName = m_deviceComboBox->currentText();
initList(m_deviceName);
}
}
void LanPage::onDeviceAdd(QString deviceName, NetworkManager::Device::Type deviceType)
{
qDebug() << "[LanPage] Begin add device:" << deviceName;
if (deviceType != NetworkManager::Device::Type::Ethernet) {
return;
}
devList << deviceName;
if (getDefaultDevice().isEmpty())
{
qDebug() << "[LanPage] Begin add device:" << deviceName;
m_devList << deviceName;
if (getDefaultDevice().isEmpty()) {
updateDefaultDevice(deviceName);
setDefaultDevice(WIRED, deviceName);
}
emit deviceStatusChanged();
initDeviceCombox();
}
void LanPage::onDeviceRemove(QString deviceName)
{
qDebug() << "[LanPage] deviceRemove:" << deviceName;
if (getDefaultDevice() == deviceName)
{
if (getDefaultDevice() == deviceName) {
QStringList list;
QString newDefaultDevice = "";
list.empty();
@ -305,27 +327,13 @@ void LanPage::onDeviceRemove(QString deviceName)
updateDefaultDevice(newDefaultDevice);
setDefaultDevice(WIRED, newDefaultDevice);
}
if (devList.contains(deviceName)) {
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();
if (m_devList.contains(deviceName)) {
m_devList.removeOne(deviceName);
}
emit deviceStatusChanged();
initDeviceCombox();
}
void LanPage::onDeviceNameUpdate(QString oldName, QString newName)
@ -335,11 +343,13 @@ 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();
}
}
@ -391,6 +401,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);
}
@ -402,11 +413,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);
@ -463,7 +475,7 @@ void LanPage::updateLanlist(QString uuid, NetworkManager::ActiveConnection::Stat
emit lanActiveConnectionStateChanged(devName, uuid, state);
}
qDebug() << "[LanPage] Update Device Name:" << m_deviceName;
if (state == NetworkManager::ActiveConnection::State::Deactivated) {
qDebug()<<"Get a deactivate, begin to remove it from activeList";
@ -521,7 +533,7 @@ void LanPage::updateLanlist(QString uuid, NetworkManager::ActiveConnection::Stat
}
}
}
else if (state == NetworkManager::ActiveConnection::State::Activating){
else{
}
@ -531,7 +543,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);
}
}
@ -566,10 +578,48 @@ void LanPage::getWiredList(QMap<QString, QVector<QStringList> > &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;
}
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<KyConnectItem *, QListWidgetItem *>::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);
initDeviceCombox();
KyWiredConnectOperation wiredOperation;
if (enable) {
wiredOperation.openWiredNetworkWithDevice(devName);
} else {
wiredOperation.closeWiredNetworkWithDevice(devName);
}
}
void LanPage::activateWired(const QString& devName, const QString& connUuid)

View File

@ -34,12 +34,10 @@ signals:
void lanUpdate(QString devName, QStringList info);
void lanActiveConnectionStateChanged(QString interface, QString uuid, int status);
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:
@ -58,7 +56,7 @@ private:
QList<KyConnectItem *> m_activedList;
QList<KyConnectItem *> m_deactivedList;
QMap<QString, QVector<QStringList> > m_deviceMap;
// QMap<QString, QVector<QStringList> > m_deviceMap;
QMap<KyConnectItem *, QListWidgetItem *> m_deactiveMap;
QMap<KyConnectItem *, QListWidgetItem *> m_activeMap;
@ -67,7 +65,7 @@ private:
// QMap<LanListItem *, QListWidgetItem *> m_activeMap;
QString m_deviceName;
QStringList devList;
QStringList m_devList;
QGSettings * m_switchGsettings = nullptr;
private slots:
@ -79,9 +77,9 @@ 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);
void onLanDataChange(QString uuid);
};
#endif // LANPAGE_H

View File

@ -1,6 +1,7 @@
#include "tabpage.h"
#include <qsettings.h>
#include <QDBusInterface>
#include <QLabel>
TabPage::TabPage(QWidget *parent) : QWidget(parent)
{
@ -34,16 +35,20 @@ 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);
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<int>::of(&QComboBox::currentIndexChanged), this, &TabPage::onDeviceComboxIndexChanged);
m_activatedNetFrame = new QFrame(this);
@ -57,7 +62,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);
@ -166,7 +171,7 @@ void getDeviceEnableState(int type, QMap<QString, bool> &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";
@ -185,6 +190,9 @@ void getDeviceEnableState(int type, QMap<QString, bool> &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);
}

View File

@ -59,7 +59,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;
@ -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;

View File

@ -104,13 +104,6 @@ void RadioItemButton::onLoadingStopped()
m_animation->stop();
}
if (!m_iconLabel) {
qWarning() << "Stop loading failed, iconLabel is null pointer!" << Q_FUNC_INFO << __LINE__;
return;
} else {
m_iconLabel->setPixmap(m_pixmap);
}
qDebug() << "Stop loading succeed!" << Q_FUNC_INFO << __LINE__;
}
void RadioItemButton::onPaletteChanged()

View File

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

Binary file not shown.