summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/widgets/tabs/chat/chattab.cpp4
-rw-r--r--src/gui/windows/chatwindow.cpp31
-rw-r--r--src/gui/windows/chatwindow.h6
3 files changed, 40 insertions, 1 deletions
diff --git a/src/gui/widgets/tabs/chat/chattab.cpp b/src/gui/widgets/tabs/chat/chattab.cpp
index 5dc18b329..3ba1ee00a 100644
--- a/src/gui/widgets/tabs/chat/chattab.cpp
+++ b/src/gui/widgets/tabs/chat/chattab.cpp
@@ -43,6 +43,7 @@
#include "input/inputmanager.h"
#include "net/chathandler.h"
+#include "net/serverfeatures.h"
#include "resources/iteminfo.h"
@@ -217,7 +218,8 @@ void ChatTab::chatLog(std::string line, ChatMsgType::Type own,
}
// if configured, move magic messages log to debug chat tab
- if (localChatTab && this == localChatTab
+ if (!serverFeatures->haveChatChannels()
+ && localChatTab && this == localChatTab
&& ((config.getBoolValue("showMagicInDebug")
&& own == ChatMsgType::BY_PLAYER
&& tmp.text.length() > 1
diff --git a/src/gui/windows/chatwindow.cpp b/src/gui/windows/chatwindow.cpp
index 4abc70561..5cf727d92 100644
--- a/src/gui/windows/chatwindow.cpp
+++ b/src/gui/windows/chatwindow.cpp
@@ -1559,6 +1559,10 @@ bool ChatWindow::resortChatLog(std::string line, ChatMsgType::Type own,
ignoreRecord, tryRemoveColors);
}
}
+ else if (serverFeatures->haveChatChannels())
+ {
+ channelChatLog(channel, line, own, ignoreRecord, tryRemoveColors);
+ }
else if (mShowAllLang)
{
localChatTab->chatLog(prefix + line, own,
@@ -1584,6 +1588,33 @@ void ChatWindow::battleChatLog(const std::string &line, ChatMsgType::Type own,
debugChatTab->chatLog(line, own, ignoreRecord, tryRemoveColors);
}
+void ChatWindow::channelChatLog(const std::string &channel,
+ const std::string &line,
+ ChatMsgType::Type own,
+ const bool ignoreRecord,
+ const bool tryRemoveColors)
+{
+ std::string tempChannel = channel;
+ toLower(tempChannel);
+
+ ChannelTab *tab = nullptr;
+ const ChannelMap::const_iterator i = mChannels.find(tempChannel);
+
+ if (i != mChannels.end())
+ {
+ tab = i->second;
+ }
+ else
+ {
+ tab = addChannelTab(channel, false);
+ if (tab)
+ saveState();
+ }
+
+ if (tab)
+ tab->chatLog(line, own, ignoreRecord, tryRemoveColors);
+}
+
void ChatWindow::localPetSay(const std::string &nick, const std::string &text)
{
Being *const being = actorManager->findBeingByName(
diff --git a/src/gui/windows/chatwindow.h b/src/gui/windows/chatwindow.h
index 068ec4111..b21930bd0 100644
--- a/src/gui/windows/chatwindow.h
+++ b/src/gui/windows/chatwindow.h
@@ -223,6 +223,12 @@ class ChatWindow final : public Window,
const bool ignoreRecord = false,
const bool tryRemoveColors = true);
+ void channelChatLog(const std::string &channel,
+ const std::string &line,
+ ChatMsgType::Type own,
+ const bool ignoreRecord,
+ const bool tryRemoveColors);
+
void updateOnline(const std::set<std::string> &onlinePlayers) const;
void loadState();