From ff887f7a418b392431b6f2a0408d20cf1ee5cf07 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 12 Oct 2014 17:57:28 +0300 Subject: Add channeltab class and colors for it. --- src/CMakeLists.txt | 2 ++ src/Makefile.am | 2 ++ src/gui/theme.cpp | 6 ++++ src/gui/theme.h | 6 ++++ src/gui/widgets/tabs/chat/channeltab.cpp | 50 ++++++++++++++++++++++++++++++++ src/gui/widgets/tabs/chat/channeltab.h | 46 +++++++++++++++++++++++++++++ src/gui/widgets/tabs/chat/chattabtype.h | 3 +- 7 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 src/gui/widgets/tabs/chat/channeltab.cpp create mode 100644 src/gui/widgets/tabs/chat/channeltab.h (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 72edf7e08..934c1a1b7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -120,6 +120,8 @@ SET(SRCS gui/models/colorlistmodel.h gui/widgets/tabs/chat/battletab.cpp gui/widgets/tabs/chat/battletab.h + gui/widgets/tabs/chat/channeltab.cpp + gui/widgets/tabs/chat/channeltab.h gui/widgets/browserbox.cpp gui/widgets/browserbox.h gui/widgets/button.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 13a3a1049..47b027fcc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -242,6 +242,8 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ gui/models/colorlistmodel.h \ gui/widgets/tabs/chat/battletab.cpp \ gui/widgets/tabs/chat/battletab.h \ + gui/widgets/tabs/chat/channeltab.cpp \ + gui/widgets/tabs/chat/channeltab.h \ gui/widgets/browserbox.cpp \ gui/widgets/browserbox.h \ gui/widgets/button.cpp \ diff --git a/src/gui/theme.cpp b/src/gui/theme.cpp index e52e80ed0..1428519af 100644 --- a/src/gui/theme.cpp +++ b/src/gui/theme.cpp @@ -681,6 +681,8 @@ static int readColorType(const std::string &type) "WINDOW_OUTLINE", "BATTLE_CHAT_TAB", "BATTLE_CHAT_TAB_OUTLINE", + "CHANNEL_CHAT_TAB", + "CHANNEL_CHAT_TAB_OUTLINE", "PARTY_CHAT_TAB", "PARTY_CHAT_TAB_OUTLINE", "PARTY_SOCIAL_TAB", @@ -693,6 +695,8 @@ static int readColorType(const std::string &type) "GM_CHAT_TAB_OUTLINE", "BATTLE_CHAT_TAB_HIGHLIGHTED", "BATTLE_CHAT_TAB_HIGHLIGHTED_OUTLINE", + "CHANNEL_CHAT_TAB_HIGHLIGHTED", + "CHANNEL_CHAT_TAB_HIGHLIGHTED_OUTLINE", "PARTY_CHAT_TAB_HIGHLIGHTED", "PARTY_CHAT_TAB_HIGHLIGHTED_OUTLINE", "PARTY_SOCIAL_TAB_HIGHLIGHTED", @@ -705,6 +709,8 @@ static int readColorType(const std::string &type) "GM_CHAT_TAB_HIGHLIGHTED_OUTLINE", "BATTLE_CHAT_TAB_SELECTED", "BATTLE_CHAT_TAB_SELECTED_OUTLINE", + "CHANNEL_CHAT_TAB_SELECTED", + "CHANNEL_CHAT_TAB_SELECTED_OUTLINE", "PARTY_CHAT_TAB_SELECTED", "PARTY_CHAT_TAB_SELECTED_OUTLINE", "PARTY_SOCIAL_TAB_SELECTED", diff --git a/src/gui/theme.h b/src/gui/theme.h index 6e63e05e6..5e65b3444 100644 --- a/src/gui/theme.h +++ b/src/gui/theme.h @@ -141,6 +141,8 @@ class Theme final : public Palette, WINDOW_OUTLINE, BATTLE_CHAT_TAB, BATTLE_CHAT_TAB_OUTLINE, + CHANNEL_CHAT_TAB, + CHANNEL_CHAT_TAB_OUTLINE, PARTY_CHAT_TAB, PARTY_CHAT_TAB_OUTLINE, PARTY_SOCIAL_TAB, @@ -153,6 +155,8 @@ class Theme final : public Palette, GM_CHAT_TAB_OUTLINE, BATTLE_CHAT_TAB_HIGHLIGHTED, BATTLE_CHAT_TAB_HIGHLIGHTED_OUTLINE, + CHANNEL_CHAT_TAB_HIGHLIGHTED, + CHANNEL_CHAT_TAB_HIGHLIGHTED_OUTLINE, PARTY_CHAT_TAB_HIGHLIGHTED, PARTY_CHAT_TAB_HIGHLIGHTED_OUTLINE, PARTY_SOCIAL_TAB_HIGHLIGHTED, @@ -165,6 +169,8 @@ class Theme final : public Palette, GM_CHAT_TAB_HIGHLIGHTED_OUTLINE, BATTLE_CHAT_TAB_SELECTED, BATTLE_CHAT_TAB_SELECTED_OUTLINE, + CHANNEL_CHAT_TAB_SELECTED, + CHANNEL_CHAT_TAB_SELECTED_OUTLINE, PARTY_CHAT_TAB_SELECTED, PARTY_CHAT_TAB_SELECTED_OUTLINE, PARTY_SOCIAL_TAB_SELECTED, diff --git a/src/gui/widgets/tabs/chat/channeltab.cpp b/src/gui/widgets/tabs/chat/channeltab.cpp new file mode 100644 index 000000000..f4b26f4bc --- /dev/null +++ b/src/gui/widgets/tabs/chat/channeltab.cpp @@ -0,0 +1,50 @@ +/* + * The ManaPlus Client + * Copyright (C) 2008-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "gui/widgets/tabs/chat/channeltab.h" + +#include "chatlogger.h" +#include "configuration.h" + +#include "gui/windows/chatwindow.h" + +#include "net/chathandler.h" + +#include "debug.h" + +ChannelTab::ChannelTab(const Widget2 *const widget, + const std::string &channel) : + ChatTab(widget, channel, channel, channel, ChatTabType::CHANNEL) +{ + setTabColors(Theme::CHANNEL_CHAT_TAB); +} + +ChannelTab::~ChannelTab() +{ +} + +void ChannelTab::handleInput(const std::string &msg) +{ + std::string newMsg; + newMsg = ChatWindow::doReplace(msg); + chatHandler->privateMessage(mChannelName, newMsg); +} diff --git a/src/gui/widgets/tabs/chat/channeltab.h b/src/gui/widgets/tabs/chat/channeltab.h new file mode 100644 index 000000000..4ca3d9379 --- /dev/null +++ b/src/gui/widgets/tabs/chat/channeltab.h @@ -0,0 +1,46 @@ +/* + * The ManaPlus Client + * Copyright (C) 2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef GUI_WIDGETS_TABS_CHAT_CHANNELTAB_H +#define GUI_WIDGETS_TABS_CHAT_CHANNELTAB_H + +#include "gui/widgets/tabs/chat/chattab.h" +#include "gui/widgets/tabs/chat/chattabtype.h" + +/** + * A tab for a chat channel. + */ +class ChannelTab final : public ChatTab +{ + public: + ChannelTab(const Widget2 *const widget, + const std::string &channel); + + A_DELETE_COPY(ChannelTab) + + ~ChannelTab(); + + protected: + void handleInput(const std::string &msg) override final; +}; + +#endif // GUI_WIDGETS_TABS_CHAT_CHANNELTAB_H diff --git a/src/gui/widgets/tabs/chat/chattabtype.h b/src/gui/widgets/tabs/chat/chattabtype.h index 4b0af6423..75c2f29eb 100644 --- a/src/gui/widgets/tabs/chat/chattabtype.h +++ b/src/gui/widgets/tabs/chat/chattabtype.h @@ -34,7 +34,8 @@ namespace ChatTabType TRADE, BATTLE, LANG, - GM + GM, + CHANNEL }; } // namespace ChatTabType -- cgit v1.2.3-60-g2f50