summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelavatar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanelavatar.cpp')
-rw-r--r--indra/newview/llpanelavatar.cpp91
1 files changed, 79 insertions, 12 deletions
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index e9131a342e..85e95ca1d6 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -52,6 +52,7 @@
#include "llfloaterreg.h"
#include "llnotificationsutil.h"
#include "llvoiceclient.h"
+#include "llnamebox.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLDropTarget
@@ -179,6 +180,10 @@ void LLPanelAvatarNotes::onOpen(const LLSD& key)
void LLPanelAvatarNotes::fillRightsData()
{
+ childSetValue("status_check", FALSE);
+ childSetValue("map_check", FALSE);
+ childSetValue("objects_check", FALSE);
+
const LLRelationship* relation = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
// If true - we are viewing friend's profile, enable check boxes and set values.
if(relation)
@@ -327,6 +332,33 @@ void LLPanelAvatarNotes::onShareButtonClick()
//*TODO not implemented.
}
+LLPanelAvatarNotes::~LLPanelAvatarNotes()
+{
+ if(getAvatarId().notNull())
+ {
+ LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
+ }
+}
+
+// virtual, called by LLAvatarTracker
+void LLPanelAvatarNotes::changed(U32 mask)
+{
+ childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
+}
+
+void LLPanelAvatarNotes::setAvatarId(const LLUUID& id)
+{
+ if(id.notNull())
+ {
+ if(getAvatarId().notNull())
+ {
+ LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
+ }
+ LLPanelProfileTab::setAvatarId(id);
+ LLAvatarTracker::instance().addParticularFriendObserver(getAvatarId(), this);
+ }
+}
+
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
@@ -392,9 +424,18 @@ void LLPanelProfileTab::onMapButtonClick()
void LLPanelProfileTab::updateButtons()
{
- bool enable_map_btn = LLAvatarTracker::instance().isBuddyOnline(getAvatarId())
- && gAgent.isGodlike() || is_agent_mappable(getAvatarId());
+ bool is_avatar_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId());
+
+ if(LLAvatarActions::isFriend(getAvatarId()))
+ {
+ childSetEnabled("teleport", is_avatar_online);
+ }
+ else
+ {
+ childSetEnabled("teleport", true);
+ }
+ bool enable_map_btn = is_avatar_online && gAgent.isGodlike() || is_agent_mappable(getAvatarId());
childSetEnabled("show_on_map_btn", enable_map_btn);
childSetEnabled("call", LLAvatarActions::canCall(getAvatarId()));
}
@@ -554,8 +595,11 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g
if (it != mGroups.begin())
groups += ", ";
-
- std::string group_url="[secondlife:///app/group/" + it->second.asString() + "/about " + it->first + "]";
+ std::string group_name = LLURI::escape(it->first);
+ std::string group_url= it->second.notNull()
+ ? "[secondlife:///app/group/" + it->second.asString() + "/about " + group_name + "]"
+ : getString("no_group_text");
+
groups += group_url;
}
@@ -581,19 +625,15 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
{
+ LLNameBox* name_box = getChild<LLNameBox>("partner_text");
if (avatar_data->partner_id.notNull())
{
- std::string first, last;
- BOOL found = gCacheName->getName(avatar_data->partner_id, first, last);
- if (found)
- {
- childSetTextArg("partner_text", "[FIRST]", first);
- childSetTextArg("partner_text", "[LAST]", last);
- }
+ name_box->setNameID(avatar_data->partner_id, FALSE);
}
else
{
- childSetTextArg("partner_text", "[FIRST]", getString("no_partner_text"));
+ name_box->setNameID(LLUUID::null, FALSE);
+ name_box->setText(getString("no_partner_text"));
}
}
@@ -712,6 +752,33 @@ void LLPanelAvatarProfile::onOverflowButtonClicked()
LLMenuGL::showPopup(this, mProfileMenu, rect.mRight, rect.mTop);
}
+LLPanelAvatarProfile::~LLPanelAvatarProfile()
+{
+ if(getAvatarId().notNull())
+ {
+ LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
+ }
+}
+
+// virtual, called by LLAvatarTracker
+void LLPanelAvatarProfile::changed(U32 mask)
+{
+ childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
+}
+
+void LLPanelAvatarProfile::setAvatarId(const LLUUID& id)
+{
+ if(id.notNull())
+ {
+ if(getAvatarId().notNull())
+ {
+ LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
+ }
+ LLPanelProfileTab::setAvatarId(id);
+ LLAvatarTracker::instance().addParticularFriendObserver(getAvatarId(), this);
+ }
+}
+
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////