summaryrefslogtreecommitdiff
path: root/indra/newview/llchiclet.cpp
diff options
context:
space:
mode:
authorSteven Bennetts <steve@lindenlab.com>2009-08-14 21:50:02 +0000
committerSteven Bennetts <steve@lindenlab.com>2009-08-14 21:50:02 +0000
commit73caee4208a4e05f66583de099502012fd8415ea (patch)
treeff9fa1b7b010e71fb62f26a32c912b5e266f3b23 /indra/newview/llchiclet.cpp
parent1db494f58ad378b8028c1f071196be82af5fe964 (diff)
svn merge https://svn.aws.productengine.com/secondlife/export-from-ll/viewer-2-0@1331 https://svn.aws.productengine.com/secondlife/pe/stable-1@1340 -> viewer-2.0.0-3
EXT-269 EXT-274 EXT-276 EXT-277 EXT-282 EXT-296 EXT-342 EXT-370 EXT-379 EXT-394 EXT-398 EXT-405 EXT-407 EXT-410 EXT-413 EXT-414 EXT-450 EXT-456 EXT-477 EXT-482 EXT-496
Diffstat (limited to 'indra/newview/llchiclet.cpp')
-rw-r--r--indra/newview/llchiclet.cpp43
1 files changed, 34 insertions, 9 deletions
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 80e27bd366..d98f03eccb 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -54,6 +54,9 @@ static LLDefaultChildRegistry::Register<LLTalkButton> t2("chiclet_talk");
static LLDefaultChildRegistry::Register<LLNotificationChiclet> t3("chiclet_notification");
static LLDefaultChildRegistry::Register<LLIMChiclet> t4("chiclet_im");
+boost::signals2::signal<LLChiclet* (const LLUUID&),
+ LLIMChiclet::CollectChicletCombiner<std::list<LLChiclet*> > >
+ LLIMChiclet::sFindChicletsSignal;
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
@@ -290,6 +293,16 @@ void LLIMChiclet::setOtherParticipantId(const LLUUID& other_participant_id)
}
}
+LLUUID LLIMChiclet::getOtherParticipantId()
+{
+ LLUUID res = LLUUID::null;
+ if (mAvatarCtrl)
+ {
+ res = mAvatarCtrl->getAvatarId();
+ }
+ return res;
+}
+
void LLIMChiclet::updateMenuItems()
{
if(!mPopupMenu)
@@ -306,6 +319,13 @@ void LLIMChiclet::updateMenuItems()
}
}
+BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
+{
+ LLIMFloater::show(getSessionId());
+ setCounter(0);
+ return LLChiclet::handleMouseDown(x, y, mask);
+}
+
void LLIMChiclet::setShowSpeaker(bool show)
{
bool needs_resize = getShowSpeaker() != show;
@@ -491,16 +511,20 @@ LLChicletPanel::~LLChicletPanel()
void im_chiclet_callback(LLChicletPanel* panel, const LLSD& data){
LLUUID session_id = data["session_id"].asUUID();
- LLChiclet* chiclet = panel->findChiclet<LLChiclet>(session_id);
-
- if (chiclet)
- {
- chiclet->setCounter(data["num_unread"].asInteger());
+ std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(session_id);
+ std::list<LLChiclet *>::iterator iter;
+ for (iter = chiclets.begin(); iter != chiclets.end(); iter++) {
+ LLChiclet* chiclet = *iter;
+ if (chiclet != NULL)
+ {
+ chiclet->setCounter(data["num_unread"].asInteger());
+ }
+ else
+ {
+ llwarns << "Unable to set counter for chiclet " << session_id << llendl;
+ }
}
- else
- {
- llwarns << "Unable to set counter for chiclet " << session_id << llendl;
- }
+
}
@@ -508,6 +532,7 @@ BOOL LLChicletPanel::postBuild()
{
LLPanel::postBuild();
LLIMModel::instance().addChangedCallback(boost::bind(im_chiclet_callback, this, _1));
+ LLIMChiclet::sFindChicletsSignal.connect(boost::bind(&LLChicletPanel::findChiclet<LLChiclet>, this, _1));
return TRUE;
}