diff options
Diffstat (limited to 'src/Settings/writesettings.cpp')
| -rw-r--r-- | src/Settings/writesettings.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/Settings/writesettings.cpp b/src/Settings/writesettings.cpp new file mode 100644 index 0000000..22d72af --- /dev/null +++ b/src/Settings/writesettings.cpp @@ -0,0 +1,76 @@ +#include "loadsettings.h" + +void writeSettings (const QString &settingsFilePath) +{ + // user already specified that config is to be written + QSettings settingsFile(settingsFilePath, QSettings::IniFormat); + + // initialise default settings to write to config + SettingStructure settings; + + // logging settings + settingsFile.setValue("Logging/CycleLogs", settings.LoggingSettings.cycle); + settingsFile.setValue("Logging/SuppressLog", settings.LoggingSettings.suppressLog); + settingsFile.setValue("Logging/SuppressDisplay", settings.LoggingSettings.suppressDisplay); + + // beacon server settings (udp server) + settingsFile.setValue("BeaconServer/BeaconPort", settings.BeaconServerSettings.beaconPort); + settingsFile.setValue("BeaconServer/DoUplink", settings.BeaconServerSettings.doUplink); + + // listen server settings (tcp server) + settingsFile.setValue("ListenServer/ListenPort", settings.ListenServerSettings.listenPort); + settingsFile.setValue("ListenServer/ServerLifeTime_s", settings.ListenServerSettings.serverttl_s); + + // syncer settings (tcp client) + settingsFile.setValue("Syncer/DoSync", settings.SyncerSettings.doSync); + settingsFile.setValue("Syncer/SyncGames", settings.SyncerSettings.syncGames); + settingsFile.setValue("Syncer/SyncInterval_s", settings.SyncerSettings.syncInterval_s); + + // if sync is set, but no servers are listed, generate default line with 333networks + if ( settings.SyncerSettings.doSync and settings.SyncerSettings.syncServers.size() <= 0 ) + { + SyncServer defaultServer; + defaultServer.remoteAddress = "master.333networks.com"; // default settings are correct + settings.SyncerSettings.syncServers.append(defaultServer); + } + + // write list of servers + QListIterator<SyncServer> syncRecordIterator(settings.SyncerSettings.syncServers); + int i = 0; + + settingsFile.beginWriteArray("Syncer"); + while ( syncRecordIterator.hasNext() ) + { + // next list item + SyncServer syncServer = syncRecordIterator.next(); + if ( syncServer.remoteAddress.size() > 0 ) + { + // write to settings file + settingsFile.setArrayIndex(i++); + + // output format 1\SyncServer=master.333networks.com, 27900, 28900 + QString strServer = QStringLiteral("%1, %2, %3") + .arg(syncServer.remoteAddress, + QString::number(syncServer.beaconPort), + QString::number(syncServer.listenPort) ); + settingsFile.setValue("SyncServer", strServer); + } + + } + settingsFile.endArray(); + + // server checker (udp client ticker) + settingsFile.setValue("Checker/DoCheck", settings.CheckerSettings.doCheck); + settingsFile.setValue("Checker/GetExtendedInformation", settings.CheckerSettings.getExtendedInfo); + settingsFile.setValue("Checker/ServerCheckInterval_ms", settings.CheckerSettings.timeServerInterval_ms); + settingsFile.setValue("Checker/CycleInterval_s", settings.CheckerSettings.timeCheckerReset_s); + + // maintenance settings + settingsFile.setValue("Maintenance/DoMaintenance", settings.MaintenanceSettings.doMaintenance); + settingsFile.setValue("Maintenance/MaintainRate_s", settings.MaintenanceSettings.timeMaintenanceInterval_s); + + // public details + settingsFile.setValue("PublicDetails/Hostname", settings.PublicInformationSettings.hostname); + settingsFile.setValue("PublicDetails/AdminName", settings.PublicInformationSettings.adminName); + settingsFile.setValue("PublicDetails/Contact", settings.PublicInformationSettings.contact); +} |
