diff options
author | bea@american.lindenlab.com <bea@american.lindenlab.com> | 2009-12-04 13:29:05 -0800 |
---|---|---|
committer | bea@american.lindenlab.com <bea@american.lindenlab.com> | 2009-12-04 13:29:05 -0800 |
commit | dab659adea63c744aa72c27935f62cce91d8ab7a (patch) | |
tree | 8bcc1d3b5ebb46e64efc4ff784e5e27844f01da0 /indra/newview/llnotificationofferhandler.cpp | |
parent | 67d051e78cb9f7d1ba670b647229ac9974fb7896 (diff) | |
parent | bef221e3aa42b92586e5783811742afdbf05cd92 (diff) |
merge
Diffstat (limited to 'indra/newview/llnotificationofferhandler.cpp')
-rw-r--r-- | indra/newview/llnotificationofferhandler.cpp | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index c179a2cf90..4f353bf6a5 100644 --- a/indra/newview/llnotificationofferhandler.cpp +++ b/indra/newview/llnotificationofferhandler.cpp @@ -39,6 +39,7 @@ #include "llviewerwindow.h" #include "llnotificationmanager.h" #include "llnotifications.h" +#include "llscriptfloater.h" using namespace LLNotificationsUI; @@ -92,24 +93,42 @@ bool LLOfferHandler::processNotification(const LLSD& notify) { LLHandlerUtil::logToIMP2P(notification); - LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification); - - LLToast::Params p; - p.notif_id = notification->getID(); - p.notification = notification; - p.panel = notify_box; - p.on_delete_toast = boost::bind(&LLOfferHandler::onDeleteToast, this, _1); - - LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel); - if(channel) - channel->addToast(p); - - // send a signal to the counter manager - mNewNotificationSignal(); + if( notification->getPayload().has("give_inventory_notification") + && !notification->getPayload()["give_inventory_notification"] ) + { + // This is an original inventory offer, so add a script floater + LLScriptFloaterManager::instance().onAddNotification(notification->getID()); + } + else + { + LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification); + + LLToast::Params p; + p.notif_id = notification->getID(); + p.notification = notification; + p.panel = notify_box; + p.on_delete_toast = boost::bind(&LLOfferHandler::onDeleteToast, this, _1); + + LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel); + if(channel) + channel->addToast(p); + + // send a signal to the counter manager + mNewNotificationSignal(); + } } else if (notify["sigtype"].asString() == "delete") { - mChannel->killToastByNotificationID(notification->getID()); + if( notification->getPayload().has("give_inventory_notification") + && !notification->getPayload()["give_inventory_notification"] ) + { + // Remove original inventory offer script floater + LLScriptFloaterManager::instance().onRemoveNotification(notification->getID()); + } + else + { + mChannel->killToastByNotificationID(notification->getID()); + } } return true; |