diff options
Diffstat (limited to 'indra/llui/llnotifications.h')
-rwxr-xr-x[-rw-r--r--] | indra/llui/llnotifications.h | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index 87573c2a56..3cf432f330 100644..100755 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -88,16 +88,20 @@ #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" #include "llinitparam.h" +#include "llinstancetracker.h" #include "llmortician.h" #include "llnotificationptr.h" #include "llpointer.h" #include "llrefcount.h" #include "llsdparam.h" +#include "llnotificationslistener.h" + class LLAvatarName; typedef enum e_notification_priority { @@ -138,6 +142,7 @@ typedef LLFunctorRegistration<LLNotificationResponder> LLNotificationFunctorRegi class LLNotificationContext : public LLInstanceTracker<LLNotificationContext, LLUUID> { public: + LLNotificationContext() : LLInstanceTracker<LLNotificationContext, LLUUID>(LLUUID::generateNewID()) { } @@ -836,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); @@ -845,12 +855,12 @@ public: Iterator begin(); Iterator end(); size_t size(); - + std::string summarize(); 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. @@ -873,6 +883,13 @@ class LLNotifications : friend class LLSingleton<LLNotifications>; public: + + // Needed to clear up RefCounted things prior to actual destruction + // as the singleton nature of the class makes them do "bad things" + // on at least Mac, if not all 3 platforms + // + void clear(); + // load all notification descriptions from file // calling more than once will overwrite existing templates // but never delete a template @@ -970,6 +987,8 @@ private: bool mIgnoreAllNotifications; + boost::scoped_ptr<LLNotificationsListener> mListener; + std::vector<LLNotificationChannelPtr> mDefaultChannels; }; @@ -1055,15 +1074,13 @@ class LLPersistentNotificationChannel : public LLNotificationChannel public: LLPersistentNotificationChannel() : LLNotificationChannel("Persistent", "Visible", ¬ificationFilter) - { - } + {} typedef std::vector<LLNotificationPtr> history_list_t; history_list_t::iterator beginHistory() { sortHistory(); return mHistory.begin(); } history_list_t::iterator endHistory() { return mHistory.end(); } private: - struct sortByTime { S32 operator ()(const LLNotificationPtr& a, const LLNotificationPtr& b) @@ -1077,7 +1094,6 @@ private: std::sort(mHistory.begin(), mHistory.end(), sortByTime()); } - // The channel gets all persistent notifications except those that have been canceled static bool notificationFilter(LLNotificationPtr pNotification) { |