/** * @file llavataractions.h * @brief Friend-related actions (add, remove, offer teleport, etc) * * $LicenseInfo:firstyear=2009&license=viewergpl$ * * Copyright (c) 2009, Linden Research, Inc. * * Second Life Viewer Source Code * The source code in this file ("Source Code") is provided by Linden Lab * to you under the terms of the GNU General Public License, version 2.0 * ("GPL"), unless you have obtained a separate licensing agreement * ("Other License"), formally executed by you and Linden Lab. Terms of * the GPL can be found in doc/GPL-license.txt in this distribution, or * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 * * There are special exceptions to the terms and conditions of the GPL as * it is applied to this Source Code. View the full text of the exception * in the file doc/FLOSS-exception.txt in this software distribution, or * online at * http://secondlifegrid.net/programs/open_source/licensing/flossexception * * By copying, modifying or distributing this software, you acknowledge * that you have read and understood your obligations described above, * and agree to abide by those obligations. * * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, * COMPLETENESS OR PERFORMANCE. * $/LicenseInfo$ */ #ifndef LL_LLAVATARACTIONS_H #define LL_LLAVATARACTIONS_H #include "lldarray.h" #include "llsd.h" #include "lluuid.h" #include #include /** * 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 std::vector& ids); /** * Show teleport offer dialog. */ static void offerTeleport(const LLUUID& invitee); static void offerTeleport(const std::vector& 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 */ static void startAdhocCall(const std::vector& ids); /** * Start conference chat with the given avatars. */ static void startConference(const std::vector& ids); /** * Show avatar profile. */ static void showProfile(const LLUUID& id); /** * Show avatar on world map. */ static void showOnMap(const LLUUID& id); /** * Give money to the avatar. */ static void pay(const LLUUID& id); /** * Share items with the avatar. */ static void share(const LLUUID& id); /** * Block/unblock the avatar. */ static void toggleBlock(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 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); /** * 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); /** * Checks whether can offer teleport to the avatar * Can't offer only for offline friends */ static bool canOfferTeleport(const LLUUID& id); private: static bool callbackAddFriend(const LLSD& notification, const LLSD& response); 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 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