diff options
author | Jared Adams <jaxad0127@gmail.com> | 2010-01-24 14:41:18 -0700 |
---|---|---|
committer | Jared Adams <jaxad0127@gmail.com> | 2010-01-24 14:41:18 -0700 |
commit | 889108ea9a75a0591cac7efb49bac65629b6fb86 (patch) | |
tree | 9350c4d10df554c15d1135acc8b4738b531f1018 /src/gui/serverdialog.cpp | |
parent | bee1477e6f7c029c94c1c0e119e4529d3a55ecda (diff) | |
download | mana-889108ea9a75a0591cac7efb49bac65629b6fb86.tar.gz mana-889108ea9a75a0591cac7efb49bac65629b6fb86.tar.bz2 mana-889108ea9a75a0591cac7efb49bac65629b6fb86.tar.xz mana-889108ea9a75a0591cac7efb49bac65629b6fb86.zip |
Better handle server types
Now they are stored in the config file instead of defaulting to current build type.
Diffstat (limited to 'src/gui/serverdialog.cpp')
-rw-r--r-- | src/gui/serverdialog.cpp | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/src/gui/serverdialog.cpp b/src/gui/serverdialog.cpp index 40add9a6..7318a534 100644 --- a/src/gui/serverdialog.cpp +++ b/src/gui/serverdialog.cpp @@ -47,6 +47,35 @@ #define MAX_SERVERLIST 5 +ServerInfo::Type stringToServerType(const std::string &type) +{ + if (compareStrI(type, "eathena") == 0) + { + return ServerInfo::MANASERV; + } + else if (compareStrI(type, "manaserv") == 0) + { + return ServerInfo::MANASERV; + } + else + { + return ServerInfo::UNKNOWN; + } +} + +std::string serverTypeToString(ServerInfo::Type type) +{ + switch (type) + { + case ServerInfo::EATHENA: + return "eAthena"; + case ServerInfo::MANASERV: + return "manaserv"; + default: + return ""; + } +} + ServersListModel::ServersListModel(ServerInfos *servers, ServerDialog *parent): mServers(servers), mParent(parent) @@ -108,7 +137,10 @@ ServerDialog::ServerDialog(ServerInfo *serverInfo, const std::string &dir): currentConfig = "MostUsedServerPort" + toString(i); currentServer.port = (short) config.getValue(currentConfig, DEFAULT_PORT); - currentServer.type = ServerInfo::getCurrentType(); + + currentConfig = "MostUsedServerType" + toString(i); + currentServer.type = stringToServerType(config + .getValue(currentConfig, "")); if (!currentServer.hostname.empty() && currentServer.port != 0) { @@ -208,12 +240,14 @@ void ServerDialog::action(const gcn::ActionEvent &event) ServerInfo tempServer; currentServer.hostname = mServerNameField->getText(); currentServer.port = (short) atoi(mPortField->getText().c_str()); - currentServer.type = ServerInfo::getCurrentType(); + currentServer.type = ServerInfo::UNKNOWN; // now rewrite the configuration... // id = 0 is always the last selected server config.setValue("MostUsedServerName0", currentServer.hostname); config.setValue("MostUsedServerPort0", currentServer.port); + config.setValue("MostUsedServerType0", + serverTypeToString(currentServer.type)); // now add the rest of the list... std::string currentConfig = ""; @@ -229,6 +263,8 @@ void ServerDialog::action(const gcn::ActionEvent &event) config.setValue(currentConfig, toString(tempServer.hostname)); currentConfig = "MostUsedServerPort" + toString(configCount); config.setValue(currentConfig, toString(tempServer.port)); + currentConfig = "MostUsedServerType" + toString(configCount); + config.setValue(currentConfig, serverTypeToString(tempServer.type)); configCount++; } @@ -386,18 +422,7 @@ void ServerDialog::loadServers() { if (xmlStrEqual(subnode->name, BAD_CAST "connection")) { - if (!compareStrI(type, "manaserv")) - { - currentServer.type = ServerInfo::MANASERV; - } - else if (!compareStrI(type, "eathena")) - { - currentServer.type = ServerInfo::EATHENA; - } - else - { - currentServer.type = ServerInfo::UNKNOWN; - } + currentServer.type = stringToServerType(type); currentServer.hostname = XML::getProperty(subnode, "hostname", std::string()); currentServer.port = XML::getProperty(subnode, "port", DEFAULT_PORT); } |