351 lines
11 KiB
C++
351 lines
11 KiB
C++
/**
|
|
* @file llavataractions.h
|
|
* @brief Friend-related actions (add, remove, offer teleport, etc)
|
|
*
|
|
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
|
|
* Second Life Viewer Source Code
|
|
* Copyright (C) 2010, Linden Research, Inc.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation;
|
|
* version 2.1 of the License only.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
|
* $/LicenseInfo$
|
|
*/
|
|
|
|
#ifndef LL_LLAVATARACTIONS_H
|
|
#define LL_LLAVATARACTIONS_H
|
|
|
|
#include "llsd.h"
|
|
#include "lluuid.h"
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
class LLAvatarName;
|
|
class LLInventoryPanel;
|
|
class LLFloater;
|
|
class LLView;
|
|
|
|
std::string getProfileURL(const std::string& agent_name, bool feed_only = false);
|
|
|
|
/**
|
|
* Friend-related actions (add, remove, offer teleport, etc)
|
|
*/
|
|
class LLAvatarActions
|
|
{
|
|
public:
|
|
/**
|
|
* Show a dialog explaining what friendship entails, then request friendship.
|
|
*/
|
|
static void requestFriendshipDialog(const LLUUID& id, const std::string& name);
|
|
|
|
/**
|
|
* Show a dialog explaining what friendship entails, then request friendship.
|
|
*/
|
|
static void requestFriendshipDialog(const LLUUID& id);
|
|
|
|
/**
|
|
* Show a friend removal dialog.
|
|
*/
|
|
static void removeFriendDialog(const LLUUID& id);
|
|
static void removeFriendsDialog(const uuid_vec_t& ids);
|
|
|
|
/**
|
|
* Show teleport offer dialog.
|
|
*/
|
|
static void offerTeleport(const LLUUID& invitee);
|
|
static void offerTeleport(const uuid_vec_t& ids);
|
|
|
|
/**
|
|
* Start instant messaging session.
|
|
*/
|
|
static void startIM(const LLUUID& id);
|
|
|
|
/**
|
|
* End instant messaging session.
|
|
*/
|
|
static void endIM(const LLUUID& id);
|
|
|
|
/**
|
|
* Start an avatar-to-avatar voice call with another user
|
|
*/
|
|
static void startCall(const LLUUID& id);
|
|
|
|
/**
|
|
* Start an ad-hoc conference voice call with multiple users in a specific IM floater.
|
|
*/
|
|
// <FS:Ansariel> [FS Communication UI]
|
|
//static void startAdhocCall(const uuid_vec_t& ids, const LLUUID& floater_id = LLUUID::null);
|
|
static const LLUUID startAdhocCall(const uuid_vec_t& ids, const LLUUID& floater_id = LLUUID::null);
|
|
// </FS:Ansariel>
|
|
|
|
/**
|
|
* Start conference chat with the given avatars in a specific IM floater.
|
|
*/
|
|
// <FS:Ansariel> [FS Communication UI]
|
|
//static void startConference(const uuid_vec_t& ids, const LLUUID& floater_id = LLUUID::null);
|
|
static const LLUUID startConference(const uuid_vec_t& ids, const LLUUID& floater_id = LLUUID::null);
|
|
// </FS:Ansariel>
|
|
|
|
/**
|
|
* Show avatar profile.
|
|
*/
|
|
static void showProfile(const LLUUID& avatar_id);
|
|
static void showPicks(const LLUUID& avatar_id);
|
|
static void showPick(const LLUUID& avatar_id, const LLUUID& pick_id);
|
|
static void createPick();
|
|
static void showClassifieds(const LLUUID& avatar_id);
|
|
static void showClassified(const LLUUID& avatar_id, const LLUUID& classified_id, bool edit = false);
|
|
static void createClassified();
|
|
static void hideProfile(const LLUUID& avatar_id);
|
|
static bool profileVisible(const LLUUID& avatar_id);
|
|
static bool isPickTabSelected(const LLUUID& avatar_id);
|
|
static LLFloater* getProfileFloater(const LLUUID& avatar_id);
|
|
|
|
/**
|
|
* Show avatar on world map.
|
|
*/
|
|
static void showOnMap(const LLUUID& id);
|
|
|
|
/**
|
|
* Give money to the avatar.
|
|
*/
|
|
static void pay(const LLUUID& id);
|
|
|
|
/**
|
|
* Request teleport from other avatar
|
|
*/
|
|
static void teleportRequest(const LLUUID& id);
|
|
static void teleport_request_callback(const LLSD& notification, const LLSD& response);
|
|
|
|
/**
|
|
* Share items with the avatar.
|
|
*/
|
|
static void share(const LLUUID& id);
|
|
|
|
/**
|
|
* Share items with the picked avatars.
|
|
*/
|
|
static void shareWithAvatars(LLView * panel);
|
|
|
|
/**
|
|
* Block/unblock the avatar by id.
|
|
* Returns true if blocked, returns false if unblocked
|
|
*/
|
|
static bool toggleBlock(const LLUUID& id);
|
|
|
|
/**
|
|
* Mute/unmute avatar.
|
|
*/
|
|
static void toggleMute(const LLUUID& id, U32 flags);
|
|
|
|
/**
|
|
* Block/unblock the avatar voice.
|
|
*/
|
|
static void toggleMuteVoice(const LLUUID& id);
|
|
|
|
/**
|
|
* Return true if avatar with "id" is a friend
|
|
*/
|
|
static bool isFriend(const LLUUID& id);
|
|
|
|
/**
|
|
* @return true if the avatar is blocked
|
|
*/
|
|
static bool isBlocked(const LLUUID& id);
|
|
|
|
/**
|
|
* @return true if the avatar voice is blocked
|
|
*/
|
|
static bool isVoiceMuted(const LLUUID& id);
|
|
|
|
/**
|
|
* @return true if you can block the avatar
|
|
*/
|
|
static bool canBlock(const LLUUID& id);
|
|
|
|
/**
|
|
* Return true if the avatar is in a P2P voice call with a given user
|
|
*/
|
|
/* AD *TODO: Is this function needed any more?
|
|
I fixed it a bit(added check for canCall), but it appears that it is not used
|
|
anywhere. Maybe it should be removed?
|
|
static bool isCalling(const LLUUID &id);*/
|
|
|
|
/**
|
|
* @return true if call to the resident can be made
|
|
*/
|
|
|
|
static bool canCall();
|
|
/**
|
|
* Invite avatar to a group.
|
|
*/
|
|
static void inviteToGroup(const LLUUID& id);
|
|
|
|
static void freezeAvatar(const LLUUID& id);
|
|
|
|
static void ejectAvatar(const LLUUID& id, bool ban_enabled = false);
|
|
/**
|
|
* Kick avatar off grid
|
|
*/
|
|
static void kick(const LLUUID& id);
|
|
|
|
/**
|
|
* Freeze avatar
|
|
*/
|
|
static void freeze(const LLUUID& id);
|
|
|
|
/**
|
|
* Unfreeze avatar
|
|
*/
|
|
static void unfreeze(const LLUUID& id);
|
|
|
|
/**
|
|
* Open csr page for avatar
|
|
*/
|
|
static void csr(const LLUUID& id, std::string name);
|
|
|
|
/**
|
|
* [FS:CR] Add avatar to contact set
|
|
*/
|
|
static void addToContactSet(const LLUUID& agent_id);
|
|
static void addToContactSet(const uuid_vec_t& agent_ids);
|
|
|
|
/**
|
|
* Checks whether we can offer a teleport to the avatar, only offline friends
|
|
* cannot be offered a teleport.
|
|
*
|
|
* @return false if avatar is a friend and not visibly online
|
|
*/
|
|
static bool canOfferTeleport(const LLUUID& id);
|
|
|
|
/**
|
|
* @return a list of avatars that can be teleported from the input list
|
|
*/
|
|
static bool canOfferTeleport(const uuid_vec_t& ids);
|
|
|
|
// <FS:Ansariel> Extra request teleport
|
|
static bool canRequestTeleport(const LLUUID& id);
|
|
|
|
/**
|
|
* Checks whether all items selected in the given inventory panel can be shared
|
|
*
|
|
* @param inv_panel Inventory panel to get selection from. If NULL, the active inventory panel is used.
|
|
*
|
|
* @return false if the selected items cannot be shared or the active inventory panel cannot be obtained
|
|
*/
|
|
static bool canShareSelectedItems(LLInventoryPanel* inv_panel = NULL);
|
|
|
|
/**
|
|
* Builds a string of residents' display names separated by "words_separator" string.
|
|
*
|
|
* @param avatar_names - a vector of given avatar names from which resulting string is built
|
|
* @param residents_string - the resulting string
|
|
*/
|
|
static void buildResidentsString(std::vector<LLAvatarName> avatar_names, std::string& residents_string, bool complete_name = false);
|
|
|
|
/**
|
|
* Builds a string of residents' display names separated by "words_separator" string.
|
|
*
|
|
* @param avatar_uuids - a vector of given avatar uuids from which resulting string is built
|
|
* @param residents_string - the resulting string
|
|
*/
|
|
static void buildResidentsString(const uuid_vec_t& avatar_uuids, std::string& residents_string);
|
|
|
|
/**
|
|
* Opens the chat history for avatar
|
|
*/
|
|
static void viewChatHistory(const LLUUID& id);
|
|
static void viewChatHistoryExternally(const LLUUID& id); // <FS:CR> Open chat history externally
|
|
|
|
// [SL:KB] - Patch: UI-SidepanelPeople | Checked: 2010-12-02 (Catznip-2.4.0g) | Modified: Catznip-2.4.0g
|
|
static void report(const LLUUID& idAgent);
|
|
|
|
static bool canZoomIn(const LLUUID& idAgent);
|
|
static void zoomIn(const LLUUID& idAgent);
|
|
static void getScriptInfo(const LLUUID& idAgent);
|
|
|
|
// <FS:Ansariel> Avatar tracking feature
|
|
static void track(const LLUUID& id);
|
|
|
|
// <FS:Ansariel> Teleport to feature
|
|
static void teleportTo(const LLUUID& id);
|
|
|
|
//
|
|
// Parcel actions
|
|
//
|
|
|
|
public:
|
|
|
|
static bool canLandFreezeOrEject(const LLUUID& idAgent);
|
|
static void landEject(const LLUUID& idAgent);
|
|
static void landFreeze(const LLUUID& idAgent);
|
|
|
|
static bool canLandFreezeOrEjectMultiple(uuid_vec_t& idAgents, bool fFilter = false);
|
|
static void landEjectMultiple(const uuid_vec_t& idAgents);
|
|
static void landFreezeMultiple(const uuid_vec_t& idAgents);
|
|
|
|
protected:
|
|
static bool callbackLandEject(const LLSD& notification, const LLSD& response);
|
|
static bool callbackLandFreeze(const LLSD& notification, const LLSD& response);
|
|
|
|
//
|
|
// Estate actions
|
|
//
|
|
public:
|
|
static bool canEstateKickOrTeleportHome(const LLUUID& idAgent);
|
|
static void estateKick(const LLUUID& idAgent);
|
|
static void estateTeleportHome(const LLUUID& idAgent);
|
|
|
|
static bool canEstateKickOrTeleportHomeMultiple(uuid_vec_t& idAgents, bool fFilter = false);
|
|
static void estateKickMultiple(const uuid_vec_t& idAgents);
|
|
static void estateTeleportHomeMultiple(const uuid_vec_t& idAgents);
|
|
|
|
// <FS:Ansariel> Estate ban
|
|
static void estateBan(const LLUUID& idAgent);
|
|
static void estateBanMultiple(const uuid_vec_t& idAgents);
|
|
// </FS:Ansariel> Estate ban
|
|
|
|
// <FS:Ansariel> Derender
|
|
static void derender(const LLUUID& agent_id, bool permanent);
|
|
static void derenderMultiple(const uuid_vec_t& agent_ids, bool permanent);
|
|
static void onDerenderAvatarNameLookup(const LLUUID& agent_id, const LLAvatarName& av_name, bool permanent);
|
|
// </FS:Ansariel> Derender
|
|
|
|
static std::set<LLUUID> getInventorySelectedUUIDs(LLInventoryPanel* active_panel = NULL);
|
|
|
|
protected:
|
|
static bool callbackEstateKick(const LLSD& notification, const LLSD& response);
|
|
static bool callbackEstateTeleportHome(const LLSD& notification, const LLSD& response);
|
|
// <FS:Ansariel> Estate ban
|
|
static bool callbackEstateBan(const LLSD& notification, const LLSD& response);
|
|
|
|
private:
|
|
static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response);
|
|
static bool handleRemove(const LLSD& notification, const LLSD& response);
|
|
static bool handlePay(const LLSD& notification, const LLSD& response, LLUUID avatar_id);
|
|
static bool handleFreezeAvatar(const LLSD& notification, const LLSD& response);
|
|
static bool handleEjectAvatar(const LLSD& notification, const LLSD& response);
|
|
static bool handleKick(const LLSD& notification, const LLSD& response);
|
|
static bool handleFreeze(const LLSD& notification, const LLSD& response);
|
|
static bool handleUnfreeze(const LLSD& notification, const LLSD& response);
|
|
static void callback_invite_to_group(LLUUID group_id, LLUUID id);
|
|
|
|
// Just request friendship, no dialog.
|
|
static void requestFriendship(const LLUUID& target_id, const std::string& target_name, const std::string& message);
|
|
};
|
|
|
|
#endif // LL_LLAVATARACTIONS_H
|