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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llfloaterregioninfo.h
  3.  * @author Aaron Brashears
  4.  * @brief Declaration of the region info and controls floater and panels.
  5.  *
  6.  * $LicenseInfo:firstyear=2004&license=viewergpl$
  7.  * 
  8.  * Copyright (c) 2004-2010, Linden Research, Inc.
  9.  * 
  10.  * Second Life Viewer Source Code
  11.  * The source code in this file ("Source Code") is provided by Linden Lab
  12.  * to you under the terms of the GNU General Public License, version 2.0
  13.  * ("GPL"), unless you have obtained a separate licensing agreement
  14.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  15.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  16.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  17.  * 
  18.  * There are special exceptions to the terms and conditions of the GPL as
  19.  * it is applied to this Source Code. View the full text of the exception
  20.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  21.  * online at
  22.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  23.  * 
  24.  * By copying, modifying or distributing this software, you acknowledge
  25.  * that you have read and understood your obligations described above,
  26.  * and agree to abide by those obligations.
  27.  * 
  28.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  29.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  30.  * COMPLETENESS OR PERFORMANCE.
  31.  * $/LicenseInfo$
  32.  */
  33. #ifndef LL_LLFLOATERREGIONINFO_H
  34. #define LL_LLFLOATERREGIONINFO_H
  35. #include <vector>
  36. #include "llassettype.h"
  37. #include "llfloater.h"
  38. #include "llhost.h"
  39. #include "llpanel.h"
  40. class LLDispatcher;
  41. class LLLineEditor;
  42. class LLMessageSystem;
  43. class LLPanelRegionInfo;
  44. class LLTabContainer;
  45. class LLViewerRegion;
  46. class LLViewerTextEditor;
  47. class LLInventoryItem;
  48. class LLCheckBoxCtrl;
  49. class LLComboBox;
  50. class LLNameListCtrl;
  51. class LLSliderCtrl;
  52. class LLSpinCtrl;
  53. class LLTextBox;
  54. class LLVFS;
  55. class LLPanelRegionGeneralInfo;
  56. class LLPanelRegionDebugInfo;
  57. class LLPanelRegionTextureInfo;
  58. class LLPanelRegionTerrainInfo;
  59. class LLPanelEstateInfo;
  60. class LLPanelEstateCovenant;
  61. class LLFloaterRegionInfo : public LLFloater
  62. {
  63. friend class LLFloaterReg;
  64. public:
  65. /*virtual*/ void onOpen(const LLSD& key);
  66. /*virtual*/ BOOL postBuild();
  67. static void processEstateOwnerRequest(LLMessageSystem* msg, void**);
  68. // get and process region info if necessary.
  69. static void processRegionInfo(LLMessageSystem* msg);
  70. static const LLUUID& getLastInvoice() { return sRequestInvoice; }
  71. static void nextInvoice() { sRequestInvoice.generate(); }
  72. //static S32 getSerial() { return sRequestSerial; }
  73. //static void incrementSerial() { sRequestSerial++; }
  74. static LLPanelEstateInfo* getPanelEstate();
  75. static LLPanelEstateCovenant* getPanelCovenant();
  76. // from LLPanel
  77. virtual void refresh();
  78. void requestRegionInfo();
  79. private:
  80. LLFloaterRegionInfo(const LLSD& seed);
  81. ~LLFloaterRegionInfo();
  82. protected:
  83. void refreshFromRegion(LLViewerRegion* region);
  84. // member data
  85. LLTabContainer* mTab;
  86. typedef std::vector<LLPanelRegionInfo*> info_panels_t;
  87. info_panels_t mInfoPanels;
  88. //static S32 sRequestSerial; // serial # of last EstateOwnerRequest
  89. static LLUUID sRequestInvoice;
  90. };
  91. // Base class for all region information panels.
  92. class LLPanelRegionInfo : public LLPanel
  93. {
  94. public:
  95. LLPanelRegionInfo();
  96. void onBtnSet();
  97. void onChangeChildCtrl(LLUICtrl* ctrl);
  98. void onChangeAnything();
  99. static void onChangeText(LLLineEditor* caller, void* user_data);
  100. virtual bool refreshFromRegion(LLViewerRegion* region);
  101. virtual bool estateUpdate(LLMessageSystem* msg) { return true; }
  102. virtual BOOL postBuild();
  103. virtual void updateChild(LLUICtrl* child_ctrl);
  104. void enableButton(const std::string& btn_name, BOOL enable = TRUE);
  105. void disableButton(const std::string& btn_name);
  106. void onClickManageTelehub();
  107. protected:
  108. void initCtrl(const std::string& name);
  109. // Returns TRUE if update sent and apply button should be
  110. // disabled.
  111. virtual BOOL sendUpdate() { return TRUE; }
  112. typedef std::vector<std::string> strings_t;
  113. //typedef std::vector<U32> integers_t;
  114. void sendEstateOwnerMessage(
  115.  LLMessageSystem* msg,
  116.  const std::string& request,
  117.  const LLUUID& invoice,
  118.  const strings_t& strings);
  119. // member data
  120. LLHost mHost;
  121. };
  122. /////////////////////////////////////////////////////////////////////////////
  123. // Actual panels start here
  124. /////////////////////////////////////////////////////////////////////////////
  125. class LLPanelRegionGeneralInfo : public LLPanelRegionInfo
  126. {
  127. public:
  128. LLPanelRegionGeneralInfo()
  129. : LLPanelRegionInfo() {}
  130. ~LLPanelRegionGeneralInfo() {}
  131. virtual bool refreshFromRegion(LLViewerRegion* region);
  132. // LLPanel
  133. virtual BOOL postBuild();
  134. protected:
  135. virtual BOOL sendUpdate();
  136. void onClickKick();
  137. void onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
  138. static void onClickKickAll(void* userdata);
  139. bool onKickAllCommit(const LLSD& notification, const LLSD& response);
  140. static void onClickMessage(void* userdata);
  141. bool onMessageCommit(const LLSD& notification, const LLSD& response);
  142. };
  143. /////////////////////////////////////////////////////////////////////////////
  144. class LLPanelRegionDebugInfo : public LLPanelRegionInfo
  145. {
  146. public:
  147. LLPanelRegionDebugInfo()
  148. : LLPanelRegionInfo(), mTargetAvatar() {}
  149. ~LLPanelRegionDebugInfo() {}
  150. // LLPanel
  151. virtual BOOL postBuild();
  152. virtual bool refreshFromRegion(LLViewerRegion* region);
  153. protected:
  154. virtual BOOL sendUpdate();
  155. void onClickChooseAvatar();
  156. void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
  157. static void onClickReturn(void *);
  158. bool callbackReturn(const LLSD& notification, const LLSD& response);
  159. static void onClickTopColliders(void*);
  160. static void onClickTopScripts(void*);
  161. static void onClickRestart(void* data);
  162. bool callbackRestart(const LLSD& notification, const LLSD& response);
  163. static void onClickCancelRestart(void* data);
  164. private:
  165. LLUUID mTargetAvatar;
  166. };
  167. /////////////////////////////////////////////////////////////////////////////
  168. class LLPanelRegionTextureInfo : public LLPanelRegionInfo
  169. {
  170. public:
  171. LLPanelRegionTextureInfo();
  172. ~LLPanelRegionTextureInfo() {}
  173. virtual bool refreshFromRegion(LLViewerRegion* region);
  174. // LLPanel && LLView
  175. virtual BOOL postBuild();
  176. protected:
  177. virtual BOOL sendUpdate();
  178. static void onClickDump(void* data);
  179. BOOL validateTextureSizes();
  180. };
  181. /////////////////////////////////////////////////////////////////////////////
  182. class LLPanelRegionTerrainInfo : public LLPanelRegionInfo
  183. {
  184. public:
  185. LLPanelRegionTerrainInfo()
  186. : LLPanelRegionInfo() {}
  187. ~LLPanelRegionTerrainInfo() {}
  188. // LLPanel
  189. virtual BOOL postBuild();
  190. virtual bool refreshFromRegion(LLViewerRegion* region);
  191. protected:
  192. virtual BOOL sendUpdate();
  193. void onChangeUseEstateTime();
  194. void onChangeFixedSun();
  195. void onChangeSunHour();
  196. static void onClickDownloadRaw(void*);
  197. static void onClickUploadRaw(void*);
  198. static void onClickBakeTerrain(void*);
  199. bool callbackBakeTerrain(const LLSD& notification, const LLSD& response);
  200. };
  201. /////////////////////////////////////////////////////////////////////////////
  202. class LLPanelEstateInfo : public LLPanelRegionInfo
  203. {
  204. public:
  205. static void initDispatch(LLDispatcher& dispatch);
  206. void onChangeFixedSun();
  207. void onChangeUseGlobalTime();
  208. static void onClickEditSky(void* userdata);
  209. static void onClickEditSkyHelp(void* userdata);
  210. static void onClickEditDayCycle(void* userdata);
  211. static void onClickEditDayCycleHelp(void* userdata);
  212. static void onClickAddAllowedAgent(void* user_data);
  213. static void onClickRemoveAllowedAgent(void* user_data);
  214.    void onClickAddAllowedGroup();
  215. static void onClickRemoveAllowedGroup(void* user_data);
  216. static void onClickAddBannedAgent(void* user_data);
  217. static void onClickRemoveBannedAgent(void* user_data);
  218. static void onClickAddEstateManager(void* user_data);
  219. static void onClickRemoveEstateManager(void* user_data);
  220. void onClickKickUser();
  221. // Group picker callback is different, can't use core methods below
  222. bool addAllowedGroup(const LLSD& notification, const LLSD& response);
  223. void addAllowedGroup2(LLUUID id);
  224. // Core methods for all above add/remove button clicks
  225. static void accessAddCore(U32 operation_flag, const std::string& dialog_name);
  226. static bool accessAddCore2(const LLSD& notification, const LLSD& response);
  227. static void accessAddCore3(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data);
  228. static void accessRemoveCore(U32 operation_flag, const std::string& dialog_name, const std::string& list_ctrl_name);
  229. static bool accessRemoveCore2(const LLSD& notification, const LLSD& response);
  230. // used for both add and remove operations
  231. static bool accessCoreConfirm(const LLSD& notification, const LLSD& response);
  232. bool kickUserConfirm(const LLSD& notification, const LLSD& response);
  233. // Send the actual EstateOwnerRequest "estateaccessdelta" message
  234. static void sendEstateAccessDelta(U32 flags, const LLUUID& agent_id);
  235. void onKickUserCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
  236. static void onClickMessageEstate(void* data);
  237. bool onMessageCommit(const LLSD& notification, const LLSD& response);
  238. LLPanelEstateInfo();
  239. ~LLPanelEstateInfo() {}
  240. void updateControls(LLViewerRegion* region);
  241. virtual bool refreshFromRegion(LLViewerRegion* region);
  242. virtual bool estateUpdate(LLMessageSystem* msg);
  243. // LLPanel
  244. virtual BOOL postBuild();
  245. virtual void updateChild(LLUICtrl* child_ctrl);
  246. virtual void refresh();
  247. U32 computeEstateFlags();
  248. void setEstateFlags(U32 flags);
  249. BOOL getGlobalTime();
  250. void setGlobalTime(bool b);
  251. BOOL getFixedSun();
  252. F32 getSunHour();
  253. void setSunHour(F32 sun_hour);
  254. const std::string getEstateName() const;
  255. void setEstateName(const std::string& name);
  256. U32 getEstateID() const { return mEstateID; }
  257. void setEstateID(U32 estate_id) { mEstateID = estate_id; }
  258. static bool isLindenEstate();
  259. const std::string getOwnerName() const;
  260. void setOwnerName(const std::string& name);
  261. // If visible from mainland, allowed agent and allowed groups
  262. // are ignored, so must disable UI.
  263. void setAccessAllowedEnabled(bool enable_agent, bool enable_group, bool enable_ban);
  264. protected:
  265. virtual BOOL sendUpdate();
  266. // confirmation dialog callback
  267. bool callbackChangeLindenEstate(const LLSD& notification, const LLSD& response);
  268. void commitEstateInfoDataserver();
  269. bool commitEstateInfoCaps();
  270. void commitEstateAccess();
  271. void commitEstateManagers();
  272. void clearAccessLists();
  273. BOOL checkRemovalButton(std::string name);
  274. BOOL checkSunHourSlider(LLUICtrl* child_ctrl);
  275. U32 mEstateID;
  276. };
  277. /////////////////////////////////////////////////////////////////////////////
  278. class LLPanelEstateCovenant : public LLPanelRegionInfo
  279. {
  280. public:
  281. LLPanelEstateCovenant();
  282. ~LLPanelEstateCovenant() {}
  283. // LLPanel
  284. virtual BOOL postBuild();
  285. virtual void updateChild(LLUICtrl* child_ctrl);
  286. virtual bool refreshFromRegion(LLViewerRegion* region);
  287. virtual bool estateUpdate(LLMessageSystem* msg);
  288. // LLView overrides
  289. BOOL handleDragAndDrop(S32 x, S32 y, MASK mask,
  290.    BOOL drop, EDragAndDropType cargo_type,
  291.    void *cargo_data, EAcceptance *accept,
  292.    std::string& tooltip_msg);
  293. static bool confirmChangeCovenantCallback(const LLSD& notification, const LLSD& response);
  294. static void resetCovenantID(void* userdata);
  295. static bool confirmResetCovenantCallback(const LLSD& notification, const LLSD& response);
  296. void sendChangeCovenantID(const LLUUID &asset_id);
  297. void loadInvItem(LLInventoryItem *itemp);
  298. static void onLoadComplete(LLVFS *vfs,
  299.    const LLUUID& asset_uuid,
  300.    LLAssetType::EType type,
  301.    void* user_data, S32 status, LLExtStat ext_status);
  302. // Accessor functions
  303. static void updateCovenantText(const std::string& string, const LLUUID& asset_id);
  304. static void updateEstateName(const std::string& name);
  305. static void updateLastModified(const std::string& text);
  306. static void updateEstateOwnerName(const std::string& name);
  307. const LLUUID& getCovenantID() const { return mCovenantID; }
  308. void setCovenantID(const LLUUID& id) { mCovenantID = id; }
  309. std::string getEstateName() const;
  310. void setEstateName(const std::string& name);
  311. std::string getOwnerName() const;
  312. void setOwnerName(const std::string& name);
  313. void setCovenantTextEditor(const std::string& text);
  314. typedef enum e_asset_status
  315. {
  316. ASSET_ERROR,
  317. ASSET_UNLOADED,
  318. ASSET_LOADING,
  319. ASSET_LOADED
  320. } EAssetStatus;
  321. protected:
  322. virtual BOOL sendUpdate();
  323. LLTextBox* mEstateNameText;
  324. LLTextBox* mEstateOwnerText;
  325. LLTextBox* mLastModifiedText;
  326. // CovenantID from sim
  327. LLUUID mCovenantID;
  328. LLViewerTextEditor* mEditor;
  329. EAssetStatus mAssetStatus;
  330. };
  331. #endif