summaryrefslogtreecommitdiff
path: root/indra/newview/llimfloatercontainer.cpp
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2010-02-08 09:50:04 -0500
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2010-02-08 09:50:04 -0500
commit5dda2516ad599d3c295930fb3fc0c6cdbe8c2ce5 (patch)
tree06d761559a50b8df3db4dffa32c6ad28ce398c11 /indra/newview/llimfloatercontainer.cpp
parentf5b82a377256d5806ec101e8a9d90533ea1a3bf9 (diff)
parentbb977a194f42cafdcf3f1245adf3b7f49857e552 (diff)
merge
Diffstat (limited to 'indra/newview/llimfloatercontainer.cpp')
-rw-r--r--indra/newview/llimfloatercontainer.cpp53
1 files changed, 19 insertions, 34 deletions
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 22eb9a51d2..ba034609e9 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -37,6 +37,7 @@
#include "llfloaterreg.h"
#include "llimview.h"
#include "llavatariconctrl.h"
+#include "llgroupiconctrl.h"
#include "llagent.h"
//
@@ -90,43 +91,34 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
LLUUID session_id = floaterp->getKey();
+ LLIconCtrl* icon = 0;
+
if(gAgent.isInGroup(session_id))
{
+ LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLGroupIconCtrl>();
+ icon_params.group_id = session_id;
+ icon = LLUICtrlFactory::instance().createWidget<LLGroupIconCtrl>(icon_params);
+
mSessions[session_id] = floaterp;
- LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(session_id);
- LLGroupMgr* gm = LLGroupMgr::getInstance();
- gm->addObserver(session_id, this);
floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id));
-
- if (group_data && group_data->mInsigniaID.notNull())
- {
- mTabContainer->setTabImage(get_ptr_in_map(mSessions, session_id), group_data->mInsigniaID);
- }
- else
- {
- mTabContainer->setTabImage(floaterp, "Generic_Group");
- gm->sendGroupPropertiesRequest(session_id);
- }
}
else
{
LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id);
- LLAvatarPropertiesProcessor& app = LLAvatarPropertiesProcessor::instance();
- app.addObserver(avatar_id, this);
- floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id));
- mSessions[avatar_id] = floaterp;
- LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(avatar_id);
- if(icon_id_ptr && icon_id_ptr->notNull())
- {
- mTabContainer->setTabImage(floaterp, *icon_id_ptr);
- }
- else
- {
- mTabContainer->setTabImage(floaterp, "Generic_Person");
- app.sendAvatarPropertiesRequest(avatar_id);
- }
+ LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLAvatarIconCtrl>();
+ icon_params.avatar_id = avatar_id;
+ icon = LLUICtrlFactory::instance().createWidget<LLAvatarIconCtrl>(icon_params);
+
+ mSessions[avatar_id] = floaterp;
+ floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id));
}
+ mTabContainer->setTabImage(floaterp, icon);
+}
+
+void LLIMFloaterContainer::onCloseFloater(LLUUID& id)
+{
+ mSessions.erase(id);
}
void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorType type)
@@ -159,13 +151,6 @@ void LLIMFloaterContainer::changed(const LLUUID& group_id, LLGroupChange gc)
}
}
-void LLIMFloaterContainer::onCloseFloater(LLUUID id)
-{
- LLAvatarPropertiesProcessor::instance().removeObserver(id, this);
- LLGroupMgr::instance().removeObserver(id, this);
-
-}
-
void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data)
{
LLUUID session_id = data["from_id"].asUUID();