llpanelavatar.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:7k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llpanelavatar.h
  3.  * @brief LLPanelAvatar and related class definitions
  4.  *
  5.  * $LicenseInfo:firstyear=2004&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2004-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLPANELAVATAR_H
  33. #define LL_LLPANELAVATAR_H
  34. #include "llpanel.h"
  35. #include "llavatarpropertiesprocessor.h"
  36. #include "llcallingcard.h"
  37. #include "llvoiceclient.h"
  38. class LLComboBox;
  39. class LLLineEditor;
  40. class LLToggleableMenu;
  41. enum EOnlineStatus
  42. {
  43. ONLINE_STATUS_NO      = 0,
  44. ONLINE_STATUS_YES     = 1
  45. };
  46. /**
  47. * Base class for any Profile View or My Profile Panel.
  48. */
  49. class LLPanelProfileTab
  50. : public LLPanel
  51. , public LLAvatarPropertiesObserver
  52. {
  53. public:
  54. /**
  55.  * Sets avatar ID, sets panel as observer of avatar related info replies from server.
  56.  */
  57. virtual void setAvatarId(const LLUUID& id);
  58. /**
  59.  * Returns avatar ID.
  60.  */
  61. virtual const LLUUID& getAvatarId() { return mAvatarId; }
  62. /**
  63.  * Sends update data request to server.
  64.  */
  65. virtual void updateData() = 0;
  66. /**
  67.  * Clears panel data if viewing avatar info for first time and sends update data request.
  68.  */
  69. virtual void onOpen(const LLSD& key);
  70. /**
  71.  * Profile tabs should close any opened panels here.
  72.  *
  73.  * Called from LLPanelProfile::onOpen() before opening new profile.
  74.  * See LLPanelPicks::onClosePanel for example. LLPanelPicks closes picture info panel
  75.  * before new profile is displayed, otherwise new profile will 
  76.  * be hidden behind picture info panel.
  77.  */
  78. virtual void onClosePanel() {}
  79. /**
  80.  * Resets controls visibility, state, etc.
  81.  */
  82. virtual void resetControls(){};
  83. /**
  84.  * Clears all data received from server.
  85.  */
  86. virtual void resetData(){};
  87. /*virtual*/ ~LLPanelProfileTab();
  88. protected:
  89. LLPanelProfileTab();
  90. /**
  91.  * Scrolls panel to top when viewing avatar info for first time.
  92.  */
  93. void scrollToTop();
  94. virtual void onMapButtonClick();
  95. virtual void updateButtons();
  96. private:
  97. LLUUID mAvatarId;
  98. };
  99. /**
  100. * Panel for displaying Avatar's first and second life related info.
  101. */
  102. class LLPanelAvatarProfile
  103. : public LLPanelProfileTab
  104. , public LLFriendObserver
  105. , public LLVoiceClientStatusObserver
  106. {
  107. public:
  108. LLPanelAvatarProfile();
  109. /*virtual*/ ~LLPanelAvatarProfile();
  110. /*virtual*/ void onOpen(const LLSD& key);
  111. /**
  112.  * LLFriendObserver trigger
  113.  */
  114. virtual void changed(U32 mask);
  115. // Implements LLVoiceClientStatusObserver::onChange() to enable the call
  116. // button when voice is available
  117. /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
  118. /*virtual*/ void setAvatarId(const LLUUID& id);
  119. /**
  120.  * Processes data received from server.
  121.  */
  122. /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
  123. /*virtual*/ BOOL postBuild();
  124. /*virtual*/ void updateData();
  125. /*virtual*/ void resetControls();
  126. /*virtual*/ void resetData();
  127. protected:
  128. /**
  129.  * Process profile related data received from server.
  130.  */
  131. virtual void processProfileProperties(const LLAvatarData* avatar_data);
  132. /**
  133.  * Processes group related data received from server.
  134.  */
  135. virtual void processGroupProperties(const LLAvatarGroups* avatar_groups);
  136. /**
  137.  * Fills common for Avatar profile and My Profile fields.
  138.  */
  139. virtual void fillCommonData(const LLAvatarData* avatar_data);
  140. /**
  141.  * Fills partner data.
  142.  */
  143. virtual void fillPartnerData(const LLAvatarData* avatar_data);
  144. /**
  145.  * Fills account status.
  146.  */
  147. virtual void fillAccountStatus(const LLAvatarData* avatar_data);
  148. /**
  149.  * Opens "Pay Resident" dialog.
  150.  */
  151. void pay();
  152. /**
  153.  * opens inventory and IM for sharing items
  154.  */
  155. void share();
  156. /**
  157.  * Add/remove resident to/from your block list.
  158.  */
  159. void toggleBlock();
  160. void kick();
  161. void freeze();
  162. void unfreeze();
  163. void csr();
  164. bool enableBlock();
  165. bool enableUnblock();
  166. bool enableGod();
  167. void onUrlTextboxClicked(const std::string& url);
  168. void onHomepageTextboxClicked();
  169. void onAddFriendButtonClick();
  170. void onIMButtonClick();
  171. void onCallButtonClick();
  172. void onTeleportButtonClick();
  173. void onShareButtonClick();
  174. void onOverflowButtonClicked();
  175. private:
  176. typedef std::map< std::string,LLUUID> group_map_t;
  177. group_map_t  mGroups;
  178. LLToggleableMenu* mProfileMenu;
  179. };
  180. /**
  181.  * Panel for displaying own first and second life related info.
  182.  */
  183. class LLPanelMyProfile
  184. : public LLPanelAvatarProfile
  185. {
  186. public:
  187. LLPanelMyProfile();
  188. /*virtual*/ BOOL postBuild();
  189. protected:
  190. /*virtual*/ void onOpen(const LLSD& key);
  191. /*virtual*/ void processProfileProperties(const LLAvatarData* avatar_data);
  192. /**
  193.  * Fills Avatar status data.
  194.  */
  195. virtual void fillStatusData(const LLAvatarData* avatar_data);
  196. /*virtual*/ void resetControls();
  197. protected:
  198. void onStatusChanged();
  199. void onStatusMessageChanged();
  200. private:
  201. LLComboBox* mStatusCombobox;
  202. };
  203. /**
  204.  * Panel for displaying Avatar's notes and modifying friend's rights.
  205.  */
  206. class LLPanelAvatarNotes 
  207. : public LLPanelProfileTab
  208. , public LLFriendObserver
  209. , public LLVoiceClientStatusObserver
  210. {
  211. public:
  212. LLPanelAvatarNotes();
  213. /*virtual*/ ~LLPanelAvatarNotes();
  214. virtual void setAvatarId(const LLUUID& id);
  215. /** 
  216.  * LLFriendObserver trigger
  217.  */
  218. virtual void changed(U32 mask);
  219. // Implements LLVoiceClientStatusObserver::onChange() to enable the call
  220. // button when voice is available
  221. /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
  222. /*virtual*/ void onOpen(const LLSD& key);
  223. /*virtual*/ BOOL postBuild();
  224. /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
  225. /*virtual*/ void updateData();
  226. protected:
  227. /*virtual*/ void resetControls();
  228. /*virtual*/ void resetData();
  229. /**
  230.  * Fills rights data for friends.
  231.  */
  232. void fillRightsData();
  233. void rightsConfirmationCallback(const LLSD& notification,
  234. const LLSD& response, S32 rights);
  235. void confirmModifyRights(bool grant, S32 rights);
  236. void onCommitRights();
  237. void onCommitNotes();
  238. void onAddFriendButtonClick();
  239. void onIMButtonClick();
  240. void onCallButtonClick();
  241. void onTeleportButtonClick();
  242. void onShareButtonClick();
  243. void enableCheckboxes(bool enable);
  244. };
  245. #endif // LL_LLPANELAVATAR_H