diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llparticipantlist.cpp | 35 | ||||
| -rw-r--r-- | indra/newview/llparticipantlist.h | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 17 | 
3 files changed, 54 insertions, 0 deletions
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index feaf7335c0..daf116d255 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -37,6 +37,8 @@  #include "llavataractions.h"  #include "llagent.h" +#include "llimview.h" +#include "llnotificationsutil.h"  #include "llparticipantlist.h"  #include "llspeakers.h"  #include "llviewercontrol.h" @@ -809,10 +811,43 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co  	LLIMSpeakerMgr* mgr = dynamic_cast<LLIMSpeakerMgr*>(mParent.mSpeakerMgr);  	if (mgr)  	{ +		if (!unmute) +		{ +			LLSD payload; +			payload["session_id"] = mgr->getSessionID(); +			payload["excluded_avatar_id"] = excluded_avatar_id; +			LLNotificationsUtil::add("ConfirmMuteAll", LLSD(), payload, confirmMuteAllCallback); +			return; +		} +  		mgr->moderateVoiceOtherParticipants(excluded_avatar_id, unmute);  	}  } +// static +void LLParticipantList::LLParticipantListMenu::confirmMuteAllCallback(const LLSD& notification, const LLSD& response) +{ +	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); +	if (option != 1) +	{ +		return; +	} + +	const LLSD& payload = notification["payload"]; +	const LLUUID& session_id = payload["session_id"]; +	const LLUUID& excluded_avatar_id = payload["excluded_avatar_id"]; + +	LLIMSpeakerMgr * speaker_manager = dynamic_cast<LLIMSpeakerMgr*> ( +			LLIMModel::getInstance()->getSpeakerManager(session_id)); +	if (speaker_manager) +	{ +		speaker_manager->moderateVoiceOtherParticipants(excluded_avatar_id, false); +	} + +	return; +} + +  bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)  {  	std::string item = userdata.asString(); diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h index bbef8baaac..abaf503868 100644 --- a/indra/newview/llparticipantlist.h +++ b/indra/newview/llparticipantlist.h @@ -216,6 +216,8 @@ class LLParticipantList  			 * @see moderateVoiceParticipant()  			 */  			void moderateVoiceOtherParticipants(const LLUUID& excluded_avatar_id, bool unmute); + +			static void confirmMuteAllCallback(const LLSD& notification, const LLSD& response);  		};  		/** diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 4f46e34520..cde1e47747 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6139,6 +6139,23 @@ Are you sure you want to leave this call?       <unique/>    </notification> +  <notification +   icon="alertmodal.tga" +   name="ConfirmMuteAll" +   type="alert"> +You have selected to mute all participants in a group call. +This will also cause all residents that later join the call to be +muted, even after you have left the call. + +Mute everyone? +    <usetemplate +     ignoretext="Confirm before I mute all participants in a group call" +     name="okcancelignore" +     notext="Ok" +     yestext="Cancel"/> +     <unique/> +  </notification> +    <global name="UnsupportedCPU">  - Your CPU speed does not meet the minimum requirements.    </global>  | 
