diff options
Diffstat (limited to 'indra/newview/llstylemap.cpp')
-rw-r--r-- | indra/newview/llstylemap.cpp | 100 |
1 files changed, 54 insertions, 46 deletions
diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp index 09578a011a..43fe37ac77 100644 --- a/indra/newview/llstylemap.cpp +++ b/indra/newview/llstylemap.cpp @@ -2,74 +2,82 @@ * @file llstylemap.cpp * @brief LLStyleMap class implementation * - * $LicenseInfo:firstyear=2002&license=viewergpl$ - * - * Copyright (c) 2002-2007, Linden Research, Inc. - * + * $LicenseInfo:firstyear=2002&license=viewerlgpl$ * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlife.com/developers/opensource/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at http://secondlife.com/developers/opensource/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" #include "llstylemap.h" + #include "llstring.h" #include "llui.h" +#include "llslurl.h" #include "llviewercontrol.h" #include "llagent.h" -LLStyleMap::LLStyleMap() -{ -} - -LLStyleMap::~LLStyleMap() -{ -} - -LLStyleMap &LLStyleMap::instance() +const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source) { - static LLStyleMap mStyleMap; - return mStyleMap; + // Find this style in the map or add it if not. This map holds links to residents' profiles. + if (mMap.find(source) == mMap.end()) + { + LLStyle::Params style_params; + if (source != LLUUID::null) + { + style_params.color.control = "HTMLLinkColor"; + style_params.readonly_color.control = "HTMLLinkColor"; + style_params.link_href = LLSLURL("agent", source, "inspect").getSLURLString(); + } + mMap[source] = style_params; + } + return mMap[source]; } -// This is similar to the [] accessor except that if the entry doesn't already exist, -// then this will create the entry. -const LLStyleSP &LLStyleMap::lookup(const LLUUID &source) +// This is similar to lookupAgent for any generic URL encoded style. +const LLStyle::Params &LLStyleMap::lookup(const LLUUID& id, const std::string& link) { - // Find this style in the map or add it if not. This map holds links to residents' profiles. - if (find(source) == end()) + // Find this style in the map or add it if not. + style_map_t::iterator iter = mMap.find(id); + if (iter == mMap.end()) { - LLStyleSP style(new LLStyle); - style->setVisible(true); - style->setFontName(LLString::null); - if (source != gAgent.getID() && source != LLUUID::null) + LLStyle::Params style_params; + + if (id != LLUUID::null && !link.empty()) { - style->setColor(gSavedSettings.getColor4("HTMLLinkColor")); - LLString link = llformat("secondlife:///app/agent/%s/about",source.asString().c_str()); - style->setLinkHREF(link); + style_params.color.control = "HTMLLinkColor"; + style_params.readonly_color.control = "HTMLLinkColor"; + style_params.link_href = link; } else - style->setColor(LLColor4::white); - (*this)[source] = style; + { + style_params.color = LLColor4::white; + style_params.readonly_color = LLColor4::white; + } + mMap[id] = style_params; + } + else + { + iter->second.link_href = link; } - return (*this)[source]; + + return mMap[id]; } + |