From ec552e6430ac86b1234c9a7798bf4e028a3c78c0 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 1 Jun 2011 21:49:35 +0300 Subject: Set secure font in chat tab name if need. --- src/gui/chatwindow.cpp | 3 +++ src/gui/widgets/tab.cpp | 8 ++++++++ src/gui/widgets/tab.h | 6 ++++++ src/playerrelations.cpp | 40 +++++++++++++++++++++++++++++++--------- 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 #include #include @@ -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 mRelations; std::list mListeners; -- cgit v1.2.3-60-g2f50