diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp index bd57f76d61..854914bc84 100755 --- a/indra/newview/llfloaterbump.cpp +++ b/indra/newview/llfloaterbump.cpp @@ -42,6 +42,7 @@ #include "llviewermenu.h" #include "llviewerobjectlist.h" +#include "fsradar.h" #include "fsscrolllistctrl.h" #include "llclipboard.h" #include "llfloaterreg.h" @@ -58,18 +59,20 @@ LLFloaterBump::LLFloaterBump(const LLSD& key) mList(NULL) // { - mCommitCallbackRegistrar.add("Avatar.SendIM", boost::bind(&LLFloaterBump::startIM, this)); - mCommitCallbackRegistrar.add("Avatar.ReportAbuse", boost::bind(&LLFloaterBump::reportAbuse, this)); - mCommitCallbackRegistrar.add("ShowAgentProfile", boost::bind(&LLFloaterBump::showProfile, this)); - mCommitCallbackRegistrar.add("Avatar.InviteToGroup", boost::bind(&LLFloaterBump::inviteToGroup, this)); - mCommitCallbackRegistrar.add("Avatar.Call", boost::bind(&LLFloaterBump::startCall, this)); - mEnableCallbackRegistrar.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall)); - mCommitCallbackRegistrar.add("Avatar.AddFriend", boost::bind(&LLFloaterBump::addFriend, this)); - mEnableCallbackRegistrar.add("Avatar.EnableAddFriend", boost::bind(&LLFloaterBump::enableAddFriend, this)); - mCommitCallbackRegistrar.add("Avatar.Mute", boost::bind(&LLFloaterBump::muteAvatar, this)); - mEnableCallbackRegistrar.add("Avatar.EnableMute", boost::bind(&LLFloaterBump::enableMute, this)); - mCommitCallbackRegistrar.add("PayObject", boost::bind(&LLFloaterBump::payAvatar, this)); - mCommitCallbackRegistrar.add("Tools.LookAtSelection", boost::bind(&LLFloaterBump::zoomInAvatar, this)); + // Improved bump list + //mCommitCallbackRegistrar.add("Avatar.SendIM", boost::bind(&LLFloaterBump::startIM, this)); + //mCommitCallbackRegistrar.add("Avatar.ReportAbuse", boost::bind(&LLFloaterBump::reportAbuse, this)); + //mCommitCallbackRegistrar.add("ShowAgentProfile", boost::bind(&LLFloaterBump::showProfile, this)); + //mCommitCallbackRegistrar.add("Avatar.InviteToGroup", boost::bind(&LLFloaterBump::inviteToGroup, this)); + //mCommitCallbackRegistrar.add("Avatar.Call", boost::bind(&LLFloaterBump::startCall, this)); + //mEnableCallbackRegistrar.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall)); + //mCommitCallbackRegistrar.add("Avatar.AddFriend", boost::bind(&LLFloaterBump::addFriend, this)); + //mEnableCallbackRegistrar.add("Avatar.EnableAddFriend", boost::bind(&LLFloaterBump::enableAddFriend, this)); + //mCommitCallbackRegistrar.add("Avatar.Mute", boost::bind(&LLFloaterBump::muteAvatar, this)); + //mEnableCallbackRegistrar.add("Avatar.EnableMute", boost::bind(&LLFloaterBump::enableMute, this)); + //mCommitCallbackRegistrar.add("PayObject", boost::bind(&LLFloaterBump::payAvatar, this)); + //mCommitCallbackRegistrar.add("Tools.LookAtSelection", boost::bind(&LLFloaterBump::zoomInAvatar, this)); + // } @@ -195,9 +198,10 @@ void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd) row["columns"][0]["font"] = "SansSerifBold"; list->addElement(row); - - // Instant bump list floater update - //mNames[mcd->mPerp] = mcd->mFullName; +// Improved bump list +} +#if 0 + mNames[mcd->mPerp] = mcd->mFullName; } @@ -286,6 +290,8 @@ void LLFloaterBump::inviteToGroup() { LLAvatarActions::inviteToGroup(mItemUUID); } +#endif +// // FIRE-13888: Add copy function to bumps list LLContextMenu* FSBumpListMenu::createMenu() @@ -303,7 +309,38 @@ void FSBumpListMenu::onContextMenuItemClick(const LLSD& userdata) { std::string item = userdata.asString(); - if (item == "copy") + if (item == "show_profile") + { + LLAvatarActions::showProfile(mUUIDs.front()); + } + else if (item == "sendim") + { + if (mUUIDs.size() == 1) + { + LLAvatarActions::startIM(mUUIDs.front()); + } + else + { + LLAvatarActions::startConference(mUUIDs); + } + } + else if (item == "zoom") + { + LLAvatarActions::zoomIn(mUUIDs.front()); + } + else if (item == "teleportto") + { + LLAvatarActions::teleportTo(mUUIDs.front()); + } + else if (item == "block") + { + LLAvatarActions::toggleBlock(mUUIDs.front()); + } + else if (item == "report") + { + LLAvatarActions::report(mUUIDs.front()); + } + else if (item == "copy") { LLFloaterBump* floater = LLFloaterReg::findTypedInstance("bumps"); if (floater && !gMeanCollisionList.empty() && !mUUIDs.empty()) @@ -327,12 +364,54 @@ void FSBumpListMenu::onContextMenuItemClick(const LLSD& userdata) bool FSBumpListMenu::onContextMenuItemEnable(const LLSD& userdata) { - std::string item = userdata.asString(); + const LLFloaterBump* floater = LLFloaterReg::findTypedInstance("bumps"); + const std::string item = userdata.asString(); - if (item == "can_copy") + if (!floater) { - LLFloaterBump* floater = LLFloaterReg::findTypedInstance("bumps"); - return (floater && !gMeanCollisionList.empty() && !mUUIDs.empty()); + return false; + } + + if (item == "can_show_profile") + { + return (!gMeanCollisionList.empty() && mUUIDs.size() == 1); + } + else if (item == "can_sendim") + { + return (!gMeanCollisionList.empty() && mUUIDs.size() > 0); + } + else if (item == "can_zoom") + { + return (!gMeanCollisionList.empty() && mUUIDs.size() == 1 && LLAvatarActions::canZoomIn(mUUIDs.front())); + } + else if (item == "can_teleportto") + { + return (!gMeanCollisionList.empty() && mUUIDs.size() == 1 && FSRadar::getInstance()->getEntry(mUUIDs.front()) != NULL); + } + else if (item == "can_block") + { + return (!gMeanCollisionList.empty() && mUUIDs.size() == 1); + } + else if (item == "is_blocked") + { + if (!gMeanCollisionList.empty() && mUUIDs.size() == 1) + { + std::string name; + gCacheName->getFullName(mUUIDs.front(), name); + return LLMuteList::getInstance()->isMuted(mUUIDs.front(), name); + } + else + { + return false; + } + } + else if (item == "can_report") + { + return (!gMeanCollisionList.empty() && mUUIDs.size() == 1); + } + else if (item == "can_copy") + { + return (!gMeanCollisionList.empty() && !mUUIDs.empty()); } return false; diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h index 21c1a082f6..b2e695b2d6 100755 --- a/indra/newview/llfloaterbump.h +++ b/indra/newview/llfloaterbump.h @@ -69,19 +69,18 @@ private: LLFloaterBump(const LLSD& key); virtual ~LLFloaterBump(); - // Instant bump list floater update + // Improved bump list //LLScrollListCtrl* mList; - FSScrollListCtrl* mList; - LLMenuGL* mPopupMenu; - LLUUID mItemUUID; + //LLMenuGL* mPopupMenu; + //LLUUID mItemUUID; + + //typedef std::map uuid_map_t; + //uuid_map_t mNames; + FSScrollListCtrl* mList; - // Instant bump list floater update void updateList(); bool mDirty; - - typedef std::map uuid_map_t; - uuid_map_t mNames; - + // }; // FIRE-13888: Add copy function to bumps list diff --git a/indra/newview/skins/default/xui/de/menu_fs_bump_list.xml b/indra/newview/skins/default/xui/de/menu_fs_bump_list.xml index f6f04cb050..5740779a90 100644 --- a/indra/newview/skins/default/xui/de/menu_fs_bump_list.xml +++ b/indra/newview/skins/default/xui/de/menu_fs_bump_list.xml @@ -1,4 +1,10 @@ + + + + + + diff --git a/indra/newview/skins/default/xui/en/menu_fs_bump_list.xml b/indra/newview/skins/default/xui/en/menu_fs_bump_list.xml index 59886feadd..80fe6a101d 100644 --- a/indra/newview/skins/default/xui/en/menu_fs_bump_list.xml +++ b/indra/newview/skins/default/xui/en/menu_fs_bump_list.xml @@ -1,6 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +