diff options
| author | AndreyL ProductEngine <andreylproductengine@lindenlab.com> | 2015-09-01 23:16:58 +0300 | 
|---|---|---|
| committer | AndreyL ProductEngine <andreylproductengine@lindenlab.com> | 2015-09-01 23:16:58 +0300 | 
| commit | 540493b315d8b8380b4c0bc63e7021ad499a62f8 (patch) | |
| tree | cd19af56f2f77043fd909e427f555bdb3aa0da5e /indra | |
| parent | 336f89b1ff50f940c1ffcea05c4b022d91d5045a (diff) | |
MAINT-5297 Allow global toggle of 'View People Icons' - Chat window part
--HG--
branch : develop
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llconversationview.cpp | 81 | ||||
| -rw-r--r-- | indra/newview/llconversationview.h | 5 | ||||
| -rwxr-xr-x | indra/newview/llfloaterimcontainer.cpp | 8 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/menu_participant_view.xml | 13 | 
5 files changed, 107 insertions, 11 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 0371a819dd..1ed4528cb1 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1697,6 +1697,17 @@        <key>Value</key>        <integer>1</integer>      </map> +	<key>ChatShowIcons</key> +	<map> +		<key>Comment</key> +		<string>Show/hide people icons in chat</string> +		<key>Persist</key> +		<integer>1</integer> +		<key>Type</key> +		<string>Boolean</string> +		<key>Value</key> +		<integer>1</integer> +	</map>      <key>CheesyBeacon</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index b18e543f0a..924a8d7206 100644 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -85,7 +85,8 @@ LLConversationViewSession::LLConversationViewSession(const LLConversationViewSes      mHasArrow(true),  	mIsInActiveVoiceChannel(false),  	mFlashStateOn(false), -	mFlashStarted(false) +	mFlashStarted(false), +	mShowIcons(true)  {  	mFlashTimer = new LLFlashTimer();  } @@ -173,7 +174,7 @@ BOOL LLConversationViewSession::postBuild()  			if (session)  			{  				LLAvatarIconCtrl* icon = mItemPanel->getChild<LLAvatarIconCtrl>("avatar_icon"); -				icon->setVisible(true); +				icon->setVisible(mShowIcons);  				icon->setValue(session->mOtherParticipantID);  				mSpeakingIndicator->setSpeakerId(gAgentID, session->mSessionID, true);                  mHasArrow = false; @@ -426,6 +427,49 @@ void LLConversationViewSession::showVoiceIndicator(bool visible)  	requestArrange();  } +void LLConversationViewSession::setIconsVisible(bool visible) +{ +	if (visible == mShowIcons) // nothing to be done here. +		return; + +	// Save the new value for new items to use. +	mShowIcons = visible; +		 +	// Show/hide icons for the 1-n-1 chat. +	LLConversationItem* vmi = dynamic_cast<LLConversationItem*>(getViewModelItem()); +	if (vmi) +	{ +		switch (vmi->getType()) +		{ +		case LLConversationItem::CONV_PARTICIPANT: +		case LLConversationItem::CONV_SESSION_1_ON_1: +		{ +			LLIconCtrl* icon = mItemPanel->getChild<LLIconCtrl>("avatar_icon"); +			icon->setVisible(mShowIcons); +			break; +		} +		/* +		case LLConversationItem::CONV_SESSION_AD_HOC: +		case LLConversationItem::CONV_SESSION_GROUP: +		{ +			LLIconCtrl* icon = mItemPanel->getChild<LLIconCtrl>("group_icon"); +			icon->setVisible(mShowIcons); +			break; +		} +		*/ +		default: +			break; +		} +	} + +	// Show/hide icons for all existing items. +	items_t::const_iterator iter; +	for (iter = getItemsBegin(); iter != getItemsEnd(); iter++) +	{ +		dynamic_cast<LLConversationViewParticipant*>(*iter)->setAvatarIconVisible(mShowIcons); +	} +} +  void LLConversationViewSession::refresh()  {  	// Refresh the session view from its model data @@ -458,6 +502,9 @@ void LLConversationViewSession::refresh()  			}  		}  	} +	 +	setIconsVisible(gSavedSettings.getBOOL("ChatShowIcons")); +	  	requestArrange();  	// Do the regular upstream refresh  	LLFolderViewFolder::refresh(); @@ -509,7 +556,7 @@ void LLConversationViewParticipant::initFromParams(const LLConversationViewParti      LLAvatarIconCtrl::Params avatar_icon_params(params.avatar_icon());      applyXUILayout(avatar_icon_params, this);      LLAvatarIconCtrl * avatarIcon = LLUICtrlFactory::create<LLAvatarIconCtrl>(avatar_icon_params); -    addChild(avatarIcon);	 +    addChild(avatarIcon);  	LLButton::Params info_button_params(params.info_button());      applyXUILayout(info_button_params, this); @@ -525,6 +572,7 @@ void LLConversationViewParticipant::initFromParams(const LLConversationViewParti  BOOL LLConversationViewParticipant::postBuild()  {      mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); +	mAvatarIcon->setVisible(gSavedSettings.getBOOL("ChatShowIcons"));  	mInfoBtn = getChild<LLButton>("info_btn");  	mInfoBtn->setClickedCallback(boost::bind(&LLConversationViewParticipant::onInfoBtnClick, this)); @@ -588,12 +636,12 @@ S32 LLConversationViewParticipant::arrange(S32* width, S32* height)      S32 arranged = LLFolderViewItem::arrange(width, height);      //Adjusts the avatar icon based upon the indentation -    LLRect avatarRect(getIndentation(),  -                        mAvatarIcon->getRect().mTop, -                        getIndentation() + mAvatarIcon->getRect().getWidth(), -                        mAvatarIcon->getRect().mBottom); -    mAvatarIcon->setShape(avatarRect); - +	LLRect avatarRect(getIndentation(), +						mAvatarIcon->getRect().mTop, +						getIndentation() + mAvatarIcon->getRect().getWidth(), +						mAvatarIcon->getRect().mBottom); +	mAvatarIcon->setShape(avatarRect); +	      //Since dimensions changed, adjust the children (info button, speaker indicator)      updateChildren(); @@ -665,7 +713,7 @@ void LLConversationViewParticipant::onMouseLeave(S32 x, S32 y, MASK mask)  S32 LLConversationViewParticipant::getLabelXPos()  { -    return getIndentation() + mAvatarIcon->getRect().getWidth() + mIconPad; +    return getIndentation() + (mAvatarIcon->getVisible() ? mAvatarIcon->getRect().getWidth() : 0) + mIconPad;  }  // static @@ -744,5 +792,18 @@ void LLConversationViewParticipant::hideSpeakingIndicator()  	mSpeakingIndicator->setVisible(false);  } +void LLConversationViewParticipant::setAvatarIconVisible(bool visible) +{ +	// Already done? Then do nothing. +	if (mAvatarIcon->getVisible() == (BOOL)visible) +	{ +		return; +	} + +	// Show/hide avatar icon. +	mAvatarIcon->setVisible(visible); +	updateChildren(); +} +  // EOF diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h index 5a74974302..6aaba9b59c 100644 --- a/indra/newview/llconversationview.h +++ b/indra/newview/llconversationview.h @@ -83,7 +83,7 @@ public:  	LLConversationViewParticipant* findParticipant(const LLUUID& participant_id);  	void showVoiceIndicator(bool visible); - +	void setIconsVisible(bool visible);  	virtual void refresh();  	/*virtual*/ void setFlashState(bool flash_state); @@ -110,6 +110,8 @@ private:  	bool					mIsInActiveVoiceChannel; +	bool                    mShowIcons; +  	LLVoiceClientStatusObserver* mVoiceClientObserver;  	boost::signals2::connection mActiveVoiceChannelConnection; @@ -145,6 +147,7 @@ public:      /*virtual*/ S32 getLabelXPos();      /*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask );  	void hideSpeakingIndicator(); +	void setAvatarIconVisible(bool visible);  protected:  	friend class LLUICtrlFactory; diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index f1a6ef78a6..1c9b2e6acb 100755 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -924,6 +924,10 @@ void LLFloaterIMContainer::onCustomAction(const LLSD& userdata)  	{  		setSortOrderParticipants(LLConversationFilter::SO_DISTANCE);  	} +	if ("view_icons" == command) +	{ +		gSavedSettings.setBOOL("ChatShowIcons", !gSavedSettings.getBOOL("ChatShowIcons")); +	}  	if ("chat_preferences" == command)  	{  		LLFloaterPreference * floater_prefp = LLFloaterReg::showTypedInstance<LLFloaterPreference>("preferences"); @@ -974,6 +978,10 @@ BOOL LLFloaterIMContainer::isActionChecked(const LLSD& userdata)  	{  		return (order.getSortOrderParticipants() == LLConversationFilter::SO_DISTANCE);  	} +	if ("view_icons" == command) +	{ +		return gSavedSettings.getBOOL("ChatShowIcons"); +	}  	if ("Translating.Enabled" == command)  	{  		return gSavedPerAccountSettings.getBOOL("TranslatingEnabled"); diff --git a/indra/newview/skins/default/xui/en/menu_participant_view.xml b/indra/newview/skins/default/xui/en/menu_participant_view.xml index 7ea87ee05c..658238bf41 100755 --- a/indra/newview/skins/default/xui/en/menu_participant_view.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_view.xml @@ -59,6 +59,19 @@           function="IMFloaterContainer.Check"           parameter="sort_participants_by_recent" />      </menu_item_check> +	<menu_item_separator +     layout="topleft" /> +	<menu_item_check +	 label="View people icons" +	 layout="topleft" +	 name="view_icons"> +		<on_click +         function="IMFloaterContainer.Action" +         parameter="view_icons" /> +		<on_check +         function="IMFloaterContainer.Check" +         parameter="view_icons" /> +	</menu_item_check>      <menu_item_separator       layout="topleft" />      <menu_item_call  | 
