summaryrefslogtreecommitdiff
path: root/indra/newview/llchannelmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llchannelmanager.h')
-rw-r--r--indra/newview/llchannelmanager.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
new file mode 100644
index 0000000000..db936b28d9
--- /dev/null
+++ b/indra/newview/llchannelmanager.h
@@ -0,0 +1,127 @@
+/**
+ * @file llchannelmanager.h
+ * @brief This class rules screen notification channels.
+ *
+ * $LicenseInfo:firstyear=2003&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLCHANNELMANAGER_H
+#define LL_LLCHANNELMANAGER_H
+
+
+#include "llscreenchannel.h"
+
+#include "lluuid.h"
+
+#include <map>
+#include <boost/shared_ptr.hpp>
+
+namespace LLNotificationsUI
+{
+/**
+ * Manager for screen channels.
+ * Responsible for instantiating and retrieving screen channels.
+ */
+class LLChannelManager : public LLSingleton<LLChannelManager>
+{
+public:
+ struct Params
+ {
+ LLUUID id;
+ bool display_toasts_always;
+ EToastAlignment toast_align;
+ EChannelAlignment channel_align;
+
+ Params(): id(LLUUID("")), display_toasts_always(false), toast_align(NA_BOTTOM), channel_align(CA_LEFT)
+ {}
+ };
+
+ struct ChannelElem
+ {
+ LLUUID id;
+ LLScreenChannelBase* channel;
+
+ ChannelElem() : id(LLUUID("")), channel(NULL) { }
+
+ ChannelElem(const ChannelElem &elem)
+ {
+ id = elem.id;
+ channel = elem.channel;
+ }
+
+ bool operator == (const LLUUID &id_op) const
+ {
+ return (id == id_op);
+ }
+ };
+
+ LLChannelManager();
+ virtual ~LLChannelManager();
+
+ // On LoginCompleted - show StartUp toast
+ void onLoginCompleted();
+ // removes a channel intended for the startup toast and allows other channels to show their toasts
+ void onStartUpToastClose();
+
+ // creates a new ScreenChannel according to the given parameters or returns existing if present
+ LLScreenChannelBase* getChannel(LLChannelManager::Params& p);
+
+ LLScreenChannelBase* addChannel(LLScreenChannelBase* channel);
+
+ // returns a channel by its ID
+ LLScreenChannelBase* findChannelByID(const LLUUID id);
+
+ // creator of the Notification channel, that is used in more than one handler
+ LLScreenChannel* createNotificationChannel();
+
+ // remove channel methods
+ void removeChannelByID(const LLUUID id);
+
+ /**
+ * Manages toasts showing for all channels.
+ *
+ * @param mute Flag to disable/enable toasts showing.
+ */
+ void muteAllChannels(bool mute);
+
+ /**
+ * Kills matched toasts from specified toast screen channel.
+ */
+ void killToastsFromChannel(const LLUUID& channel_id, const LLScreenChannel::Matcher& matcher);
+
+ /**
+ * Returns notification screen channel.
+ */
+ static LLNotificationsUI::LLScreenChannel* getNotificationScreenChannel();
+
+ std::vector<ChannelElem>& getChannelList() { return mChannelList;}
+private:
+
+ LLScreenChannel* createChannel(LLChannelManager::Params& p);
+
+ LLScreenChannel* mStartUpChannel;
+ std::vector<ChannelElem> mChannelList;
+};
+
+}
+#endif
+