53 lines
1.3 KiB
C++
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
|