Display Name work
This commit is contained in:
4
README
4
README
@@ -158,6 +158,10 @@ Contact information:
|
||||
TO-DO LIST:
|
||||
* Integrate, test, fix, test, test, fix and test OpenJPEG v2,
|
||||
inline interleaved operations.
|
||||
* Unified, high performance memory manager for all 3 plattforms. jemalloc wins on
|
||||
memory use, google tcmalloc wins in every other regard, including use for
|
||||
debugging, possibility of manual full collect on e.g. teleport, clean cross
|
||||
platform integration. Either are better at what Windows and Linux offer.
|
||||
* Bug: if window is resized during teleport, HUDs don't adjust to new window ratio.
|
||||
* Bug: focusing from minimap is defunct.
|
||||
* Bug: foot shadows show even if avatar below ground, and sink into prims.
|
||||
|
||||
@@ -91,12 +91,19 @@ void LLAvatarName::fromLLSD(const LLSD& sd)
|
||||
mNextUpdate = next_update.secondsSinceEpoch();
|
||||
}
|
||||
|
||||
std::string LLAvatarName::getCompleteName() const
|
||||
std::string LLAvatarName::getCompleteName(bool linefeed) const
|
||||
{
|
||||
std::string name;
|
||||
if (!mUsername.empty())
|
||||
{
|
||||
name = mDisplayName + " (" + mUsername + ")";
|
||||
if (linefeed)
|
||||
{
|
||||
name = mDisplayName + "\n(" + mUsername + ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
name = mDisplayName + " (" + mUsername + ")";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
|
||||
// For normal names, returns "James Linden (james.linden)"
|
||||
// When display names are disabled returns just "James Linden"
|
||||
std::string getCompleteName() const;
|
||||
std::string getCompleteName(bool linefeed = false) const;
|
||||
|
||||
// Returns "James Linden" or "bobsmith123 Resident" for backwards
|
||||
// compatibility with systems like voice and muting
|
||||
|
||||
@@ -52,6 +52,11 @@ namespace LLAvatarNameCache
|
||||
// supports it.
|
||||
bool sUseDisplayNames = true;
|
||||
|
||||
// [RLVa:KB] - Checked: 2010-12-08 (RLVa-1.2.2c) | Added: RLVa-1.2.2c
|
||||
// RLVa override for display names
|
||||
bool sForceDisplayNames = false;
|
||||
// [/RLVa:KB]
|
||||
|
||||
// Cache starts in a paused state until we can determine if the
|
||||
// current region supports display names.
|
||||
bool sRunning = false;
|
||||
@@ -232,6 +237,15 @@ public:
|
||||
{
|
||||
const LLUUID& agent_id = *it;
|
||||
// cache it and fire signals
|
||||
|
||||
// Wolfspirit: Do not use ??? as username. Try to get a username out of the old legacy name
|
||||
std::string oldname;
|
||||
gCacheName->getFullName(agent_id, oldname);
|
||||
LLStringUtil::toLower(oldname);
|
||||
LLStringUtil::replaceString(oldname," ",".");
|
||||
LLStringUtil::replaceString(oldname,".resident","");
|
||||
av_name.mUsername = oldname;
|
||||
|
||||
LLAvatarNameCache::processName(agent_id, av_name, true);
|
||||
}
|
||||
}
|
||||
@@ -259,6 +273,15 @@ public:
|
||||
{
|
||||
const LLUUID& agent_id = *it;
|
||||
// cache it and fire signals
|
||||
|
||||
// Wolfspirit: Do not use ??? as username. Try to get a username out of the old legacy name
|
||||
std::string oldname;
|
||||
gCacheName->getFullName(agent_id, oldname);
|
||||
LLStringUtil::toLower(oldname);
|
||||
LLStringUtil::replaceString(oldname," ",".");
|
||||
LLStringUtil::replaceString(oldname,".resident","");
|
||||
av_name.mUsername = oldname;
|
||||
|
||||
LLAvatarNameCache::processName(agent_id, av_name, true);
|
||||
}
|
||||
}
|
||||
@@ -568,6 +591,15 @@ void LLAvatarNameCache::buildLegacyName(const std::string& full_name,
|
||||
av_name->mIsDisplayNameDefault = true;
|
||||
av_name->mIsDummy = true;
|
||||
av_name->mExpires = F64_MAX;
|
||||
|
||||
// [Ansariel]
|
||||
// Why ain't those set? In case of disabled display names
|
||||
// we would have to parse LLAvatarName::mDisplayName to get
|
||||
// first and lastname if we need them. So do it already here
|
||||
// for convenience.
|
||||
std::istringstream fname(full_name);
|
||||
fname >> av_name->mLegacyFirstName >> av_name->mLegacyLastName;
|
||||
// [/Ansariel]
|
||||
}
|
||||
|
||||
// fills in av_name if it has it in the cache, even if expired (can check expiry time)
|
||||
@@ -689,9 +721,28 @@ void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)
|
||||
}
|
||||
}
|
||||
|
||||
// [RLVa:KB] - Checked: 2010-12-08 (RLVa-1.2.2c) | Added: RLVa-1.2.2c
|
||||
bool LLAvatarNameCache::getForceDisplayNames()
|
||||
{
|
||||
return sForceDisplayNames;
|
||||
}
|
||||
|
||||
void LLAvatarNameCache::setForceDisplayNames(bool force)
|
||||
{
|
||||
sForceDisplayNames = force;
|
||||
if ( (!sUseDisplayNames) && (force) )
|
||||
{
|
||||
setUseDisplayNames(true);
|
||||
}
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
void LLAvatarNameCache::setUseDisplayNames(bool use)
|
||||
{
|
||||
// [RLVa:KB] - Checked: 2010-12-08 (RLVa-1.2.2c) | Added: RLVa-1.2.2c
|
||||
// We need to force the use of the "display names" cache when @shownames=n restricted (and disallow toggling it)
|
||||
use |= getForceDisplayNames();
|
||||
// [/RLVa:KB]
|
||||
if (use != sUseDisplayNames)
|
||||
{
|
||||
sUseDisplayNames = use;
|
||||
|
||||
@@ -79,6 +79,12 @@ namespace LLAvatarNameCache
|
||||
// Allow display names to be explicitly disabled for testing.
|
||||
void setUseDisplayNames(bool use);
|
||||
bool useDisplayNames();
|
||||
|
||||
// [RLVa:KB] - Checked: 2010-12-08 (RLVa-1.2.2c) | Added: RLVa-1.2.2c
|
||||
bool getForceDisplayNames();
|
||||
void setForceDisplayNames(bool force);
|
||||
// [/RLVa:KB]
|
||||
|
||||
bool isRequestPending(const LLUUID& agent_id);
|
||||
|
||||
void erase(const LLUUID& agent_id);
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
#include "llvoavatar.h"
|
||||
#include "llimview.h"
|
||||
#include "llimpanel.h"
|
||||
#include "llavatarname.h"
|
||||
#include "llavatarnamecache.h"
|
||||
|
||||
///----------------------------------------------------------------------------
|
||||
/// Local function declarations, constants, enums, and typedefs
|
||||
@@ -593,11 +595,19 @@ void LLAvatarTracker::processChange(LLMessageSystem* msg)
|
||||
if((mBuddyInfo[agent_id]->getRightsGrantedFrom() ^ new_rights) & LLRelationship::GRANT_MODIFY_OBJECTS)
|
||||
{
|
||||
std::string first, last;
|
||||
std::string fullname;
|
||||
LLSD args;
|
||||
if(gCacheName->getName(agent_id, first, last))
|
||||
LLAvatarName avatar_name;
|
||||
if (LLAvatarNameCache::get(agent_id, &avatar_name))
|
||||
{
|
||||
args["FIRST_NAME"] = first;
|
||||
args["LAST_NAME"] = last;
|
||||
switch (gSavedSettings.getS32("PhoenixNameSystem"))
|
||||
{
|
||||
case 0 : fullname = avatar_name.getLegacyName(); break;
|
||||
case 1 : fullname = (avatar_name.mIsDisplayNameDefault ? avatar_name.mDisplayName : avatar_name.getCompleteName()); break;
|
||||
case 2 : fullname = avatar_name.mDisplayName; break;
|
||||
default : fullname = avatar_name.getCompleteName(); break;
|
||||
}
|
||||
args["NAME"] = fullname;
|
||||
}
|
||||
if(LLRelationship::GRANT_MODIFY_OBJECTS & new_rights)
|
||||
{
|
||||
@@ -649,12 +659,19 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
|
||||
setBuddyOnline(agent_id,online);
|
||||
if(chat_notify)
|
||||
{
|
||||
std::string first, last;
|
||||
if(gCacheName->getName(agent_id, first, last))
|
||||
std::string fullname;
|
||||
LLAvatarName avatar_name;
|
||||
if (LLAvatarNameCache::get(agent_id, &avatar_name))
|
||||
{
|
||||
switch (gSavedSettings.getS32("PhoenixNameSystem"))
|
||||
{
|
||||
case 0 : fullname = avatar_name.getLegacyName(); break;
|
||||
case 1 : fullname = (avatar_name.mIsDisplayNameDefault ? avatar_name.mDisplayName : avatar_name.getCompleteName()); break;
|
||||
case 2 : fullname = avatar_name.mDisplayName; break;
|
||||
default : fullname = avatar_name.getCompleteName(); break;
|
||||
}
|
||||
notify = TRUE;
|
||||
args["FIRST"] = first;
|
||||
args["LAST"] = last;
|
||||
args["NAME"] = fullname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
|
||||
#include "llavatarname.h"
|
||||
|
||||
const F32 SPEAKER_TIMEOUT = 10.f; // seconds of not being on voice channel before removed from list of active speakers
|
||||
const F32 RESORT_TIMEOUT = 5.f; // seconds of mouse inactivity before it's ok to sort regardless of mouse-in-view.
|
||||
const LLColor4 INACTIVE_COLOR(0.3f, 0.3f, 0.3f, 0.5f);
|
||||
@@ -75,13 +77,16 @@ LLSpeaker::LLSpeaker(const LLUUID& id, const std::string& name, const ESpeakerTy
|
||||
mModeratorMutedVoice(FALSE),
|
||||
mModeratorMutedText(FALSE)
|
||||
{
|
||||
if (name.empty() && type == SPEAKER_AGENT)
|
||||
// Make sure we also get the display name if SLIM or some other external
|
||||
// voice client is used and not whatever is provided.
|
||||
if ((name.empty() && type == SPEAKER_AGENT) || type == SPEAKER_EXTERNAL)
|
||||
{
|
||||
lookupName();
|
||||
}
|
||||
else
|
||||
{
|
||||
mDisplayName = name;
|
||||
mLegacyName = name;
|
||||
}
|
||||
|
||||
gVoiceClient->setUserVolume(id, LLMuteList::getInstance()->getSavedResidentVolume(id));
|
||||
@@ -92,18 +97,35 @@ LLSpeaker::LLSpeaker(const LLUUID& id, const std::string& name, const ESpeakerTy
|
||||
|
||||
void LLSpeaker::lookupName()
|
||||
{
|
||||
gCacheName->getName(mID, onAvatarNameLookup, new LLHandle<LLSpeaker>(getHandle()));
|
||||
// [Ansariel: Display name support]
|
||||
LLAvatarNameCache::get(mID, boost::bind(&LLSpeaker::onAvatarNameLookup, _1, _2, new LLHandle<LLSpeaker>(getHandle())));
|
||||
// [/Ansariel: Display name support]
|
||||
}
|
||||
|
||||
//static
|
||||
void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* user_data)
|
||||
// [Ansariel: Display name support]
|
||||
void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const LLAvatarName& avatar_name, void* user_data)
|
||||
// [/Ansariel: Display name support]
|
||||
{
|
||||
LLSpeaker* speaker_ptr = ((LLHandle<LLSpeaker>*)user_data)->get();
|
||||
delete (LLHandle<LLSpeaker>*)user_data;
|
||||
|
||||
if (speaker_ptr)
|
||||
{
|
||||
speaker_ptr->mDisplayName = first + " " + last;
|
||||
// [Ansariel: Display name support]
|
||||
switch (gSavedSettings.getS32("PhoenixNameSystem"))
|
||||
{
|
||||
case 0 : speaker_ptr->mDisplayName = avatar_name.getLegacyName(); break;
|
||||
case 1 : speaker_ptr->mDisplayName = (avatar_name.mIsDisplayNameDefault ? avatar_name.mDisplayName : avatar_name.getCompleteName()); break;
|
||||
case 2 : speaker_ptr->mDisplayName = avatar_name.mDisplayName; break;
|
||||
default : speaker_ptr->mDisplayName = avatar_name.getLegacyName(); break;
|
||||
}
|
||||
|
||||
// Also set the legacy name. We will need it to initiate a new
|
||||
// IM session.
|
||||
speaker_ptr->mLegacyName = avatar_name.getLegacyName();
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | Added: RLVa-1.0.0g
|
||||
// TODO-RLVa: this seems to get called per frame which is very likely an LL bug that will eventuall get fixed
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
|
||||
@@ -591,7 +613,9 @@ void LLPanelActiveSpeakers::refreshSpeakers()
|
||||
&& selected_id != gAgent.getID()
|
||||
&& selected_speakerp.notNull()
|
||||
&& selected_speakerp->mType != LLSpeaker::SPEAKER_EXTERNAL
|
||||
&& !LLMuteList::getInstance()->isLinden(selected_speakerp->mDisplayName));
|
||||
// Ansariel: No, we don't want to mute Lindens with display names
|
||||
//&& !LLMuteList::getInstance()->isLinden(selected_speakerp->mDisplayName));
|
||||
&& !LLMuteList::getInstance()->isLinden(selected_speakerp->mLegacyName));
|
||||
}
|
||||
childSetValue("speaker_volume", gVoiceClient->getUserVolume(selected_id));
|
||||
childSetEnabled("speaker_volume", LLVoiceClient::voiceEnabled()
|
||||
@@ -774,7 +798,9 @@ void LLPanelActiveSpeakers::onDoubleClickSpeaker(void* user_data)
|
||||
|
||||
if (speaker_id != gAgent.getID() && speakerp.notNull())
|
||||
{
|
||||
gIMMgr->addSession(speakerp->mDisplayName, IM_NOTHING_SPECIAL, speaker_id);
|
||||
// Changed for display name support
|
||||
//gIMMgr->addSession(speakerp->mDisplayName, IM_NOTHING_SPECIAL, speaker_id);
|
||||
gIMMgr->addSession(speakerp->mLegacyName, IM_NOTHING_SPECIAL, speaker_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#ifndef LL_LLFLOATERACTIVESPEAKERS_H
|
||||
#define LL_LLFLOATERACTIVESPEAKERS_H
|
||||
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llfloater.h"
|
||||
#include "llmemory.h"
|
||||
#include "llvoiceclient.h"
|
||||
@@ -73,7 +74,10 @@ public:
|
||||
~LLSpeaker() {};
|
||||
void lookupName();
|
||||
|
||||
static void onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* user_data);
|
||||
// [Ansariel: Display name support]
|
||||
//static void onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* user_data);
|
||||
static void onAvatarNameLookup(const LLUUID& id, const LLAvatarName& avatar_name, void* user_data);
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
ESpeakerStatus mStatus; // current activity status in speech group
|
||||
F32 mLastSpokeTime; // timestamp when this speaker last spoke
|
||||
@@ -89,6 +93,7 @@ public:
|
||||
BOOL mIsModerator;
|
||||
BOOL mModeratorMutedVoice;
|
||||
BOOL mModeratorMutedText;
|
||||
std::string mLegacyName;
|
||||
};
|
||||
|
||||
class LLSpeakerTextModerationEvent : public LLEvent
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llavatarconstants.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llfloateravatarlist.h"
|
||||
|
||||
#include "lluictrlfactory.h"
|
||||
@@ -422,10 +423,25 @@ void LLFloaterAvatarList::updateAvatarList()
|
||||
// Get avatar data
|
||||
position = gAgent.getPosGlobalFromAgent(avatarp->getCharacterPosition());
|
||||
name = avatarp->getFullname();
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
LLAvatarName avatar_name;
|
||||
if (LLAvatarNameCache::get(avatarp->getID(), &avatar_name))
|
||||
{
|
||||
static LLCachedControl<S32> phoenix_name_system("PhoenixNameSystem", 0);
|
||||
switch (phoenix_name_system)
|
||||
{
|
||||
case 0 : name = avatar_name.getLegacyName(); break;
|
||||
case 1 : name = (avatar_name.mIsDisplayNameDefault ? avatar_name.mDisplayName : avatar_name.getCompleteName()); break;
|
||||
case 2 : name = avatar_name.mDisplayName; break;
|
||||
default : name = avatar_name.getLegacyName(); break;
|
||||
}
|
||||
|
||||
// Apparently, sometimes the name comes out empty, with a " " name. This is because
|
||||
// getFullname concatenates first and last name with a " " in the middle.
|
||||
// This code will avoid adding a nameless entry to the list until it acquires a name.
|
||||
first = avatar_name.mLegacyFirstName;
|
||||
last = avatar_name.mLegacyLastName;
|
||||
}
|
||||
else continue;
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
//duped for lower section
|
||||
if (name.empty() || (name.compare(" ") == 0))// || (name.compare(gCacheName->getDefaultName()) == 0))
|
||||
@@ -871,9 +887,16 @@ void LLFloaterAvatarList::onClickIM(void* userdata)
|
||||
LLUUID agent_id = ids[0];
|
||||
|
||||
char buffer[MAX_STRING];
|
||||
snprintf(buffer, MAX_STRING, "%s", self->mAvatars[agent_id].getName().c_str());
|
||||
gIMMgr->setFloaterOpen(TRUE);
|
||||
gIMMgr->addSession(buffer, IM_NOTHING_SPECIAL, agent_id);
|
||||
// [Ansariel: Display name support]
|
||||
// snprintf(buffer, MAX_STRING, "%s", avlist->mAvatars[agent_id].getName().c_str());
|
||||
LLAvatarName avatar_name;
|
||||
if (LLAvatarNameCache::get(agent_id, &avatar_name))
|
||||
{
|
||||
snprintf(buffer, MAX_STRING, "%s", avatar_name.getLegacyName().c_str());
|
||||
gIMMgr->setFloaterOpen(TRUE);
|
||||
gIMMgr->addSession(buffer,IM_NOTHING_SPECIAL,agent_id);
|
||||
}
|
||||
// [Ansariel: Display name support]
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
// Copyright: See COPYING file that comes with this distribution
|
||||
//
|
||||
//
|
||||
#include "llavatarname.h"
|
||||
#include "llfloater.h"
|
||||
#include "llfloaterreporter.h"
|
||||
#include "lluuid.h"
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
|
||||
// Viewer includes
|
||||
#include "llagent.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llcachename.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "lldrawable.h"
|
||||
@@ -258,14 +259,40 @@ void LLHoverView::updateText()
|
||||
else
|
||||
{
|
||||
// [/RLVa:KB]
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
std::string complete_name = firstname->getString();
|
||||
complete_name += " ";
|
||||
complete_name += lastname->getString();
|
||||
|
||||
if (LLAvatarNameCache::useDisplayNames())
|
||||
{
|
||||
LLAvatarName avatar_name;
|
||||
if (LLAvatarNameCache::get(hit_object->getID(), &avatar_name))
|
||||
{
|
||||
static LLCachedControl<S32> phoenix_name_system("PhoenixNameSystem", 0);
|
||||
if (phoenix_name_system == 2 || (phoenix_name_system == 1 && avatar_name.mIsDisplayNameDefault))
|
||||
{
|
||||
complete_name = avatar_name.mDisplayName;
|
||||
}
|
||||
else
|
||||
{
|
||||
complete_name = avatar_name.getCompleteName();
|
||||
}
|
||||
}
|
||||
}
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
if (title)
|
||||
{
|
||||
line.append(title->getString());
|
||||
line.append(1, ' ');
|
||||
}
|
||||
line.append(firstname->getString());
|
||||
line.append(1, ' ');
|
||||
line.append(lastname->getString());
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
line += complete_name;
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e)
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
@@ -317,13 +344,27 @@ void LLHoverView::updateText()
|
||||
std::string name;
|
||||
if (!nodep->mPermissions->isGroupOwned())
|
||||
{
|
||||
// [Ansariel: Display name support]
|
||||
LLAvatarName avatar_name;
|
||||
// [/Ansariel: Display name support]
|
||||
owner = nodep->mPermissions->getOwner();
|
||||
if (LLUUID::null == owner)
|
||||
{
|
||||
line.append(LLTrans::getString("TooltipPublic"));
|
||||
}
|
||||
else if(gCacheName->getFullName(owner, name))
|
||||
// [Ansariel: Display name support]
|
||||
//else if(gCacheName->getFullName(owner, name))
|
||||
else if (LLAvatarNameCache::get(owner, &avatar_name))
|
||||
{
|
||||
static LLCachedControl<S32> phoenix_name_system("PhoenixNameSystem", 0);
|
||||
switch (phoenix_name_system)
|
||||
{
|
||||
case 0 : name = avatar_name.getCompleteName(); break;
|
||||
case 1 : name = (avatar_name.mIsDisplayNameDefault ? avatar_name.mDisplayName : avatar_name.getCompleteName()); break;
|
||||
case 2 : name = avatar_name.mDisplayName; break;
|
||||
default : name = avatar_name.getCompleteName(); break;
|
||||
}
|
||||
// [/Ansariel: Display name support]
|
||||
// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e)
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
|
||||
{
|
||||
|
||||
@@ -65,6 +65,7 @@ const F32 SPRING_STRENGTH = 0.7f;
|
||||
const F32 RESTORATION_SPRING_TIME_CONSTANT = 0.1f;
|
||||
const F32 HORIZONTAL_PADDING = 15.f;
|
||||
const F32 VERTICAL_PADDING = 12.f;
|
||||
const F32 LINE_PADDING = 3.f; // aka "leading"
|
||||
const F32 BUFFER_SIZE = 2.f;
|
||||
const F32 MIN_EDGE_OVERLAP = 3.f;
|
||||
F32 HUD_TEXT_MAX_WIDTH = 190.f;
|
||||
@@ -499,7 +500,7 @@ void LLHUDText::renderText(BOOL for_select)
|
||||
for(std::vector<LLHUDTextSegment>::iterator segment_iter = mLabelSegments.begin();
|
||||
segment_iter != mLabelSegments.end(); ++segment_iter )
|
||||
{
|
||||
const LLFontGL* fontp = (segment_iter->mStyle == LLFontGL::BOLD) ? mBoldFontp : mFontp;
|
||||
const LLFontGL* fontp = segment_iter->mFont;
|
||||
y_offset -= fontp->getLineHeight();
|
||||
|
||||
F32 x_offset;
|
||||
@@ -610,13 +611,13 @@ void LLHUDText::clearString()
|
||||
}
|
||||
|
||||
|
||||
void LLHUDText::addLine(const std::string &str, const LLColor4& color, const LLFontGL::StyleFlags style)
|
||||
void LLHUDText::addLine(const std::string &str, const LLColor4& color, const LLFontGL::StyleFlags style, const LLFontGL* font)
|
||||
{
|
||||
addLine(utf8str_to_wstring(str), color, style);
|
||||
addLine(utf8str_to_wstring(str), color, style, font);
|
||||
}
|
||||
|
||||
|
||||
void LLHUDText::addLine(const LLWString &wstr, const LLColor4& color, const LLFontGL::StyleFlags style)
|
||||
void LLHUDText::addLine(const LLWString &wstr, const LLColor4& color, const LLFontGL::StyleFlags style, const LLFontGL* font)
|
||||
{
|
||||
if (gNoRender)
|
||||
{
|
||||
@@ -624,6 +625,10 @@ void LLHUDText::addLine(const LLWString &wstr, const LLColor4& color, const LLFo
|
||||
}
|
||||
if (!wstr.empty())
|
||||
{
|
||||
if (!font)
|
||||
{
|
||||
font = mFontp;
|
||||
}
|
||||
LLWString wline(wstr);
|
||||
typedef boost::tokenizer<boost::char_separator<llwchar>, LLWString::const_iterator, LLWString > tokenizer;
|
||||
LLWString seps(utf8str_to_wstring("\r\n"));
|
||||
@@ -638,7 +643,7 @@ void LLHUDText::addLine(const LLWString &wstr, const LLColor4& color, const LLFo
|
||||
do
|
||||
{
|
||||
S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wline.length(), TRUE);
|
||||
mTextSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), style, color));
|
||||
mTextSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), style, color, font));
|
||||
line_length += segment_length;
|
||||
}
|
||||
while (line_length != iter->size());
|
||||
@@ -652,9 +657,15 @@ void LLHUDText::setLabel(const std::string &label)
|
||||
setLabel(utf8str_to_wstring(label));
|
||||
}
|
||||
|
||||
|
||||
void LLHUDText::setLabel(const LLWString &wlabel)
|
||||
{
|
||||
mLabelSegments.clear();
|
||||
addLabel(wlabel);
|
||||
}
|
||||
|
||||
void LLHUDText::addLabel(const LLWString &wlabel)
|
||||
{
|
||||
|
||||
if (!wlabel.empty())
|
||||
{
|
||||
@@ -674,7 +685,7 @@ void LLHUDText::setLabel(const LLWString &wlabel)
|
||||
do
|
||||
{
|
||||
S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wstr.length(), TRUE);
|
||||
mLabelSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), LLFontGL::NORMAL, mColor));
|
||||
mLabelSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), LLFontGL::NORMAL, mColor, mFontp));
|
||||
line_length += segment_length;
|
||||
}
|
||||
while (line_length != iter->size());
|
||||
@@ -709,6 +720,16 @@ void LLHUDText::setColor(const LLColor4 &color)
|
||||
}
|
||||
}
|
||||
|
||||
void LLHUDText::setAlpha(F32 alpha)
|
||||
{
|
||||
mColor.mV[VALPHA] = alpha;
|
||||
for (std::vector<LLHUDTextSegment>::iterator segment_iter = mTextSegments.begin();
|
||||
segment_iter != mTextSegments.end(); ++segment_iter )
|
||||
{
|
||||
segment_iter->mColor.mV[VALPHA] = alpha;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LLHUDText::setUsePixelSize(const BOOL use_pixel_size)
|
||||
{
|
||||
@@ -720,22 +741,23 @@ void LLHUDText::setDoFade(const BOOL do_fade)
|
||||
mDoFade = do_fade;
|
||||
}
|
||||
|
||||
// <edit>
|
||||
std::string LLHUDText::getStringUTF8()
|
||||
{
|
||||
std::string out("");
|
||||
int t = mTextSegments.size();
|
||||
int i = 0;
|
||||
for (std::vector<LLHUDTextSegment>::iterator segment_iter = mTextSegments.begin();
|
||||
segment_iter != mTextSegments.end(); ++segment_iter )
|
||||
{
|
||||
out.append(wstring_to_utf8str((*segment_iter).getText()));
|
||||
i++;
|
||||
if(i < t) out.append("\n");
|
||||
}
|
||||
return out;
|
||||
}
|
||||
// </edit>
|
||||
// <edit>
|
||||
std::string LLHUDText::getStringUTF8()
|
||||
{
|
||||
std::string out("");
|
||||
int t = mTextSegments.size();
|
||||
int i = 0;
|
||||
for (std::vector<LLHUDTextSegment>::iterator segment_iter = mTextSegments.begin();
|
||||
segment_iter != mTextSegments.end(); ++segment_iter )
|
||||
{
|
||||
out.append(wstring_to_utf8str((*segment_iter).getText()));
|
||||
i++;
|
||||
if(i < t) out.append("\n");
|
||||
}
|
||||
return out;
|
||||
}
|
||||
// </edit>
|
||||
|
||||
void LLHUDText::updateVisibility()
|
||||
{
|
||||
if (mSourceObject)
|
||||
@@ -896,12 +918,10 @@ LLVector2 LLHUDText::updateScreenPos(LLVector2 &offset)
|
||||
|
||||
void LLHUDText::updateSize()
|
||||
{
|
||||
F32 height = 0.f;
|
||||
F32 width = 0.f;
|
||||
|
||||
S32 max_lines = getMaxLines();
|
||||
S32 lines = (max_lines < 0) ? (S32)mTextSegments.size() : llmin((S32)mTextSegments.size(), max_lines);
|
||||
|
||||
F32 height = (F32)mFontp->getLineHeight() * (lines + mLabelSegments.size());
|
||||
|
||||
S32 start_segment;
|
||||
if (max_lines < 0) start_segment = 0;
|
||||
@@ -910,13 +930,16 @@ void LLHUDText::updateSize()
|
||||
std::vector<LLHUDTextSegment>::iterator iter = mTextSegments.begin() + start_segment;
|
||||
while (iter != mTextSegments.end())
|
||||
{
|
||||
width = llmax(width, llmin(iter->getWidth(mFontp), HUD_TEXT_MAX_WIDTH));
|
||||
const LLFontGL* fontp = iter->mFont;
|
||||
height += fontp->getLineHeight();
|
||||
width = llmax(width, llmin(iter->getWidth(fontp), HUD_TEXT_MAX_WIDTH));
|
||||
++iter;
|
||||
}
|
||||
|
||||
iter = mLabelSegments.begin();
|
||||
while (iter != mLabelSegments.end())
|
||||
{
|
||||
height += mFontp->getLineHeight();
|
||||
width = llmax(width, llmin(iter->getWidth(mFontp), HUD_TEXT_MAX_WIDTH));
|
||||
++iter;
|
||||
}
|
||||
|
||||
@@ -62,14 +62,15 @@ protected:
|
||||
class LLHUDTextSegment
|
||||
{
|
||||
public:
|
||||
LLHUDTextSegment(const LLWString& text, const LLFontGL::StyleFlags style, const LLColor4& color)
|
||||
: mColor(color), mStyle(style), mText(text) {}
|
||||
LLHUDTextSegment(const LLWString& text, const LLFontGL::StyleFlags style, const LLColor4& color, const LLFontGL* font)
|
||||
: mColor(color), mStyle(style), mText(text), mFont(font) {}
|
||||
F32 getWidth(const LLFontGL* font);
|
||||
const LLWString& getText() const { return mText; };
|
||||
void clearFontWidthMap() { mFontWidthMap.clear(); }
|
||||
|
||||
LLColor4 mColor;
|
||||
LLFontGL::StyleFlags mStyle;
|
||||
const LLFontGL* mFont;
|
||||
private:
|
||||
LLWString mText;
|
||||
std::map<const LLFontGL*, F32> mFontWidthMap;
|
||||
@@ -92,13 +93,15 @@ public:
|
||||
void setStringUTF8(const std::string &utf8string);
|
||||
void setString(const LLWString &wstring);
|
||||
void clearString();
|
||||
void addLine(const std::string &text, const LLColor4& color, const LLFontGL::StyleFlags style = LLFontGL::NORMAL);
|
||||
void addLine(const LLWString &wtext, const LLColor4& color, const LLFontGL::StyleFlags style = LLFontGL::NORMAL);
|
||||
void addLine(const std::string &text, const LLColor4& color, const LLFontGL::StyleFlags style = LLFontGL::NORMAL, const LLFontGL* font = NULL);
|
||||
void addLine(const LLWString &wtext, const LLColor4& color, const LLFontGL::StyleFlags style = LLFontGL::NORMAL, const LLFontGL* font = NULL);
|
||||
void setLabel(const std::string &label);
|
||||
void setLabel(const LLWString &label);
|
||||
void addLabel(const LLWString &label);
|
||||
void setDropShadow(const BOOL do_shadow);
|
||||
void setFont(const LLFontGL* font);
|
||||
void setColor(const LLColor4 &color);
|
||||
void setAlpha(F32 alpha);
|
||||
void setUsePixelSize(const BOOL use_pixel_size);
|
||||
void setZCompare(const BOOL zcompare);
|
||||
void setDoFade(const BOOL do_fade);
|
||||
|
||||
@@ -102,6 +102,8 @@ LLVoiceChannel* LLVoiceChannel::sSuspendedVoiceChannel = NULL;
|
||||
|
||||
BOOL LLVoiceChannel::sSuspended = FALSE;
|
||||
|
||||
std::set<LLFloaterIMPanel*> LLFloaterIMPanel::sFloaterIMPanels;
|
||||
|
||||
void session_starter_helper(
|
||||
const LLUUID& temp_session_id,
|
||||
const LLUUID& other_participant_id,
|
||||
@@ -1104,6 +1106,10 @@ LLFloaterIMPanel::LLFloaterIMPanel(
|
||||
mFirstKeystrokeTimer(),
|
||||
mLastKeystrokeTimer()
|
||||
{
|
||||
// [Ansariel: Display name support]
|
||||
sFloaterIMPanels.insert(this);
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
init(session_label);
|
||||
}
|
||||
|
||||
@@ -1136,6 +1142,10 @@ LLFloaterIMPanel::LLFloaterIMPanel(
|
||||
mFirstKeystrokeTimer(),
|
||||
mLastKeystrokeTimer()
|
||||
{
|
||||
// [Ansariel: Display name support]
|
||||
sFloaterIMPanels.insert(this);
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
mSessionInitialTargetIDs = ids;
|
||||
init(session_label);
|
||||
}
|
||||
@@ -1145,6 +1155,10 @@ void LLFloaterIMPanel::init(const std::string& session_label)
|
||||
{
|
||||
mSessionLabel = session_label;
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
mProfileButtonEnabled = FALSE;
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
std::string xml_filename;
|
||||
switch(mDialog)
|
||||
{
|
||||
@@ -1199,6 +1213,15 @@ void LLFloaterIMPanel::init(const std::string& session_label)
|
||||
FALSE);
|
||||
|
||||
setTitle(mSessionLabel);
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
if (mProfileButtonEnabled)
|
||||
{
|
||||
lookupName();
|
||||
}
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
|
||||
mInputEditor->setMaxTextLength(DB_IM_MSG_STR_LEN);
|
||||
// enable line history support for instant message bar
|
||||
mInputEditor->setEnableLineHistory(TRUE);
|
||||
@@ -1240,9 +1263,34 @@ void LLFloaterIMPanel::init(const std::string& session_label)
|
||||
}
|
||||
}
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
void LLFloaterIMPanel::lookupName()
|
||||
{
|
||||
LLAvatarNameCache::get(mOtherParticipantUUID, boost::bind(&LLFloaterIMPanel::onAvatarNameLookup, _1, _2, this));
|
||||
}
|
||||
|
||||
//static
|
||||
void LLFloaterIMPanel::onAvatarNameLookup(const LLUUID& id, const LLAvatarName& avatar_name, void* user_data)
|
||||
{
|
||||
LLFloaterIMPanel* self = (LLFloaterIMPanel*)user_data;
|
||||
|
||||
if (self && sFloaterIMPanels.count(self) != 0)
|
||||
{
|
||||
std::string title = avatar_name.getCompleteName();
|
||||
if (!title.empty())
|
||||
{
|
||||
self->setTitle(title);
|
||||
}
|
||||
}
|
||||
}
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
LLFloaterIMPanel::~LLFloaterIMPanel()
|
||||
{
|
||||
// [Ansariel: Display name support]
|
||||
sFloaterIMPanels.erase(this);
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
delete mSpeakers;
|
||||
mSpeakers = NULL;
|
||||
|
||||
@@ -1587,7 +1635,12 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4
|
||||
else
|
||||
histstr = name + utf8msg;
|
||||
|
||||
LLLogChat::saveHistory(getTitle(),histstr);
|
||||
// [Ansariel: Display name support]
|
||||
// Floater title contains display name -> bad idea to use that as filename
|
||||
// mSessionLabel, however, should still be the old legacy name
|
||||
//LLLogChat::saveHistory(getTitle(),histstr);
|
||||
LLLogChat::saveHistory(mSessionLabel, histstr);
|
||||
// [/Ansariel: Display name support]
|
||||
}
|
||||
|
||||
if (!isInVisibleChain())
|
||||
@@ -1815,7 +1868,10 @@ void LLFloaterIMPanel::onClickHistory( void* userdata )
|
||||
if (self->mOtherParticipantUUID.notNull())
|
||||
{
|
||||
char command[256];
|
||||
std::string fullname(gDirUtilp->getScrubbedFileName(self->getTitle()));
|
||||
// [Ansariel: Display name support]
|
||||
//std::string fullname(gDirUtilp->getScrubbedFileName(self->getTitle()));
|
||||
std::string fullname(gDirUtilp->getScrubbedFileName(self->mSessionLabel));
|
||||
// [/Ansariel: Display name support]
|
||||
sprintf(command, "\"%s\\%s.txt\"", gDirUtilp->getPerAccountChatLogsDir().c_str(),fullname.c_str());
|
||||
gViewerWindow->getWindow()->ShellEx(command);
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#ifndef LL_IMPANEL_H
|
||||
#define LL_IMPANEL_H
|
||||
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llfloater.h"
|
||||
#include "lllogchat.h"
|
||||
#include "lluuid.h"
|
||||
@@ -193,6 +194,11 @@ public:
|
||||
EInstantMessage dialog);
|
||||
virtual ~LLFloaterIMPanel();
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
void lookupName();
|
||||
static void onAvatarNameLookup(const LLUUID& id, const LLAvatarName& avatar_name, void* user_data);
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
// Check typing timeout timer.
|
||||
@@ -367,6 +373,9 @@ private:
|
||||
|
||||
typedef std::map<LLUUID, LLStyleSP> styleMap;
|
||||
static styleMap mStyleMap;
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
static std::set<LLFloaterIMPanel*> sFloaterIMPanels;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -34,8 +34,6 @@
|
||||
|
||||
#include "llnameeditor.h"
|
||||
#include "llcachename.h"
|
||||
#include "llavatarname.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llagent.h"
|
||||
|
||||
#include "llfontgl.h"
|
||||
@@ -84,11 +82,6 @@ LLNameEditor::~LLNameEditor()
|
||||
LLNameEditor::sInstances.erase(this);
|
||||
}
|
||||
|
||||
void LLNameEditor::on_avatar_name_response(const LLUUID& agent_id, const LLAvatarName& av_name, void *userdata){
|
||||
LLNameEditor* self = (LLNameEditor*)userdata;
|
||||
if(self->mNameID == agent_id) self->setText(av_name.getCompleteName());
|
||||
}
|
||||
|
||||
void LLNameEditor::setNameID(const LLUUID& name_id, BOOL is_group)
|
||||
{
|
||||
mNameID = name_id;
|
||||
@@ -97,21 +90,7 @@ void LLNameEditor::setNameID(const LLUUID& name_id, BOOL is_group)
|
||||
|
||||
if (!is_group)
|
||||
{
|
||||
/* Phoenix: Wolfspirit: Check if we already have the name in Cache.
|
||||
This will (if DN is enabled) return the full name (Displayname (username)).
|
||||
If DN is diabled it will return the old "Firstname Lastname" style.
|
||||
If it is not in cache, then add the LegacyName until we received the name from the callback.
|
||||
Do the Request only, if DN is enabled. */
|
||||
|
||||
LLAvatarName av_name;
|
||||
if(LLAvatarNameCache::get(name_id, &av_name)){
|
||||
name = av_name.getCompleteName();
|
||||
}
|
||||
else
|
||||
{
|
||||
gCacheName->getFullName(name_id,name);
|
||||
if(LLAvatarNameCache::useDisplayNames()) LLAvatarNameCache::get(name_id, boost::bind(&LLNameEditor::on_avatar_name_response, _1, _2, this));
|
||||
}
|
||||
gCacheName->getFullName(name_id, name);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -129,16 +108,7 @@ void LLNameEditor::refresh(const LLUUID& id, const std::string& firstname,
|
||||
std::string name;
|
||||
if (!is_group)
|
||||
{
|
||||
/* Phoenix: Wolfspirit: Use DN Cache first */
|
||||
LLAvatarName av_name;
|
||||
if(LLAvatarNameCache::get(id, &av_name)){
|
||||
name = av_name.getCompleteName();
|
||||
}
|
||||
else
|
||||
{
|
||||
gCacheName->getFullName(id,name);
|
||||
if(LLAvatarNameCache::useDisplayNames()) LLAvatarNameCache::get(id, boost::bind(&LLNameEditor::on_avatar_name_response, _1, _2, this));
|
||||
}
|
||||
name = firstname + " " + lastname;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
#include "llstring.h"
|
||||
#include "llfontgl.h"
|
||||
#include "lllineeditor.h"
|
||||
#include "llavatarname.h"
|
||||
|
||||
|
||||
class LLNameEditor
|
||||
@@ -80,7 +79,6 @@ public:
|
||||
|
||||
private:
|
||||
static std::set<LLNameEditor*> sInstances;
|
||||
static void on_avatar_name_response(const LLUUID& agent_id, const LLAvatarName& av_name, void *userdata);
|
||||
|
||||
private:
|
||||
LLUUID mNameID;
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "llfloateravatarlist.h"
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llcallingcard.h"
|
||||
#include "llcolorscheme.h"
|
||||
#include "llviewercontrol.h"
|
||||
@@ -624,7 +625,44 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* sticky_rec
|
||||
{
|
||||
//msg.append(fullname);
|
||||
// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b
|
||||
msg.append( (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) ? fullname : RlvStrings::getAnonym(fullname) );
|
||||
// [Ansariel: Display name support]
|
||||
// msg.append( (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) ? fullname : RlvStrings::getAnonym(fullname) );
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
|
||||
{
|
||||
msg.append(RlvStrings::getAnonym(fullname));
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef LL_RRINTERFACE_H //MK
|
||||
if (gRRenabled && gAgent.mRRInterface.mContainsShownames)
|
||||
{
|
||||
fullname = gAgent.mRRInterface.getDummyName(fullname);
|
||||
}
|
||||
else
|
||||
{
|
||||
#endif //mk
|
||||
if (LLAvatarNameCache::useDisplayNames())
|
||||
{
|
||||
LLAvatarName avatar_name;
|
||||
if (LLAvatarNameCache::get(mClosestAgentToCursor, &avatar_name))
|
||||
{
|
||||
static LLCachedControl<S32> phoenix_name_system("PhoenixNameSystem", 0);
|
||||
if (phoenix_name_system == 2 || (phoenix_name_system == 1 && avatar_name.mIsDisplayNameDefault))
|
||||
{
|
||||
fullname = avatar_name.mDisplayName;
|
||||
}
|
||||
else
|
||||
{
|
||||
fullname = avatar_name.getCompleteName(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef LL_RRINTERFACE_H //MK
|
||||
}
|
||||
#endif //mk
|
||||
msg.append(fullname);
|
||||
}
|
||||
// [/Ansariel: Display name support]
|
||||
// [/RLVa:KB]
|
||||
msg.append("\n");
|
||||
|
||||
|
||||
@@ -94,6 +94,8 @@
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
|
||||
#include "llavatarname.h"
|
||||
|
||||
// Statics
|
||||
std::list<LLPanelAvatar*> LLPanelAvatar::sAllPanels;
|
||||
BOOL LLPanelAvatar::sAllowFirstLife = FALSE;
|
||||
@@ -214,13 +216,21 @@ void LLPanelAvatarSecondLife::updatePartnerName()
|
||||
{
|
||||
if (mPartnerID.notNull())
|
||||
{
|
||||
std::string first, last;
|
||||
BOOL found = gCacheName->getName(mPartnerID, first, last);
|
||||
if (found)
|
||||
// [Ansariel: Display name support]
|
||||
LLAvatarName avatar_name;
|
||||
if (LLAvatarNameCache::get(mPartnerID, &avatar_name))
|
||||
{
|
||||
childSetTextArg("partner_edit", "[FIRST]", first);
|
||||
childSetTextArg("partner_edit", "[LAST]", last);
|
||||
std::string name;
|
||||
switch (gSavedSettings.getS32("PhoenixNameSystem"))
|
||||
{
|
||||
case 0 : name = avatar_name.getLegacyName(); break;
|
||||
case 1 : name = (avatar_name.mIsDisplayNameDefault ? avatar_name.mDisplayName : avatar_name.getCompleteName()); break;
|
||||
case 2 : name = avatar_name.mDisplayName; break;
|
||||
default : name = avatar_name.getLegacyName(); break;
|
||||
}
|
||||
childSetTextArg("partner_edit", "[NAME]", name);
|
||||
}
|
||||
// [/Ansariel: Display name support]
|
||||
childSetEnabled("partner_info", TRUE);
|
||||
}
|
||||
}
|
||||
@@ -241,8 +251,9 @@ void LLPanelAvatarSecondLife::clearControls()
|
||||
childSetValue("born", "");
|
||||
childSetValue("acct", "");
|
||||
|
||||
childSetTextArg("partner_edit", "[FIRST]", LLStringUtil::null);
|
||||
childSetTextArg("partner_edit", "[LAST]", LLStringUtil::null);
|
||||
// [Ansariel: Display name support]
|
||||
childSetTextArg("partner_edit", "[NAME]", LLStringUtil::null);
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
mPartnerID = LLUUID::null;
|
||||
|
||||
@@ -1414,11 +1425,9 @@ void LLPanelAvatar::setAvatar(LLViewerObject *avatarp)
|
||||
{
|
||||
name.assign("");
|
||||
}
|
||||
LLAvatarName av_name;
|
||||
LLAvatarNameCache::get(avatarp->getID(), &av_name);
|
||||
|
||||
// If we have an avatar pointer, they must be online.
|
||||
setAvatarID(avatarp->getID(), av_name.getCompleteName(), ONLINE_STATUS_YES);
|
||||
setAvatarID(avatarp->getID(), name, ONLINE_STATUS_YES);
|
||||
}
|
||||
|
||||
void LLPanelAvatar::onCommitKey(LLUICtrl* ctrl, void* data)
|
||||
@@ -1523,6 +1532,12 @@ void LLPanelAvatar::setOnlineStatus(EOnlineStatus online_status)
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelAvatar::on_avatar_name_response(const LLUUID& agent_id, const LLAvatarName& av_name, void *userdata){
|
||||
LLPanelAvatar* self = (LLPanelAvatar*)userdata;
|
||||
LLLineEditor* dnname_edit = self->getChild<LLLineEditor>("dnname");
|
||||
if(LLAvatarNameCache::useDisplayNames() && agent_id==self->mAvatarID) dnname_edit->setText(av_name.getCompleteName());
|
||||
}
|
||||
|
||||
void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name,
|
||||
EOnlineStatus online_status)
|
||||
{
|
||||
@@ -1561,7 +1576,7 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name
|
||||
addChild(mDropTarget);
|
||||
mDropTarget->setAgentID(mAvatarID);
|
||||
}
|
||||
|
||||
|
||||
LLNameEditor* name_edit = getChild<LLNameEditor>("name");
|
||||
if(name_edit)
|
||||
{
|
||||
@@ -1574,6 +1589,28 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name
|
||||
name_edit->setText(name);
|
||||
}
|
||||
}
|
||||
|
||||
LLLineEditor* dnname_edit = getChild<LLLineEditor>("dnname");
|
||||
LLAvatarName av_name;
|
||||
if(dnname_edit){
|
||||
if(LLAvatarNameCache::useDisplayNames()){
|
||||
if(LLAvatarNameCache::get(avatar_id, &av_name)){
|
||||
dnname_edit->setText(av_name.getCompleteName());
|
||||
}
|
||||
else{
|
||||
dnname_edit->setText(name_edit->getText());
|
||||
LLAvatarNameCache::get(avatar_id, boost::bind(&LLPanelAvatar::on_avatar_name_response, _1, _2, this));
|
||||
}
|
||||
childSetVisible("dnname",TRUE);
|
||||
childSetVisible("name",FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
childSetVisible("dnname",FALSE);
|
||||
childSetVisible("name",TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
LLNameEditor* key_edit = getChild<LLNameEditor>("avatar_key");
|
||||
if(key_edit)
|
||||
{
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include "lluuid.h"
|
||||
#include "llmediactrl.h"
|
||||
|
||||
class LLAvatarName;
|
||||
class LLButton;
|
||||
class LLCheckBoxCtrl;
|
||||
class LLDropTarget;
|
||||
@@ -343,7 +344,7 @@ private:
|
||||
static bool finishUnfreeze(const LLSD& notification, const LLSD& response);
|
||||
|
||||
static void showProfileCallback(S32 option, void *userdata);
|
||||
|
||||
static void on_avatar_name_response(const LLUUID& agent_id, const LLAvatarName& av_name, void *userdata);
|
||||
static void* createPanelAvatar(void* data);
|
||||
static void* createFloaterAvatarInfo(void* data);
|
||||
static void* createPanelAvatarSecondLife(void* data);
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
// For Listeners
|
||||
#include "llaudioengine.h"
|
||||
#include "llagent.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llconsole.h"
|
||||
#include "lldrawpoolterrain.h"
|
||||
#include "llflexibleobject.h"
|
||||
@@ -516,6 +517,18 @@ bool handleAscentGlobalTag(const LLSD& newvalue)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
static bool handlePhoenixNameSystemChanged(const LLSD& newvalue)
|
||||
{
|
||||
S32 dnval = (S32)newvalue.asInteger();
|
||||
if (dnval <= 0 || dnval > 2) LLAvatarNameCache::setUseDisplayNames(false);
|
||||
else LLAvatarNameCache::setUseDisplayNames(true);
|
||||
LLVOAvatar::invalidateNameTags();
|
||||
return true;
|
||||
}
|
||||
// [/Ansariel: Display name support]
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
void settings_setup_listeners()
|
||||
{
|
||||
@@ -664,6 +677,10 @@ void settings_setup_listeners()
|
||||
gSavedSettings.getControl("AscentReportClientUUID")->getSignal()->connect(boost::bind(&handleAscentSelfTag,_1));
|
||||
gSavedSettings.getControl("AscentShowFriendsTag")->getSignal()->connect(boost::bind(&handleAscentGlobalTag,_1));
|
||||
gSavedSettings.getControl("AscentUseStatusColors")->getSignal()->connect(boost::bind(&handleAscentGlobalTag,_1));
|
||||
|
||||
// [Ansariel: Display name support]
|
||||
gSavedSettings.getControl("PhoenixNameSystem")->getSignal()->connect(boost::bind(&handlePhoenixNameSystemChanged, _1));
|
||||
// [/Ansariel: Display name support]
|
||||
}
|
||||
|
||||
template <> eControlType get_control_type<U32>(const U32& in, LLSD& out)
|
||||
|
||||
@@ -251,6 +251,7 @@
|
||||
|
||||
#include "scriptcounter.h"
|
||||
#include "llfloaterdisplayname.h"
|
||||
#include "llavatarnamecache.h"
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
void init_client_menu(LLMenuGL* menu);
|
||||
@@ -3900,6 +3901,16 @@ class LLEditEnableCustomizeAvatar : public view_listener_t
|
||||
}
|
||||
};
|
||||
|
||||
class LLEditEnableChangeDisplayname : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
bool new_value = LLAvatarNameCache::useDisplayNames();
|
||||
gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
// only works on pie menu
|
||||
bool handle_sit_or_stand()
|
||||
{
|
||||
@@ -10274,6 +10285,7 @@ void initialize_menus()
|
||||
addMenu(new LLEditEnableDuplicate(), "Edit.EnableDuplicate");
|
||||
addMenu(new LLEditEnableTakeOff(), "Edit.EnableTakeOff");
|
||||
addMenu(new LLEditEnableCustomizeAvatar(), "Edit.EnableCustomizeAvatar");
|
||||
addMenu(new LLEditEnableChangeDisplayname(), "Edit.EnableChangeDisplayname");
|
||||
|
||||
// View menu
|
||||
addMenu(new LLViewMouselook(), "View.Mouselook");
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <deque>
|
||||
|
||||
#include "llaudioengine.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "indra_constants.h"
|
||||
#include "lscript_byteformat.h"
|
||||
#include "mean_collision_data.h"
|
||||
@@ -3009,6 +3010,36 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
||||
|
||||
if (is_audible)
|
||||
{
|
||||
// [Ansariel/Henri: Display name support]
|
||||
if (chatter && chatter->isAvatar())
|
||||
{
|
||||
#ifdef LL_RRINTERFACE_H //MK
|
||||
if (!gRRenabled || !gAgent.mRRInterface.mContainsShownames)
|
||||
{
|
||||
#endif //mk
|
||||
if (LLAvatarNameCache::useDisplayNames())
|
||||
{
|
||||
LLAvatarName avatar_name;
|
||||
if (LLAvatarNameCache::get(from_id, &avatar_name))
|
||||
{
|
||||
static LLCachedControl<S32> phoenix_name_system("PhoenixNameSystem", 0);
|
||||
if (phoenix_name_system == 2 || (phoenix_name_system == 1 && avatar_name.mIsDisplayNameDefault))
|
||||
{
|
||||
from_name = avatar_name.mDisplayName;
|
||||
}
|
||||
else
|
||||
{
|
||||
from_name = avatar_name.getCompleteName();
|
||||
}
|
||||
}
|
||||
chat.mFromName = from_name;
|
||||
}
|
||||
#ifdef LL_RRINTERFACE_H //MK
|
||||
}
|
||||
#endif //mk
|
||||
}
|
||||
// [/Ansariel/Henri: Display name support]
|
||||
|
||||
BOOL visible_in_chat_bubble = FALSE;
|
||||
std::string verb;
|
||||
|
||||
@@ -3055,8 +3086,8 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
||||
RlvUtil::filterNames(chat.mFromName);
|
||||
}
|
||||
}
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
}
|
||||
|
||||
BOOL ircstyle = FALSE;
|
||||
|
||||
@@ -3252,17 +3283,10 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
||||
// F T T T * No No
|
||||
// T * * * F Yes Yes
|
||||
|
||||
// <edit>
|
||||
//chat.mMuted = is_muted && !is_linden;
|
||||
chat.mMuted = is_muted;
|
||||
// </edit>
|
||||
|
||||
chat.mMuted = is_muted && !is_linden;
|
||||
|
||||
if (!visible_in_chat_bubble
|
||||
// <edit>
|
||||
// && (is_linden || !is_busy || is_owned_by_me))
|
||||
&& (!is_busy || is_owned_by_me))
|
||||
// </edit>
|
||||
&& (is_linden || !is_busy || is_owned_by_me))
|
||||
{
|
||||
// show on screen and add to history
|
||||
check_translate_chat(mesg, chat, FALSE);
|
||||
|
||||
@@ -3899,10 +3899,10 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
|
||||
line += " (" + additions + ")";
|
||||
|
||||
}
|
||||
mSubNameString = "";
|
||||
if(useddn){
|
||||
if(phoenix_name_system != 2){
|
||||
line += "\n";
|
||||
line += "("+av_name.mUsername+")";
|
||||
mSubNameString = "("+av_name.mUsername+")";
|
||||
}
|
||||
mRenderedName = av_name.mDisplayName;
|
||||
}
|
||||
@@ -4014,21 +4014,22 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSavedSettings.getBOOL("SmallAvatarNames"))
|
||||
{
|
||||
mNameText->setFont(LLFontGL::getFontSansSerif());
|
||||
}
|
||||
else
|
||||
{
|
||||
mNameText->setFont(LLFontGL::getFontSansSerifBig());
|
||||
}
|
||||
mNameText->setTextAlignment(LLHUDText::ALIGN_TEXT_CENTER);
|
||||
mNameText->setFadeDistance(CHAT_NORMAL_RADIUS, 5.f);
|
||||
mNameText->setVisibleOffScreen(FALSE);
|
||||
if (new_name)
|
||||
{
|
||||
if (gSavedSettings.getBOOL("SmallAvatarNames"))
|
||||
{
|
||||
mNameText->setFont(LLFontGL::getFontSansSerif());
|
||||
}
|
||||
else
|
||||
{
|
||||
mNameText->setFont(LLFontGL::getFontSansSerifBig());
|
||||
}
|
||||
mNameText->setTextAlignment(LLHUDText::ALIGN_TEXT_CENTER);
|
||||
mNameText->setFadeDistance(CHAT_NORMAL_RADIUS, 5.f);
|
||||
mNameText->setVisibleOffScreen(FALSE);
|
||||
mNameText->setLabel("");
|
||||
mNameText->setString(mNameString);
|
||||
mNameText->addLine(mSubNameString, mClientColor, LLFontGL::NORMAL, LLFontGL::getFontSansSerifSmall());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4047,8 +4048,8 @@ void LLVOAvatar::clearNameTag()
|
||||
{
|
||||
mNameString.clear();
|
||||
if (mNameText)
|
||||
{
|
||||
mNameText->setLabel("");
|
||||
{
|
||||
mNameText->setLabel("");
|
||||
mNameText->setString(mNameString);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -730,6 +730,7 @@ private:
|
||||
F32 mAdjustedPixelArea;
|
||||
|
||||
LLWString mNameString;
|
||||
std::string mSubNameString;
|
||||
std::string mTitle;
|
||||
BOOL mNameAway;
|
||||
BOOL mNameBusy;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llfloaterbeacons.h"
|
||||
#include "llfloaterchat.h"
|
||||
#include "llfloaterdaycycle.h"
|
||||
@@ -1080,6 +1081,12 @@ ERlvCmdRet RlvHandler::processAddRemCommand(const RlvCommand& rlvCmd)
|
||||
// If this is the first @shownames=n restriction refresh all object text so we can filter it if necessary
|
||||
fRefreshHover = (0 == m_Behaviours[RLV_BHVR_SHOWNAMES]);
|
||||
|
||||
// Force the use of the "display name" cache so we can filter both display and legacy names
|
||||
if (0 == m_Behaviours[RLV_BHVR_SHOWNAMES])
|
||||
{
|
||||
LLAvatarNameCache::setForceDisplayNames(true);
|
||||
}
|
||||
|
||||
// Close the "Active Speakers" panel if it's currently visible
|
||||
LLFloaterChat::getInstance()->childSetVisible("active_speakers_panel", false);
|
||||
}
|
||||
@@ -1087,6 +1094,13 @@ ERlvCmdRet RlvHandler::processAddRemCommand(const RlvCommand& rlvCmd)
|
||||
{
|
||||
// If this is the last @shownames=n restriction refresh all object text in case anything needs restoring
|
||||
fRefreshHover = (1 == m_Behaviours[RLV_BHVR_SHOWNAMES]);
|
||||
|
||||
// Return the use of display names back to the user's preferences on the last @shownames=n restriction
|
||||
if (1 == m_Behaviours[RLV_BHVR_SHOWNAMES])
|
||||
{
|
||||
LLAvatarNameCache::setForceDisplayNames(false);
|
||||
LLAvatarNameCache::setUseDisplayNames(gSavedSettings.getS32("PhoenixNameSystem") != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -222,6 +222,7 @@
|
||||
<menu_item_call bottom="-362" enabled="true" height="19" label="Display Name..." left="0"
|
||||
mouse_opaque="true" name="Display Name..." width="153">
|
||||
<on_click function="ShowFloater" userdata="displayname" />
|
||||
<on_enable function="Edit.EnableChangeDisplayname" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator bottom="-370" enabled="true" height="8" label="-----------" left="0"
|
||||
mouse_opaque="true" name="separator7" width="153" />
|
||||
|
||||
@@ -5159,14 +5159,14 @@ Topic: [SUBJECT], Message: [MESSAGE]
|
||||
icon="notifytip.tga"
|
||||
name="FriendOnline"
|
||||
type="notifytip">
|
||||
[FIRST] [LAST] is Online
|
||||
[NAME] is Online
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="FriendOffline"
|
||||
type="notifytip">
|
||||
[FIRST] [LAST] is Offline
|
||||
[NAME] is Offline
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
|
||||
@@ -61,7 +61,12 @@
|
||||
border_thickness="1" bottom="-48" enabled="false" follows="left|top"
|
||||
font="SansSerifSmall" height="16" is_unicode="false" left_delta="75"
|
||||
max_length="254" mouse_opaque="false" name="name"
|
||||
width="180" />
|
||||
width="180" visible="false" />
|
||||
<line_editor bevel_style="in" border_style="line"
|
||||
border_thickness="1" bottom="-48" enabled="false" follows="left|top"
|
||||
font="SansSerifSmall" height="16" is_unicode="false" left_delta="0"
|
||||
max_length="254" mouse_opaque="false" name="dnname"
|
||||
width="180" />
|
||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||
bottom="-48" drop_shadow_visible="true" follows="left|top"
|
||||
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="279"
|
||||
|
||||
Reference in New Issue
Block a user