From e1066181d2d58c1fbbba33147ac334d64efea02f Mon Sep 17 00:00:00 2001 From: Jessica Date: Wed, 8 Jun 2011 21:27:14 -0400 Subject: [PATCH] Applied patch from Ansariel Hiller for FIRE-1032, add ability to block group chat --- indra/newview/app_settings/settings.xml | 22 +++++++++++++ indra/newview/llagent.cpp | 8 +++++ indra/newview/llagent.h | 1 + indra/newview/llimview.cpp | 33 +++++++++++++++++++ .../xui/en/panel_preferences_firestorm.xml | 18 ++++++++++ 5 files changed, 82 insertions(+) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7c7a04e48c..13da964d1e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2,6 +2,28 @@ + PhoenixMuteAllGroups + + Comment + Disable ALL group chats. + Persist + 1 + Type + Boolean + Value + 0 + + PhoenixMuteGroupWhenNoticesDisabled + + Comment + When 'Receive group notices' is disabled, disable group chat as well. + Persist + 1 + Type + Boolean + Value + 0 + RadarAlertChannel diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 03fa970440..1d1444c7db 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -2447,6 +2447,14 @@ void LLAgent::handleMaturity(const LLSD& newvalue) //---------------------------------------------------------------------------- +void LLAgent::buildFullname(std::string& name) const +{ + if (gAgentAvatarp) + { + name = gAgentAvatarp->getFullname(); + } +} + //*TODO remove, is not used anywhere as of August 20, 2009 void LLAgent::buildFullnameAndTitle(std::string& name) const { diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index b5882df480..fd56dba589 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -147,6 +147,7 @@ public: //-------------------------------------------------------------------- public: //*TODO remove, is not used as of August 20, 2009 + void buildFullname(std::string& name) const; void buildFullnameAndTitle(std::string &name) const; //-------------------------------------------------------------------- diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 0ba9fa1f8e..594ce66fee 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -3327,6 +3327,39 @@ public: } // [/RLVa:KB] + // Mute group chat port from Phoenix + BOOL PhoenixMuteAllGroups = gSavedSettings.getBOOL("PhoenixMuteAllGroups"); + BOOL PhoenixMuteGroupWhenNoticesDisabled = gSavedSettings.getBOOL("PhoenixMuteGroupWhenNoticesDisabled"); + LLGroupData group_data; + if (gAgent.getGroupData(session_id, group_data)) + { + if (PhoenixMuteAllGroups || (PhoenixMuteGroupWhenNoticesDisabled && !group_data.mAcceptNotices)) + { + llinfos << "Firestorm: muting group chat: " << group_data.mName << LL_ENDL; + + //KC: make sure we leave the group chat at the server end as well + std::string aname; + gAgent.buildFullname(aname); + pack_instant_message( + gMessageSystem, + gAgent.getID(), + FALSE, + gAgent.getSessionID(), + from_id, + aname, + LLStringUtil::null, + IM_ONLINE, + IM_SESSION_LEAVE, + session_id); + gAgent.sendReliableMessage(); + //gIMMgr->removeSession(session_id); + gIMMgr->leaveSession(session_id); + + return; + } + } + // END: Mute group chat port from Phoenix + // standard message, not from system std::string saved; if(offline == IM_OFFLINE) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml b/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml index 751e7fad72..0b635dea9f 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml @@ -508,6 +508,24 @@ height="20" control_name="PhoenixBoldGroupMods" label="Show group moderator messages in bold"/> + +