From bf0d5c21409f5a6eb42ce966be94f6fbe15a6f11 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 24 Feb 2021 12:09:19 -0800 Subject: [PATCH] Revert "fix some refactor commits that weren't tested (#20140)" This reverts commit e25516e0a4ea9cfe459c400c331e1206ea3336c8. old-commit-hash: 1ef7d4a4c8aa8adb93ac64772673b0014bec0ead --- selfdrive/ui/qt/widgets/ssh_keys.cc | 116 +++++++++++---------------- selfdrive/ui/qt/widgets/ssh_keys.hpp | 21 +---- 2 files changed, 49 insertions(+), 88 deletions(-) diff --git a/selfdrive/ui/qt/widgets/ssh_keys.cc b/selfdrive/ui/qt/widgets/ssh_keys.cc index 0e988f5af3..64c1a67b02 100644 --- a/selfdrive/ui/qt/widgets/ssh_keys.cc +++ b/selfdrive/ui/qt/widgets/ssh_keys.cc @@ -1,20 +1,12 @@ -#include -#include #include #include #include #include #include +#include "common/params.h" #include "widgets/ssh_keys.hpp" #include "widgets/input_field.hpp" -#include "common/params.h" - -QWidget* layout_to_widget(QLayout* l){ - QWidget* q = new QWidget; - q->setLayout(l); - return q; -} SSH::SSH(QWidget* parent) : QWidget(parent){ // init variables @@ -24,37 +16,24 @@ SSH::SSH(QWidget* parent) : QWidget(parent){ networkTimer->setInterval(5000); connect(networkTimer, SIGNAL(timeout()), this, SLOT(timeout())); + // Layout on entering + QVBoxLayout* main_layout = new QVBoxLayout; + main_layout->setMargin(50); - // Construct the layouts to display - slayout = new QStackedLayout(this); // Initial screen, input, waiting for response - - //Layout on entering - QVBoxLayout* initialLayout = new QVBoxLayout; - initialLayout->setContentsMargins(80, 80, 80, 80); - - QHBoxLayout* header = new QHBoxLayout; QPushButton* exitButton = new QPushButton("BACK", this); exitButton->setFixedSize(500, 100); - header->addWidget(exitButton, 0, Qt::AlignLeft | Qt::AlignTop); - initialLayout->addWidget(layout_to_widget(header)); + main_layout->addWidget(exitButton, 0, Qt::AlignLeft | Qt::AlignTop); + connect(exitButton, SIGNAL(released()), this, SIGNAL(closeSSHSettings())); - QLabel* title = new QLabel("Authorize SSH keys"); - title->setStyleSheet(R"(font-size: 75px;)"); - header->addWidget(title, 0, Qt::AlignRight | Qt::AlignTop); - - QLabel* wallOfText = new QLabel("Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A Comma employee will NEVER ask you to add their GitHub username."); + QLabel* wallOfText = new QLabel("Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own."); + wallOfText->setAlignment(Qt::AlignHCenter); wallOfText->setWordWrap(true); wallOfText->setStyleSheet(R"(font-size: 60px;)"); - initialLayout->addWidget(wallOfText, 0); + main_layout->addWidget(wallOfText, 0); QPushButton* actionButton = new QPushButton; actionButton->setFixedHeight(100); - initialLayout->addWidget(actionButton, 0, Qt::AlignBottom); - - slayout->addWidget(layout_to_widget(initialLayout)); - - QLabel* loading = new QLabel("Loading SSH keys from GitHub."); - slayout->addWidget(loading); + main_layout->addWidget(actionButton, 0, Qt::AlignBottom); setStyleSheet(R"( QPushButton { @@ -66,66 +45,61 @@ SSH::SSH(QWidget* parent) : QWidget(parent){ background-color: #444444; } )"); - setLayout(slayout); + setLayout(main_layout); - - //Initialize the state machine and states + // Initialize the state machine and states QStateMachine* state = new QStateMachine(this); QState* initialState = new QState(); //State when entering the widget QState* initialStateNoGithub = new QState(); //Starting state, key not connected QState* initialStateConnected = new QState(); //Starting state, ssh connected - QState* quitState = new QState(); // State when exiting the widget - QState* removeSSH_State = new QState(); // State when user wants to remove the SSH keys - QState* defaultInputFieldState = new QState(); // State when we want the user to give us the username + QState* removeSSH_State = new QState(); // State when user wants to remove the SSH keys QState* loadingState = new QState(); // State while waiting for the network response - // Adding states to the state machine and adding the transitions state->addState(initialState); - connect(initialState, &QState::entered, [=](){checkForSSHKey(); slayout->setCurrentIndex(0);}); + connect(initialState, &QState::entered, [=](){ + checkForSSHKey(); + }); initialState->addTransition(this, &SSH::NoSSHAdded, initialStateNoGithub); initialState->addTransition(this, &SSH::SSHAdded, initialStateConnected); - - - state->addState(quitState); - connect(quitState, &QState::entered, [=](){emit closeSSHSettings();}); - quitState->addTransition(quitState, &QState::entered, initialState); state->addState(initialStateConnected); - connect(initialStateConnected, &QState::entered, [=](){actionButton->setText("Remove GitHub SSH keys"); actionButton->setStyleSheet(R"(background-color: #750c0c;)");}); - initialStateConnected->addTransition(exitButton, &QPushButton::released, quitState); + connect(initialStateConnected, &QState::entered, [=](){ + actionButton->setText("Clear SSH keys"); + actionButton->setStyleSheet(R"(background-color: #750c0c;)"); + }); initialStateConnected->addTransition(actionButton, &QPushButton::released, removeSSH_State); state->addState(removeSSH_State); - connect(removeSSH_State, &QState::entered, [=](){Params().delete_db_value("GithubSshKeys");}); + connect(removeSSH_State, &QState::entered, [=](){ + Params().delete_db_value("GithubSshKeys"); + }); removeSSH_State->addTransition(removeSSH_State, &QState::entered, initialState); state->addState(initialStateNoGithub); - connect(initialStateNoGithub, &QState::entered, [=](){actionButton->setText("Link GitHub SSH keys"); actionButton->setStyleSheet(R"(background-color: #444444;)");}); - initialStateNoGithub->addTransition(exitButton, &QPushButton::released, quitState); - initialStateNoGithub->addTransition(actionButton, &QPushButton::released, defaultInputFieldState); - connect(actionButton, &QPushButton::released, [=](){inputFieldMessage = "Enter your GitHub username";}); - - state->addState(defaultInputFieldState); - connect(defaultInputFieldState, &QState::entered, [=](){ - QString user = InputDialog::getText(inputFieldMessage); - if (user.length()) { - emit inputFieldEmitText(user); - } else { - emit inputFieldCancelled(); - } + connect(initialStateNoGithub, &QState::entered, [=](){ + actionButton->setText("Link GitHub SSH keys"); + actionButton->setStyleSheet(R"(background-color: #444444;)"); }); - connect(this, &SSH::inputFieldEmitText, [=](QString a){usernameGitHub = a;}); // Store the string the user provided - defaultInputFieldState->addTransition(this, &SSH::inputFieldCancelled, initialState); - defaultInputFieldState->addTransition(this, &SSH::inputFieldEmitText, loadingState); + initialStateNoGithub->addTransition(actionButton, &QPushButton::released, loadingState); state->addState(loadingState); - connect(loadingState, &QState::entered, [=](){slayout->setCurrentIndex(1); getSSHKeys();}); - connect(this, &SSH::failedResponse, [=](QString message){inputFieldMessage = message;}); - loadingState->addTransition(this, &SSH::failedResponse, defaultInputFieldState); + connect(loadingState, &QState::entered, [=](){ + QString user = InputDialog::getText("Enter your GitHub username"); + if (user.size()) { + getSSHKeys(user); + } + }); + connect(this, &SSH::failedResponse, [=](QString message){ + QString user = InputDialog::getText(message); + if (user.size()) { + getSSHKeys(user); + } + }); + loadingState->addTransition(loadingState, &QState::entered, initialState); + loadingState->addTransition(this, &SSH::failedResponse, initialState); loadingState->addTransition(this, &SSH::gotSSHKeys, initialState); - state->setInitialState(initialState); state->start(); } @@ -139,8 +113,8 @@ void SSH::checkForSSHKey(){ } } -void SSH::getSSHKeys(){ - QString url = "https://github.com/" + usernameGitHub + ".keys"; +void SSH::getSSHKeys(QString username){ + QString url = "https://github.com/" + username + ".keys"; aborted = false; reply = manager->get(QNetworkRequest(QUrl(url))); connect(reply, SIGNAL(finished()), this, SLOT(parseResponse())); @@ -160,9 +134,9 @@ void SSH::parseResponse(){ Params().write_db_value("GithubSshKeys", response.toStdString()); emit gotSSHKeys(); } else { - emit failedResponse("Username "+usernameGitHub+" doesn't exist"); + emit failedResponse("Username doesn't exist"); } - }else{ + } else { emit failedResponse("Request timed out"); } reply->deleteLater(); diff --git a/selfdrive/ui/qt/widgets/ssh_keys.hpp b/selfdrive/ui/qt/widgets/ssh_keys.hpp index 309f1300f7..3082a43d6c 100644 --- a/selfdrive/ui/qt/widgets/ssh_keys.hpp +++ b/selfdrive/ui/qt/widgets/ssh_keys.hpp @@ -1,14 +1,8 @@ #pragma once -#include -#include -#include -#include -#include #include +#include #include -#include - class SSH : public QWidget { Q_OBJECT @@ -17,29 +11,22 @@ public: explicit SSH(QWidget* parent = 0); private: - QStackedLayout* slayout; - QString usernameGitHub; - QString inputFieldMessage; QNetworkAccessManager* manager; QNetworkReply* reply; QTimer* networkTimer; bool aborted; + void getSSHKeys(QString user); + signals: - void closeSSHSettings(); - void openKeyboard(); - void closeKeyboard(); void NoSSHAdded(); void SSHAdded(); - void inputFieldCancelled(); - void inputFieldEmitText(QString GitHubUsername); void failedResponse(QString errorString); void gotSSHKeys(); + void closeSSHSettings(); private slots: void checkForSSHKey(); - void getSSHKeys(); void timeout(); void parseResponse(); }; -