void ServerDialog::loadCustomServers() { for (int i = 0; i < MAX_SERVERLIST; ++i) { const std::string index = toString(i); const std::string nameKey = "MostUsedServerName" + index; const std::string typeKey = "MostUsedServerType" + index; const std::string portKey = "MostUsedServerPort" + index; ServerInfo server; server.hostname = config.getValue(nameKey, ""); server.type = ServerInfo::parseType(config.getValue(typeKey, "")); const int defaultPort = defaultPortForServerType(server.type); server.port = (unsigned short) config.getValue(portKey, defaultPort); // Stop on the first invalid server if (!server.isValid()) break; server.save = true; mServers.push_back(server); } }
void ServerDialog::saveCustomServers(const ServerInfo ¤tServer, int index) { ServerInfos::iterator it, it_end = mServers.end(); // Make sure the current server is mentioned first if (currentServer.isValid()) { if (index > -1) { mServers[index] = currentServer; } else { for (it = mServers.begin(); it != it_end; ++it) { if (*it == currentServer) { mServers.erase(it); break; } } mServers.push_front(currentServer); } } int savedServerCount = 0; for (it = mServers.begin(), it_end = mServers.end(); it != it_end && savedServerCount < MAX_SERVERLIST; ++it) { const ServerInfo &server = *it; // Only save servers that were loaded from settings if (!(server.save && server.isValid())) continue; const std::string index = toString(savedServerCount); const std::string nameKey = "MostUsedServerDescName" + index; const std::string hostNameKey = "MostUsedServerName" + index; const std::string typeKey = "MostUsedServerType" + index; const std::string portKey = "MostUsedServerPort" + index; const std::string descriptionKey = "MostUsedServerDescription" + index; config.setValue(hostNameKey, toString(server.hostname)); config.setValue(typeKey, serverTypeToString(server.type)); config.setValue(portKey, toString(server.port)); config.setValue(nameKey, server.name); config.setValue(descriptionKey, server.description); ++savedServerCount; } // Insert an invalid entry at the end to make the loading stop there if (savedServerCount < MAX_SERVERLIST) config.setValue("MostUsedServerName" + toString(savedServerCount), ""); // Restore the correct description if (index < 0) index = 0; mDescription->setCaption(mServers[index].description); }
void ServerDialog::saveCustomServers(const ServerInfo ¤tServer) { // Make sure the current server is mentioned first if (currentServer.isValid()) { ServerInfos::iterator i, i_end = mServers.end(); for (i = mServers.begin(); i != i_end; ++i) { if (*i == currentServer) { mServers.erase(i); break; } } mServers.insert(mServers.begin(), currentServer); } int savedServerCount = 0; for (unsigned i = 0; i < mServers.size() && savedServerCount < MAX_SERVERLIST; ++i) { const ServerInfo &server = mServers.at(i); // Only save servers that were loaded from settings if (!(server.save && server.isValid())) continue; const std::string index = toString(savedServerCount); const std::string nameKey = "MostUsedServerName" + index; const std::string typeKey = "MostUsedServerType" + index; const std::string portKey = "MostUsedServerPort" + index; config.setValue(nameKey, toString(server.hostname)); config.setValue(typeKey, serverTypeToString(server.type)); config.setValue(portKey, toString(server.port)); ++savedServerCount; } // Insert an invalid entry at the end to make the loading stop there if (savedServerCount < MAX_SERVERLIST) config.setValue("MostUsedServerName" + toString(savedServerCount), ""); }