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

53 lines
1.3 KiB
C++

#ifndef CONFIGDIALOG_H
#define CONFIGDIALOG_H
#include <QDialog>
#include <QLineEdit>
#include <QPlainTextEdit>
#include <QSpinBox>
#include <QComboBox>
#include <QLabel>
struct ServerConfigData {
QString host = QStringLiteral("0.0.0.0");
int port = 7777;
int adminPort = 7779;
QString serverName = QStringLiteral("Commonwealth Online Server");
QString serverDescription;
int maxPlayers = 16;
QString logVerbosity = QStringLiteral("info");
};
class ConfigDialog : public QDialog {
Q_OBJECT
public:
explicit ConfigDialog(const QString &configPath, QWidget *parent = nullptr);
ServerConfigData config() const;
static bool loadFromFile(const QString &configPath, ServerConfigData *out, QString *error = nullptr);
static bool saveToFile(const QString &configPath, const ServerConfigData &config, QString *error = nullptr);
private slots:
void onAccepted();
private:
void setupUI();
void loadIntoForm(const ServerConfigData &config);
bool validateForm(QString *error) const;
QString configPath;
QLineEdit *serverNameEdit;
QPlainTextEdit *descriptionEdit;
QLineEdit *hostEdit;
QSpinBox *portSpin;
QSpinBox *adminPortSpin;
QSpinBox *maxPlayersSpin;
QComboBox *logVerbosityCombo;
QLabel *pathLabel;
};
#endif // CONFIGDIALOG_H