Transplant relevant menu items to our improved bumps list

master
Ansariel 2015-04-16 10:19:52 +02:00
parent 59950592ec
commit aec50c85e7
4 changed files with 177 additions and 29 deletions

View File

@ -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)
// </FS:Ansariel>
{
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));
// <FS:Ansariel> 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));
// </FS:Ansariel>
}
@ -195,9 +198,10 @@ void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd)
row["columns"][0]["font"] = "SansSerifBold";
list->addElement(row);
// <FS:Ansariel> Instant bump list floater update
//mNames[mcd->mPerp] = mcd->mFullName;
// <FS:Ansariel> Improved bump list
}
#if 0
mNames[mcd->mPerp] = mcd->mFullName;
}
@ -286,6 +290,8 @@ void LLFloaterBump::inviteToGroup()
{
LLAvatarActions::inviteToGroup(mItemUUID);
}
#endif
// </FS:Ansariel>
// <FS:Ansariel> 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<LLFloaterBump>("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<LLFloaterBump>("bumps");
const std::string item = userdata.asString();
if (item == "can_copy")
if (!floater)
{
LLFloaterBump* floater = LLFloaterReg::findTypedInstance<LLFloaterBump>("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;

View File

@ -69,19 +69,18 @@ private:
LLFloaterBump(const LLSD& key);
virtual ~LLFloaterBump();
// <FS:Ansariel> Instant bump list floater update
// <FS:Ansariel> Improved bump list
//LLScrollListCtrl* mList;
FSScrollListCtrl* mList;
LLMenuGL* mPopupMenu;
LLUUID mItemUUID;
//LLMenuGL* mPopupMenu;
//LLUUID mItemUUID;
//typedef std::map<LLUUID, std::string> uuid_map_t;
//uuid_map_t mNames;
FSScrollListCtrl* mList;
// <FS:Ansariel> Instant bump list floater update
void updateList();
bool mDirty;
typedef std::map<LLUUID, std::string> uuid_map_t;
uuid_map_t mNames;
// </FS:Ansariel>
};
// <FS:Ansariel> FIRE-13888: Add copy function to bumps list

View File

@ -1,4 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<context_menu name="Bump List Context Menu">
<menu_item_call label="Profil anzeigen" name="show_agent"/>
<menu_item_call label="IM senden" name="send_im"/>
<menu_item_call label="Zoome auf Einwohner" name="zoom_agent"/>
<menu_item_call label="Zu Einwohner teleportieren" name="teleportto_agent"/>
<menu_item_check label="Blockieren" name="Block"/>
<menu_item_call label="Melden" name="report"/>
<menu_item_call label="Kopieren" name="Copy"/>
</context_menu>

View File

@ -1,6 +1,70 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<context_menu
name="Bump List Context Menu">
<menu_item_call
label="View Profile"
name="show_agent">
<on_click
function="BumpList.Action"
parameter="show_profile"/>
<on_enable
function="BumpList.Enable"
parameter="can_show_profile"/>
</menu_item_call>
<menu_item_call
label="Send IM..."
name="send_im">
<on_click
function="BumpList.Action"
parameter="sendim"/>
<on_enable
function="BumpList.Enable"
parameter="can_sendim"/>
</menu_item_call>
<menu_item_call
label="Zoom at Resident"
name="zoom_agent">
<on_click
function="BumpList.Action"
parameter="zoom"/>
<on_enable
function="BumpList.Enable"
parameter="can_zoom"/>
</menu_item_call>
<menu_item_call
label="Teleport to Resident"
name="teleportto_agent">
<on_click
function="BumpList.Action"
parameter="teleportto"/>
<on_enable
function="BumpList.Enable"
parameter="can_teleportto"/>
</menu_item_call>
<menu_item_check
label="Block"
name="Block">
<menu_item_check.on_click
function="BumpList.Action"
parameter="block"/>
<menu_item_check.on_check
function="BumpList.Enable"
parameter="is_blocked"/>
<menu_item_check.on_enable
function="BumpList.Enable"
parameter="can_block"/>
</menu_item_check>
<menu_item_call
label="Report"
name="report">
<on_click
function="BumpList.Action"
parameter="report"/>
<on_enable
function="BumpList.Enable"
parameter="can_report"/>
</menu_item_call>
<menu_item_separator/>
<menu_item_call
enabled="false"
label="Copy"