summaryrefslogtreecommitdiff
path: root/indra/newview/llavatariconctrl.cpp
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2024-05-01 08:16:58 +0300
committerAndrey Lihatskiy <alihatskiy@productengine.com>2024-05-01 08:16:58 +0300
commit38c2a5bde985a6a8a96d912d432f8bdf7e5b60be (patch)
treeb3469444ea8dabe4e76a8a265ac086a9db78891c /indra/newview/llavatariconctrl.cpp
parent9bf2dfbb39032d7407295089cf181de0987083e5 (diff)
parente7eced3c87310b15ac20cc3cd470d67686104a14 (diff)
Merge branch 'marchcat/w-whitespace' into marchcat/x-ws-merge
Diffstat (limited to 'indra/newview/llavatariconctrl.cpp')
-rw-r--r--indra/newview/llavatariconctrl.cpp434
1 files changed, 217 insertions, 217 deletions
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
index 52bec5d434..28b6e6dbf6 100644
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -1,25 +1,25 @@
-/**
+/**
* @file llavatariconctrl.cpp
* @brief LLAvatarIconCtrl class implementation
*
* $LicenseInfo:firstyear=2009&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$
*/
@@ -51,137 +51,137 @@ static LLDefaultChildRegistry::Register<LLAvatarIconCtrl> r("avatar_icon");
namespace LLInitParam
{
- void TypeValues<LLAvatarIconCtrlEnums::ESymbolPos>::declareValues()
- {
- declare("BottomLeft", LLAvatarIconCtrlEnums::BOTTOM_LEFT);
- declare("BottomRight", LLAvatarIconCtrlEnums::BOTTOM_RIGHT);
- declare("TopLeft", LLAvatarIconCtrlEnums::TOP_LEFT);
- declare("TopRight", LLAvatarIconCtrlEnums::TOP_RIGHT);
- }
+ void TypeValues<LLAvatarIconCtrlEnums::ESymbolPos>::declareValues()
+ {
+ declare("BottomLeft", LLAvatarIconCtrlEnums::BOTTOM_LEFT);
+ declare("BottomRight", LLAvatarIconCtrlEnums::BOTTOM_RIGHT);
+ declare("TopLeft", LLAvatarIconCtrlEnums::TOP_LEFT);
+ declare("TopRight", LLAvatarIconCtrlEnums::TOP_RIGHT);
+ }
}
bool LLAvatarIconIDCache::LLAvatarIconIDCacheItem::expired()
{
- const F64 SEC_PER_DAY_PLUS_HOUR = (24.0 + 1.0) * 60.0 * 60.0;
- F64 delta = LLDate::now().secondsSinceEpoch() - cached_time.secondsSinceEpoch();
- if (delta > SEC_PER_DAY_PLUS_HOUR)
- return true;
- return false;
+ const F64 SEC_PER_DAY_PLUS_HOUR = (24.0 + 1.0) * 60.0 * 60.0;
+ F64 delta = LLDate::now().secondsSinceEpoch() - cached_time.secondsSinceEpoch();
+ if (delta > SEC_PER_DAY_PLUS_HOUR)
+ return true;
+ return false;
}
-void LLAvatarIconIDCache::load ()
+void LLAvatarIconIDCache::load ()
{
- LL_INFOS() << "Loading avatar icon id cache." << LL_ENDL;
-
- // build filename for each user
- std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, mFilename);
- llifstream file(resolved_filename.c_str());
-
- if (!file.is_open())
- return;
-
- // add each line in the file to the list
- int uuid_len = UUID_STR_LENGTH-1;
- std::string line;
- while (std::getline(file, line))
- {
- LLUUID avatar_id;
- LLUUID icon_id;
- LLDate date;
-
- if (line.length()<=uuid_len*2)
- continue; // short line, bail out to prevent substr calls throwing exception.
-
- std::string avatar_id_str = line.substr(0,uuid_len);
- std::string icon_id_str = line.substr(uuid_len,uuid_len);
-
- std::string date_str = line.substr(uuid_len*2, line.length()-uuid_len*2);
-
- if(!avatar_id.set(avatar_id_str) || !icon_id.set(icon_id_str) || !date.fromString(date_str))
- continue;
-
- LLAvatarIconIDCacheItem item = {icon_id,date};
- mCache[avatar_id] = item;
- }
-
- file.close();
-
+ LL_INFOS() << "Loading avatar icon id cache." << LL_ENDL;
+
+ // build filename for each user
+ std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, mFilename);
+ llifstream file(resolved_filename.c_str());
+
+ if (!file.is_open())
+ return;
+
+ // add each line in the file to the list
+ int uuid_len = UUID_STR_LENGTH-1;
+ std::string line;
+ while (std::getline(file, line))
+ {
+ LLUUID avatar_id;
+ LLUUID icon_id;
+ LLDate date;
+
+ if (line.length()<=uuid_len*2)
+ continue; // short line, bail out to prevent substr calls throwing exception.
+
+ std::string avatar_id_str = line.substr(0,uuid_len);
+ std::string icon_id_str = line.substr(uuid_len,uuid_len);
+
+ std::string date_str = line.substr(uuid_len*2, line.length()-uuid_len*2);
+
+ if(!avatar_id.set(avatar_id_str) || !icon_id.set(icon_id_str) || !date.fromString(date_str))
+ continue;
+
+ LLAvatarIconIDCacheItem item = {icon_id,date};
+ mCache[avatar_id] = item;
+ }
+
+ file.close();
+
}
-void LLAvatarIconIDCache::save ()
+void LLAvatarIconIDCache::save ()
{
- std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, mFilename);
-
- // open a file for writing
- llofstream file (resolved_filename.c_str());
- if (!file.is_open())
- {
- LL_WARNS() << "can't open avatar icons cache file\"" << mFilename << "\" for writing" << LL_ENDL;
- return;
- }
-
- for(std::map<LLUUID,LLAvatarIconIDCacheItem>::iterator it = mCache.begin();it!=mCache.end();++it)
- {
- if(!it->second.expired())
- {
- file << it->first << it->second.icon_id << it->second.cached_time << std::endl;
- }
- }
-
- file.close();
+ std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, mFilename);
+
+ // open a file for writing
+ llofstream file (resolved_filename.c_str());
+ if (!file.is_open())
+ {
+ LL_WARNS() << "can't open avatar icons cache file\"" << mFilename << "\" for writing" << LL_ENDL;
+ return;
+ }
+
+ for(std::map<LLUUID,LLAvatarIconIDCacheItem>::iterator it = mCache.begin();it!=mCache.end();++it)
+ {
+ if(!it->second.expired())
+ {
+ file << it->first << it->second.icon_id << it->second.cached_time << std::endl;
+ }
+ }
+
+ file.close();
}
-LLUUID* LLAvatarIconIDCache::get (const LLUUID& avatar_id)
+LLUUID* LLAvatarIconIDCache::get (const LLUUID& avatar_id)
{
- std::map<LLUUID,LLAvatarIconIDCacheItem>::iterator it = mCache.find(avatar_id);
- if(it==mCache.end())
- return 0;
- if(it->second.expired())
- return 0;
- return &it->second.icon_id;
+ std::map<LLUUID,LLAvatarIconIDCacheItem>::iterator it = mCache.find(avatar_id);
+ if(it==mCache.end())
+ return 0;
+ if(it->second.expired())
+ return 0;
+ return &it->second.icon_id;
}
-void LLAvatarIconIDCache::add (const LLUUID& avatar_id,const LLUUID& icon_id)
+void LLAvatarIconIDCache::add (const LLUUID& avatar_id,const LLUUID& icon_id)
{
- LLAvatarIconIDCacheItem item = {icon_id,LLDate::now()};
- mCache[avatar_id] = item;
+ LLAvatarIconIDCacheItem item = {icon_id,LLDate::now()};
+ mCache[avatar_id] = item;
}
-void LLAvatarIconIDCache::remove (const LLUUID& avatar_id)
+void LLAvatarIconIDCache::remove (const LLUUID& avatar_id)
{
- mCache.erase(avatar_id);
+ mCache.erase(avatar_id);
}
LLAvatarIconCtrl::Params::Params()
-: avatar_id("avatar_id"),
- draw_tooltip("draw_tooltip", true),
- default_icon_name("default_icon_name"),
- symbol_hpad("symbol_hpad"),
- symbol_vpad("symbol_vpad"),
- symbol_size("symbol_size", 1),
- symbol_pos("symbol_pos", LLAvatarIconCtrlEnums::BOTTOM_RIGHT)
+: avatar_id("avatar_id"),
+ draw_tooltip("draw_tooltip", true),
+ default_icon_name("default_icon_name"),
+ symbol_hpad("symbol_hpad"),
+ symbol_vpad("symbol_vpad"),
+ symbol_size("symbol_size", 1),
+ symbol_pos("symbol_pos", LLAvatarIconCtrlEnums::BOTTOM_RIGHT)
{
- changeDefault(min_width, 32);
- changeDefault(min_height, 32);
+ changeDefault(min_width, 32);
+ changeDefault(min_height, 32);
}
LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p)
-: LLIconCtrl(p),
- LLAvatarPropertiesObserver(),
- mAvatarId(),
- mFullName(),
- mDrawTooltip(p.draw_tooltip),
- mDefaultIconName(p.default_icon_name),
- mAvatarNameCacheConnection(),
- mSymbolHpad(p.symbol_hpad),
- mSymbolVpad(p.symbol_vpad),
- mSymbolSize(p.symbol_size),
- mSymbolPos(p.symbol_pos)
+: LLIconCtrl(p),
+ LLAvatarPropertiesObserver(),
+ mAvatarId(),
+ mFullName(),
+ mDrawTooltip(p.draw_tooltip),
+ mDefaultIconName(p.default_icon_name),
+ mAvatarNameCacheConnection(),
+ mSymbolHpad(p.symbol_hpad),
+ mSymbolVpad(p.symbol_vpad),
+ mSymbolSize(p.symbol_size),
+ mSymbolPos(p.symbol_pos)
{
- mPriority = LLViewerFetchedTexture::BOOST_ICON;
+ mPriority = LLViewerFetchedTexture::BOOST_ICON;
// don't request larger image then necessary to save gl memory,
// but ensure that quality is sufficient
@@ -189,111 +189,111 @@ LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p)
mMaxHeight = llmax((S32)p.min_height, rect.getHeight());
mMaxWidth = llmax((S32)p.min_width, rect.getWidth());
- if (p.avatar_id.isProvided())
- {
- LLSD value(p.avatar_id);
- setValue(value);
- }
- else
- {
- LLIconCtrl::setValue(mDefaultIconName, LLViewerFetchedTexture::BOOST_UI);
- }
+ if (p.avatar_id.isProvided())
+ {
+ LLSD value(p.avatar_id);
+ setValue(value);
+ }
+ else
+ {
+ LLIconCtrl::setValue(mDefaultIconName, LLViewerFetchedTexture::BOOST_UI);
+ }
}
LLAvatarIconCtrl::~LLAvatarIconCtrl()
{
- if (mAvatarId.notNull())
- {
- LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarId, this);
- // Name callbacks will be automatically disconnected since LLUICtrl is trackable
- }
-
- if (mAvatarNameCacheConnection.connected())
- {
- mAvatarNameCacheConnection.disconnect();
- }
+ if (mAvatarId.notNull())
+ {
+ LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarId, this);
+ // Name callbacks will be automatically disconnected since LLUICtrl is trackable
+ }
+
+ if (mAvatarNameCacheConnection.connected())
+ {
+ mAvatarNameCacheConnection.disconnect();
+ }
}
//virtual
void LLAvatarIconCtrl::setValue(const LLSD& value)
{
- if (value.isUUID())
- {
- LLAvatarPropertiesProcessor* app =
- LLAvatarPropertiesProcessor::getInstance();
- if (mAvatarId.notNull())
- {
- app->removeObserver(mAvatarId, this);
- }
-
- if (mAvatarId != value.asUUID())
- {
- mAvatarId = value.asUUID();
-
- // *BUG: This will return stale icons if a user changes their
- // profile picture. However, otherwise we send too many upstream
- // AvatarPropertiesRequest messages.
-
- // to get fresh avatar icon use
- // LLAvatarIconIDCache::getInstance()->remove(avatar_id);
-
- // Check if cache already contains image_id for that avatar
- if (!updateFromCache())
- {
- // *TODO: Consider getting avatar icon/badge directly from
- // People API, rather than sending AvatarPropertyRequest
- // messages. People API already hits the user table.
- LLIconCtrl::setValue(mDefaultIconName, LLViewerFetchedTexture::BOOST_UI);
- app->addObserver(mAvatarId, this);
- app->sendAvatarLegacyPropertiesRequest(mAvatarId);
- }
+ if (value.isUUID())
+ {
+ LLAvatarPropertiesProcessor* app =
+ LLAvatarPropertiesProcessor::getInstance();
+ if (mAvatarId.notNull())
+ {
+ app->removeObserver(mAvatarId, this);
+ }
+
+ if (mAvatarId != value.asUUID())
+ {
+ mAvatarId = value.asUUID();
+
+ // *BUG: This will return stale icons if a user changes their
+ // profile picture. However, otherwise we send too many upstream
+ // AvatarPropertiesRequest messages.
+
+ // to get fresh avatar icon use
+ // LLAvatarIconIDCache::getInstance()->remove(avatar_id);
+
+ // Check if cache already contains image_id for that avatar
+ if (!updateFromCache())
+ {
+ // *TODO: Consider getting avatar icon/badge directly from
+ // People API, rather than sending AvatarPropertyRequest
+ // messages. People API already hits the user table.
+ LLIconCtrl::setValue(mDefaultIconName, LLViewerFetchedTexture::BOOST_UI);
+ app->addObserver(mAvatarId, this);
+ app->sendAvatarLegacyPropertiesRequest(mAvatarId);
+ }
else if (gAgentID == mAvatarId)
{
// Always track any changes to our own icon id
app->addObserver(mAvatarId, this);
}
- }
- }
- else
- {
- LLIconCtrl::setValue(value);
- }
-
- fetchAvatarName();
+ }
+ }
+ else
+ {
+ LLIconCtrl::setValue(value);
+ }
+
+ fetchAvatarName();
}
void LLAvatarIconCtrl::fetchAvatarName()
{
- if (mAvatarId.notNull())
- {
- if (mAvatarNameCacheConnection.connected())
- {
- mAvatarNameCacheConnection.disconnect();
- }
- mAvatarNameCacheConnection = LLAvatarNameCache::get(mAvatarId, boost::bind(&LLAvatarIconCtrl::onAvatarNameCache, this, _1, _2));
- }
+ if (mAvatarId.notNull())
+ {
+ if (mAvatarNameCacheConnection.connected())
+ {
+ mAvatarNameCacheConnection.disconnect();
+ }
+ mAvatarNameCacheConnection = LLAvatarNameCache::get(mAvatarId, boost::bind(&LLAvatarIconCtrl::onAvatarNameCache, this, _1, _2));
+ }
}
bool LLAvatarIconCtrl::updateFromCache()
{
- LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(mAvatarId);
- if(!icon_id_ptr)
- return false;
-
- const LLUUID& icon_id = *icon_id_ptr;
-
- // Update the avatar
- if (icon_id.notNull())
- {
- LLIconCtrl::setValue(icon_id);
- }
- else
- {
- LLIconCtrl::setValue(mDefaultIconName, LLViewerFetchedTexture::BOOST_UI);
+ LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(mAvatarId);
+ if(!icon_id_ptr)
return false;
- }
- return true;
+ const LLUUID& icon_id = *icon_id_ptr;
+
+ // Update the avatar
+ if (icon_id.notNull())
+ {
+ LLIconCtrl::setValue(icon_id);
+ }
+ else
+ {
+ LLIconCtrl::setValue(mDefaultIconName, LLViewerFetchedTexture::BOOST_UI);
+ return false;
+ }
+
+ return true;
}
//virtual
@@ -302,23 +302,23 @@ void LLAvatarIconCtrl::processProperties(void* data, EAvatarProcessorType type)
// Both APT_PROPERTIES_LEGACY and APT_PROPERTIES have icon data.
// 'Legacy' is cheaper to request so LLAvatarIconCtrl issues that,
// but own icon should track any source for the sake of timely updates.
- //
+ //
// If this needs to change, make sure to update onCommitProfileImage
// to issue right kind of request
if (APT_PROPERTIES_LEGACY == type)
- {
+ {
LLAvatarLegacyData* avatar_data = static_cast<LLAvatarLegacyData*>(data);
- if (avatar_data)
- {
- if (avatar_data->avatar_id != mAvatarId)
- {
- return;
- }
-
- LLAvatarIconIDCache::getInstance()->add(mAvatarId,avatar_data->image_id);
- updateFromCache();
- }
- }
+ if (avatar_data)
+ {
+ if (avatar_data->avatar_id != mAvatarId)
+ {
+ return;
+ }
+
+ LLAvatarIconIDCache::getInstance()->add(mAvatarId,avatar_data->image_id);
+ updateFromCache();
+ }
+ }
else if (APT_PROPERTIES == type)
{
LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
@@ -337,21 +337,21 @@ void LLAvatarIconCtrl::processProperties(void* data, EAvatarProcessorType type)
void LLAvatarIconCtrl::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
{
- mAvatarNameCacheConnection.disconnect();
-
- if (agent_id == mAvatarId)
- {
- // Most avatar icon controls are next to a UI element that shows
- // a display name, so only show username.
- mFullName = av_name.getUserName();
-
- if (mDrawTooltip)
- {
- setToolTip(mFullName);
- }
- else
- {
- setToolTip(std::string());
- }
- }
+ mAvatarNameCacheConnection.disconnect();
+
+ if (agent_id == mAvatarId)
+ {
+ // Most avatar icon controls are next to a UI element that shows
+ // a display name, so only show username.
+ mFullName = av_name.getUserName();
+
+ if (mDrawTooltip)
+ {
+ setToolTip(mFullName);
+ }
+ else
+ {
+ setToolTip(std::string());
+ }
+ }
}