From bc5ad04d6164d186cf504212ea559405b8608811 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Fri, 5 Feb 2010 09:41:54 +0200 Subject: applying patch for EXT-2357 --HG-- branch : product-engine --- indra/newview/llimfloatercontainer.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'indra/newview/llimfloatercontainer.cpp') diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 22eb9a51d2..7c7a4222d4 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -111,6 +111,14 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, else { LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id); + + LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams(); + icon_params.avatar_id = avatar_id; + LLAvatarIconCtrl* icon = LLUICtrlFactory::instance().createWidget(icon_params); + icon->setValue(avatar_id); + mTabContainer->setTabImage(floaterp, icon); + + /* LLAvatarPropertiesProcessor& app = LLAvatarPropertiesProcessor::instance(); app.addObserver(avatar_id, this); floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id)); @@ -125,7 +133,7 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, { mTabContainer->setTabImage(floaterp, "Generic_Person"); app.sendAvatarPropertiesRequest(avatar_id); - } + }*/ } } -- cgit v1.2.3 From b79b8f87a37888decd3f82e9e255cce641a3955f Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Fri, 5 Feb 2010 13:03:26 +0200 Subject: finished with EXT-2753 - Implement Avatar icons on IM multifloater tabs add floater flashing, fix group icon sizes, fix click,some code cleanup, ect. also I remove mIconCtrlWidth/Height since its kinda useless - mIconCtrlPad do the same thing... IconSize will be btn_height-2*mIconCtrlPad - simple and good enough. --HG-- branch : product-engine --- indra/newview/llimfloatercontainer.cpp | 50 +++++++--------------------------- 1 file changed, 10 insertions(+), 40 deletions(-) (limited to 'indra/newview/llimfloatercontainer.cpp') diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 7c7a4222d4..9539553121 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,23 +91,15 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, LLUUID session_id = floaterp->getKey(); + LLIconCtrl* icon = 0; + if(gAgent.isInGroup(session_id)) { - 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)); + LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams(); + icon_params.group_id = session_id; + icon = LLUICtrlFactory::instance().createWidget(icon_params); - 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); - } + mSessions[session_id] = floaterp; } else { @@ -114,27 +107,11 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams(); icon_params.avatar_id = avatar_id; - LLAvatarIconCtrl* icon = LLUICtrlFactory::instance().createWidget(icon_params); - icon->setValue(avatar_id); - mTabContainer->setTabImage(floaterp, icon); - - /* - LLAvatarPropertiesProcessor& app = LLAvatarPropertiesProcessor::instance(); - app.addObserver(avatar_id, this); - floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id)); - mSessions[avatar_id] = floaterp; + icon = LLUICtrlFactory::instance().createWidget(icon_params); - 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); - }*/ + mSessions[avatar_id] = floaterp; } + mTabContainer->setTabImage(floaterp, icon); } void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorType type) @@ -167,13 +144,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(); -- cgit v1.2.3 From 1002980a7021fb764fc86ac92ecb6928f67a573b Mon Sep 17 00:00:00 2001 From: Paul Guslisty Date: Fri, 5 Feb 2010 16:36:19 +0200 Subject: Fixed critical bug EXT - 4906 (Viewer crashes after group message was sent if close IM chat from message sender previously) --HG-- branch : product-engine --- indra/newview/llimfloatercontainer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'indra/newview/llimfloatercontainer.cpp') diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 9539553121..ba034609e9 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -100,6 +100,7 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, icon = LLUICtrlFactory::instance().createWidget(icon_params); mSessions[session_id] = floaterp; + floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); } else { @@ -110,10 +111,16 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, icon = LLUICtrlFactory::instance().createWidget(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) { if (APT_PROPERTIES == type) -- cgit v1.2.3