diff options
| author | Merov Linden <merov@lindenlab.com> | 2010-10-22 17:39:03 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2010-10-22 17:39:03 -0700 | 
| commit | a0714f01804a2a2220bd72c3adf06f097ad21b73 (patch) | |
| tree | db304a8eca349020b48ae927fd8a534264a6ed83 /indra/llcommon | |
| parent | e3ecffc180ae50a0e8b726a061ec39cbe591326e (diff) | |
| parent | de6f7e19c44d267d3224c56941c2ab27677c406f (diff) | |
Merge with viewer-development
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/CMakeLists.txt | 13 | ||||
| -rw-r--r-- | indra/llcommon/llavatarname.cpp | 113 | ||||
| -rw-r--r-- | indra/llcommon/llavatarname.h | 95 | ||||
| -rw-r--r-- | indra/llcommon/llchat.h | 3 | ||||
| -rw-r--r-- | indra/llcommon/lldarray.h | 2 | ||||
| -rw-r--r-- | indra/llcommon/llstring.cpp | 11 | ||||
| -rw-r--r-- | indra/llcommon/llversionviewer.h | 8 | ||||
| -rw-r--r-- | indra/llcommon/roles_constants.h | 3 | 
8 files changed, 236 insertions, 12 deletions
| diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 0dfc540f54..a6f07f9600 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 @@ -116,6 +117,7 @@ set(llcommon_HEADER_FILES      llallocator.h      llallocator_heap_profile.h      llagentconstants.h +    llavatarname.h      llapp.h      llapr.h      llassettype.h @@ -254,8 +256,15 @@ set_source_files_properties(${llcommon_HEADER_FILES}  list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})  if(LLCOMMON_LINK_SHARED) -    add_library (llcommon SHARED ${llcommon_SOURCE_FILES}) -    ll_stage_sharedlib(llcommon) +  add_library (llcommon SHARED ${llcommon_SOURCE_FILES}) +  if(NOT WORD_SIZE EQUAL 32) +    if(WINDOWS) +      add_definitions(/FIXED:NO) +    else(WINDOWS) # not windows therefore gcc LINUX and DARWIN +      add_definitions(-fPIC) +    endif(WINDOWS) +  endif(NOT WORD_SIZE EQUAL 32) +  ll_stage_sharedlib(llcommon)  else(LLCOMMON_LINK_SHARED)      add_library (llcommon ${llcommon_SOURCE_FILES})  endif(LLCOMMON_LINK_SHARED) diff --git a/indra/llcommon/llavatarname.cpp b/indra/llcommon/llavatarname.cpp new file mode 100644 index 0000000000..b1ec9e9875 --- /dev/null +++ b/indra/llcommon/llavatarname.cpp @@ -0,0 +1,113 @@ +/**  + * @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=viewerlgpl$ + * Second Life Viewer Source Code + * 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. + *  + * 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. + *  + * 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 + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/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..145aeccd35 --- /dev/null +++ b/indra/llcommon/llavatarname.h @@ -0,0 +1,95 @@ +/**  + * @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=viewerlgpl$ + * Second Life Viewer Source Code + * 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. + *  + * 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. + *  + * 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 + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/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/lldarray.h b/indra/llcommon/lldarray.h index a8cd03b42a..131b819c99 100644 --- a/indra/llcommon/lldarray.h +++ b/indra/llcommon/lldarray.h @@ -51,7 +51,7 @@ public:  	LLDynamicArray(S32 size=0) : std::vector<Type>(size) { if (size < BlockSize) std::vector<Type>::reserve(BlockSize); } -	void reset() { std::vector<Type>::resize(0); } +	void reset() { std::vector<Type>::clear(); }  	// ACCESSORS  	const Type& get(S32 index) const	 			{ return std::vector<Type>::operator[](index); } diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index ae7e624a1a..f3b48b0156 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; diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index bd65ce8573..b209e4aa38 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -28,10 +28,14 @@  #define LL_LLVERSIONVIEWER_H  const S32 LL_VERSION_MAJOR = 2; -const S32 LL_VERSION_MINOR = 2; -const S32 LL_VERSION_PATCH = 1; +const S32 LL_VERSION_MINOR = 4; +const S32 LL_VERSION_PATCH = 0;  const S32 LL_VERSION_BUILD = 0;  const char * const LL_CHANNEL = "Second Life Developer"; +#if LL_DARWIN +const char * const LL_VERSION_BUNDLE_ID = "com.secondlife.snowglobe.viewer"; +#endif +  #endif diff --git a/indra/llcommon/roles_constants.h b/indra/llcommon/roles_constants.h index 70bca821c7..effd15ea72 100644 --- a/indra/llcommon/roles_constants.h +++ b/indra/llcommon/roles_constants.h @@ -52,7 +52,6 @@ enum LLRoleChangeType  //  // KNOWN HOLES: use these for any single bit powers you need -// bit 0x1 << 41  // bit 0x1 << 46  // bit 0x1 << 49 and above @@ -103,6 +102,8 @@ const U64 GP_LAND_ALLOW_FLY		= 0x1 << 24;	// Bypass Fly Restriction  const U64 GP_LAND_ALLOW_CREATE	= 0x1 << 25;	// Bypass Create/Edit Objects Restriction  const U64 GP_LAND_ALLOW_LANDMARK	= 0x1 << 26;	// Bypass Landmark Restriction  const U64 GP_LAND_ALLOW_SET_HOME	= 0x1 << 28;	// Bypass Set Home Point Restriction +const U64 GP_LAND_ALLOW_HOLD_EVENT	= 0x1LL << 41;	// Allowed to hold events on group-owned land +  // Parcel Access  const U64 GP_LAND_MANAGE_ALLOWED	= 0x1 << 29;	// Manage Allowed List | 
