From ba6784647b53919c09ef339fd99af152aa0f8458 Mon Sep 17 00:00:00 2001
From: Mnikolenko Productengine <mnikolenko@productengine.com>
Date: Wed, 20 Mar 2024 23:21:48 +0200
Subject: LLLuaFloater code clean up

---
 indra/llui/llfloater.cpp                           |  4 ---
 indra/llui/llfloater.h                             |  3 --
 indra/llui/llfloaterreglistener.cpp                | 20 ++---------
 indra/llui/llfloaterreglistener.h                  |  1 -
 indra/llui/llluafloater.cpp                        | 39 +++++++++-------------
 indra/llui/llluafloater.h                          |  3 +-
 indra/newview/scripts/lua/test_luafloater_demo.lua |  2 +-
 .../scripts/lua/test_luafloater_gesture_list.lua   |  2 +-
 8 files changed, 23 insertions(+), 51 deletions(-)

diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index b9b69b5a33..de3de53569 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -3623,10 +3623,6 @@ void LLFloater::applyRelativePosition()
 	translate(new_center.mX - cur_center.mX, new_center.mY - cur_center.mY);
 }
 
-bool LLFloater::isDefaultBtnName(const std::string& name)
-{
-    return (std::find(std::begin(sButtonNames), std::end(sButtonNames), name) != std::end(sButtonNames));
-}
 
 LLCoordFloater::LLCoordFloater(F32 x, F32 y, LLFloater& floater)
 :	coord_t((S32)x, (S32)y)
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 9d49c4538e..88f9e77777 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -372,9 +372,6 @@ public:
 	void			enableResizeCtrls(bool enable, bool width = true, bool height = true);
 
 	bool			isPositioning(LLFloaterEnums::EOpenPositioning p) const { return (p == mPositioning); }
-
-    static bool isDefaultBtnName(const std::string& name);
-
 protected:
 	void			applyControlsAndPosition(LLFloater* other);
 
diff --git a/indra/llui/llfloaterreglistener.cpp b/indra/llui/llfloaterreglistener.cpp
index bdf26c1db8..8316101264 100644
--- a/indra/llui/llfloaterreglistener.cpp
+++ b/indra/llui/llfloaterreglistener.cpp
@@ -74,11 +74,9 @@ LLFloaterRegListener::LLFloaterRegListener():
         &LLFloaterRegListener::clickButton,
         requiredNameButton);
 
-    LLSD requiredParams;
-    requiredParams["xml_path"] = LLSD();
     add("showLuaFloater",
-        "Open the new floater using XML file specified in [\"xml_path\"]",
-        &LLFloaterRegListener::showLuaFloater, requiredParams);
+        "Open the new floater using XML file specified in [\"xml_path\"] with ID in [\"reqid\"]",
+        &LLLuaFloater::showLuaFloater, {llsd::map("xml_path", LLSD(), "reqid", LLSD())});
     add("getFloaterEvents",
         "Return the table of Lua Floater events which are send to the script",
         &LLFloaterRegListener::getLuaFloaterEvents);
@@ -165,20 +163,8 @@ void LLFloaterRegListener::clickButton(const LLSD& event) const
     }
 }
 
-void LLFloaterRegListener::showLuaFloater(const LLSD &event) const
-{
-    LLLuaFloater::showLuaFloater(event);
-}
-
 void LLFloaterRegListener::getLuaFloaterEvents(const LLSD &event) const
 {
-    if (event.has("reply"))
-    {
-        LLSD events_data = LLLuaFloater::getEventsData();
-
-        LLReqID reqID(event);
-        LLSD reply(reqID.makeResponse());
-        LLEventPumps::instance().obtain(event["reply"]).post(reply.with("events", events_data));
-    }
+    Response response(llsd::map("events", LLLuaFloater::getEventsData()), event);
 }
 
diff --git a/indra/llui/llfloaterreglistener.h b/indra/llui/llfloaterreglistener.h
index cbfb7855b9..9cb0af2de5 100644
--- a/indra/llui/llfloaterreglistener.h
+++ b/indra/llui/llfloaterreglistener.h
@@ -50,7 +50,6 @@ private:
     void instanceVisible(const LLSD& event) const;
     void clickButton(const LLSD& event) const;
 
-    void showLuaFloater(const LLSD &event) const;
     void getLuaFloaterEvents(const LLSD &event) const;
 };
 
diff --git a/indra/llui/llluafloater.cpp b/indra/llui/llluafloater.cpp
index 27ae85c844..668c0edc53 100644
--- a/indra/llui/llluafloater.cpp
+++ b/indra/llui/llluafloater.cpp
@@ -51,8 +51,9 @@ std::map<std::string, std::string> EVENT_LIST =
 
 LLLuaFloater::LLLuaFloater(const LLSD &key) :
     LLFloater(key), 
-    mCommandPumpName(key["reply"].asString()),
-    mDispatcher("LLLuaFloater", "action")
+    mReplyPumpName(key["reply"].asString()),
+    mDispatcher("LLLuaFloater", "action"),
+    mReqID(key)
 {
     mListenerPumpName = LLUUID::generateNewID().asString();
 
@@ -69,7 +70,7 @@ LLLuaFloater::LLLuaFloater(const LLSD &key) :
         return false;
     });
 
-    LLSD requiredParams = LLSD().with("ctrl_name", LLSD()).with("value", LLSD());
+    LLSD requiredParams = llsd::map("ctrl_name", LLSD(), "value", LLSD());
     mDispatcher.add("set_enabled", "", [this](const LLSD &event) 
     { 
         LLUICtrl *ctrl = getChild<LLUICtrl>(event["ctrl_name"].asString());
@@ -103,13 +104,11 @@ LLLuaFloater::LLLuaFloater(const LLSD &key) :
         }
     }, requiredParams);
 
-    requiredParams = LLSD().with("value", LLSD());
     mDispatcher.add("set_title", "", [this](const LLSD &event) 
     { 
         setTitle(event["value"].asString());
-    }, requiredParams);
+    }, llsd::map("value", LLSD()));
 
-    requiredParams = LLSD().with("ctrl_name", LLSD()).with("reqid", LLSD());
     mDispatcher.add("get_value", "", [this](const LLSD &event) 
     { 
         LLUICtrl *ctrl = getChild<LLUICtrl>(event["ctrl_name"].asString());
@@ -120,7 +119,7 @@ LLLuaFloater::LLLuaFloater(const LLSD &key) :
             response["reqid"] = event["reqid"];
             post(response);
         }
-    }, requiredParams);
+    }, llsd::map("ctrl_name", LLSD(), "reqid", LLSD()));
 }
 
 LLLuaFloater::~LLLuaFloater()
@@ -131,13 +130,8 @@ LLLuaFloater::~LLLuaFloater()
 
 BOOL LLLuaFloater::postBuild() 
 {
-    child_list_t::const_iterator iter = getChildList()->begin();
-    child_list_t::const_iterator end = getChildList()->end();
-    for (; iter != end; ++iter)
+    for (LLView *view : *getChildList())
     {
-        LLView *view  = *iter;
-        if (!view) continue;
-
         LLUICtrl *ctrl = dynamic_cast<LLUICtrl*>(view);
         if (ctrl)
         {
@@ -158,27 +152,24 @@ BOOL LLLuaFloater::postBuild()
     if (mKey.has("extra_events"))
     {
         //the first value is ctrl name, the second contains array of events to send
-        const LLSD &events_map = mKey["extra_events"];
-        for (LLSD::map_const_iterator it = events_map.beginMap(); it != events_map.endMap(); ++it)
+        for (const auto &[name, data] : llsd::inMap(mKey["extra_events"]))
         {
-            std::string name = (*it).first;
-            LLSD data = (*it).second;
-            for (LLSD::array_const_iterator events_it = data.beginArray(); events_it != data.endArray(); ++events_it)
+            for (const auto &event : llsd::inArray(data))
             {
-                registerCallback(name, events_it->asString());
+                registerCallback(name, event);
             }
         }
     }
 
     //send pump name to the script after the floater is built
-    post(LLSD().with("command_name", mListenerPumpName).with("event", EVENT_LIST["POST_BUILD_EVENT"]));
+    post(llsd::map("command_name", mListenerPumpName, "event", EVENT_LIST["POST_BUILD_EVENT"]));
 
     return true;
 }
 
 void LLLuaFloater::onClose(bool app_quitting)
 {
-    post(LLSD().with("event", EVENT_LIST["CLOSE_EVENT"]));
+    post(llsd::map("event", EVENT_LIST["CLOSE_EVENT"], "app_quitting", app_quitting));
 }
 
 void LLLuaFloater::registerCallback(const std::string &ctrl_name, const std::string &event)
@@ -247,8 +238,10 @@ void LLLuaFloater::registerCallback(const std::string &ctrl_name, const std::str
 
 void LLLuaFloater::post(const LLSD &data)
 {
-    //send event data to the script
-    LLEventPumps::instance().obtain(mCommandPumpName).post(data);
+    // send event data to the script signed with ["reqid"] key
+    LLSD stamped_data(data);
+    mReqID.stamp(stamped_data);
+    LLEventPumps::instance().obtain(mReplyPumpName).post(stamped_data);
 }
 
 void LLLuaFloater::showLuaFloater(const LLSD &data)
diff --git a/indra/llui/llluafloater.h b/indra/llui/llluafloater.h
index 0dd39e7d1e..b9f96f0ad3 100644
--- a/indra/llui/llluafloater.h
+++ b/indra/llui/llluafloater.h
@@ -45,10 +45,11 @@ public:
     static LLSD getEventsData();
 
 private:
+    LLReqID mReqID;
     LLEventDispatcher mDispatcher;
     LLTempBoundListener mBoundListener;
 
     std::string mListenerPumpName;
-    std::string mCommandPumpName;
+    std::string mReplyPumpName;
 };
 #endif
diff --git a/indra/newview/scripts/lua/test_luafloater_demo.lua b/indra/newview/scripts/lua/test_luafloater_demo.lua
index a7bbdccb30..2cbafcec14 100644
--- a/indra/newview/scripts/lua/test_luafloater_demo.lua
+++ b/indra/newview/scripts/lua/test_luafloater_demo.lua
@@ -62,7 +62,7 @@ local key = {xml_path = XML_FILE_PATH, op = "showLuaFloater"}
 
 --sign for additional events for defined control {<control_name>= {action1, action2, ...}}
 key.extra_events={show_time_lbl = {e.RIGHT_MOUSE_DOWN_EVENT, e.DOUBLE_CLICK_EVENT}}
-leap.send("LLFloaterReg", key)
+leap.send("LLFloaterReg", key, "floater1")
 
 coro.launch(process_events, catch_events)
 leap.process()
diff --git a/indra/newview/scripts/lua/test_luafloater_gesture_list.lua b/indra/newview/scripts/lua/test_luafloater_gesture_list.lua
index 070ff8415a..5ea2b1e30d 100644
--- a/indra/newview/scripts/lua/test_luafloater_gesture_list.lua
+++ b/indra/newview/scripts/lua/test_luafloater_gesture_list.lua
@@ -56,7 +56,7 @@ end
 local key = {xml_path = XML_FILE_PATH, op = "showLuaFloater"}
 --receive additional events for defined control {<control_name>= {action1, action2, ...}}
 key.extra_events={gesture_list = {e.DOUBLE_CLICK_EVENT}}
-leap.send("LLFloaterReg", key)
+leap.send("LLFloaterReg", key, "floater1")
 
 coro.launch(process_events, catch_events)
 leap.process()
-- 
cgit v1.2.3