summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreyL ProductEngine <andreylproductengine@lindenlab.com>2015-09-01 23:16:58 +0300
committerAndreyL ProductEngine <andreylproductengine@lindenlab.com>2015-09-01 23:16:58 +0300
commit540493b315d8b8380b4c0bc63e7021ad499a62f8 (patch)
treecd19af56f2f77043fd909e427f555bdb3aa0da5e
parent336f89b1ff50f940c1ffcea05c4b022d91d5045a (diff)
MAINT-5297 Allow global toggle of 'View People Icons' - Chat window part
--HG-- branch : develop
-rwxr-xr-xindra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llconversationview.cpp81
-rw-r--r--indra/newview/llconversationview.h5
-rwxr-xr-xindra/newview/llfloaterimcontainer.cpp8
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_participant_view.xml13
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