MAINT-6220 enable searching of the friend list with the classic username of the avatar.
parent
2b731af53a
commit
b2fd397818
|
|
@ -166,7 +166,7 @@ void LLAvatarName::setExpires(F64 expires)
|
|||
mExpires = LLFrameTimer::getTotalSeconds() + expires;
|
||||
}
|
||||
|
||||
std::string LLAvatarName::getCompleteName() const
|
||||
std::string LLAvatarName::getCompleteName(bool use_parentheses) const
|
||||
{
|
||||
std::string name;
|
||||
if (sUseDisplayNames)
|
||||
|
|
@ -182,7 +182,14 @@ std::string LLAvatarName::getCompleteName() const
|
|||
name = mDisplayName;
|
||||
if(sUseUsernames)
|
||||
{
|
||||
name += " (" + mUsername + ")";
|
||||
if(use_parentheses)
|
||||
{
|
||||
name += " (" + mUsername + ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
name += " [ " + mUsername + " ]";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -220,7 +227,7 @@ std::string LLAvatarName::getDisplayName() const
|
|||
}
|
||||
}
|
||||
|
||||
std::string LLAvatarName::getUserName() const
|
||||
std::string LLAvatarName::getUserName(bool lowercase) const
|
||||
{
|
||||
std::string name;
|
||||
if (mLegacyLastName.empty() || (mLegacyLastName == "Resident"))
|
||||
|
|
@ -238,7 +245,15 @@ std::string LLAvatarName::getUserName() const
|
|||
}
|
||||
else
|
||||
{
|
||||
name = mLegacyFirstName + " " + mLegacyLastName;
|
||||
if(lowercase)
|
||||
{
|
||||
name = mLegacyFirstName + "." + mLegacyLastName;
|
||||
LLStringUtil::toLower(name);
|
||||
}
|
||||
else
|
||||
{
|
||||
name = mLegacyFirstName + " " + mLegacyLastName;
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,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 use_parentheses = true) const;
|
||||
|
||||
// Returns "James Linden" or "bobsmith123 Resident" for backwards
|
||||
// compatibility with systems like voice and muting
|
||||
|
|
@ -80,7 +80,7 @@ public:
|
|||
// Returns "James Linden" or "bobsmith123 Resident"
|
||||
// Used where we explicitely prefer or need a non UTF-8 legacy (ASCII) name
|
||||
// Also used for backwards compatibility with systems like voice and muting
|
||||
std::string getUserName() const;
|
||||
std::string getUserName(bool lowercase = false) const;
|
||||
|
||||
// Returns "james.linden" or the legacy name for very old names
|
||||
std::string getAccountName() const { return mUsername; }
|
||||
|
|
|
|||
|
|
@ -56,6 +56,26 @@ void LLTextUtil::textboxSetHighlightedVal(LLTextBox *txtbox, const LLStyle::Para
|
|||
txtbox->appendText(text.substr(hl_begin + hl_len), false, normal_style);
|
||||
}
|
||||
|
||||
void LLTextUtil::textboxSetGreyedVal(LLTextBox *txtbox, const LLStyle::Params& normal_style, const std::string& text, const std::string& greyed)
|
||||
{
|
||||
static LLUIColor sGreyedTextColor = LLUIColorTable::instance().getColor("Gray", LLColor4::grey);
|
||||
|
||||
size_t greyed_begin = 0, greyed_len = greyed.size();
|
||||
|
||||
if (greyed_len == 0 || (greyed_begin = text.find(greyed)) == std::string::npos)
|
||||
{
|
||||
txtbox->setText(text, normal_style);
|
||||
return;
|
||||
}
|
||||
|
||||
LLStyle::Params greyed_style = normal_style;
|
||||
greyed_style.color = sGreyedTextColor;
|
||||
txtbox->setText(LLStringUtil::null); // clear text
|
||||
txtbox->appendText(text.substr(0, greyed_begin), false, normal_style);
|
||||
txtbox->appendText(text.substr(greyed_begin, greyed_len), false, greyed_style);
|
||||
txtbox->appendText(text.substr(greyed_begin + greyed_len), false, normal_style);
|
||||
}
|
||||
|
||||
const std::string& LLTextUtil::formatPhoneNumber(const std::string& phone_str)
|
||||
{
|
||||
static const std::string PHONE_SEPARATOR = LLUI::sSettingGroups["config"]->getString("AvalinePhoneSeparator");
|
||||
|
|
|
|||
|
|
@ -52,6 +52,12 @@ namespace LLTextUtil
|
|||
const std::string& text,
|
||||
const std::string& hl);
|
||||
|
||||
void textboxSetGreyedVal(
|
||||
LLTextBox *txtbox,
|
||||
const LLStyle::Params& normal_style,
|
||||
const std::string& text,
|
||||
const std::string& greyed);
|
||||
|
||||
/**
|
||||
* Formats passed phone number to be more human readable.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -11062,6 +11062,28 @@
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FriendsListHideUsernames</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show both Display name and Username in Friend list</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NearbyListHideUsernames</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show both Display name and Username in Nearby list</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NearbyListShowMap</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@ LLAvatarList::LLAvatarList(const Params& p)
|
|||
, mShowProfileBtn(p.show_profile_btn)
|
||||
, mShowSpeakingIndicator(p.show_speaking_indicator)
|
||||
, mShowPermissions(p.show_permissions_granted)
|
||||
, mShowCompleteName(false)
|
||||
{
|
||||
setCommitOnSelectionChange(true);
|
||||
|
||||
|
|
@ -174,6 +175,11 @@ void LLAvatarList::setShowIcons(std::string param_name)
|
|||
mShowIcons = gSavedSettings.getBOOL(mIconParamName);
|
||||
}
|
||||
|
||||
std::string LLAvatarList::getAvatarName(LLAvatarName av_name)
|
||||
{
|
||||
return mShowCompleteName? av_name.getCompleteName(false) : av_name.getDisplayName();
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLAvatarList::draw()
|
||||
{
|
||||
|
|
@ -279,7 +285,7 @@ void LLAvatarList::refresh()
|
|||
LLAvatarName av_name;
|
||||
have_names &= LLAvatarNameCache::get(buddy_id, &av_name);
|
||||
|
||||
if (!have_filter || findInsensitive(av_name.getDisplayName(), mNameFilter))
|
||||
if (!have_filter || findInsensitive(getAvatarName(av_name), mNameFilter))
|
||||
{
|
||||
if (nadded >= ADD_LIMIT)
|
||||
{
|
||||
|
|
@ -297,7 +303,7 @@ void LLAvatarList::refresh()
|
|||
}
|
||||
else
|
||||
{
|
||||
std::string display_name = av_name.getDisplayName();
|
||||
std::string display_name = getAvatarName(av_name);
|
||||
addNewItem(buddy_id,
|
||||
display_name.empty() ? waiting_str : display_name,
|
||||
LLAvatarTracker::instance().isBuddyOnline(buddy_id));
|
||||
|
|
@ -327,7 +333,7 @@ void LLAvatarList::refresh()
|
|||
const LLUUID& buddy_id = it->asUUID();
|
||||
LLAvatarName av_name;
|
||||
have_names &= LLAvatarNameCache::get(buddy_id, &av_name);
|
||||
if (!findInsensitive(av_name.getDisplayName(), mNameFilter))
|
||||
if (!findInsensitive(getAvatarName(av_name), mNameFilter))
|
||||
{
|
||||
removeItemByUUID(buddy_id);
|
||||
modified = true;
|
||||
|
|
@ -381,6 +387,7 @@ void LLAvatarList::updateAvatarNames()
|
|||
for( std::vector<LLPanel*>::const_iterator it = items.begin(); it != items.end(); it++)
|
||||
{
|
||||
LLAvatarListItem* item = static_cast<LLAvatarListItem*>(*it);
|
||||
item->setShowCompleteName(mShowCompleteName);
|
||||
item->updateAvatarName();
|
||||
}
|
||||
mNeedUpdateNames = false;
|
||||
|
|
@ -400,7 +407,7 @@ bool LLAvatarList::filterHasMatches()
|
|||
// If name has not been loaded yet we consider it as a match.
|
||||
// When the name will be loaded the filter will be applied again(in refresh()).
|
||||
|
||||
if (have_name && !findInsensitive(av_name.getDisplayName(), mNameFilter))
|
||||
if (have_name && !findInsensitive(getAvatarName(av_name), mNameFilter))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
@ -434,6 +441,7 @@ S32 LLAvatarList::notifyParent(const LLSD& info)
|
|||
void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos)
|
||||
{
|
||||
LLAvatarListItem* item = new LLAvatarListItem();
|
||||
item->setShowCompleteName(mShowCompleteName);
|
||||
// This sets the name as a side effect
|
||||
item->setAvatarId(id, mSessionID, mIgnoreOnlineStatus);
|
||||
item->setOnline(mIgnoreOnlineStatus ? true : is_online);
|
||||
|
|
@ -445,6 +453,7 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is
|
|||
item->showSpeakingIndicator(mShowSpeakingIndicator);
|
||||
item->setShowPermissions(mShowPermissions);
|
||||
|
||||
|
||||
item->setDoubleClickCallback(boost::bind(&LLAvatarList::onItemDoubleClicked, this, _1, _2, _3, _4));
|
||||
|
||||
addItem(item, id, pos);
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ public:
|
|||
void setShowIcons(std::string param_name);
|
||||
bool getIconsVisible() const { return mShowIcons; }
|
||||
const std::string getIconParamName() const{return mIconParamName;}
|
||||
std::string getAvatarName(LLAvatarName av_name);
|
||||
virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask );
|
||||
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
|
||||
|
|
@ -100,6 +101,8 @@ public:
|
|||
void addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name);
|
||||
void handleDisplayNamesOptionChanged();
|
||||
|
||||
void setShowCompleteName(bool show) { mShowCompleteName = show;};
|
||||
|
||||
protected:
|
||||
void refresh();
|
||||
|
||||
|
|
@ -126,6 +129,7 @@ private:
|
|||
bool mShowProfileBtn;
|
||||
bool mShowSpeakingIndicator;
|
||||
bool mShowPermissions;
|
||||
bool mShowCompleteName;
|
||||
|
||||
LLTimer* mLITUpdateTimer; // last interaction time update timer
|
||||
std::string mIconParamName;
|
||||
|
|
|
|||
|
|
@ -77,8 +77,10 @@ LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
|
|||
mShowInfoBtn(true),
|
||||
mShowProfileBtn(true),
|
||||
mShowPermissions(false),
|
||||
mShowCompleteName(false),
|
||||
mHovered(false),
|
||||
mAvatarNameCacheConnection()
|
||||
mAvatarNameCacheConnection(),
|
||||
mGreyOutUsername("")
|
||||
{
|
||||
if (not_from_ui_factory)
|
||||
{
|
||||
|
|
@ -399,14 +401,28 @@ void LLAvatarListItem::updateAvatarName()
|
|||
|
||||
void LLAvatarListItem::setNameInternal(const std::string& name, const std::string& highlight)
|
||||
{
|
||||
LLTextUtil::textboxSetHighlightedVal(mAvatarName, mAvatarNameStyle, name, highlight);
|
||||
if(mShowCompleteName && highlight.empty())
|
||||
{
|
||||
LLTextUtil::textboxSetGreyedVal(mAvatarName, mAvatarNameStyle, name, mGreyOutUsername);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLTextUtil::textboxSetHighlightedVal(mAvatarName, mAvatarNameStyle, name, highlight);
|
||||
}
|
||||
}
|
||||
|
||||
void LLAvatarListItem::onAvatarNameCache(const LLAvatarName& av_name)
|
||||
{
|
||||
mAvatarNameCacheConnection.disconnect();
|
||||
|
||||
setAvatarName(av_name.getDisplayName());
|
||||
mGreyOutUsername = "";
|
||||
std::string name_string = mShowCompleteName? av_name.getCompleteName(false) : av_name.getDisplayName();
|
||||
if(av_name.getCompleteName() != av_name.getUserName())
|
||||
{
|
||||
mGreyOutUsername = "[ " + av_name.getUserName(true) + " ]";
|
||||
LLStringUtil::toLower(mGreyOutUsername);
|
||||
}
|
||||
setAvatarName(name_string);
|
||||
setAvatarToolTip(av_name.getUserName());
|
||||
|
||||
//requesting the list to resort
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ public:
|
|||
void setShowPermissions(bool show) { mShowPermissions = show; };
|
||||
void showLastInteractionTime(bool show);
|
||||
void setAvatarIconVisible(bool visible);
|
||||
void setShowCompleteName(bool show) { mShowCompleteName = show;};
|
||||
|
||||
const LLUUID& getAvatarId() const;
|
||||
std::string getAvatarName() const;
|
||||
|
|
@ -218,6 +219,9 @@ private:
|
|||
/// true when the mouse pointer is hovering over this item
|
||||
bool mHovered;
|
||||
|
||||
bool mShowCompleteName;
|
||||
std::string mGreyOutUsername;
|
||||
|
||||
void fetchAvatarName();
|
||||
boost::signals2::connection mAvatarNameCacheConnection;
|
||||
|
||||
|
|
|
|||
|
|
@ -611,9 +611,11 @@ BOOL LLPanelPeople::postBuild()
|
|||
mOnlineFriendList->setNoItemsCommentText(getString("no_friends_online"));
|
||||
mOnlineFriendList->setShowIcons("FriendsListShowIcons");
|
||||
mOnlineFriendList->showPermissions("FriendsListShowPermissions");
|
||||
mOnlineFriendList->setShowCompleteName(!gSavedSettings.getBOOL("FriendsListHideUsernames"));
|
||||
mAllFriendList->setNoItemsCommentText(getString("no_friends"));
|
||||
mAllFriendList->setShowIcons("FriendsListShowIcons");
|
||||
mAllFriendList->showPermissions("FriendsListShowPermissions");
|
||||
mAllFriendList->setShowCompleteName(!gSavedSettings.getBOOL("FriendsListHideUsernames"));
|
||||
|
||||
LLPanel* nearby_tab = getChild<LLPanel>(NEARBY_TAB_NAME);
|
||||
nearby_tab->setVisibleCallback(boost::bind(&Updater::setActive, mNearbyListUpdater, _2));
|
||||
|
|
@ -622,6 +624,7 @@ BOOL LLPanelPeople::postBuild()
|
|||
mNearbyList->setNoItemsMsg(getString("no_one_near"));
|
||||
mNearbyList->setNoFilteredItemsMsg(getString("no_one_filtered_near"));
|
||||
mNearbyList->setShowIcons("NearbyListShowIcons");
|
||||
mNearbyList->setShowCompleteName(!gSavedSettings.getBOOL("NearbyListHideUsernames"));
|
||||
mMiniMap = (LLNetMap*)getChildView("Net Map",true);
|
||||
mMiniMap->setToolTipMsg(gSavedSettings.getBOOL("DoubleClickTeleport") ?
|
||||
getString("AltMiniMapToolTipMsg") : getString("MiniMapToolTipMsg"));
|
||||
|
|
@ -1342,6 +1345,16 @@ void LLPanelPeople::onFriendsViewSortMenuItemClicked(const LLSD& userdata)
|
|||
mAllFriendList->showPermissions(show_permissions);
|
||||
mOnlineFriendList->showPermissions(show_permissions);
|
||||
}
|
||||
else if (chosen_item == "view_usernames")
|
||||
{
|
||||
bool hide_usernames = !gSavedSettings.getBOOL("FriendsListHideUsernames");
|
||||
gSavedSettings.setBOOL("FriendsListHideUsernames", hide_usernames);
|
||||
|
||||
mAllFriendList->setShowCompleteName(!hide_usernames);
|
||||
mAllFriendList->handleDisplayNamesOptionChanged();
|
||||
mOnlineFriendList->setShowCompleteName(!hide_usernames);
|
||||
mOnlineFriendList->handleDisplayNamesOptionChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPeople::onGroupsViewSortMenuItemClicked(const LLSD& userdata)
|
||||
|
|
@ -1374,6 +1387,14 @@ void LLPanelPeople::onNearbyViewSortMenuItemClicked(const LLSD& userdata)
|
|||
{
|
||||
setSortOrder(mNearbyList, E_SORT_BY_DISTANCE);
|
||||
}
|
||||
else if (chosen_item == "view_usernames")
|
||||
{
|
||||
bool hide_usernames = !gSavedSettings.getBOOL("NearbyListHideUsernames");
|
||||
gSavedSettings.setBOOL("NearbyListHideUsernames", hide_usernames);
|
||||
|
||||
mNearbyList->setShowCompleteName(!hide_usernames);
|
||||
mNearbyList->handleDisplayNamesOptionChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool LLPanelPeople::onNearbyViewSortMenuItemCheck(const LLSD& userdata)
|
||||
|
|
|
|||
|
|
@ -40,6 +40,14 @@
|
|||
function="CheckControl"
|
||||
parameter="FriendsListShowPermissions" />
|
||||
</menu_item_check>
|
||||
<menu_item_check name="view_usernames" label="Hide usernames">
|
||||
<menu_item_check.on_click
|
||||
function="People.Friends.ViewSort.Action"
|
||||
parameter="view_usernames" />
|
||||
<menu_item_check.on_check
|
||||
function="CheckControl"
|
||||
parameter="FriendsListHideUsernames" />
|
||||
</menu_item_check>
|
||||
<menu_item_check name="view_conversation" label="View Conversation Log...">
|
||||
<menu_item_check.on_check
|
||||
function="Floater.Visible"
|
||||
|
|
|
|||
|
|
@ -50,4 +50,12 @@
|
|||
function="ToggleControl"
|
||||
parameter="NearbyListShowMap" />
|
||||
</menu_item_check>
|
||||
<menu_item_check name="view_usernames" label="Hide usernames">
|
||||
<menu_item_check.on_click
|
||||
function="People.Nearby.ViewSort.Action"
|
||||
parameter="view_usernames" />
|
||||
<menu_item_check.on_check
|
||||
function="CheckControl"
|
||||
parameter="NearbyListHideUsernames" />
|
||||
</menu_item_check>
|
||||
</toggleable_menu>
|
||||
|
|
|
|||
Loading…
Reference in New Issue