| 168 | } |
| 169 | |
| 170 | void 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(); |