diff options
| author | Steven Bennetts <steve@lindenlab.com> | 2009-08-14 21:50:02 +0000 |
|---|---|---|
| committer | Steven Bennetts <steve@lindenlab.com> | 2009-08-14 21:50:02 +0000 |
| commit | 73caee4208a4e05f66583de099502012fd8415ea (patch) | |
| tree | ff9fa1b7b010e71fb62f26a32c912b5e266f3b23 /indra/newview/llchiclet.cpp | |
| parent | 1db494f58ad378b8028c1f071196be82af5fe964 (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.cpp | 43 |
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; } |
