diff options
| author | Oz Linden <oz@lindenlab.com> | 2014-05-07 15:41:27 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2014-05-07 15:41:27 -0400 | 
| commit | 618a409e13f11ce9ded294936e1f7c1d3d1e1efc (patch) | |
| tree | 8d579722688fabf5f7407738278275be82f7a592 /indra | |
| parent | 1e851a2eb70e5f6b12a47c382efb3b9b17674993 (diff) | |
| parent | b4796595f27f2fdaa71e451aea86bfa386a1f4f7 (diff) | |
merge changes for DRTVWR-363
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/llui/llnotifications.cpp | 1 | ||||
| -rwxr-xr-x | indra/llui/llnotifications.h | 8 | ||||
| -rw-r--r-- | indra/llui/llnotificationslistener.cpp | 27 | 
3 files changed, 22 insertions, 14 deletions
| diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 025cd81d92..de14391d1f 100755 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -1189,6 +1189,7 @@ void LLNotificationChannel::connectToChannel( const std::string& channel_name )  	}  	else  	{ +		mParents.push_back(channel_name);  		LLNotificationChannelPtr p = LLNotifications::instance().getChannel(channel_name);  		p->connectChanged(boost::bind(&LLNotificationChannelBase::updateItem, this, _1));  	} diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index b0e8553a49..3cf432f330 100755 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -88,6 +88,7 @@  #include <boost/enable_shared_from_this.hpp>  #include <boost/type_traits.hpp>  #include <boost/signals2.hpp> +#include <boost/range.hpp>  #include "llevents.h"  #include "llfunctorregistry.h" @@ -840,6 +841,11 @@ public:  	typedef LLNotificationSet::iterator Iterator;  	std::string getName() const { return mName; } +	typedef std::vector<std::string>::const_iterator parents_iter; +	boost::iterator_range<parents_iter> getParents() const +	{ +		return boost::iterator_range<parents_iter>(mParents); +	}  	void connectToChannel(const std::string& channel_name); @@ -854,7 +860,7 @@ public:  private:  	std::string mName; -	std::string mParent; +	std::vector<std::string> mParents;  };  // An interface class to provide a clean linker seam to the LLNotifications class. diff --git a/indra/llui/llnotificationslistener.cpp b/indra/llui/llnotificationslistener.cpp index 9e8e943ee6..b6a32a0e78 100644 --- a/indra/llui/llnotificationslistener.cpp +++ b/indra/llui/llnotificationslistener.cpp @@ -32,6 +32,7 @@  #include "llnotificationtemplate.h"  #include "llsd.h"  #include "llui.h" +#include <boost/foreach.hpp>  LLNotificationsListener::LLNotificationsListener(LLNotifications & notifications) :      LLEventAPI("LLNotifications", @@ -42,11 +43,10 @@ LLNotificationsListener::LLNotificationsListener(LLNotifications & notifications          "Add a notification with specified [\"name\"], [\"substitutions\"] and [\"payload\"].\n"          "If optional [\"reply\"] specified, arrange to send user response on that LLEventPump.",          &LLNotificationsListener::requestAdd); -    /*    add("listChannels", +    add("listChannels",          "Post to [\"reply\"] a map of info on existing channels",          &LLNotificationsListener::listChannels,          LLSD().with("reply", LLSD())); -    */      add("listChannelNotifications",          "Post to [\"reply\"] an array of info on notifications in channel [\"channel\"]",          &LLNotificationsListener::listChannelNotifications, @@ -117,26 +117,27 @@ void LLNotificationsListener::NotificationResponder(const std::string& reply_pum  	reponse_event["response"] = response;  	LLEventPumps::getInstance()->obtain(reply_pump).post(reponse_event);  } -/* +  void LLNotificationsListener::listChannels(const LLSD& params) const  {      LLReqID reqID(params);      LLSD response(reqID.makeResponse()); -    for (LLNotifications:: - - - -    for (LLNotifications::ChannelMap::const_iterator cmi(mNotifications.mChannels.begin()), -                                                     cmend(mNotifications.mChannels.end()); +    for (LLNotificationChannel::instance_iter cmi(LLNotificationChannel::beginInstances()), +                                              cmend(LLNotificationChannel::endInstances());           cmi != cmend; ++cmi)      { -        LLSD channelInfo; -        channelInfo["parent"] = cmi->second->getParentChannelName(); -        response[cmi->first] = channelInfo; +        LLSD channelInfo, parents; +        BOOST_FOREACH(const std::string& parent, cmi->getParents()) +        { +            parents.append(parent); +        } +        channelInfo["parents"] = parents; +        channelInfo["parent"] = parents.size()? parents[0] : ""; +        response[cmi->getName()] = channelInfo;      }      LLEventPumps::instance().obtain(params["reply"]).post(response);  } -*/ +  void LLNotificationsListener::listChannelNotifications(const LLSD& params) const  {      LLReqID reqID(params); | 
