add dbus interface

This commit is contained in:
jzxc95 2021-09-01 15:54:00 +08:00
parent 4c9aecfa24
commit 22bf3af64b
15 changed files with 431 additions and 111 deletions

View File

@ -305,6 +305,28 @@ void KyConnectResourse::getConnectionSetting(QString connectUuid, KyConnectSetti
return;
}
bool KyConnectResourse::getInterfaceByUuid(QString &deviceName, NetworkManager::ConnectionSettings::ConnectionType &type, const QString connUuid)
{
deviceName.clear();
NetworkManager::Connection::Ptr connectPtr =
m_networkResourceInstance->getConnect(connUuid);
if (nullptr == connectPtr) {
qWarning()<<"getInterfaceByUuid failed, connect uuid"<<connUuid;
return false;
}
NetworkManager::ConnectionSettings::Ptr connectSettingPtr = connectPtr->settings();
if (connectSettingPtr.isNull()) {
qWarning()<<"getInterfaceByUuid failed, connect uuid"<<connUuid;
return false;
}
type = connectPtr->settings()->connectionType();
deviceName = connectPtr->settings()->interfaceName();
qDebug() << "getInterfaceByUuid success " << deviceName;
return true;
}
void KyConnectResourse::getVpnConnectData(NetworkManager::ConnectionSettings::Ptr settingsPtr,
KyVpnConnectItem *vpnItem)
{

View File

@ -27,6 +27,7 @@ public:
void getBluetoothConnections(QList<KyBluetoothConnectItem *> &bluetoothConnectItemList);
void getApConnections(QList<KyApConnectItem *> &apConnectItemList);
void getConnectionSetting(QString connectUuid, KyConnectSetting &connectSetting);
bool getInterfaceByUuid(QString &deviceName, NetworkManager::ConnectionSettings::ConnectionType &type, const QString connUuid);
private:
KyConnectItem *getConnectionItem(NetworkManager::Connection::Ptr connectPtr);

View File

@ -22,22 +22,20 @@ NetworkManager::ConnectionSettings::Ptr assembleWpaXPskSettings(NetworkManager::
NetworkManager::WirelessSecuritySetting::Ptr security_sett
= settings->setting(NetworkManager::Setting::WirelessSecurity).dynamicCast<NetworkManager::WirelessSecuritySetting>();
security_sett->setInitialized(true);
if (NetworkManager::AccessPoint::Adhoc == accessPoint->mode())
{
if (NetworkManager::AccessPoint::Adhoc == accessPoint->mode()) {
wifi_sett->setMode(NetworkManager::WirelessSetting::Adhoc);
security_sett->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaNone);
} else
{
} else {
security_sett->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaPsk);
}
if (!psk.isEmpty())
{
if (!psk.isEmpty()) {
security_sett->setPsk(psk);
}
return settings;
}
NetworkManager::ConnectionSettings::Ptr assembleWirelessSettings(const KyWirelessConnectSetting &connSettingInfo)
NetworkManager::ConnectionSettings::Ptr assembleWirelessSettings(const KyWirelessConnectSetting &connSettingInfo, bool isHidden)
{
NetworkManager::ConnectionSettings::Ptr settings{new NetworkManager::ConnectionSettings{NetworkManager::ConnectionSettings::Wireless}};
settings->setId(connSettingInfo.m_connectName);
@ -51,6 +49,7 @@ NetworkManager::ConnectionSettings::Ptr assembleWirelessSettings(const KyWireles
wifi_sett->setInitialized(true);
wifi_sett->setSsid(connSettingInfo.m_ssid.toUtf8());
wifi_sett->setSecurity("802-11-wireless-security");
wifi_sett->setHidden(isHidden);
if (connSettingInfo.m_type != KyKeyMgmt::WpaNone && connSettingInfo.m_type != KyKeyMgmt::Unknown)
{
@ -125,7 +124,7 @@ void KyWirelessConnectOperation::deActivateWirelessConnection(const QString acti
//普通wifi
void KyWirelessConnectOperation::addConnect(const KyWirelessConnectSetting &connSettingInfo)
{
NetworkManager::ConnectionSettings::Ptr connSetting = assembleWirelessSettings(connSettingInfo);
NetworkManager::ConnectionSettings::Ptr connSetting = assembleWirelessSettings(connSettingInfo, false);
setIpv4AndIpv6Setting(connSetting, connSettingInfo);
QDBusPendingCallWatcher * watcher;
@ -146,7 +145,7 @@ void KyWirelessConnectOperation::addConnect(const KyWirelessConnectSetting &conn
//tls
void KyWirelessConnectOperation::addTlsConnect(const KyWirelessConnectSetting &connSettingInfo, const KyEapMethodTlsInfo &tlsInfo)
{
NetworkManager::ConnectionSettings::Ptr connSetting = assembleWirelessSettings(connSettingInfo);
NetworkManager::ConnectionSettings::Ptr connSetting = assembleWirelessSettings(connSettingInfo, false);
setIpv4AndIpv6Setting(connSetting, connSettingInfo);
assembleEapMethodTlsSettings(connSetting, tlsInfo);
@ -168,7 +167,7 @@ void KyWirelessConnectOperation::addTlsConnect(const KyWirelessConnectSetting &c
//peap
void KyWirelessConnectOperation::addPeapConnect(const KyWirelessConnectSetting &connSettingInfo, const KyEapMethodPeapInfo &peapInfo)
{
NetworkManager::ConnectionSettings::Ptr connSetting = assembleWirelessSettings(connSettingInfo);
NetworkManager::ConnectionSettings::Ptr connSetting = assembleWirelessSettings(connSettingInfo, false);
setIpv4AndIpv6Setting(connSetting, connSettingInfo);
assembleEapMethodPeapSettings(connSetting, peapInfo);
@ -190,7 +189,7 @@ void KyWirelessConnectOperation::addPeapConnect(const KyWirelessConnectSetting &
void KyWirelessConnectOperation::addTtlsConnect(const KyWirelessConnectSetting &connSettingInfo, const KyEapMethodTtlsInfo &ttlsInfo)
{
NetworkManager::ConnectionSettings::Ptr connSetting = assembleWirelessSettings(connSettingInfo);
NetworkManager::ConnectionSettings::Ptr connSetting = assembleWirelessSettings(connSettingInfo, false);
setIpv4AndIpv6Setting(connSetting, connSettingInfo);
assembleEapMethodTtlsSettings(connSetting, ttlsInfo);
@ -375,7 +374,7 @@ void KyWirelessConnectOperation::addAndActiveWirelessConnect(QString & devIface,
auto dev = m_networkResourceInstance->findDeviceInterface(devIface);
if (dev.isNull()) {
emit andAndActivateConnectionError("can not find device");
emit addAndActivateConnectionError("can not find device");
return;
}
@ -420,7 +419,7 @@ void KyWirelessConnectOperation::addAndActiveWirelessConnect(QString & devIface,
qDebug() << "finish assemble";
} else {
qDebug() << "start assembleWirelessSettings";
map_settings = assembleWirelessSettings(connSettingInfo)->toMap();
map_settings = assembleWirelessSettings(connSettingInfo, isHidden)->toMap();
qDebug() << "finish assembleWirelessSettings";
}
@ -430,7 +429,7 @@ void KyWirelessConnectOperation::addAndActiveWirelessConnect(QString & devIface,
if (watcher->isError() || !watcher->isValid()) {
QString errorMessage = watcher->error().message();
qDebug() << "activation of connection failed " << errorMessage;
emit andAndActivateConnectionError(errorMessage);
emit addAndActivateConnectionError(errorMessage);
}
watcher->deleteLater();
});
@ -472,12 +471,12 @@ void KyWirelessConnectOperation::addAndActiveWirelessEnterPriseTlsConnect(KyEapM
auto dev = m_networkResourceInstance->findDeviceInterface(devIface);
if (dev.isNull()) {
emit andAndActivateConnectionError("can not find device");
emit addAndActivateConnectionError("can not find device");
return;
}
dev_uni = dev->uni();
NetworkManager::ConnectionSettings::Ptr settings = assembleWirelessSettings(connSettingInfo);
NetworkManager::ConnectionSettings::Ptr settings = assembleWirelessSettings(connSettingInfo, isHidden);
assembleEapMethodTlsSettings(settings, info);
if(settings.isNull()) {
@ -493,7 +492,7 @@ void KyWirelessConnectOperation::addAndActiveWirelessEnterPriseTlsConnect(KyEapM
if (watcher->isError() || !watcher->isValid()) {
QString errorMessage = watcher->error().message();
qDebug() << "addAndActiveWirelessEnterPriseTlsConnect failed " << errorMessage;
emit andAndActivateConnectionError(errorMessage);
emit addAndActivateConnectionError(errorMessage);
}
watcher->deleteLater();
});
@ -529,12 +528,12 @@ void KyWirelessConnectOperation::addAndActiveWirelessEnterPrisePeapConnect(KyEap
auto dev = m_networkResourceInstance->findDeviceInterface(devIface);
if (dev.isNull()) {
emit andAndActivateConnectionError("can not find device");
emit addAndActivateConnectionError("can not find device");
return;
}
dev_uni = dev->uni();
NetworkManager::ConnectionSettings::Ptr settings = assembleWirelessSettings(connSettingInfo);
NetworkManager::ConnectionSettings::Ptr settings = assembleWirelessSettings(connSettingInfo, isHidden);
assembleEapMethodPeapSettings(settings, info);
if(settings.isNull()) {
@ -549,7 +548,7 @@ void KyWirelessConnectOperation::addAndActiveWirelessEnterPrisePeapConnect(KyEap
if (watcher->isError() || !watcher->isValid()) {
QString errorMessage = watcher->error().message();
qDebug() << "addAndActiveWirelessEnterPrisePeapConnect failed " << errorMessage;
emit andAndActivateConnectionError(errorMessage);
emit addAndActivateConnectionError(errorMessage);
}
watcher->deleteLater();
});
@ -582,12 +581,12 @@ void KyWirelessConnectOperation::addAndActiveWirelessEnterPriseTtlsConnect(KyEap
auto dev = m_networkResourceInstance->findDeviceInterface(devIface);
if (dev.isNull()) {
emit andAndActivateConnectionError("can not find device");
emit addAndActivateConnectionError("can not find device");
return;
}
dev_uni = dev->uni();
NetworkManager::ConnectionSettings::Ptr settings = assembleWirelessSettings(connSettingInfo);
NetworkManager::ConnectionSettings::Ptr settings = assembleWirelessSettings(connSettingInfo, isHidden);
assembleEapMethodTtlsSettings(settings, info);
if(settings.isNull()) {
@ -603,7 +602,7 @@ void KyWirelessConnectOperation::addAndActiveWirelessEnterPriseTtlsConnect(KyEap
if (watcher->isError() || !watcher->isValid()) {
QString errorMessage = watcher->error().message();
qDebug() << "addAndActiveWirelessEnterPriseTtlsConnect failed " << errorMessage;
emit andAndActivateConnectionError(errorMessage);
emit addAndActivateConnectionError(errorMessage);
}
watcher->deleteLater();
});
@ -718,7 +717,7 @@ void KyWirelessConnectOperation::activeWirelessAp(const QString apUuid, const QS
if (devicePtr.isNull()) {
QString errorMsg ="active wifi ap failed," + apDevice + "is not existed";
qWarning()<< errorMsg;
emit andAndActivateConnectionError(errorMsg);
emit addAndActivateConnectionError(errorMsg);
return;
}
@ -733,7 +732,7 @@ void KyWirelessConnectOperation::activeWirelessAp(const QString apUuid, const QS
if (watcher->isError() || !watcher->isValid()) {
QString errorMsg = "activation connection failed," + watcher->error().message();
qWarning() << errorMsg;
emit andAndActivateConnectionError(errorMsg);
emit addAndActivateConnectionError(errorMsg);
}
watcher->deleteLater();
});

View File

@ -117,7 +117,7 @@ private:
signals:
void wifinEnabledChanged(bool);
void andAndActivateConnectionError(QString errorMessage);
void addAndActivateConnectionError(QString errorMessage);
private:
NetworkManager::WirelessNetwork::Ptr checkWifiNetExist(QString ssid, QString devName);

View File

@ -170,7 +170,7 @@ void KyWirelessNetResource::getSsidByUuid(const QString uuid, QString &ssid)
return;
}
ssid = wireless_sett->ssid();
qDebug() << "getSsidByUuid success " << ssid;
return;
}

View File

@ -129,10 +129,8 @@ DbusAdaptor::DbusAdaptor(MainWindow *parent)
{
// constructor
qDBusRegisterMetaType<QMap<QString, bool> >();
qDBusRegisterMetaType<WirelessInfo>();
qDBusRegisterMetaType<WiredInfo>();
qDBusRegisterMetaType<QList<WirelessInfo> >();
qDBusRegisterMetaType<QList<WiredInfo> >();
qDBusRegisterMetaType<QVector<QStringList> >();
qDBusRegisterMetaType<QMap<QString, QVector<QStringList> >>();
//setAutoRelaySignals(true)后会自动转发mainwindow发出的同名信号因此不必再额外写一个转发
setAutoRelaySignals(true);
}
@ -143,15 +141,19 @@ DbusAdaptor::~DbusAdaptor()
}
//无线列表
QList<WirelessInfo> DbusAdaptor::getWirelessList(QString devName)
QMap<QString, QVector<QStringList> > DbusAdaptor::getWirelessList()
{
QMap<QString, QVector<QStringList> > map;
parent()->getWirelessList(map);
return map;
}
//有线列表
QList<WiredInfo> DbusAdaptor::getWiredList(QString devName)
QMap<QString, QVector<QStringList>> DbusAdaptor::getWiredList()
{
QMap<QString, QVector<QStringList>> map;
parent()->getWiredList(map);
return map;
}
//有线开关
@ -231,16 +233,28 @@ QString DbusAdaptor::getDefaultWirelessDevice()
return deviceName;
}
//连接 根据网卡类型 参数2 为ssid/uuid
void DbusAdaptor::activateConnect(QString devName, QString ssid)
//连接 根据网卡类型 参数1 0:lan 1:wlan 参数3 为ssid/uuid
void DbusAdaptor::activateConnect(int type, QString devName, QString ssid)
{
if (type == 0) {
parent()->activateWired(devName,ssid);
} else if (type == 1) {
parent()->activateWireless(devName,ssid);
} else {
qDebug() << "[DbusAdaptor] activateConnect type is invalid";
}
}
//断开连接 根据网卡类型 参数2 为ssid/uuid
void DbusAdaptor::deActivateConnect(QString devName, QString ssid)
//断开连接 根据网卡类型 参数1 0:lan 1:wlan 参数3 为ssid/uuid
void DbusAdaptor::deActivateConnect(int type, QString devName, QString ssid)
{
if (type == 0) {
parent()->deactivateWired(devName,ssid);
} else if (type == 1) {
parent()->deactivateWireless(devName,ssid);
} else {
qDebug() << "[DbusAdaptor] deactivateConnect type is invalid";
}
}
//获取设备列表和启用/禁用状态
@ -266,3 +280,14 @@ void DbusAdaptor::showCreateWiredConnectWidget(QString devName, QString connecti
//parent()->showCreateWiredConnectWidget(devName,connectionName);
}
//开启热点
void DbusAdaptor::activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice)
{
parent()->activeWirelessAp(apName, apPassword, apDevice);
}
//断开热点
void DbusAdaptor::deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice)
{
parent()->deactiveWirelessAp(apName, apPassword, apDevice);
}

View File

@ -33,57 +33,6 @@ QT_END_NAMESPACE
#include "new-mainwindow.h"
class WiredInfo
{
QString connName;
QString uuid;
friend QDBusArgument&operator <<(QDBusArgument&argument, const WiredInfo&arg)
{
argument.beginStructure();
argument << arg.connName;
argument << arg.uuid;
argument.endStructure();
return argument;
}
friend const QDBusArgument &operator >>(const QDBusArgument &argument, WiredInfo &arg)
{
argument.beginStructure();
argument >> arg.connName;
argument >> arg.uuid;
argument.endStructure();
return argument;
}
};
Q_DECLARE_METATYPE(WiredInfo)
class WirelessInfo
{
QString ssid;
uint signalStrength;
bool bSecu;
friend QDBusArgument&operator <<(QDBusArgument&argument, const WirelessInfo&arg)
{
argument.beginStructure();
argument << arg.ssid;
argument << arg.signalStrength;
argument << arg.bSecu;
argument.endStructure();
return argument;
}
friend const QDBusArgument &operator >>(const QDBusArgument&argument, WirelessInfo&arg)
{
argument.beginStructure();
argument >> arg.ssid;
argument >> arg.signalStrength;
argument >> arg.bSecu;
argument.endStructure();
return argument;
}
};
Q_DECLARE_METATYPE(WirelessInfo)
enum KyDeviceType
{
WIRED,
@ -107,9 +56,9 @@ public:
public: // PROPERTIES
public Q_SLOTS: // METHODS
//无线列表
QList<WirelessInfo> getWirelessList(QString devName);
QMap<QString, QVector<QStringList> > getWirelessList();
//有线列表
QList<WiredInfo> getWiredList(QString devName);
QMap<QString, QVector<QStringList>> getWiredList();
//有线开关
Q_NOREPLY void setWiredSwitchEnable(bool enable);
//无线开关
@ -121,24 +70,30 @@ public Q_SLOTS: // METHODS
QString getDefaultWiredDevice();
Q_NOREPLY void setDefaultWirelessDevice(QString deviceName);
QString getDefaultWirelessDevice();
//连接 根据网卡类型 参数2 为ssid/uuid
Q_NOREPLY void activateConnect(QString devName, QString ssid);
//断开连接 根据网卡类型 参数2 为ssid/uuid
Q_NOREPLY void deActivateConnect(QString devName, QString ssid);
//连接 根据网卡类型 参数1 0:lan 1:wlan 参数3 为ssid/uuid
Q_NOREPLY void activateConnect(int type, QString devName, QString ssid);
//断开连接 根据网卡类型 参数1 0:lan 1:wlan 参数3 为ssid/uuid
Q_NOREPLY void deActivateConnect(int type, QString devName, QString ssid);
//获取设备列表和启用/禁用状态
QMap<QString, bool> getDeviceListAndEnabled();
//唤起属性页 根据网卡类型 参数2 为ssid/uuid
Q_NOREPLY void showPropertyWidget(QString devName, QString ssid);
//唤起新建有线连接界面
Q_NOREPLY void showCreateWiredConnectWidget(QString devName, QString connectionName);
//开启热点
void activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice);
//断开热点
void deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice);
Q_SIGNALS: // SIGNALS
void wirelessActivating(QString devName, QString ssid);
void wiredActivating(QString devName, QString ssid);
void listUpdate(QString devName);
void deviceUpdate();
//仅失败若成功直接发listUpdate
void activateFinish(QString devName, QString ssid);
void activateFailed(QString errorMessage);
void deactivateFailed(QString errorMessage);
//设备插拔
void deviceStatusChanged();
void deviceNameUpdate(QString oldName, QString newName);
void deviceNameChanged(QString oldName, QString newName);
};
#endif

View File

@ -63,6 +63,7 @@ void MainWindow::firstlyStart()
{
initWindowProperties();
initUI();
initDbusConnnect();
initWindowTheme();
initTrayIcon();
installEventFilter(this);
@ -112,11 +113,6 @@ void MainWindow::initUI()
m_wlanWidget = new WlanPage(m_centralWidget);
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"));
connect(m_lanWidget, &LanPage::deviceStatusChanged, this, &MainWindow::deviceStatusChanged);
connect(m_lanWidget, &LanPage::deviceNameChanged, this, &MainWindow::deviceNameChanged);
connect(m_wlanWidget, &WlanPage::deviceStatusChanged, this, &MainWindow::deviceStatusChanged);
connect(m_wlanWidget, &WlanPage::deviceNameChanged, this, &MainWindow::deviceNameChanged);
}
/**
@ -142,6 +138,23 @@ void MainWindow::initTrayIcon()
m_trayIcon->show();
}
void MainWindow::initDbusConnnect()
{
connect(m_lanWidget, &LanPage::deviceStatusChanged, this, &MainWindow::deviceStatusChanged);
connect(m_lanWidget, &LanPage::deviceNameChanged, this, &MainWindow::deviceNameChanged);
connect(m_wlanWidget, &WlanPage::deviceStatusChanged, this, &MainWindow::deviceStatusChanged);
connect(m_wlanWidget, &WlanPage::deviceNameChanged, this, &MainWindow::deviceNameChanged);
connect(m_wlanWidget, &WlanPage::activateFailed, this, &MainWindow::activateFailed);
connect(m_wlanWidget, &WlanPage::deactivateFailed, this, &MainWindow::activateFailed);
connect(m_lanWidget, &LanPage::listUpdate, this, &MainWindow::listUpdate);
connect(m_wlanWidget, &WlanPage::listUpdate, this, &MainWindow::listUpdate);
connect(m_lanWidget, &LanPage::wiredActivating, this, &MainWindow::wiredActivating);
connect(m_wlanWidget, &WlanPage::wirelessActivating, this, &MainWindow::wirelessActivating);
}
/**
* @brief MainWindow::resetWindowPosition
*/
@ -324,3 +337,70 @@ bool MainWindow::eventFilter(QObject *watched, QEvent *event)
}
return QMainWindow::eventFilter(watched,event);
}
/**
* @brief MainWindow::getWirelessList wifi列表dbus调用
* @param map
*/
void MainWindow::getWirelessList(QMap<QString, QVector<QStringList> > &map)
{
map.clear();
if (nullptr != m_wlanWidget) {
m_wlanWidget->getWirelessList(map);
}
}
/**
* @brief MainWindow::getWiredList lan列表dbus调用
* @param map
*/
void MainWindow::getWiredList(QMap<QString, QVector<QStringList>> &map)
{
map.clear();
if (nullptr != m_lanWidget) {
m_lanWidget->getWiredList(map);
}
}
/**
* @brief MainWindow::activeWirelessAp dbus调用
* @param apName
* @param apPassword
* @param apDevice
*/
void MainWindow::activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice)
{
m_wlanWidget->activeWirelessAp(apName, apPassword, apDevice);
}
/**
* @brief MainWindow::activeWirelessAp dbus调用
* @param apName
*/
void MainWindow::deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice)
{
m_wlanWidget->deactiveWirelessAp(apName, apPassword, apDevice);
}
//有线连接断开
void MainWindow::activateWired(const QString& devName, const QString& connName)
{
}
void MainWindow::deactivateWired(const QString& devName, const QString& connName)
{
}
//无线连接断开
void MainWindow::activateWireless(const QString& devName, const QString& ssid)
{
}
void MainWindow::deactivateWireless(const QString& devName, const QString& ssid)
{
}

View File

@ -22,9 +22,33 @@ public:
void setWiredDefaultDevice(QString deviceName);
void setWirelessDefaultDevice(QString deviceName);
//for dbus
void getWirelessList(QMap<QString, QVector<QStringList> > &map);
void getWiredList(QMap<QString, QVector<QStringList>> &map);
//开启热点
void activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice);
//断开热点
void deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice);
//有线连接断开
void activateWired(const QString& devName, const QString& connName);
void deactivateWired(const QString& devName, const QString& connName);
//无线连接断开
void activateWireless(const QString& devName, const QString& ssid);
void deactivateWireless(const QString& devName, const QString& ssid);
signals:
//设备插拔
void deviceStatusChanged();
//设备名称变化
void deviceNameChanged(QString oldName, QString newName);
//设备有线无线列表更新(有线增删、无线增加减少)
void listUpdate(QString devName);
//控制面板连接中
void wiredActivating(QString devName, QString ssid);
void wirelessActivating(QString devName, QString ssid);
void activateFailed(QString errorMessage);
void deactivateFailed(QString errorMessage);
public slots:
@ -39,6 +63,7 @@ private:
QTimer * m_secondaryStartTimer = nullptr; //执行二级启动的倒计时
void initWindowProperties();
void initUI();
void initDbusConnnect();
void initTrayIcon();
void resetTrayIconTool();
void initWindowTheme();

View File

@ -147,7 +147,7 @@ void NmDemo::initConnect()
connect(m_wco, &KyWirelessConnectOperation::deleteConnectionError, this, &NmDemo::onWcoSignals);
connect(m_wco, &KyWirelessConnectOperation::activateConnectionError, this, &NmDemo::onWcoSignals);
connect(m_wco, &KyWirelessConnectOperation::deactivateConnectionError, this, &NmDemo::onWcoSignals);
connect(m_wco, &KyWirelessConnectOperation::andAndActivateConnectionError, this, &NmDemo::onWcoSignals);
connect(m_wco, &KyWirelessConnectOperation::addAndActivateConnectionError, this, &NmDemo::onWcoSignals);
//列表变化
connect(m_wnr, &KyWirelessNetResource::bssidChange, this ,&NmDemo::onBssidChange);

View File

@ -46,6 +46,11 @@ void LanPage::removeConnectionSlot(QString path) //删除时后端会
m_inactivatedLanListWidget->removeItemWidget(iters.value());
delete(iters.value());
m_deactiveMap.erase(iters);
//for dbus
qDebug() << "[LanPage] because removeConnectionSlot " << item->m_ifaceName;
emit listUpdate(item->m_ifaceName);
break;
}
}
@ -65,6 +70,10 @@ void LanPage::addConnectionSlot(QString uuid) //新增一个有线
m_inactivatedLanListWidget->addItem(m_listWidgetItem);
m_inactivatedLanListWidget->setItemWidget(m_listWidgetItem, newListItem);
m_deactiveMap.insert(newItem, m_listWidgetItem);
//for dbus
qDebug() << "[LanPage] because addConnectionSlot " << newItem->m_ifaceName;
emit listUpdate(newItem->m_ifaceName);
} else {
qDebug()<<"[LanPage] GetConnectionItemByUuid is empty when add a new!";
}
@ -176,6 +185,32 @@ void LanPage::initList() //程序拉起,初始化显示
void LanPage::updateLanlist(QString uuid, NetworkManager::ActiveConnection::State state, NetworkManager::ActiveConnection::Reason reason)
{
qDebug()<<"[LanPage] State change slot:"<<state;
QString devName;
NetworkManager::ConnectionSettings::ConnectionType type;
if(m_connectResourse->getInterfaceByUuid(devName, type, uuid)) {
if (type != NetworkManager::ConnectionSettings::ConnectionType::Wired) {
qDebug() << "[LanPage] updateLanlist but type is not wired";
return;
}
} else {
qDebug() << "[LanPage] updateLanlist but uuid is invalid";
}
if (state == NetworkManager::ActiveConnection::State::Activating) {
qDebug() << "[LanPage] wiredActivating " << devName;
emit wiredActivating(devName,uuid);
}
if (state == NetworkManager::ActiveConnection::State::Activated || state == NetworkManager::ActiveConnection::State::Deactivated)
{
qDebug() << "[LanPage] because updateLanlist " <<devName;
emit listUpdate(devName);
}
if (state == NetworkManager::ActiveConnection::State::Activated) {
qDebug()<<"Get an actived connection, begin to move it from deactive to avtive!";
QMap<KyConnectItem *, QListWidgetItem *>::iterator iter; //在未激活列表里删除
@ -262,3 +297,43 @@ bool LanPage::eventFilter(QObject *watched, QEvent *event)
return QWidget::eventFilter(watched, event);
}
void LanPage::getWiredList(QMap<QString, QVector<QStringList> > &map)
{
QStringList devlist;
m_device->getNetworkDeviceList(NetworkManager::Device::Type::Ethernet, devlist);
if (devlist.isEmpty()) {
return;
}
foreach (auto deviceName, devlist) {
QList<KyConnectItem *> activedList;
QList<KyConnectItem *> deactivedList;
QVector<QStringList> vector;
m_activeResourse->getActiveConnectionList(deviceName,NetworkManager::ConnectionSettings::Wired,activedList);
if (!activedList.isEmpty()) {
vector.append(QStringList()<<activedList.at(0)->m_connectName<<activedList.at(0)->m_connectUuid);
} else {
vector.append(QStringList()<<("--"));
}
m_connectResourse->getConnectionList(deviceName, NetworkManager::ConnectionSettings::Wired, deactivedList); //未激活列表的显示
if (!deactivedList.isEmpty()) {
for (int i = 0; i < deactivedList.size(); i++) {
vector.append(QStringList()<<deactivedList.at(i)->m_connectName<<deactivedList.at(i)->m_connectUuid);
}
}
map.insert(deviceName, vector);
}
return;
}
void LanPage::activateWired(const QString& devName, const QString& connUuid)
{
//todo:
}
void LanPage::deactivateWired(const QString& devName, const QString& connUuid)
{
//todo:
}

View File

@ -21,7 +21,13 @@ public:
explicit LanPage(QWidget *parent = nullptr);
~LanPage();
//for dbus
void getWiredList(QMap<QString, QVector<QStringList> > &map);
void activateWired(const QString& devName, const QString& connUuid);
void deactivateWired(const QString& devName, const QString& connUuid);
signals:
void wiredActivating(QString devName, QString ssid);
private:
void initDevice();//初始化默认设备

View File

@ -38,6 +38,9 @@ public:
signals:
void deviceStatusChanged();
void deviceNameChanged(QString oldName, QString newName);
void activateFailed(QString errorMessage);
void deactivateFailed(QString errorMessage);
void listUpdate(QString devName);
protected:
void initUI();

View File

@ -12,6 +12,7 @@ WlanPage::WlanPage(QWidget *parent) : TabPage(parent)
m_connectResource = new KyActiveConnectResourse();
m_networkResourceInstance = KyNetworkResourceManager::getInstance();
m_netDeviceResource=new KyNetworkDeviceResourse(this);
m_apConnectResource = new KyConnectResourse(this);
devList.empty();
initDevice();
m_wirelessConnectOpreation = new KyWirelessConnectOperation(this);
@ -24,6 +25,10 @@ WlanPage::WlanPage(QWidget *parent) : TabPage(parent)
connect(m_netDeviceResource, &KyNetworkDeviceResourse::deviceAdd, this, &WlanPage::onDeviceAdd);
connect(m_netDeviceResource, &KyNetworkDeviceResourse::deviceRemove, this, &WlanPage::onDeviceRemove);
connect(m_netDeviceResource, &KyNetworkDeviceResourse::deviceNameUpdate, this, &WlanPage::onDeviceNameUpdate);
connect(m_wirelessConnectOpreation, &KyWirelessConnectOperation::activateConnectionError, this, &WlanPage::activateFailed);
connect(m_wirelessConnectOpreation, &KyWirelessConnectOperation::addAndActivateConnectionError, this, &WlanPage::activateFailed);
connect(m_wirelessConnectOpreation, &KyWirelessConnectOperation::deactivateConnectionError, this, &WlanPage::deactivateFailed);
}
//QString WlanPage::getSsidFromUuid(const QString &uuid)
@ -94,6 +99,8 @@ void WlanPage::initConnections()
{
connect(m_resource, &KyWirelessNetResource::wifiNetworkAdd, this, &WlanPage::onWlanAdded);
connect(m_resource, &KyWirelessNetResource::wifiNetworkRemove, this, &WlanPage::onWlanRemoved);
connect(m_resource, &KyWirelessNetResource::wifiNetworkAdd, this, &WlanPage::listUpdate);
connect(m_resource, &KyWirelessNetResource::wifiNetworkRemove, this, &WlanPage::listUpdate);
// connect(m_resource, &KyWirelessNetResource::wifiNetworkUpdate, this, &WlanPage::onWlanUpdated);
connect(m_connectResource, &KyActiveConnectResourse::stateChangeReason, this, &WlanPage::onActivatedWlanChanged);
connect(m_netSwitch, &SwitchButton::clicked, this, &WlanPage::onWlanSwitchClicked);
@ -326,10 +333,33 @@ void WlanPage::onActivatedWlanChanged(QString uuid, NetworkManager::ActiveConnec
{
qDebug()<< "Activated wlan changed, uuid = " << uuid << "; state = " << state << "; reason = " << reason << Q_FUNC_INFO <<__LINE__;
QString ssid,devName;
NetworkManager::ConnectionSettings::ConnectionType type;
if(m_apConnectResource->getInterfaceByUuid(devName, type, uuid)) {
if (type != NetworkManager::ConnectionSettings::ConnectionType::Wireless) {
qDebug() << "[WLanPage] updateLanlist but type is not Wireless";
return;
}
} else {
qDebug() << "[WlanPage] onActivatedWlanChanged but uuid is invalid";
}
m_resource->getSsidByUuid(uuid, ssid);
if (state == NetworkManager::ActiveConnection::State::Activating) {
qDebug() << "[WlanPage] wirelessActivating" << devName << ssid;
emit wirelessActivating(devName, ssid);
}
if (state == NetworkManager::ActiveConnection::State::Activated || state == NetworkManager::ActiveConnection::State::Deactivated)
{
qDebug() << "[WlanPage] because ActivatedWlanChanged " << devName;
emit listUpdate(devName);
}
if (state == NetworkManager::ActiveConnection::State::Activated) {
//onWlanRemoved(m_wlanDevice, ssid);
QString ssid;
m_resource->getSsidByUuid(uuid, ssid);
m_activatedNetListWidget->clear();
int height = 0;
appendActiveWlan(ssid, height);
@ -381,3 +411,93 @@ void WlanPage::onWlanSwitchStatusChanged(const bool &checked)
qDebug() << "On wlan switch status changed! new state = " << m_netSwitch->getSwitchStatus() << Q_FUNC_INFO << __LINE__;
onWlanUpdated();
}
//for dbus
void WlanPage::getWirelessList(QMap<QString, QVector<QStringList> > &map)
{
QMap<QString,QStringList> actMap;
m_resource->getWirelessActiveConnection(NetworkManager::ActiveConnection::State::Activated, actMap);
QMap<QString, QList<KyWirelessNetItem> > wlanMap;
if (!m_resource->getAllDeviceWifiNetwork(wlanMap))
{
return;
}
QMap<QString, QList<KyWirelessNetItem> >::iterator iter = wlanMap.begin();
while (iter != wlanMap.end()) {
QVector<QStringList> vector;
QString activeSsid ;
//先是已连接
if (actMap.contains(iter.key())) {
KyWirelessNetItem data;
if (m_resource->getWifiNetwork(iter.key(), actMap[iter.key()].at(0), data)) {
vector.append(QStringList()<<data.m_NetSsid<<QString::number(data.m_signalStrength)<<data.m_secuType);
activeSsid = data.m_NetSsid;
}
} else {
vector.append(QStringList("--"));
}
//未连接
foreach (auto itemData, iter.value()) {
if (itemData.m_NetSsid == activeSsid) {
continue;
}
vector.append(QStringList()<<itemData.m_NetSsid<<QString::number(itemData.m_signalStrength)<<itemData.m_secuType);
}
map.insert(iter.key(), vector);
iter++;
}
return;
}
//开启热点
void WlanPage::activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice)
{
QString uuid;
getApUuid(apName, apPassword, apDevice, uuid);
m_wirelessConnectOpreation->activeWirelessAp(uuid, apName, apPassword, apDevice);
}
//断开热点
void WlanPage::deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice)
{
QString uuid;
getApUuid(apName, apPassword, apDevice, uuid);
if (!uuid.isEmpty()) {
m_wirelessConnectOpreation->deactiveWirelessAp(apName, uuid);
} else {
qDebug() << "[WlanPage] deactiveWirelessAp can not find apName " << apName;
}
}
void WlanPage::getApUuid(const QString apName, const QString apPassword, const QString apDevice, QString &uuid)
{
uuid.clear();
QList<KyApConnectItem *> apConnectItemList;
m_apConnectResource->getApConnections(apConnectItemList);
if (!apConnectItemList.isEmpty()) {
foreach (auto item, apConnectItemList) {
if (item->m_connectName == apName && item->m_password == apPassword
&& item->m_ifaceName == apDevice) {
uuid = item->m_connectUuid;
break;
}
}
}
return;
}
void WlanPage::activateWireless(const QString& devName, const QString& ssid)
{
//todo
}
void WlanPage::deactivateWireless(const QString& devName, const QString& ssid)
{
//todo
}

View File

@ -20,10 +20,17 @@ public:
explicit WlanPage(QWidget *parent = nullptr);
~WlanPage() = default;
//static QString getSsidFromUuid(const QString &uuid);
//for dbus
void getWirelessList(QMap<QString, QVector<QStringList> > &map);
//开启热点
void activeWirelessAp(const QString apName, const QString apPassword, const QString apDevice);
//断开热点
void deactiveWirelessAp(const QString apName, const QString apPassword, const QString apDevice);
void activateWireless(const QString& devName, const QString& ssid);
void deactivateWireless(const QString& devName, const QString& ssid);
signals:
void oneItemExpanded(const QString &ssid);
void wirelessActivating(QString devName, QString ssid);
protected:
bool eventFilter(QObject *watched, QEvent *event);
@ -37,6 +44,7 @@ private:
void getActiveWlan();
void appendActiveWlan(const QString &ssid, int &height);
void getAllWlan();
void getApUuid(const QString apName, const QString apPassword, const QString apDevice, QString &uuid);
QMap<QString, QListWidgetItem*> m_itemsMap;
QListWidgetItem *m_expandedItem = nullptr;
QFrame * m_inactivatedWlanListAreaCentralWidget = nullptr;
@ -54,6 +62,7 @@ private:
KyNetworkResourceManager *m_networkResourceInstance = nullptr;
KyNetworkDeviceResourse *m_netDeviceResource = nullptr;
KyWirelessConnectOperation * m_wirelessConnectOpreation = nullptr;
KyConnectResourse * m_apConnectResource = nullptr;
QGSettings *m_switchGsettings = nullptr;