aboutsummaryrefslogtreecommitdiff
path: root/src/Settings/writesettings.cpp
blob: 22d72af856eac767e4d9185e69729dca2dd6f449 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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);
}