diff options
-rwxr-xr-x | indra/newview/app_settings/settings.xml | 22 | ||||
-rwxr-xr-x | indra/newview/llavatarlist.cpp | 14 | ||||
-rwxr-xr-x | indra/newview/llavatarlist.h | 2 | ||||
-rw-r--r-- | indra/newview/llconversationview.cpp | 81 | ||||
-rw-r--r-- | indra/newview/llconversationview.h | 5 | ||||
-rwxr-xr-x | indra/newview/llfloaterimcontainer.cpp | 9 | ||||
-rwxr-xr-x | indra/newview/llpanelpeople.cpp | 24 | ||||
-rwxr-xr-x | indra/newview/skins/default/xui/en/menu_participant_view.xml | 13 | ||||
-rwxr-xr-x | indra/newview/skins/default/xui/en/menu_people_friends_view.xml | 4 | ||||
-rwxr-xr-x | indra/newview/skins/default/xui/en/menu_people_nearby_view.xml | 4 | ||||
-rwxr-xr-x | indra/newview/skins/default/xui/en/menu_people_recent_view.xml | 4 | ||||
-rwxr-xr-x | indra/newview/skins/default/xui/en/panel_preferences_setup.xml | 26 |
12 files changed, 181 insertions, 27 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 0371a819dd..96fbc8323b 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> @@ -10996,6 +11007,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>GlobalShowIconsOverride</key> + <map> + <key>Comment</key> + <string>Show/hide people icons in any list. This option should be set back to 0 when icons are enabled locally for the lists</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>FriendsSortOrder</key> <map> <key>Comment</key> diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 8846d1317d..c7fa375ada 100755 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -63,16 +63,18 @@ bool LLAvatarList::contains(const LLUUID& id) return std::find(ids.begin(), ids.end(), id) != ids.end(); } -void LLAvatarList::toggleIcons() +void LLAvatarList::setIconsVisible(bool visible) { + if (visible == mShowIcons) // nothing to be done here. + return; + // Save the new value for new items to use. - mShowIcons = !mShowIcons; - gSavedSettings.setBOOL(mIconParamName, mShowIcons); - + mShowIcons = visible; + // Show/hide icons for all existing items. std::vector<LLPanel*> items; getItems(items); - for( std::vector<LLPanel*>::const_iterator it = items.begin(); it != items.end(); it++) + for (std::vector<LLPanel*>::const_iterator it = items.begin(); it != items.end(); it++) { static_cast<LLAvatarListItem*>(*it)->setAvatarIconVisible(mShowIcons); } @@ -187,6 +189,8 @@ void LLAvatarList::draw() updateAvatarNames(); } + setIconsVisible(gSavedSettings.getBOOL(mIconParamName) && !gSavedSettings.getBOOL("GlobalShowIconsOverride")); + if (mDirty) refresh(); diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index 3542577ae3..159ff991e6 100755 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -76,7 +76,7 @@ public: void setSessionID(const LLUUID& session_id) { mSessionID = session_id; } const LLUUID& getSessionID() { return mSessionID; } - void toggleIcons(); + void setIconsVisible(bool visible); void setSpeakingIndicatorsVisible(bool visible); void showPermissions(bool visible); void sortByName(); diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index b18e543f0a..3a6e4c4dfe 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") && !gSavedSettings.getBOOL("GlobalShowIconsOverride")); + 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") && !gSavedSettings.getBOOL("GlobalShowIconsOverride")); 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..0a5a6e8e13 100755 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -924,6 +924,11 @@ void LLFloaterIMContainer::onCustomAction(const LLSD& userdata) { setSortOrderParticipants(LLConversationFilter::SO_DISTANCE); } + if ("view_icons" == command) + { + gSavedSettings.setBOOL("ChatShowIcons", !(gSavedSettings.getBOOL("ChatShowIcons") && !gSavedSettings.getBOOL("GlobalShowIconsOverride"))); + gSavedSettings.setBOOL("GlobalShowIconsOverride", (!gSavedSettings.getBOOL("ChatShowIcons") && gSavedSettings.getBOOL("GlobalShowIconsOverride"))); + } if ("chat_preferences" == command) { LLFloaterPreference * floater_prefp = LLFloaterReg::showTypedInstance<LLFloaterPreference>("preferences"); @@ -974,6 +979,10 @@ BOOL LLFloaterIMContainer::isActionChecked(const LLSD& userdata) { return (order.getSortOrderParticipants() == LLConversationFilter::SO_DISTANCE); } + if ("view_icons" == command) + { + return gSavedSettings.getBOOL("ChatShowIcons") && !gSavedSettings.getBOOL("GlobalShowIconsOverride"); + } if ("Translating.Enabled" == command) { return gSavedPerAccountSettings.getBOOL("TranslatingEnabled"); diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index de4efc8612..6b86459d8f 100755 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -1326,8 +1326,12 @@ void LLPanelPeople::onFriendsViewSortMenuItemClicked(const LLSD& userdata) } else if (chosen_item == "view_icons") { - mAllFriendList->toggleIcons(); - mOnlineFriendList->toggleIcons(); + std::string param = mAllFriendList->getIconParamName(); + gSavedSettings.setBOOL(param, !(gSavedSettings.getBOOL(param) && !gSavedSettings.getBOOL("GlobalShowIconsOverride"))); + gSavedSettings.setBOOL("GlobalShowIconsOverride", (!gSavedSettings.getBOOL(param) && gSavedSettings.getBOOL("GlobalShowIconsOverride"))); + gSavedSettings.setBOOL(mOnlineFriendList->getIconParamName(), gSavedSettings.getBOOL(param)); + mAllFriendList->setIconsVisible(gSavedSettings.getBOOL(param)); + mOnlineFriendList->setIconsVisible(gSavedSettings.getBOOL(param)); } else if (chosen_item == "view_permissions") { @@ -1363,7 +1367,10 @@ void LLPanelPeople::onNearbyViewSortMenuItemClicked(const LLSD& userdata) } else if (chosen_item == "view_icons") { - mNearbyList->toggleIcons(); + std::string param = mNearbyList->getIconParamName(); + gSavedSettings.setBOOL(param, !(gSavedSettings.getBOOL(param) && !gSavedSettings.getBOOL("GlobalShowIconsOverride"))); + gSavedSettings.setBOOL("GlobalShowIconsOverride", (!gSavedSettings.getBOOL(param) && gSavedSettings.getBOOL("GlobalShowIconsOverride"))); + mNearbyList->setIconsVisible(gSavedSettings.getBOOL(param)); } else if (chosen_item == "sort_distance") { @@ -1382,6 +1389,8 @@ bool LLPanelPeople::onNearbyViewSortMenuItemCheck(const LLSD& userdata) return sort_order == E_SORT_BY_NAME; if (item == "sort_distance") return sort_order == E_SORT_BY_DISTANCE; + if (item == "view_icons") + return gSavedSettings.getBOOL(mNearbyList->getIconParamName()) && !gSavedSettings.getBOOL("GlobalShowIconsOverride"); return false; } @@ -1400,7 +1409,10 @@ void LLPanelPeople::onRecentViewSortMenuItemClicked(const LLSD& userdata) } else if (chosen_item == "view_icons") { - mRecentList->toggleIcons(); + std::string param = mRecentList->getIconParamName(); + gSavedSettings.setBOOL(param, !(gSavedSettings.getBOOL(param) && !gSavedSettings.getBOOL("GlobalShowIconsOverride"))); + gSavedSettings.setBOOL("GlobalShowIconsOverride", (!gSavedSettings.getBOOL(param) && gSavedSettings.getBOOL("GlobalShowIconsOverride"))); + mRecentList->setIconsVisible(gSavedSettings.getBOOL(param)); } } @@ -1413,6 +1425,8 @@ bool LLPanelPeople::onFriendsViewSortMenuItemCheck(const LLSD& userdata) return sort_order == E_SORT_BY_NAME; if (item == "sort_status") return sort_order == E_SORT_BY_STATUS; + if (item == "view_icons") + return gSavedSettings.getBOOL(mAllFriendList->getIconParamName()) && !gSavedSettings.getBOOL("GlobalShowIconsOverride"); return false; } @@ -1426,6 +1440,8 @@ bool LLPanelPeople::onRecentViewSortMenuItemCheck(const LLSD& userdata) return sort_order == E_SORT_BY_MOST_RECENT; if (item == "sort_name") return sort_order == E_SORT_BY_NAME; + if (item == "view_icons") + return gSavedSettings.getBOOL(mRecentList->getIconParamName()) && !gSavedSettings.getBOOL("GlobalShowIconsOverride"); return false; } 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 diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml index 8790fde7c5..02c6cfc006 100755 --- a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml @@ -29,8 +29,8 @@ function="People.Friends.ViewSort.Action" parameter="view_icons" /> <menu_item_check.on_check - function="CheckControl" - parameter="FriendsListShowIcons" /> + function="People.Friends.ViewSort.CheckItem" + parameter="view_icons" /> </menu_item_check> <menu_item_check name="view_permissions" label="View Permissions Granted"> <menu_item_check.on_click diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml index da88ca9f4d..44b3d14e10 100755 --- a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml @@ -39,8 +39,8 @@ function="People.Nearby.ViewSort.Action" parameter="view_icons" /> <menu_item_check.on_check - function="CheckControl" - parameter="NearbyListShowIcons" /> + function="People.Nearby.ViewSort.CheckItem" + parameter="view_icons"/> </menu_item_check> <menu_item_check name ="view_map" label="View Map"> <menu_item_check.on_check diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml index 1dbc90dd2b..cd2260d0c4 100755 --- a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml @@ -29,7 +29,7 @@ function="People.Recent.ViewSort.Action" parameter="view_icons" /> <menu_item_check.on_check - function="CheckControl" - parameter="RecentListShowIcons" /> + function="People.Recent.ViewSort.CheckItem" + parameter="view_icons" /> </menu_item_check> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index b201e071ef..a8be517f3c 100755 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -313,4 +313,30 @@ <button.commit_callback function="Pref.Proxy" /> </button> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="30" + name="People Icons:" + mouse_opaque="false" + top_pad="5" + width="300"> + People Icons: + </text> + <check_box + top_delta="4" + enabled="true" + follows="left|top" + height="14" + initial_value="false" + control_name="GlobalShowIconsOverride" + label="Hide people icons (global override)" + left_delta="50" + mouse_opaque="true" + name="global_show_icons_override" + width="400" + top_pad="10"/> </panel> |