summaryrefslogtreecommitdiff
path: root/indra/newview/llestateinfomodel.h
diff options
context:
space:
mode:
authorRider Linden <rider@lindenlab.com>2019-01-04 12:32:23 -0800
committerRider Linden <rider@lindenlab.com>2019-01-04 12:32:23 -0800
commit0969632b11383e83a53bce3a10379945be7ad8c2 (patch)
tree84ef914b6e3f89d0d1cb102d4bd405c5d21e58a1 /indra/newview/llestateinfomodel.h
parentd607d81dba25dfe7dd1ecdf123af656ca939924f (diff)
Move some estate requests into the LLEstateInfoModel and out of the Region floater.
Fix issue where user could potentially be looking at one set of estate options and update the estate they were standing in by mistake.
Diffstat (limited to 'indra/newview/llestateinfomodel.h')
-rw-r--r--indra/newview/llestateinfomodel.h137
1 files changed, 91 insertions, 46 deletions
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h
index d6f00c573c..85f9f91d86 100644
--- a/indra/newview/llestateinfomodel.h
+++ b/indra/newview/llestateinfomodel.h
@@ -32,7 +32,10 @@ class LLMessageSystem;
#include "llsingleton.h"
#include "llcoros.h"
#include "lleventcoro.h"
+#include "lldispatcher.h"
+#include "llregionflags.h"
+class LLViewerRegion;
/**
* Contains estate info, notifies interested parties of its changes.
*/
@@ -42,68 +45,110 @@ class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel>
LOG_CLASS(LLEstateInfoModel);
public:
- typedef boost::signals2::signal<void()> update_signal_t;
- boost::signals2::connection setUpdateCallback(const update_signal_t::slot_type& cb); /// the model has been externally updated
- boost::signals2::connection setCommitCallback(const update_signal_t::slot_type& cb); /// our changes have been applied
+ typedef std::vector<std::string> strings_t;
+ typedef boost::signals2::signal<void()> update_signal_t;
+ typedef boost::signals2::signal<void(U32)> update_flaged_signal_t;
+ typedef boost::signals2::connection connection_t;
- void sendEstateInfo(); /// send estate info to the simulator
+ connection_t setUpdateCallback(const update_signal_t::slot_type& cb); /// the model has been externally updated
+ connection_t setUpdateAccessCallback(const update_flaged_signal_t::slot_type& cb);
+ connection_t setUpdateExperienceCallback(const update_signal_t::slot_type& cb);
+ connection_t setCommitCallback(const update_signal_t::slot_type& cb); /// our changes have been applied
+
+ void setRegion(LLViewerRegion* region);
+ void clearRegion();
+ void sendEstateInfo(); /// send estate info to the simulator
// getters
- bool getUseFixedSun() const;
- bool getIsExternallyVisible() const;
- bool getAllowDirectTeleport() const;
- bool getDenyAnonymous() const;
- bool getDenyAgeUnverified() const;
- bool getAllowVoiceChat() const;
- bool getAllowAccessOverride() const;
- bool getAllowEnvironmentOverride() const;
-
- const std::string& getName() const { return mName; }
- const LLUUID& getOwnerID() const { return mOwnerID; }
- U32 getID() const { return mID; }
- F32 getSunHour() const { return getUseFixedSun() ? mSunHour : 0.f; }
+ bool getUseFixedSun() const { return getFlag(REGION_FLAGS_SUN_FIXED); }
+ bool getIsExternallyVisible() const { return getFlag(REGION_FLAGS_EXTERNALLY_VISIBLE); }
+ bool getAllowDirectTeleport() const { return getFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT); }
+ bool getDenyAnonymous() const { return getFlag(REGION_FLAGS_DENY_ANONYMOUS); }
+ bool getDenyAgeUnverified() const { return getFlag(REGION_FLAGS_DENY_AGEUNVERIFIED); }
+ bool getAllowVoiceChat() const { return getFlag(REGION_FLAGS_ALLOW_VOICE); }
+ bool getAllowAccessOverride() const { return getFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE); }
+ bool getAllowEnvironmentOverride() const { return getFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE); }
+
+ const std::string& getName() const { return mName; }
+ const LLUUID& getOwnerID() const { return mOwnerID; }
+ U32 getID() const { return mID; }
+ F32 getSunHour() const { return getUseFixedSun() ? mSunHour : 0.f; }
// setters
- void setUseFixedSun(bool val);
- void setIsExternallyVisible(bool val);
- void setAllowDirectTeleport(bool val);
- void setDenyAnonymous(bool val);
- void setDenyAgeUnverified(bool val);
- void setAllowVoiceChat(bool val);
- void setAllowAccessOverride(bool val);
- void setAllowEnvironmentOverride(bool val);
+ void setUseFixedSun(bool val) { setFlag(REGION_FLAGS_SUN_FIXED, val); }
+ void setIsExternallyVisible(bool val) { setFlag(REGION_FLAGS_EXTERNALLY_VISIBLE, val); }
+ void setAllowDirectTeleport(bool val) { setFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, val); }
+ void setDenyAnonymous(bool val) { setFlag(REGION_FLAGS_DENY_ANONYMOUS, val); }
+ void setDenyAgeUnverified(bool val) { setFlag(REGION_FLAGS_DENY_AGEUNVERIFIED, val); }
+ void setAllowVoiceChat(bool val) { setFlag(REGION_FLAGS_ALLOW_VOICE, val); }
+ void setAllowAccessOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE, val); }
+ void setAllowEnvironmentOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE, val); }
- void setSunHour(F32 sun_hour) { mSunHour = sun_hour; }
+ void setSunHour(F32 sun_hour) { mSunHour = sun_hour; }
-protected:
- typedef std::vector<std::string> strings_t;
+ const uuid_set_t & getAllowedAgents() const { return mAllowedAgents; }
+ const uuid_set_t & getAllowedGroups() const { return mAllowedGroups; }
+ const uuid_set_t & getBannedAgents() const { return mBannedAgents; }
+ const uuid_set_t & getEstateManagers() const { return mEstateManagers; }
+
+ const uuid_set_t & getAllowedExperiences() const { return mExperienceAllowed; }
+ const uuid_set_t & getTrustedExperiences() const { return mExperienceTrusted; }
+ const uuid_set_t & getBlockedExperiences() const { return mExperienceBlocked; }
+
+ void sendEstateOwnerMessage(const std::string& request, const strings_t& strings);
+
+ //---------------------------------------------------------------------
+ /// refresh model with data from the incoming server message
+ void updateEstateInfo(const strings_t& strings);
+ void updateAccessInfo(const strings_t& strings);
+ void updateExperienceInfo(const strings_t& strings);
+
+ const LLUUID & getLastInvoice() { return mRequestInvoice; }
+ const LLUUID & nextInvoice() { mRequestInvoice.generate(); return mRequestInvoice; }
- friend class LLDispatchEstateUpdateInfo;
+protected:
- /// refresh model with data from the incoming server message
- void update(const strings_t& strings);
+ void notifyCommit();
- void notifyCommit();
+ virtual void initSingleton() override;
private:
- bool commitEstateInfoCaps();
- void commitEstateInfoDataserver();
- inline bool getFlag(U64 flag) const;
- inline void setFlag(U64 flag, bool val);
- U64 getFlags() const { return mFlags; }
- std::string getInfoDump();
+ bool commitEstateInfoCaps();
+ void commitEstateInfoDataserver();
+ inline bool getFlag(U64 flag) const;
+ inline void setFlag(U64 flag, bool val);
+ U64 getFlags() const { return mFlags; }
+ std::string getInfoDump();
// estate info
- std::string mName; /// estate name
- LLUUID mOwnerID; /// estate owner id
- U32 mID; /// estate id
- U64 mFlags; /// estate flags
- F32 mSunHour; /// estate sun hour
+ std::string mName; /// estate name
+ LLUUID mOwnerID; /// estate owner id
+ U32 mID; /// estate id
+ U64 mFlags; /// estate flags
+ F32 mSunHour; /// estate sun hour
+
+ uuid_set_t mAllowedAgents;
+ uuid_set_t mAllowedGroups;
+ uuid_set_t mBannedAgents;
+ uuid_set_t mEstateManagers;
+
+ uuid_set_t mExperienceAllowed;
+ uuid_set_t mExperienceTrusted;
+ uuid_set_t mExperienceBlocked;
+
+ update_signal_t mUpdateSignal; /// emitted when we receive update from sim
+ update_flaged_signal_t mUpdateAccess;
+ update_signal_t mUpdateExperience;
+ update_signal_t mCommitSignal; /// emitted when our update gets applied to sim
+
+ LLDispatcher mDispatch;
+ LLUUID mRequestInvoice;
+ LLViewerRegion* mRegion;
+
+ void commitEstateInfoCapsCoro(std::string url);
- update_signal_t mUpdateSignal; /// emitted when we receive update from sim
- update_signal_t mCommitSignal; /// emitted when our update gets applied to sim
+ static void processEstateOwnerRequest(LLMessageSystem* msg, void**);
- void commitEstateInfoCapsCoro(std::string url);
};
inline bool LLEstateInfoModel::getFlag(U64 flag) const