Merge branch 'DRTVWR-591-maint-X' of https://github.com/secondlife/viewer

# Conflicts:
#	indra/newview/llavatarpropertiesprocessor.cpp
master
Ansariel 2023-10-26 23:32:41 +02:00
commit 412a751f39
8 changed files with 70 additions and 23 deletions

View File

@ -160,7 +160,10 @@ public:
void processProperties(void* data, EAvatarProcessorType type)
{
if (APT_PROPERTIES_LEGACY == type)
if (!data)
return;
if (APT_PROPERTIES == type)
{
LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
if (avatar_data)
@ -169,6 +172,12 @@ public:
LLAvatarPropertiesProcessor::getInstance()->removeObserver(avatar_data->avatar_id, this);
}
}
else if (APT_PROPERTIES_LEGACY == type)
{
LLAvatarData avatar_data(*static_cast<LLAvatarLegacyData*>(data));
mParent->displayAvatarDetails(&avatar_data);
LLAvatarPropertiesProcessor::getInstance()->removeObserver(avatar_data.avatar_id, this);
}
if (APT_CLASSIFIED_INFO == type)
{
LLAvatarClassifiedInfo* c_info = static_cast<LLAvatarClassifiedInfo*>(data);
@ -388,7 +397,10 @@ void FSFloaterSearch::onSelectedItem(const LLUUID& selected_item, ESearchCategor
{
case SC_AVATAR:
LLAvatarPropertiesProcessor::getInstance()->addObserver(selected_item, mAvatarPropertiesObserver);
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(selected_item);
if (!gAgent.getRegionCapability("AgentProfile").empty())
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(selected_item);
else
LLAvatarPropertiesProcessor::getInstance()->sendAvatarLegacyPropertiesRequest(selected_item);
break;
case SC_GROUP:
mGroupPropertiesRequest = new FSSearchGroupInfoObserver(selected_item, this);
@ -463,7 +475,7 @@ void FSFloaterSearch::displayParcelDetails(const LLParcelData& parcel_data)
setLoadingProgress(false);
}
void FSFloaterSearch::displayAvatarDetails(LLAvatarData*& avatar_data)
void FSFloaterSearch::displayAvatarDetails(LLAvatarData* avatar_data)
{
if (avatar_data)
{
@ -480,7 +492,7 @@ void FSFloaterSearch::displayAvatarDetails(LLAvatarData*& avatar_data)
mDetailTitle->setValue(LLTrans::getString("LoadingData"));
mDetailDesc->setValue(avatar_data->about_text);
mDetailSnapshot->setValue(avatar_data->image_id);
mDetailAux1->setValue(getString("string.age", map));
mDetailAux1->setValue(avatar_data->hide_age ? "" : getString("string.age", map));
LLAvatarNameCache::get(avatar_data->avatar_id, boost::bind(&FSFloaterSearch::avatarNameUpdatedCallback,this, _1, _2));
childSetVisible("people_profile_btn", true);
childSetVisible("people_message_btn", true);

View File

@ -342,7 +342,7 @@ public:
void onSelectedEvent(const S32 selected_event);
void displayParcelDetails(const LLParcelData& parcel_data);
void displayClassifiedDetails(LLAvatarClassifiedInfo*& c_info);
void displayAvatarDetails(LLAvatarData*& avatar_data);
void displayAvatarDetails(LLAvatarData* avatar_data);
void displayGroupDetails(LLGroupMgrGroupData*& group_data);
void displayEventDetails(U32 eventId,
F64 eventEpoch,

View File

@ -202,11 +202,14 @@ void FSRadarEntry::processProperties(void* data, EAvatarProcessorType type)
}
else if (type == APT_PROPERTIES_LEGACY)
{
LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
LLAvatarLegacyData* avatar_data = static_cast<LLAvatarLegacyData*>(data);
if (avatar_data && avatar_data->agent_id == gAgentID && avatar_data->avatar_id == mID)
{
mStatus = avatar_data->flags;
mAge = ((LLDate::now().secondsSinceEpoch() - (avatar_data->born_on).secondsSinceEpoch()) / 86400);
if (avatar_data->hide_age)
mAge = -2;
else
mAge = ((LLDate::now().secondsSinceEpoch() - (avatar_data->born_on).secondsSinceEpoch()) / 86400);
checkAge();
}
}

View File

@ -422,7 +422,7 @@ void LLAvatarPropertiesProcessor::requestAvatarPropertiesCoro(std::string cap_ur
void LLAvatarPropertiesProcessor::processAvatarLegacyPropertiesReply(LLMessageSystem* msg, void**)
{
LLAvatarData avatar_data;
LLAvatarLegacyData avatar_data;
std::string birth_date;
msg->getUUIDFast( _PREHASH_AgentData, _PREHASH_AgentID, avatar_data.agent_id);
@ -439,7 +439,6 @@ void LLAvatarPropertiesProcessor::processAvatarLegacyPropertiesReply(LLMessageSy
LLDateUtil::dateFromPDTString(avatar_data.born_on, birth_date);
// Since field 'hide_age' is not supported by msg system we'd better hide the age here
// <FS:Ansariel> OpenSim
//avatar_data.hide_age = true;
avatar_data.hide_age = LLGridManager::instance().isInSecondLife();
// </FS:Ansariel>
avatar_data.caption_index = 0;
@ -835,5 +834,5 @@ void LLAvatarPropertiesProcessor::sendNotes(const LLUUID& avatar_id, const std::
gAgent.sendReliableMessage();
}
}
// </FS>
// </FS>

View File

@ -84,6 +84,7 @@ struct LLAvatarLegacyData
std::string caption_text;
std::string customer_type;
U32 flags;
bool hide_age; // <FS> OpenSim
};
struct LLAvatarData
@ -111,7 +112,28 @@ struct LLAvatarData
typedef std::pair<LLUUID, std::string> pick_data_t;
typedef std::list< pick_data_t> picks_list_t;
picks_list_t picks_list;
BOOL allow_publish; // <FS:Ansariel> UDP profiles
BOOL allow_publish; // <FS:Ansariel> UDP profiles
// <FS:Ansariel> Convenient initialization
LLAvatarData() = default;
LLAvatarData(const LLAvatarLegacyData& legacy_data)
{
agent_id = legacy_data.agent_id;
avatar_id = legacy_data.avatar_id;
image_id = legacy_data.image_id;
fl_image_id = legacy_data.fl_image_id;
partner_id = legacy_data.partner_id;
about_text = legacy_data.about_text;
fl_about_text = legacy_data.fl_about_text;
born_on = legacy_data.born_on;
profile_url = legacy_data.profile_url;
caption_index = legacy_data.caption_index;
caption_text = legacy_data.caption_text;
customer_type = legacy_data.customer_type;
flags = legacy_data.flags;
hide_age = legacy_data.hide_age;
}
// </FS:Ansariel>
};
struct LLAvatarData::LLGroupData

View File

@ -420,11 +420,16 @@ LLFetchAvatarPaymentInfo::~LLFetchAvatarPaymentInfo()
void LLFetchAvatarPaymentInfo::processProperties(void* data, EAvatarProcessorType type)
{
if (data && (type == APT_PROPERTIES || type == APT_PROPERTIES_LEGACY))
if (data && type == APT_PROPERTIES)
{
LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
LLFloaterBuyCurrency::handleBuyCurrency(LLAvatarPropertiesProcessor::hasPaymentInfoOnFile(avatar_data), mHasTarget, mName, mPrice);
}
else if (data && type == APT_PROPERTIES_LEGACY)
{
LLAvatarData avatar_data(*static_cast<LLAvatarLegacyData*>(data));
LLFloaterBuyCurrency::handleBuyCurrency(LLAvatarPropertiesProcessor::hasPaymentInfoOnFile(&avatar_data), mHasTarget, mName, mPrice);
}
}
// <COLOSI opensim multi-currency support>

View File

@ -215,14 +215,19 @@ public:
{
// route the data to the inspector
if (data
// <FS:Ansariel> OpenSim
//&& type == APT_PROPERTIES)
&& (type == APT_PROPERTIES || type == APT_PROPERTIES_LEGACY))
// </FS:Ansariel>
&& type == APT_PROPERTIES)
{
LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
mInspector->processAvatarData(avatar_data);
}
// <FS:Ansariel> OpenSim
if (data
&& type == APT_PROPERTIES_LEGACY)
{
LLAvatarData avatar_data(*static_cast<LLAvatarLegacyData*>(data));
mInspector->processAvatarData(&avatar_data);
}
// </FS:Ansariel>
}
// Store avatar ID so we can un-register the observer on destruction

View File

@ -1050,18 +1050,18 @@ void LLPanelProfileSecondLife::processProperties(void* data, EAvatarProcessorTyp
return;
}
if (APT_PROPERTIES_LEGACY == type)
if (data && APT_PROPERTIES_LEGACY == type)
{
const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
if(avatar_data && getAvatarId() == avatar_data->avatar_id)
const LLAvatarData avatar_data(*static_cast<const LLAvatarLegacyData*>(data));
if (getAvatarId() == avatar_data.avatar_id)
{
processProfileProperties(avatar_data);
processProfileProperties(&avatar_data);
}
}
else if (APT_GROUPS == type)
{
LLAvatarGroups* avatar_groups = static_cast<LLAvatarGroups*>(data);
if(avatar_groups && getAvatarId() == avatar_groups->avatar_id)
if (avatar_groups && getAvatarId() == avatar_groups->avatar_id)
{
processGroupProperties(avatar_groups);
}
@ -3338,9 +3338,10 @@ FSPanelPropertiesObserver::FSPanelPropertiesObserver() : LLAvatarPropertiesObser
void FSPanelPropertiesObserver::processProperties(void* data, EAvatarProcessorType type)
{
if (type == APT_PROPERTIES_LEGACY && mPanelProfile)
if (data && type == APT_PROPERTIES_LEGACY && mPanelProfile)
{
mPanelProfile->onAvatarProperties(static_cast<const LLAvatarData*>(data));
LLAvatarData avatardata(*static_cast<LLAvatarLegacyData*>(data));
mPanelProfile->onAvatarProperties(&avatardata);
}
}
// </FS:Zi>