|
|
|
@ -24,14 +24,13 @@ void NetworkStrengthWidget::paintEvent(QPaintEvent* event) { |
|
|
|
|
// Networking functions
|
|
|
|
|
|
|
|
|
|
Networking::Networking(QWidget* parent, bool show_advanced) : QWidget(parent), show_advanced(show_advanced) { |
|
|
|
|
s = new QStackedLayout; |
|
|
|
|
main_layout = new QStackedLayout(this); |
|
|
|
|
|
|
|
|
|
QLabel* warning = new QLabel("Network manager is inactive!"); |
|
|
|
|
warning->setAlignment(Qt::AlignCenter); |
|
|
|
|
warning->setStyleSheet(R"(font-size: 65px;)"); |
|
|
|
|
|
|
|
|
|
s->addWidget(warning); |
|
|
|
|
setLayout(s); |
|
|
|
|
main_layout->addWidget(warning); |
|
|
|
|
|
|
|
|
|
QTimer* timer = new QTimer(this); |
|
|
|
|
QObject::connect(timer, &QTimer::timeout, this, &Networking::refresh); |
|
|
|
@ -49,13 +48,13 @@ void Networking::attemptInitialization() { |
|
|
|
|
|
|
|
|
|
connect(wifi, &WifiManager::wrongPassword, this, &Networking::wrongPassword); |
|
|
|
|
|
|
|
|
|
QVBoxLayout* vlayout = new QVBoxLayout; |
|
|
|
|
|
|
|
|
|
QWidget* wifiScreen = new QWidget(this); |
|
|
|
|
QVBoxLayout* vlayout = new QVBoxLayout(wifiScreen); |
|
|
|
|
if (show_advanced) { |
|
|
|
|
QPushButton* advancedSettings = new QPushButton("Advanced"); |
|
|
|
|
advancedSettings->setStyleSheet("margin-right: 30px;"); |
|
|
|
|
advancedSettings->setFixedSize(350, 100); |
|
|
|
|
connect(advancedSettings, &QPushButton::released, [=]() { s->setCurrentWidget(an); }); |
|
|
|
|
connect(advancedSettings, &QPushButton::released, [=]() { main_layout->setCurrentWidget(an); }); |
|
|
|
|
vlayout->addSpacing(10); |
|
|
|
|
vlayout->addWidget(advancedSettings, 0, Qt::AlignRight); |
|
|
|
|
vlayout->addSpacing(10); |
|
|
|
@ -65,13 +64,11 @@ void Networking::attemptInitialization() { |
|
|
|
|
connect(wifiWidget, &WifiUI::connectToNetwork, this, &Networking::connectToNetwork); |
|
|
|
|
vlayout->addWidget(new ScrollView(wifiWidget, this), 1); |
|
|
|
|
|
|
|
|
|
QWidget* wifiScreen = new QWidget(this); |
|
|
|
|
wifiScreen->setLayout(vlayout); |
|
|
|
|
s->addWidget(wifiScreen); |
|
|
|
|
main_layout->addWidget(wifiScreen); |
|
|
|
|
|
|
|
|
|
an = new AdvancedNetworking(this, wifi); |
|
|
|
|
connect(an, &AdvancedNetworking::backPress, [=]() { s->setCurrentWidget(wifiScreen); }); |
|
|
|
|
s->addWidget(an); |
|
|
|
|
connect(an, &AdvancedNetworking::backPress, [=]() { main_layout->setCurrentWidget(wifiScreen); }); |
|
|
|
|
main_layout->addWidget(an); |
|
|
|
|
|
|
|
|
|
setStyleSheet(R"( |
|
|
|
|
QPushButton { |
|
|
|
@ -88,7 +85,7 @@ void Networking::attemptInitialization() { |
|
|
|
|
background-color: #222222; |
|
|
|
|
} |
|
|
|
|
)"); |
|
|
|
|
s->setCurrentWidget(wifiScreen); |
|
|
|
|
main_layout->setCurrentWidget(wifiScreen); |
|
|
|
|
ui_setup_complete = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -129,21 +126,21 @@ void Networking::wrongPassword(const QString &ssid) { |
|
|
|
|
|
|
|
|
|
AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWidget(parent), wifi(wifi) { |
|
|
|
|
|
|
|
|
|
QVBoxLayout* vlayout = new QVBoxLayout; |
|
|
|
|
vlayout->setMargin(40); |
|
|
|
|
vlayout->setSpacing(20); |
|
|
|
|
QVBoxLayout* main_layout = new QVBoxLayout(this); |
|
|
|
|
main_layout->setMargin(40); |
|
|
|
|
main_layout->setSpacing(20); |
|
|
|
|
|
|
|
|
|
// Back button
|
|
|
|
|
QPushButton* back = new QPushButton("Back"); |
|
|
|
|
back->setFixedSize(500, 100); |
|
|
|
|
connect(back, &QPushButton::released, [=]() { emit backPress(); }); |
|
|
|
|
vlayout->addWidget(back, 0, Qt::AlignLeft); |
|
|
|
|
main_layout->addWidget(back, 0, Qt::AlignLeft); |
|
|
|
|
|
|
|
|
|
// Enable tethering layout
|
|
|
|
|
ToggleControl *tetheringToggle = new ToggleControl("Enable Tethering", "", "", wifi->tetheringEnabled()); |
|
|
|
|
vlayout->addWidget(tetheringToggle); |
|
|
|
|
main_layout->addWidget(tetheringToggle); |
|
|
|
|
QObject::connect(tetheringToggle, &ToggleControl::toggleFlipped, this, &AdvancedNetworking::toggleTethering); |
|
|
|
|
vlayout->addWidget(horizontal_line(), 0); |
|
|
|
|
main_layout->addWidget(horizontal_line(), 0); |
|
|
|
|
|
|
|
|
|
// Change tethering password
|
|
|
|
|
editPasswordButton = new ButtonControl("Tethering Password", "EDIT", "", [=]() { |
|
|
|
@ -152,21 +149,20 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid |
|
|
|
|
wifi->changeTetheringPassword(pass); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
vlayout->addWidget(editPasswordButton, 0); |
|
|
|
|
vlayout->addWidget(horizontal_line(), 0); |
|
|
|
|
main_layout->addWidget(editPasswordButton, 0); |
|
|
|
|
main_layout->addWidget(horizontal_line(), 0); |
|
|
|
|
|
|
|
|
|
// IP address
|
|
|
|
|
ipLabel = new LabelControl("IP Address", wifi->ipv4_address); |
|
|
|
|
vlayout->addWidget(ipLabel, 0); |
|
|
|
|
vlayout->addWidget(horizontal_line(), 0); |
|
|
|
|
main_layout->addWidget(ipLabel, 0); |
|
|
|
|
main_layout->addWidget(horizontal_line(), 0); |
|
|
|
|
|
|
|
|
|
// SSH keys
|
|
|
|
|
vlayout->addWidget(new SshToggle()); |
|
|
|
|
vlayout->addWidget(horizontal_line(), 0); |
|
|
|
|
vlayout->addWidget(new SshControl()); |
|
|
|
|
main_layout->addWidget(new SshToggle()); |
|
|
|
|
main_layout->addWidget(horizontal_line(), 0); |
|
|
|
|
main_layout->addWidget(new SshControl()); |
|
|
|
|
|
|
|
|
|
vlayout->addStretch(1); |
|
|
|
|
setLayout(vlayout); |
|
|
|
|
main_layout->addStretch(1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AdvancedNetworking::refresh() { |
|
|
|
@ -187,21 +183,19 @@ void AdvancedNetworking::toggleTethering(bool enable) { |
|
|
|
|
// WifiUI functions
|
|
|
|
|
|
|
|
|
|
WifiUI::WifiUI(QWidget *parent, WifiManager* wifi) : QWidget(parent), wifi(wifi) { |
|
|
|
|
vlayout = new QVBoxLayout; |
|
|
|
|
main_layout = new QVBoxLayout(this); |
|
|
|
|
|
|
|
|
|
// Scan on startup
|
|
|
|
|
QLabel *scanning = new QLabel("Scanning for networks"); |
|
|
|
|
scanning->setStyleSheet(R"(font-size: 65px;)"); |
|
|
|
|
vlayout->addWidget(scanning, 0, Qt::AlignCenter); |
|
|
|
|
vlayout->setSpacing(25); |
|
|
|
|
|
|
|
|
|
setLayout(vlayout); |
|
|
|
|
main_layout->addWidget(scanning, 0, Qt::AlignCenter); |
|
|
|
|
main_layout->setSpacing(25); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void WifiUI::refresh() { |
|
|
|
|
wifi->request_scan(); |
|
|
|
|
wifi->refreshNetworks(); |
|
|
|
|
clearLayout(vlayout); |
|
|
|
|
clearLayout(main_layout); |
|
|
|
|
|
|
|
|
|
connectButtons = new QButtonGroup(this); // TODO check if this is a leak
|
|
|
|
|
QObject::connect(connectButtons, qOverload<QAbstractButton*>(&QButtonGroup::buttonClicked), this, &WifiUI::handleButton); |
|
|
|
@ -227,14 +221,14 @@ void WifiUI::refresh() { |
|
|
|
|
|
|
|
|
|
connectButtons->addButton(btn, i); |
|
|
|
|
|
|
|
|
|
vlayout->addLayout(hlayout, 1); |
|
|
|
|
main_layout->addLayout(hlayout, 1); |
|
|
|
|
// Don't add the last horizontal line
|
|
|
|
|
if (i+1 < wifi->seen_networks.size()) { |
|
|
|
|
vlayout->addWidget(horizontal_line(), 0); |
|
|
|
|
main_layout->addWidget(horizontal_line(), 0); |
|
|
|
|
} |
|
|
|
|
i++; |
|
|
|
|
} |
|
|
|
|
vlayout->addStretch(3); |
|
|
|
|
main_layout->addStretch(3); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void WifiUI::handleButton(QAbstractButton* button) { |
|
|
|
|