From 4bd4150d06bfd3a47bdcd2b47d388a6453980e70 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Wed, 7 Oct 2009 22:31:02 -0700 Subject: Added typing info to mini-map radar --- ChangeLog.txt | 8 +++++ linden/indra/newview/llfloatermap.cpp | 36 ++++++++++++++++++++-- linden/indra/newview/llfloatermap.h | 6 +++- linden/indra/newview/llviewermessage.cpp | 16 ++++++++++ .../skins/default/xui/en-us/floater_mini_map.xml | 5 ++- 5 files changed, 67 insertions(+), 4 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index e069050..540c56d 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,5 +1,13 @@ 2009-10-07 McCabe Maxsted + * Added typing info to mini-map radar. + + modified: linden/indra/newview/llfloatermap.cpp + modified: linden/indra/newview/llfloatermap.h + modified: linden/indra/newview/llviewermessage.cpp + modified: linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml + + * Fixed random mouseclicks on the edge of the window. modified: linden/indra/newview/llviewerwindow.cpp diff --git a/linden/indra/newview/llfloatermap.cpp b/linden/indra/newview/llfloatermap.cpp index e90e3b4..ae5b2b6 100644 --- a/linden/indra/newview/llfloatermap.cpp +++ b/linden/indra/newview/llfloatermap.cpp @@ -80,6 +80,7 @@ LLFloaterMap::LLFloaterMap(const LLSD& key) LLUICtrlFactory::getInstance()->buildFloater(this, "floater_mini_map.xml", &factory_map, FALSE); mChatAvatars.clear(); + mTypingAvatars.clear(); } @@ -303,11 +304,18 @@ void LLFloaterMap::populateRadar() mChatAvatars.clear(); } - std::string mute_text = LLMuteList::getInstance()->isMuted(avatar_ids[i]) ? getString("muted") : ""; + // append typing string + std::string typing = ""; + if (getIsTyping(avatar_ids[i])) + { + typing = getString("is_typing")+ " "; + } + + std::string mute_text = LLMuteList::getInstance()->isMuted(avatar_ids[i]) ? getString("is_muted") : ""; element["id"] = avatar_ids[i]; element["columns"][0]["column"] = "avatar_name"; element["columns"][0]["type"] = "text"; - element["columns"][0]["value"] = fullname + " " + mute_text; + element["columns"][0]["value"] = typing + fullname + " " + mute_text; element["columns"][1]["column"] = "avatar_distance"; element["columns"][1]["type"] = "text"; element["columns"][1]["value"] = dist_string+"m"; @@ -384,6 +392,30 @@ void LLFloaterMap::removeFromChatList(LLUUID agent_id) mChatAvatars.erase(agent_id); } +bool LLFloaterMap::getIsTyping(LLUUID agent_id) +{ + if (mTypingAvatars.count(agent_id) > 0) + { + return true; + } + return false; +} + +void LLFloaterMap::updateTypingList(LLUUID agent_id, bool remove) +{ + if (remove) + { + if (getIsTyping(agent_id)) + { + mTypingAvatars.erase(agent_id); + } + } + else + { + mTypingAvatars.insert(agent_id); + } +} + void LLFloaterMap::toggleButtons() { BOOL enable = FALSE; diff --git a/linden/indra/newview/llfloatermap.h b/linden/indra/newview/llfloatermap.h index deb972b..6e44a1e 100644 --- a/linden/indra/newview/llfloatermap.h +++ b/linden/indra/newview/llfloatermap.h @@ -52,6 +52,9 @@ public: // returns true if agent_id belongs to a developer listed in llfloatermap.cpp static bool isImpDev(LLUUID agent_id); + bool getIsTyping(LLUUID agent_id); + void updateTypingList(LLUUID agent_id, bool remove); + BOOL postBuild(); /*virtual*/ void draw(); @@ -69,7 +72,8 @@ private: LLNetMap* mPanelMap; LLScrollListCtrl* mRadarList; LLUUID mSelectedAvatar; - std::set mChatAvatars; + std::set mChatAvatars; + std::set mTypingAvatars; bool mUpdate; static void onList(LLUICtrl* ctrl, void* user_data); diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 464d687..c9e0f7f 100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp @@ -78,6 +78,7 @@ #include "llfloatergroupinfo.h" #include "llfloaterimagepreview.h" #include "llfloaterland.h" +#include "llfloatermap.h" #include "llfloaterregioninfo.h" #include "llfloaterlandholdings.h" #include "llurldispatcher.h" @@ -2547,6 +2548,12 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) { ((LLVOAvatar*)chatter)->startTyping(); } + + if (LLFloaterMap::getInstance()) + { + LLFloaterMap::getInstance()->updateTypingList(from_id, false); + } + return; } else if (CHAT_TYPE_STOP == chat.mChatType) @@ -2558,6 +2565,15 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) { ((LLVOAvatar*)chatter)->stopTyping(); } + + if (LLFloaterMap::getInstance()) + { + if (LLFloaterMap::getInstance()->getIsTyping(from_id)) + { + LLFloaterMap::getInstance()->updateTypingList(from_id, true); + } + } + return; } diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml b/linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml index 2cb46b7..dd9c324 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml @@ -92,9 +92,12 @@ No avatars within range - + (muted) + + (typing) + [NAME] has entered chat range ([DISTANCE]m) -- cgit v1.1