diff options
-rw-r--r-- | src/gui/chatwindow.cpp | 3 | ||||
-rw-r--r-- | src/gui/widgets/tab.cpp | 8 | ||||
-rw-r--r-- | src/gui/widgets/tab.h | 6 | ||||
-rw-r--r-- | src/playerrelations.cpp | 40 | ||||
-rw-r--r-- | src/playerrelations.h | 5 |
5 files changed, 53 insertions, 9 deletions
diff --git a/src/gui/chatwindow.cpp b/src/gui/chatwindow.cpp index 1712a3f16..a575b7054 100644 --- a/src/gui/chatwindow.cpp +++ b/src/gui/chatwindow.cpp @@ -34,6 +34,7 @@ #include "spellshortcut.h" #include "sound.h" +#include "gui/gui.h" #include "gui/setup.h" #include "gui/sdlinput.h" #include "gui/theme.h" @@ -1004,6 +1005,8 @@ ChatTab *ChatWindow::addWhisperTab(const std::string &nick, bool switchTo) else { ret = new WhisperTab(nick); + if (gui && !player_relations.isGoodName(nick)) + ret->setLabelFont(gui->getSecureFont()); mWhispers[tempNick] = ret; if (config.getBoolValue("showChatHistory")) ret->loadFromLogFile(nick); diff --git a/src/gui/widgets/tab.cpp b/src/gui/widgets/tab.cpp index 7287d6a8e..37a32480d 100644 --- a/src/gui/widgets/tab.cpp +++ b/src/gui/widgets/tab.cpp @@ -229,3 +229,11 @@ void Tab::widgetMoved(const gcn::Event &event _UNUSED_) { mRedraw = true; } + +void Tab::setLabelFont(gcn::Font *font) +{ + if (!mLabel) + return; + + mLabel->setFont(font); +} diff --git a/src/gui/widgets/tab.h b/src/gui/widgets/tab.h index f9f1fa4da..5847bd505 100644 --- a/src/gui/widgets/tab.h +++ b/src/gui/widgets/tab.h @@ -23,6 +23,7 @@ #ifndef TAB_H #define TAB_H +#include <guichan/widgets/label.hpp> #include <guichan/widgets/tab.hpp> #include <guichan/widgetlistener.hpp> @@ -67,6 +68,11 @@ class Tab : public gcn::Tab, public gcn::WidgetListener void widgetMoved(const gcn::Event &event); + void setLabelFont(gcn::Font *font); + + gcn::Label *getLabel() + { return mLabel; } + protected: friend class TabbedArea; virtual void setCurrent() diff --git a/src/playerrelations.cpp b/src/playerrelations.cpp index 87318ff43..7ff410064 100644 --- a/src/playerrelations.cpp +++ b/src/playerrelations.cpp @@ -494,6 +494,20 @@ PlayerRelationsManager::getPlayerIgnoreStrategies() return &mIgnoreStrategies; } +bool PlayerRelationsManager::isGoodName(std::string name) +{ + bool status(false); + + const int size = name.size(); + + if (size < 3 || mRelations[name]) + return true; + + status = checkName(name); + + return status; +} + bool PlayerRelationsManager::isGoodName(Being *being) { bool status(false); @@ -505,21 +519,29 @@ bool PlayerRelationsManager::isGoodName(Being *being) const std::string name = being->getName(); const int size = name.size(); - std::string check = config.getStringValue("unsecureChars"); if (size < 3 || mRelations[name]) return true; - else if (name.substr(0, 1) == " " || name.substr(size - 1, 1) == " ") - status = false; - else if (check.empty()) - status = true; - else if (name.find_first_of(check) != std::string::npos) - status = false; - else - status = true; + + status = checkName(name); being->setGoodStatus(status ? 1 : 0); return status; } +bool PlayerRelationsManager::checkName(const std::string &name) const +{ + const int size = name.size(); + std::string check = config.getStringValue("unsecureChars"); + + if (name.substr(0, 1) == " " || name.substr(size - 1, 1) == " ") + return false; + else if (check.empty()) + return true; + else if (name.find_first_of(check) != std::string::npos) + return false; + else + return true; +} + PlayerRelationsManager player_relations; diff --git a/src/playerrelations.h b/src/playerrelations.h index b4ef6dd45..613a27d01 100644 --- a/src/playerrelations.h +++ b/src/playerrelations.h @@ -219,6 +219,8 @@ class PlayerRelationsManager bool isGoodName(Being *being); + bool isGoodName(std::string name); + /** * Change the `ignore persist' flag. * @@ -233,6 +235,7 @@ class PlayerRelationsManager void removeListener(PlayerRelationsListener *listener) { mListeners.remove(listener); } + private: void signalUpdate(const std::string &name); @@ -240,6 +243,8 @@ class PlayerRelationsManager // ignored data upon reloading unsigned int mDefaultPermissions; + bool checkName(const std::string &name) const; + PlayerIgnoreStrategy *mIgnoreStrategy; std::map<std::string, PlayerRelation *> mRelations; std::list<PlayerRelationsListener *> mListeners; |