diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llfloaterregioninfo.h |
Print done when done.
Diffstat (limited to 'indra/newview/llfloaterregioninfo.h')
-rw-r--r-- | indra/newview/llfloaterregioninfo.h | 387 |
1 files changed, 387 insertions, 0 deletions
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h new file mode 100644 index 0000000000..8ab479d619 --- /dev/null +++ b/indra/newview/llfloaterregioninfo.h @@ -0,0 +1,387 @@ +/** + * @file llfloaterregioninfo.h + * @author Aaron Brashears + * @brief Declaration of the region info and controls floater and panels. + * + * Copyright (c) 2004-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LL_LLFLOATERREGIONINFO_H +#define LL_LLFLOATERREGIONINFO_H + +#include <vector> +#include "llfloater.h" +#include "llpanel.h" + +class LLLineEditor; +class LLMessageSystem; +class LLPanelRegionInfo; +class LLTabContainer; +class LLViewerRegion; +class LLViewerTextEditor; +class LLInventoryItem; +class LLCheckBoxCtrl; +class LLComboBox; +class LLNameListCtrl; +class LLSliderCtrl; +class LLSpinCtrl; +class LLTextBox; + +class LLPanelRegionGeneralInfo; +class LLPanelRegionDebugInfo; +class LLPanelRegionTextureInfo; +class LLPanelRegionTerrainInfo; +class LLPanelEstateInfo; +class LLPanelEstateCovenant; + +class LLFloaterRegionInfo : public LLFloater +{ +public: + ~LLFloaterRegionInfo(); + + static void show(LLViewerRegion* region); + static void show(void*); + static LLFloaterRegionInfo* getInstance(); + static void processEstateOwnerRequest(LLMessageSystem* msg, void**); + + // get and process region info if necessary. + static void processRegionInfo(LLMessageSystem* msg); + + static const LLUUID& getLastInvoice() { return sRequestInvoice; } + static void nextInvoice() { sRequestInvoice.generate(); } + //static S32 getSerial() { return sRequestSerial; } + //static void incrementSerial() { sRequestSerial++; } + + static LLPanelEstateInfo* getPanelEstate(); + static LLPanelEstateCovenant* getPanelCovenant(); + +protected: + LLFloaterRegionInfo(const LLRect& rect); + void refreshFromRegion(LLViewerRegion* region); + + // static data + static LLFloaterRegionInfo* sInstance; + + // member data + LLTabContainer* mTab; + typedef std::vector<LLPanelRegionInfo*> info_panels_t; + info_panels_t mInfoPanels; + //static S32 sRequestSerial; // serial # of last EstateOwnerRequest + static LLUUID sRequestInvoice; +}; + + +// Base class for all region information panels. +class LLPanelRegionInfo : public LLPanel +{ +public: + LLPanelRegionInfo() : LLPanel("Region Info Panel") {} + static void onBtnSet(void* user_data); + static void onChangeChildCtrl(LLUICtrl* ctrl, void* user_data); + static void onChangeAnything(LLUICtrl* ctrl, void* user_data); + + virtual bool refreshFromRegion(LLViewerRegion* region); + virtual bool estateUpdate(LLMessageSystem* msg) { return true; } + + virtual BOOL postBuild(); + virtual void updateChild(LLUICtrl* child_ctrl); + + void enableButton(const char* btn_name, BOOL enable = TRUE); + void disableButton(const char* btn_name); + +protected: + void initCtrl(const char* name); + void initHelpBtn(const char* name, const char* xml_alert); + + // Callback for all help buttons, data is name of XML alert to show. + static void onClickHelp(void* data); + + // Returns TRUE if update sent and apply button should be + // disabled. + virtual BOOL sendUpdate() { return TRUE; } + + typedef std::vector<std::string> strings_t; + //typedef std::vector<U32> integers_t; + void sendEstateOwnerMessage( + LLMessageSystem* msg, + const char* request, + const LLUUID& invoice, + const strings_t& strings); + + // member data + LLHost mHost; +}; + +///////////////////////////////////////////////////////////////////////////// +// Actual panels start here +///////////////////////////////////////////////////////////////////////////// + +class LLPanelRegionGeneralInfo : public LLPanelRegionInfo +{ +public: + LLPanelRegionGeneralInfo() + : LLPanelRegionInfo() {} + ~LLPanelRegionGeneralInfo() {} + + virtual bool refreshFromRegion(LLViewerRegion* region); + + // LLPanel + virtual BOOL postBuild(); +protected: + virtual BOOL sendUpdate(); + + static void onClickKick(void* userdata); + static void onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata); + static void onClickKickAll(void* userdata); + static void onKickAllCommit(S32 option, void* userdata); + static void onClickMessage(void* userdata); + static void onMessageCommit(S32 option, const LLString& text, void* userdata); + static void onClickManageTelehub(void* data); +}; + +///////////////////////////////////////////////////////////////////////////// + +class LLPanelRegionDebugInfo : public LLPanelRegionInfo +{ +public: + LLPanelRegionDebugInfo() + : LLPanelRegionInfo(), mTargetAvatar() {} + ~LLPanelRegionDebugInfo() {} + // LLPanel + virtual BOOL postBuild(); + + virtual bool refreshFromRegion(LLViewerRegion* region); + +protected: + virtual BOOL sendUpdate(); + + static void onClickChooseAvatar(void*); + static void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data); + static void onClickReturnScriptedOtherLand(void*); + static void callbackReturnScriptedOtherLand(S32 option, void*); + static void onClickReturnScriptedAll(void*); + static void callbackReturnScriptedAll(S32 option, void*); + static void onClickTopColliders(void*); + static void onClickTopScripts(void*); + static void onClickRestart(void* data); + static void callbackRestart(S32 option, void* data); + static void onClickCancelRestart(void* data); + +private: + LLUUID mTargetAvatar; +}; + +///////////////////////////////////////////////////////////////////////////// + +class LLPanelRegionTextureInfo : public LLPanelRegionInfo +{ +public: + LLPanelRegionTextureInfo(); + ~LLPanelRegionTextureInfo() {} + + virtual bool refreshFromRegion(LLViewerRegion* region); + + // LLPanel && LLView + virtual BOOL postBuild(); + virtual void draw(); + +protected: + virtual BOOL sendUpdate(); + + static void onClickDump(void* data); + BOOL validateTextureSizes(); +}; + +///////////////////////////////////////////////////////////////////////////// + +class LLPanelRegionTerrainInfo : public LLPanelRegionInfo +{ +public: + LLPanelRegionTerrainInfo() + : LLPanelRegionInfo() {} + ~LLPanelRegionTerrainInfo() {} + // LLPanel + virtual BOOL postBuild(); + + virtual bool refreshFromRegion(LLViewerRegion* region); + +protected: + virtual BOOL sendUpdate(); + + static void onChangeUseEstateTime(LLUICtrl* ctrl, void* user_data); + static void onChangeFixedSun(LLUICtrl* ctrl, void* user_data); + static void onChangeSunHour(LLUICtrl* ctrl, void*); + + static void onClickDownloadRaw(void*); + static void onClickUploadRaw(void*); + static void onClickBakeTerrain(void*); + static void callbackBakeTerrain(S32 option, void* data); +}; + +///////////////////////////////////////////////////////////////////////////// + +class LLPanelEstateInfo : public LLPanelRegionInfo +{ +public: + static void initDispatch(LLDispatcher& dispatch); + + static void onChangeFixedSun(LLUICtrl* ctrl, void* user_data); + static void onChangeUseGlobalTime(LLUICtrl* ctrl, void* user_data); + + static void onClickAddAllowedAgent(void* user_data); + static void onClickRemoveAllowedAgent(void* user_data); + static void onClickAddAllowedGroup(void* user_data); + static void onClickRemoveAllowedGroup(void* user_data); + static void onClickAddBannedAgent(void* user_data); + static void onClickRemoveBannedAgent(void* user_data); + static void onClickAddEstateManager(void* user_data); + static void onClickRemoveEstateManager(void* user_data); + static void onClickKickUser(void* userdata); + + // Group picker callback is different, can't use core methods below + static void addAllowedGroup(S32 option, void* data); + static void addAllowedGroup2(LLUUID id, void* data); + + // Core methods for all above add/remove button clicks + static void accessAddCore(U32 operation_flag, const char* dialog_name); + static void accessAddCore2(S32 option, void* data); + static void accessAddCore3(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data); + + static void accessRemoveCore(U32 operation_flag, const char* dialog_name, const char* list_ctrl_name); + static void accessRemoveCore2(S32 option, void* data); + + // used for both add and remove operations + static void accessCoreConfirm(S32 option, void* data); + static void kickUserConfirm(S32 option, void* userdata); + + // Send the actual EstateOwnerRequest "estateaccessdelta" message + static void sendEstateAccessDelta(U32 flags, const LLUUID& agent_id); + + static void onKickUserCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata); + static void onClickMessageEstate(void* data); + static void onMessageCommit(S32 option, const LLString& text, void* data); + + LLPanelEstateInfo(); + ~LLPanelEstateInfo() {} + + virtual bool refreshFromRegion(LLViewerRegion* region); + virtual bool estateUpdate(LLMessageSystem* msg); + + // LLPanel + virtual BOOL postBuild(); + virtual void updateChild(LLUICtrl* child_ctrl); + + U32 computeEstateFlags(); + void setEstateFlags(U32 flags); + + BOOL getGlobalTime(); + void setGlobalTime(bool b); + + BOOL getFixedSun(); + + F32 getSunHour(); + void setSunHour(F32 sun_hour); + + const std::string getEstateName() const; + void setEstateName(const std::string& name); + + U32 getEstateID() const { return mEstateID; } + void setEstateID(U32 estate_id) { mEstateID = estate_id; } + static bool isLindenEstate(); + + const std::string getOwnerName() const; + void setOwnerName(const std::string& name); + + // If visible from mainland, allowed agent and allowed groups + // are ignored, so must disable UI. + void setAccessAllowedEnabled(bool enable_agent, bool enable_group, bool enable_ban); + + // this must have the same function signature as + // llmessage/llcachename.h:LLCacheNameCallback + static void callbackCacheName( + const LLUUID& id, + const char* first, + const char* last, + BOOL is_group, + void*); + +protected: + virtual BOOL sendUpdate(); + // confirmation dialog callback + static void callbackChangeLindenEstate(S32 opt, void* data); + + void commitEstateInfo(); + void commitEstateAccess(); + void commitEstateManagers(); + + void clearAccessLists(); + BOOL checkRemovalButton(std::string name); + BOOL checkSunHourSlider(LLUICtrl* child_ctrl); + + U32 mEstateID; +}; + +///////////////////////////////////////////////////////////////////////////// + +class LLPanelEstateCovenant : public LLPanelRegionInfo +{ +public: + LLPanelEstateCovenant(); + ~LLPanelEstateCovenant() {} + + // LLPanel + virtual BOOL postBuild(); + virtual void updateChild(LLUICtrl* child_ctrl); + virtual bool refreshFromRegion(LLViewerRegion* region); + virtual bool estateUpdate(LLMessageSystem* msg); + + // LLView overrides + BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, + BOOL drop, EDragAndDropType cargo_type, + void *cargo_data, EAcceptance *accept, + LLString& tooltip_msg); + static void confirmChangeCovenantCallback(S32 option, void* userdata); + static void resetCovenantID(void* userdata); + static void confirmResetCovenantCallback(S32 option, void* userdata); + void sendChangeCovenantID(const LLUUID &asset_id); + void loadInvItem(LLInventoryItem *itemp); + static void onLoadComplete(LLVFS *vfs, + const LLUUID& asset_uuid, + LLAssetType::EType type, + void* user_data, S32 status); + + // Accessor functions + static void updateCovenantText(const std::string& string, const LLUUID& asset_id); + static void updateEstateName(const std::string& name); + static void updateLastModified(const std::string& text); + static void updateEstateOwnerName(const std::string& name); + + const LLUUID& getCovenantID() const { return mCovenantID; } + void setCovenantID(const LLUUID& id) { mCovenantID = id; } + const std::string& getEstateName() const; + void setEstateName(const std::string& name); + const std::string& getOwnerName() const; + void setOwnerName(const std::string& name); + void setCovenantTextEditor(const std::string& text); + + typedef enum e_asset_status + { + ASSET_ERROR, + ASSET_UNLOADED, + ASSET_LOADING, + ASSET_LOADED + } EAssetStatus; + +protected: + virtual BOOL sendUpdate(); + LLTextBox* mEstateNameText; + LLTextBox* mEstateOwnerText; + LLTextBox* mLastModifiedText; + // CovenantID from sim + LLUUID mCovenantID; + LLViewerTextEditor* mEditor; + EAssetStatus mAssetStatus; +}; + +#endif |