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
master
Andrey Kleshchev 2022-05-11 20:38:13 +03:00
parent 76beebae68
commit 1e84d0e649
10 changed files with 361 additions and 181 deletions

View File

@ -74,10 +74,10 @@ public:
void decrementNumberOfPicks() { --mNumberOfPicks; }
private:
void onServerRespond(LLAvatarPicks* picks);
private:
/**
* Sets number of Picks.
*/

View File

@ -119,6 +119,12 @@ void LLPanelProfileTab::setApplyProgress(bool started)
indicator->stop();
}
}
LLPanel* panel = findChild<LLPanel>("indicator_stack");
if (panel)
{
panel->setVisible(started);
}
}
LLPanelProfilePropertiesProcessorTab::LLPanelProfilePropertiesProcessorTab()

View File

@ -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 &notes)
{
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
{

View File

@ -99,6 +99,7 @@ public:
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
void setNotesSnippet(std::string &notes);
void setProfileImageUploading(bool loading);
void setProfileImageUploaded(const LLUUID &image_asset_id);
@ -314,7 +315,6 @@ public:
/*virtual*/ void updateData();
protected:
void onCommitNotes();
void setNotesText(const std::string &text);
void onSetNotesDirty();
void onSaveNotesChanges();

View File

@ -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)

View File

@ -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)

View File

@ -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>

View File

@ -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="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"
/>
<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_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"
use_ellipses="true"
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
name="picks_panel_text"
top="300"
left="110"
right="-110"
height="25"
follows="left|top|right"
<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"
/>
</layout_panel>
<layout_panel
name="main_body"
follows="all"
layout="topleft"
halign="center"
mouse_opaque="false"
wrap="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"
/>
<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="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>

View File

@ -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

View File

@ -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 -->