diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp index f4b583a53..f48b99411 100644 --- a/indra/newview/lleventnotifier.cpp +++ b/indra/newview/lleventnotifier.cpp @@ -43,8 +43,54 @@ #include "llfloaterworldmap.h" #include "llagent.h" #include "llappviewer.h" // for gPacificDaylightTime +#include "llcommandhandler.h" // secondlife:///app/... support #include "llviewercontrol.h" +class LLEventHandler : public LLCommandHandler +{ +public: + // requires trusted browser to trigger + LLEventHandler() : LLCommandHandler("event", UNTRUSTED_THROTTLE) { } + bool handle(const LLSD& params, const LLSD& query_map, + LLMediaCtrl* web) + { + if (params.size() < 2) + { + return false; + } + std::string event_command = params[1].asString(); + S32 event_id = params[0].asInteger(); + if (event_command == "about" || event_command == "details") + { + LLFloaterEventInfo::show(event_id); + return true; + } + else if(event_command == "notify") + { + // we're adding or removing a notification, so grab the date, name and notification bool + if (params.size() < 3) + { + return false; + } + if(params[2].asString() == "enable") + { + gEventNotifier.add(event_id); + // tell the server to modify the database as this was a slurl event notification command + gEventNotifier.serverPushRequest(event_id, true); + } + else + { + gEventNotifier.remove(event_id); + } + return true; + } + + return false; + } +}; +LLEventHandler gEventHandler; + + LLEventNotifier gEventNotifier; LLEventNotifier::LLEventNotifier() diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp index b526767f8..ec863020c 100644 --- a/indra/newview/llfloaterevent.cpp +++ b/indra/newview/llfloaterevent.cpp @@ -36,7 +36,6 @@ #include "llfloaterevent.h" // viewer project includes -#include "llcommandhandler.h" #include "llpanelevent.h" // linden library includes @@ -52,29 +51,6 @@ LLMap< U32, LLFloaterEventInfo* > gEventInfoInstances; -class LLEventHandler : public LLCommandHandler -{ -public: - // requires trusted browser to trigger - LLEventHandler() : LLCommandHandler("event", UNTRUSTED_THROTTLE) { } - bool handle(const LLSD& tokens, const LLSD& query_map, - LLMediaCtrl* web) - { - if (tokens.size() < 2) - { - return false; - } - U32 event_id = tokens[0].asInteger(); - if (tokens[1].asString() == "about") - { - LLFloaterEventInfo::show(event_id); - return true; - } - return false; - } -}; -LLEventHandler gEventHandler; - LLFloaterEventInfo::LLFloaterEventInfo(const std::string& name, const U32 event_id) : LLFloater(name), mEventID( event_id )