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 + + Comment + Defines the order of how the full name in the contacts list is shown (0 = username (display name), 1 = display name (username)) + Persist + 1 + Type + S32 + Value + 1 + 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: + + + + +