summaryrefslogtreecommitdiff
path: root/src/gui/windows
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-01-09 14:16:53 +0300
committerAndrei Karas <akaras@inbox.ru>2014-01-09 14:16:53 +0300
commit46585d7c62a53bfaf5173aa4e67d64735af1d2ed (patch)
tree3ffa2902ee94455441dcc7fe4ae7b1e027e302e7 /src/gui/windows
parentb3ad7da111d1a21f14de39d84be97104a9666017 (diff)
downloadmanaplus-46585d7c62a53bfaf5173aa4e67d64735af1d2ed.tar.gz
manaplus-46585d7c62a53bfaf5173aa4e67d64735af1d2ed.tar.bz2
manaplus-46585d7c62a53bfaf5173aa4e67d64735af1d2ed.tar.xz
manaplus-46585d7c62a53bfaf5173aa4e67d64735af1d2ed.zip
add ability to notify setup pages about disconnect from server.
Show mods page only if connected to server.
Diffstat (limited to 'src/gui/windows')
-rw-r--r--src/gui/windows/setup.cpp22
-rw-r--r--src/gui/windows/setup.h3
2 files changed, 24 insertions, 1 deletions
diff --git a/src/gui/windows/setup.cpp b/src/gui/windows/setup.cpp
index cd6e62882..5ba27f23c 100644
--- a/src/gui/windows/setup.cpp
+++ b/src/gui/windows/setup.cpp
@@ -59,6 +59,7 @@ Setup::Setup() :
Window(_("Setup"), false, nullptr, "setup.xml"),
gcn::ActionListener(),
mTabs(),
+ mModsTab(nullptr),
mWindowsToReset(),
mButtons(),
mResetWindows(nullptr),
@@ -125,7 +126,6 @@ void Setup::postInit()
mTabs.push_back(new Setup_Players(this));
mTabs.push_back(new Setup_Relations(this));
mTabs.push_back(new Setup_Theme(this));
- mTabs.push_back(new Setup_Mods(this));
mTabs.push_back(new Setup_Other(this));
FOR_EACH (std::list<SetupTab*>::const_iterator, i, mTabs)
@@ -203,6 +203,9 @@ void Setup::setInGame(const bool inGame)
void Setup::externalUpdate()
{
+ mModsTab = new Setup_Mods(this);
+ mTabs.push_back(mModsTab);
+ mPanel->addTab(mModsTab->getName(), mModsTab);
FOR_EACH (std::list<SetupTab*>::const_iterator, it, mTabs)
{
if (*it)
@@ -210,6 +213,23 @@ void Setup::externalUpdate()
}
}
+void Setup::externalUnload()
+{
+ FOR_EACH (std::list<SetupTab*>::const_iterator, it, mTabs)
+ {
+ if (*it)
+ (*it)->externalUnloaded();
+ }
+ if (mModsTab)
+ {
+ mTabs.remove(mModsTab);
+ Tab *const tab = mPanel->getTab(mModsTab->getName());
+ mPanel->removeTab(tab);
+ delete mModsTab;
+ mModsTab = nullptr;
+ }
+}
+
void Setup::registerWindowForReset(Window *const window)
{
mWindowsToReset.push_back(window);
diff --git a/src/gui/windows/setup.h b/src/gui/windows/setup.h
index 1b484b726..9039f4e87 100644
--- a/src/gui/windows/setup.h
+++ b/src/gui/windows/setup.h
@@ -57,6 +57,8 @@ class Setup final : public Window, public gcn::ActionListener
void externalUpdate();
+ void externalUnload();
+
void registerWindowForReset(Window *const window);
void clearWindowsForReset()
@@ -72,6 +74,7 @@ class Setup final : public Window, public gcn::ActionListener
private:
std::list<SetupTab*> mTabs;
+ SetupTab *mModsTab;
std::list<Window*> mWindowsToReset;
std::vector<Button*> mButtons;
Button *mResetWindows;