diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llinspectavatar.cpp | 576 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/inspect_avatar.xml | 114 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml | 143 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml | 252 | 
4 files changed, 16 insertions, 1069 deletions
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index b2a8c6e3e6..8a15cd279f 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -28,38 +28,21 @@  #include "llinspectavatar.h"  // viewer files -#include "llagent.h" -#include "llagentdata.h" -#include "llavataractions.h" +#include "llavatariconctrl.h"  #include "llavatarnamecache.h"  #include "llavatarpropertiesprocessor.h" -#include "llcallingcard.h"  #include "lldateutil.h" -#include "llfloaterreporter.h" -#include "llfloaterworldmap.h" -#include "llimview.h"  #include "llinspect.h" -#include "llmutelist.h" -#include "llpanelblockedlist.h" +#include "llslurl.h"  #include "llstartup.h" -#include "llspeakers.h" -#include "llviewermenu.h" -#include "llvoiceclient.h" -#include "llviewerobjectlist.h"  #include "lltransientfloatermgr.h" -#include "llnotificationsutil.h"  // Linden libraries  #include "llfloater.h"  #include "llfloaterreg.h" -#include "llmenubutton.h"  #include "lltextbox.h" -#include "lltoggleablemenu.h"  #include "lltooltip.h"	// positionViewNearMouse()  #include "lltrans.h" -#include "lluictrl.h" - -#include "llavatariconctrl.h"  class LLFetchAvatarData; @@ -81,22 +64,13 @@ public:  	LLInspectAvatar(const LLSD& avatar_id);  	virtual ~LLInspectAvatar(); -	/*virtual*/ BOOL postBuild(void); -	  	// Because floater is single instance, need to re-parse data on each spawn  	// (for example, inspector about same avatar but in different position)  	/*virtual*/ void onOpen(const LLSD& avatar_id); -	// When closing they should close their gear menu  -	/*virtual*/ void onClose(bool app_quitting); -	  	// Update view based on information from avatar properties processor  	void processAvatarData(LLAvatarData* data); -	// override the inspector mouse leave so timer is only paused if  -	// gear menu is not open -	/* virtual */ void onMouseLeave(S32 x, S32 y, MASK mask); -	  	virtual LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::GLOBAL; }  private: @@ -104,47 +78,6 @@ private:  	// Used on construction and if avatar id changes.  	void requestUpdate(); -	// Set the volume slider to this user's current client-side volume setting, -	// hiding/disabling if the user is not nearby. -	void updateVolumeSlider(); - -	// Shows/hides moderator panel depending on voice state  -	void updateModeratorPanel(); - -	// Moderator ability to enable/disable voice chat for avatar -	void toggleSelectedVoice(bool enabled); -	 -	// Button callbacks -	void onClickAddFriend(); -	void onClickViewProfile(); -	void onClickIM(); -	void onClickCall(); -	void onClickTeleport(); -	void onClickInviteToGroup(); -	void onClickPay(); -	void onClickShare(); -	void onToggleMute(); -	void onClickReport(); -	void onClickFreeze(); -	void onClickEject(); -	void onClickKick(); -	void onClickCSR(); -	void onClickZoomIn();   -	void onClickFindOnMap(); -	bool onVisibleFindOnMap(); -	bool onVisibleEject(); -	bool onVisibleFreeze(); -	bool onVisibleZoomIn(); -	void onClickMuteVolume(); -	void onVolumeChange(const LLSD& data); -	bool enableMute(); -	bool enableUnmute(); -	bool enableTeleportOffer(); -	bool godModeEnabled(); - -	// Is used to determine if "Add friend" option should be enabled in gear menu -	bool isNotFriend(); -	  	void onAvatarNameCache(const LLUUID& agent_id,  						   const LLAvatarName& av_name); @@ -209,39 +142,8 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)  	mAvatarName(),  	mPropertiesRequest(NULL)  { -	mCommitCallbackRegistrar.add("InspectAvatar.ViewProfile",	boost::bind(&LLInspectAvatar::onClickViewProfile, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.AddFriend",	boost::bind(&LLInspectAvatar::onClickAddFriend, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.IM", -		boost::bind(&LLInspectAvatar::onClickIM, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Call",		boost::bind(&LLInspectAvatar::onClickCall, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Teleport",	boost::bind(&LLInspectAvatar::onClickTeleport, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.InviteToGroup",	boost::bind(&LLInspectAvatar::onClickInviteToGroup, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Pay",	boost::bind(&LLInspectAvatar::onClickPay, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Share",	boost::bind(&LLInspectAvatar::onClickShare, this)); -	mCommitCallbackRegistrar.add("InspectAvatar.ToggleMute",	boost::bind(&LLInspectAvatar::onToggleMute, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Freeze", boost::bind(&LLInspectAvatar::onClickFreeze, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Eject", boost::bind(&LLInspectAvatar::onClickEject, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Kick", boost::bind(&LLInspectAvatar::onClickKick, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.CSR", boost::bind(&LLInspectAvatar::onClickCSR, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Report",	boost::bind(&LLInspectAvatar::onClickReport, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.FindOnMap",	boost::bind(&LLInspectAvatar::onClickFindOnMap, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.ZoomIn", boost::bind(&LLInspectAvatar::onClickZoomIn, this)); -	mCommitCallbackRegistrar.add("InspectAvatar.DisableVoice", boost::bind(&LLInspectAvatar::toggleSelectedVoice, this, false)); -	mCommitCallbackRegistrar.add("InspectAvatar.EnableVoice", boost::bind(&LLInspectAvatar::toggleSelectedVoice, this, true)); - -	mEnableCallbackRegistrar.add("InspectAvatar.EnableGod",	boost::bind(&LLInspectAvatar::godModeEnabled, this));	 -	mEnableCallbackRegistrar.add("InspectAvatar.VisibleFindOnMap",	boost::bind(&LLInspectAvatar::onVisibleFindOnMap, this));	 -	mEnableCallbackRegistrar.add("InspectAvatar.VisibleEject",	boost::bind(&LLInspectAvatar::onVisibleEject, this));	 -	mEnableCallbackRegistrar.add("InspectAvatar.VisibleFreeze",	boost::bind(&LLInspectAvatar::onVisibleFreeze, this));	 -	mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn", boost::bind(&LLInspectAvatar::onVisibleZoomIn, this)); -	mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this)); -	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableCall", boost::bind(&LLAvatarActions::canCall)); -	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableTeleportOffer", boost::bind(&LLInspectAvatar::enableTeleportOffer, this)); -	mEnableCallbackRegistrar.add("InspectAvatar.EnableMute", boost::bind(&LLInspectAvatar::enableMute, this)); -	mEnableCallbackRegistrar.add("InspectAvatar.EnableUnmute", boost::bind(&LLInspectAvatar::enableUnmute, this)); -  	// can't make the properties request until the widgets are constructed -	// as it might return immediately, so do it in postBuild. +	// as it might return immediately, so do it in onOpen.  	LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);  	LLTransientFloater::init(this); @@ -257,25 +159,6 @@ LLInspectAvatar::~LLInspectAvatar()  	LLTransientFloaterMgr::getInstance()->removeControlView(this);  } -/*virtual*/ -BOOL LLInspectAvatar::postBuild(void) -{ -	getChild<LLUICtrl>("add_friend_btn")->setCommitCallback( -		boost::bind(&LLInspectAvatar::onClickAddFriend, this) ); - -	getChild<LLUICtrl>("view_profile_btn")->setCommitCallback( -		boost::bind(&LLInspectAvatar::onClickViewProfile, this) ); - -	getChild<LLUICtrl>("mute_btn")->setCommitCallback( -		boost::bind(&LLInspectAvatar::onClickMuteVolume, this) ); - -	getChild<LLUICtrl>("volume_slider")->setCommitCallback( -		boost::bind(&LLInspectAvatar::onVolumeChange, this, _2)); - -	return TRUE; -} - -  // Multiple calls to showInstance("inspect_avatar", foo) will provide different  // LLSD for foo, which we will catch here.  //virtual @@ -287,11 +170,6 @@ void LLInspectAvatar::onOpen(const LLSD& data)  	// Extract appropriate avatar id  	mAvatarID = data["avatar_id"]; -	BOOL self = mAvatarID == gAgent.getID(); -	 -	getChild<LLUICtrl>("gear_self_btn")->setVisible(self); -	getChild<LLUICtrl>("gear_btn")->setVisible(!self); -  	// Position the inspector relative to the mouse cursor  	// Similar to how tooltips are positioned  	// See LLToolTipMgr::createToolTip @@ -304,20 +182,13 @@ void LLInspectAvatar::onOpen(const LLSD& data)  		LLUI::positionViewNearMouse(this);  	} +	// Generate link to avatar profile. +	getChild<LLUICtrl>("avatar_profile_link")->setTextArg("[LINK]", LLSLURL("agent", mAvatarID, "about").getSLURLString()); +  	// can't call from constructor as widgets are not built yet  	requestUpdate(); - -	updateVolumeSlider(); - -	updateModeratorPanel();  } -// virtual -void LLInspectAvatar::onClose(bool app_quitting) -{   -  getChild<LLMenuButton>("gear_btn")->hideMenu(); -}	 -  void LLInspectAvatar::requestUpdate()  {  	// Don't make network requests when spawning from the debug menu at the @@ -344,25 +215,6 @@ void LLInspectAvatar::requestUpdate()  	delete mPropertiesRequest;  	mPropertiesRequest = new LLFetchAvatarData(mAvatarID, this); -	// You can't re-add someone as a friend if they are already your friend -	bool is_friend = LLAvatarTracker::instance().getBuddyInfo(mAvatarID) != NULL; -	bool is_self = (mAvatarID == gAgentID); -	if (is_self) -	{ -		getChild<LLUICtrl>("add_friend_btn")->setVisible(false); -		getChild<LLUICtrl>("im_btn")->setVisible(false); -	} -	else if (is_friend) -	{ -		getChild<LLUICtrl>("add_friend_btn")->setVisible(false); -		getChild<LLUICtrl>("im_btn")->setVisible(true); -	} -	else -	{ -		getChild<LLUICtrl>("add_friend_btn")->setVisible(true); -		getChild<LLUICtrl>("im_btn")->setVisible(false); -	} -  	// Use an avatar_icon even though the image id will come down with the  	// avatar properties because the avatar_icon code maintains a cache of icons  	// and this may result in the image being visible sooner. @@ -405,213 +257,6 @@ void LLInspectAvatar::processAvatarData(LLAvatarData* data)  	mPropertiesRequest = NULL;  } -// For the avatar inspector, we only want to unpause the fade timer  -// if neither the gear menu or self gear menu are open -void LLInspectAvatar::onMouseLeave(S32 x, S32 y, MASK mask) -{ -	LLToggleableMenu* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu(); -	LLToggleableMenu* gear_menu_self = getChild<LLMenuButton>("gear_self_btn")->getMenu(); -	if ( gear_menu && gear_menu->getVisible() && -		 gear_menu_self && gear_menu_self->getVisible() ) -	{ -		return; -	} - -	if(childHasVisiblePopupMenu()) -	{ -		return; -	} - -	mOpenTimer.unpause(); -} - -void LLInspectAvatar::updateModeratorPanel() -{ -	bool enable_moderator_panel = false; - -    if (LLVoiceChannel::getCurrentVoiceChannel() && -		mAvatarID != gAgent.getID()) -    { -		LLUUID session_id = LLVoiceChannel::getCurrentVoiceChannel()->getSessionID(); - -		if (session_id != LLUUID::null) -		{ -			LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id); - -			if (speaker_mgr) -			{ -				LLPointer<LLSpeaker> self_speakerp = speaker_mgr->findSpeaker(gAgent.getID()); -				LLPointer<LLSpeaker> selected_speakerp = speaker_mgr->findSpeaker(mAvatarID); -				 -				if(speaker_mgr->isVoiceActive() && selected_speakerp &&  -					selected_speakerp->isInVoiceChannel() && -					((self_speakerp && self_speakerp->mIsModerator) || gAgent.isGodlike())) -				{ -					getChild<LLUICtrl>("enable_voice")->setVisible(selected_speakerp->mModeratorMutedVoice); -					getChild<LLUICtrl>("disable_voice")->setVisible(!selected_speakerp->mModeratorMutedVoice); - -					enable_moderator_panel = true; -				} -			} -		} -	} - -	if (enable_moderator_panel) -	{ -		if (!getChild<LLUICtrl>("moderator_panel")->getVisible()) -		{ -			getChild<LLUICtrl>("moderator_panel")->setVisible(true); -			// stretch the floater so it can accommodate the moderator panel -			reshape(getRect().getWidth(), getRect().getHeight() + getChild<LLUICtrl>("moderator_panel")->getRect().getHeight()); -		} -	} -	else if (getChild<LLUICtrl>("moderator_panel")->getVisible()) -	{ -		getChild<LLUICtrl>("moderator_panel")->setVisible(false); -		// shrink the inspector floater back to original size -		reshape(getRect().getWidth(), getRect().getHeight() - getChild<LLUICtrl>("moderator_panel")->getRect().getHeight());					 -	} -} - -void LLInspectAvatar::toggleSelectedVoice(bool enabled) -{ -	LLUUID session_id = LLVoiceChannel::getCurrentVoiceChannel()->getSessionID(); -	LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id); - -	if (speaker_mgr) -	{ -		if (!gAgent.getRegion()) -			return; - -		std::string url = gAgent.getRegion()->getCapability("ChatSessionRequest"); -		LLSD data; -		data["method"] = "mute update"; -		data["session-id"] = session_id; -		data["params"] = LLSD::emptyMap(); -		data["params"]["agent_id"] = mAvatarID; -		data["params"]["mute_info"] = LLSD::emptyMap(); -		// ctrl value represents ability to type, so invert -		data["params"]["mute_info"]["voice"] = !enabled; - -		class MuteVoiceResponder : public LLHTTPClient::Responder -		{ -		public: -			MuteVoiceResponder(const LLUUID& session_id) -			{ -				mSessionID = session_id; -			} - -			virtual void error(U32 status, const std::string& reason) -			{ -				llwarns << status << ": " << reason << llendl; - -				if ( gIMMgr ) -				{ -					//403 == you're not a mod -					//should be disabled if you're not a moderator -					if ( 403 == status ) -					{ -						gIMMgr->showSessionEventError( -							"mute", -							"not_a_moderator", -							mSessionID); -					} -					else -					{ -						gIMMgr->showSessionEventError( -							"mute", -							"generic", -							mSessionID); -					} -				} -			} - -		private: -			LLUUID mSessionID; -		}; - -		LLHTTPClient::post( -			url, -			data, -			new MuteVoiceResponder(speaker_mgr->getSessionID())); -	} - -	closeFloater(); - -} - -void LLInspectAvatar::updateVolumeSlider() -{ -	bool voice_enabled = LLVoiceClient::getInstance()->getVoiceEnabled(mAvatarID); - -	// Do not display volume slider and mute button if it  -	// is ourself or we are not in a voice channel together -	if (!voice_enabled || (mAvatarID == gAgent.getID())) -	{ -		getChild<LLUICtrl>("mute_btn")->setVisible(false); -		getChild<LLUICtrl>("volume_slider")->setVisible(false); -	} - -	else  -	{ -		getChild<LLUICtrl>("mute_btn")->setVisible(true); -		getChild<LLUICtrl>("volume_slider")->setVisible(true); - -		// By convention, we only display and toggle voice mutes, not all mutes -		bool is_muted = LLAvatarActions::isVoiceMuted(mAvatarID); - -		LLUICtrl* mute_btn = getChild<LLUICtrl>("mute_btn"); - -		bool is_linden = LLStringUtil::endsWith(mAvatarName.getLegacyName(), " Linden"); - -		mute_btn->setEnabled( !is_linden); -		mute_btn->setValue( is_muted ); - -		LLUICtrl* volume_slider = getChild<LLUICtrl>("volume_slider"); -		volume_slider->setEnabled( !is_muted ); - -		F32 volume; -		 -		if (is_muted) -		{ -			// it's clearer to display their volume as zero -			volume = 0.f; -		} -		else -		{ -			// actual volume -			volume = LLVoiceClient::getInstance()->getUserVolume(mAvatarID); -		} -		volume_slider->setValue( (F64)volume ); -	} - -} - -void LLInspectAvatar::onClickMuteVolume() -{ -	// By convention, we only display and toggle voice mutes, not all mutes -	LLMuteList* mute_list = LLMuteList::getInstance(); -	bool is_muted = mute_list->isMuted(mAvatarID, LLMute::flagVoiceChat); - -	LLMute mute(mAvatarID, mAvatarName.getLegacyName(), LLMute::AGENT); -	if (!is_muted) -	{ -		mute_list->add(mute, LLMute::flagVoiceChat); -	} -	else -	{ -		mute_list->remove(mute, LLMute::flagVoiceChat); -	} - -	updateVolumeSlider(); -} - -void LLInspectAvatar::onVolumeChange(const LLSD& data) -{ -	F32 volume = (F32)data.asReal(); -	LLVoiceClient::getInstance()->setUserVolume(mAvatarID, volume); -} -  void LLInspectAvatar::onAvatarNameCache(  		const LLUUID& agent_id,  		const LLAvatarName& av_name) @@ -639,215 +284,6 @@ void LLInspectAvatar::onAvatarNameCache(  	}  } -void LLInspectAvatar::onClickAddFriend() -{ -	LLAvatarActions::requestFriendshipDialog(mAvatarID, mAvatarName.getLegacyName()); -	closeFloater(); -} - -void LLInspectAvatar::onClickViewProfile() -{ -	LLAvatarActions::showProfile(mAvatarID); -	closeFloater(); -} - -bool LLInspectAvatar::isNotFriend() -{ -	return !LLAvatarActions::isFriend(mAvatarID); -} - -bool LLInspectAvatar::onVisibleFindOnMap() -{ -	return gAgent.isGodlike() || is_agent_mappable(mAvatarID); -} - -bool LLInspectAvatar::onVisibleEject() -{ -	return enable_freeze_eject( LLSD(mAvatarID) ); -} - -bool LLInspectAvatar::onVisibleFreeze() -{ -	// either user is a god and can do long distance freeze -	// or check for target proximity and permissions -	return gAgent.isGodlike() || enable_freeze_eject(LLSD(mAvatarID)); -} - -bool LLInspectAvatar::onVisibleZoomIn() -{ -	return gObjectList.findObject(mAvatarID); -} - -void LLInspectAvatar::onClickIM() -{  -	LLAvatarActions::startIM(mAvatarID); -	closeFloater(); -} - -void LLInspectAvatar::onClickCall() -{  -	LLAvatarActions::startCall(mAvatarID); -	closeFloater(); -} - -void LLInspectAvatar::onClickTeleport() -{ -	LLAvatarActions::offerTeleport(mAvatarID); -	closeFloater(); -} - -void LLInspectAvatar::onClickInviteToGroup() -{ -	LLAvatarActions::inviteToGroup(mAvatarID); -	closeFloater(); -} - -void LLInspectAvatar::onClickPay() -{ -	LLAvatarActions::pay(mAvatarID); -	closeFloater(); -} - -void LLInspectAvatar::onClickShare() -{ -	LLAvatarActions::share(mAvatarID); -	closeFloater(); -} - -void LLInspectAvatar::onToggleMute() -{ -	LLMute mute(mAvatarID, mAvatarName.mDisplayName, LLMute::AGENT); - -	if (LLMuteList::getInstance()->isMuted(mute.mID, mute.mName)) -	{ -		LLMuteList::getInstance()->remove(mute); -	} -	else -	{ -		LLMuteList::getInstance()->add(mute); -	} - -	LLPanelBlockedList::showPanelAndSelect(mute.mID); -	closeFloater(); -} - -void LLInspectAvatar::onClickReport() -{ -	LLFloaterReporter::showFromAvatar(mAvatarID, mAvatarName.getCompleteName()); -	closeFloater(); -} - -bool godlike_freeze(const LLSD& notification, const LLSD& response) -{ -	LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID(); -	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - -	switch (option) -	{ -	case 0: -		LLAvatarActions::freeze(avatar_id); -		break; -	case 1: -		LLAvatarActions::unfreeze(avatar_id); -		break; -	default: -		break; -	} - -	return false; -} - -void LLInspectAvatar::onClickFreeze() -{ -	if (gAgent.isGodlike()) -	{ -		// use godlike freeze-at-a-distance, with confirmation -		LLNotificationsUtil::add("FreezeAvatar", -			LLSD(), -			LLSD().with("avatar_id", mAvatarID), -			godlike_freeze); -	} -	else -	{ -		// use default "local" version of freezing that requires avatar to be in range -		handle_avatar_freeze( LLSD(mAvatarID) ); -	} -	closeFloater(); -} - -void LLInspectAvatar::onClickEject() -{ -	handle_avatar_eject( LLSD(mAvatarID) ); -	closeFloater(); -} - -void LLInspectAvatar::onClickKick() -{ -	LLAvatarActions::kick(mAvatarID); -	closeFloater(); -} - -void LLInspectAvatar::onClickCSR() -{ -	std::string name; -	gCacheName->getFullName(mAvatarID, name); -	LLAvatarActions::csr(mAvatarID, name); -	closeFloater(); -} - -void LLInspectAvatar::onClickZoomIn()  -{ -	handle_zoom_to_object(mAvatarID); -	closeFloater(); -} - -void LLInspectAvatar::onClickFindOnMap() -{ -	gFloaterWorldMap->trackAvatar(mAvatarID, mAvatarName.mDisplayName); -	LLFloaterReg::showInstance("world_map"); -} - - -bool LLInspectAvatar::enableMute() -{ -		bool is_linden = LLStringUtil::endsWith(mAvatarName.getLegacyName(), " Linden"); -		bool is_self = mAvatarID == gAgent.getID(); - -		if (!is_linden && !is_self && !LLMuteList::getInstance()->isMuted(mAvatarID, mAvatarName.getLegacyName())) -		{ -			return true; -		} -		else -		{ -			return false; -		} -} - -bool LLInspectAvatar::enableUnmute() -{ -		bool is_linden = LLStringUtil::endsWith(mAvatarName.getLegacyName(), " Linden"); -		bool is_self = mAvatarID == gAgent.getID(); - -		if (!is_linden && !is_self && LLMuteList::getInstance()->isMuted(mAvatarID, mAvatarName.getLegacyName())) -		{ -			return true; -		} -		else -		{ -			return false; -		} -} - -bool LLInspectAvatar::enableTeleportOffer() -{ -	return LLAvatarActions::canOfferTeleport(mAvatarID); -} - -bool LLInspectAvatar::godModeEnabled() -{ -	return gAgent.isGodlike(); -} -  //////////////////////////////////////////////////////////////////////////////  // LLInspectAvatarUtil  ////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index bc3bcd331b..c3481e6d4c 100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml @@ -9,7 +9,7 @@   bg_opaque_image="Inspector_Background"   can_close="false"   can_minimize="false" - height="164" + height="130"   layout="topleft"   name="inspect_avatar"   single_instance="true" @@ -94,32 +94,17 @@       use_ellipses="true"       width="220">This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot      </text> -    <slider -     follows="top|left" -     height="23" -     increment="0.01" -     left="1" -     max_val="0.95" -     min_val="0.05" -     name="volume_slider" -     show_text="false" -     tool_tip="Voice volume" -     top_pad="0" -     value="0.5" -     width="200" /> -    <button +    <text       follows="top|left"       height="16" -     image_disabled="Audio_Off" -     image_disabled_selected="AudioMute_Off" -     image_hover_selected="AudioMute_Over" -     image_selected="AudioMute_Off" -     image_unselected="Audio_Off" -     is_toggle="true" -     left_pad="0" -     top_delta="4" -     name="mute_btn" -     width="16" /> +     left="8" +     name="avatar_profile_link" +     font="SansSerifSmall" +     text_color="White" +     top_pad="5" +     translate="false" +     value="[[LINK] View full profile]" +     width="175" />      <avatar_icon       follows="top|left"       height="38" @@ -130,83 +115,4 @@       name="avatar_icon"       top="10"       width="38" /> -<!-- Overlapping buttons for default actions -    llinspectavatar.cpp makes visible the most likely default action  ---> -    <button -     follows="top|left" -     height="20" -     label="Add Friend" -     left="8" -     top="135" -     name="add_friend_btn" -     width="90" /> -    <button -     follows="top|left" -     height="20" -     label="IM" -     left_delta="0" -     top_delta="0" -     name="im_btn" -     width="80" -     commit_callback.function="InspectAvatar.IM"/> -	<button -     follows="top|left" -     height="20" -     label="Profile" -     layout="topleft" -     name="view_profile_btn" -     left_delta="96" -     top_delta="0" -     tab_stop="false" -     width="80" /> -      <!--  gear buttons here --> -  <menu_button -     follows="top|left" -     height="20" -     layout="topleft" -     image_overlay="OptionsMenu_Off" -     menu_filename="menu_inspect_avatar_gear.xml" -     name="gear_btn" -     right="-5" -     top_delta="0" -     width="35" /> -	<menu_button -     follows="top|left" -     height="20" -     image_overlay="OptionsMenu_Off" -     menu_filename="menu_inspect_self_gear.xml" -     name="gear_self_btn" -     right="-5" -     top_delta="0" -     width="35" /> -  <panel  -    follows="top|left"  -    top="164"  -    left="0"  -    height="60"  -    width="228"  -    visible="false" -    background_visible="true" -    name="moderator_panel" -    background_opaque="true"  -    bg_opaque_color="MouseGray"> -    <button -      name="disable_voice" -      label="Disable Voice" -      top="20" -      width="95" -      height="20" -      left="10" -      commit_callback.function="InspectAvatar.DisableVoice"/> -    <button -      name="enable_voice" -      label="Enable Voice" -      top="20" -      width="95" -      height="20" -      left="10" -      visible="false"  -      commit_callback.function="InspectAvatar.EnableVoice"/> -  </panel>  </floater> diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml deleted file mode 100644 index 76b188220d..0000000000 --- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml +++ /dev/null @@ -1,143 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<toggleable_menu -         create_jump_keys="true" -         layout="topleft" -         mouse_opaque="false" -         visible="false" -         name="Gear Menu"> -  <menu_item_call -   label="View Profile" -   enabled="true"  -   name="view_profile"> -    <menu_item_call.on_click -     function="InspectAvatar.ViewProfile"/> -  </menu_item_call> -  <menu_item_call -   label="Add Friend" -   name="add_friend"> -    <menu_item_call.on_click -     function="InspectAvatar.AddFriend"/> -    <menu_item_call.on_enable -     function="InspectAvatar.Gear.Enable"/> -  </menu_item_call> -  <menu_item_call -   label="IM" -   name="im"> -    <menu_item_call.on_click -     function="InspectAvatar.IM"/> -  </menu_item_call> -  <menu_item_call -   label="Call" -   enabled="true" -   name="call"> -    <menu_item_call.on_click -     function="InspectAvatar.Call"/> -    <menu_item_call.on_enable -     function="InspectAvatar.Gear.EnableCall"/> -  </menu_item_call> -  <menu_item_call -   label="Teleport" -   name="teleport"> -    <menu_item_call.on_click -     function="InspectAvatar.Teleport"/> -    <menu_item_call.on_enable -     function="InspectAvatar.Gear.EnableTeleportOffer"/> -  </menu_item_call> -  <menu_item_call -   label="Invite to Group" -   name="invite_to_group"> -    <menu_item_call.on_click -     function="InspectAvatar.InviteToGroup"/> -  </menu_item_call> -  <menu_item_separator /> -  <menu_item_call -   label="Block" -   name="block"> -    <menu_item_call.on_click -     function="InspectAvatar.ToggleMute"/> -    <menu_item_call.on_visible -     function="InspectAvatar.EnableMute" /> -  </menu_item_call> -  <menu_item_call -   label="Unblock" -   name="unblock"> -    <menu_item_call.on_click -     function="InspectAvatar.ToggleMute"/> -    <menu_item_call.on_visible -     function="InspectAvatar.EnableUnmute" /> -  </menu_item_call> -  <menu_item_call -   label="Report" -   name="report"> -    <menu_item_call.on_click -     function="InspectAvatar.Report"/> -  </menu_item_call>   -  <menu_item_call -   label="Freeze" -   name="freeze"> -    <menu_item_call.on_click -     function="InspectAvatar.Freeze"/> -    <menu_item_call.on_visible -     function="InspectAvatar.VisibleFreeze"/> -  </menu_item_call> -  <menu_item_call -   label="Eject" -   name="eject"> -    <menu_item_call.on_click -     function="InspectAvatar.Eject"/> -    <menu_item_call.on_visible -     function="InspectAvatar.VisibleEject"/> -  </menu_item_call> -  <menu_item_call -   label="Kick" -   name="kick"> -    <menu_item_call.on_click -     function="InspectAvatar.Kick"/> -    <menu_item_call.on_visible -     function="InspectAvatar.EnableGod"/> -  </menu_item_call> -  <menu_item_call -  label="CSR" -  name="csr"> -    <menu_item_call.on_click -     function="InspectAvatar.CSR" /> -    <menu_item_call.on_visible -     function="InspectAvatar.EnableGod" /> -  </menu_item_call> -  <menu_item_call -   label="Debug Textures" -   name="debug"> -    <menu_item_call.on_click -     function="Avatar.Debug"/> -    <menu_item_call.on_visible -     function="IsGodCustomerService"/> -  </menu_item_call> -  <menu_item_call -   label="Find On Map" -   name="find_on_map"> -    <menu_item_call.on_click -     function="InspectAvatar.FindOnMap"/> -    <menu_item_call.on_visible -     function="InspectAvatar.VisibleFindOnMap"/> -  </menu_item_call> -  <menu_item_call -   label="Zoom In" -   name="zoom_in"> -    <menu_item_call.on_click -     function="InspectAvatar.ZoomIn"/> -    <menu_item_call.on_visible -     function="InspectAvatar.VisibleZoomIn"/> -  </menu_item_call>   -  <menu_item_call -   label="Pay" -   name="pay"> -    <menu_item_call.on_click -     function="InspectAvatar.Pay"/> -  </menu_item_call> -  <menu_item_call -   label="Share" -   name="share"> -    <menu_item_call.on_click -     function="InspectAvatar.Share"/> -  </menu_item_call> -</toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml deleted file mode 100644 index 5e7b16ed4a..0000000000 --- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml +++ /dev/null @@ -1,252 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<toggleable_menu - layout="topleft" - name="Self Pie"> -  <menu_item_call -   label="Sit Down" -   layout="topleft" -   name="Sit Down Here"> -    <menu_item_call.on_click -     function="Self.SitDown" -     parameter="" /> -    <menu_item_call.on_enable -     function="Self.EnableSitDown" /> -  </menu_item_call> -  <menu_item_call -   label="Stand Up" -   layout="topleft" -   name="Stand Up"> -    <menu_item_call.on_click -     function="Self.StandUp" -     parameter="" /> -    <menu_item_call.on_enable -     function="Self.EnableStandUp" /> -  </menu_item_call> -  <context_menu -   label="Take Off" -   layout="topleft" -   name="Take Off >"> -    <context_menu -     label="Clothes" -     layout="topleft" -     name="Clothes >"> -      <menu_item_call -       enabled="false" -       label="Shirt" -       layout="topleft" -       name="Shirt"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="shirt" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="shirt" /> -      </menu_item_call> -      <menu_item_call -       enabled="false" -       label="Pants" -       layout="topleft" -       name="Pants"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="pants" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="pants" /> -      </menu_item_call> -      <menu_item_call -       enabled="false" -       label="Skirt" -       layout="topleft" -       name="Skirt"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="skirt" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="skirt" /> -      </menu_item_call> -      <menu_item_call -       enabled="false" -       label="Shoes" -       layout="topleft" -       name="Shoes"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="shoes" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="shoes" /> -      </menu_item_call> -      <menu_item_call -       enabled="false" -       label="Socks" -       layout="topleft" -       name="Socks"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="socks" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="socks" /> -      </menu_item_call> -      <menu_item_call -       enabled="false" -       label="Jacket" -       layout="topleft" -       name="Jacket"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="jacket" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="jacket" /> -      </menu_item_call> -      <menu_item_call -       enabled="false" -       label="Gloves" -       layout="topleft" -       name="Gloves"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="gloves" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="gloves" /> -      </menu_item_call> -      <menu_item_call -            enabled="false" -            label="Undershirt" -            layout="topleft" -            name="Self Undershirt"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="undershirt" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="undershirt" /> -      </menu_item_call> -      <menu_item_call -        enabled="false" -        label="Underpants" -        layout="topleft" -        name="Self Underpants"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="underpants" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="underpants" /> -      </menu_item_call> -      <menu_item_call -        enabled="false" -        label="Tattoo" -        layout="topleft" -        name="Self Tattoo"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="tattoo" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="tattoo" /> -      </menu_item_call> -      <menu_item_call -        enabled="false" -        label="Alpha" -        layout="topleft" -        name="Self Alpha"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="alpha" /> -        <menu_item_call.on_enable -         function="Edit.EnableTakeOff" -         parameter="alpha" /> -      </menu_item_call> -      <menu_item_separator -       layout="topleft" /> -      <menu_item_call -       label="All Clothes" -       layout="topleft" -       name="All Clothes"> -        <menu_item_call.on_click -         function="Edit.TakeOff" -         parameter="all" /> -      </menu_item_call> -    </context_menu> -    <context_menu -     label="HUD" -     layout="topleft" -     name="Object Detach HUD" /> -    <context_menu -     label="Detach" -     layout="topleft" -     name="Object Detach" /> -    <menu_item_call -     label="Detach All" -     layout="topleft" -     name="Detach All"> -      <menu_item_call.on_click -       function="Self.RemoveAllAttachments" -       parameter="" /> -      <menu_item_call.on_enable -       function="Self.EnableRemoveAllAttachments" /> -    </menu_item_call> -  </context_menu> -  <menu_item_call -  label="Change Outfit" -  layout="topleft" -  name="Chenge Outfit"> -    <menu_item_call.on_click -     function="CustomizeAvatar" /> -    <menu_item_call.on_enable -     function="Edit.EnableCustomizeAvatar" /> -  </menu_item_call> -  <menu_item_call label="Edit My Outfit" -  layout="topleft" -  name="Edit Outfit"> -    <menu_item_call.on_click -     function="EditOutfit" /> -    <menu_item_call.on_enable -     function="Edit.EnableCustomizeAvatar" /> -  </menu_item_call> -  <menu_item_call label="Edit My Shape" -  layout="topleft" -  name="Edit My Shape"> -    <menu_item_call.on_click -     function="EditShape" /> -    <menu_item_call.on_enable -     function="Edit.EnableEditShape" /> -  </menu_item_call> -  <menu_item_call -    label="My Friends" -    layout="topleft" -    name="Friends..."> -    <menu_item_call.on_click -     function="SideTray.PanelPeopleTab" -     parameter="friends_panel" /> -  </menu_item_call> -  <menu_item_call -   label="My Groups" -   layout="topleft" -   name="Groups..."> -    <menu_item_call.on_click -     function="SideTray.PanelPeopleTab" -     parameter="groups_panel" /> -  </menu_item_call> -  <menu_item_call -    label="My Profile" -    layout="topleft" -    name="Profile..."> -    <menu_item_call.on_click -     function="ShowAgentProfile" -     parameter="agent" /> -  </menu_item_call> -  <menu_item_call -   label="Debug Textures" -       name="Debug..."> -    <menu_item_call.on_click -     function="Avatar.Debug" /> -    <menu_item_call.on_visible -     function="IsGodCustomerService"/> -  </menu_item_call> -</toggleable_menu>  | 
