diff options
author | Chuck Linden <chuck@lindenlab.com> | 2010-02-17 18:47:12 -0500 |
---|---|---|
committer | Chuck Linden <chuck@lindenlab.com> | 2010-02-17 18:47:12 -0500 |
commit | 0aaaa06fe0149ffbc22823daa095749be1abe3e0 (patch) | |
tree | 895f584298f3b2d66fc25b86f97b7184910748bf /indra/newview/llnotificationtiphandler.cpp | |
parent | a3c93cccef04b3efc133ef653dbd9e53d7580aeb (diff) | |
parent | 29dd5afaa8a85f0b57ddb3e9e281e1e6f5b43e29 (diff) |
Automated merge with file:///Users/chuck/Documents/hg/viewer-hotfix
Diffstat (limited to 'indra/newview/llnotificationtiphandler.cpp')
-rw-r--r-- | indra/newview/llnotificationtiphandler.cpp | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index 83a2215ac6..c55c8d6221 100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp @@ -43,6 +43,37 @@ using namespace LLNotificationsUI; +class LLOnalineStatusToast : public LLToastPanel +{ +public: + + struct Params + { + LLNotificationPtr notification; + LLUUID avatar_id; + std::string message; + + Params() {} + }; + + LLOnalineStatusToast(Params& p) : LLToastPanel(p.notification) + { + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_online_status.xml"); + + childSetValue("avatar_icon", p.avatar_id); + childSetValue("message", p.message); + + if (p.notification->getPayload().has("respond_on_mousedown") + && p.notification->getPayload()["respond_on_mousedown"] ) + { + setMouseDownCallback(boost::bind(&LLNotification::respond, p.notification, + p.notification->getResponseTemplate())); + } + + // set line max count to 2 in case of a very long name + snapToMessageHeight(getChild<LLTextBox>("message"), 2); + } +}; //-------------------------------------------------------------------------- LLTipHandler::LLTipHandler(e_notification_type type, const LLSD& id) @@ -114,7 +145,19 @@ bool LLTipHandler::processNotification(const LLSD& notify) LLHandlerUtil::spawnIMSession(name, from_id); } - LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification); + LLToastPanel* notify_box = NULL; + if("FriendOffline" == notification->getName() || "FriendOnline" == notification->getName()) + { + LLOnalineStatusToast::Params p; + p.notification = notification; + p.message = notification->getMessage(); + p.avatar_id = notification->getPayload()["FROM_ID"]; + notify_box = new LLOnalineStatusToast(p); + } + else + { + notify_box = new LLToastNotifyPanel(notification); + } LLToast::Params p; p.notif_id = notification->getID(); |