From 8e3e6393888ebe7e751f6bec0c50bdaf7db1f120 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 29 Jan 2014 20:23:41 +0100 Subject: [PATCH] Add request teleport option to V2 chat header context menu & avatar SLURL context menu --- indra/llui/fsregistrarutils.h | 3 +- indra/llui/llscrolllistctrl.cpp | 2 + indra/llui/lltextbase.cpp | 2 + indra/newview/fschathistory.cpp | 86 +++++++------------ indra/newview/fscommon.cpp | 2 +- indra/newview/fsslurlcommand.cpp | 10 +++ .../skins/default/xui/en/menu_avatar_icon.xml | 15 +--- .../skins/default/xui/en/menu_url_agent.xml | 9 ++ 8 files changed, 57 insertions(+), 72 deletions(-) diff --git a/indra/llui/fsregistrarutils.h b/indra/llui/fsregistrarutils.h index ce6d73bc27..976a6f49d6 100644 --- a/indra/llui/fsregistrarutils.h +++ b/indra/llui/fsregistrarutils.h @@ -37,7 +37,8 @@ enum EFSRegistrarFunctionActionType FS_RGSTR_ACT_OFFER_TELEPORT, FS_RGSTR_ACT_SHOW_PROFILE, FS_RGSTR_ACT_TRACK_AVATAR, - FS_RGSTR_ACT_TELEPORT_TO + FS_RGSTR_ACT_TELEPORT_TO, + FS_RGSTR_ACT_REQUEST_TELEPORT }; class FSRegistrarUtils diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index eb53269124..2f4ff2b4e9 100755 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -1914,6 +1914,7 @@ BOOL LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask) registrar.add("FS.ZoomIn", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/zoom")); registrar.add("FS.TeleportToTarget", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/teleportto")); registrar.add("FS.OfferTeleport", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/offerteleport")); + registrar.add("FS.RequestTeleport", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/requestteleport")); registrar.add("FS.TrackAvatar", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/track")); registrar.add("FS.AddToContactSet", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/addtocontactset")); // [FS:CR] // Additional convenience options @@ -1928,6 +1929,7 @@ BOOL LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask) enable_registrar.add("FS.EnableOfferTeleport", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, uuid, FS_RGSTR_ACT_OFFER_TELEPORT)); enable_registrar.add("FS.EnableTrackAvatar", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, uuid, FS_RGSTR_ACT_TRACK_AVATAR)); enable_registrar.add("FS.EnableTeleportToTarget", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, uuid, FS_RGSTR_ACT_TELEPORT_TO)); + enable_registrar.add("FS.EnableRequestTeleport", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, uuid, FS_RGSTR_ACT_REQUEST_TELEPORT)); // // create the context menu from the XUI file and display it diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 3d0632452b..740a03579c 100755 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2057,6 +2057,7 @@ void LLTextBase::createUrlContextMenu(S32 x, S32 y, const std::string &in_url) registrar.add("FS.ZoomIn", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/zoom")); registrar.add("FS.TeleportToTarget", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/teleportto")); registrar.add("FS.OfferTeleport", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/offerteleport")); + registrar.add("FS.RequestTeleport", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/requestteleport")); registrar.add("FS.TrackAvatar", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/track")); registrar.add("FS.AddToContactSet", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/addtocontactset")); // [FS:CR] // @@ -2072,6 +2073,7 @@ void LLTextBase::createUrlContextMenu(S32 x, S32 y, const std::string &in_url) enable_registrar.add("FS.EnableOfferTeleport", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, target_id, FS_RGSTR_ACT_OFFER_TELEPORT)); enable_registrar.add("FS.EnableTrackAvatar", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, target_id, FS_RGSTR_ACT_TRACK_AVATAR)); enable_registrar.add("FS.EnableTeleportToTarget", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, target_id, FS_RGSTR_ACT_TELEPORT_TO)); + enable_registrar.add("FS.EnableRequestTeleport", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, target_id, FS_RGSTR_ACT_REQUEST_TELEPORT)); // // create and return the context menu from the XUI file diff --git a/indra/newview/fschathistory.cpp b/indra/newview/fschathistory.cpp index c667369140..919efd3033 100644 --- a/indra/newview/fschathistory.cpp +++ b/indra/newview/fschathistory.cpp @@ -206,6 +206,10 @@ public: { LLAvatarActions::offerTeleport(getAvatarId()); } + else if (level == "request_teleport") + { + LLAvatarActions::teleportRequest(getAvatarId()); + } else if (level == "voice_call") { LLAvatarActions::startCall(getAvatarId()); @@ -276,62 +280,10 @@ public: { return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagVoiceChat); } - else if (level == "is_muted") + if (level == "is_muted") { return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagTextChat); } - else if (level == "can_view_profile") - { - return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_SHOW_PROFILE); - } - else if (level == "can_im") - { - return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_SEND_IM); - } - else if (level == "can_offer_teleport") - { - return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_OFFER_TELEPORT); - } - else if (level == "can_teleport_to") - { - return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_TELEPORT_TO); - } - else if (level == "can_voice_call") - { - return (gAgentID != getAvatarId() && LLAvatarActions::canCall()); - } - else if (level == "can_show_history") - { - return (gAgentID != getAvatarId()); - } - else if (level == "can_zoom_in") - { - return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_ZOOM_IN); - } - else if (level == "can_track") - { - return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_TRACK_AVATAR); - } - else if (level == "can_share") - { - return (gAgentID != getAvatarId()); - } - else if (level == "can_pay") - { - return (gAgentID != getAvatarId()); - } - else if (level == "can_block") - { - return (gAgentID != getAvatarId()); - } - else if (level == "can_mute") - { - return (gAgentID != getAvatarId()); - } - else if (level == "can_invite_to_group") - { - return (gAgentID != getAvatarId()); - } return false; } @@ -689,13 +641,35 @@ protected: menu->setItemEnabled("Add Friend", false); menu->setItemEnabled("Send IM", false); menu->setItemEnabled("Remove Friend", false); + menu->setItemEnabled("Offer Teleport",false); + menu->setItemEnabled("Request Teleport",false); + menu->setItemEnabled("Teleport to",false); + menu->setItemEnabled("Voice Call", false); + menu->setItemEnabled("Add Contact Set", false); + menu->setItemEnabled("Invite Group", false); + menu->setItemEnabled("Zoom In", false); + menu->setItemEnabled("track", false); + menu->setItemEnabled("Share", false); + menu->setItemEnabled("Pay", false); + menu->setItemEnabled("Block Unblock", false); + menu->setItemEnabled("Mute Text", false); } - - if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID)) + else { - menu->setItemVisible("Send IM", false); + menu->setItemEnabled("Send IM", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_SEND_IM)); + menu->setItemEnabled("Show Profile", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_SHOW_PROFILE)); + menu->setItemEnabled("Teleport to", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_TELEPORT_TO)); + menu->setItemEnabled("Offer Teleport", LLAvatarActions::canOfferTeleport(mAvatarID)); + menu->setItemEnabled("Request Teleport", LLAvatarActions::canOfferTeleport(mAvatarID)); + menu->setItemEnabled("Voice Call", LLAvatarActions::canCall()); + menu->setItemEnabled("Zoom In", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_ZOOM_IN)); + menu->setItemEnabled("track", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_TRACK_AVATAR)); + menu->setItemEnabled("Block Unblock", LLAvatarActions::canBlock(mAvatarID)); + menu->setItemEnabled("Mute Text", LLAvatarActions::canBlock(mAvatarID)); } + menu->setItemEnabled("Chat History", LLLogChat::isTranscriptExist(mAvatarID)); + menu->setItemEnabled("Map", (LLAvatarTracker::instance().isBuddyOnline(mAvatarID) && is_agent_mappable(mAvatarID)) || gAgent.isGodlike() ); menu->buildDrawLabels(); menu->updateParent(LLMenuGL::sMenuContainer); LLMenuGL::showPopup(this, menu, x, y); diff --git a/indra/newview/fscommon.cpp b/indra/newview/fscommon.cpp index 46824df432..4673263a29 100644 --- a/indra/newview/fscommon.cpp +++ b/indra/newview/fscommon.cpp @@ -318,7 +318,7 @@ bool FSCommon::checkIsActionEnabled(const LLUUID& av_id, EFSRegistrarFunctionAct { return (!isSelf && LLAvatarActions::canZoomIn(av_id)); } - else if (action == FS_RGSTR_ACT_OFFER_TELEPORT) + else if (action == FS_RGSTR_ACT_OFFER_TELEPORT || action == FS_RGSTR_ACT_REQUEST_TELEPORT) { return (!isSelf && LLAvatarActions::canOfferTeleport(av_id)); } diff --git a/indra/newview/fsslurlcommand.cpp b/indra/newview/fsslurlcommand.cpp index 7e92ae06e8..030d034591 100644 --- a/indra/newview/fsslurlcommand.cpp +++ b/indra/newview/fsslurlcommand.cpp @@ -80,6 +80,16 @@ public: return true; } + if (verb == "requestteleport") + { + if (gAgentID != target_id) + { + LLAvatarActions::teleportRequest(target_id); + } + + return true; + } + if (verb == "teleportto") { if (gAgentID != target_id) diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml index 94abe693a3..4fae4ac983 100755 --- a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml @@ -15,7 +15,6 @@ - - - - - + - - - - - - - - - diff --git a/indra/newview/skins/default/xui/en/menu_url_agent.xml b/indra/newview/skins/default/xui/en/menu_url_agent.xml index f4fbf66b99..30c3262034 100755 --- a/indra/newview/skins/default/xui/en/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/en/menu_url_agent.xml @@ -66,6 +66,15 @@ + + + +