Files
Applications/LCDLLN-GPT/client/include/ClientApp.hpp
T
2026-03-16 18:26:47 +01:00

64 lines
1.6 KiB
C++

#pragma once
#include <QApplication>
#include <QWidget>
#include <QStackedWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QListWidget>
#include <vector>
#include <string>
#include <openssl/ssl.h>
#include <spdlog/spdlog.h>
struct ServerInfo {
std::string shard_id;
int current_load;
int max_capacity;
};
class ClientApp : public QWidget {
Q_OBJECT
public:
ClientApp(const std::string& master_ip, int master_port, QWidget* parent = nullptr);
void enableLogging(bool enabled);
void resetToFactory();
private slots:
void onLoginClicked();
void onRegisterClicked();
void onServerSelected();
private:
void setupUI();
void connectMaster();
void sendAuthRequest(const std::string& username, const std::string& password);
void sendRegisterRequest(const std::string& username, const std::string& password);
void requestServerList();
std::string argon2Hash(const std::string& input, const std::string& salt);
QStackedWidget* stack_;
QWidget* loginScreen_;
QLineEdit* loginUsername_;
QLineEdit* loginPassword_;
QPushButton* loginBtn_;
QPushButton* createAccountBtn_;
QWidget* registerScreen_;
QLineEdit* regUsername_;
QLineEdit* regPassword_;
QLineEdit* regPasswordConfirm_;
QPushButton* regBtn_;
QPushButton* backBtn_;
QWidget* serverScreen_;
QListWidget* serverList_;
QPushButton* serverSelectBtn_;
QPushButton* serverQuitBtn_;
SSL_CTX* ssl_ctx_;
SSL* ssl_;
int master_fd_;
std::string master_ip_;
int master_port_;
bool logging_;
std::vector<ServerInfo> servers_;
};