summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-04-26 12:39:39 +0300
committerAndrei Karas <akaras@inbox.ru>2013-04-26 12:39:39 +0300
commit5857f579da26ac21802679bce1777cd8337bd584 (patch)
tree455ab7a62d15f447bc3fec5388913c7886945682 /src/gui
parent298d8e2ef42eb2c60f1a2c24cf1aeb131dcded09 (diff)
downloadmanaplus-5857f579da26ac21802679bce1777cd8337bd584.tar.gz
manaplus-5857f579da26ac21802679bce1777cd8337bd584.tar.bz2
manaplus-5857f579da26ac21802679bce1777cd8337bd584.tar.xz
manaplus-5857f579da26ac21802679bce1777cd8337bd584.zip
add support for separate online list.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/editserverdialog.cpp12
-rw-r--r--src/gui/editserverdialog.h1
-rw-r--r--src/gui/serverdialog.cpp13
-rw-r--r--src/gui/whoisonline.cpp2
4 files changed, 24 insertions, 4 deletions
diff --git a/src/gui/editserverdialog.cpp b/src/gui/editserverdialog.cpp
index f6da1d5bc..89ad5e967 100644
--- a/src/gui/editserverdialog.cpp
+++ b/src/gui/editserverdialog.cpp
@@ -70,6 +70,7 @@ EditServerDialog::EditServerDialog(ServerDialog *const parent,
mPortField(new TextField(this, std::string())),
mNameField(new TextField(this, std::string())),
mDescriptionField(new TextField(this, std::string())),
+ mOnlineListUrlField(new TextField(this, std::string())),
mConnectButton(new Button(this, _("Connect"), "connect", this)),
mOkButton(new Button(this, _("OK"), "addServer", this)),
mCancelButton(new Button(this, _("Cancel"), "cancel", this)),
@@ -86,6 +87,7 @@ EditServerDialog::EditServerDialog(ServerDialog *const parent,
Label *const portLabel = new Label(this, _("Port:"));
Label *const typeLabel = new Label(this, _("Server type:"));
Label *const descriptionLabel = new Label(this, _("Description:"));
+ Label *const onlineListUrlLabel = new Label(this, _("Online list url:"));
mPortField->setNumeric(true);
mPortField->setRange(1, 65535);
@@ -104,9 +106,11 @@ EditServerDialog::EditServerDialog(ServerDialog *const parent,
place(1, 3, mTypeField).setPadding(3);
place(0, 4, descriptionLabel);
place(1, 4, mDescriptionField, 4).setPadding(3);
- place(0, 5, mConnectButton);
- place(4, 5, mOkButton);
- place(3, 5, mCancelButton);
+ place(0, 5, onlineListUrlLabel);
+ place(1, 5, mOnlineListUrlField, 4).setPadding(3);
+ place(0, 6, mConnectButton);
+ place(4, 6, mOkButton);
+ place(3, 6, mCancelButton);
// Do this manually instead of calling reflowLayout so we can enforce a
// minimum width.
@@ -136,6 +140,7 @@ EditServerDialog::EditServerDialog(ServerDialog *const parent,
mNameField->setText(mServer.name);
mDescriptionField->setText(mServer.description);
+ mOnlineListUrlField->setText(mServer.onlineListUrl);
mServerAddressField->setText(mServer.hostname);
mPortField->setText(toString(mServer.port));
@@ -213,6 +218,7 @@ void EditServerDialog::action(const gcn::ActionEvent &event)
mServer.name = mNameField->getText();
mServer.description = mDescriptionField->getText();
+ mServer.onlineListUrl = mOnlineListUrlField->getText();
mServer.hostname = mServerAddressField->getText();
mServer.port = static_cast<int16_t>(atoi(
mPortField->getText().c_str()));
diff --git a/src/gui/editserverdialog.h b/src/gui/editserverdialog.h
index f481fa789..269abb0b1 100644
--- a/src/gui/editserverdialog.h
+++ b/src/gui/editserverdialog.h
@@ -101,6 +101,7 @@ class EditServerDialog final : public Window,
TextField *mPortField;
TextField *mNameField;
TextField *mDescriptionField;
+ TextField *mOnlineListUrlField;
Button *mConnectButton;
Button *mOkButton;
Button *mCancelButton;
diff --git a/src/gui/serverdialog.cpp b/src/gui/serverdialog.cpp
index 56ce6528a..9e3a46bf4 100644
--- a/src/gui/serverdialog.cpp
+++ b/src/gui/serverdialog.cpp
@@ -366,6 +366,7 @@ void ServerDialog::connectToSelectedServer()
mServerInfo->name = server.name;
mServerInfo->description = server.description;
mServerInfo->registerUrl = server.registerUrl;
+ mServerInfo->onlineListUrl = server.onlineListUrl;
mServerInfo->save = true;
if (chatLogger)
@@ -637,6 +638,11 @@ void ServerDialog::loadServers(const bool addNew)
server.registerUrl = reinterpret_cast<const char*>(
subNode->xmlChildrenNode->content);
}
+ else if (xmlNameEqual(subNode, "onlineListUrl"))
+ {
+ server.onlineListUrl = reinterpret_cast<const char*>(
+ subNode->xmlChildrenNode->content);
+ }
}
server.version.first = font->getWidth(version);
@@ -655,6 +661,7 @@ void ServerDialog::loadServers(const bool addNew)
mServers[i].version = server.version;
mServers[i].description = server.description;
mServers[i].registerUrl = server.registerUrl;
+ mServers[i].onlineListUrl = server.onlineListUrl;
mServersListModel->setVersionString(i, version);
found = true;
break;
@@ -677,10 +684,13 @@ void ServerDialog::loadCustomServers()
const std::string hostKey = "MostUsedServerName" + index;
const std::string typeKey = "MostUsedServerType" + index;
const std::string portKey = "MostUsedServerPort" + index;
+ const std::string onlineListUrlKey
+ = "MostUsedServerOnlineList" + index;
ServerInfo server;
server.name = config.getValue(nameKey, "");
server.description = config.getValue(descKey, "");
+ server.onlineListUrl = config.getValue(onlineListUrlKey, "");
server.hostname = config.getValue(hostKey, "");
server.type = ServerInfo::parseType(config.getValue(typeKey, ""));
@@ -738,9 +748,12 @@ void ServerDialog::saveCustomServers(const ServerInfo &currentServer,
const std::string hostKey = "MostUsedServerName" + num;
const std::string typeKey = "MostUsedServerType" + num;
const std::string portKey = "MostUsedServerPort" + num;
+ const std::string onlineListUrlKey
+ = "MostUsedServerOnlineList" + num;
config.setValue(nameKey, toString(server.name));
config.setValue(descKey, toString(server.description));
+ config.setValue(onlineListUrlKey, toString(server.onlineListUrl));
config.setValue(hostKey, toString(server.hostname));
config.setValue(typeKey, serverTypeToString(server.type));
config.setValue(portKey, toString(server.port));
diff --git a/src/gui/whoisonline.cpp b/src/gui/whoisonline.cpp
index 27db30e77..b38218662 100644
--- a/src/gui/whoisonline.cpp
+++ b/src/gui/whoisonline.cpp
@@ -493,7 +493,7 @@ int WhoIsOnline::downloadThread(void *ptr)
int attempts = 0;
WhoIsOnline *wio = reinterpret_cast<WhoIsOnline *>(ptr);
CURLcode res;
- std::string url(Client::getServerName() + "/online.txt");
+ std::string url(Client::getOnlineUrl() + "/online.txt");
while (attempts < 1 && !wio->mDownloadComplete)
{