Files
Commonwealth-Online-Server/src/MainWindow.h
T
2026-08-01 18:43:40 +12:00

94 lines
2.2 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
#include <QPushButton>
#include <QTableWidget>
#include <QTextEdit>
#include <QSplitter>
#include <QTimer>
#include "ServerProcess.h"
#include "ConfigDialog.h"
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
void closeEvent(QCloseEvent *event) override;
private slots:
void onStartServer();
void onStopServer();
void onOpenConfig();
void onServerStarted();
void onServerStopped();
void onServerLog(const QString &message);
void onUpdateStats();
void onUpdateClients(const QJsonArray &clients);
void onServerError(const QString &error);
void onKickSelectedClient();
void onBanSelectedClient();
void onManageBans();
void onClientSelectionChanged();
void onAdminCommandFinished(bool ok, const QString &message);
void onStatsUpdated(const QJsonObject &stats);
private:
void setupUI();
void setupStyles();
void setupConnections();
void setupTimer();
void updateServerStatus(bool running);
void addLogMessage(const QString &message);
void applyStatsToUi(const QJsonObject &stats);
void resolveConfigPath();
void loadConfigIntoUi();
void applyConfigToUi(const ServerConfigData &config);
// UI Components
QWidget *centralWidget;
// Toolbar
QLabel *serverNameLabel;
QLabel *statusDot;
QLabel *statusIndicator;
QPushButton *startButton;
QPushButton *stopButton;
QPushButton *configButton;
// Status strip
QLabel *uptimeLabel;
QLabel *clientsLabel;
QLabel *transformPacketsLabel;
QLabel *worldStatePacketsLabel;
QLabel *bindAddressLabel;
QLabel *lanAddressLabel;
// Main panes
QSplitter *mainSplitter;
QTableWidget *clientsTable;
QPushButton *kickButton;
QPushButton *banButton;
QPushButton *bansButton;
QTextEdit *logViewer;
// Server Process
ServerProcess *serverProcess;
// Timer for stats updates
QTimer *statsTimer;
// State
bool isServerRunning;
QString serverName;
QString configFilePath;
};
#endif // MAINWINDOW_H