diff --git a/indra/newview/fsfloatersearch.cpp b/indra/newview/fsfloatersearch.cpp index 0df0bee58f..695b5716b8 100644 --- a/indra/newview/fsfloatersearch.cpp +++ b/indra/newview/fsfloatersearch.cpp @@ -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(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(data)); + mParent->displayAvatarDetails(&avatar_data); + LLAvatarPropertiesProcessor::getInstance()->removeObserver(avatar_data.avatar_id, this); + } if (APT_CLASSIFIED_INFO == type) { LLAvatarClassifiedInfo* c_info = static_cast(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); diff --git a/indra/newview/fsfloatersearch.h b/indra/newview/fsfloatersearch.h index 31d31d2e27..efd25eed05 100644 --- a/indra/newview/fsfloatersearch.h +++ b/indra/newview/fsfloatersearch.h @@ -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, diff --git a/indra/newview/fsradarentry.cpp b/indra/newview/fsradarentry.cpp index 47cdf4621c..874ee3727c 100644 --- a/indra/newview/fsradarentry.cpp +++ b/indra/newview/fsradarentry.cpp @@ -202,11 +202,14 @@ void FSRadarEntry::processProperties(void* data, EAvatarProcessorType type) } else if (type == APT_PROPERTIES_LEGACY) { - LLAvatarData* avatar_data = static_cast(data); + LLAvatarLegacyData* avatar_data = static_cast(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(); } } diff --git a/indra/newview/llavatarpropertiesprocessor.cpp b/indra/newview/llavatarpropertiesprocessor.cpp index b049af23de..d64f9f10de 100644 --- a/indra/newview/llavatarpropertiesprocessor.cpp +++ b/indra/newview/llavatarpropertiesprocessor.cpp @@ -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 // OpenSim - //avatar_data.hide_age = true; avatar_data.hide_age = LLGridManager::instance().isInSecondLife(); // avatar_data.caption_index = 0; @@ -835,5 +834,5 @@ void LLAvatarPropertiesProcessor::sendNotes(const LLUUID& avatar_id, const std:: gAgent.sendReliableMessage(); } } +// -// \ No newline at end of file diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h index 8d5e923050..713477e8ce 100644 --- a/indra/newview/llavatarpropertiesprocessor.h +++ b/indra/newview/llavatarpropertiesprocessor.h @@ -84,6 +84,7 @@ struct LLAvatarLegacyData std::string caption_text; std::string customer_type; U32 flags; + bool hide_age; // OpenSim }; struct LLAvatarData @@ -111,7 +112,28 @@ struct LLAvatarData typedef std::pair pick_data_t; typedef std::list< pick_data_t> picks_list_t; picks_list_t picks_list; - BOOL allow_publish; // UDP profiles + BOOL allow_publish; // UDP profiles + + // 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; + } + // }; struct LLAvatarData::LLGroupData diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp index 4363294787..82056befcd 100644 --- a/indra/newview/llfloaterbuycurrency.cpp +++ b/indra/newview/llfloaterbuycurrency.cpp @@ -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(data); LLFloaterBuyCurrency::handleBuyCurrency(LLAvatarPropertiesProcessor::hasPaymentInfoOnFile(avatar_data), mHasTarget, mName, mPrice); } + else if (data && type == APT_PROPERTIES_LEGACY) + { + LLAvatarData avatar_data(*static_cast(data)); + LLFloaterBuyCurrency::handleBuyCurrency(LLAvatarPropertiesProcessor::hasPaymentInfoOnFile(&avatar_data), mHasTarget, mName, mPrice); + } } // diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index b648d34530..2ba532fbd5 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -215,14 +215,19 @@ public: { // route the data to the inspector if (data - // OpenSim - //&& type == APT_PROPERTIES) - && (type == APT_PROPERTIES || type == APT_PROPERTIES_LEGACY)) - // + && type == APT_PROPERTIES) { LLAvatarData* avatar_data = static_cast(data); mInspector->processAvatarData(avatar_data); } + // OpenSim + if (data + && type == APT_PROPERTIES_LEGACY) + { + LLAvatarData avatar_data(*static_cast(data)); + mInspector->processAvatarData(&avatar_data); + } + // } // Store avatar ID so we can un-register the observer on destruction diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index da105746d1..7582af40d9 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -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(data); - if(avatar_data && getAvatarId() == avatar_data->avatar_id) + const LLAvatarData avatar_data(*static_cast(data)); + if (getAvatarId() == avatar_data.avatar_id) { - processProfileProperties(avatar_data); + processProfileProperties(&avatar_data); } } else if (APT_GROUPS == type) { LLAvatarGroups* avatar_groups = static_cast(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(data)); + LLAvatarData avatardata(*static_cast(data)); + mPanelProfile->onAvatarProperties(&avatardata); } } //