#ifndef CONFIGDIALOG_H #define CONFIGDIALOG_H #include #include #include #include #include #include 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