diff options
| author | Aimee Linden <aimee@lindenlab.com> | 2010-09-03 17:41:39 +0100 | 
|---|---|---|
| committer | Aimee Linden <aimee@lindenlab.com> | 2010-09-03 17:41:39 +0100 | 
| commit | ffae589843c2977ae7f70de78d84c936e2a91291 (patch) | |
| tree | 497660a88fe55382639dea1b2f3499241127470d /indra/llcommon | |
| parent | 63f2ddf377fa0fc6a666cdc1001289335d86258b (diff) | |
| parent | 25c29d59cf658acec5901c6f06775add10cf0bfd (diff) | |
Post-convert merge by convert_monolith.py from /Users/Aimee/Documents/Work/Linden-Lab/Development/viewer/convert/viewer-identity-evolution
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/llcommon/llavatarname.cpp | 119 | ||||
| -rw-r--r-- | indra/llcommon/llavatarname.h | 101 | ||||
| -rw-r--r-- | indra/llcommon/llchat.h | 3 | ||||
| -rw-r--r-- | indra/llcommon/llstring.cpp | 11 | 
5 files changed, 230 insertions, 6 deletions
| diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 2a036df06e..77740fb8bf 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -33,6 +33,7 @@ set(llcommon_SOURCE_FILES      llapp.cpp      llapr.cpp      llassettype.cpp +    llavatarname.cpp      llbase32.cpp      llbase64.cpp      llcommon.cpp @@ -115,6 +116,7 @@ set(llcommon_HEADER_FILES      llallocator.h      llallocator_heap_profile.h      llagentconstants.h +    llavatarname.h      llapp.h      llapr.h      llassettype.h diff --git a/indra/llcommon/llavatarname.cpp b/indra/llcommon/llavatarname.cpp new file mode 100644 index 0000000000..14dc41591b --- /dev/null +++ b/indra/llcommon/llavatarname.cpp @@ -0,0 +1,119 @@ +/**  + * @file llavatarname.cpp + * @brief Represents name-related data for an avatar, such as the + * username/SLID ("bobsmith123" or "james.linden") and the display + * name ("James Cook") + * + * $LicenseInfo:firstyear=2010&license=viewergpl$ + *  + * Copyright (c) 2010, Linden Research, Inc. + *  + * 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://secondlifegrid.net/programs/open_source/licensing/gplv2 + *  + * 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://secondlifegrid.net/programs/open_source/licensing/flossexception + *  + * 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. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#include "linden_common.h" + +#include "llavatarname.h" + +#include "lldate.h" +#include "llsd.h" + +// Store these in pre-built std::strings to avoid memory allocations in +// LLSD map lookups +static const std::string USERNAME("username"); +static const std::string DISPLAY_NAME("display_name"); +static const std::string LEGACY_FIRST_NAME("legacy_first_name"); +static const std::string LEGACY_LAST_NAME("legacy_last_name"); +static const std::string IS_DISPLAY_NAME_DEFAULT("is_display_name_default"); +static const std::string DISPLAY_NAME_EXPIRES("display_name_expires"); +static const std::string DISPLAY_NAME_NEXT_UPDATE("display_name_next_update"); + +LLAvatarName::LLAvatarName() +:	mUsername(), +	mDisplayName(), +	mLegacyFirstName(), +	mLegacyLastName(), +	mIsDisplayNameDefault(false), +	mIsDummy(false), +	mExpires(F64_MAX), +	mNextUpdate(0.0) +{ } + +bool LLAvatarName::operator<(const LLAvatarName& rhs) const +{ +	if (mUsername == rhs.mUsername) +		return mDisplayName < rhs.mDisplayName; +	else +		return mUsername < rhs.mUsername; +} + +LLSD LLAvatarName::asLLSD() const +{ +	LLSD sd; +	sd[USERNAME] = mUsername; +	sd[DISPLAY_NAME] = mDisplayName; +	sd[LEGACY_FIRST_NAME] = mLegacyFirstName; +	sd[LEGACY_LAST_NAME] = mLegacyLastName; +	sd[IS_DISPLAY_NAME_DEFAULT] = mIsDisplayNameDefault; +	sd[DISPLAY_NAME_EXPIRES] = LLDate(mExpires); +	sd[DISPLAY_NAME_NEXT_UPDATE] = LLDate(mNextUpdate); +	return sd; +} + +void LLAvatarName::fromLLSD(const LLSD& sd) +{ +	mUsername = sd[USERNAME].asString(); +	mDisplayName = sd[DISPLAY_NAME].asString(); +	mLegacyFirstName = sd[LEGACY_FIRST_NAME].asString(); +	mLegacyLastName = sd[LEGACY_LAST_NAME].asString(); +	mIsDisplayNameDefault = sd[IS_DISPLAY_NAME_DEFAULT].asBoolean(); +	LLDate expires = sd[DISPLAY_NAME_EXPIRES]; +	mExpires = expires.secondsSinceEpoch(); +	LLDate next_update = sd[DISPLAY_NAME_NEXT_UPDATE]; +	mNextUpdate = next_update.secondsSinceEpoch(); +} + +std::string LLAvatarName::getCompleteName() const +{ +	std::string name; +	if (!mUsername.empty()) +	{ +		name = mDisplayName + " (" + mUsername + ")"; +	} +	else +	{ +		// ...display names are off, legacy name is in mDisplayName +		name = mDisplayName; +	} +	return name; +} + +std::string LLAvatarName::getLegacyName() const +{ +	std::string name; +	name.reserve( mLegacyFirstName.size() + 1 + mLegacyLastName.size() ); +	name = mLegacyFirstName; +	name += " "; +	name += mLegacyLastName; +	return name; +} diff --git a/indra/llcommon/llavatarname.h b/indra/llcommon/llavatarname.h new file mode 100644 index 0000000000..650a09a125 --- /dev/null +++ b/indra/llcommon/llavatarname.h @@ -0,0 +1,101 @@ +/**  + * @file llavatarname.h + * @brief Represents name-related data for an avatar, such as the + * username/SLID ("bobsmith123" or "james.linden") and the display + * name ("James Cook") + * + * $LicenseInfo:firstyear=2010&license=viewergpl$ + *  + * Copyright (c) 2010, Linden Research, Inc. + *  + * 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://secondlifegrid.net/programs/open_source/licensing/gplv2 + *  + * 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://secondlifegrid.net/programs/open_source/licensing/flossexception + *  + * 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. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#ifndef LLAVATARNAME_H +#define LLAVATARNAME_H + +#include <string> + +class LLSD; + +class LL_COMMON_API LLAvatarName +{ +public: +	LLAvatarName(); +	 +	bool operator<(const LLAvatarName& rhs) const; + +	LLSD asLLSD() const; + +	void fromLLSD(const LLSD& sd); + +	// For normal names, returns "James Linden (james.linden)" +	// When display names are disabled returns just "James Linden" +	std::string getCompleteName() const; + +	// Returns "James Linden" or "bobsmith123 Resident" for backwards +	// compatibility with systems like voice and muting +	// *TODO: Eliminate this in favor of username only +	std::string getLegacyName() const; + +	// "bobsmith123" or "james.linden", US-ASCII only +	std::string mUsername; + +	// "Jose' Sanchez" or "James Linden", UTF-8 encoded Unicode +	// Contains data whether or not user has explicitly set +	// a display name; may duplicate their username. +	std::string mDisplayName; + +	// For "James Linden", "James" +	// For "bobsmith123", "bobsmith123" +	// Used to communicate with legacy systems like voice and muting which +	// rely on old-style names. +	// *TODO: Eliminate this in favor of username only +	std::string mLegacyFirstName; + +	// For "James Linden", "Linden" +	// For "bobsmith123", "Resident" +	// see above for rationale +	std::string mLegacyLastName; + +	// If true, both display name and SLID were generated from +	// a legacy first and last name, like "James Linden (james.linden)" +	bool mIsDisplayNameDefault; + +	// Under error conditions, we may insert "dummy" records with +	// names like "???" into caches as placeholders.  These can be +	// shown in UI, but are not serialized. +	bool mIsDummy; + +	// Names can change, so need to keep track of when name was +	// last checked. +	// Unix time-from-epoch seconds for efficiency +	F64 mExpires; +	 +	// You can only change your name every N hours, so record +	// when the next update is allowed +	// Unix time-from-epoch seconds +	F64 mNextUpdate; +}; + +#endif diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h index 52b85c7bba..87c2d6775b 100644 --- a/indra/llcommon/llchat.h +++ b/indra/llcommon/llchat.h @@ -28,7 +28,6 @@  #ifndef LL_LLCHAT_H  #define LL_LLCHAT_H -#include "llstring.h"  #include "lluuid.h"  #include "v3math.h" @@ -71,7 +70,7 @@ typedef enum e_chat_style  class LLChat  {  public: -	LLChat(const std::string& text = LLStringUtil::null) +	LLChat(const std::string& text = std::string())  	:	mText(text),  		mFromName(),  		mFromID(), diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index 33b55d843c..fe5d61763b 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -731,14 +731,17 @@ void LLStringOps::setupDatetimeInfo (bool daylight)  	nowT = time (NULL); -	tmpT = localtime (&nowT); -	localT = mktime (tmpT); -  	tmpT = gmtime (&nowT);  	gmtT = mktime (tmpT); +	tmpT = localtime (&nowT); +	localT = mktime (tmpT); +	  	sLocalTimeOffset = (long) (gmtT - localT); - +	if (tmpT->tm_isdst) +	{ +		sLocalTimeOffset -= 60 * 60;	// 1 hour +	}  	sPacificDaylightTime = daylight;  	sPacificTimeOffset = (sPacificDaylightTime? 7 : 8 ) * 60 * 60; | 
