summaryrefslogtreecommitdiff
path: root/src/gui/chatwindow.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-09-06 00:20:01 +0300
committerAndrei Karas <akaras@inbox.ru>2013-09-06 01:02:51 +0300
commiteb6a0f8af34d0f8de808d474381c232716a7534d (patch)
tree01849b726376d9ebe58a13d99a09dc31a29eaf1e /src/gui/chatwindow.cpp
parent5413a9e7c761dc80cf33dbee8593b8721c1539b6 (diff)
downloadmanaplus-eb6a0f8af34d0f8de808d474381c232716a7534d.tar.gz
manaplus-eb6a0f8af34d0f8de808d474381c232716a7534d.tar.bz2
manaplus-eb6a0f8af34d0f8de808d474381c232716a7534d.tar.xz
manaplus-eb6a0f8af34d0f8de808d474381c232716a7534d.zip
add globals filter.
It can move some global messages into debug window. This mean it prevent from spam in chat message and spam sounds. By default filter configured to ignore globals from Sagatha.
Diffstat (limited to 'src/gui/chatwindow.cpp')
-rw-r--r--src/gui/chatwindow.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/gui/chatwindow.cpp b/src/gui/chatwindow.cpp
index 1065501b7..f5618a279 100644
--- a/src/gui/chatwindow.cpp
+++ b/src/gui/chatwindow.cpp
@@ -215,6 +215,7 @@ ChatWindow::ChatWindow():
mChatHistoryIndex(0),
mAwayLog(),
mHighlights(),
+ mGlobalsFilter(),
mGMLoaded(false),
mHaveMouse(false),
mAutoHide(config.getBoolValue("autohideChat")),
@@ -291,9 +292,11 @@ ChatWindow::ChatWindow():
initTradeFilter();
loadCustomList();
parseHighlights();
+ parseGlobalsFilter();
config.addListener("autohideChat", this);
config.addListener("showBattleEvents", this);
+ config.addListener("globalsFilter", this);
enableVisibleSound(true);
}
@@ -1683,6 +1686,18 @@ void ChatWindow::parseHighlights()
mHighlights.push_back(player_node->getName());
}
+void ChatWindow::parseGlobalsFilter()
+{
+ mGlobalsFilter.clear();
+ if (!player_node)
+ return;
+
+ splitToStringVector(mGlobalsFilter, config.getStringValue(
+ "globalsFilter"), ',');
+
+ mHighlights.push_back(player_node->getName());
+}
+
bool ChatWindow::findHighlight(const std::string &str)
{
return findI(str, mHighlights) != std::string::npos;
@@ -1708,6 +1723,8 @@ void ChatWindow::optionChanged(const std::string &name)
mAutoHide = config.getBoolValue("autohideChat");
else if (name == "showBattleEvents")
mShowBattleEvents = config.getBoolValue("showBattleEvents");
+ else if (name == "globalsFilter")
+ parseGlobalsFilter();
}
void ChatWindow::mouseMoved(gcn::MouseEvent &event)
@@ -1768,3 +1785,11 @@ void ChatWindow::logicChildren()
BLOCK_END("ChatWindow::logicChildren")
}
#endif
+
+void ChatWindow::addGlobalMessage(const std::string &line)
+{
+ if (debugChatTab && findI(line, mGlobalsFilter) != std::string::npos)
+ debugChatTab->chatLog(line, BY_OTHER);
+ else
+ localChatTab->chatLog(line, BY_GM);
+}