diff --git a/indra/newview/fsfloaternearbychat.cpp b/indra/newview/fsfloaternearbychat.cpp index 60ec4d52db..6ce3eba1bf 100644 --- a/indra/newview/fsfloaternearbychat.cpp +++ b/indra/newview/fsfloaternearbychat.cpp @@ -90,6 +90,9 @@ FSFloaterNearbyChat::FSFloaterNearbyChat(const LLSD& key) ,mUnreadMessages(0) ,mUnreadMessagesMuted(0) { + //menu + mEnableCallbackRegistrar.add("ChatOptions.Check", boost::bind(&FSFloaterNearbyChat::onChatOptionsCheckContextMenuItem, this, _2)); + mCommitCallbackRegistrar.add("ChatOptions.Action", boost::bind(&FSFloaterNearbyChat::onChatOptionsContextMenuItemClicked, this, _2)); } FSFloaterNearbyChat::~FSFloaterNearbyChat() @@ -115,21 +118,6 @@ void FSFloaterNearbyChat::updateFSUseNearbyChatConsole(const LLSD &data) BOOL FSFloaterNearbyChat::postBuild() { setIsSingleInstance(TRUE); - - //menu - LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; - LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar; - - enable_registrar.add("NearbyChat.Check", boost::bind(&FSFloaterNearbyChat::onNearbyChatCheckContextMenuItem, this, _2)); - registrar.add("NearbyChat.Action", boost::bind(&FSFloaterNearbyChat::onNearbyChatContextMenuItemClicked, this, _2)); - - LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile("menu_nearby_chat.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); - if (menu) - { - mPopupMenuHandle = menu->getHandle(); - } - - gSavedSettings.declareS32("nearbychat_showicons_and_names", 2, "NearByChat header settings"); mInputEditor = getChild("chat_box"); mInputEditor->setAutoreplaceCallback(boost::bind(&LLAutoReplace::autoreplaceCallback, LLAutoReplace::getInstance(), _1, _2, _3, _4, _5)); @@ -302,13 +290,6 @@ BOOL FSFloaterNearbyChat::focusFirstItem(BOOL prefer_text_fields, BOOL focus_fla return TRUE; } -void FSFloaterNearbyChat::onNearbySpeakers() -{ - LLSD param; - param["people_panel_tab_name"] = "nearby_panel"; - LLFloaterSidePanelContainer::showPanel("people", "panel_people", param); -} - void FSFloaterNearbyChat::onHistoryButtonClicked() { if (gSavedSettings.getBOOL("FSUseBuiltInHistory")) @@ -321,17 +302,48 @@ void FSFloaterNearbyChat::onHistoryButtonClicked() } } -void FSFloaterNearbyChat::onNearbyChatContextMenuItemClicked(const LLSD& userdata) +void FSFloaterNearbyChat::onChatOptionsContextMenuItemClicked(const LLSD& userdata) { + std::string option = userdata.asString(); + + if (option == "blocklist") + { + if (gSavedSettings.getBOOL("FSUseStandaloneBlocklistFloater")) + { + LLFloaterReg::toggleInstance("fs_blocklist"); + } + else + { + LLPanel* panel = LLFloaterSidePanelContainer::getPanel("people", "panel_people"); + if (!panel) + { + return; + } + + if (panel->isInVisibleChain()) + { + LLFloaterReg::hideInstance("people"); + } + else + { + LLFloaterSidePanelContainer::showPanel("people", "panel_people", LLSD().with("people_panel_tab_name", "blocked_panel")); + } + } + } } -bool FSFloaterNearbyChat::onNearbyChatCheckContextMenuItem(const LLSD& userdata) +bool FSFloaterNearbyChat::onChatOptionsCheckContextMenuItem(const LLSD& userdata) { - std::string str = userdata.asString(); - if (str == "nearby_people") + std::string option = userdata.asString(); + + if (option == "blocklist") { - onNearbySpeakers(); + if (gSavedSettings.getBOOL("FSUseStandaloneBlocklistFloater")) + { + return LLFloaterReg::instanceVisible("fs_blocklist"); + } } + return false; } diff --git a/indra/newview/fsfloaternearbychat.h b/indra/newview/fsfloaternearbychat.h index 61568670d0..5fb876b712 100644 --- a/indra/newview/fsfloaternearbychat.h +++ b/indra/newview/fsfloaternearbychat.h @@ -49,16 +49,16 @@ public: FSFloaterNearbyChat(const LLSD& key); ~FSFloaterNearbyChat(); - BOOL postBuild (); + BOOL postBuild(); /** @param archive true - to save a message to the chat history log */ - void addMessage (const LLChat& message,bool archive = true, const LLSD &args = LLSD()); - void onNearbyChatContextMenuItemClicked(const LLSD& userdata); - bool onNearbyChatCheckContextMenuItem(const LLSD& userdata); + void addMessage(const LLChat& message,bool archive = true, const LLSD &args = LLSD()); + void onChatOptionsContextMenuItemClicked(const LLSD& userdata); + bool onChatOptionsCheckContextMenuItem(const LLSD& userdata); - /*virtual*/ void onOpen (const LLSD& key); + /*virtual*/ void onOpen(const LLSD& key); + /*virtual*/ void setVisible(BOOL visible); - /*virtual*/ void setVisible(BOOL visible); void openFloater(const LLSD& key); void clearChatHistory(); @@ -115,10 +115,6 @@ protected: static S32 sLastSpecialChatChannel; private: - void onNearbySpeakers(); - -private: - LLHandle mPopupMenuHandle; FSChatHistory* mChatHistory; FSChatHistory* mChatHistoryMuted; LLChatEntry* mInputEditor; diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index dc3cdc47a8..49ec5ae97c 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -613,8 +613,6 @@ BOOL LLFloaterPreference::postBuild() { // [FS communication UI] //gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&LLFloaterIMSessionTab::processChatHistoryStyleUpdate, false)); - gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&FSFloaterIM::processChatHistoryStyleUpdate, _2)); - gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&FSFloaterNearbyChat::processChatHistoryStyleUpdate, _2)); gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&FSFloaterIM::processChatHistoryStyleUpdate, _2)); gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&FSFloaterNearbyChat::processChatHistoryStyleUpdate, _2)); // [FS communication UI] diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index ebbb1fb9c0..7b6b414531 100755 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -81,6 +81,8 @@ // Firestorm inclues #include "fsfloatercontacts.h" +#include "fsfloaterim.h" +#include "fsfloaternearbychat.h" #include "fsfloaterposestand.h" #include "fsfloaterteleporthistory.h" #include "fslslbridge.h" @@ -1024,6 +1026,10 @@ void settings_setup_listeners() gSavedSettings.getControl("FSUseAzertyKeyboardLayout")->getCommitSignal()->connect(boost::bind(&handleKeyboardLayoutChanged, _2)); + // [FS communication UI] + gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&FSFloaterIM::processChatHistoryStyleUpdate, _2)); + gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&FSFloaterNearbyChat::processChatHistoryStyleUpdate, _2)); + gSavedSettings.getControl(RLV_SETTING_MAIN)->getSignal()->connect(boost::bind(&RlvSettings::onChangedSettingMain, _2)); } diff --git a/indra/newview/skins/default/xui/de/floater_fs_nearby_chat.xml b/indra/newview/skins/default/xui/de/floater_fs_nearby_chat.xml index aedb27644f..b54f62cc25 100644 --- a/indra/newview/skins/default/xui/de/floater_fs_nearby_chat.xml +++ b/indra/newview/skins/default/xui/de/floater_fs_nearby_chat.xml @@ -13,6 +13,9 @@ - + + + +