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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llpanelpicks.h
  3.  * @brief LLPanelPicks and related class definitions
  4.  *
  5.  * $LicenseInfo:firstyear=2009&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2009-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_LLPANELPICKS_H
  33. #define LL_LLPANELPICKS_H
  34. #include "llpanel.h"
  35. #include "v3dmath.h"
  36. #include "lluuid.h"
  37. #include "llavatarpropertiesprocessor.h"
  38. #include "llpanelavatar.h"
  39. #include "llregistry.h"
  40. class LLAccordionCtrlTab;
  41. class LLPanelProfile;
  42. class LLMessageSystem;
  43. class LLVector3d;
  44. class LLPanelProfileTab;
  45. class LLAgent;
  46. class LLMenuGL;
  47. class LLPickItem;
  48. class LLClassifiedItem;
  49. class LLFlatListView;
  50. class LLPanelPickInfo;
  51. class LLPanelPickEdit;
  52. class LLToggleableMenu;
  53. class LLPanelClassifiedInfo;
  54. class LLPanelClassifiedEdit;
  55. class LLClassifiedClickThrough;
  56. // *TODO
  57. // Panel Picks has been consolidated with Classifieds (EXT-2095), give LLPanelPicks
  58. // and corresponding files (cpp, h, xml) a new name. (new name is TBD at the moment)
  59. class LLPanelPicks 
  60. : public LLPanelProfileTab
  61. {
  62. public:
  63. LLPanelPicks();
  64. ~LLPanelPicks();
  65. static void* create(void* data);
  66. /*virtual*/ BOOL postBuild(void);
  67. /*virtual*/ void onOpen(const LLSD& key);
  68. /*virtual*/ void onClosePanel();
  69. void processProperties(void* data, EAvatarProcessorType type);
  70. void updateData();
  71. // returns the selected pick item
  72. LLPickItem* getSelectedPickItem();
  73. LLClassifiedItem* getSelectedClassifiedItem();
  74. //*NOTE top down approch when panel toggling is done only by 
  75. // parent panels failed to work (picks related code was in my profile panel)
  76. void setProfilePanel(LLPanelProfile* profile_panel);
  77. protected:
  78. /*virtual*/void updateButtons();
  79. private:
  80. void onClickDelete();
  81. void onClickTeleport();
  82. void onClickMap();
  83. void onPlusMenuItemClicked(const LLSD& param);
  84. bool isActionEnabled(const LLSD& userdata) const;
  85. void onListCommit(const LLFlatListView* f_list);
  86. void onAccordionStateChanged(const LLAccordionCtrlTab* acc_tab);
  87. //------------------------------------------------
  88. // Callbacks which require panel toggling
  89. //------------------------------------------------
  90. void onClickPlusBtn();
  91. void onClickInfo();
  92. void onPanelPickClose(LLPanel* panel);
  93. void onPanelPickSave(LLPanel* panel);
  94. void onPanelClassifiedSave(LLPanelClassifiedEdit* panel);
  95. void onPanelClassifiedClose(LLPanelClassifiedInfo* panel);
  96. void onPanelPickEdit();
  97. void onPanelClassifiedEdit();
  98. void onClickMenuEdit();
  99. void createNewPick();
  100. void createNewClassified();
  101. void openPickInfo();
  102. void openClassifiedInfo();
  103. void openClassifiedInfo(const LLUUID &classified_id, const LLUUID &avatar_id,
  104. const LLUUID &snapshot_id, const std::string &name,
  105. const std::string &desc);
  106. friend class LLPanelProfile;
  107. void showAccordion(const std::string& name, bool show);
  108. void buildPickPanel();
  109. bool callbackDeletePick(const LLSD& notification, const LLSD& response);
  110. bool callbackDeleteClassified(const LLSD& notification, const LLSD& response);
  111. bool callbackTeleport(const LLSD& notification, const LLSD& response);
  112. virtual void onDoubleClickPickItem(LLUICtrl* item);
  113. virtual void onDoubleClickClassifiedItem(LLUICtrl* item);
  114. virtual void onRightMouseUpItem(LLUICtrl* item, S32 x, S32 y, MASK mask);
  115. LLPanelProfile* getProfilePanel();
  116. void createPickInfoPanel();
  117. void createPickEditPanel();
  118. void createClassifiedInfoPanel();
  119. void createClassifiedEditPanel();
  120. LLMenuGL* mPopupMenu;
  121. LLPanelProfile* mProfilePanel;
  122. LLPanelPickInfo* mPickPanel;
  123. LLFlatListView* mPicksList;
  124. LLFlatListView* mClassifiedsList;
  125. LLPanelPickInfo* mPanelPickInfo;
  126. LLPanelClassifiedInfo* mPanelClassifiedInfo;
  127. LLPanelClassifiedEdit* mPanelClassifiedEdit;
  128. LLPanelPickEdit* mPanelPickEdit;
  129. LLToggleableMenu* mPlusMenu;
  130. LLAccordionCtrlTab* mPicksAccTab;
  131. LLAccordionCtrlTab* mClassifiedsAccTab;
  132. LLClassifiedClickThrough* mClickThroughDisp;
  133. //true if picks list is empty after processing picks
  134. bool mNoPicks;
  135. //true if classifieds list is empty after processing classifieds
  136. bool mNoClassifieds;
  137. };
  138. class LLPickItem : public LLPanel, public LLAvatarPropertiesObserver
  139. {
  140. public:
  141. LLPickItem();
  142. static LLPickItem* create();
  143. void init(LLPickData* pick_data);
  144. void setPickName(const std::string& name);
  145. void setPickDesc(const std::string& descr);
  146. void setPickId(const LLUUID& id);
  147. void setCreatorId(const LLUUID& id) {mCreatorID = id;};
  148. void setSnapshotId(const LLUUID& id) {mSnapshotID = id;};
  149. void setNeedData(bool need){mNeedData = need;};
  150. const LLUUID& getPickId(); 
  151. const std::string& getPickName();
  152. const LLUUID& getCreatorId();
  153. const LLUUID& getSnapshotId();
  154. const LLVector3d& getPosGlobal();
  155. const std::string getDescription();
  156. const std::string& getSimName() { return mSimName; }
  157. const std::string& getUserName() { return mUserName; }
  158. const std::string& getOriginalName() { return mOriginalName; }
  159. const std::string& getPickDesc() { return mPickDescription; }
  160. /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
  161. void update();
  162. ~LLPickItem();
  163. /*virtual*/ BOOL postBuild();
  164. /** setting on/off background icon to indicate selected state */
  165. /*virtual*/ void setValue(const LLSD& value);
  166. protected:
  167. LLUUID mPickID;
  168. LLUUID mCreatorID;
  169. LLUUID mParcelID;
  170. LLUUID mSnapshotID;
  171. LLVector3d mPosGlobal;
  172. bool mNeedData;
  173. std::string mPickName;
  174. std::string mUserName;
  175. std::string mOriginalName;
  176. std::string mPickDescription;
  177. std::string mSimName;
  178. };
  179. class LLClassifiedItem : public LLPanel, public LLAvatarPropertiesObserver
  180. {
  181. public:
  182. LLClassifiedItem(const LLUUID& avatar_id, const LLUUID& classified_id);
  183. virtual ~LLClassifiedItem();
  184. /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
  185. /*virtual*/ BOOL postBuild();
  186. /*virtual*/ void setValue(const LLSD& value);
  187. LLUUID getAvatarId() {return mAvatarId;}
  188. void setAvatarId(const LLUUID& avatar_id) {mAvatarId = avatar_id;}
  189. LLUUID getClassifiedId() {return mClassifiedId;}
  190. void setClassifiedId(const LLUUID& classified_id) {mClassifiedId = classified_id;}
  191. void setPosGlobal(const LLVector3d& pos) { mPosGlobal = pos; }
  192. const LLVector3d& getPosGlobal() { return mPosGlobal; }
  193. void setClassifiedName (const std::string& name);
  194. std::string getClassifiedName() { return childGetValue("name").asString(); }
  195. void setDescription(const std::string& desc);
  196. std::string getDescription() { return childGetValue("description").asString(); }
  197. void setSnapshotId(const LLUUID& snapshot_id);
  198. LLUUID getSnapshotId();
  199. private:
  200. LLUUID mAvatarId;
  201. LLUUID mClassifiedId;
  202. LLVector3d mPosGlobal;
  203. };
  204. #endif // LL_LLPANELPICKS_H