parent
bffdfd5303
commit
c16c8f3c2c
|
@ -43,8 +43,12 @@ WifiUI::WifiUI(QWidget *parent, int page_length) : QWidget(parent), networks_per
|
|||
wifi_widget = new QWidget;
|
||||
QVBoxLayout* networkLayout = new QVBoxLayout;
|
||||
QHBoxLayout *tethering_field = new QHBoxLayout;
|
||||
tethering_field->addWidget(new QLabel("Enable Tethering"));
|
||||
tethering_field->addSpacing(50);
|
||||
|
||||
ipv4 = new QLabel("");
|
||||
tethering_field->addWidget(ipv4);
|
||||
tethering_field->addWidget(new QLabel("Enable Tethering"));
|
||||
|
||||
Toggle* toggle_switch = new Toggle(this);
|
||||
toggle_switch->setFixedSize(150, 100);
|
||||
tethering_field->addWidget(toggle_switch);
|
||||
|
@ -58,7 +62,6 @@ WifiUI::WifiUI(QWidget *parent, int page_length) : QWidget(parent), networks_per
|
|||
tetheringWidget->setFixedHeight(150);
|
||||
networkLayout->addWidget(tetheringWidget);
|
||||
|
||||
|
||||
vlayout = new QVBoxLayout;
|
||||
wifi_widget->setLayout(vlayout);
|
||||
networkLayout->addWidget(wifi_widget);
|
||||
|
@ -99,7 +102,7 @@ void WifiUI::refresh() {
|
|||
|
||||
wifi->request_scan();
|
||||
wifi->refreshNetworks();
|
||||
|
||||
ipv4->setText(wifi->ipv4_address);
|
||||
clearLayout(vlayout);
|
||||
|
||||
connectButtons = new QButtonGroup(this);
|
||||
|
|
|
@ -18,7 +18,7 @@ public:
|
|||
explicit WifiUI(QWidget *parent = 0, int page_length = 5);
|
||||
|
||||
private:
|
||||
WifiManager* wifi = nullptr;
|
||||
WifiManager *wifi = nullptr;
|
||||
const int networks_per_page;
|
||||
|
||||
QStackedWidget *swidget;
|
||||
|
@ -31,6 +31,7 @@ private:
|
|||
QString text;
|
||||
QButtonGroup *connectButtons;
|
||||
bool tetheringEnabled;
|
||||
QLabel *ipv4;
|
||||
|
||||
void connectToNetwork(Network n);
|
||||
QString getStringFromUser();
|
||||
|
|
|
@ -32,6 +32,7 @@ QString device_iface = "org.freedesktop.NetworkManager.Device";
|
|||
QString wireless_device_iface = "org.freedesktop.NetworkManager.Device.Wireless";
|
||||
QString ap_iface = "org.freedesktop.NetworkManager.AccessPoint";
|
||||
QString connection_iface = "org.freedesktop.NetworkManager.Connection.Active";
|
||||
QString ipv4config_iface = "org.freedesktop.NetworkManager.IP4Config";
|
||||
|
||||
QString nm_service = "org.freedesktop.NetworkManager";
|
||||
|
||||
|
@ -87,7 +88,7 @@ void WifiManager::refreshNetworks() {
|
|||
bus = QDBusConnection::systemBus();
|
||||
seen_networks.clear();
|
||||
seen_ssids.clear();
|
||||
|
||||
ipv4_address = get_ipv4_address();
|
||||
for (Network &network : get_networks()) {
|
||||
if (seen_ssids.count(network.ssid)) {
|
||||
continue;
|
||||
|
@ -97,6 +98,32 @@ void WifiManager::refreshNetworks() {
|
|||
}
|
||||
}
|
||||
|
||||
QString WifiManager::get_ipv4_address(){
|
||||
if (raw_adapter_state != state_connected){
|
||||
return "";
|
||||
}
|
||||
QVector<QDBusObjectPath> conns = get_active_connections();
|
||||
for (auto p : conns){
|
||||
QString active_connection = p.path();
|
||||
QDBusInterface nm(nm_service, active_connection, props_iface, bus);
|
||||
QDBusObjectPath pth = get_response<QDBusObjectPath>(nm.call("Get", connection_iface, "Ip4Config"));
|
||||
QString ip4config = pth.path();
|
||||
|
||||
QDBusInterface nm2(nm_service, ip4config, props_iface, bus);
|
||||
const QDBusArgument &arr = get_response<QDBusArgument>(nm2.call("Get", ipv4config_iface, "AddressData"));
|
||||
QMap<QString, QVariant> pth2;
|
||||
arr.beginArray();
|
||||
while (!arr.atEnd()){
|
||||
arr >> pth2;
|
||||
QString ipv4 = pth2.value("address").value<QString>();
|
||||
arr.endArray();
|
||||
return ipv4;
|
||||
}
|
||||
arr.endArray();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
QList<Network> WifiManager::get_networks() {
|
||||
QList<Network> r;
|
||||
QDBusInterface nm(nm_service, adapter, wireless_device_iface, bus);
|
||||
|
@ -207,7 +234,7 @@ void WifiManager::deactivate_connections(QString ssid) {
|
|||
QVector<QDBusObjectPath> WifiManager::get_active_connections() {
|
||||
QDBusInterface nm(nm_service, nm_path, props_iface, bus);
|
||||
QDBusMessage response = nm.call("Get", nm_iface, "ActiveConnections");
|
||||
QDBusArgument arr = get_response<QDBusArgument>(response);
|
||||
const QDBusArgument &arr = get_response<QDBusArgument>(response);
|
||||
QVector<QDBusObjectPath> conns;
|
||||
|
||||
QDBusObjectPath path;
|
||||
|
@ -216,6 +243,7 @@ QVector<QDBusObjectPath> WifiManager::get_active_connections() {
|
|||
arr >> path;
|
||||
conns.push_back(path);
|
||||
}
|
||||
arr.endArray();
|
||||
return conns;
|
||||
}
|
||||
|
||||
|
@ -346,10 +374,10 @@ void WifiManager::enableTethering() {
|
|||
connection["802-11-wireless-security"]["psk"] = "swagswagcomma";
|
||||
|
||||
connection["ipv4"]["method"] = "shared";
|
||||
QMap<QString,QVariant> adress1;
|
||||
adress1["address"] = "192.168.43.1";
|
||||
adress1["prefix"] = 24u;
|
||||
connection["ipv4"]["address-data"] = QVariant::fromValue(IpConfig() << adress1);
|
||||
QMap<QString,QVariant> address;
|
||||
address["address"] = "192.168.43.1";
|
||||
address["prefix"] = 24u;
|
||||
connection["ipv4"]["address-data"] = QVariant::fromValue(IpConfig() << address);
|
||||
connection["ipv4"]["gateway"] = "192.168.43.1";
|
||||
connection["ipv6"]["method"] = "ignore";
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ public:
|
|||
|
||||
void request_scan();
|
||||
QVector<Network> seen_networks;
|
||||
QString ipv4_address;
|
||||
|
||||
void refreshNetworks();
|
||||
void connect(Network ssid);
|
||||
|
@ -52,6 +53,7 @@ private:
|
|||
QString tethering_ssid;
|
||||
|
||||
QString get_adapter();
|
||||
QString get_ipv4_address();
|
||||
QList<Network> get_networks();
|
||||
void connect(QByteArray ssid, QString username, QString password, SecurityType security_type);
|
||||
QString get_active_ap();
|
||||
|
|
Loading…
Reference in New Issue