diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 479d44a097..a94f04809b 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -22644,6 +22644,17 @@ Change of this parameter will affect the layout of buttons in notification toast
Value
1
+ FSFriendListFullNameFormat
+
diff --git a/indra/newview/fsfloatercontacts.cpp b/indra/newview/fsfloatercontacts.cpp
index f91f3243a9..5465f835e6 100644
--- a/indra/newview/fsfloatercontacts.cpp
+++ b/indra/newview/fsfloatercontacts.cpp
@@ -160,6 +160,7 @@ BOOL FSFloaterContacts::postBuild()
mRlvBehaviorCallbackConnection = gRlvHandler.setBehaviourCallback(boost::bind(&FSFloaterContacts::updateRlvRestrictions, this, _1));
+ gSavedSettings.getControl("FSFriendListFullNameFormat")->getSignal()->connect(boost::bind(&FSFloaterContacts::onFullNameFormatChanged, this));
gSavedSettings.getControl("FSFriendListSortOrder")->getSignal()->connect(boost::bind(&FSFloaterContacts::sortFriendList, this));
gSavedSettings.getControl("FSFriendListColumnShowUserName")->getSignal()->connect(boost::bind(&FSFloaterContacts::onColumnDisplayModeChanged, this, "FSFriendListColumnShowUserName"));
gSavedSettings.getControl("FSFriendListColumnShowDisplayName")->getSignal()->connect(boost::bind(&FSFloaterContacts::onColumnDisplayModeChanged, this, "FSFriendListColumnShowDisplayName"));
@@ -609,10 +610,10 @@ void FSFloaterContacts::addFriend(const LLUUID& agent_id)
display_name_column["value"] = av_name.getDisplayName();
display_name_column["font"]["name"] = mFriendListFontName;
display_name_column["font"]["style"]= "NORMAL";
-
+
LLSD& friend_column = element["columns"][LIST_FRIEND_NAME];
friend_column["column"] = "full_name";
- friend_column["value"] = av_name.getCompleteName();
+ friend_column["value"] = getFullName(av_name);
friend_column["font"]["name"] = mFriendListFontName;
friend_column["font"]["style"] = "NORMAL";
@@ -711,7 +712,7 @@ void FSFloaterContacts::updateFriendItem(const LLUUID& agent_id, const LLRelatio
itemp->getColumn(LIST_FRIEND_USER_NAME)->setValue( av_name.getUserNameForDisplay() );
itemp->getColumn(LIST_FRIEND_DISPLAY_NAME)->setValue( av_name.getDisplayName() );
- itemp->getColumn(LIST_FRIEND_NAME)->setValue( av_name.getCompleteName() );
+ itemp->getColumn(LIST_FRIEND_NAME)->setValue( getFullName(av_name) );
// render name of online friends in bold text
LLFontGL::StyleFlags font_style = ((isOnline || isOnlineSIP) ? LLFontGL::BOLD : LLFontGL::NORMAL);
@@ -1154,4 +1155,35 @@ void FSFloaterContacts::onColumnDisplayModeChanged(const std::string& settings_n
mFriendsList->setSearchColumn(mFriendsList->getColumn("full_name")->mIndex);
}
+void FSFloaterContacts::onFullNameFormatChanged()
+{
+ std::vector items = mFriendsList->getAllData();
+ for (std::vector::iterator it = items.begin(); it != items.end(); ++it)
+ {
+ LLAvatarName av_name;
+ if (LLAvatarNameCache::get((*it)->getUUID(), &av_name))
+ {
+ (*it)->getColumn(LIST_FRIEND_NAME)->setValue(getFullName(av_name));
+ }
+ }
+}
+
+std::string FSFloaterContacts::getFullName(const LLAvatarName& av_name)
+{
+ if (av_name.isDisplayNameDefault())
+ {
+ return av_name.getDisplayName();
+ }
+
+ if (gSavedSettings.getS32("FSFriendListFullNameFormat"))
+ {
+ // Display name (Username)
+ return llformat("%s (%s)", av_name.getDisplayName().c_str(), av_name.getUserNameForDisplay().c_str());
+ }
+ else
+ {
+ // Username (Display name)
+ return llformat("%s (%s)", av_name.getUserNameForDisplay().c_str(), av_name.getDisplayName().c_str());
+ }
+}
// EOF
diff --git a/indra/newview/fsfloatercontacts.h b/indra/newview/fsfloatercontacts.h
index 964e5e1fc1..764e585a32 100644
--- a/indra/newview/fsfloatercontacts.h
+++ b/indra/newview/fsfloatercontacts.h
@@ -117,7 +117,8 @@ private:
// misc callbacks
static void onAvatarPicked(const uuid_vec_t& ids, const std::vector names);
void onColumnDisplayModeChanged(const std::string& settings_name = "");
-
+ void onFullNameFormatChanged();
+
// friend buttons
void onViewProfileButtonClicked();
void onImButtonClicked();
@@ -154,6 +155,8 @@ private:
void updateRlvRestrictions(ERlvBehaviour behavior);
boost::signals2::connection mRlvBehaviorCallbackConnection;
+
+ std::string getFullName(const LLAvatarName& av_name);
};
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_firestorm.xml b/indra/newview/skins/default/xui/de/panel_preferences_firestorm.xml
index 5bb46614c9..3c2741d340 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_firestorm.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_firestorm.xml
@@ -16,19 +16,30 @@
-
- Sichtbare Namensspalten in Kontaktliste:
+
+ Einstellungen für Kontaktliste:
+
+
+ Sichtbare Namensspalten:
-
- Kontaktliste sortieren nach:
+
+ Sortieren nach:
+
+ Format vollständiger Name:
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml b/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml
index 1c39f5a771..8162d60dd1 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml
@@ -126,12 +126,22 @@
follows="left|top"
height="16"
width="300"
+ name="textFriendlistOptions">
+ Contact list options:
+
+
- Visible name columns in contact list:
+ Visible name columns:
- Sort contact list by:
+ width="60">
+ Sort list by:
+
+ Show full name as:
+
+
+
+
+