From 689e3f7a4d417b7a3e94508df4e818a160e992a4 Mon Sep 17 00:00:00 2001 From: Wolfspirit Date: Mon, 22 Aug 2011 19:10:02 +0200 Subject: [PATCH] Rework of the Tagsystem. - Moved the Tagsystem to FSData for better integration. So other Modules can call it too. - Added the Tagdata as LLSD (TPVD, Name, UUID) to llvoavatar (mClientTagData) - Added the ability to display TPVD Viewers only. - Added the Settings to Preferences -> Firestorm -> Tags - Removed ShowViewerIDsOnNameTag cause it's replaced with "FSClientTagsVisibility">0 - Changed the Debug Settings from S32 to U32 --- indra/newview/app_settings/settings.xml | 29 ++- indra/newview/fsdata.cpp | 141 ++++++++++++- indra/newview/fsdata.h | 4 + indra/newview/llvoavatar.cpp | 188 +++--------------- indra/newview/llvoavatar.h | 4 +- indra/newview/panel_prefs_firestorm.cpp | 56 ++++++ indra/newview/panel_prefs_firestorm.h | 8 + .../xui/en/panel_preferences_firestorm.xml | 103 ++++++++++ .../xui/en/panel_preferences_general.xml | 9 - 9 files changed, 351 insertions(+), 191 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2f051b29f3..7d495ceae5 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -42,18 +42,29 @@ Persist 1 Type - S32 + U32 Value 2 FSColorClienttags Comment - If Clienttags should be colored + Color Clienttags by: 0=Off, 1=Single color per Viewer, 2=Userdefinied color (one color per UUID), 3=New Tagsystem Color Persist 1 Type - Boolean + U32 + Value + 2 + + FSClientTagsVisibility + + Comment + Show clienttags: 0=Clienttags Off, 1=That are on the TPVD (needs FSUseLegacyClienttags), 2=That are on the client_tag.xml (needs FSUseLegacyClienttags), 3=That using the new system + Persist + 1 + Type + U32 Value 1 @@ -331,18 +342,6 @@ Value 0 - - ShowViewerIDsOnNameTag - - Comment - Show viewer identification when display hovertext names over avatars - Persist - 1 - Type - Boolean - Value - 1 - PhoenixEnableAutoCorrect Comment diff --git a/indra/newview/fsdata.cpp b/indra/newview/fsdata.cpp index b30d2c4d12..093ec06d2b 100644 --- a/indra/newview/fsdata.cpp +++ b/indra/newview/fsdata.cpp @@ -359,7 +359,7 @@ void FSData::processAgents(U32 status, std::string body) void FSData::downloadClientTags() { - if(gSavedSettings.getS32("FSUseLegacyClienttags")>1) + if(gSavedSettings.getU32("FSUseLegacyClienttags")>1) { LLSD headers; headers.insert("User-Agent", LLViewerMedia::getCurrentUserAgent()); @@ -367,7 +367,7 @@ void FSData::downloadClientTags() LLHTTPClient::get(legacy_client_list,new FSDownloader(legacy_client_list),headers); LL_INFOS("CLIENTTAGS DOWNLOADER") << "Getting new tags" << LL_ENDL; } - else if(gSavedSettings.getS32("FSUseLegacyClienttags")>0) + else if(gSavedSettings.getU32("FSUseLegacyClienttags")>0) { updateClientTagsLocal(); } @@ -377,7 +377,6 @@ void FSData::downloadClientTags() void FSData::processClientTags(U32 status,std::string body) { - if(status != 200) { LL_WARNS("ClientTags") << "client_list_v2.xml download failed with status of " << status << LL_ENDL; @@ -408,6 +407,142 @@ void FSData::processClientTags(U32 status,std::string body) } +LLSD FSData::resolveClientTag(LLUUID id){ + //WS: Some helper function to make the request for old tags easier (if someone needs it) + return resolveClientTag(id, false, LLColor4::black); +} + +LLSD FSData::resolveClientTag(LLUUID id, bool new_system, LLColor4 color){ + //WS: Create a new LLSD based on the data from the LegacyClientList if + LLSD curtag; + curtag["uuid"]=id.asString(); + curtag["id_based"]=new_system; + curtag["tex_color"]=color.getValue(); + // If we don't want to display anything...return + if(gSavedSettings.getU32("FSClientTagsVisibility")==0) return curtag; + + FSData* self = getInstance(); + //WS: Do we want to use Legacy Clienttags? + if(gSavedSettings.getU32("FSUseLegacyClienttags")>0){ + if(self->LegacyClientList.has(id.asString())){ + curtag=self->LegacyClientList[id.asString()]; + } + else{ + if(id == LLUUID("5d9581af-d615-bc16-2667-2f04f8eeefe4"))//green + { + curtag["name"]="Phoenix"; + curtag["color"] = LLColor4::green.getValue(); + curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b"; + } + else if(id == LLUUID("91144252-196e-bac9-3737-92752eee612d"))//white + { + curtag["name"] = "Canine (fallback)"; + curtag["color"] = LLColor4::white.getValue(); + } + else if(id == LLUUID("e35f7d40-6071-4b29-9727-5647bdafb5d5"))//white + { + curtag["name"] = "Phoenix"; + curtag["color"] = LLColor4::white.getValue(); + curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b"; + } + else if(id == LLUUID("ae4e92fb-023d-23ba-d060-3403f953ab1a"))//pink + { + curtag["name"] = "Phoenix"; + curtag["color"] = LLColor4::pink.getValue(); + curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b"; + } + else if(id == LLUUID("e71b780e-1a57-400d-4649-959f69ec7d51"))//red + { + curtag["name"] = "Phoenix"; + curtag["color"] = LLColor4::red.getValue(); + curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b"; + } + else if(id == LLUUID("c1c189f5-6dab-fc03-ea5a-f9f68f90b018"))//orange + { + curtag["name"] = "Phoenix"; + curtag["color"] = LLColor4::orange.getValue(); + curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b"; + } + else if(id == LLUUID("8cf0577c-22d3-6a73-523c-15c0a90d6c27")) //purple + { + curtag["name"] = "Phoenix"; + curtag["color"] = LLColor4::purple.getValue(); + curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b"; + } + else if(id == LLUUID("5f0e7c32-38c3-9214-01f0-fb16a5b40128"))//yellow + { + curtag["name"] = "Phoenix"; + curtag["color"] = LLColor4::yellow.getValue(); + curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b"; + } + else if(id == LLUUID("5bb6e4a6-8e24-7c92-be2e-91419bb0ebcb"))//blue + { + curtag["name"] = "Phoenix"; + curtag["color"] = LLColor4::blue.getValue(); + curtag["alt"] = "ed63fbd0-589e-fe1d-a3d0-16905efaa96b"; + } + else if(id == LLUUID("ed63fbd0-589e-fe1d-a3d0-16905efaa96b"))//default (red) + { + curtag["name"] = "Phoenix"; + curtag["color"] = LLColor4::red.getValue(); + } + else if(id == LLUUID("c228d1cf-4b5d-4ba8-84f4-899a0796aa97"))//viewer 2.0 + { + curtag["name"] = "Viewer 2"; + } + else if(id == LLUUID("cc7a030f-282f-c165-44d2-b5ee572e72bf")) + { + curtag["name"] = "Imprudence"; + } + else if(id == LLUUID("54d93609-1392-2a93-255c-a9dd429ecca5")) + { + curtag["name"] = "Emergence"; + } + else if(id == LLUUID("8873757c-092a-98fb-1afd-ecd347566fcd")) + { + curtag["name"] = "Ascent"; + } + else if(id == LLUUID("f25263b7-6167-4f34-a4ef-af65213b2e39")) + { + curtag["name"] = "Singularity"; + } + if(curtag.has("name")) curtag["tpvd"]=true; + } + } + + + // Filtering starts here: + //WS: If the current tag has an "alt" definied and we don't want multiple colors. Resolve the alt. + if((gSavedSettings.getU32("FSColorClienttags")==1) && curtag.has("alt")) curtag = resolveClientTag(curtag["alt"], new_system, color); + + //WS: If we have a tag using the new system, check if we want to display it's name and/or color + if(new_system){ + if(gSavedSettings.getU32("FSClientTagsVisibility")>=3){ + U32 tag_len = strnlen((const char*)&id.mData[0], UUID_BYTES); + std::string clienttagname = std::string((const char*)&id.mData[0], tag_len); + LLStringFn::replace_ascii_controlchars(clienttagname, LL_UNKNOWN_CHAR); + curtag["name"] = clienttagname; + } + if(gSavedSettings.getU32("FSColorClienttags")>=3){ + curtag["color"] = color.getValue(); + } + } + + //If we only want to display tpvd viewer. And "tpvd" is not available or false, then + // clear the data, but keep the basedata (like uuid, id_based and tex_color) for (maybe) later displaying. + if(gSavedSettings.getU32("FSClientTagsVisibility")<=1 && (!curtag.has("tpvd") || !curtag["tpvd"].asBoolean())){ + curtag.clear(); + } + curtag["uuid"]=id.asString(); + curtag["id_based"]=new_system; + curtag["tex_color"]=color.getValue(); + + return curtag; +} + + + + void FSData::updateClientTagsLocal() { std::string client_list_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "client_list_v2.xml"); diff --git a/indra/newview/fsdata.h b/indra/newview/fsdata.h index c3f4b11b2b..f1882df4fc 100644 --- a/indra/newview/fsdata.h +++ b/indra/newview/fsdata.h @@ -57,7 +57,11 @@ public: static void processClientTags(U32 status, std::string body); static void msdata(U32 status, std::string body); static void msblacklist(U32 status, std::string body); + static void updateClientTagsLocal(); + static LLSD resolveClientTag(LLUUID id); + static LLSD resolveClientTag(LLUUID id, bool new_system, LLColor4 new_system_color); + static const U8 EM_SUPPORT = 0x01; static const U8 EM_DEVELOPER = 0x02; static const U8 PH_BETA = 0x01; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index d8075654e6..8df895f749 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2948,16 +2948,22 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) || is_cloud != mNameCloud) { - + //WS: If we got a uuid and if we know if it's id_based or not, ask FSDATA for the other tagdata, before we display it. + if(mClientTagData.has("uuid") && mClientTagData.has("id_based")){ + LLColor4 color; + if(mClientTagData.has("tex_color")) color.setValue(mClientTagData["tex_color"]); + else color = LLColor4::black; + mClientTagData = FSData::resolveClientTag(LLUUID(mClientTagData["uuid"].asString()), mClientTagData["id_based"].asBoolean(),color); + } + LLColor4 name_tag_color = getNameTagColor(is_friend); // Wolfspirit: If we don't need to display a friend, // if we aren't self, if we use colored Clienttags and if we have a color // then use that color as name_tag_color static LLUICachedControl show_friends("NameTagShowFriends"); - static LLUICachedControl use_colors("FSColorClienttags"); - if(mHasClientTagColor && !(show_friends && is_friend) && use_colors && !this->isSelf()){ - name_tag_color = mClientTagColor; + if(mClientTagData.has("color") && !(show_friends && is_friend) && gSavedSettings.getU32("FSColorClienttags")>0 && !this->isSelf()){ + name_tag_color = mClientTagData["color"]; } @@ -3032,9 +3038,9 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) if (show_display_names) { - if (!mClientTag.empty() && gSavedSettings.getBOOL("ShowViewerIDsOnNameTag")) + if (mClientTagData.has("name") && !mClientTagData["name"].asString().empty()) { - addNameTagLine(av_name.mDisplayName+" (" + mClientTag + ")",name_tag_color,LLFontGL::NORMAL, LLFontGL::getFontSansSerif()); + addNameTagLine(av_name.mDisplayName+" (" + mClientTagData["name"].asString() + ")",name_tag_color,LLFontGL::NORMAL, LLFontGL::getFontSansSerif()); } else { @@ -3080,10 +3086,10 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) // [/RLVa:KB] else // Only check for client tags when not RLV anon -AO { - if (!mClientTag.empty() && gSavedSettings.getBOOL("ShowViewerIDsOnNameTag")) + if (mClientTagData.has("name") && !mClientTagData["name"].asString().empty()) { - lldebugs << "ClientTag is set! mClientTag=" << mClientTag << llendl; - addNameTagLine(full_name+" (" + mClientTag + ")",name_tag_color,LLFontGL::NORMAL, LLFontGL::getFontSansSerif()); + lldebugs << "ClientTag is set! mClientTag=" << mClientTagData["name"].asString() << llendl; + addNameTagLine(full_name+" (" + mClientTagData["name"].asString() + ")",name_tag_color,LLFontGL::NORMAL, LLFontGL::getFontSansSerif()); } else { @@ -6984,133 +6990,7 @@ bool LLVOAvatar::visualParamWeightsAreDefault() return rtn; } -void LLVOAvatar::resolveClient(const LLUUID tag) -// looks at a UUID and tries to match it to a known client. -// hard coded list to be quick and dirty. TODO: Replace with the usual XML file. -// TODO: turn this into an enumeration-backed switch statement. -{ - // Wolfspirit: The clienttag list is loaded into FSData::LegacyClientList - LLSD taglist = FSData::getInstance()->LegacyClientList; - mHasClientTagColor = false; - // Wolfspirit: If the Taglist is complete and the taglist contains our requested key, then set the ClientName and ClientColor - // else try to use our fallback alternatives. - if(taglist.has("isComplete") && taglist.has(tag.asString())){ - LLSD tagdata = taglist[tag.asString()]; - mClientTag = tagdata["name"].asString(); - mClientTagColor.setValue(tagdata["color"]); - mHasClientTagColor = true; - } - else if(tag == LLUUID("5d9581af-d615-bc16-2667-2f04f8eeefe4"))//green - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::green; - mHasClientTagColor =true; - } - else if(tag == LLUUID("e35f7d40-6071-4b29-9727-5647bdafb5d5"))//white - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::white; - mHasClientTagColor =true; - } - else if(tag == LLUUID("ae4e92fb-023d-23ba-d060-3403f953ab1a"))//pink - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::pink; - mHasClientTagColor =true; - } - else if(tag == LLUUID("e71b780e-1a57-400d-4649-959f69ec7d51"))//red - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::red; - mHasClientTagColor =true; - } - else if(tag == LLUUID("c1c189f5-6dab-fc03-ea5a-f9f68f90b018"))//orange - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::orange; - mHasClientTagColor =true; - } - else if(tag == LLUUID("8cf0577c-22d3-6a73-523c-15c0a90d6c27")) //purple - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::purple; - mHasClientTagColor =true; - } - else if(tag == LLUUID("5f0e7c32-38c3-9214-01f0-fb16a5b40128"))//yellow - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::yellow; - mHasClientTagColor =true; - } - else if(tag == LLUUID("5bb6e4a6-8e24-7c92-be2e-91419bb0ebcb"))//blue - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::blue; - mHasClientTagColor =true; - } - else if(tag == LLUUID("ed63fbd0-589e-fe1d-a3d0-16905efaa96b"))//default (red) - { - mClientTag = "Phoenix"; - mClientTagColor = LLColor4::red; - mHasClientTagColor =true; - } - - else if(tag == LLUUID("c228d1cf-4b5d-4ba8-84f4-899a0796aa97"))//viewer 2.0 - { - mClientTag = "Viewer 2"; - } - - else if(tag == LLUUID("0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8")) - { - mClientTag = "MoyMix"; - } - else if(tag == LLUUID("c58fca06-33b3-827d-d81c-a886a631affc")) - { - mClientTag = "Whale"; - } - else if(tag == LLUUID("cc7a030f-282f-c165-44d2-b5ee572e72bf")) - { - mClientTag = "Imprudence"; - } - else if(tag == LLUUID("2a9a406c-f448-68f2-4e38-878f8c46c190")) - { - mClientTag = "Meerkat"; - } - else if(tag == LLUUID("b6820989-bf42-ff59-ddde-fd3fd3a74fe4")) - { - mClientTag = "Meerkat"; - } - else if(tag == LLUUID("5aa5c70d-d787-571b-0495-4fc1bdef1500")) - { - mClientTag = "PAR"; // used to be LGG Proxy, more correct - } - else if(tag == LLUUID("54d93609-1392-2a93-255c-a9dd429ecca5")) - { - mClientTag = "Emergence"; - } - else if(tag == LLUUID("8873757c-092a-98fb-1afd-ecd347566fcd")) - { - mClientTag = "Ascent"; - } - else if(tag == LLUUID("734fed29-4c51-63e5-1648-6589949d7585")) - { - mClientTag = "Explicit"; - } - else if(tag == LLUUID("b33b69ae-6b6c-b395-0175-ce76a871173b")) - { - mClientTag = "Nicholas"; - } - else if(tag == LLUUID("f25263b7-6167-4f34-a4ef-af65213b2e39")) - { - mClientTag = "Singularity"; - } - - // Nothing found - - else - mClientTag = ""; -} //----------------------------------------------------------------------------- @@ -7149,38 +7029,24 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) // dumpAvatarTEs( "POST processAvatarAppearance()" ); // + //Wolfspirit: Read the UUID, system and Texturecolor LLTextureEntry* tex = getTE(0); const LLUUID tag_uuid = tex->getID(); + bool new_system=false; + if(tex->getGlow() > 0.0f){ + new_system=true; + } - // Wolfspirit: Only resolve the Client via a list, when we want it to do that. - if(gSavedSettings.getS32("FSUseLegacyClienttags")>0) resolveClient(tag_uuid); // sets mClientTag - - // Wolfspirit: Don't use old Version if we have a texture glow more then 0.0f (we are using the new System) - if (mClientTag != "" && !(tex->getGlow() > 0.0f)) - { - //llinfos << "LLVOAvatar::processAvatarAppearance() Detected ClientTag=" << mClientTag << llendl; - mNameString.clear(); - } - else if(tex->getGlow() > 0.0f) - { - // Wolfspirit: New Clienttag Version. Set Color and Text based on the Texture. - U32 tag_len = strnlen((const char*)&tag_uuid.mData[0], UUID_BYTES); - mClientTag = std::string((const char*)&tag_uuid.mData[0], tag_len); - mClientTagColor = tex->getColor(); - mHasClientTagColor=true; - LLStringFn::replace_ascii_controlchars(mClientTag, LL_UNKNOWN_CHAR); - //llinfos << "LLVOAvatar::processAvatarAppearance() Detected ClientTag=" << mClientTag << llendl; - mNameString.clear(); - } - else - { - mNameString.clear(); - mHasClientTagColor=false; - } + //WS: Write them into an LLSD map + mClientTagData["uuid"]=tag_uuid.asString(); + mClientTagData["id_based"]=new_system; + mClientTagData["tex_color"]=tex->getColor().getValue(); + + //WS: Clear mNameString to force a rebuild + mNameString.clear(); // - // prevent the overwriting of valid baked textures with invalid baked textures for (U8 baked_index = 0; baked_index < mBakedTextureDatas.size(); baked_index++) { diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index b1ccbfe44a..c7af7e5b55 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -847,10 +847,8 @@ protected: static void getAnimLabels(LLDynamicArray* labels); static void getAnimNames(LLDynamicArray* names); private: - void resolveClient(const LLUUID tag); std::string mNameString; // UTF-8 title + name + status - std::string mClientTag; - LLColor4 mClientTagColor; + LLSD mClientTagData; bool mHasClientTagColor; std::string mTitle; bool mNameAway; diff --git a/indra/newview/panel_prefs_firestorm.cpp b/indra/newview/panel_prefs_firestorm.cpp index 7eeec6fe08..10f2f3e583 100644 --- a/indra/newview/panel_prefs_firestorm.cpp +++ b/indra/newview/panel_prefs_firestorm.cpp @@ -8,6 +8,7 @@ #include "lggbeammapfloater.h" #include "lggbeamcolormapfloater.h" #include "lggautocorrectfloater.h" +#include "llvoavatar.h" static LLRegisterPanelClassWrapper t_pref_fs("panel_preference_firestorm"); @@ -17,6 +18,7 @@ PanelPreferenceFirestorm::PanelPreferenceFirestorm() : LLPanelPreference(), m_ca BOOL PanelPreferenceFirestorm::postBuild() { + // LGG's Color Beams refreshBeamLists(); @@ -64,18 +66,33 @@ BOOL PanelPreferenceFirestorm::postBuild() { m_aoLineEditor->setEnabled(FALSE); } + + + //WS: Set the combo_box vars and refresh/reload them + m_UseLegacyClienttags = getChild("UseLegacyClienttags"); + m_ColorClienttags = getChild("ColorClienttags"); + m_ClientTagsVisibility = getChild("ClientTagsVisibility"); + refreshTagCombos(); + + return LLPanelPreference::postBuild(); } void PanelPreferenceFirestorm::apply() { + //WS: Apply the combo_boxes for tags + applyTagCombos(); + } void PanelPreferenceFirestorm::cancel() { + //WS: Refresh/Reload the Combo_boxes for tags to show the right setting. + refreshTagCombos(); } + void PanelPreferenceFirestorm::refreshBeamLists() { LLComboBox* comboBox = getChild("PhoenixBeamShape_combo"); @@ -168,4 +185,43 @@ void PanelPreferenceFirestorm::onBeamDelete() void PanelPreferenceFirestorm::onAutoCorrectSettings() { LGGAutoCorrectFloater::showFloater(); +} + + + +void PanelPreferenceFirestorm::refreshTagCombos() +{ + + //WS: Set the combo_boxes to the right value + U32 usel_u = gSavedSettings.getU32("FSUseLegacyClienttags"); + U32 tagv_u = gSavedSettings.getU32("FSClientTagsVisibility"); + U32 tagc_u = gSavedSettings.getU32("FSColorClienttags"); + + + std::string usel = llformat("%d",usel_u); + std::string tagv = llformat("%d",tagv_u); + std::string tagc = llformat("%d",tagc_u); + + m_UseLegacyClienttags->setCurrentByIndex(usel_u); + m_ColorClienttags->setCurrentByIndex(tagc_u); + m_ClientTagsVisibility->setCurrentByIndex(tagv_u); + +} + + +void PanelPreferenceFirestorm::applyTagCombos() +{ + //WS: If the user hits "apply" then write everything (if something changed) into the Debug Settings + + if(gSavedSettings.getU32("FSUseLegacyClienttags")!=m_UseLegacyClienttags->getCurrentIndex() + || gSavedSettings.getU32("FSColorClienttags")!=m_ColorClienttags->getCurrentIndex() + || gSavedSettings.getU32("FSClientTagsVisibility")!=m_ClientTagsVisibility->getCurrentIndex()){ + + gSavedSettings.setU32("FSUseLegacyClienttags",m_UseLegacyClienttags->getCurrentIndex()); + gSavedSettings.setU32("FSColorClienttags",m_ColorClienttags->getCurrentIndex()); + gSavedSettings.setU32("FSClientTagsVisibility",m_ClientTagsVisibility->getCurrentIndex()); + + //WS: Clear all nametags to make everything display properly! + LLVOAvatar::invalidateNameTags(); + } } \ No newline at end of file diff --git a/indra/newview/panel_prefs_firestorm.h b/indra/newview/panel_prefs_firestorm.h index 2ec030a87f..d4c41f8dff 100644 --- a/indra/newview/panel_prefs_firestorm.h +++ b/indra/newview/panel_prefs_firestorm.h @@ -21,6 +21,10 @@ public: void onAutoCorrectSettings(); + + void refreshTagCombos(); + void applyTagCombos(); + protected: LLLineEditor* m_calcLineEditor; LLLineEditor* m_acLineEditor; @@ -28,5 +32,9 @@ protected: LLLineEditor* m_clearchatLineEditor; LLLineEditor* m_musicLineEditor; LLLineEditor* m_aoLineEditor; + + LLComboBox* m_UseLegacyClienttags; + LLComboBox* m_ColorClienttags; + LLComboBox* m_ClientTagsVisibility; }; #endif \ No newline at end of file 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 0c6607e5f1..f669f5c7ff 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml @@ -1761,5 +1761,108 @@ control_name="FSSaveInventoryScriptsAsMono"/> + + + + + + + + + + + What tags do you want to see? + + + + No Viewertags + TPVD Viewers (using a list) + All known Viewers (using a list) + All Viewers + + + + Tag Color based on Viewer? + + + + Color not based on Viewer + Single color per Viewer + Multiple colors per Viewer + Userdefined Color + + + + Use a list to display Viewertags? + + + + Don't use a list + Local Tag List + Download Tag List at Viewer Start + + + + + + diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 8007a6d7ac..937f143474 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -313,15 +313,6 @@ function="FS.ToggleSortContacts" /> - -