Merge PR #1101: Add wireless capabilities and disable wireless AP setting if not capable
commit
13e15160ee
|
|
@ -275,6 +275,18 @@ void NetworkManager::getDevicesResponse(int /*commandId*/, const QVariantMap &pa
|
|||
QMetaEnum modeEnum = QMetaEnum::fromType<WirelessNetworkDevice::WirelessMode>();
|
||||
device->setWirelessMode(static_cast<WirelessNetworkDevice::WirelessMode>(modeEnum.keyToValue(deviceMap.value("mode").toString().toUtf8())));
|
||||
|
||||
// Note: capabilities have been aaded in API 8.2
|
||||
if (m_engine->jsonRpcClient()->jsonRpcVersion() >= "8.2") {
|
||||
QMetaEnum capabilityEnum = QMetaEnum::fromType<WirelessNetworkDevice::WirelessCapability>();
|
||||
WirelessNetworkDevice::WirelessCapabilities wirelessCapabilities;
|
||||
foreach (const QVariant &capabilityVariant, deviceMap.value("capabilities").toList()) {
|
||||
QString capabilityString = capabilityVariant.toString();
|
||||
wirelessCapabilities.setFlag(static_cast<WirelessNetworkDevice::WirelessCapability>(capabilityEnum.keyToValue(capabilityString.toUtf8())));
|
||||
}
|
||||
device->setWirelessCapabilities(wirelessCapabilities);
|
||||
}
|
||||
|
||||
|
||||
QVariantMap currentApMap = deviceMap.value("currentAccessPoint").toMap();
|
||||
device->currentAccessPoint()->setSsid(currentApMap.value("ssid").toString());
|
||||
device->currentAccessPoint()->setMacAddress(currentApMap.value("macAddress").toString());
|
||||
|
|
|
|||
|
|
@ -51,8 +51,8 @@ class NetworkManager : public QObject
|
|||
Q_PROPERTY(bool networkingEnabled READ networkingEnabled NOTIFY networkingEnabledChanged)
|
||||
Q_PROPERTY(bool wirelessNetworkingEnabled READ wirelessNetworkingEnabled NOTIFY wirelessNetworkingEnabledChanged)
|
||||
|
||||
Q_PROPERTY(WiredNetworkDevices* wiredNetworkDevices READ wiredNetworkDevices CONSTANT)
|
||||
Q_PROPERTY(WirelessNetworkDevices* wirelessNetworkDevices READ wirelessNetworkDevices CONSTANT)
|
||||
Q_PROPERTY(WiredNetworkDevices *wiredNetworkDevices READ wiredNetworkDevices CONSTANT)
|
||||
Q_PROPERTY(WirelessNetworkDevices *wirelessNetworkDevices READ wirelessNetworkDevices CONSTANT)
|
||||
|
||||
public:
|
||||
enum NetworkManagerState {
|
||||
|
|
@ -80,8 +80,8 @@ public:
|
|||
bool networkingEnabled() const;
|
||||
bool wirelessNetworkingEnabled() const;
|
||||
|
||||
WiredNetworkDevices* wiredNetworkDevices() const;
|
||||
WirelessNetworkDevices* wirelessNetworkDevices() const;
|
||||
WiredNetworkDevices *wiredNetworkDevices() const;
|
||||
WirelessNetworkDevices *wirelessNetworkDevices() const;
|
||||
|
||||
Q_INVOKABLE int enableNetworking(bool enable);
|
||||
Q_INVOKABLE int enableWirelessNetworking(bool enable);
|
||||
|
|
@ -137,8 +137,8 @@ private:
|
|||
bool m_networkingEnabled = false;
|
||||
bool m_wirelessNetworkingEnabled = false;
|
||||
|
||||
WiredNetworkDevices* m_wiredNetworkDevices = nullptr;
|
||||
WirelessNetworkDevices* m_wirelessNetworkDevices = nullptr;
|
||||
WiredNetworkDevices *m_wiredNetworkDevices = nullptr;
|
||||
WirelessNetworkDevices *m_wirelessNetworkDevices = nullptr;
|
||||
|
||||
QHash<int, QString> m_apRequests; // requestId, interface
|
||||
};
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ void UpnpDiscovery::writeDiscoveryPacket()
|
|||
void UpnpDiscovery::error(QAbstractSocket::SocketError error)
|
||||
{
|
||||
QUdpSocket* socket = static_cast<QUdpSocket*>(sender());
|
||||
qWarning() << "UPnP: Socket error:" << error << socket->errorString();
|
||||
qCDebug(dcUPnP()) << "UPnP: Socket error:" << error << socket->errorString();
|
||||
}
|
||||
|
||||
void UpnpDiscovery::readData()
|
||||
|
|
|
|||
|
|
@ -129,6 +129,11 @@ WirelessNetworkDevice::WirelessNetworkDevice(const QString &macAddress, const QS
|
|||
m_currentAccessPoint = new WirelessAccessPoint(this);
|
||||
}
|
||||
|
||||
WirelessNetworkDevice::WirelessCapabilities WirelessNetworkDevice::wirelessCapabilities() const
|
||||
{
|
||||
return m_wirelessCapabilities;
|
||||
}
|
||||
|
||||
WirelessNetworkDevice::WirelessMode WirelessNetworkDevice::wirelessMode() const
|
||||
{
|
||||
return m_wirelessMode;
|
||||
|
|
@ -144,6 +149,14 @@ WirelessAccessPoint *WirelessNetworkDevice::currentAccessPoint() const
|
|||
return m_currentAccessPoint;
|
||||
}
|
||||
|
||||
void WirelessNetworkDevice::setWirelessCapabilities(WirelessCapabilities wirelessCapabilities)
|
||||
{
|
||||
if (m_wirelessCapabilities != wirelessCapabilities) {
|
||||
m_wirelessCapabilities = wirelessCapabilities;
|
||||
emit wirelessCapabilitiesChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void WirelessNetworkDevice::setWirelessMode(WirelessNetworkDevice::WirelessMode wirelessMode)
|
||||
{
|
||||
if (m_wirelessMode != wirelessMode) {
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ private:
|
|||
class WirelessNetworkDevice: public NetworkDevice
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(WirelessCapabilities wirelessCapabilities READ wirelessCapabilities NOTIFY wirelessCapabilitiesChanged)
|
||||
Q_PROPERTY(WirelessMode wirelessMode READ wirelessMode NOTIFY wirelessModeChanged)
|
||||
Q_PROPERTY(WirelessAccessPoints* accessPoints READ accessPoints CONSTANT)
|
||||
Q_PROPERTY(WirelessAccessPoint* currentAccessPoint READ currentAccessPoint CONSTANT)
|
||||
|
|
@ -128,20 +129,44 @@ public:
|
|||
WirelessModeAccessPoint = 3
|
||||
};
|
||||
Q_ENUM(WirelessMode)
|
||||
|
||||
enum WirelessCapability {
|
||||
WirelessCapabilityNone = 0x0000,
|
||||
WirelessCapabilityCipherWEP40 = 0x0001,
|
||||
WirelessCapabilityCipherWEP104 = 0x0002,
|
||||
WirelessCapabilityCipherTKIP = 0x0004,
|
||||
WirelessCapabilityCipherCCMP = 0x0008,
|
||||
WirelessCapabilityWPA = 0x0010,
|
||||
WirelessCapabilityRSN = 0x0020,
|
||||
WirelessCapabilityAP = 0x0040,
|
||||
WirelessCapabilityAdHoc = 0x0080,
|
||||
WirelessCapabilityFreqValid = 0x0100,
|
||||
WirelessCapability2Ghz = 0x0200,
|
||||
WirelessCapability5Ghz = 0x0400,
|
||||
};
|
||||
Q_ENUM(WirelessCapability)
|
||||
Q_DECLARE_FLAGS(WirelessCapabilities, WirelessCapability)
|
||||
Q_FLAG(WirelessCapabilities)
|
||||
|
||||
explicit WirelessNetworkDevice(const QString &macAddress, const QString &interface, QObject *parent = nullptr);
|
||||
|
||||
WirelessCapabilities wirelessCapabilities() const;
|
||||
WirelessMode wirelessMode() const;
|
||||
WirelessAccessPoints* accessPoints() const;
|
||||
WirelessAccessPoint* currentAccessPoint() const;
|
||||
|
||||
void setWirelessCapabilities(WirelessCapabilities wirelessCapabilities);
|
||||
void setWirelessMode(WirelessMode wirelessMode);
|
||||
|
||||
signals:
|
||||
void wirelessCapabilitiesChanged();
|
||||
void wirelessModeChanged();
|
||||
|
||||
private:
|
||||
WirelessCapabilities m_wirelessCapabilities = WirelessCapabilityNone;
|
||||
WirelessMode m_wirelessMode = WirelessModeUnknown;
|
||||
WirelessAccessPoints *m_accessPoints = nullptr;
|
||||
WirelessAccessPoint *m_currentAccessPoint = nullptr;
|
||||
|
||||
};
|
||||
#endif // NETWORKDEVICE_H
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ SettingsPageBase {
|
|||
if (id === d.pendingCallId) {
|
||||
d.pendingCallId = -1
|
||||
}
|
||||
|
||||
var errorMessage;
|
||||
switch (status) {
|
||||
case "NetworkManagerErrorNoError":
|
||||
|
|
@ -86,10 +87,15 @@ SettingsPageBase {
|
|||
case "NetworkManagerErrorNetworkManagerNotAvailable":
|
||||
errorMessage = qsTr("The network manager is not available.")
|
||||
break;
|
||||
case "NetworkManagerErrorInvalidConfiguration":
|
||||
errorMessage = qsTr("The network configuration is not valid.")
|
||||
break;
|
||||
case "NetworkManagerErrorUnsupportedFeature":
|
||||
errorMessage = qsTr("This feature is not supported on this platform.")
|
||||
break;
|
||||
case "NetworkManagerErrorUnknownError":
|
||||
errorMessage = qsTr("An unexpected error happened.")
|
||||
break;
|
||||
|
||||
}
|
||||
print("network config reply:", status, errorMessage)
|
||||
|
||||
|
|
@ -400,8 +406,13 @@ SettingsPageBase {
|
|||
|
||||
property WirelessNetworkDevice wirelessNetworkDevice: null
|
||||
|
||||
property bool apFeatureAvailable: wirelessNetworkDevice &&
|
||||
wirelessNetworkDevice.wirelessCapabilities !== WirelessNetworkDevice.WirelessCapabilityNone &&
|
||||
wirelessNetworkDevice.wirelessCapabilities | WirelessNetworkDevice.WirelessCapabilityAP
|
||||
|
||||
SettingsPageSectionHeader {
|
||||
text: qsTr("Access Point")
|
||||
visible: apFeatureAvailable
|
||||
}
|
||||
|
||||
TextField {
|
||||
|
|
@ -411,6 +422,7 @@ SettingsPageBase {
|
|||
Layout.leftMargin: app.margins
|
||||
Layout.rightMargin: app.margins
|
||||
placeholderText: qsTr("SSID")
|
||||
visible: apFeatureAvailable
|
||||
}
|
||||
|
||||
PasswordTextField {
|
||||
|
|
@ -424,6 +436,7 @@ SettingsPageBase {
|
|||
requireNumber: false
|
||||
requireSpecialChar: false
|
||||
signup: false
|
||||
visible: apFeatureAvailable
|
||||
}
|
||||
|
||||
Button {
|
||||
|
|
@ -433,6 +446,7 @@ SettingsPageBase {
|
|||
Layout.rightMargin: app.margins
|
||||
text: qsTr("Create Access Point")
|
||||
enabled: ssidTextField.displayText.length > 0 && passwordTextField.isValidPassword
|
||||
visible: apFeatureAvailable
|
||||
onClicked: {
|
||||
d.pendingCallId = networkManager.startAccessPoint(wirelessAccessPointsPage.wirelessNetworkDevice.interface, ssidTextField.text, passwordTextField.password)
|
||||
pageStack.pop(root);
|
||||
|
|
|
|||
Loading…
Reference in New Issue