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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llpanelclassified.h
  3.  * @brief LLPanelClassified class definition
  4.  *
  5.  * $LicenseInfo:firstyear=2005&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2005-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 classified used both for the global view in the
  33. // Find directory, and also for each individual user's classified in their
  34. // profile.
  35. #ifndef LL_LLPANELCLASSIFIED_H
  36. #define LL_LLPANELCLASSIFIED_H
  37. #include "llavatarpropertiesprocessor.h"
  38. #include "llpanel.h"
  39. #include "llclassifiedinfo.h"
  40. #include "v3dmath.h"
  41. #include "lluuid.h"
  42. #include "llfloater.h"
  43. //#include "llrect.h"
  44. class LLButton;
  45. class LLCheckBoxCtrl;
  46. class LLComboBox;
  47. class LLIconCtrl;
  48. class LLLineEditor;
  49. class LLTextBox;
  50. class LLTextEditor;
  51. class LLTextureCtrl;
  52. class LLUICtrl;
  53. class LLMessageSystem;
  54. // *TODO deprecated, should be removed.
  55. // New class implemented in ticket EXT-2095
  56. class LLPanelClassified : public LLPanel
  57. {
  58. public:
  59.     LLPanelClassified(bool in_finder, bool from_search);
  60.     /*virtual*/ ~LLPanelClassified();
  61. void reset();
  62.     /*virtual*/ BOOL postBuild();
  63.     /*virtual*/ void draw();
  64. /*virtual*/ void refresh();
  65. void apply();
  66. // If can close, return TRUE.  If cannot close, pop save/discard dialog
  67. // and return FALSE.
  68. BOOL canClose();
  69. // Setup a new classified, including creating an id, giving a sane
  70. // initial position, etc.
  71. void initNewClassified();
  72. void setClassifiedID(const LLUUID& id);
  73. void setClickThroughText(const std::string& text);
  74. static void setClickThrough(const LLUUID& classified_id,
  75. S32 teleport, S32 map, S32 profile, bool from_new_table);
  76. // check that the title is valid (E.G. starts with a number or letter)
  77. BOOL titleIsValid();
  78. // Schedules the panel to request data
  79. // from the server next time it is drawn.
  80. void markForServerRequest();
  81. std::string getClassifiedName();
  82. const LLUUID& getClassifiedID() const { return mClassifiedID; }
  83.     void sendClassifiedInfoRequest();
  84. void sendClassifiedInfoUpdate();
  85. void resetDirty();
  86.     static void processClassifiedInfoReply(LLMessageSystem* msg, void**);
  87. // Confirmation dialogs flow in this order
  88. bool confirmMature(const LLSD& notification, const LLSD& response);
  89. void gotMature();
  90. static void callbackGotPriceForListing(S32 option, std::string text, void* data);
  91. bool confirmPublish(const LLSD& notification, const LLSD& response);
  92. void sendClassifiedClickMessage(const std::string& type);
  93. protected:
  94. bool saveCallback(const LLSD& notification, const LLSD& response);
  95. static void onClickUpdate(void* data);
  96.     static void onClickTeleport(void* data);
  97.     static void onClickMap(void* data);
  98. static void onClickProfile(void* data);
  99.     static void onClickSet(void* data);
  100. static void focusReceived(LLFocusableElement* ctrl, void* data);
  101. static void onCommitAny(LLUICtrl* ctrl, void* data);
  102. void setDefaultAccessCombo(); // Default AO and PG regions to proper classified access
  103. BOOL checkDirty(); // Update and return mDirty
  104. protected:
  105. bool mInFinder;
  106. bool mFromSearch; // from web-based "All" search sidebar
  107. BOOL mDirty;
  108. bool mForceClose;
  109. bool mLocationChanged;
  110. LLUUID mClassifiedID;
  111. LLUUID mRequestedID;
  112. LLUUID mCreatorID;
  113. LLUUID mParcelID;
  114. S32 mPriceForListing;
  115. // Needed for stat tracking
  116. S32 mTeleportClicksOld;
  117. S32 mMapClicksOld;
  118. S32 mProfileClicksOld;
  119. S32 mTeleportClicksNew;
  120. S32 mMapClicksNew;
  121. S32 mProfileClicksNew;
  122. // Data will be requested on first draw
  123. BOOL mDataRequested;
  124. // For avatar panel classifieds only, has the user been charged
  125. // yet for this classified?  That is, have they saved once?
  126. BOOL mPaidFor;
  127. std::string mSimName;
  128. LLVector3d mPosGlobal;
  129. // Values the user may change
  130. LLTextureCtrl* mSnapshotCtrl;
  131. LLLineEditor* mNameEditor;
  132. LLTextEditor* mDescEditor;
  133. LLLineEditor* mLocationEditor;
  134. LLComboBox* mCategoryCombo;
  135. LLComboBox* mMatureCombo;
  136. LLCheckBoxCtrl* mAutoRenewCheck;
  137. LLButton*    mUpdateBtn;
  138. LLButton*    mTeleportBtn;
  139. LLButton*    mMapBtn;
  140. LLButton*  mProfileBtn;
  141. LLTextBox* mInfoText;
  142. LLButton* mSetBtn;
  143. LLTextBox* mClickThroughText;
  144. LLRect mSnapshotSize;
  145. typedef std::list<LLPanelClassified*> panel_list_t;
  146. static panel_list_t sAllPanels;
  147. };
  148. class LLFloaterPriceForListing
  149. : public LLFloater
  150. {
  151. public:
  152. LLFloaterPriceForListing();
  153. virtual ~LLFloaterPriceForListing();
  154. virtual BOOL postBuild();
  155. static void show( void (*callback)(S32 option, std::string value, void* userdata), void* userdata );
  156. private:
  157. static void onClickSetPrice(void*);
  158. static void onClickCancel(void*);
  159. static void buttonCore(S32 button, void* data);
  160. private:
  161. void (*mCallback)(S32 option, std::string, void*);
  162. void* mUserData;
  163. };
  164. class LLPanelClassifiedInfo : public LLPanel, public LLAvatarPropertiesObserver
  165. {
  166. public:
  167. static LLPanelClassifiedInfo* create();
  168. virtual ~LLPanelClassifiedInfo();
  169. /*virtual*/ void onOpen(const LLSD& key);
  170. /*virtual*/ BOOL postBuild();
  171. /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
  172. void setAvatarId(const LLUUID& avatar_id) { mAvatarId = avatar_id; }
  173. LLUUID& getAvatarId() { return mAvatarId; }
  174. void setSnapshotId(const LLUUID& id);
  175. LLUUID getSnapshotId();
  176. void setClassifiedId(const LLUUID& id) { mClassifiedId = id; }
  177. LLUUID& getClassifiedId() { return mClassifiedId; }
  178. void setClassifiedName(const std::string& name);
  179. std::string getClassifiedName();
  180. void setDescription(const std::string& desc);
  181. std::string getDescription();
  182. void setClassifiedLocation(const std::string& location);
  183. void setPosGlobal(const LLVector3d& pos) { mPosGlobal = pos; }
  184. LLVector3d& getPosGlobal() { return mPosGlobal; }
  185. void setParcelId(const LLUUID& id) { mParcelId = id; }
  186. LLUUID getParcelId() { return mParcelId; }
  187. bool getInfoLoaded() { return mInfoLoaded; }
  188. void setInfoLoaded(bool loaded) { mInfoLoaded = loaded; }
  189. void setExitCallback(const commit_callback_t& cb);
  190. void setEditClassifiedCallback(const commit_callback_t& cb);
  191. protected:
  192. LLPanelClassifiedInfo();
  193. virtual void resetData();
  194. virtual void resetControls();
  195. static std::string createLocationText(
  196. const std::string& original_name,
  197. const std::string& sim_name, 
  198. const LLVector3d& pos_global);
  199. void onMapClick();
  200. void onTeleportClick();
  201. void onExit();
  202. private:
  203. LLUUID mAvatarId;
  204. LLUUID mClassifiedId;
  205. LLVector3d mPosGlobal;
  206. LLUUID mParcelId;
  207. bool mInfoLoaded;
  208. };
  209. class LLPanelClassifiedEdit : public LLPanelClassifiedInfo
  210. {
  211. public:
  212. static LLPanelClassifiedEdit* create();
  213. virtual ~LLPanelClassifiedEdit();
  214. /*virtual*/ BOOL postBuild();
  215. /*virtual*/ void onOpen(const LLSD& key);
  216. /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
  217. /*virtual*/ BOOL isDirty() const;
  218. /*virtual*/ void resetDirty();
  219. void setSaveCallback(const commit_callback_t& cb);
  220. void setCancelCallback(const commit_callback_t& cb);
  221. /*virtual*/ void resetControls();
  222. bool isNew() { return mIsNew; }
  223. bool canClose();
  224. protected:
  225. LLPanelClassifiedEdit();
  226. void sendUpdate();
  227. U32 getCategory();
  228. void enableVerbs(bool enable);
  229. void enableEditing(bool enable);
  230. std::string makeClassifiedName();
  231. S32 getPriceForListing();
  232. U8 getFlags();
  233. std::string getLocationNotice();
  234. bool isValidName();
  235. void notifyInvalidName();
  236. void onSetLocationClick();
  237. void onChange();
  238. void onSaveClick();
  239. void onTexturePickerMouseEnter(LLUICtrl* ctrl);
  240. void onTexturePickerMouseLeave(LLUICtrl* ctrl);
  241. private:
  242. bool mIsNew;
  243. bool mCanClose;
  244. };
  245. #endif // LL_LLPANELCLASSIFIED_H