From 1e84d0e6494df1f5ccb3f69e53849bf26b01e385 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev <andreykproductengine@lindenlab.com> Date: Wed, 11 May 2022 20:38:13 +0300 Subject: [PATCH] SL-15312 Profiles tweaks Fix loading indicators to be at the center of picls and classified Hide classifieds and picks related buttons for other agents 10px distance from image Fix chat history menu button not working Changed 'partner' field behavior Prevent selection of disabled FL text field --- indra/newview/llagentpicksinfo.h | 4 +- indra/newview/llpanelavatar.cpp | 6 + indra/newview/llpanelprofile.cpp | 54 +++-- indra/newview/llpanelprofile.h | 2 +- indra/newview/llpanelprofileclassifieds.cpp | 6 +- indra/newview/llpanelprofilepicks.cpp | 5 +- .../xui/en/panel_profile_classifieds.xml | 182 +++++++++++------ .../default/xui/en/panel_profile_picks.xml | 190 ++++++++++++------ .../xui/en/panel_profile_secondlife.xml | 79 +++++--- .../newview/skins/default/xui/en/strings.xml | 4 +- 10 files changed, 356 insertions(+), 176 deletions(-) diff --git a/indra/newview/llagentpicksinfo.h b/indra/newview/llagentpicksinfo.h index f981e08ff77..21df036cb7e 100644 --- a/indra/newview/llagentpicksinfo.h +++ b/indra/newview/llagentpicksinfo.h @@ -74,10 +74,10 @@ class LLAgentPicksInfo : public LLSingleton<LLAgentPicksInfo> void decrementNumberOfPicks() { --mNumberOfPicks; } -private: - void onServerRespond(LLAvatarPicks* picks); +private: + /** * Sets number of Picks. */ diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 5d5d4b676c1..9a030f1d7d8 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -119,6 +119,12 @@ void LLPanelProfileTab::setApplyProgress(bool started) indicator->stop(); } } + + LLPanel* panel = findChild<LLPanel>("indicator_stack"); + if (panel) + { + panel->setVisible(started); + } } LLPanelProfilePropertiesProcessorTab::LLPanelProfilePropertiesProcessorTab() diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 031c1db7e2c..542ecf8b42f 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -217,6 +217,8 @@ void request_avatar_properties_coro(std::string cap_url, LLUUID agent_id) LLPanelProfilePicks *panel_picks = dynamic_cast<LLPanelProfilePicks*>(panel); if (panel_picks) { + // Refresh pick limit before processing + LLAgentPicksInfo::getInstance()->onServerRespond(&avatar_picks); panel_picks->processProperties(&avatar_picks); } @@ -820,7 +822,7 @@ BOOL LLPanelProfileSecondLife::postBuild() mGroupList = getChild<LLGroupList>("group_list"); mShowInSearchCombo = getChild<LLComboBox>("show_in_search"); mSecondLifePic = getChild<LLIconCtrl>("2nd_life_pic"); - mSecondLifePicLayout = getChild<LLPanel>("image_stack"); + mSecondLifePicLayout = getChild<LLPanel>("image_panel"); mDescriptionEdit = getChild<LLTextEditor>("sl_description_edit"); mNotesSnippet = getChild<LLTextEditor>("notes_snippet"); mAgentActionMenuButton = getChild<LLMenuButton>("agent_actions_menu"); @@ -989,6 +991,11 @@ void LLPanelProfileSecondLife::onAvatarNameCache(const LLUUID& agent_id, const L getChild<LLUICtrl>("user_name")->setValue(av_name.getAccountName()); } +void LLPanelProfileSecondLife::setNotesSnippet(std::string ¬es) +{ + mNotesSnippet->setValue(notes); +} + void LLPanelProfileSecondLife::setProfileImageUploading(bool loading) { LLLoadingIndicator* indicator = getChild<LLLoadingIndicator>("image_upload_indicator"); @@ -1077,6 +1084,7 @@ void LLPanelProfileSecondLife::fillPartnerData(const LLAvatarData* avatar_data) LLTextBox* partner_text_ctrl = getChild<LLTextBox>("partner_link"); if (avatar_data->partner_id.notNull()) { + childSetVisible("partner_layout", TRUE); LLStringUtil::format_map_t args; args["[LINK]"] = LLSLURL("agent", avatar_data->partner_id, "inspect").getSLURLString(); std::string partner_text = getString("partner_text", args); @@ -1084,7 +1092,7 @@ void LLPanelProfileSecondLife::fillPartnerData(const LLAvatarData* avatar_data) } else { - partner_text_ctrl->setText(getString("no_partner_text")); + childSetVisible("partner_layout", FALSE); } } @@ -1333,7 +1341,7 @@ void LLPanelProfileSecondLife::onCommitMenu(const LLSD& userdata) { LLAvatarActions::startCall(agent_id); } - else if (item_name == "callog") + else if (item_name == "chat_history") { LLAvatarActions::viewChatHistory(agent_id); } @@ -1443,7 +1451,7 @@ bool LLPanelProfileSecondLife::onEnableMenu(const LLSD& userdata) { return mVoiceStatus; } - else if (item_name == "callog") + else if (item_name == "chat_history") { return LLLogChat::isTranscriptExist(agent_id); } @@ -1780,6 +1788,12 @@ void LLPanelProfileFirstLife::onOpen(const LLSD& key) { LLPanelProfileTab::onOpen(key); + if (!getSelfProfile()) + { + // Otherwise as the only focusable element it will be selected + mDescriptionEdit->setTabStop(FALSE); + } + resetData(); } @@ -1953,24 +1967,6 @@ void LLPanelProfileNotes::onOpen(const LLSD& key) resetData(); } -void LLPanelProfileNotes::onCommitNotes() -{ - std::string cap_url = gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP); - if (getIsLoaded()) - { - if (!cap_url.empty()) - { - std::string notes = mNotesEditor->getValue().asString(); - LLCoros::instance().launch("putAgentUserInfoCoro", - boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("notes", notes))); - } - else - { - LL_WARNS() << "Failed to update notes, no cap found" << LL_ENDL; - } - } -} - void LLPanelProfileNotes::setNotesText(const std::string &text) { mSaveChanges->setEnabled(FALSE); @@ -1993,6 +1989,20 @@ void LLPanelProfileNotes::onSaveNotesChanges() { LLCoros::instance().launch("putAgentUserInfoCoro", boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("notes", mCurrentNotes))); + + + LLFloater* floater_profile = LLFloaterReg::findInstance("profile", LLSD().with("id", getAvatarId())); + if (!floater_profile) + { + return; + } + + LLPanel* panel = floater_profile->findChild<LLPanel>(PANEL_SECONDLIFE, TRUE); + LLPanelProfileSecondLife *panel_sl = dynamic_cast<LLPanelProfileSecondLife*>(panel); + if (panel_sl) + { + panel_sl->setNotesSnippet(mCurrentNotes); + } } else { diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index fa98e6fd1be..8b2893905d3 100644 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h @@ -99,6 +99,7 @@ class LLPanelProfileSecondLife void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name); + void setNotesSnippet(std::string ¬es); void setProfileImageUploading(bool loading); void setProfileImageUploaded(const LLUUID &image_asset_id); @@ -314,7 +315,6 @@ class LLPanelProfileNotes /*virtual*/ void updateData(); protected: - void onCommitNotes(); void setNotesText(const std::string &text); void onSetNotesDirty(); void onSaveNotesChanges(); diff --git a/indra/newview/llpanelprofileclassifieds.cpp b/indra/newview/llpanelprofileclassifieds.cpp index 56f9a387a14..7f7bba3b91e 100644 --- a/indra/newview/llpanelprofileclassifieds.cpp +++ b/indra/newview/llpanelprofileclassifieds.cpp @@ -207,7 +207,8 @@ void LLPanelProfileClassifieds::onOpen(const LLSD& key) resetData(); - if (getSelfProfile()) + bool own_profile = getSelfProfile(); + if (own_profile) { mNewButton->setVisible(TRUE); mNewButton->setEnabled(FALSE); @@ -215,6 +216,9 @@ void LLPanelProfileClassifieds::onOpen(const LLSD& key) mDeleteButton->setVisible(TRUE); mDeleteButton->setEnabled(FALSE); } + + childSetVisible("buttons_header", own_profile); + } void LLPanelProfileClassifieds::selectClassified(const LLUUID& classified_id, bool edit) diff --git a/indra/newview/llpanelprofilepicks.cpp b/indra/newview/llpanelprofilepicks.cpp index c452fb5abdd..08c4690eaa6 100644 --- a/indra/newview/llpanelprofilepicks.cpp +++ b/indra/newview/llpanelprofilepicks.cpp @@ -135,7 +135,8 @@ void LLPanelProfilePicks::onOpen(const LLSD& key) resetData(); - if (getSelfProfile()) + bool own_profile = getSelfProfile(); + if (own_profile) { mNewButton->setVisible(TRUE); mNewButton->setEnabled(FALSE); @@ -143,6 +144,8 @@ void LLPanelProfilePicks::onOpen(const LLSD& key) mDeleteButton->setVisible(TRUE); mDeleteButton->setEnabled(FALSE); } + + childSetVisible("buttons_header", own_profile); } void LLPanelProfilePicks::selectPick(const LLUUID& pick_id) diff --git a/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml b/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml index ff27113d533..3dfa0a58dfd 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml @@ -13,66 +13,130 @@ name="no_classifieds" value="No Classifieds" /> - <loading_indicator - name="progress_indicator" - top="20" - right="-10" - height="23" - width="23" - follows="top|right" - layout="topleft" - visible="false" - /> - <button - name="new_btn" - label="New..." - tool_tip="Create a new classified at the current location" - enabled="false" - top="25" - left="5" - height="20" - width="70" - follows="left|top" - layout="topleft" - visible="true" - /> - <button - name="delete_btn" - label="Delete..." - tool_tip="Delete currently selected classified" - enabled="false" - left_pad="5" - height="20" - width="70" - follows="left|top" - layout="topleft" - visible="true" - /> - <tab_container - name="tab_classifieds" - top="50" - bottom="-21" - left="4" - right="-4" + + <layout_stack + name="main_stack" + top="0" + left="0" + right="-1" + bottom="-1" + follows="all" + layout="topleft" + animate="false" + orientation="vertical"> + <layout_panel + name="buttons_header" follows="all" layout="topleft" - halign="left" - tab_position="left" - tab_width="85" - use_ellipses="true" - /> - <text - name="classifieds_panel_text" - top="300" - left="110" - right="-110" - height="25" - follows="left|top|right" + height="50" + auto_resize="false" + user_resize="false"> + <button + name="new_btn" + label="New..." + tool_tip="Create a new classified at the current location" + enabled="false" + top="25" + left="5" + height="20" + width="70" + follows="left|top" + layout="topleft" + visible="true" + /> + <button + name="delete_btn" + label="Delete..." + tool_tip="Delete currently selected classified" + enabled="false" + left_pad="5" + height="20" + width="70" + follows="left|top" + layout="topleft" + visible="true" + /> + </layout_panel> + <layout_panel + name="main_body" + follows="all" layout="topleft" - halign="center" - mouse_opaque="false" - wrap="true" - > - Loading... - </text> + height="430" + auto_resize="true" + user_resize="false"> + <tab_container + name="tab_classifieds" + top="0" + bottom="-21" + left="4" + right="-4" + follows="all" + layout="topleft" + halign="left" + tab_position="left" + tab_width="85" + use_ellipses="true" + /> + + <layout_stack + name="indicator_stack" + top="220" + left="0" + right="-1" + height="28" + follows="top|left|right" + layout="topleft" + animate="false" + orientation="horizontal"> + <layout_panel + name="indicator_spacer_left" + follows="all" + layout="topleft" + width="100" + auto_resize="true" + user_resize="false"> + </layout_panel> + <layout_panel + name="buttons_header" + follows="all" + layout="topleft" + width="25" + auto_resize="false" + user_resize="false"> + <loading_indicator + name="progress_indicator" + top="1" + left="1" + height="23" + width="23" + follows="top|left" + layout="topleft" + visible="false" + /> + </layout_panel> + <layout_panel + name="indicator_spacer_right" + follows="all" + layout="topleft" + width="100" + auto_resize="true" + user_resize="false"> + </layout_panel> + </layout_stack> + <text + name="classifieds_panel_text" + top="250" + left="110" + right="-110" + height="25" + follows="left|top|right" + layout="topleft" + halign="center" + mouse_opaque="false" + wrap="true" + > + Loading... + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile_picks.xml b/indra/newview/skins/default/xui/en/panel_profile_picks.xml index 208441e7f70..44d5c448c00 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_picks.xml @@ -13,78 +13,142 @@ name="no_picks" value="No Picks" /> - <loading_indicator - name="progress_indicator" - top="20" - right="-10" - height="23" - width="23" - follows="top|right" - layout="topleft" - visible="false" - /> - <text - name="Tell everyone about your favorite places in Second Life." - top="5" - left="5" - right="-5" - height="16" - follows="left|top|right" + + <layout_stack + name="main_stack" + top="0" + left="0" + right="-1" + bottom="-1" + follows="all" + layout="topleft" + animate="false" + orientation="vertical"> + <layout_panel + name="buttons_header" + follows="all" layout="topleft" - halign="center" + height="50" + auto_resize="false" + user_resize="false"> + <text + name="header_text" + top="5" + left="5" + right="-5" + height="16" + follows="left|top|right" + layout="topleft" + halign="center" > Tell everyone about your favorite places in Second Life. - </text> - <button - name="new_btn" - label="New..." - tool_tip="Create a new pick at the current location" - enabled="false" - top_pad="4" - left="5" - height="20" - width="70" - follows="left|top" - layout="topleft" - visible="false" + </text> + <button + name="new_btn" + label="New..." + tool_tip="Create a new pick at the current location" + enabled="false" + top_pad="4" + left="5" + height="20" + width="70" + follows="left|top" + layout="topleft" + visible="false" /> - <button - name="delete_btn" - label="Delete..." - tool_tip="Delete currently selected pick" - enabled="false" - left_pad="5" - height="20" - width="70" - follows="left|top" - layout="topleft" - visible="false" + <button + name="delete_btn" + label="Delete..." + tool_tip="Delete currently selected pick" + enabled="false" + left_pad="5" + height="20" + width="70" + follows="left|top" + layout="topleft" + visible="false" /> - <tab_container - name="tab_picks" - top="50" - bottom="-5" - left="4" - right="-4" - tab_width="150" + </layout_panel> + <layout_panel + name="main_body" follows="all" layout="topleft" - halign="left" - tab_position="left" - use_ellipses="true" + height="430" + auto_resize="true" + user_resize="false"> + <tab_container + name="tab_picks" + top="0" + bottom="-5" + left="4" + right="-4" + tab_width="150" + follows="all" + layout="topleft" + halign="left" + tab_position="left" + use_ellipses="true" /> - <text - name="picks_panel_text" - top="300" - left="110" - right="-110" - height="25" - follows="left|top|right" + + <layout_stack + name="indicator_stack" + top="220" + left="0" + right="-1" + height="28" + follows="top|left|right" layout="topleft" - halign="center" - mouse_opaque="false" - wrap="true" + animate="false" + orientation="horizontal"> + <layout_panel + name="indicator_spacer_left" + follows="all" + layout="topleft" + width="100" + auto_resize="true" + user_resize="false"> + </layout_panel> + <layout_panel + name="buttons_header" + follows="all" + layout="topleft" + width="25" + auto_resize="false" + user_resize="false"> + <loading_indicator + name="progress_indicator" + top="1" + left="1" + height="23" + width="23" + follows="top|left" + layout="topleft" + visible="false" + /> + </layout_panel> + <layout_panel + name="indicator_spacer_right" + follows="all" + layout="topleft" + width="100" + auto_resize="true" + user_resize="false"> + </layout_panel> + </layout_stack> + <text + name="picks_panel_text" + top="250" + left="100" + right="-100" + height="25" + follows="left|top|right" + layout="topleft" + halign="center" + mouse_opaque="false" + wrap="true" > Loading... - </text> + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml b/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml index 68d8726dc9b..e23da2b7feb 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml @@ -12,9 +12,6 @@ <string name="AgeFormat" value="[AGE]" /> - <string - name="no_partner_text" - value="Partner: None" /> <string name="partner_text" value="Partner: [LINK]" /> @@ -95,7 +92,7 @@ Account: [ACCTTYPE] value="(loading...)" font="SansSerifBigLarge" top="0" - left="2" + left="10" right="-1" height="20" follows="left|top|right" @@ -105,7 +102,7 @@ Account: [ACCTTYPE] name="user_name" value="(loading...)" top_pad="0" - left="2" + left_delta="0" right="-1" height="16" follows="left|top|right" @@ -115,34 +112,64 @@ Account: [ACCTTYPE] name="user_age" value="(loading...)" top_pad="0" - left="2" + left_delta="0" right="-1" height="16" follows="left|top|right" layout="topleft"/> - <text - type="string" - name="partner_link" - value="Partner: (loading...)" + <layout_stack + name="partner_stack" top_pad="0" - left="2" + left_delta="0" right="-1" - height="16" + height="64" follows="left|top|right" layout="topleft" - translate="false" - use_ellipses="true" /> + animate="false" + orientation="vertical"> + <layout_panel + name="partner_layout" + follows="all" + layout="topleft" + height="16" + auto_resize="false" + user_resize="false" + visible="false"> + <text + type="string" + name="partner_link" + value="Partner: (loading...)" + top="0" + left="0" + right="-1" + height="16" + follows="left|top|right" + layout="topleft" + translate="false" + use_ellipses="true" + visible="true"/> + </layout_panel> + + <layout_panel + name="account_layout" + follows="all" + layout="topleft" + height="48" + auto_resize="false" + user_resize="false"> + <text + name="account_info" + value="Account: (loading...)" + top="15" + left="0" + right="-1" + height="16" + follows="left|top|right" + layout="topleft"/> + </layout_panel> + </layout_stack> - <text - name="account_info" - value="Account: (loading...)" - top_pad="0" - left="2" - right="-1" - height="16" - follows="left|top|right" - layout="topleft"/> <loading_indicator name="progress_indicator" @@ -157,7 +184,7 @@ Account: [ACCTTYPE] <menu_button layout="topleft" follows="left|bottom" - left="2" + left="10" bottom="-1" height="25" width="140" @@ -373,7 +400,9 @@ Account: [ACCTTYPE] h_pad="2" max_length="1000" parse_urls="true" - word_wrap="true"/> + word_wrap="true" + use_ellipses="true" + allow_scroll="false"/> </layout_panel> <layout_panel diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 324f1466a8c..285ea03f8a4 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2807,8 +2807,8 @@ If you continue to receive this message, please contact Second Life support for <string name="NoPicksText">You haven't created any Picks. Click the New button to create a Pick.</string> <string name="NoClassifiedsText">You haven't created any Classifieds. Click the New button to create a Classified.</string> <string name="NoAvatarPicksClassifiedsText">User has no picks or classifieds</string> - <string name="NoAvatarPicksText">User has no picks</string> - <string name="NoAvatarClassifiedsText">User has no classifieds</string> + <string name="NoAvatarPicksText">This person has no picks</string> + <string name="NoAvatarClassifiedsText">This person has no classifieds</string> <string name="PicksClassifiedsLoadingText">Loading...</string> <!-- Multi Preview Floater --> -- GitLab