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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llpanelpick.h
  3.  * @brief LLPanelPick class definition
  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. // Display of a "Top Pick" used both for the global top picks in the 
  33. // Find directory, and also for each individual user's picks in their
  34. // profile.
  35. #ifndef LL_LLPANELPICK_H
  36. #define LL_LLPANELPICK_H
  37. #include "llpanel.h"
  38. #include "llremoteparcelrequest.h"
  39. #include "llavatarpropertiesprocessor.h"
  40. class LLIconCtrl;
  41. class LLTextureCtrl;
  42. class LLScrollContainer;
  43. class LLMessageSystem;
  44. class LLAvatarPropertiesObserver;
  45. /**
  46.  * Panel for displaying Pick Information - snapshot, name, description, etc.
  47.  */
  48. class LLPanelPickInfo : public LLPanel, public LLAvatarPropertiesObserver, LLRemoteParcelInfoObserver
  49. {
  50. LOG_CLASS(LLPanelPickInfo);
  51. public:
  52. // Creates new panel
  53. static LLPanelPickInfo* create();
  54. virtual ~LLPanelPickInfo();
  55. /**
  56.  * Initializes panel properties
  57.  *
  58.  * By default Pick will be created for current Agent location.
  59.  * Use setPickData to change Pick properties.
  60.  */
  61. /*virtual*/ void onOpen(const LLSD& key);
  62. /*virtual*/ BOOL postBuild();
  63. /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
  64. /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
  65. /**
  66.  * Sends remote parcel info request to resolve parcel name from its ID.
  67.  */
  68. void sendParcelInfoRequest();
  69. /**
  70.  * Sets "Back" button click callback
  71.  */
  72. virtual void setExitCallback(const commit_callback_t& cb);
  73. /**
  74.  * Sets "Edit" button click callback
  75.  */
  76. virtual void setEditPickCallback(const commit_callback_t& cb);
  77. //This stuff we got from LLRemoteParcelObserver, in the last one we intentionally do nothing
  78. /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
  79. /*virtual*/ void setParcelID(const LLUUID& parcel_id) { mParcelId = parcel_id; }
  80. /*virtual*/ void setErrorStatus(U32 status, const std::string& reason) {};
  81. protected:
  82. LLPanelPickInfo();
  83. /**
  84.  * Resets Pick information
  85.  */
  86. virtual void resetData();
  87. /**
  88.  * Resets UI controls (visibility, values)
  89.  */
  90. virtual void resetControls();
  91. /** 
  92. * "Location text" is actually the owner name, the original
  93. * name that owner gave the parcel, and the location.
  94. */
  95. static std::string createLocationText(
  96. const std::string& owner_name, 
  97. const std::string& original_name,
  98. const std::string& sim_name, 
  99. const LLVector3d& pos_global);
  100. virtual void setAvatarId(const LLUUID& avatar_id) { mAvatarId = avatar_id; }
  101. virtual LLUUID& getAvatarId() { return mAvatarId; }
  102. /**
  103.  * Sets snapshot id.
  104.  *
  105.  * Will mark snapshot control as valid if id is not null.
  106.  * Will mark snapshot control as invalid if id is null. If null id is a valid value,
  107.  * you have to manually mark snapshot is valid.
  108.  */
  109. virtual void setSnapshotId(const LLUUID& id);
  110. virtual void setPickId(const LLUUID& id) { mPickId = id; }
  111. virtual LLUUID& getPickId() { return mPickId; }
  112. virtual void setPickName(const std::string& name);
  113. virtual void setPickDesc(const std::string& desc);
  114. virtual void setPickLocation(const std::string& location);
  115. virtual void setPosGlobal(const LLVector3d& pos) { mPosGlobal = pos; }
  116. virtual LLVector3d& getPosGlobal() { return mPosGlobal; }
  117. /**
  118.  * Callback for "Map" button, opens Map
  119.  */
  120. void onClickMap();
  121. /**
  122.  * Callback for "Teleport" button, teleports user to Pick location.
  123.  */
  124. void onClickTeleport();
  125. void onClickBack();
  126. protected:
  127. S32 mScrollingPanelMinHeight;
  128. S32 mScrollingPanelWidth;
  129. LLScrollContainer* mScrollContainer;
  130. LLPanel* mScrollingPanel;
  131. LLTextureCtrl* mSnapshotCtrl;
  132. LLUUID mAvatarId;
  133. LLVector3d mPosGlobal;
  134. LLUUID mParcelId;
  135. LLUUID mPickId;
  136. LLUUID mRequestedId;
  137. };
  138. /**
  139.  * Panel for creating/editing Pick.
  140.  */
  141. class LLPanelPickEdit : public LLPanelPickInfo
  142. {
  143. LOG_CLASS(LLPanelPickEdit);
  144. public:
  145. /**
  146.  * Creates new panel
  147.  */
  148. static LLPanelPickEdit* create();
  149. /*virtual*/ ~LLPanelPickEdit();
  150. /*virtual*/ void onOpen(const LLSD& key);
  151. virtual void setPickData(const LLPickData* pick_data);
  152. /*virtual*/ BOOL postBuild();
  153. /**
  154.  * Sets "Save" button click callback
  155.  */
  156. virtual void setSaveCallback(const commit_callback_t& cb);
  157. /**
  158.  * Sets "Cancel" button click callback
  159.  */
  160. virtual void setCancelCallback(const commit_callback_t& cb);
  161. /**
  162.  * Resets panel and all cantrols to unedited state
  163.  */
  164. /*virtual*/ void resetDirty();
  165. /**
  166.  * Returns true if any of Pick properties was changed by user.
  167.  */
  168. /*virtual*/ BOOL isDirty() const;
  169. /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
  170. protected:
  171. LLPanelPickEdit();
  172. /**
  173.  * Sends Pick properties to server.
  174.  */
  175. void sendUpdate();
  176. /**
  177.  * Called when snapshot image changes.
  178.  */
  179. void onSnapshotChanged();
  180. /**
  181.  * Callback for Pick snapshot, name and description changed event.
  182.  */
  183. void onPickChanged(LLUICtrl* ctrl);
  184. /*virtual*/ void resetData();
  185. /**
  186.  * Enables/disables "Save" button
  187.  */
  188. void enableSaveButton(bool enable);
  189. /**
  190.  * Callback for "Set Location" button click
  191.  */
  192. void onClickSetLocation();
  193. /**
  194.  * Callback for "Save" button click
  195.  */
  196. void onClickSave();
  197. protected:
  198. bool mLocationChanged;
  199. bool mNeedData;
  200. bool mNewPick;
  201. private:
  202. void initTexturePickerMouseEvents();
  203.         void onTexturePickerMouseEnter(LLUICtrl* ctrl);
  204. void onTexturePickerMouseLeave(LLUICtrl* ctrl);
  205. private:
  206. LLIconCtrl* text_icon;
  207. };
  208. #endif // LL_LLPANELPICK_H