1 #include "serverssettings.h"
2 
3 #include <QDebug>
4 #include <utility>
5 
ServersSettings(QString settingPath,QObject * parent)6 ServersSettings::ServersSettings(QString settingPath, QObject *parent)
7     : SettingsManager(settingPath + "servers.ini", parent)
8 {
9 }
10 
setPreviousHostLogin(int previous)11 void ServersSettings::setPreviousHostLogin(int previous)
12 {
13     setValue(previous, "previoushostlogin", "server");
14 }
15 
getPreviousHostLogin()16 int ServersSettings::getPreviousHostLogin()
17 {
18     QVariant previous = getValue("previoushostlogin", "server");
19     return previous == QVariant() ? 1 : previous.toInt();
20 }
21 
setPreviousHostList(QStringList list)22 void ServersSettings::setPreviousHostList(QStringList list)
23 {
24     setValue(list, "previoushosts", "server");
25 }
26 
getPreviousHostList()27 QStringList ServersSettings::getPreviousHostList()
28 {
29     return getValue("previoushosts", "server").toStringList();
30 }
31 
setPrevioushostName(const QString & name)32 void ServersSettings::setPrevioushostName(const QString &name)
33 {
34     setValue(name, "previoushostName", "server");
35 }
36 
getSaveName(QString defaultname)37 QString ServersSettings::getSaveName(QString defaultname)
38 {
39     int index = getPrevioushostindex(getPrevioushostName());
40     QVariant saveName = getValue(QString("saveName%1").arg(index), "server", "server_details");
41     return saveName == QVariant() ? std::move(defaultname) : saveName.toString();
42 }
43 
getSite(QString defaultSite)44 QString ServersSettings::getSite(QString defaultSite)
45 {
46     int index = getPrevioushostindex(getPrevioushostName());
47     QVariant site = getValue(QString("site%1").arg(index), "server", "server_details");
48     return site == QVariant() ? std::move(defaultSite) : site.toString();
49 }
50 
getPrevioushostName()51 QString ServersSettings::getPrevioushostName()
52 {
53     QVariant value = getValue("previoushostName", "server");
54     return value == QVariant() ? "Rooster Ranges" : value.toString();
55 }
56 
getPrevioushostindex(const QString & saveName)57 int ServersSettings::getPrevioushostindex(const QString &saveName)
58 {
59     int size = getValue("totalServers", "server", "server_details").toInt() + 1;
60 
61     for (int i = 0; i < size; i++)
62         if (saveName == getValue(QString("saveName%1").arg(i), "server", "server_details").toString())
63             return i;
64 
65     return -1;
66 }
67 
setHostName(QString hostname)68 void ServersSettings::setHostName(QString hostname)
69 {
70     setValue(hostname, "hostname", "server");
71 }
72 
getHostname(QString defaultHost)73 QString ServersSettings::getHostname(QString defaultHost)
74 {
75     int index = getPrevioushostindex(getPrevioushostName());
76     QVariant hostname = getValue(QString("server%1").arg(index), "server", "server_details");
77     return hostname == QVariant() ? std::move(defaultHost) : hostname.toString();
78 }
79 
setPort(QString port)80 void ServersSettings::setPort(QString port)
81 {
82     setValue(port, "port", "server");
83 }
84 
getPort(QString defaultPort)85 QString ServersSettings::getPort(QString defaultPort)
86 {
87     int index = getPrevioushostindex(getPrevioushostName());
88     QVariant port = getValue(QString("port%1").arg(index), "server", "server_details");
89     qDebug() << "getPort() index = " << index << " port.val = " << port.toString();
90     return port == QVariant() ? std::move(defaultPort) : port.toString();
91 }
92 
setPlayerName(QString playerName)93 void ServersSettings::setPlayerName(QString playerName)
94 {
95     setValue(playerName, "playername", "server");
96 }
97 
getPlayerName(QString defaultName)98 QString ServersSettings::getPlayerName(QString defaultName)
99 {
100     int index = getPrevioushostindex(getPrevioushostName());
101     QVariant name = getValue(QString("username%1").arg(index), "server", "server_details");
102     qDebug() << "getPlayerName() index = " << index << " name.val = " << name.toString();
103     return name == QVariant() ? std::move(defaultName) : name.toString();
104 }
105 
getPassword()106 QString ServersSettings::getPassword()
107 {
108     int index = getPrevioushostindex(getPrevioushostName());
109 
110     if (getSavePassword())
111         return getValue(QString("password%1").arg(index), "server", "server_details").toString();
112 
113     return QString();
114 }
115 
getSavePassword()116 bool ServersSettings::getSavePassword()
117 {
118     int index = getPrevioushostindex(getPrevioushostName());
119     bool save = getValue(QString("savePassword%1").arg(index), "server", "server_details").toBool();
120     return save;
121 }
122 
setPassword(QString password)123 void ServersSettings::setPassword(QString password)
124 {
125     setValue(password, "password", "server");
126 }
127 
setSavePassword(int save)128 void ServersSettings::setSavePassword(int save)
129 {
130     setValue(save, "save_password", "server");
131 }
132 
setAutoConnect(int autoconnect)133 void ServersSettings::setAutoConnect(int autoconnect)
134 {
135     setValue(autoconnect, "auto_connect", "server");
136 }
137 
getAutoConnect()138 int ServersSettings::getAutoConnect()
139 {
140     QVariant autoconnect = getValue("auto_connect", "server");
141     return autoconnect == QVariant() ? 0 : autoconnect.toInt();
142 }
143 
setFPHostName(QString hostname)144 void ServersSettings::setFPHostName(QString hostname)
145 {
146     setValue(hostname, "fphostname", "server");
147 }
148 
getFPHostname(QString defaultHost)149 QString ServersSettings::getFPHostname(QString defaultHost)
150 {
151     QVariant hostname = getValue("fphostname", "server");
152     return hostname == QVariant() ? std::move(defaultHost) : hostname.toString();
153 }
154 
setFPPort(QString port)155 void ServersSettings::setFPPort(QString port)
156 {
157     setValue(port, "fpport", "server");
158 }
159 
getFPPort(QString defaultPort)160 QString ServersSettings::getFPPort(QString defaultPort)
161 {
162     QVariant port = getValue("fpport", "server");
163     return port == QVariant() ? std::move(defaultPort) : port.toString();
164 }
165 
setFPPlayerName(QString playerName)166 void ServersSettings::setFPPlayerName(QString playerName)
167 {
168     setValue(playerName, "fpplayername", "server");
169 }
170 
getFPPlayerName(QString defaultName)171 QString ServersSettings::getFPPlayerName(QString defaultName)
172 {
173     QVariant name = getValue("fpplayername", "server");
174     return name == QVariant() ? std::move(defaultName) : name.toString();
175 }
176 
setClearDebugLogStatus(bool abIsChecked)177 void ServersSettings::setClearDebugLogStatus(bool abIsChecked)
178 {
179     setValue(abIsChecked, "save_debug_log", "server");
180 }
181 
getClearDebugLogStatus(bool abDefaultValue)182 bool ServersSettings::getClearDebugLogStatus(bool abDefaultValue)
183 {
184     QVariant cbFlushLog = getValue("save_debug_log", "server");
185     return cbFlushLog == QVariant() ? abDefaultValue : cbFlushLog.toBool();
186 }
187 
addNewServer(const QString & saveName,const QString & serv,const QString & port,const QString & username,const QString & password,bool savePassword,const QString & site)188 void ServersSettings::addNewServer(const QString &saveName,
189                                    const QString &serv,
190                                    const QString &port,
191                                    const QString &username,
192                                    const QString &password,
193                                    bool savePassword,
194                                    const QString &site)
195 {
196     if (updateExistingServer(saveName, serv, port, username, password, savePassword, site))
197         return;
198 
199     int index = getValue("totalServers", "server", "server_details").toInt() + 1;
200 
201     setValue(saveName, QString("saveName%1").arg(index), "server", "server_details");
202     setValue(serv, QString("server%1").arg(index), "server", "server_details");
203     setValue(port, QString("port%1").arg(index), "server", "server_details");
204     setValue(username, QString("username%1").arg(index), "server", "server_details");
205     setValue(savePassword, QString("savePassword%1").arg(index), "server", "server_details");
206     setValue(index, "totalServers", "server", "server_details");
207     setValue(password, QString("password%1").arg(index), "server", "server_details");
208     setValue(site, QString("site%1").arg(index), "server", "server_details");
209 }
210 
removeServer(QString servAddr)211 void ServersSettings::removeServer(QString servAddr)
212 {
213     int size = getValue("totalServers", "server", "server_details").toInt() + 1;
214 
215     for (int i = 0; i < size; i++) {
216         if (servAddr == getValue(QString("server%1").arg(i), "server", "server_details").toString()) {
217             deleteValue(QString("server%1").arg(i), "server", "server_details");
218             deleteValue(QString("port%1").arg(i), "server", "server_details");
219             deleteValue(QString("username%1").arg(i), "server", "server_details");
220             deleteValue(QString("savePassword%1").arg(i), "server", "server_details");
221             deleteValue(QString("password%1").arg(i), "server", "server_details");
222             deleteValue(QString("saveName%1").arg(i), "server", "server_details");
223             deleteValue(QString("site%1").arg(i), "server", "server_details");
224             return;
225         }
226     }
227 }
228 
229 /**
230  * Will only update fields with new values, ignores empty values
231  */
updateExistingServerWithoutLoss(QString saveName,QString serv,QString port,QString site)232 bool ServersSettings::updateExistingServerWithoutLoss(QString saveName, QString serv, QString port, QString site)
233 {
234     int size = getValue("totalServers", "server", "server_details").toInt() + 1;
235 
236     for (int i = 0; i < size; i++) {
237         if (serv == getValue(QString("server%1").arg(i), "server", "server_details").toString()) {
238             if (!port.isEmpty()) {
239                 setValue(port, QString("port%1").arg(i), "server", "server_details");
240             }
241 
242             if (!site.isEmpty()) {
243                 setValue(site, QString("site%1").arg(i), "server", "server_details");
244             }
245 
246             setValue(saveName, QString("saveName%1").arg(i), "server", "server_details");
247 
248             return true;
249         }
250     }
251     return false;
252 }
253 
updateExistingServer(QString saveName,QString serv,QString port,QString username,QString password,bool savePassword,QString site)254 bool ServersSettings::updateExistingServer(QString saveName,
255                                            QString serv,
256                                            QString port,
257                                            QString username,
258                                            QString password,
259                                            bool savePassword,
260                                            QString site)
261 {
262     int size = getValue("totalServers", "server", "server_details").toInt() + 1;
263 
264     for (int i = 0; i < size; i++) {
265         if (serv == getValue(QString("server%1").arg(i), "server", "server_details").toString()) {
266             setValue(port, QString("port%1").arg(i), "server", "server_details");
267             if (!username.isEmpty()) {
268                 setValue(username, QString("username%1").arg(i), "server", "server_details");
269             }
270 
271             if (savePassword && !password.isEmpty()) {
272                 setValue(password, QString("password%1").arg(i), "server", "server_details");
273             } else {
274                 setValue(QString(), QString("password%1").arg(i), "server", "server_details");
275             }
276 
277             if (!site.isEmpty()) {
278                 setValue(site, QString("site%1").arg(i), "server", "server_details");
279             }
280 
281             setValue(savePassword, QString("savePassword%1").arg(i), "server", "server_details");
282             setValue(saveName, QString("saveName%1").arg(i), "server", "server_details");
283 
284             return true;
285         }
286     }
287     return false;
288 }
289