void LLGroupIconCtrl::changed(LLGroupChange gc) { if (GC_PROPERTIES == gc) { updateFromCache(); } }
void LLGroupIconCtrl::setValue(const LLSD& value) { if (value.isUUID()) { LLGroupMgr* gm = LLGroupMgr::getInstance(); if (mGroupId.notNull()) { gm->removeObserver(this); } if (mGroupId != value.asUUID()) { mGroupId = value.asUUID(); mID = mGroupId; // set LLGroupMgrObserver::mID to make callbacks work // Check if cache already contains image_id for that group if (!updateFromCache()) { LLIconCtrl::setValue(mDefaultIconName); gm->addObserver(this); gm->sendGroupPropertiesRequest(mGroupId); } } } else { LLIconCtrl::setValue(value); } }
//virtual void LLAvatarIconCtrl::processProperties(void* data, EAvatarProcessorType type) { if (APT_PROPERTIES == type) { LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data); if (avatar_data) { if (avatar_data->avatar_id != mAvatarId) { return; } LLAvatarIconIDCache::getInstance()->add(mAvatarId,avatar_data->image_id); updateFromCache(); } } }
//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); app->addObserver(mAvatarId, this); app->sendAvatarPropertiesRequest(mAvatarId); } } } else { LLIconCtrl::setValue(value); } LLAvatarNameCache::get(mAvatarId, boost::bind(&LLAvatarIconCtrl::onAvatarNameCache, this, _1, _2)); }
//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()) { LLIconCtrl::setValue(mDefaultIconName); app->addObserver(mAvatarId, this); app->sendAvatarPropertiesRequest(mAvatarId); } } } else { LLIconCtrl::setValue(value); } if (gCacheName) { gCacheName->get(mAvatarId, FALSE, boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3, _4)); } }