MCPcopy Create free account
hub / github.com/Segs/Segs / on_saveConfigFile_clicked

Method on_saveConfigFile_clicked

Utilities/ServerMonitor/MainWindow.cpp:170–236  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

168}
169
170void MainWindow::on_saveConfigFile_clicked()
171{
172 //TODO: stupid ini processing - differences between qt and ace..
173
174 if(!m_loaded_server_settings) {
175 QMessageBox::warning(NULL,tr("Config file trouble"),tr("No file was loaded, try loading one before editing and saving"));
176 return;
177 }
178 QString auth_srv = ui->authServerAddrSelector->currentText()+":2006";
179 QString game_srv = ui->gameServerAddrSelector->currentText()+":7002";
180 QString map_srv = ui->mapServerAddrSelector->currentText()+":7003";
181 QFile srcini(m_selected_config_file);
182 if(!srcini.open(QFile::ReadOnly)) {
183 QMessageBox::warning(NULL,tr("Config file trouble"),tr("Cannot open cfg file while saving changes"));
184 return;
185 }
186 QTemporaryFile destini;
187 if(!destini.open()) {
188 QMessageBox::warning(NULL,tr("Config file trouble"),tr("Cannot create temp cfg file while saving changes"));
189 return;
190 }
191 QString data = srcini.readAll();
192 srcini.close();
193
194 QStringList lines = data.split("\n");
195 int ctx=0;
196 for(int line_idx=0; line_idx<lines.size(); ++line_idx) {
197 QString line = lines.at(line_idx);
198 if(line.startsWith("[AuthServer]")) {
199 ctx = 1;
200 } else if(line.startsWith("[GameServer]")) {
201 ctx = 2;
202 } else if(line.startsWith("[MapServer]")) {
203 ctx = 3;
204 }
205 if(ctx) {
206 QString sel_addr;
207 switch(ctx) {
208 case 1: sel_addr= auth_srv; break;
209 case 2: sel_addr= game_srv; break;
210 case 3: sel_addr= map_srv; break;
211 }
212 if(line.startsWith("listen_addr")) {
213 line = QString("listen_addr = \"%1\"").arg(sel_addr);
214 } else if(line.startsWith("location_addr")) {
215 line = QString("location_addr = \"%1\"").arg(sel_addr);
216 }
217 }
218 destini.write(line.toLocal8Bit()+"\n");
219 }
220 delete m_loaded_server_settings; // ensure m_selected_config_file is closed at this point
221 {
222 QFile dest(m_selected_config_file);
223 if(!dest.remove()) {
224 QMessageBox::warning(NULL,tr("Config file trouble"),tr("Cannot remove old cfg file\n")+dest.errorString());
225 }
226 }
227 destini.flush();

Callers

nothing calls this directly

Calls 6

QStringClass · 0.50
openMethod · 0.45
closeMethod · 0.45
sizeMethod · 0.45
atMethod · 0.45
errorStringMethod · 0.45

Tested by

no test coverage detected