Merge branch 'DRTVWR-580-maint-T' of https://github.com/secondlife/viewer

# Conflicts:
#	indra/newview/llinventorypanel.cpp
#	indra/newview/llpanelprofile.cpp
#	indra/newview/skins/default/xui/en/panel_profile_secondlife.xml
master
Ansariel 2023-05-02 20:11:20 +02:00
commit ccb1dfa072
13 changed files with 149 additions and 23 deletions

View File

@ -118,7 +118,8 @@ public:
// Sets cursor, may set to arrow+hourglass
virtual void setCursor(ECursorType cursor) { mNextCursor = cursor; };
virtual ECursorType getCursor() const;
virtual ECursorType getCursor() const;
virtual ECursorType getNextCursor() const { return mNextCursor; };
virtual void updateCursor() = 0;
virtual void captureMouse() = 0;

View File

@ -85,6 +85,7 @@ struct LLAvatarData
std::string profile_url;
U8 caption_index;
std::string caption_text;
std::string customer_type;
U32 flags;
BOOL allow_publish;
};

View File

@ -578,6 +578,7 @@ void LLInventoryModelBackgroundFetch::bulkFetch()
// *TODO: Think I'd like to get a shared pointer to this and share it
// among all the folder requests.
uuid_vec_t recursive_cats;
uuid_vec_t all_cats; // dupplicate avoidance
LLSD folder_request_body;
LLSD folder_request_body_lib;
@ -606,7 +607,7 @@ void LLInventoryModelBackgroundFetch::bulkFetch()
{
const LLViewerInventoryCategory * cat(gInventory.getCategory(cat_id));
if (cat)
if (cat && std::find(all_cats.begin(), all_cats.end(), cat_id) == all_cats.end())
{
if (LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion())
{
@ -650,6 +651,7 @@ void LLInventoryModelBackgroundFetch::bulkFetch()
{
recursive_cats.push_back(cat_id);
}
all_cats.push_back(cat_id);
}
else
{
@ -982,6 +984,46 @@ void BGFolderHttpHandler::processFailure(LLCore::HttpStatus status, LLCore::Http
<< LLCoreHttpUtil::responseToString(response) << "]" << LL_ENDL;
// Could use a 404 test here to try to detect revoked caps...
if(status == LLCore::HttpStatus(HTTP_FORBIDDEN))
{
// too large, split into two, assume that this isn't the library
const std::string url(gAgent.getRegionCapability("FetchInventoryDescendents2"));
S32 size = mRequestSD["folders"].size();
if (!gDisconnected && !LLApp::isExiting() && !url.empty() && size > 1)
{
LLSD folders;
uuid_vec_t recursive_cats;
LLSD::array_iterator iter = mRequestSD["folders"].beginArray();
LLSD::array_iterator end = mRequestSD["folders"].endArray();
while (iter != end)
{
folders.append(*iter);
LLUUID fodler_id = iter->get("folder_id").asUUID();
if (std::find(mRecursiveCatUUIDs.begin(), mRecursiveCatUUIDs.end(), fodler_id) != mRecursiveCatUUIDs.end())
{
recursive_cats.push_back(fodler_id);
}
if (folders.size() == (S32)(size / 2))
{
LLSD request_body;
request_body["folders"] = folders;
LLCore::HttpHandler::ptr_t handler(new BGFolderHttpHandler(request_body, recursive_cats));
gInventory.requestPost(false, url, request_body, handler, "Inventory Folder");
recursive_cats.clear();
folders.clear();
}
iter++;
}
LLSD request_body;
request_body["folders"] = folders;
LLCore::HttpHandler::ptr_t handler(new BGFolderHttpHandler(request_body, recursive_cats));
gInventory.requestPost(false, url, request_body, handler, "Inventory Folder");
return;
}
}
// This was originally the request retry logic for the inventory
// request which tested on HTTP_INTERNAL_ERROR status. This

View File

@ -1356,24 +1356,22 @@ void LLInventoryPanel::unSelectAll()
BOOL LLInventoryPanel::handleHover(S32 x, S32 y, MASK mask)
{
// <FS:AW>
// BOOL handled = LLView::handleHover(x, y, mask);
// if(handled)
// {
// ECursorType cursor = getWindow()->getCursor();
// if (LLInventoryModelBackgroundFetch::instance().folderFetchActive() && cursor == UI_CURSOR_ARROW)
// {
// // replace arrow cursor with arrow and hourglass cursor
// getWindow()->setCursor(UI_CURSOR_WORKING);
// }
// }
// else
// {
// getWindow()->setCursor(UI_CURSOR_ARROW);
// }
LLView::handleHover(x, y, mask);
// </FS:AW>
BOOL handled = LLView::handleHover(x, y, mask);
if(handled)
{
// getCursor gets current cursor, setCursor sets next cursor
// check that children didn't set own 'next' cursor
ECursorType cursor = getWindow()->getNextCursor();
if (LLInventoryModelBackgroundFetch::instance().folderFetchActive() && cursor == UI_CURSOR_ARROW)
{
// replace arrow cursor with arrow and hourglass cursor
getWindow()->setCursor(UI_CURSOR_WORKING);
}
}
else
{
getWindow()->setCursor(UI_CURSOR_ARROW);
}
return TRUE;
}

View File

@ -165,6 +165,7 @@ void request_avatar_properties_coro(std::string cap_url, LLUUID agent_id)
avatar_data->fl_about_text = result["fl_about_text"].asString();
avatar_data->born_on = result["member_since"].asDate();
avatar_data->profile_url = getProfileURL(agent_id.asString());
avatar_data->customer_type = result["customer_type"].asString();
avatar_data->flags = 0;
@ -1238,6 +1239,8 @@ void LLPanelProfileSecondLife::resetData()
// <FS:Ansariel> Fix LL UI/UX design accident
//childSetVisible("partner_layout", FALSE);
//childSetVisible("badge_layout", FALSE);
//childSetVisible("partner_spacer_layout", TRUE);
// <FS:Zi> Always show the online status text, just set it to "offline" when a friend is hiding
// mStatusText->setVisible(FALSE);
mCopyMenuButton->setVisible(FALSE);
@ -1572,6 +1575,61 @@ void LLPanelProfileSecondLife::fillAccountStatus(const LLAvatarData* avatar_data
std::string caption_text = getString("CaptionTextAcctInfo", args);
getChild<LLUICtrl>("account_info")->setValue(caption_text);
// <FS:Ansariel> Leave this out for now until we figured out if/how to show badges
//const S32 LINDEN_EMPLOYEE_INDEX = 3;
//LLDate sl_release;
//sl_release.fromYMDHMS(2003, 6, 23, 0, 0, 0);
//std::string customer_lower = avatar_data->customer_type;
//LLStringUtil::toLower(customer_lower);
//if (avatar_data->caption_index == LINDEN_EMPLOYEE_INDEX)
//{
// getChild<LLUICtrl>("badge_icon")->setValue("Profile_Badge_Linden");
// getChild<LLUICtrl>("badge_text")->setValue(getString("BadgeLinden"));
// childSetVisible("badge_layout", TRUE);
// childSetVisible("partner_spacer_layout", FALSE);
//}
//else if (avatar_data->born_on < sl_release)
//{
// getChild<LLUICtrl>("badge_icon")->setValue("Profile_Badge_Beta");
// getChild<LLUICtrl>("badge_text")->setValue(getString("BadgeBeta"));
// childSetVisible("badge_layout", TRUE);
// childSetVisible("partner_spacer_layout", FALSE);
//}
//else if (customer_lower == "beta_lifetime")
//{
// getChild<LLUICtrl>("badge_icon")->setValue("Profile_Badge_Beta_Lifetime");
// getChild<LLUICtrl>("badge_text")->setValue(getString("BadgeBetaLifetime"));
// childSetVisible("badge_layout", TRUE);
// childSetVisible("partner_spacer_layout", FALSE);
//}
//else if (customer_lower == "lifetime")
//{
// getChild<LLUICtrl>("badge_icon")->setValue("Profile_Badge_Lifetime");
// getChild<LLUICtrl>("badge_text")->setValue(getString("BadgeLifetime"));
// childSetVisible("badge_layout", TRUE);
// childSetVisible("partner_spacer_layout", FALSE);
//}
//else if (customer_lower == "premium_lifetime")
//{
// getChild<LLUICtrl>("badge_icon")->setValue("Profile_Premium_Lifetime");
// getChild<LLUICtrl>("badge_text")->setValue(getString("BadgePremiumLifetime"));
// childSetVisible("badge_layout", TRUE);
// childSetVisible("partner_spacer_layout", FALSE);
//}
//else if (customer_lower == "pplus_lifetime" || customer_lower == "premium_plus_lifetime")
//{
// getChild<LLUICtrl>("badge_icon")->setValue("Profile_Badge_Pplus_Lifetime");
// getChild<LLUICtrl>("badge_text")->setValue(getString("BadgePremiumPlusLifetime"));
// childSetVisible("badge_layout", TRUE);
// childSetVisible("partner_spacer_layout", FALSE);
//}
//else
//{
// childSetVisible("badge_layout", FALSE);
// childSetVisible("partner_spacer_layout", TRUE);
//}
// </FS:Ansariel>
}
void LLPanelProfileSecondLife::fillRightsData()
@ -1742,7 +1800,7 @@ void LLPanelProfileSecondLife::updateOnlineStatus()
// <FS:Ansariel> Fix LL UI/UX design accident
//else
//{
// childSetVisible("frind_layout", false);
// childSetVisible("friend_layout", false);
// childSetVisible("online_layout", false);
// childSetVisible("offline_layout", false);
//}
@ -1768,7 +1826,7 @@ void LLPanelProfileSecondLife::processOnlineStatus(bool is_friend, bool show_onl
}
// </FS:Zi>
// <FS:Ansariel> Fix LL UI/UX design accident
//childSetVisible("frind_layout", is_friend);
//childSetVisible("friend_layout", is_friend);
//childSetVisible("online_layout", online && show_online);
//childSetVisible("offline_layout", !online && show_online);
// <FS:Zi> Always show the online status text, just set it to "offline" when a friend is hiding

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -607,7 +607,13 @@ with the same filename but different name
<texture name="Play_Off" file_name="icons/Play_Off.png" preload="false" />
<texture name="Play_Over" file_name="icons/Play_Over.png" preload="false" />
<texture name="Play_Press" file_name="icons/Play_Press.png" preload="false" />
<texture name="Profile_Badge_Beta" file_name="icons/profile_badge_beta.png" preload="true"/>
<texture name="Profile_Badge_Beta_Lifetime" file_name="icons/profile_badge_beta_lifetime.png" preload="true"/>
<texture name="Profile_Badge_Lifetime" file_name="icons/profile_badge_lifetime.png" preload="true"/>
<texture name="Profile_Badge_Linden" file_name="icons/profile_badge_linden.png" preload="true"/>
<texture name="Profile_Badge_Pplus_Lifetime" file_name="icons/profile_badge_pplus_lifetime.png" preload="true"/>
<texture name="Profile_Badge_Premium_Lifetime" file_name="icons/profile_badge_premium_lifetime.png" preload="true"/>
<texture name="Profile_Group_Visibility_Off" file_name="icons/profile_group_visibility_eye_off.png" preload="true"/>
<texture name="Profile_Group_Visibility_Off_Pressed" file_name="icons/profile_group_visibility_eye_off_pressed.png" preload="true"/>
<texture name="Profile_Group_Visibility_On" file_name="icons/profile_group_visibility_eye_on.png" preload="true"/>

View File

@ -31,6 +31,26 @@
[PAYMENTINFO]
[FIRESTORM][FSDEV][FSSUPP][FSQA][FSGW]
</string>
<!--Badges-->
<string
name="BadgeBeta"
value="Original Beta Tester" />
<string
name="BadgeBetaLifetime"
value="Beta Lifetime member" />
<string
name="BadgeLifetime"
value="Lifetime member" />
<string
name="BadgeLinden"
value="Linden Lab employee" />
<string
name="BadgePremiumLifetime"
value="Premium lifetime" />
<string
name="BadgePremiumPlusLifetime"
value="Premium Plus lifetime" />
<string
name="payment_update_link_url"
>