UI style improvements with improved keyboard (#2710)

* fix spaces and make spacebar dynamically sized

* some spaces and a comment

* more spaces

* const

Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 3e466aa528
commatwo_master
grekiki 4 years ago committed by GitHub
parent 0b60b8eb1b
commit 2e07e45bed
  1. 2
      selfdrive/common/params.cc
  2. 2
      selfdrive/ui/android/ui.cc
  3. 8
      selfdrive/ui/paint.cc
  4. 24
      selfdrive/ui/qt/home.cc
  5. 8
      selfdrive/ui/qt/offroad/settings.cc
  6. 34
      selfdrive/ui/qt/offroad/wifi.cc
  7. 86
      selfdrive/ui/qt/offroad/wifiManager.cc
  8. 16
      selfdrive/ui/qt/setup/installer.cc
  9. 4
      selfdrive/ui/qt/setup/setup.cc
  10. 8
      selfdrive/ui/qt/widgets/input_field.cc
  11. 39
      selfdrive/ui/qt/widgets/keyboard.cc
  12. 14
      selfdrive/ui/qt/widgets/offroad_alerts.cc
  13. 2
      selfdrive/ui/ui.cc

@ -25,7 +25,7 @@ std::string getenv_default(const char* env_var, const char * suffix, const char*
const char* env_val = getenv(env_var); const char* env_val = getenv(env_var);
if (env_val != NULL){ if (env_val != NULL){
return std::string(env_val) + std::string(suffix); return std::string(env_val) + std::string(suffix);
} else{ } else {
return std::string(default_val); return std::string(default_val);
} }
} }

@ -134,7 +134,7 @@ int main(int argc, char* argv[]) {
float brightness_b = 0, brightness_m = 0; float brightness_b = 0, brightness_m = 0;
int result = read_param(&brightness_b, "BRIGHTNESS_B", true); int result = read_param(&brightness_b, "BRIGHTNESS_B", true);
result += read_param(&brightness_m, "BRIGHTNESS_M", true); result += read_param(&brightness_m, "BRIGHTNESS_M", true);
if(result != 0) { if (result != 0) {
brightness_b = LEON ? 10.0 : 5.0; brightness_b = LEON ? 10.0 : 5.0;
brightness_m = LEON ? 2.6 : 1.3; brightness_m = LEON ? 2.6 : 1.3;
write_param_float(brightness_b, "BRIGHTNESS_B", true); write_param_float(brightness_b, "BRIGHTNESS_B", true);

@ -153,7 +153,7 @@ static void update_track_data(UIState *s, const cereal::ModelDataV2::XYZTData::R
const float off = 0.5; const float off = 0.5;
int max_idx = 0; int max_idx = 0;
float lead_d; float lead_d;
if(s->sm->updated("radarState")) { if (s->sm->updated("radarState")) {
lead_d = scene->lead_data[0].getDRel()*2.; lead_d = scene->lead_data[0].getDRel()*2.;
} else { } else {
lead_d = MAX_DRAW_DISTANCE; lead_d = MAX_DRAW_DISTANCE;
@ -230,7 +230,7 @@ static void ui_draw_vision_lane_lines(UIState *s) {
// paint lanelines // paint lanelines
line_vertices_data *pvd_ll = &s->lane_line_vertices[0]; line_vertices_data *pvd_ll = &s->lane_line_vertices[0];
for (int ll_idx = 0; ll_idx < 4; ll_idx++) { for (int ll_idx = 0; ll_idx < 4; ll_idx++) {
if(s->sm->updated("modelV2")) { if (s->sm->updated("modelV2")) {
update_line_data(s, scene->model.getLaneLines()[ll_idx], 0.025*scene->model.getLaneLineProbs()[ll_idx], pvd_ll + ll_idx, scene->max_distance); update_line_data(s, scene->model.getLaneLines()[ll_idx], 0.025*scene->model.getLaneLineProbs()[ll_idx], pvd_ll + ll_idx, scene->max_distance);
} }
NVGcolor color = nvgRGBAf(1.0, 1.0, 1.0, scene->lane_line_probs[ll_idx]); NVGcolor color = nvgRGBAf(1.0, 1.0, 1.0, scene->lane_line_probs[ll_idx]);
@ -240,7 +240,7 @@ static void ui_draw_vision_lane_lines(UIState *s) {
// paint road edges // paint road edges
line_vertices_data *pvd_re = &s->road_edge_vertices[0]; line_vertices_data *pvd_re = &s->road_edge_vertices[0];
for (int re_idx = 0; re_idx < 2; re_idx++) { for (int re_idx = 0; re_idx < 2; re_idx++) {
if(s->sm->updated("modelV2")) { if (s->sm->updated("modelV2")) {
update_line_data(s, scene->model.getRoadEdges()[re_idx], 0.025, pvd_re + re_idx, scene->max_distance); update_line_data(s, scene->model.getRoadEdges()[re_idx], 0.025, pvd_re + re_idx, scene->max_distance);
} }
NVGcolor color = nvgRGBAf(1.0, 0.0, 0.0, std::clamp<float>(1.0-scene->road_edge_stds[re_idx], 0.0, 1.0)); NVGcolor color = nvgRGBAf(1.0, 0.0, 0.0, std::clamp<float>(1.0-scene->road_edge_stds[re_idx], 0.0, 1.0));
@ -248,7 +248,7 @@ static void ui_draw_vision_lane_lines(UIState *s) {
} }
// paint path // paint path
if(s->sm->updated("modelV2")) { if (s->sm->updated("modelV2")) {
update_track_data(s, scene->model.getPosition(), &s->track_vertices); update_track_data(s, scene->model.getPosition(), &s->track_vertices);
} }
ui_draw_track(s, &s->track_vertices); ui_draw_track(s, &s->track_vertices);

@ -85,12 +85,12 @@ void OffroadHome::refresh() {
// update alerts // update alerts
alerts_widget->refresh(); alerts_widget->refresh();
if (!alerts_widget->alerts.size() && !alerts_widget->updateAvailable){ if (!alerts_widget->alerts.size() && !alerts_widget->updateAvailable) {
alert_notification->setVisible(false); alert_notification->setVisible(false);
return; return;
} }
if (alerts_widget->updateAvailable){ if (alerts_widget->updateAvailable) {
// There is a new release // There is a new release
alert_notification->setText("UPDATE"); alert_notification->setText("UPDATE");
} else { } else {
@ -148,7 +148,7 @@ void HomeWindow::mousePressEvent(QMouseEvent *e) {
} }
// Vision click // Vision click
if (ui_state->started && (e->x() >= ui_state->scene.viz_rect.x - bdr_s)){ if (ui_state->started && (e->x() >= ui_state->scene.viz_rect.x - bdr_s)) {
ui_state->scene.uilayout_sidebarcollapsed = !ui_state->scene.uilayout_sidebarcollapsed; ui_state->scene.uilayout_sidebarcollapsed = !ui_state->scene.uilayout_sidebarcollapsed;
} }
} }
@ -161,14 +161,14 @@ static void handle_display_state(UIState *s, int dt, bool user_input) {
if (user_input || s->ignition || s->started) { if (user_input || s->ignition || s->started) {
s->awake = true; s->awake = true;
awake_timeout = 30*UI_FREQ; awake_timeout = 30*UI_FREQ;
} else if (awake_timeout == 0){ } else if (awake_timeout == 0) {
s->awake = false; s->awake = false;
} }
} }
static void set_backlight(int brightness){ static void set_backlight(int brightness) {
std::ofstream brightness_control("/sys/class/backlight/panel0-backlight/brightness"); std::ofstream brightness_control("/sys/class/backlight/panel0-backlight/brightness");
if (brightness_control.is_open()){ if (brightness_control.is_open()) {
brightness_control << brightness << "\n"; brightness_control << brightness << "\n";
brightness_control.close(); brightness_control.close();
} }
@ -184,7 +184,7 @@ GLWindow::GLWindow(QWidget *parent) : QOpenGLWidget(parent) {
int result = read_param(&brightness_b, "BRIGHTNESS_B", true); int result = read_param(&brightness_b, "BRIGHTNESS_B", true);
result += read_param(&brightness_m, "BRIGHTNESS_M", true); result += read_param(&brightness_m, "BRIGHTNESS_M", true);
if(result != 0) { if (result != 0) {
brightness_b = 200.0; brightness_b = 200.0;
brightness_m = 10.0; brightness_m = 10.0;
} }
@ -215,7 +215,7 @@ void GLWindow::initializeGL() {
backlight_timer->start(BACKLIGHT_DT * 100); backlight_timer->start(BACKLIGHT_DT * 100);
} }
void GLWindow::backlightUpdate(){ void GLWindow::backlightUpdate() {
// Update brightness // Update brightness
float k = (BACKLIGHT_DT / BACKLIGHT_TS) / (1.0f + BACKLIGHT_DT / BACKLIGHT_TS); float k = (BACKLIGHT_DT / BACKLIGHT_TS) / (1.0f + BACKLIGHT_DT / BACKLIGHT_TS);
@ -223,7 +223,7 @@ void GLWindow::backlightUpdate(){
smooth_brightness = clipped_brightness * k + smooth_brightness * (1.0f - k); smooth_brightness = clipped_brightness * k + smooth_brightness * (1.0f - k);
int brightness = smooth_brightness; int brightness = smooth_brightness;
if (!ui_state->awake){ if (!ui_state->awake) {
brightness = 0; brightness = 0;
} }
@ -231,7 +231,7 @@ void GLWindow::backlightUpdate(){
} }
void GLWindow::timerUpdate() { void GLWindow::timerUpdate() {
if (ui_state->started != onroad){ if (ui_state->started != onroad) {
onroad = ui_state->started; onroad = ui_state->started;
emit offroadTransition(!onroad); emit offroadTransition(!onroad);
#ifdef QCOM2 #ifdef QCOM2
@ -255,9 +255,9 @@ void GLWindow::paintGL() {
ui_draw(ui_state); ui_draw(ui_state);
} }
void GLWindow::wake(){ void GLWindow::wake() {
// UI state might not be initialized yet // UI state might not be initialized yet
if (ui_state != nullptr){ if (ui_state != nullptr) {
handle_display_state(ui_state, 1, true); handle_display_state(ui_state, 1, true);
} }
} }

@ -24,13 +24,13 @@ ParamsToggle::ParamsToggle(QString param, QString title, QString description, QS
// Parameter image // Parameter image
hlayout->addSpacing(25); hlayout->addSpacing(25);
if (icon_path.length()){ if (icon_path.length()) {
QPixmap pix(icon_path); QPixmap pix(icon_path);
QLabel *icon = new QLabel(); QLabel *icon = new QLabel();
icon->setPixmap(pix.scaledToWidth(100, Qt::SmoothTransformation)); icon->setPixmap(pix.scaledToWidth(100, Qt::SmoothTransformation));
icon->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); icon->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
hlayout->addWidget(icon); hlayout->addWidget(icon);
} else{ } else {
hlayout->addSpacing(100); hlayout->addSpacing(100);
} }
hlayout->addSpacing(25); hlayout->addSpacing(25);
@ -50,7 +50,7 @@ ParamsToggle::ParamsToggle(QString param, QString title, QString description, QS
hlayout->addSpacing(20); hlayout->addSpacing(20);
setLayout(hlayout); setLayout(hlayout);
if(Params().read_db_bool(param.toStdString().c_str())){ if (Params().read_db_bool(param.toStdString().c_str())) {
toggle_switch->togglePosition(); toggle_switch->togglePosition();
} }
@ -66,7 +66,7 @@ ParamsToggle::ParamsToggle(QString param, QString title, QString description, QS
QObject::connect(toggle_switch, SIGNAL(stateChanged(int)), this, SLOT(checkboxClicked(int))); QObject::connect(toggle_switch, SIGNAL(stateChanged(int)), this, SLOT(checkboxClicked(int)));
} }
void ParamsToggle::checkboxClicked(int state){ void ParamsToggle::checkboxClicked(int state) {
char value = state ? '1': '0'; char value = state ? '1': '0';
Params().write_db_value(param.toStdString().c_str(), &value, 1); Params().write_db_value(param.toStdString().c_str(), &value, 1);
} }

@ -10,7 +10,7 @@
void clearLayout(QLayout* layout) { void clearLayout(QLayout* layout) {
while (QLayoutItem* item = layout->takeAt(0)) { while (QLayoutItem* item = layout->takeAt(0)) {
if (QWidget* widget = item->widget()){ if (QWidget* widget = item->widget()) {
widget->deleteLater(); widget->deleteLater();
} }
if (QLayout* childLayout = item->layout()) { if (QLayout* childLayout = item->layout()) {
@ -37,7 +37,7 @@ WifiUI::WifiUI(QWidget *parent, int page_length) : QWidget(parent), networks_per
Toggle* toggle_switch = new Toggle(this); Toggle* toggle_switch = new Toggle(this);
toggle_switch->setFixedSize(150, 100); toggle_switch->setFixedSize(150, 100);
tethering_field->addWidget(toggle_switch); tethering_field->addWidget(toggle_switch);
if (wifi->tetheringEnabled()){ if (wifi->tetheringEnabled()) {
toggle_switch->togglePosition(); toggle_switch->togglePosition();
} }
QObject::connect(toggle_switch, SIGNAL(stateChanged(int)), this, SLOT(toggleTethering(int))); QObject::connect(toggle_switch, SIGNAL(stateChanged(int)), this, SLOT(toggleTethering(int)));
@ -97,9 +97,9 @@ void WifiUI::refresh() {
int i = 0; int i = 0;
int countWidgets = 0; int countWidgets = 0;
int button_height = static_cast<int>(this->height() / (networks_per_page + 1) * 0.6); int button_height = static_cast<int>(this->height() / (networks_per_page + 1) * 0.6);
for (Network &network : wifi->seen_networks){ for (Network &network : wifi->seen_networks) {
QHBoxLayout *hlayout = new QHBoxLayout; QHBoxLayout *hlayout = new QHBoxLayout;
if(page * networks_per_page <= i && i < (page + 1) * networks_per_page){ if (page * networks_per_page <= i && i < (page + 1) * networks_per_page) {
// SSID // SSID
hlayout->addSpacing(50); hlayout->addSpacing(50);
hlayout->addWidget(new QLabel(QString::fromUtf8(network.ssid))); hlayout->addWidget(new QLabel(QString::fromUtf8(network.ssid)));
@ -148,7 +148,7 @@ void WifiUI::refresh() {
} }
// Pad vlayout to prevert oversized network widgets in case of low visible network count // Pad vlayout to prevert oversized network widgets in case of low visible network count
for(int i = countWidgets; i < networks_per_page; i++) { for (int i = countWidgets; i < networks_per_page; i++) {
QWidget *w = new QWidget; QWidget *w = new QWidget;
vlayout->addWidget(w); vlayout->addWidget(w);
} }
@ -187,10 +187,10 @@ void WifiUI::refresh() {
void WifiUI::toggleTethering(int enable){ void WifiUI::toggleTethering(int enable) {
if(enable){ if (enable) {
wifi->enableTethering(); wifi->enableTethering();
}else{ } else {
wifi->disableTethering(); wifi->disableTethering();
} }
} }
@ -201,14 +201,14 @@ void WifiUI::handleButton(QAbstractButton* button) {
connectToNetwork(n); connectToNetwork(n);
} }
void WifiUI::connectToNetwork(Network n){ void WifiUI::connectToNetwork(Network n) {
timer->stop(); timer->stop();
if(n.security_type == SecurityType::OPEN){ if (n.security_type == SecurityType::OPEN) {
wifi->connect(n); wifi->connect(n);
} else if (n.security_type == SecurityType::WPA){ } else if (n.security_type == SecurityType::WPA) {
input_field->setPromptText("Enter password for \"" + n.ssid + "\""); input_field->setPromptText("Enter password for \"" + n.ssid + "\"");
QString password = getStringFromUser(); QString password = getStringFromUser();
if(password.size()){ if (password.size()) {
wifi->connect(n, password); wifi->connect(n, password);
} }
} }
@ -216,7 +216,7 @@ void WifiUI::connectToNetwork(Network n){
timer->start(); timer->start();
} }
QString WifiUI::getStringFromUser(){ QString WifiUI::getStringFromUser() {
emit openKeyboard(); emit openKeyboard();
swidget->setCurrentIndex(1); swidget->setCurrentIndex(1);
loop.exec(); loop.exec();
@ -231,12 +231,12 @@ void WifiUI::receiveText(QString t) {
} }
void WifiUI::wrongPassword(QString ssid){ void WifiUI::wrongPassword(QString ssid) {
if(loop.isRunning()){ if (loop.isRunning()) {
return; return;
} }
for(Network n : wifi->seen_networks){ for (Network n : wifi->seen_networks) {
if(n.ssid == ssid){ if (n.ssid == ssid) {
input_field->setPromptText("Wrong password for \"" + n.ssid +"\""); input_field->setPromptText("Wrong password for \"" + n.ssid +"\"");
connectToNetwork(n); connectToNetwork(n);
} }

@ -40,14 +40,14 @@ const int state_need_auth = 60;
const int reason_wrong_password = 8; const int reason_wrong_password = 8;
template <typename T> template <typename T>
T get_response(QDBusMessage response){ T get_response(QDBusMessage response) {
QVariant first = response.arguments().at(0); QVariant first = response.arguments().at(0);
QDBusVariant dbvFirst = first.value<QDBusVariant>(); QDBusVariant dbvFirst = first.value<QDBusVariant>();
QVariant vFirst = dbvFirst.variant(); QVariant vFirst = dbvFirst.variant();
return vFirst.value<T>(); return vFirst.value<T>();
} }
bool compare_by_strength(const Network &a, const Network &b){ bool compare_by_strength(const Network &a, const Network &b) {
if (a.connected == ConnectedType::CONNECTED) return true; if (a.connected == ConnectedType::CONNECTED) return true;
if (b.connected == ConnectedType::CONNECTED) return false; if (b.connected == ConnectedType::CONNECTED) return false;
if (a.connected == ConnectedType::CONNECTING) return true; if (a.connected == ConnectedType::CONNECTING) return true;
@ -56,13 +56,13 @@ bool compare_by_strength(const Network &a, const Network &b){
} }
WifiManager::WifiManager(){ WifiManager::WifiManager() {
qDBusRegisterMetaType<Connection>(); qDBusRegisterMetaType<Connection>();
qDBusRegisterMetaType<IpConfig>(); qDBusRegisterMetaType<IpConfig>();
connecting_to_network = ""; connecting_to_network = "";
adapter = get_adapter(); adapter = get_adapter();
has_adapter = adapter != ""; has_adapter = adapter != "";
if (has_adapter){ if (has_adapter) {
QDBusInterface nm(nm_service, adapter, device_iface, bus); QDBusInterface nm(nm_service, adapter, device_iface, bus);
bus.connect(nm_service, adapter, device_iface, "StateChanged", this, SLOT(change(unsigned int, unsigned int, unsigned int))); bus.connect(nm_service, adapter, device_iface, "StateChanged", this, SLOT(change(unsigned int, unsigned int, unsigned int)));
@ -75,20 +75,20 @@ WifiManager::WifiManager(){
// Compute tethering ssid as "Weedle" + first 4 characters of a dongle id // Compute tethering ssid as "Weedle" + first 4 characters of a dongle id
tethering_ssid = "weedle"; tethering_ssid = "weedle";
std::string bytes = Params().get("DongleId"); std::string bytes = Params().get("DongleId");
if (bytes.length() >= 4){ if (bytes.length() >= 4) {
tethering_ssid+="-"+QString::fromStdString(bytes.substr(0,4)); tethering_ssid+="-"+QString::fromStdString(bytes.substr(0,4));
} }
} }
void WifiManager::refreshNetworks(){ void WifiManager::refreshNetworks() {
if (!has_adapter) return; if (!has_adapter) return;
bus = QDBusConnection::systemBus(); bus = QDBusConnection::systemBus();
seen_networks.clear(); seen_networks.clear();
seen_ssids.clear(); seen_ssids.clear();
for (Network &network : get_networks()){ for (Network &network : get_networks()) {
if (seen_ssids.count(network.ssid)){ if (seen_ssids.count(network.ssid)) {
continue; continue;
} }
seen_ssids.push_back(network.ssid); seen_ssids.push_back(network.ssid);
@ -96,7 +96,7 @@ void WifiManager::refreshNetworks(){
} }
} }
QList<Network> WifiManager::get_networks(){ QList<Network> WifiManager::get_networks() {
QList<Network> r; QList<Network> r;
QDBusInterface nm(nm_service, adapter, wireless_device_iface, bus); QDBusInterface nm(nm_service, adapter, wireless_device_iface, bus);
QDBusMessage response = nm.call("GetAllAccessPoints"); QDBusMessage response = nm.call("GetAllAccessPoints");
@ -113,18 +113,18 @@ QList<Network> WifiManager::get_networks(){
unsigned int strength = get_ap_strength(path.path()); unsigned int strength = get_ap_strength(path.path());
SecurityType security = getSecurityType(path.path()); SecurityType security = getSecurityType(path.path());
ConnectedType ctype; ConnectedType ctype;
if (path.path() != active_ap){ if (path.path() != active_ap) {
ctype = ConnectedType::DISCONNECTED; ctype = ConnectedType::DISCONNECTED;
}else { } else {
if (ssid == connecting_to_network){ if (ssid == connecting_to_network) {
ctype = ConnectedType::CONNECTING; ctype = ConnectedType::CONNECTING;
}else { } else {
ctype = ConnectedType::CONNECTED; ctype = ConnectedType::CONNECTED;
} }
} }
Network network = {path.path(), ssid, strength, ctype, security}; Network network = {path.path(), ssid, strength, ctype, security};
if (ssid.length()){ if (ssid.length()) {
r.push_back(network); r.push_back(network);
} }
} }
@ -134,7 +134,7 @@ QList<Network> WifiManager::get_networks(){
return r; return r;
} }
SecurityType WifiManager::getSecurityType(QString path){ SecurityType WifiManager::getSecurityType(QString path) {
int sflag = get_property(path, "Flags").toInt(); int sflag = get_property(path, "Flags").toInt();
int wpaflag = get_property(path, "WpaFlags").toInt(); int wpaflag = get_property(path, "WpaFlags").toInt();
int rsnflag = get_property(path, "RsnFlags").toInt(); int rsnflag = get_property(path, "RsnFlags").toInt();
@ -143,7 +143,7 @@ SecurityType WifiManager::getSecurityType(QString path){
// obtained by looking at flags of networks in the office as reported by an Android phone // obtained by looking at flags of networks in the office as reported by an Android phone
const int supports_wpa = NM_802_11_AP_SEC_PAIR_WEP40 | NM_802_11_AP_SEC_PAIR_WEP104 | NM_802_11_AP_SEC_GROUP_WEP40 | NM_802_11_AP_SEC_GROUP_WEP104 | NM_802_11_AP_SEC_KEY_MGMT_PSK; const int supports_wpa = NM_802_11_AP_SEC_PAIR_WEP40 | NM_802_11_AP_SEC_PAIR_WEP104 | NM_802_11_AP_SEC_GROUP_WEP40 | NM_802_11_AP_SEC_GROUP_WEP104 | NM_802_11_AP_SEC_KEY_MGMT_PSK;
if (sflag == 0){ if (sflag == 0) {
return SecurityType::OPEN; return SecurityType::OPEN;
} else if ((sflag & NM_802_11_AP_FLAGS_PRIVACY) && (wpa_props & supports_wpa) && !(wpa_props & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) { } else if ((sflag & NM_802_11_AP_FLAGS_PRIVACY) && (wpa_props & supports_wpa) && !(wpa_props & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) {
return SecurityType::WPA; return SecurityType::WPA;
@ -152,22 +152,22 @@ SecurityType WifiManager::getSecurityType(QString path){
} }
} }
void WifiManager::connect(Network n){ void WifiManager::connect(Network n) {
return connect(n, "", ""); return connect(n, "", "");
} }
void WifiManager::connect(Network n, QString password){ void WifiManager::connect(Network n, QString password) {
return connect(n, "", password); return connect(n, "", password);
} }
void WifiManager::connect(Network n, QString username, QString password){ void WifiManager::connect(Network n, QString username, QString password) {
connecting_to_network = n.ssid; connecting_to_network = n.ssid;
disconnect(); disconnect();
clear_connections(n.ssid); //Clear all connections that may already exist to the network we are connecting clear_connections(n.ssid); //Clear all connections that may already exist to the network we are connecting
connect(n.ssid, username, password, n.security_type); connect(n.ssid, username, password, n.security_type);
} }
void WifiManager::connect(QByteArray ssid, QString username, QString password, SecurityType security_type){ void WifiManager::connect(QByteArray ssid, QString username, QString password, SecurityType security_type) {
Connection connection; Connection connection;
connection["connection"]["type"] = "802-11-wireless"; connection["connection"]["type"] = "802-11-wireless";
connection["connection"]["uuid"] = QUuid::createUuid().toString().remove('{').remove('}'); connection["connection"]["uuid"] = QUuid::createUuid().toString().remove('{').remove('}');
@ -177,7 +177,7 @@ void WifiManager::connect(QByteArray ssid, QString username, QString password, S
connection["802-11-wireless"]["ssid"] = ssid; connection["802-11-wireless"]["ssid"] = ssid;
connection["802-11-wireless"]["mode"] = "infrastructure"; connection["802-11-wireless"]["mode"] = "infrastructure";
if (security_type == SecurityType::WPA){ if (security_type == SecurityType::WPA) {
connection["802-11-wireless-security"]["key-mgmt"] = "wpa-psk"; connection["802-11-wireless-security"]["key-mgmt"] = "wpa-psk";
connection["802-11-wireless-security"]["auth-alg"] = "open"; connection["802-11-wireless-security"]["auth-alg"] = "open";
connection["802-11-wireless-security"]["psk"] = password; connection["802-11-wireless-security"]["psk"] = password;
@ -190,20 +190,20 @@ void WifiManager::connect(QByteArray ssid, QString username, QString password, S
nm_settings.call("AddConnection", QVariant::fromValue(connection)); nm_settings.call("AddConnection", QVariant::fromValue(connection));
} }
void WifiManager::deactivate_connections(QString ssid){ void WifiManager::deactivate_connections(QString ssid) {
for (QDBusObjectPath active_connection_raw : get_active_connections()){ for (QDBusObjectPath active_connection_raw : get_active_connections()) {
QString active_connection = active_connection_raw.path(); QString active_connection = active_connection_raw.path();
QDBusInterface nm(nm_service, active_connection, props_iface, bus); QDBusInterface nm(nm_service, active_connection, props_iface, bus);
QDBusObjectPath pth = get_response<QDBusObjectPath>(nm.call("Get", connection_iface, "SpecificObject")); QDBusObjectPath pth = get_response<QDBusObjectPath>(nm.call("Get", connection_iface, "SpecificObject"));
QString Ssid = get_property(pth.path(), "Ssid"); QString Ssid = get_property(pth.path(), "Ssid");
if (Ssid == ssid){ if (Ssid == ssid) {
QDBusInterface nm2(nm_service, nm_path, nm_iface, bus); QDBusInterface nm2(nm_service, nm_path, nm_iface, bus);
nm2.call("DeactivateConnection", QVariant::fromValue(active_connection_raw)); nm2.call("DeactivateConnection", QVariant::fromValue(active_connection_raw));
} }
} }
} }
QVector<QDBusObjectPath> WifiManager::get_active_connections(){ QVector<QDBusObjectPath> WifiManager::get_active_connections() {
QDBusInterface nm(nm_service, nm_path, props_iface, bus); QDBusInterface nm(nm_service, nm_path, props_iface, bus);
QDBusMessage response = nm.call("Get", nm_iface, "ActiveConnections"); QDBusMessage response = nm.call("Get", nm_iface, "ActiveConnections");
QDBusArgument arr = get_response<QDBusArgument>(response); QDBusArgument arr = get_response<QDBusArgument>(response);
@ -211,14 +211,14 @@ QVector<QDBusObjectPath> WifiManager::get_active_connections(){
QDBusObjectPath path; QDBusObjectPath path;
arr.beginArray(); arr.beginArray();
while (!arr.atEnd()){ while (!arr.atEnd()) {
arr >> path; arr >> path;
conns.push_back(path); conns.push_back(path);
} }
return conns; return conns;
} }
void WifiManager::clear_connections(QString ssid){ void WifiManager::clear_connections(QString ssid) {
QDBusInterface nm(nm_service, nm_settings_path, nm_settings_iface, bus); QDBusInterface nm(nm_service, nm_settings_path, nm_settings_iface, bus);
QDBusMessage response = nm.call("ListConnections"); QDBusMessage response = nm.call("ListConnections");
QVariant first = response.arguments().at(0); QVariant first = response.arguments().at(0);
@ -237,9 +237,9 @@ void WifiManager::clear_connections(QString ssid){
for (QString outer_key : map.keys()) { for (QString outer_key : map.keys()) {
QMap<QString,QVariant> innerMap = map.value(outer_key); QMap<QString,QVariant> innerMap = map.value(outer_key);
for (QString inner_key : innerMap.keys()) { for (QString inner_key : innerMap.keys()) {
if (inner_key == "ssid"){ if (inner_key == "ssid") {
QString value = innerMap.value(inner_key).value<QString>(); QString value = innerMap.value(inner_key).value<QString>();
if (value == ssid){ if (value == ssid) {
nm2.call("Delete"); nm2.call("Delete");
} }
} }
@ -248,40 +248,40 @@ void WifiManager::clear_connections(QString ssid){
} }
} }
void WifiManager::request_scan(){ void WifiManager::request_scan() {
if (!has_adapter) return; if (!has_adapter) return;
QDBusInterface nm(nm_service, adapter, wireless_device_iface, bus); QDBusInterface nm(nm_service, adapter, wireless_device_iface, bus);
nm.call("RequestScan", QVariantMap()); nm.call("RequestScan", QVariantMap());
} }
uint WifiManager::get_wifi_device_state(){ uint WifiManager::get_wifi_device_state() {
QDBusInterface device_props(nm_service, adapter, props_iface, bus); QDBusInterface device_props(nm_service, adapter, props_iface, bus);
QDBusMessage response = device_props.call("Get", device_iface, "State"); QDBusMessage response = device_props.call("Get", device_iface, "State");
uint resp = get_response<uint>(response); uint resp = get_response<uint>(response);
return resp; return resp;
} }
QString WifiManager::get_active_ap(){ QString WifiManager::get_active_ap() {
QDBusInterface device_props(nm_service, adapter, props_iface, bus); QDBusInterface device_props(nm_service, adapter, props_iface, bus);
QDBusMessage response = device_props.call("Get", wireless_device_iface, "ActiveAccessPoint"); QDBusMessage response = device_props.call("Get", wireless_device_iface, "ActiveAccessPoint");
QDBusObjectPath r = get_response<QDBusObjectPath>(response); QDBusObjectPath r = get_response<QDBusObjectPath>(response);
return r.path(); return r.path();
} }
QByteArray WifiManager::get_property(QString network_path ,QString property){ QByteArray WifiManager::get_property(QString network_path ,QString property) {
QDBusInterface device_props(nm_service, network_path, props_iface, bus); QDBusInterface device_props(nm_service, network_path, props_iface, bus);
QDBusMessage response = device_props.call("Get", ap_iface, property); QDBusMessage response = device_props.call("Get", ap_iface, property);
return get_response<QByteArray>(response); return get_response<QByteArray>(response);
} }
unsigned int WifiManager::get_ap_strength(QString network_path){ unsigned int WifiManager::get_ap_strength(QString network_path) {
QDBusInterface device_props(nm_service, network_path, props_iface, bus); QDBusInterface device_props(nm_service, network_path, props_iface, bus);
QDBusMessage response = device_props.call("Get", ap_iface, "Strength"); QDBusMessage response = device_props.call("Get", ap_iface, "Strength");
return get_response<unsigned int>(response); return get_response<unsigned int>(response);
} }
QString WifiManager::get_adapter(){ QString WifiManager::get_adapter() {
QDBusInterface nm(nm_service, nm_path, nm_iface, bus); QDBusInterface nm(nm_service, nm_path, nm_iface, bus);
QDBusMessage response = nm.call("GetDevices"); QDBusMessage response = nm.call("GetDevices");
@ -310,25 +310,25 @@ QString WifiManager::get_adapter(){
return adapter_path; return adapter_path;
} }
void WifiManager::change(unsigned int new_state,unsigned int previous_state,unsigned int change_reason){ void WifiManager::change(unsigned int new_state,unsigned int previous_state,unsigned int change_reason) {
raw_adapter_state = new_state; raw_adapter_state = new_state;
if (new_state == state_need_auth && change_reason == reason_wrong_password){ if (new_state == state_need_auth && change_reason == reason_wrong_password) {
emit wrongPassword(connecting_to_network); emit wrongPassword(connecting_to_network);
}else if (new_state == state_connected){ } else if (new_state == state_connected) {
connecting_to_network = ""; connecting_to_network = "";
} }
} }
void WifiManager::disconnect(){ void WifiManager::disconnect() {
QString active_ap = get_active_ap(); QString active_ap = get_active_ap();
if (active_ap!="" && active_ap!="/"){ if (active_ap!="" && active_ap!="/") {
deactivate_connections(get_property(active_ap, "Ssid")); deactivate_connections(get_property(active_ap, "Ssid"));
} }
} }
//Functions for tethering //Functions for tethering
void WifiManager::enableTethering(){ void WifiManager::enableTethering() {
disconnect(); disconnect();
Connection connection; Connection connection;
connection["connection"]["id"] = "Hotspot"; connection["connection"]["id"] = "Hotspot";
@ -359,11 +359,11 @@ void WifiManager::enableTethering(){
} }
void WifiManager::disableTethering(){ void WifiManager::disableTethering() {
clear_connections(tethering_ssid); clear_connections(tethering_ssid);
} }
bool WifiManager::tetheringEnabled(){ bool WifiManager::tetheringEnabled() {
QString active_ap = get_active_ap(); QString active_ap = get_active_ap();
return get_property(active_ap, "Ssid") == tethering_ssid; return get_property(active_ap, "Ssid") == tethering_ssid;
} }

@ -25,20 +25,20 @@ int fresh_clone() {
// Cleanup // Cleanup
err = std::system("rm -rf /tmp/openpilot"); err = std::system("rm -rf /tmp/openpilot");
if(err) return 1; if (err) return 1;
err = std::system("rm -rf /data/openpilot"); err = std::system("rm -rf /data/openpilot");
if(err) return 1; if (err) return 1;
// Clone // Clone
err = std::system("git clone " GIT_URL " -b " BRANCH " --depth=1 /tmp/openpilot"); err = std::system("git clone " GIT_URL " -b " BRANCH " --depth=1 /tmp/openpilot");
if(err) return 1; if (err) return 1;
err = std::system("cd /tmp/openpilot && git submodule update --init"); err = std::system("cd /tmp/openpilot && git submodule update --init");
if(err) return 1; if (err) return 1;
err = std::system("cd /tmp/openpilot && git remote set-url origin --push " GIT_SSH_URL); err = std::system("cd /tmp/openpilot && git remote set-url origin --push " GIT_SSH_URL);
if(err) return 1; if (err) return 1;
err = std::system("mv /tmp/openpilot /data"); err = std::system("mv /tmp/openpilot /data");
if(err) return 1; if (err) return 1;
return 0; return 0;
} }
@ -56,11 +56,11 @@ int install() {
std::cout << "Doing fresh clone\n"; std::cout << "Doing fresh clone\n";
err = fresh_clone(); err = fresh_clone();
if(err) return 1; if (err) return 1;
// Write continue.sh // Write continue.sh
err = std::system("cp /data/openpilot/installer/continue_openpilot.sh " CONTINUE_PATH); err = std::system("cp /data/openpilot/installer/continue_openpilot.sh " CONTINUE_PATH);
if(err == -1) return 1; if (err == -1) return 1;
return 0; return 0;
} }

@ -76,10 +76,10 @@ QWidget * Setup::network_setup() {
WifiUI *wifi = new WifiUI(this, 6); WifiUI *wifi = new WifiUI(this, 6);
main_layout->addWidget(wifi); main_layout->addWidget(wifi);
QObject::connect(wifi, &WifiUI::openKeyboard, this, [=](){ QObject::connect(wifi, &WifiUI::openKeyboard, this, [=]() {
this->continue_btn->setVisible(false); this->continue_btn->setVisible(false);
}); });
QObject::connect(wifi, &WifiUI::closeKeyboard, this, [=](){ QObject::connect(wifi, &WifiUI::closeKeyboard, this, [=]() {
this->continue_btn->setVisible(true); this->continue_btn->setVisible(true);
}); });

@ -44,18 +44,18 @@ void InputField::emitEmpty() {
} }
void InputField::getText(QString s) { void InputField::getText(QString s) {
if(!QString::compare(s,"")){ if (!QString::compare(s,"")) {
line->backspace(); line->backspace();
} }
if(!QString::compare(s,"")){ if (!QString::compare(s,"")) {
emitText(line->text()); emitText(line->text());
line->setText(""); line->setText("");
} }
QVector<QString> control_buttons {"", "", "ABC", "", "#+=", "", "123"}; QVector<QString> control_buttons {"", "", "ABC", "", "#+=", "", "123"};
for(QString c : control_buttons){ for(QString c : control_buttons) {
if(!QString::compare(s, c)){ if (!QString::compare(s, c)) {
return; return;
} }
} }

@ -7,34 +7,37 @@
#include "keyboard.hpp" #include "keyboard.hpp"
KeyboardLayout::KeyboardLayout(QWidget* parent, std::vector<QVector<QString>> layout) : QWidget(parent) { const int DEFAULT_WIDTH = 1;
const int SPACEBAR_WIDTH = 3;
KeyboardLayout::KeyboardLayout(QWidget *parent, std::vector<QVector<QString>> layout) : QWidget(parent) {
QVBoxLayout* vlayout = new QVBoxLayout; QVBoxLayout* vlayout = new QVBoxLayout;
QButtonGroup* btn_group = new QButtonGroup(this); QButtonGroup* btn_group = new QButtonGroup(this);
QObject::connect(btn_group, SIGNAL(buttonClicked(QAbstractButton*)), parent, SLOT(handleButton(QAbstractButton*))); QObject::connect(btn_group, SIGNAL(buttonClicked(QAbstractButton*)), parent, SLOT(handleButton(QAbstractButton*)));
int i = 0; int i = 0;
for(auto s : layout){ for (auto s : layout) {
QHBoxLayout *hlayout = new QHBoxLayout; QHBoxLayout *hlayout = new QHBoxLayout;
if (i == 1){ if (i == 1) {
hlayout->addSpacing(90); hlayout->addSpacing(90);
} }
for(QString p : s){ for (QString p : s) {
QPushButton* btn = new QPushButton(p); QPushButton* btn = new QPushButton(p);
btn->setFixedHeight(120); btn->setFixedHeight(120);
if (p == QString(" ")){
btn->setFixedWidth(1024);
}
btn_group->addButton(btn); btn_group->addButton(btn);
hlayout->addSpacing(10); hlayout->addSpacing(10);
hlayout->addWidget(btn); if (p == QString(" ")) {
hlayout->addWidget(btn, SPACEBAR_WIDTH);
} else {
hlayout->addWidget(btn, DEFAULT_WIDTH);
}
} }
if (i == 1){ if (i == 1) {
hlayout->addSpacing(90); hlayout->addSpacing(90);
} }
@ -99,24 +102,24 @@ Keyboard::Keyboard(QWidget *parent) : QWidget(parent) {
} }
void Keyboard::handleButton(QAbstractButton* m_button){ void Keyboard::handleButton(QAbstractButton* m_button) {
QString id = m_button->text(); QString id = m_button->text();
if(!QString::compare(m_button->text(),"")||!QString::compare(m_button->text(),"ABC")){ if (!QString::compare(m_button->text(), "") || !QString::compare(m_button->text(), "ABC")) {
main_layout->setCurrentIndex(0); main_layout->setCurrentIndex(0);
} }
if(!QString::compare(m_button->text(),"")){ if (!QString::compare(m_button->text(), "")) {
main_layout->setCurrentIndex(1); main_layout->setCurrentIndex(1);
} }
if(!QString::compare(m_button->text(),"123")){ if (!QString::compare(m_button->text(), "123")) {
main_layout->setCurrentIndex(2); main_layout->setCurrentIndex(2);
} }
if(!QString::compare(m_button->text(),"#+=")){ if (!QString::compare(m_button->text(), "#+=")) {
main_layout->setCurrentIndex(3); main_layout->setCurrentIndex(3);
} }
if(!QString::compare(m_button->text(),"")){ if (!QString::compare(m_button->text(), "")) {
main_layout->setCurrentIndex(0); main_layout->setCurrentIndex(0);
} }
if("A" <= id && id <= "Z"){ if ("A" <= id && id <= "Z") {
main_layout->setCurrentIndex(0); main_layout->setCurrentIndex(0);
} }
emit emitButton(m_button->text()); emit emitButton(m_button->text());

@ -12,7 +12,7 @@
void cleanLayout(QLayout* layout) { void cleanLayout(QLayout* layout) {
while (QLayoutItem* item = layout->takeAt(0)) { while (QLayoutItem* item = layout->takeAt(0)) {
if (QWidget* widget = item->widget()){ if (QWidget* widget = item->widget()) {
widget->deleteLater(); widget->deleteLater();
} }
if (QLayout* childLayout = item->layout()) { if (QLayout* childLayout = item->layout()) {
@ -22,11 +22,11 @@ void cleanLayout(QLayout* layout) {
} }
} }
QString vectorToQString(std::vector<char> v){ QString vectorToQString(std::vector<char> v) {
return QString::fromStdString(std::string(v.begin(), v.end())); return QString::fromStdString(std::string(v.begin(), v.end()));
} }
OffroadAlert::OffroadAlert(QWidget* parent){ OffroadAlert::OffroadAlert(QWidget* parent) {
vlayout = new QVBoxLayout; vlayout = new QVBoxLayout;
refresh(); refresh();
setLayout(vlayout); setLayout(vlayout);
@ -38,7 +38,7 @@ void OffroadAlert::refresh() {
updateAvailable = false; updateAvailable = false;
std::vector<char> bytes = Params().read_db_bytes("UpdateAvailable"); std::vector<char> bytes = Params().read_db_bytes("UpdateAvailable");
if (bytes.size() && bytes[0] == '1'){ if (bytes.size() && bytes[0] == '1') {
updateAvailable = true; updateAvailable = true;
} }
@ -91,7 +91,7 @@ void OffroadAlert::refresh() {
} else { } else {
vlayout->addSpacing(60); vlayout->addSpacing(60);
for (auto alert : alerts){ for (auto alert : alerts) {
QLabel *l = new QLabel(alert.text); QLabel *l = new QLabel(alert.text);
l->setWordWrap(true); l->setWordWrap(true);
l->setMargin(60); l->setMargin(60);
@ -122,7 +122,7 @@ void OffroadAlert::refresh() {
QObject::connect(hide_btn, SIGNAL(released()), this, SIGNAL(closeAlerts())); QObject::connect(hide_btn, SIGNAL(released()), this, SIGNAL(closeAlerts()));
} }
void OffroadAlert::parse_alerts(){ void OffroadAlert::parse_alerts() {
alerts.clear(); alerts.clear();
// We launch in selfdrive/ui // We launch in selfdrive/ui
QFile inFile("../controls/lib/alerts_offroad.json"); QFile inFile("../controls/lib/alerts_offroad.json");
@ -139,7 +139,7 @@ void OffroadAlert::parse_alerts(){
for (const QString& key : json.keys()) { for (const QString& key : json.keys()) {
std::vector<char> bytes = Params().read_db_bytes(key.toStdString().c_str()); std::vector<char> bytes = Params().read_db_bytes(key.toStdString().c_str());
if (bytes.size()){ if (bytes.size()) {
QJsonDocument doc_par = QJsonDocument::fromJson(QByteArray(bytes.data(), bytes.size())); QJsonDocument doc_par = QJsonDocument::fromJson(QByteArray(bytes.data(), bytes.size()));
QJsonObject obj = doc_par.object(); QJsonObject obj = doc_par.object();
Alert alert = {obj.value("text").toString(), obj.value("severity").toInt()}; Alert alert = {obj.value("text").toString(), obj.value("severity").toInt()};

@ -138,7 +138,7 @@ void update_sockets(UIState *s) {
s->status = STATUS_WARNING; s->status = STATUS_WARNING;
} else if (alertStatus == cereal::ControlsState::AlertStatus::CRITICAL) { } else if (alertStatus == cereal::ControlsState::AlertStatus::CRITICAL) {
s->status = STATUS_ALERT; s->status = STATUS_ALERT;
} else{ } else {
s->status = scene.controls_state.getEnabled() ? STATUS_ENGAGED : STATUS_DISENGAGED; s->status = scene.controls_state.getEnabled() ? STATUS_ENGAGED : STATUS_DISENGAGED;
} }

Loading…
Cancel
Save