SL-15312 Tweaks and fixes #2
- changed 'is friend' color - fixed off/online status vanishing - changed user name format - fixed rights behavior - cleaned up some unused code - readded click functionality to permission icons (might need to return buttons instead)master
parent
4ffc6c3fde
commit
ab3d986ac8
|
|
@ -468,123 +468,8 @@ public:
|
|||
};
|
||||
LLProfileHandler gProfileHandler;
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// LLAgentHandler
|
||||
|
||||
class LLAgentHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
// requires trusted browser to trigger
|
||||
LLAgentHandler() : LLCommandHandler("agent", UNTRUSTED_THROTTLE) { }
|
||||
|
||||
bool handle(const LLSD& params, const LLSD& query_map,
|
||||
LLMediaCtrl* web)
|
||||
{
|
||||
if (params.size() < 2) return false;
|
||||
LLUUID avatar_id;
|
||||
if (!avatar_id.set(params[0], FALSE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const std::string verb = params[1].asString();
|
||||
if (verb == "about")
|
||||
{
|
||||
LLAvatarActions::showProfile(avatar_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "inspect")
|
||||
{
|
||||
LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", avatar_id));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "im")
|
||||
{
|
||||
LLAvatarActions::startIM(avatar_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "pay")
|
||||
{
|
||||
if (!LLUI::getInstance()->mSettingGroups["config"]->getBOOL("EnableAvatarPay"))
|
||||
{
|
||||
LLNotificationsUtil::add("NoAvatarPay", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit"));
|
||||
return true;
|
||||
}
|
||||
|
||||
LLAvatarActions::pay(avatar_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "offerteleport")
|
||||
{
|
||||
LLAvatarActions::offerTeleport(avatar_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "requestfriend")
|
||||
{
|
||||
LLAvatarActions::requestFriendshipDialog(avatar_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "removefriend")
|
||||
{
|
||||
LLAvatarActions::removeFriendDialog(avatar_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "mute")
|
||||
{
|
||||
if (! LLAvatarActions::isBlocked(avatar_id))
|
||||
{
|
||||
LLAvatarActions::toggleBlock(avatar_id);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "unmute")
|
||||
{
|
||||
if (LLAvatarActions::isBlocked(avatar_id))
|
||||
{
|
||||
LLAvatarActions::toggleBlock(avatar_id);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "block")
|
||||
{
|
||||
if (params.size() > 2)
|
||||
{
|
||||
const std::string object_name = LLURI::unescape(params[2].asString());
|
||||
LLMute mute(avatar_id, object_name, LLMute::OBJECT);
|
||||
LLMuteList::getInstance()->add(mute);
|
||||
LLPanelBlockedList::showPanelAndSelect(mute.mID);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "unblock")
|
||||
{
|
||||
if (params.size() > 2)
|
||||
{
|
||||
const std::string object_name = params[2].asString();
|
||||
LLMute mute(avatar_id, object_name, LLMute::OBJECT);
|
||||
LLMuteList::getInstance()->remove(mute);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
LLAgentHandler gAgentHandler;
|
||||
|
||||
|
||||
///----------------------------------------------------------------------------
|
||||
/// LLFloaterInventoryFinder
|
||||
/// LLFloaterProfilePermissions
|
||||
///----------------------------------------------------------------------------
|
||||
|
||||
class LLFloaterProfilePermissions
|
||||
|
|
@ -605,7 +490,8 @@ private:
|
|||
void fillRightsData();
|
||||
void rightsConfirmationCallback(const LLSD& notification, const LLSD& response);
|
||||
void confirmModifyRights(bool grant);
|
||||
void onCommitRights();
|
||||
void onCommitSeeOnlineRights();
|
||||
void onCommitEditRights();
|
||||
|
||||
void onApplyRights();
|
||||
void onCancel();
|
||||
|
|
@ -651,7 +537,8 @@ BOOL LLFloaterProfilePermissions::postBuild()
|
|||
mOkBtn = getChild<LLButton>("perms_btn_ok");
|
||||
mCancelBtn = getChild<LLButton>("perms_btn_cancel");
|
||||
|
||||
mEditObjectRights->setCommitCallback([this](LLUICtrl*, void*) { onCommitRights(); }, nullptr);
|
||||
mOnlineStatus->setCommitCallback([this](LLUICtrl*, void*) { onCommitSeeOnlineRights(); }, nullptr);
|
||||
mEditObjectRights->setCommitCallback([this](LLUICtrl*, void*) { onCommitEditRights(); }, nullptr);
|
||||
mOkBtn->setCommitCallback([this](LLUICtrl*, void*) { onApplyRights(); }, nullptr);
|
||||
mCancelBtn->setCommitCallback([this](LLUICtrl*, void*) { onCancel(); }, nullptr);
|
||||
|
||||
|
|
@ -704,7 +591,9 @@ void LLFloaterProfilePermissions::fillRightsData()
|
|||
{
|
||||
S32 rights = relation->getRightsGrantedTo();
|
||||
|
||||
mOnlineStatus->setValue(LLRelationship::GRANT_ONLINE_STATUS & rights ? TRUE : FALSE);
|
||||
BOOL see_online = LLRelationship::GRANT_ONLINE_STATUS & rights ? TRUE : FALSE;
|
||||
mOnlineStatus->setValue(see_online);
|
||||
mMapRights->setEnabled(see_online);
|
||||
mMapRights->setValue(LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE);
|
||||
mEditObjectRights->setValue(LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE);
|
||||
}
|
||||
|
|
@ -733,13 +622,38 @@ void LLFloaterProfilePermissions::confirmModifyRights(bool grant)
|
|||
boost::bind(&LLFloaterProfilePermissions::rightsConfirmationCallback, this, _1, _2));
|
||||
}
|
||||
|
||||
void LLFloaterProfilePermissions::onCommitRights()
|
||||
void LLFloaterProfilePermissions::onCommitSeeOnlineRights()
|
||||
{
|
||||
bool see_online = mOnlineStatus->getValue().asBoolean();
|
||||
mMapRights->setEnabled(see_online);
|
||||
if (see_online)
|
||||
{
|
||||
const LLRelationship* relation = LLAvatarTracker::instance().getBuddyInfo(mAvatarID);
|
||||
if (relation)
|
||||
{
|
||||
S32 rights = relation->getRightsGrantedTo();
|
||||
mMapRights->setValue(LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
closeFloater();
|
||||
LL_INFOS("ProfilePermissions") << "Floater closing since agent is no longer a friend" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mMapRights->setValue(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterProfilePermissions::onCommitEditRights()
|
||||
{
|
||||
const LLRelationship* buddy_relationship = LLAvatarTracker::instance().getBuddyInfo(mAvatarID);
|
||||
|
||||
if (!buddy_relationship)
|
||||
{
|
||||
LL_WARNS("ProfilePermissions") << "Trying to modify rights for non-friend avatar. Skipped." << LL_ENDL;
|
||||
LL_WARNS("ProfilePermissions") << "Trying to modify rights for non-friend avatar. Closing floater." << LL_ENDL;
|
||||
closeFloater();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -844,6 +758,13 @@ BOOL LLPanelProfileSecondLife::postBuild()
|
|||
|
||||
getChild<LLButton>("open_notes")->setCommitCallback([this](LLUICtrl*, void*) { onOpenNotes(); }, nullptr);
|
||||
|
||||
mCanSeeOnlineIcon->setMouseUpCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onShowAgentPermissionsDialog(); });
|
||||
mCantSeeOnlineIcon->setMouseUpCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onShowAgentPermissionsDialog(); });
|
||||
mCanSeeOnMapIcon->setMouseUpCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onShowAgentPermissionsDialog(); });
|
||||
mCantSeeOnMapIcon->setMouseUpCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onShowAgentPermissionsDialog(); });
|
||||
mCanEditObjectsIcon->setMouseUpCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onShowAgentPermissionsDialog(); });
|
||||
mCantEditObjectsIcon->setMouseUpCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onShowAgentPermissionsDialog(); });
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -995,9 +916,10 @@ void LLPanelProfileSecondLife::openGroupProfile()
|
|||
void LLPanelProfileSecondLife::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
{
|
||||
mAvatarNameCacheConnection.disconnect();
|
||||
// Should be possible to get this from AgentProfile capability
|
||||
getChild<LLUICtrl>("display_name")->setValue( av_name.getDisplayName() );
|
||||
getChild<LLUICtrl>("user_name")->setValue(av_name.getAccountName());
|
||||
if (getIsLoaded())
|
||||
{
|
||||
fillNameAgeData(av_name, mBornOn);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelProfileSecondLife::setNotesSnippet(std::string ¬es)
|
||||
|
|
@ -1049,10 +971,21 @@ void LLPanelProfileSecondLife::fillCommonData(const LLAvatarData* avatar_data)
|
|||
// and to make sure icons in text will be up to date
|
||||
LLAvatarIconIDCache::getInstance()->add(avatar_data->avatar_id, avatar_data->image_id);
|
||||
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now());
|
||||
std::string register_date = getString("AgeFormat", args);
|
||||
getChild<LLUICtrl>("user_age")->setValue(register_date);
|
||||
mBornOn = avatar_data->born_on;
|
||||
|
||||
// Should be possible to get user and display names from AgentProfile capability
|
||||
// but at the moment contraining this to limits of LLAvatarData
|
||||
LLAvatarName av_name;
|
||||
if (LLAvatarNameCache::get(avatar_data->avatar_id, &av_name))
|
||||
{
|
||||
fillNameAgeData(av_name, mBornOn);
|
||||
}
|
||||
else if (!mAvatarNameCacheConnection.connected())
|
||||
{
|
||||
// shouldn't happen, but just in case
|
||||
mAvatarNameCacheConnection = LLAvatarNameCache::get(getAvatarId(), boost::bind(&LLPanelProfileSecondLife::onAvatarNameCache, this, _1, _2));
|
||||
}
|
||||
|
||||
setDescriptionText(avatar_data->about_text);
|
||||
|
||||
if (avatar_data->image_id.notNull())
|
||||
|
|
@ -1144,10 +1077,16 @@ void LLPanelProfileSecondLife::fillRightsData()
|
|||
}
|
||||
|
||||
childSetVisible("permissions_panel", NULL != relation);
|
||||
childSetVisible("spacer_layout", NULL == relation);
|
||||
childSetVisible("frind_layout", NULL != relation);
|
||||
childSetVisible("online_layout", false);
|
||||
childSetVisible("offline_layout", false);
|
||||
}
|
||||
|
||||
void LLPanelProfileSecondLife::fillNameAgeData(const LLAvatarName &av_name, const LLDate &born_on)
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[AGE]"] = LLDateUtil::ageFromDate(born_on, LLDate::now());
|
||||
args["[NAME]"] = av_name.getAccountName();
|
||||
std::string register_date = getString("NameAgeFormat", args);
|
||||
getChild<LLUICtrl>("user_name_age")->setValue(register_date);
|
||||
getChild<LLUICtrl>("display_name")->setValue(av_name.getDisplayName());
|
||||
}
|
||||
|
||||
void LLPanelProfileSecondLife::onImageLoaded(BOOL success, LLViewerFetchedTexture *imagep)
|
||||
|
|
@ -1620,13 +1559,15 @@ void LLPanelProfileSecondLife::onShowAgentPermissionsDialog()
|
|||
LLFloaterProfilePermissions * perms = new LLFloaterProfilePermissions(parent_floater, getAvatarId());
|
||||
mFloaterPermissionsHandle = perms->getHandle();
|
||||
perms->openFloater();
|
||||
perms->setVisibleAndFrontmost(TRUE);
|
||||
|
||||
parent_floater->addDependentFloater(mFloaterPermissionsHandle);
|
||||
}
|
||||
}
|
||||
else // already open
|
||||
{
|
||||
floater->closeFloater();
|
||||
floater->setMinimized(FALSE);
|
||||
floater->setVisibleAndFrontmost(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -136,8 +136,16 @@ protected:
|
|||
*/
|
||||
void fillAccountStatus(const LLAvatarData* avatar_data);
|
||||
|
||||
/**
|
||||
* Sets permissions specific icon
|
||||
*/
|
||||
void fillRightsData();
|
||||
|
||||
/**
|
||||
* Fills user name, display name, age.
|
||||
*/
|
||||
void fillNameAgeData(const LLAvatarName &av_name, const LLDate &born_on);
|
||||
|
||||
void onImageLoaded(BOOL success, LLViewerFetchedTexture *imagep);
|
||||
static void onImageLoaded(BOOL success,
|
||||
LLViewerFetchedTexture *src_vi,
|
||||
|
|
@ -204,6 +212,7 @@ private:
|
|||
bool mWaitingForImageUpload;
|
||||
bool mAllowPublish;
|
||||
std::string mDescriptionText;
|
||||
LLDate mBornOn;
|
||||
|
||||
boost::signals2::connection mAvatarNameCacheConnection;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@
|
|||
layout="topleft"
|
||||
>
|
||||
<string
|
||||
name="AgeFormat"
|
||||
value="[AGE]" />
|
||||
name="NameAgeFormat"
|
||||
value="[NAME] ([AGE])" />
|
||||
<string
|
||||
name="partner_text"
|
||||
value="Partner: [LINK]" />
|
||||
|
|
@ -99,17 +99,7 @@ Account: [ACCTTYPE]
|
|||
layout="topleft"/>
|
||||
|
||||
<text
|
||||
name="user_name"
|
||||
value="(loading...)"
|
||||
top_pad="0"
|
||||
left_delta="0"
|
||||
right="-1"
|
||||
height="16"
|
||||
follows="left|top|right"
|
||||
layout="topleft"/>
|
||||
|
||||
<text
|
||||
name="user_age"
|
||||
name="user_name_age"
|
||||
value="(loading...)"
|
||||
top_pad="0"
|
||||
left_delta="0"
|
||||
|
|
@ -171,7 +161,7 @@ Account: [ACCTTYPE]
|
|||
<text
|
||||
name="frind_text"
|
||||
value="You are friends"
|
||||
text_color="Green"
|
||||
text_color="ConversationFriendColor"
|
||||
top="0"
|
||||
left="0"
|
||||
right="-1"
|
||||
|
|
|
|||
Loading…
Reference in New Issue