mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-07-11 16:02:06 +08:00
Revert "fix some refactor commits that weren't tested (#20140)"
This reverts commit 9e29d5621c.
This commit is contained in:
@@ -1,20 +1,12 @@
|
||||
#include <QDebug>
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QState>
|
||||
#include <QStateMachine>
|
||||
#include <QNetworkReply>
|
||||
|
||||
#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();
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <QWidget>
|
||||
#include <QButtonGroup>
|
||||
#include <QVBoxLayout>
|
||||
#include <QStackedWidget>
|
||||
#include <QPushButton>
|
||||
#include <QTimer>
|
||||
#include <QWidget>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QStackedLayout>
|
||||
|
||||
|
||||
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();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user