From 808a0b7aeb9c58724d3ac2e1a8bb8f3d3c2bdb1e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 3 Feb 2014 21:23:24 +0300 Subject: fix friend tab update in social window if friends was changed. --- src/gui/windows/socialwindow.cpp | 14 ++++++++++++++ src/gui/windows/socialwindow.h | 10 +++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) (limited to 'src/gui/windows') diff --git a/src/gui/windows/socialwindow.cpp b/src/gui/windows/socialwindow.cpp index 8b1d0d79c..ec7fce182 100644 --- a/src/gui/windows/socialwindow.cpp +++ b/src/gui/windows/socialwindow.cpp @@ -1276,6 +1276,7 @@ SocialWindow::SocialWindow() : // TRANSLATORS: social window name Window(_("Social"), false, nullptr, "social.xml"), gcn::ActionListener(), + PlayerRelationsListener(), mGuildInvited(0), mGuildAcceptDialog(nullptr), mGuildCreateDialog(nullptr), @@ -1372,10 +1373,12 @@ void SocialWindow::postInit() enableVisibleSound(true); updateButtons(); + player_relations.addListener(this); } SocialWindow::~SocialWindow() { + player_relations.removeListener(this); if (mGuildAcceptDialog) { mGuildAcceptDialog->close(); @@ -1740,6 +1743,7 @@ void SocialWindow::slowLogic() const unsigned int nowTime = cur_time; if (mNeedUpdate && nowTime - mLastUpdateTime > 1) { + logger->log("soc update"); mPlayers->updateList(); mFriends->updateList(); mNeedUpdate = false; @@ -1892,6 +1896,16 @@ void SocialWindow::updateGuildCounter(const int online, const int total) } } +void SocialWindow::updatedPlayer(const std::string &name) +{ + mNeedUpdate = true; +} + +void SocialWindow::updateAll() +{ + mNeedUpdate = true; +} + #ifdef USE_PROFILER void SocialWindow::logicChildren() { diff --git a/src/gui/windows/socialwindow.h b/src/gui/windows/socialwindow.h index 018b5f32c..e8dc44043 100644 --- a/src/gui/windows/socialwindow.h +++ b/src/gui/windows/socialwindow.h @@ -24,6 +24,8 @@ #include "gui/widgets/window.h" +#include "being/playerrelationslistener.h" + #include #include @@ -45,7 +47,9 @@ class TextDialog; * * \ingroup Interface */ -class SocialWindow final : public Window, private gcn::ActionListener +class SocialWindow final : public Window, + private gcn::ActionListener, + public PlayerRelationsListener { public: SocialWindow(); @@ -125,6 +129,10 @@ public: void updateGuildCounter(const int online = 0, const int total = 0); + void updatedPlayer(const std::string &name); + + void updateAll(); + #ifdef USE_PROFILER void logicChildren(); #endif -- cgit v1.2.3-70-g09d2