From 13a6077b780117be0fa3a054426d139ca1d35df9 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Fri, 20 Nov 2009 19:17:38 +0200
Subject: Implemented normal task EXT-2081 - Object IM chiclets art needs to be
 hooked up to LLDialog chiclets. Implemented LLDialog(LLScriptFloater) and
 Script Chiclets.

--HG--
branch : product-engine
---
 indra/newview/llscriptfloater.h | 114 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 114 insertions(+)
 create mode 100644 indra/newview/llscriptfloater.h

(limited to 'indra/newview/llscriptfloater.h')

diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
new file mode 100644
index 0000000000..fc1d9a0186
--- /dev/null
+++ b/indra/newview/llscriptfloater.h
@@ -0,0 +1,114 @@
+/** 
+ * @file llscriptfloater.h
+ * @brief LLScriptFloater class definition
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_SCRIPTFLOATER_H
+#define LL_SCRIPTFLOATER_H
+
+#include "lltransientdockablefloater.h"
+
+/**
+ * This class manages Object script floaters.
+ */
+class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
+{
+public:
+
+	void onAddNotification(const LLUUID& notification_id);
+
+	void onRemoveNotification(const LLUUID& notification_id);
+
+	void toggleScriptFloater(const LLUUID& object_id);
+
+	void closeScriptFloater(const LLUUID& object_id);
+
+	const LLUUID& getNotificationId(const LLUUID& object_id);
+
+	const LLUUID& getToastNotificationId(const LLUUID& object_id);
+
+	void setToastNotificationId(const LLUUID& object_id, const LLUUID& notification_id);
+
+	static void onToastButtonClick(const LLSD&notification, const LLSD&response);
+
+private:
+
+	struct LLNotificationData
+	{
+		LLUUID notification_id;
+		LLUUID toast_notification_id;
+	};
+
+	typedef std::map<LLUUID, LLNotificationData> script_notification_map_t;
+
+	script_notification_map_t mNotifications;
+};
+
+/**
+ * Floater for displaying script forms
+ */
+class LLScriptFloater : public LLTransientDockableFloater
+{
+public:
+
+	/**
+	 * key - UUID of scripted Object
+	 */
+	LLScriptFloater(const LLSD& key);
+
+	virtual ~LLScriptFloater(){};
+
+	static bool toggle(const LLUUID& object_id);
+
+	static LLScriptFloater* show(const LLUUID& object_id);
+
+	const LLUUID& getObjectId() { return mObjectId; }
+
+	/*virtual*/ void onClose(bool app_quitting);
+
+	/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
+
+	/*virtual*/ void setVisible(BOOL visible);
+
+protected:
+
+	void createForm(const LLUUID& object_id);
+
+	/*virtual*/ void getAllowedRect(LLRect& rect);
+
+	static void updateToasts();
+
+	void setObjectId(const LLUUID& id) { mObjectId = id; }
+
+private:
+	LLUUID mObjectId;
+};
+
+#endif //LL_SCRIPTFLOATER_H
-- 
cgit v1.2.3


From 9f0dbcf4c0c6c8621c377fd7f9e417aa76acd836 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Mon, 23 Nov 2009 15:50:49 +0200
Subject: Update for task EXT-2081 - Object IM chiclets art needs to be hooked
 up to LLDialog chiclets. Cleaned code, added comments.

--HG--
branch : product-engine
---
 indra/newview/llscriptfloater.h | 66 ++++++++++++++++++++++++++++++++++++-----
 1 file changed, 58 insertions(+), 8 deletions(-)

(limited to 'indra/newview/llscriptfloater.h')

diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index fc1d9a0186..0e1a7f36b7 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -35,27 +35,52 @@
 
 #include "lltransientdockablefloater.h"
 
+class LLToastNotifyPanel;
+
 /**
- * This class manages Object script floaters.
+ * Handles script notifications ("ScriptDialog" and "ScriptDialogGroup")
+ * and manages Script Floaters.
  */
 class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 {
 public:
 
+	/**
+	 * Handles new notifications.
+	 * Saves notification and object ids, removes old notification if needed, creates script chiclet
+	 * Note that one object can spawn one script floater.
+	 */
 	void onAddNotification(const LLUUID& notification_id);
 
+	/**
+	 * Handles notification removal.
+	 * Removes script notification toast, removes script chiclet, closes script floater
+	 */
 	void onRemoveNotification(const LLUUID& notification_id);
 
-	void toggleScriptFloater(const LLUUID& object_id);
+	/**
+	 * Wrapper for onRemoveNotification, removes notification by object id.
+	 */
+	void removeNotificationByObjectId(const LLUUID& object_id);
 
-	void closeScriptFloater(const LLUUID& object_id);
+	/**
+	 * Toggles script floater.
+	 * Removes "new message" icon from chiclet and removes notification toast.
+	 */
+	void toggleScriptFloater(const LLUUID& object_id);
 
-	const LLUUID& getNotificationId(const LLUUID& object_id);
+	LLUUID findNotificationId(const LLUUID& object_id);
 
-	const LLUUID& getToastNotificationId(const LLUUID& object_id);
+	LLUUID findNotificationToastId(const LLUUID& object_id);
 
-	void setToastNotificationId(const LLUUID& object_id, const LLUUID& notification_id);
+	/**
+	 * Associate notification toast id with object id.
+	 */
+	void setNotificationToastId(const LLUUID& object_id, const LLUUID& notification_id);
 
+	/**
+	* Callback for notification toast buttons.
+	*/
 	static void onToastButtonClick(const LLSD&notification, const LLSD&response);
 
 private:
@@ -66,13 +91,16 @@ private:
 		LLUUID toast_notification_id;
 	};
 
+	// <object_id, notification_data>
 	typedef std::map<LLUUID, LLNotificationData> script_notification_map_t;
 
 	script_notification_map_t mNotifications;
 };
 
 /**
- * Floater for displaying script forms
+ * Floater script forms.
+ * LLScriptFloater will create script form based on notification data and 
+ * will auto fit the form.
  */
 class LLScriptFloater : public LLTransientDockableFloater
 {
@@ -85,29 +113,51 @@ public:
 
 	virtual ~LLScriptFloater(){};
 
+	/**
+	 * Toggle existing floater or create and show a new one.
+	 */
 	static bool toggle(const LLUUID& object_id);
 
+	/**
+	 * Creates and shows floater
+	 */
 	static LLScriptFloater* show(const LLUUID& object_id);
 
 	const LLUUID& getObjectId() { return mObjectId; }
 
+	/**
+	 * Close notification if script floater is closed.
+	 */
 	/*virtual*/ void onClose(bool app_quitting);
 
+	/**
+	 * Hide all notification toasts when we show dockable floater
+	 */
 	/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
 
+	/**
+	 * Hide all notification toasts when we show dockable floater
+	 */
 	/*virtual*/ void setVisible(BOOL visible);
 
 protected:
 
+	/**
+	 * Creates script form, will delete old form if floater is shown for same object.
+	 */
 	void createForm(const LLUUID& object_id);
 
 	/*virtual*/ void getAllowedRect(LLRect& rect);
 
-	static void updateToasts();
+	/**
+	 * Hide all notification toasts.
+	 */
+	static void hideToastsIfNeeded();
 
 	void setObjectId(const LLUUID& id) { mObjectId = id; }
 
 private:
+	LLToastNotifyPanel* mScriptForm;
 	LLUUID mObjectId;
 };
 
-- 
cgit v1.2.3