From f6cb5519a2cc4452055ff0bfb6f38990bc3e9e65 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 15 Jun 2017 20:37:18 +0300 Subject: Allow open server info window from game. --- src/gui/windowmenu.cpp | 5 +++++ src/gui/windows/serverdialog.cpp | 5 ++++- src/gui/windows/serverinfowindow.cpp | 10 ++++++++++ src/gui/windows/serverinfowindow.h | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) (limited to 'src/gui') diff --git a/src/gui/windowmenu.cpp b/src/gui/windowmenu.cpp index f45b292f0..41640a458 100644 --- a/src/gui/windowmenu.cpp +++ b/src/gui/windowmenu.cpp @@ -171,6 +171,11 @@ WindowMenu::WindowMenu(const Widget2 *const widget) : // TRANSLATORS: long button name for mail window. _("Mail"), x, h, InputAction::WINDOW_MAIL, Visible_true); + // TRANSLATORS: short button name for server info window. + addButton(N_("SI"), + // TRANSLATORS: long button name for server info window. + _("Server info"), x, h, InputAction::WINDOW_SERVER_INFO, + Visible_true); // TRANSLATORS: short button name for debug window. addButton(N_("DBG"), // TRANSLATORS: long button name for debug window. diff --git a/src/gui/windows/serverdialog.cpp b/src/gui/windows/serverdialog.cpp index 501557c8c..c8c0256ee 100644 --- a/src/gui/windows/serverdialog.cpp +++ b/src/gui/windows/serverdialog.cpp @@ -246,6 +246,7 @@ void ServerDialog::connectToSelectedServer() mServerInfo->freeSources = server.freeSources; mServerInfo->nonFreeSources = server.nonFreeSources; mServerInfo->docs = server.docs; + mServerInfo->serverUrl = server.serverUrl; settings.persistentIp = mServerInfo->persistentIp; settings.supportUrl = mServerInfo->supportUrl; @@ -316,7 +317,9 @@ void ServerDialog::action(const ActionEvent &event) const int index = mServersList->getSelected(); if (index >= 0) { - CREATEWIDGET(ServerInfoWindow, + if (serverInfoWindow != nullptr) + serverInfoWindow->scheduleDelete(); + serverInfoWindow = CREATEWIDGETR(ServerInfoWindow, mServers.at(index)); } } diff --git a/src/gui/windows/serverinfowindow.cpp b/src/gui/windows/serverinfowindow.cpp index 660dd0241..c0099d356 100644 --- a/src/gui/windows/serverinfowindow.cpp +++ b/src/gui/windows/serverinfowindow.cpp @@ -33,6 +33,8 @@ #include "debug.h" +ServerInfoWindow *serverInfoWindow = nullptr; + ServerInfoWindow::ServerInfoWindow(ServerInfo &serverInfo) : // TRANSLATORS: servers dialog name Window(_("Server info"), Modal_false, nullptr, "server_info.xml"), @@ -170,3 +172,11 @@ void ServerInfoWindow::addServerComment(const std::string &url, mBrowserBox->addRow(str); } } + +void ServerInfoWindow::close() +{ + Window::close(); + if (serverInfoWindow == this) + serverInfoWindow = nullptr; + scheduleDelete(); +} diff --git a/src/gui/windows/serverinfowindow.h b/src/gui/windows/serverinfowindow.h index f3e2b545e..699a00451 100644 --- a/src/gui/windows/serverinfowindow.h +++ b/src/gui/windows/serverinfowindow.h @@ -46,6 +46,8 @@ class ServerInfoWindow final : public Window, void handleLink(const std::string &link, MouseEvent *const event A_UNUSED) override final; + void close() override final; + protected: void showServerInfo(); @@ -61,4 +63,6 @@ class ServerInfoWindow final : public Window, ScrollArea *mScrollArea A_NONNULLPOINTER; }; +extern ServerInfoWindow *serverInfoWindow; + #endif // GUI_WINDOWS_SERVERINFOWINDOW_H -- cgit v1.2.3-70-g09d2