openpilot/selfdrive/ui/qt/offroad/settings.cc

386 lines
14 KiB
C++
Raw Normal View History

#include <string>
#include <iostream>
#include <sstream>
#include <cassert>
2020-10-30 18:03:51 -06:00
#include <QString>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QLabel>
#include <QPixmap>
#ifndef QCOM
2021-01-27 04:07:17 -07:00
#include "networking.hpp"
#endif
QT UI: Wifi chooser (#2062) * qt wifi Squashed commit of the following: commit bec029c7b906c1df5324a8dbb0a58b8980c313ab Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 19:31:30 2020 +0100 try to collect security type commit e1e4d97f48a293392d33fe607936bbe94415c846 Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 16:06:55 2020 +0100 add a function for refresh commit 52bd7d0937040bd1d5c582f324fdb60f33677014 Author: grekiki <gregor1234567890@gmail.com> Date: Fri Oct 30 11:14:23 2020 +0100 allow compilation commit 1b91e1057cca564d6b021a579d97940a8f2b9328 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Wed Oct 21 14:12:05 2020 +0200 dont build keyboard commit cc8bad2ddd668d1397a9003a518699c3f706cca8 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Tue Oct 20 18:22:07 2020 +0200 kind of works commit ce3a9b6d96a1985ba5b9a2f17c15530cb8f93ca8 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Oct 19 11:22:55 2020 +0200 remove button and text field commit 2db3d11bdb8e69098c34c04a1341ea707ce1ed6a Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:31:26 2020 +0200 try lineedit commit d045c302dcec612c8d2ff14ba256af06c7df9ebb Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:01:18 2020 +0200 add dialog test button commit 21fa63e33b12b0bcdad441e778b2cf6c42b113e4 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:36:10 2020 +0200 Only show one if both 2.4 and 5 Ghz found commit dfb9ca4173adc05264663a3658298899eea2c619 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:24:16 2020 +0200 Sort networks by strength commit e57fe68f7972f955fc4da7054af676df8581b003 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:59:39 2020 +0200 Handle currently connected AP commit a5e80e122176f39a9bccfb8056b0886d210fdf24 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:38:18 2020 +0200 Add todo commit 98a1bc6e7a1f38b0ff7cb810b7d63a133552dfcc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:37:35 2020 +0200 Implement scan method commit 9a774a509b1665371d9fd51b40550ad2388d58bc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:29:03 2020 +0200 show list of wifi networks * add to settings * no wifi on pc * refactor get_property * refactor WiFi, split between UI and network manager stuff * renaming * refresh works * refactor * forgot to git add * connecting works again * print connection error on weird networks * extract adapter path * found networks * Deleting existing connections to SSID we are trying to connect to * have paths of active connections * mvp * fix review * qt wifi Squashed commit of the following: commit bec029c7b906c1df5324a8dbb0a58b8980c313ab Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 19:31:30 2020 +0100 try to collect security type commit e1e4d97f48a293392d33fe607936bbe94415c846 Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 16:06:55 2020 +0100 add a function for refresh commit 52bd7d0937040bd1d5c582f324fdb60f33677014 Author: grekiki <gregor1234567890@gmail.com> Date: Fri Oct 30 11:14:23 2020 +0100 allow compilation commit 1b91e1057cca564d6b021a579d97940a8f2b9328 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Wed Oct 21 14:12:05 2020 +0200 dont build keyboard commit cc8bad2ddd668d1397a9003a518699c3f706cca8 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Tue Oct 20 18:22:07 2020 +0200 kind of works commit ce3a9b6d96a1985ba5b9a2f17c15530cb8f93ca8 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Oct 19 11:22:55 2020 +0200 remove button and text field commit 2db3d11bdb8e69098c34c04a1341ea707ce1ed6a Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:31:26 2020 +0200 try lineedit commit d045c302dcec612c8d2ff14ba256af06c7df9ebb Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:01:18 2020 +0200 add dialog test button commit 21fa63e33b12b0bcdad441e778b2cf6c42b113e4 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:36:10 2020 +0200 Only show one if both 2.4 and 5 Ghz found commit dfb9ca4173adc05264663a3658298899eea2c619 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:24:16 2020 +0200 Sort networks by strength commit e57fe68f7972f955fc4da7054af676df8581b003 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:59:39 2020 +0200 Handle currently connected AP commit a5e80e122176f39a9bccfb8056b0886d210fdf24 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:38:18 2020 +0200 Add todo commit 98a1bc6e7a1f38b0ff7cb810b7d63a133552dfcc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:37:35 2020 +0200 Implement scan method commit 9a774a509b1665371d9fd51b40550ad2388d58bc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:29:03 2020 +0200 show list of wifi networks * add to settings * no wifi on pc * refactor get_property * refactor WiFi, split between UI and network manager stuff * renaming * refresh works * refactor * forgot to git add * connecting works again * print connection error on weird networks * extract adapter path * found networks * Deleting existing connections to SSID we are trying to connect to * have paths of active connections * mvp * fix review * fix bugs * fix text color * colors * wider button * show connected network first * fix sorting * remove hack * sorting * auto refresh * only refresh when widget is visible * scan once on startup * dont open dialog on qcom2 Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> Co-authored-by: Comma Device <device@comma.ai> Co-authored-by: grekiki <gregor1234567890@gmail.com>
2020-11-19 08:51:48 -07:00
#include "settings.hpp"
#include "widgets/input.hpp"
#include "widgets/toggle.hpp"
#include "widgets/offroad_alerts.hpp"
QT UI: Wifi chooser (#2062) * qt wifi Squashed commit of the following: commit bec029c7b906c1df5324a8dbb0a58b8980c313ab Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 19:31:30 2020 +0100 try to collect security type commit e1e4d97f48a293392d33fe607936bbe94415c846 Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 16:06:55 2020 +0100 add a function for refresh commit 52bd7d0937040bd1d5c582f324fdb60f33677014 Author: grekiki <gregor1234567890@gmail.com> Date: Fri Oct 30 11:14:23 2020 +0100 allow compilation commit 1b91e1057cca564d6b021a579d97940a8f2b9328 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Wed Oct 21 14:12:05 2020 +0200 dont build keyboard commit cc8bad2ddd668d1397a9003a518699c3f706cca8 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Tue Oct 20 18:22:07 2020 +0200 kind of works commit ce3a9b6d96a1985ba5b9a2f17c15530cb8f93ca8 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Oct 19 11:22:55 2020 +0200 remove button and text field commit 2db3d11bdb8e69098c34c04a1341ea707ce1ed6a Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:31:26 2020 +0200 try lineedit commit d045c302dcec612c8d2ff14ba256af06c7df9ebb Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:01:18 2020 +0200 add dialog test button commit 21fa63e33b12b0bcdad441e778b2cf6c42b113e4 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:36:10 2020 +0200 Only show one if both 2.4 and 5 Ghz found commit dfb9ca4173adc05264663a3658298899eea2c619 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:24:16 2020 +0200 Sort networks by strength commit e57fe68f7972f955fc4da7054af676df8581b003 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:59:39 2020 +0200 Handle currently connected AP commit a5e80e122176f39a9bccfb8056b0886d210fdf24 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:38:18 2020 +0200 Add todo commit 98a1bc6e7a1f38b0ff7cb810b7d63a133552dfcc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:37:35 2020 +0200 Implement scan method commit 9a774a509b1665371d9fd51b40550ad2388d58bc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:29:03 2020 +0200 show list of wifi networks * add to settings * no wifi on pc * refactor get_property * refactor WiFi, split between UI and network manager stuff * renaming * refresh works * refactor * forgot to git add * connecting works again * print connection error on weird networks * extract adapter path * found networks * Deleting existing connections to SSID we are trying to connect to * have paths of active connections * mvp * fix review * qt wifi Squashed commit of the following: commit bec029c7b906c1df5324a8dbb0a58b8980c313ab Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 19:31:30 2020 +0100 try to collect security type commit e1e4d97f48a293392d33fe607936bbe94415c846 Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 16:06:55 2020 +0100 add a function for refresh commit 52bd7d0937040bd1d5c582f324fdb60f33677014 Author: grekiki <gregor1234567890@gmail.com> Date: Fri Oct 30 11:14:23 2020 +0100 allow compilation commit 1b91e1057cca564d6b021a579d97940a8f2b9328 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Wed Oct 21 14:12:05 2020 +0200 dont build keyboard commit cc8bad2ddd668d1397a9003a518699c3f706cca8 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Tue Oct 20 18:22:07 2020 +0200 kind of works commit ce3a9b6d96a1985ba5b9a2f17c15530cb8f93ca8 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Oct 19 11:22:55 2020 +0200 remove button and text field commit 2db3d11bdb8e69098c34c04a1341ea707ce1ed6a Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:31:26 2020 +0200 try lineedit commit d045c302dcec612c8d2ff14ba256af06c7df9ebb Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:01:18 2020 +0200 add dialog test button commit 21fa63e33b12b0bcdad441e778b2cf6c42b113e4 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:36:10 2020 +0200 Only show one if both 2.4 and 5 Ghz found commit dfb9ca4173adc05264663a3658298899eea2c619 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:24:16 2020 +0200 Sort networks by strength commit e57fe68f7972f955fc4da7054af676df8581b003 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:59:39 2020 +0200 Handle currently connected AP commit a5e80e122176f39a9bccfb8056b0886d210fdf24 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:38:18 2020 +0200 Add todo commit 98a1bc6e7a1f38b0ff7cb810b7d63a133552dfcc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:37:35 2020 +0200 Implement scan method commit 9a774a509b1665371d9fd51b40550ad2388d58bc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:29:03 2020 +0200 show list of wifi networks * add to settings * no wifi on pc * refactor get_property * refactor WiFi, split between UI and network manager stuff * renaming * refresh works * refactor * forgot to git add * connecting works again * print connection error on weird networks * extract adapter path * found networks * Deleting existing connections to SSID we are trying to connect to * have paths of active connections * mvp * fix review * fix bugs * fix text color * colors * wider button * show connected network first * fix sorting * remove hack * sorting * auto refresh * only refresh when widget is visible * scan once on startup * dont open dialog on qcom2 Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> Co-authored-by: Comma Device <device@comma.ai> Co-authored-by: grekiki <gregor1234567890@gmail.com>
2020-11-19 08:51:48 -07:00
#include "common/params.h"
2021-01-10 15:57:32 -07:00
#include "common/util.h"
2020-11-22 16:57:33 -07:00
#include "selfdrive/hardware/hw.h"
QFrame* horizontal_line(QWidget* parent = 0){
QFrame* line = new QFrame(parent);
line->setFrameShape(QFrame::StyledPanel);
line->setStyleSheet("margin-left: 40px; margin-right: 40px; border-width: 1px; border-bottom-style: solid; border-color: gray;");
line->setFixedHeight(2);
return line;
}
QWidget* labelWidget(QString labelName, QString labelContent){
QHBoxLayout* labelLayout = new QHBoxLayout;
labelLayout->addWidget(new QLabel(labelName), 0, Qt::AlignLeft);
QLabel* paramContent = new QLabel(labelContent);
paramContent->setStyleSheet("color: #aaaaaa");
labelLayout->addWidget(paramContent, 0, Qt::AlignRight);
QWidget* labelWidget = new QWidget;
labelWidget->setLayout(labelLayout);
return labelWidget;
}
2020-09-19 13:53:36 -06:00
ParamsToggle::ParamsToggle(QString param, QString title, QString description, QString icon_path, QWidget *parent): QFrame(parent) , param(param) {
QHBoxLayout *layout = new QHBoxLayout;
layout->setSpacing(50);
// Parameter image
if (icon_path.length()) {
2020-09-19 13:53:36 -06:00
QPixmap pix(icon_path);
QLabel *icon = new QLabel();
icon->setPixmap(pix.scaledToWidth(80, Qt::SmoothTransformation));
icon->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
layout->addWidget(icon);
} else {
layout->addSpacing(80);
}
// Name of the parameter
QLabel *label = new QLabel(title);
label->setStyleSheet(R"(font-size: 50px;)");
layout->addWidget(label);
// toggle switch
Toggle *toggle = new Toggle(this);
toggle->setFixedSize(150, 100);
layout->addWidget(toggle);
QObject::connect(toggle, SIGNAL(stateChanged(int)), this, SLOT(checkboxClicked(int)));
// set initial state from param
if (Params().read_db_bool(param.toStdString().c_str())) {
toggle->togglePosition();
}
setLayout(layout);
}
void ParamsToggle::checkboxClicked(int state) {
char value = state ? '1': '0';
Params().write_db_value(param.toStdString().c_str(), &value, 1);
}
2020-10-30 18:03:51 -06:00
QWidget * toggles_panel() {
QVBoxLayout *toggles_list = new QVBoxLayout();
toggles_list->setMargin(50);
2020-10-30 18:03:51 -06:00
toggles_list->addWidget(new ParamsToggle("OpenpilotEnabledToggle",
"Enable openpilot",
"Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off.",
"../assets/offroad/icon_openpilot.png"
));
toggles_list->addWidget(horizontal_line());
2020-10-30 18:03:51 -06:00
toggles_list->addWidget(new ParamsToggle("LaneChangeEnabled",
"Enable Lane Change Assist",
"Perform assisted lane changes with openpilot by checking your surroundings for safety, activating the turn signal and gently nudging the steering wheel towards your desired lane. openpilot is not capable of checking if a lane change is safe. You must continuously observe your surroundings to use this feature.",
"../assets/offroad/icon_road.png"
));
toggles_list->addWidget(horizontal_line());
2020-10-30 18:03:51 -06:00
toggles_list->addWidget(new ParamsToggle("IsLdwEnabled",
"Enable Lane Departure Warnings",
"Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31mph (50kph).",
"../assets/offroad/icon_warning.png"
));
toggles_list->addWidget(horizontal_line());
2020-10-30 18:03:51 -06:00
toggles_list->addWidget(new ParamsToggle("RecordFront",
"Record and Upload Driver Camera",
"Upload data from the driver facing camera and help improve the driver monitoring algorithm.",
"../assets/offroad/icon_network.png"
));
toggles_list->addWidget(horizontal_line());
2020-10-30 18:03:51 -06:00
toggles_list->addWidget(new ParamsToggle("IsRHD",
"Enable Right-Hand Drive",
"Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.",
"../assets/offroad/icon_openpilot_mirrored.png"
));
toggles_list->addWidget(horizontal_line());
2020-10-30 18:03:51 -06:00
toggles_list->addWidget(new ParamsToggle("IsMetric",
"Use Metric System",
"Display speed in km/h instead of mp/h.",
"../assets/offroad/icon_metric.png"
));
toggles_list->addWidget(horizontal_line());
2020-10-30 18:03:51 -06:00
toggles_list->addWidget(new ParamsToggle("CommunityFeaturesToggle",
"Enable Community Features",
"Use features from the open source community that are not maintained or supported by comma.ai and have not been confirmed to meet the standard safety model. These features include community supported cars and community supported hardware. Be extra cautious when using these features",
"../assets/offroad/icon_shell.png"
));
2020-10-30 18:03:51 -06:00
QWidget *widget = new QWidget;
widget->setLayout(toggles_list);
return widget;
}
QWidget * device_panel() {
2020-10-30 18:03:51 -06:00
QVBoxLayout *device_layout = new QVBoxLayout;
device_layout->setMargin(100);
device_layout->setSpacing(30);
2020-10-30 18:03:51 -06:00
Params params = Params();
std::vector<std::pair<std::string, std::string>> labels = {
{"Dongle ID", params.get("DongleId", false)},
};
// get serial number
//std::string cmdline = util::read_file("/proc/cmdline");
//auto delim = cmdline.find("serialno=");
//if (delim != std::string::npos) {
// labels.push_back({"Serial", cmdline.substr(delim, cmdline.find(" ", delim))});
//}
for (auto &l : labels) {
2021-01-27 04:07:17 -07:00
device_layout->addWidget(labelWidget(QString::fromStdString(l.first), QString::fromStdString(l.second)), 0, Qt::AlignTop);
2020-10-30 18:03:51 -06:00
}
QPushButton* dcam_view = new QPushButton("Driver camera view");
device_layout->addWidget(dcam_view, 0, Qt::AlignBottom);
device_layout->addWidget(horizontal_line(), Qt::AlignBottom);
QObject::connect(dcam_view, &QPushButton::released, [=]() {
Params().write_db_value("IsDriverViewEnabled", "1", 1);
});
// TODO: show current calibration values
2020-10-30 18:03:51 -06:00
QPushButton *clear_cal_btn = new QPushButton("Reset Calibration");
device_layout->addWidget(clear_cal_btn, 0, Qt::AlignBottom);
device_layout->addWidget(horizontal_line(), Qt::AlignBottom);
QObject::connect(clear_cal_btn, &QPushButton::released, [=]() {
if (ConfirmationDialog::confirm("Are you sure you want to reset calibration?")) {
Params().delete_db_value("CalibrationParams");
}
});
2020-10-30 18:03:51 -06:00
// power buttons
QPushButton *poweroff_btn = new QPushButton("Power Off");
device_layout->addWidget(poweroff_btn, Qt::AlignBottom);
QObject::connect(poweroff_btn, &QPushButton::released, [=]() {
if (ConfirmationDialog::confirm("Are you sure you want to power off?")) {
Hardware::poweroff();
}
});
device_layout->addWidget(horizontal_line(), Qt::AlignBottom);
QPushButton *reboot_btn = new QPushButton("Reboot");
device_layout->addWidget(reboot_btn, Qt::AlignBottom);
QObject::connect(reboot_btn, &QPushButton::released, [=]() {
if (ConfirmationDialog::confirm("Are you sure you want to reboot?")) {
Hardware::reboot();
}
});
QPushButton *uninstall_btn = new QPushButton("Uninstall openpilot");
device_layout->addWidget(uninstall_btn);
QObject::connect(uninstall_btn, &QPushButton::released, [=]() {
if (ConfirmationDialog::confirm("Are you sure you want to uninstall?")) {
Params().write_db_value("DoUninstall", "1");
}
});
2020-10-30 18:03:51 -06:00
QWidget *widget = new QWidget;
widget->setLayout(device_layout);
widget->setStyleSheet(R"(
QPushButton {
padding: 0;
height: 120px;
border-radius: 15px;
background-color: #393939;
2020-10-30 18:03:51 -06:00
}
)");
return widget;
}
2020-10-22 09:11:52 -06:00
2020-10-30 18:03:51 -06:00
QWidget * developer_panel() {
QVBoxLayout *main_layout = new QVBoxLayout;
main_layout->setMargin(100);
2020-10-30 18:03:51 -06:00
Params params = Params();
std::string brand = params.read_db_bool("Passive") ? "dashcam" : "openpilot";
std::vector<std::pair<std::string, std::string>> labels = {
2020-10-31 21:24:05 -06:00
{"Version", brand + " v" + params.get("Version", false)},
2020-10-30 18:03:51 -06:00
{"Git Branch", params.get("GitBranch", false)},
2020-10-31 21:24:05 -06:00
{"Git Commit", params.get("GitCommit", false).substr(0, 10)},
2020-10-30 18:03:51 -06:00
{"Panda Firmware", params.get("PandaFirmwareHex", false)},
{"OS Version", Hardware::get_os_version()},
2020-10-30 18:03:51 -06:00
};
for (int i = 0; i < labels.size(); i++) {
auto l = labels[i];
2021-01-27 04:07:17 -07:00
main_layout->addWidget(labelWidget(QString::fromStdString(l.first), QString::fromStdString(l.second)));
if(i+1 < labels.size()) {
main_layout->addWidget(horizontal_line());
}
2020-10-30 18:03:51 -06:00
}
QWidget *widget = new QWidget;
widget->setLayout(main_layout);
widget->setStyleSheet(R"(
QLabel {
font-size: 50px;
}
)");
2020-10-30 18:03:51 -06:00
return widget;
}
QWidget * network_panel(QWidget * parent) {
#ifdef QCOM
QVBoxLayout *layout = new QVBoxLayout;
layout->setMargin(100);
layout->setSpacing(30);
// TODO: can probably use the ndk for this
// simple wifi + tethering buttons
std::vector<std::pair<const char*, const char*>> btns = {
{"Open WiFi Settings", "am start -n com.android.settings/.wifi.WifiPickerActivity \
-a android.net.wifi.PICK_WIFI_NETWORK \
--ez extra_prefs_show_button_bar true \
--es extra_prefs_set_next_text ''"},
{"Open Tethering Settings", "am start -n com.android.settings/.TetherSettings \
--ez extra_prefs_show_button_bar true \
--es extra_prefs_set_next_text ''"},
};
for (auto &b : btns) {
QPushButton *btn = new QPushButton(b.first);
layout->addWidget(btn, 0, Qt::AlignTop);
QObject::connect(btn, &QPushButton::released, [=]() { std::system(b.second); });
}
layout->addStretch(1);
QWidget *w = new QWidget;
w->setLayout(layout);
w->setStyleSheet(R"(
QPushButton {
padding: 0;
height: 120px;
border-radius: 15px;
background-color: #393939;
}
)");
#else
Networking *w = new Networking(parent);
#endif
return w;
QT UI: Wifi chooser (#2062) * qt wifi Squashed commit of the following: commit bec029c7b906c1df5324a8dbb0a58b8980c313ab Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 19:31:30 2020 +0100 try to collect security type commit e1e4d97f48a293392d33fe607936bbe94415c846 Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 16:06:55 2020 +0100 add a function for refresh commit 52bd7d0937040bd1d5c582f324fdb60f33677014 Author: grekiki <gregor1234567890@gmail.com> Date: Fri Oct 30 11:14:23 2020 +0100 allow compilation commit 1b91e1057cca564d6b021a579d97940a8f2b9328 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Wed Oct 21 14:12:05 2020 +0200 dont build keyboard commit cc8bad2ddd668d1397a9003a518699c3f706cca8 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Tue Oct 20 18:22:07 2020 +0200 kind of works commit ce3a9b6d96a1985ba5b9a2f17c15530cb8f93ca8 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Oct 19 11:22:55 2020 +0200 remove button and text field commit 2db3d11bdb8e69098c34c04a1341ea707ce1ed6a Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:31:26 2020 +0200 try lineedit commit d045c302dcec612c8d2ff14ba256af06c7df9ebb Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:01:18 2020 +0200 add dialog test button commit 21fa63e33b12b0bcdad441e778b2cf6c42b113e4 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:36:10 2020 +0200 Only show one if both 2.4 and 5 Ghz found commit dfb9ca4173adc05264663a3658298899eea2c619 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:24:16 2020 +0200 Sort networks by strength commit e57fe68f7972f955fc4da7054af676df8581b003 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:59:39 2020 +0200 Handle currently connected AP commit a5e80e122176f39a9bccfb8056b0886d210fdf24 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:38:18 2020 +0200 Add todo commit 98a1bc6e7a1f38b0ff7cb810b7d63a133552dfcc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:37:35 2020 +0200 Implement scan method commit 9a774a509b1665371d9fd51b40550ad2388d58bc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:29:03 2020 +0200 show list of wifi networks * add to settings * no wifi on pc * refactor get_property * refactor WiFi, split between UI and network manager stuff * renaming * refresh works * refactor * forgot to git add * connecting works again * print connection error on weird networks * extract adapter path * found networks * Deleting existing connections to SSID we are trying to connect to * have paths of active connections * mvp * fix review * qt wifi Squashed commit of the following: commit bec029c7b906c1df5324a8dbb0a58b8980c313ab Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 19:31:30 2020 +0100 try to collect security type commit e1e4d97f48a293392d33fe607936bbe94415c846 Author: grekiki <gregor1234567890@gmail.com> Date: Mon Nov 2 16:06:55 2020 +0100 add a function for refresh commit 52bd7d0937040bd1d5c582f324fdb60f33677014 Author: grekiki <gregor1234567890@gmail.com> Date: Fri Oct 30 11:14:23 2020 +0100 allow compilation commit 1b91e1057cca564d6b021a579d97940a8f2b9328 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Wed Oct 21 14:12:05 2020 +0200 dont build keyboard commit cc8bad2ddd668d1397a9003a518699c3f706cca8 Author: Gregor Kikelj <gregor1234567890@gmail.com> Date: Tue Oct 20 18:22:07 2020 +0200 kind of works commit ce3a9b6d96a1985ba5b9a2f17c15530cb8f93ca8 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Oct 19 11:22:55 2020 +0200 remove button and text field commit 2db3d11bdb8e69098c34c04a1341ea707ce1ed6a Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:31:26 2020 +0200 try lineedit commit d045c302dcec612c8d2ff14ba256af06c7df9ebb Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 15:01:18 2020 +0200 add dialog test button commit 21fa63e33b12b0bcdad441e778b2cf6c42b113e4 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:36:10 2020 +0200 Only show one if both 2.4 and 5 Ghz found commit dfb9ca4173adc05264663a3658298899eea2c619 Author: Willem Melching <willem.melching@gmail.com> Date: Mon Aug 24 12:24:16 2020 +0200 Sort networks by strength commit e57fe68f7972f955fc4da7054af676df8581b003 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:59:39 2020 +0200 Handle currently connected AP commit a5e80e122176f39a9bccfb8056b0886d210fdf24 Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:38:18 2020 +0200 Add todo commit 98a1bc6e7a1f38b0ff7cb810b7d63a133552dfcc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:37:35 2020 +0200 Implement scan method commit 9a774a509b1665371d9fd51b40550ad2388d58bc Author: Willem Melching <willem.melching@gmail.com> Date: Sun Aug 23 13:29:03 2020 +0200 show list of wifi networks * add to settings * no wifi on pc * refactor get_property * refactor WiFi, split between UI and network manager stuff * renaming * refresh works * refactor * forgot to git add * connecting works again * print connection error on weird networks * extract adapter path * found networks * Deleting existing connections to SSID we are trying to connect to * have paths of active connections * mvp * fix review * fix bugs * fix text color * colors * wider button * show connected network first * fix sorting * remove hack * sorting * auto refresh * only refresh when widget is visible * scan once on startup * dont open dialog on qcom2 Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> Co-authored-by: Comma Device <device@comma.ai> Co-authored-by: grekiki <gregor1234567890@gmail.com>
2020-11-19 08:51:48 -07:00
}
2020-10-30 18:03:51 -06:00
void SettingsWindow::setActivePanel() {
auto *btn = qobject_cast<QPushButton *>(nav_btns->checkedButton());
2020-10-30 18:03:51 -06:00
panel_layout->setCurrentWidget(panels[btn->text()]);
}
SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) {
// setup two main layouts
2020-10-30 18:03:51 -06:00
QVBoxLayout *sidebar_layout = new QVBoxLayout();
sidebar_layout->setMargin(0);
2020-10-30 18:03:51 -06:00
panel_layout = new QStackedLayout();
// close button
QPushButton *close_btn = new QPushButton("X");
close_btn->setStyleSheet(R"(
2020-12-30 11:08:18 -07:00
font-size: 90px;
font-weight: bold;
border 1px grey solid;
2021-01-04 03:28:28 -07:00
border-radius: 100px;
2020-12-30 11:08:18 -07:00
background-color: #292929;
2020-10-30 21:05:56 -06:00
)");
2021-01-04 03:28:28 -07:00
close_btn->setFixedSize(200, 200);
sidebar_layout->addSpacing(45);
sidebar_layout->addWidget(close_btn, 0, Qt::AlignCenter);
QObject::connect(close_btn, SIGNAL(released()), this, SIGNAL(closeSettings()));
2020-10-30 18:03:51 -06:00
// setup panels
panels = {
{"Developer", developer_panel()},
{"Device", device_panel()},
{"Network", network_panel(this)},
{"Toggles", toggles_panel()},
2020-10-30 18:03:51 -06:00
};
sidebar_layout->addSpacing(45);
nav_btns = new QButtonGroup();
2020-10-30 18:03:51 -06:00
for (auto &panel : panels) {
QPushButton *btn = new QPushButton(panel.first);
btn->setCheckable(true);
2020-10-30 18:03:51 -06:00
btn->setStyleSheet(R"(
2021-02-05 18:50:19 -07:00
* {
color: grey;
2020-10-30 18:03:51 -06:00
border: none;
background: none;
font-size: 65px;
font-weight: 500;
padding-top: 35px;
padding-bottom: 35px;
}
QPushButton:checked {
color: white;
2020-10-30 18:03:51 -06:00
}
)");
nav_btns->addButton(btn);
sidebar_layout->addWidget(btn, 0, Qt::AlignRight);
2020-10-30 18:03:51 -06:00
panel_layout->addWidget(panel.second);
QObject::connect(btn, SIGNAL(released()), this, SLOT(setActivePanel()));
QObject::connect(btn, &QPushButton::released, [=](){emit sidebarPressed();});
2020-10-30 18:03:51 -06:00
}
qobject_cast<QPushButton *>(nav_btns->buttons()[0])->setChecked(true);
sidebar_layout->setContentsMargins(50, 50, 100, 50);
// main settings layout, sidebar + main panel
2020-10-30 18:03:51 -06:00
QHBoxLayout *settings_layout = new QHBoxLayout();
sidebar_widget = new QWidget;
sidebar_widget->setLayout(sidebar_layout);
sidebar_widget->setFixedWidth(500);
settings_layout->addWidget(sidebar_widget);
panel_frame = new QFrame;
panel_frame->setLayout(panel_layout);
panel_frame->setStyleSheet(R"(
QFrame {
border-radius: 30px;
background-color: #292929;
}
* {
background-color: none;
}
)");
settings_layout->addWidget(panel_frame);
2020-10-30 18:03:51 -06:00
setLayout(settings_layout);
setStyleSheet(R"(
2020-08-20 13:37:28 -06:00
* {
color: white;
2020-10-30 18:03:51 -06:00
font-size: 50px;
2020-08-20 13:37:28 -06:00
}
SettingsWindow {
background-color: black;
}
)");
}