summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-08-22 03:07:13 +0300
committerAndrei Karas <akaras@inbox.ru>2011-08-22 03:07:13 +0300
commitdddfb405de9d04f50d3a95cc3b0ebc3e49884a65 (patch)
tree4bb96a90cb585a65025533e512e7c3de7cffed00 /src/gui
parent07c2eb8ffd62fe69f410cc045efc837441a6b6d4 (diff)
downloadmv-dddfb405de9d04f50d3a95cc3b0ebc3e49884a65.tar.gz
mv-dddfb405de9d04f50d3a95cc3b0ebc3e49884a65.tar.bz2
mv-dddfb405de9d04f50d3a95cc3b0ebc3e49884a65.tar.xz
mv-dddfb405de9d04f50d3a95cc3b0ebc3e49884a65.zip
Add highlight list option.
Before in highlight was only player nick.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/chatwindow.cpp20
-rw-r--r--src/gui/chatwindow.h5
-rw-r--r--src/gui/setup_chat.cpp8
-rw-r--r--src/gui/widgets/chattab.cpp4
4 files changed, 33 insertions, 4 deletions
diff --git a/src/gui/chatwindow.cpp b/src/gui/chatwindow.cpp
index 1ef3139db..8896ca028 100644
--- a/src/gui/chatwindow.cpp
+++ b/src/gui/chatwindow.cpp
@@ -211,6 +211,7 @@ ChatWindow::ChatWindow():
fillCommands();
initTradeFilter();
loadCustomList();
+ parseHighlights();
}
ChatWindow::~ChatWindow()
@@ -1503,7 +1504,7 @@ void ChatWindow::addToAwayLog(std::string line)
if (mAwayLog.size() > 20)
mAwayLog.pop_front();
- if (line.find(player_node->getName()) != std::string::npos)
+ if (findI(line, mHighlights) != std::string::npos)
mAwayLog.push_back("##9away:" + line);
}
@@ -1520,3 +1521,20 @@ void ChatWindow::displayAwayLog()
++i;
}
}
+
+void ChatWindow::parseHighlights()
+{
+ mHighlights.clear();
+ if (!player_node)
+ return;
+
+ splitToStringVector(mHighlights, config.getStringValue(
+ "highlightWords"), ',');
+
+ mHighlights.push_back(player_node->getName());
+}
+
+bool ChatWindow::findHighlight(std::string &str)
+{
+ return findI(str, mHighlights) != std::string::npos;
+} \ No newline at end of file
diff --git a/src/gui/chatwindow.h b/src/gui/chatwindow.h
index b6a37ef79..6e1d548a3 100644
--- a/src/gui/chatwindow.h
+++ b/src/gui/chatwindow.h
@@ -260,6 +260,10 @@ class ChatWindow : public Window,
void clearAwayLog()
{ mAwayLog.clear(); }
+ void parseHighlights();
+
+ bool findHighlight(std::string &str);
+
protected:
friend class ChatTab;
friend class WhisperTab;
@@ -329,6 +333,7 @@ class ChatWindow : public Window,
int mChatColor;
unsigned int mChatHistoryIndex;
std::list<std::string> mAwayLog;
+ std::vector<std::string> mHighlights;
};
extern ChatWindow *chatWindow;
diff --git a/src/gui/setup_chat.cpp b/src/gui/setup_chat.cpp
index 722a3f8b2..9e75b9c0a 100644
--- a/src/gui/setup_chat.cpp
+++ b/src/gui/setup_chat.cpp
@@ -120,6 +120,11 @@ Setup_Chat::Setup_Chat()
new SetupItemCheckBox(_("Use local time"), "",
"useLocalTime", this, "useLocalTimeEvent");
+ new SetupItemLabel(_("Other"), "", this);
+
+ new SetupItemTextField(_("Highlight words (separated by comma)"), "",
+ "highlightWords", this, "highlightWordsEvent");
+
setDimension(gcn::Rectangle(0, 0, 550, 350));
}
@@ -128,5 +133,8 @@ void Setup_Chat::apply()
SetupTabScroll::apply();
if (chatWindow)
+ {
chatWindow->adjustTabSize();
+ chatWindow->parseHighlights();
+ }
}
diff --git a/src/gui/widgets/chattab.cpp b/src/gui/widgets/chattab.cpp
index 785bdd6be..81c0d277f 100644
--- a/src/gui/widgets/chattab.cpp
+++ b/src/gui/widgets/chattab.cpp
@@ -283,9 +283,7 @@ void ChatTab::chatLog(std::string line, Own own,
{
if (player_node)
{
- std::string::size_type pos
- = tmp.text.find(player_node->getName());
- if (pos != std::string::npos)
+ if (chatWindow && chatWindow->findHighlight(tmp.text))
setFlash(2);
else
setFlash(1);