From a0de9bc8c0bec21d3a793e958b7a8a98ec482cf6 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 20 Oct 2013 20:11:32 +0300 Subject: Add emotes button in chat input line. Enabled by default. --- src/defaults.cpp | 1 + src/gui/widgets/tabs/setup_chat.cpp | 8 ++++++-- src/gui/windows/chatwindow.cpp | 39 ++++++++++++++++++++++++++++++++++--- src/gui/windows/chatwindow.h | 2 ++ 4 files changed, 45 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/defaults.cpp b/src/defaults.cpp index c1d1d2927..9e6716517 100644 --- a/src/defaults.cpp +++ b/src/defaults.cpp @@ -132,6 +132,7 @@ DefaultsData* getConfigDefaults() AddDEF("customcursor", true); AddDEF("showDidYouKnow", true); #endif + AddDEF("showEmotesButton", true); AddDEF("screen", false); AddDEF("hwaccel", false); AddDEF("sound", false); diff --git a/src/gui/widgets/tabs/setup_chat.cpp b/src/gui/widgets/tabs/setup_chat.cpp index e5acd10e5..121886830 100644 --- a/src/gui/widgets/tabs/setup_chat.cpp +++ b/src/gui/widgets/tabs/setup_chat.cpp @@ -120,6 +120,10 @@ Setup_Chat::Setup_Chat(const Widget2 *const widget) : new SetupItemCheckBox(_("Hide shop messages"), "", "hideShopMessages", this, "hideShopMessagesEvent"); + // TRANSLATORS: settings option + new SetupItemCheckBox(_("Show MVP messages"), "", + "showMVP", this, "showMVPEvent"); + // TRANSLATORS: settings group new SetupItemLabel(_("Tabs"), "", this); @@ -184,8 +188,8 @@ Setup_Chat::Setup_Chat(const Widget2 *const widget) : "globalsFilter", this, "globalsFilterEvent"); // TRANSLATORS: settings option - new SetupItemCheckBox(_("Show MVP messages"), "", - "showMVP", this, "showMVPEvent"); + new SetupItemCheckBox(_("Show emotes button in chat"), "", + "showEmotesButton", this, "showEmotesButtonEvent"); setDimension(gcn::Rectangle(0, 0, 550, 350)); } diff --git a/src/gui/windows/chatwindow.cpp b/src/gui/windows/chatwindow.cpp index 4533d7ee4..09685e88d 100644 --- a/src/gui/windows/chatwindow.cpp +++ b/src/gui/windows/chatwindow.cpp @@ -48,6 +48,7 @@ #include "gui/widgets/tabs/battletab.h" +#include "gui/widgets/button.h" #include "gui/widgets/dropdown.h" #include "gui/widgets/itemlinkhandler.h" #include "gui/widgets/scrollarea.h" @@ -119,10 +120,15 @@ class ChatInput final : public TextField if (!n) mFocusGaining = true; setVisible(n); - if (config.getBoolValue("hideChatInput")) + if (config.getBoolValue("hideChatInput") + || config.getBoolValue("showEmotesButton")) + { mWindow->adjustTabSize(); + } if (emoteWindow) + { emoteWindow->hide(); + } } void unprotectFocus() @@ -210,6 +216,7 @@ ChatWindow::ChatWindow(): mTradeFilter(), mColorListModel(new ColorListModel), mColorPicker(new DropDown(this, mColorListModel)), + mChatButton(new Button(this, ":)", "openemote", this)), mChatColor(config.getIntValue("chatColor")), mChatHistoryIndex(0), mAwayLog(), @@ -262,6 +269,8 @@ ChatWindow::ChatWindow(): if (emoteWindow) emoteWindow->addListeners(this); + mChatButton->adjustSize(); + mChatTabs->enableScrollButtons(true); mChatTabs->setFollowDownScroll(true); mChatTabs->setResizeHeight(false); @@ -317,6 +326,7 @@ void ChatWindow::postInit() add(mChatTabs); add(mChatInput); add(mColorPicker); + add(mChatButton); updateVisibility(); } @@ -361,8 +371,11 @@ void ChatWindow::adjustTabSize() const int inputHeight = mChatInput->getHeight(); const int frame2 = 2 * frame; const int awFrame2 = aw - frame2; - mChatInput->setPosition(frame, ah - inputHeight - frame); - mChatInput->setWidth(awFrame2); + const bool showEmotes = config.getBoolValue("showEmotesButton"); + const int chatButtonSize = showEmotes ? 20 : 0; + const int y = ah - inputHeight - frame; + mChatInput->setPosition(frame, y); + mChatInput->setWidth(awFrame2 - chatButtonSize); mChatTabs->setWidth(awFrame2); const int height = ah - frame2 - (inputHeight + frame2); if (mChatInput->isVisible() || !config.getBoolValue("hideChatInput")) @@ -370,6 +383,16 @@ void ChatWindow::adjustTabSize() else mChatTabs->setHeight(height + inputHeight); + if (showEmotes) + { + mChatButton->setVisible(mChatInput->isVisible()); + mChatButton->setPosition(aw - frame - chatButtonSize, y); + } + else + { + mChatButton->setVisible(false); + } + const ChatTab *const tab = getFocused(); if (tab) { @@ -510,6 +533,16 @@ void ChatWindow::action(const gcn::ActionEvent &event) } } } + else if (eventId == "openemote") + { + if (emoteWindow) + { + if (emoteWindow->isVisible()) + emoteWindow->hide(); + else + emoteWindow->show(); + } + } else if (eventId == "color") { if (emoteWindow) diff --git a/src/gui/windows/chatwindow.h b/src/gui/windows/chatwindow.h index 64d3d66e0..b2001a6ef 100644 --- a/src/gui/windows/chatwindow.h +++ b/src/gui/windows/chatwindow.h @@ -36,6 +36,7 @@ #include #include +class Button; class ChatTab; class ChatInput; class ColorListModel; @@ -360,6 +361,7 @@ class ChatWindow final : public Window, ColorListModel *mColorListModel; DropDown *mColorPicker; + Button *mChatButton; int mChatColor; unsigned int mChatHistoryIndex; std::list mAwayLog; -- cgit v1.2.3-70-g09d2