summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelprofile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanelprofile.cpp')
-rw-r--r--indra/newview/llpanelprofile.cpp151
1 files changed, 72 insertions, 79 deletions
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index e3dd27f102..d6f88047d1 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -84,6 +84,7 @@ static const std::string PANEL_PICKS = "panel_profile_picks";
static const std::string PANEL_CLASSIFIEDS = "panel_profile_classifieds";
static const std::string PANEL_FIRSTLIFE = "panel_profile_firstlife";
static const std::string PANEL_NOTES = "panel_profile_notes";
+static const std::string PANEL_PROFILE_VIEW = "panel_profile_view";
static const std::string PROFILE_PROPERTIES_CAP = "AgentProfile";
@@ -123,32 +124,59 @@ void request_avatar_properties_coro(std::string cap_url, LLUUID agent_id)
return;
}
+ LLPanel *panel = floater_profile->findChild<LLPanel>(PANEL_PROFILE_VIEW, TRUE);
+ LLPanelProfile *panel_profile = dynamic_cast<LLPanelProfile*>(panel);
+ if (!panel_profile)
+ {
+ LL_WARNS() << PANEL_PROFILE_VIEW << " not found" << LL_ENDL;
+ return;
+ }
+
// Avatar Data
- LLAvatarData avatar_data;
+ LLAvatarData *avatar_data = &panel_profile->mAvatarData;
std::string birth_date;
- avatar_data.agent_id = agent_id;
- avatar_data.avatar_id = agent_id;
- avatar_data.image_id = result["sl_image_id"].asUUID();
- avatar_data.fl_image_id = result["fl_image_id"].asUUID();
- avatar_data.partner_id = result["partner_id"].asUUID();
- avatar_data.about_text = result["sl_about_text"].asString();
- 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->agent_id = agent_id;
+ avatar_data->avatar_id = agent_id;
+ avatar_data->image_id = result["sl_image_id"].asUUID();
+ avatar_data->fl_image_id = result["fl_image_id"].asUUID();
+ avatar_data->partner_id = result["partner_id"].asUUID();
+ // Todo: new descriptio size is 65536, check if it actually fits or has scroll
+ avatar_data->about_text = result["sl_about_text"].asString();
+ // Todo: new descriptio size is 65536, check if it actually fits or has scroll
+ 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.flags = 0;
- avatar_data.caption_index = 0;
+ avatar_data->flags = 0;
- LLPanel *panel = floater_profile->findChild<LLPanel>(PANEL_SECONDLIFE, TRUE);
+ if (result["online"].asBoolean())
+ {
+ avatar_data->flags |= AVATAR_ONLINE;
+ }
+ if (result["allow_publish"].asBoolean())
+ {
+ avatar_data->flags |= AVATAR_ALLOW_PUBLISH;
+ }
+
+ if (result["charter_member"].asBoolean())
+ {
+ const S32 TYPE_CHARTER_MEMBER = 2;
+ avatar_data->caption_index = TYPE_CHARTER_MEMBER;
+ }
+ else
+ {
+ const S32 TYPE_RESIDENT = 0; // See ACCT_TYPE
+ avatar_data->caption_index = TYPE_RESIDENT;
+ }
+
+ panel = floater_profile->findChild<LLPanel>(PANEL_SECONDLIFE, TRUE);
LLPanelProfileSecondLife *panel_sl = dynamic_cast<LLPanelProfileSecondLife*>(panel);
if (panel_sl)
{
- panel_sl->fillCommonData(&avatar_data);
- panel_sl->fillPartnerData(&avatar_data);
- panel_sl->updateButtons();
+ panel_sl->processProfileProperties(avatar_data);
}
panel = floater_profile->findChild<LLPanel>(PANEL_WEB, TRUE);
@@ -162,9 +190,9 @@ void request_avatar_properties_coro(std::string cap_url, LLUUID agent_id)
LLPanelProfileFirstLife *panel_first = dynamic_cast<LLPanelProfileFirstLife*>(panel);
if (panel_first)
{
- panel_first->mCurrentDescription = avatar_data.fl_about_text;
+ panel_first->mCurrentDescription = avatar_data->fl_about_text;
panel_first->mDescriptionEdit->setValue(panel_first->mCurrentDescription);
- panel_first->mPicture->setValue(avatar_data.fl_image_id);
+ panel_first->mPicture->setValue(avatar_data->fl_image_id);
panel_first->updateButtons();
}
@@ -550,19 +578,19 @@ void LLPanelProfileSecondLife::apply(LLAvatarData* data)
{
params["sl_about_text"] = mDescriptionEdit->getValue().asString();
}
+ if ((bool)data->allow_publish != mShowInSearchCheckbox->getValue().asBoolean())
+ {
+ params["allow_publish"] = mShowInSearchCheckbox->getValue().asBoolean();
+ }
if (!params.emptyMap())
{
LLCoros::instance().launch("putAgentUserInfoCoro",
boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), params));
}
}
-
- if ((bool)data->allow_publish != mShowInSearchCheckbox->getValue().asBoolean())
+ else
{
- data->image_id = mSecondLifePic->getImageAssetID();
- data->about_text = mDescriptionEdit->getValue().asString();
- data->allow_publish = mShowInSearchCheckbox->getValue();
- LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesUpdate(data);
+ LL_WARNS() << "Failed to update profile data, no cap found" << LL_ENDL;
}
}
}
@@ -579,9 +607,10 @@ void LLPanelProfileSecondLife::updateData()
{
LLCoros::instance().launch("requestAgentUserInfoCoro",
boost::bind(request_avatar_properties_coro, cap_url, avatar_id));
-
- // needed for online status for other avatars and 'payment' for self
- LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(avatar_id);
+ }
+ else
+ {
+ LL_WARNS() << "Failed to update profile data, no cap found" << LL_ENDL;
}
}
}
@@ -633,9 +662,9 @@ void LLPanelProfileSecondLife::processProfileProperties(const LLAvatarData* avat
processOnlineStatus(avatar_data->flags & AVATAR_ONLINE);
}
- //fillCommonData(avatar_data);
+ fillCommonData(avatar_data);
- //fillPartnerData(avatar_data);
+ fillPartnerData(avatar_data);
fillAccountStatus(avatar_data);
@@ -1503,7 +1532,6 @@ BOOL LLPanelProfileNotes::postBuild()
mMapRights = getChild<LLCheckBoxCtrl>("map_check");
mEditObjectRights = getChild<LLCheckBoxCtrl>("objects_check");
mNotesEditor = getChild<LLTextEditor>("notes_edit");
- mCharacterLimitWarning = getChild<LLTextBox>("character_limit_warning");
mEditObjectRights->setCommitCallback(boost::bind(&LLPanelProfileNotes::onCommitRights, this));
@@ -1552,11 +1580,18 @@ void LLPanelProfileNotes::fillRightsData()
void LLPanelProfileNotes::onCommitNotes()
{
std::string cap_url = gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP);
- if (getIsLoaded() && !cap_url.empty())
+ if (getIsLoaded())
{
- std::string notes = mNotesEditor->getValue().asString();
- LLCoros::instance().launch("putAgentUserInfoCoro",
- boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("notes", notes)));
+ 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;
+ }
}
}
@@ -1630,27 +1665,6 @@ void LLPanelProfileNotes::applyRights()
LLAvatarPropertiesProcessor::getInstance()->sendFriendRights(getAvatarId(), rights);
}
-void LLPanelProfileNotes::updateWarning()
-{
- mCharacterLimitWarning->setText(std::string());
-
- std::string str = getString("header_symbol_limit");
- mCharacterLimitWarning->appendText(str, false, LLStyle::Params().color(LLColor4::yellow));
- mCharacterLimitWarning->appendText(" ", false, LLStyle::Params());
-
- LLStringUtil::format_map_t args;
- if (!mURLWebProfile.empty())
- {
- args["[PROFILE_URL]"] = mURLWebProfile;
- }
- else
- {
- args["[PROFILE_URL]"] = getProfileURL(getAvatarId().asString());
- }
- str = getString("body_symbol_limit", args);
- mCharacterLimitWarning->appendText(str, false, LLStyle::Params());
-}
-
void LLPanelProfileNotes::processProperties(void* data, EAvatarProcessorType type)
{
if (APT_NOTES == type)
@@ -1669,16 +1683,6 @@ void LLPanelProfileNotes::processProperties(LLAvatarNotes* avatar_notes)
mNotesEditor->setValue(avatar_notes->notes);
mNotesEditor->setEnabled(TRUE);
updateButtons();
-
- /*if (avatar_notes->notes.size() > 1000)
- {
- mCharacterLimitWarning->setVisible(TRUE);
- updateWarning();
- }
- else
- {*/
- mCharacterLimitWarning->setVisible(FALSE);
- //}
}
void LLPanelProfileNotes::resetData()
@@ -1688,7 +1692,6 @@ void LLPanelProfileNotes::resetData()
mOnlineStatus->setValue(FALSE);
mMapRights->setValue(FALSE);
mEditObjectRights->setValue(FALSE);
- mCharacterLimitWarning->setVisible(FALSE);
mURLWebProfile.clear();
}
@@ -1735,11 +1738,6 @@ void LLPanelProfileNotes::onAvatarNameCache(const LLUUID& agent_id, const LLAvat
}
mURLWebProfile = getProfileURL(username, false);
-
- if (mCharacterLimitWarning->getVisible())
- {
- updateWarning();
- }
}
@@ -1847,9 +1845,6 @@ void LLPanelProfile::updateData()
{
LLCoros::instance().launch("requestAgentUserInfoCoro",
boost::bind(request_avatar_properties_coro, cap_url, avatar_id));
-
- // needed for online status for other avatars and 'payment' for self
- LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(avatar_id);
}
}
}
@@ -1860,11 +1855,9 @@ void LLPanelProfile::apply()
{
//KC - AvatarData is spread over 3 different panels
// collect data from the last 2 and give to the first to save
- LLAvatarData data = LLAvatarData();
- data.avatar_id = gAgentID;
- mPanelFirstlife->apply(&data);
- mPanelWeb->apply(&data);
- mPanelSecondlife->apply(&data);
+ mPanelFirstlife->apply(&mAvatarData);
+ mPanelWeb->apply(&mAvatarData);
+ mPanelSecondlife->apply(&mAvatarData);
mPanelInterests->apply();
mPanelPicks->apply();