ACME-1459: Experience tab added to the about land tab for editing parcel Experiences
parent
9a7458f9e3
commit
4c7b0cb528
|
|
@ -41,6 +41,7 @@
|
|||
#include "message.h"
|
||||
#include "u64.h"
|
||||
#include "llregionflags.h"
|
||||
#include <boost/range/adaptor/map.hpp>
|
||||
|
||||
static const F32 SOME_BIG_NUMBER = 1000.0f;
|
||||
static const F32 SOME_BIG_NEG_NUMBER = -1000.0f;
|
||||
|
|
@ -1256,6 +1257,17 @@ void LLParcel::setExperienceKeyType( const LLUUID& experience_key, U32 type )
|
|||
}
|
||||
else
|
||||
{
|
||||
mExperienceKeys[experience_key] = type;
|
||||
if(countExperienceKeyType(type) < PARCEL_MAX_EXPERIENCE_LIST)
|
||||
{
|
||||
mExperienceKeys[experience_key] = type;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
U32 LLParcel::countExperienceKeyType( U32 type )
|
||||
{
|
||||
return std::count_if(
|
||||
boost::begin(mExperienceKeys | boost::adaptors::map_values),
|
||||
boost::end(mExperienceKeys | boost::adaptors::map_values),
|
||||
std::bind2nd(std::equal_to<U32>(), type));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,9 @@ const S32 PARCEL_MAX_ACCESS_LIST = 300;
|
|||
//for access/ban lists.
|
||||
const F32 PARCEL_MAX_ENTRIES_PER_PACKET = 48.f;
|
||||
|
||||
// Maximum number of experiences
|
||||
const S32 PARCEL_MAX_EXPERIENCE_LIST = 24;
|
||||
|
||||
// Weekly charge for listing a parcel in the directory
|
||||
const S32 PARCEL_DIRECTORY_FEE = 30;
|
||||
|
||||
|
|
@ -671,6 +674,7 @@ public:
|
|||
typedef std::map<LLUUID, U32> xp_type_map_t;
|
||||
|
||||
void setExperienceKeyType(const LLUUID& experience_key, U32 type);
|
||||
U32 countExperienceKeyType(U32 type);
|
||||
U32 getExperienceKeyType(const LLUUID& experience_key)const;
|
||||
LLAccessEntry::map getExperienceKeysByType(U32 type)const;
|
||||
void clearExperienceKeysByType(U32 type);
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@
|
|||
#include "llviewercontrol.h"
|
||||
#include "roles_constants.h"
|
||||
#include "lltrans.h"
|
||||
#include "llpanelexperiencelisteditor.h"
|
||||
|
||||
#include "llgroupactions.h"
|
||||
|
||||
|
|
@ -86,7 +87,6 @@ static std::string MATURITY = "[MATURITY]";
|
|||
// constants used in callbacks below - syntactic sugar.
|
||||
static const BOOL BUY_GROUP_LAND = TRUE;
|
||||
static const BOOL BUY_PERSONAL_LAND = FALSE;
|
||||
LLPointer<LLParcelSelection> LLPanelLandGeneral::sSelectionForBuyPass = NULL;
|
||||
|
||||
// Statics
|
||||
LLParcelSelectionObserver* LLFloaterLand::sObserver = NULL;
|
||||
|
|
@ -162,191 +162,117 @@ void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
|
|||
msg->sendReliable(region->getHost());
|
||||
}
|
||||
|
||||
LLParcel* LLFloaterLand::getCurrentSelectedParcel()
|
||||
void send_other_clean_time_message(S32 parcel_local_id, S32 other_clean_time)
|
||||
{
|
||||
return mParcel->getParcel();
|
||||
};
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
|
||||
//static
|
||||
LLPanelLandObjects* LLFloaterLand::getCurrentPanelLandObjects()
|
||||
LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
|
||||
if (!region) return;
|
||||
|
||||
msg->newMessageFast(_PREHASH_ParcelSetOtherCleanTime);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
|
||||
msg->nextBlockFast(_PREHASH_ParcelData);
|
||||
msg->addS32Fast(_PREHASH_LocalID, parcel_local_id);
|
||||
msg->addS32Fast(_PREHASH_OtherCleanTime, other_clean_time);
|
||||
|
||||
msg->sendReliable(region->getHost());
|
||||
}
|
||||
|
||||
// inserts maturity info(icon and text) into target textbox
|
||||
// names_floater - pointer to floater which contains strings with maturity icons filenames
|
||||
// str_to_parse is string in format "txt1[MATURITY]txt2" where maturity icon and text will be inserted instead of [MATURITY]
|
||||
void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_floater, std::string str_to_parse)
|
||||
{
|
||||
LLFloaterLand* land_instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
|
||||
if(land_instance)
|
||||
LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
|
||||
if (!region)
|
||||
return;
|
||||
|
||||
LLStyle::Params style;
|
||||
|
||||
U8 sim_access = region->getSimAccess();
|
||||
|
||||
switch(sim_access)
|
||||
{
|
||||
return land_instance->mPanelObjects;
|
||||
case SIM_ACCESS_PG:
|
||||
style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_general")));
|
||||
break;
|
||||
|
||||
case SIM_ACCESS_ADULT:
|
||||
style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_adult")));
|
||||
break;
|
||||
|
||||
case SIM_ACCESS_MATURE:
|
||||
style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_moderate")));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
size_t maturity_pos = str_to_parse.find(MATURITY);
|
||||
|
||||
if (maturity_pos == std::string::npos)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
std::string text_before_rating = str_to_parse.substr(0, maturity_pos);
|
||||
std::string text_after_rating = str_to_parse.substr(maturity_pos + MATURITY.length());
|
||||
|
||||
target_textbox->setText(text_before_rating);
|
||||
|
||||
target_textbox->appendImageSegment(style);
|
||||
|
||||
target_textbox->appendText(LLViewerParcelMgr::getInstance()->getSelectionRegion()->getSimAccessString(), false);
|
||||
target_textbox->appendText(text_after_rating, false);
|
||||
}
|
||||
|
||||
void send_return_objects_message(S32 parcel_local_id, S32 return_type,
|
||||
uuid_list_t* owner_ids = NULL)
|
||||
{
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
|
||||
LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
|
||||
if (!region) return;
|
||||
|
||||
msg->newMessageFast(_PREHASH_ParcelReturnObjects);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
|
||||
msg->nextBlockFast(_PREHASH_ParcelData);
|
||||
msg->addS32Fast(_PREHASH_LocalID, parcel_local_id);
|
||||
msg->addU32Fast(_PREHASH_ReturnType, (U32) return_type);
|
||||
|
||||
// Dummy task id, not used
|
||||
msg->nextBlock("TaskIDs");
|
||||
msg->addUUID("TaskID", LLUUID::null);
|
||||
|
||||
// Throw all return ids into the packet.
|
||||
// TODO: Check for too many ids.
|
||||
if (owner_ids)
|
||||
{
|
||||
uuid_list_t::iterator end = owner_ids->end();
|
||||
for (uuid_list_t::iterator it = owner_ids->begin();
|
||||
it != end;
|
||||
++it)
|
||||
{
|
||||
msg->nextBlockFast(_PREHASH_OwnerIDs);
|
||||
msg->addUUIDFast(_PREHASH_OwnerID, (*it));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
LLPanelLandCovenant* LLFloaterLand::getCurrentPanelLandCovenant()
|
||||
{
|
||||
LLFloaterLand* land_instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
|
||||
if(land_instance)
|
||||
{
|
||||
return land_instance->mPanelCovenant;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void LLFloaterLand::refreshAll()
|
||||
{
|
||||
LLFloaterLand* land_instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
|
||||
if(land_instance)
|
||||
{
|
||||
land_instance->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterLand::onOpen(const LLSD& key)
|
||||
{
|
||||
// moved from triggering show instance in llviwermenu.cpp
|
||||
|
||||
if (LLViewerParcelMgr::getInstance()->selectionEmpty())
|
||||
{
|
||||
LLViewerParcelMgr::getInstance()->selectParcelAt(gAgent.getPositionGlobal());
|
||||
}
|
||||
|
||||
// Done automatically when the selected parcel's properties arrive
|
||||
// (and hence we have the local id).
|
||||
// LLViewerParcelMgr::getInstance()->sendParcelAccessListRequest(AL_ACCESS | AL_BAN | AL_RENTER);
|
||||
|
||||
mParcel = LLViewerParcelMgr::getInstance()->getFloatingParcelSelection();
|
||||
|
||||
// Refresh even if not over a region so we don't get an
|
||||
// uninitialized dialog. The dialog is 0-region aware.
|
||||
refresh();
|
||||
}
|
||||
|
||||
void LLFloaterLand::onVisibilityChanged(const LLSD& visible)
|
||||
{
|
||||
if (!visible.asBoolean())
|
||||
{
|
||||
// Might have been showing owned objects
|
||||
LLSelectMgr::getInstance()->unhighlightAll();
|
||||
|
||||
// Save which panel we had open
|
||||
sLastTab = mTabLand->getCurrentPanelIndex();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LLFloaterLand::LLFloaterLand(const LLSD& seed)
|
||||
: LLFloater(seed)
|
||||
{
|
||||
mFactoryMap["land_general_panel"] = LLCallbackMap(createPanelLandGeneral, this);
|
||||
mFactoryMap["land_covenant_panel"] = LLCallbackMap(createPanelLandCovenant, this);
|
||||
mFactoryMap["land_objects_panel"] = LLCallbackMap(createPanelLandObjects, this);
|
||||
mFactoryMap["land_options_panel"] = LLCallbackMap(createPanelLandOptions, this);
|
||||
mFactoryMap["land_audio_panel"] = LLCallbackMap(createPanelLandAudio, this);
|
||||
mFactoryMap["land_media_panel"] = LLCallbackMap(createPanelLandMedia, this);
|
||||
mFactoryMap["land_access_panel"] = LLCallbackMap(createPanelLandAccess, this);
|
||||
|
||||
sObserver = new LLParcelSelectionObserver();
|
||||
LLViewerParcelMgr::getInstance()->addObserver( sObserver );
|
||||
}
|
||||
|
||||
BOOL LLFloaterLand::postBuild()
|
||||
{
|
||||
setVisibleCallback(boost::bind(&LLFloaterLand::onVisibilityChanged, this, _2));
|
||||
|
||||
LLTabContainer* tab = getChild<LLTabContainer>("landtab");
|
||||
|
||||
mTabLand = (LLTabContainer*) tab;
|
||||
|
||||
if (tab)
|
||||
{
|
||||
tab->selectTab(sLastTab);
|
||||
msg->nextBlockFast(_PREHASH_OwnerIDs);
|
||||
msg->addUUIDFast(_PREHASH_OwnerID, LLUUID::null);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
msg->sendReliable(region->getHost());
|
||||
}
|
||||
|
||||
|
||||
// virtual
|
||||
LLFloaterLand::~LLFloaterLand()
|
||||
{
|
||||
LLViewerParcelMgr::getInstance()->removeObserver( sObserver );
|
||||
delete sObserver;
|
||||
sObserver = NULL;
|
||||
}
|
||||
|
||||
// public
|
||||
void LLFloaterLand::refresh()
|
||||
{
|
||||
mPanelGeneral->refresh();
|
||||
mPanelObjects->refresh();
|
||||
mPanelOptions->refresh();
|
||||
mPanelAudio->refresh();
|
||||
mPanelMedia->refresh();
|
||||
mPanelAccess->refresh();
|
||||
mPanelCovenant->refresh();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void* LLFloaterLand::createPanelLandGeneral(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelGeneral = new LLPanelLandGeneral(self->mParcel);
|
||||
return self->mPanelGeneral;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandCovenant(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelCovenant = new LLPanelLandCovenant(self->mParcel);
|
||||
return self->mPanelCovenant;
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandObjects(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelObjects = new LLPanelLandObjects(self->mParcel);
|
||||
return self->mPanelObjects;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandOptions(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelOptions = new LLPanelLandOptions(self->mParcel);
|
||||
return self->mPanelOptions;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandAudio(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelAudio = new LLPanelLandAudio(self->mParcel);
|
||||
return self->mPanelAudio;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandMedia(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelMedia = new LLPanelLandMedia(self->mParcel);
|
||||
return self->mPanelMedia;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandAccess(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelAccess = new LLPanelLandAccess(self->mParcel);
|
||||
return self->mPanelAccess;
|
||||
}
|
||||
LLPointer<LLParcelSelection> LLPanelLandGeneral::sSelectionForBuyPass = NULL;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// LLPanelLandGeneral
|
||||
|
|
@ -1063,6 +989,8 @@ void LLPanelLandGeneral::onClickStopSellLand(void* data)
|
|||
LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(parcel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// LLPanelLandObjects
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
@ -1308,66 +1236,6 @@ void LLPanelLandObjects::draw()
|
|||
LLPanel::draw();
|
||||
}
|
||||
|
||||
void send_other_clean_time_message(S32 parcel_local_id, S32 other_clean_time)
|
||||
{
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
|
||||
LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
|
||||
if (!region) return;
|
||||
|
||||
msg->newMessageFast(_PREHASH_ParcelSetOtherCleanTime);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
|
||||
msg->nextBlockFast(_PREHASH_ParcelData);
|
||||
msg->addS32Fast(_PREHASH_LocalID, parcel_local_id);
|
||||
msg->addS32Fast(_PREHASH_OtherCleanTime, other_clean_time);
|
||||
|
||||
msg->sendReliable(region->getHost());
|
||||
}
|
||||
|
||||
void send_return_objects_message(S32 parcel_local_id, S32 return_type,
|
||||
uuid_list_t* owner_ids = NULL)
|
||||
{
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
|
||||
LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
|
||||
if (!region) return;
|
||||
|
||||
msg->newMessageFast(_PREHASH_ParcelReturnObjects);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
|
||||
msg->nextBlockFast(_PREHASH_ParcelData);
|
||||
msg->addS32Fast(_PREHASH_LocalID, parcel_local_id);
|
||||
msg->addU32Fast(_PREHASH_ReturnType, (U32) return_type);
|
||||
|
||||
// Dummy task id, not used
|
||||
msg->nextBlock("TaskIDs");
|
||||
msg->addUUID("TaskID", LLUUID::null);
|
||||
|
||||
// Throw all return ids into the packet.
|
||||
// TODO: Check for too many ids.
|
||||
if (owner_ids)
|
||||
{
|
||||
uuid_list_t::iterator end = owner_ids->end();
|
||||
for (uuid_list_t::iterator it = owner_ids->begin();
|
||||
it != end;
|
||||
++it)
|
||||
{
|
||||
msg->nextBlockFast(_PREHASH_OwnerIDs);
|
||||
msg->addUUIDFast(_PREHASH_OwnerID, (*it));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
msg->nextBlockFast(_PREHASH_OwnerIDs);
|
||||
msg->addUUIDFast(_PREHASH_OwnerID, LLUUID::null);
|
||||
}
|
||||
|
||||
msg->sendReliable(region->getHost());
|
||||
}
|
||||
|
||||
bool LLPanelLandObjects::callbackReturnOwnerObjects(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
|
|
@ -1804,6 +1672,52 @@ void LLPanelLandObjects::onCommitClean(LLUICtrl *caller, void* user_data)
|
|||
}
|
||||
|
||||
|
||||
class LLPanelLandOptions
|
||||
: public LLPanel
|
||||
{
|
||||
public:
|
||||
LLPanelLandOptions(LLSafeHandle<LLParcelSelection>& parcelp);
|
||||
virtual ~LLPanelLandOptions();
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ void draw();
|
||||
/*virtual*/ void refresh();
|
||||
|
||||
private:
|
||||
// Refresh the "show in search" checkbox and category selector.
|
||||
void refreshSearch();
|
||||
|
||||
static void onCommitAny(LLUICtrl* ctrl, void *userdata);
|
||||
static void onClickSet(void* userdata);
|
||||
static void onClickClear(void* userdata);
|
||||
|
||||
private:
|
||||
LLCheckBoxCtrl* mCheckEditObjects;
|
||||
LLCheckBoxCtrl* mCheckEditGroupObjects;
|
||||
LLCheckBoxCtrl* mCheckAllObjectEntry;
|
||||
LLCheckBoxCtrl* mCheckGroupObjectEntry;
|
||||
LLCheckBoxCtrl* mCheckSafe;
|
||||
LLCheckBoxCtrl* mCheckFly;
|
||||
LLCheckBoxCtrl* mCheckGroupScripts;
|
||||
LLCheckBoxCtrl* mCheckOtherScripts;
|
||||
|
||||
LLCheckBoxCtrl* mCheckShowDirectory;
|
||||
LLComboBox* mCategoryCombo;
|
||||
LLComboBox* mLandingTypeCombo;
|
||||
|
||||
LLTextureCtrl* mSnapshotCtrl;
|
||||
|
||||
LLTextBox* mLocationText;
|
||||
LLButton* mSetBtn;
|
||||
LLButton* mClearBtn;
|
||||
|
||||
LLCheckBoxCtrl *mMatureCtrl;
|
||||
LLCheckBoxCtrl *mPushRestrictionCtrl;
|
||||
LLCheckBoxCtrl *mSeeAvatarsCtrl;
|
||||
|
||||
LLSafeHandle<LLParcelSelection>& mParcel;
|
||||
};
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// LLPanelLandOptions
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
@ -2320,6 +2234,37 @@ void LLPanelLandOptions::onClickClear(void* userdata)
|
|||
}
|
||||
|
||||
|
||||
class LLPanelLandAccess
|
||||
: public LLPanel
|
||||
{
|
||||
public:
|
||||
LLPanelLandAccess(LLSafeHandle<LLParcelSelection>& parcelp);
|
||||
virtual ~LLPanelLandAccess();
|
||||
void refresh();
|
||||
void refresh_ui();
|
||||
void refreshNames();
|
||||
virtual void draw();
|
||||
|
||||
static void onCommitPublicAccess(LLUICtrl* ctrl, void *userdata);
|
||||
static void onCommitAny(LLUICtrl* ctrl, void *userdata);
|
||||
static void onClickRemoveAccess(void*);
|
||||
static void onClickRemoveBanned(void*);
|
||||
|
||||
virtual BOOL postBuild();
|
||||
|
||||
void onClickAddAccess();
|
||||
void onClickAddBanned();
|
||||
void callbackAvatarCBBanned(const uuid_vec_t& ids);
|
||||
void callbackAvatarCBAccess(const uuid_vec_t& ids);
|
||||
|
||||
protected:
|
||||
LLNameListCtrl* mListAccess;
|
||||
LLNameListCtrl* mListBanned;
|
||||
|
||||
LLSafeHandle<LLParcelSelection>& mParcel;
|
||||
};
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// LLPanelLandAccess
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
@ -2835,6 +2780,7 @@ void LLPanelLandAccess::onClickRemoveBanned(void* data)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// LLPanelLandCovenant
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
@ -2948,51 +2894,303 @@ void LLPanelLandCovenant::updateEstateOwnerName(const std::string& name)
|
|||
}
|
||||
}
|
||||
|
||||
// inserts maturity info(icon and text) into target textbox
|
||||
// names_floater - pointer to floater which contains strings with maturity icons filenames
|
||||
// str_to_parse is string in format "txt1[MATURITY]txt2" where maturity icon and text will be inserted instead of [MATURITY]
|
||||
void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_floater, std::string str_to_parse)
|
||||
class LLPanelLandExperiences
|
||||
: public LLPanel
|
||||
{
|
||||
LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
|
||||
if (!region)
|
||||
return;
|
||||
public:
|
||||
LLPanelLandExperiences(LLSafeHandle<LLParcelSelection>& parcelp);
|
||||
virtual BOOL postBuild();
|
||||
void refresh();
|
||||
|
||||
LLStyle::Params style;
|
||||
void experienceAdded(const LLUUID& id, U32 xp_type, U32 access_type);
|
||||
void experienceRemoved(const LLUUID& id, U32 access_type);
|
||||
protected:
|
||||
LLPanelExperienceListEditor* setupList( const char* control_name, U32 xp_type, U32 access_type );
|
||||
void refreshPanel(LLPanelExperienceListEditor* panel, U32 xp_type);
|
||||
|
||||
U8 sim_access = region->getSimAccess();
|
||||
|
||||
switch(sim_access)
|
||||
{
|
||||
case SIM_ACCESS_PG:
|
||||
style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_general")));
|
||||
break;
|
||||
|
||||
case SIM_ACCESS_ADULT:
|
||||
style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_adult")));
|
||||
break;
|
||||
|
||||
case SIM_ACCESS_MATURE:
|
||||
style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_moderate")));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
size_t maturity_pos = str_to_parse.find(MATURITY);
|
||||
LLSafeHandle<LLParcelSelection>& mParcel;
|
||||
|
||||
if (maturity_pos == std::string::npos)
|
||||
|
||||
LLPanelExperienceListEditor* mAllowed;
|
||||
LLPanelExperienceListEditor* mBlocked;
|
||||
};
|
||||
|
||||
LLPanelLandExperiences::LLPanelLandExperiences( LLSafeHandle<LLParcelSelection>& parcelp )
|
||||
: mParcel(parcelp)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
BOOL LLPanelLandExperiences::postBuild()
|
||||
{
|
||||
mAllowed = setupList("panel_allowed", EXPERIENCE_KEY_TYPE_ALLOWED, AL_ALLOW_EXPERIENCE);
|
||||
mBlocked = setupList("panel_blocked", EXPERIENCE_KEY_TYPE_BLOCKED, AL_BLOCK_EXPERIENCE);
|
||||
|
||||
getChild<LLLayoutPanel>("trusted_layout_panel")->setVisible(FALSE);
|
||||
getChild<LLTextBox>("experiences_help_text")->setVisible(FALSE);
|
||||
getChild<LLTextBox>("allowed_text_help")->setText(getString("allowed_parcel_text"));
|
||||
getChild<LLTextBox>("blocked_text_help")->setText(getString("blocked_parcel_text"));
|
||||
|
||||
return LLPanel::postBuild();
|
||||
}
|
||||
|
||||
LLPanelExperienceListEditor* LLPanelLandExperiences::setupList( const char* control_name, U32 xp_type, U32 access_type )
|
||||
{
|
||||
LLPanelExperienceListEditor* child = findChild<LLPanelExperienceListEditor>(control_name);
|
||||
if(child)
|
||||
{
|
||||
child->getChild<LLTextBox>("text_name")->setText(child->getString(control_name));
|
||||
child->setMaxExperienceIDs(PARCEL_MAX_EXPERIENCE_LIST);
|
||||
child->setAddedCallback(boost::bind(&LLPanelLandExperiences::experienceAdded, this, _1, xp_type, access_type));
|
||||
child->setRemovedCallback(boost::bind(&LLPanelLandExperiences::experienceRemoved, this, _1, access_type));
|
||||
}
|
||||
|
||||
return child;
|
||||
}
|
||||
|
||||
void LLPanelLandExperiences::experienceAdded( const LLUUID& id, U32 xp_type, U32 access_type )
|
||||
{
|
||||
LLParcel* parcel = mParcel->getParcel();
|
||||
if (parcel)
|
||||
{
|
||||
parcel->setExperienceKeyType(id, xp_type);
|
||||
LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(access_type);
|
||||
refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelLandExperiences::experienceRemoved( const LLUUID& id, U32 access_type )
|
||||
{
|
||||
LLParcel* parcel = mParcel->getParcel();
|
||||
if (parcel)
|
||||
{
|
||||
parcel->setExperienceKeyType(id, EXPERIENCE_KEY_TYPE_NONE);
|
||||
LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(access_type);
|
||||
refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelLandExperiences::refreshPanel(LLPanelExperienceListEditor* panel, U32 xp_type)
|
||||
{
|
||||
LLParcel *parcel = mParcel->getParcel();
|
||||
|
||||
// Display options
|
||||
if (parcel == NULL || panel == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
std::string text_before_rating = str_to_parse.substr(0, maturity_pos);
|
||||
std::string text_after_rating = str_to_parse.substr(maturity_pos + MATURITY.length());
|
||||
|
||||
target_textbox->setText(text_before_rating);
|
||||
|
||||
target_textbox->appendImageSegment(style);
|
||||
|
||||
target_textbox->appendText(LLViewerParcelMgr::getInstance()->getSelectionRegion()->getSimAccessString(), false);
|
||||
target_textbox->appendText(text_after_rating, false);
|
||||
LLAccessEntry::map entries = parcel->getExperienceKeysByType(xp_type);
|
||||
LLAccessEntry::map::iterator it = entries.begin();
|
||||
LLSD ids = LLSD::emptyArray();
|
||||
for (/**/; it != entries.end(); ++it)
|
||||
{
|
||||
ids.append(it->second.mID);
|
||||
}
|
||||
panel->setExperienceIds(ids);
|
||||
panel->setReadonly(!LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_OPTIONS));
|
||||
panel->refreshExperienceCounter();
|
||||
}
|
||||
|
||||
void LLPanelLandExperiences::refresh()
|
||||
{
|
||||
refreshPanel(mAllowed, EXPERIENCE_KEY_TYPE_ALLOWED);
|
||||
refreshPanel(mBlocked, EXPERIENCE_KEY_TYPE_BLOCKED);
|
||||
}
|
||||
|
||||
LLParcel* LLFloaterLand::getCurrentSelectedParcel()
|
||||
{
|
||||
return mParcel->getParcel();
|
||||
};
|
||||
|
||||
//static
|
||||
LLPanelLandObjects* LLFloaterLand::getCurrentPanelLandObjects()
|
||||
{
|
||||
LLFloaterLand* land_instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
|
||||
if(land_instance)
|
||||
{
|
||||
return land_instance->mPanelObjects;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
LLPanelLandCovenant* LLFloaterLand::getCurrentPanelLandCovenant()
|
||||
{
|
||||
LLFloaterLand* land_instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
|
||||
if(land_instance)
|
||||
{
|
||||
return land_instance->mPanelCovenant;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void LLFloaterLand::refreshAll()
|
||||
{
|
||||
LLFloaterLand* land_instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
|
||||
if(land_instance)
|
||||
{
|
||||
land_instance->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterLand::onOpen(const LLSD& key)
|
||||
{
|
||||
// moved from triggering show instance in llviwermenu.cpp
|
||||
|
||||
if (LLViewerParcelMgr::getInstance()->selectionEmpty())
|
||||
{
|
||||
LLViewerParcelMgr::getInstance()->selectParcelAt(gAgent.getPositionGlobal());
|
||||
}
|
||||
|
||||
// Done automatically when the selected parcel's properties arrive
|
||||
// (and hence we have the local id).
|
||||
// LLViewerParcelMgr::getInstance()->sendParcelAccessListRequest(AL_ACCESS | AL_BAN | AL_RENTER);
|
||||
|
||||
mParcel = LLViewerParcelMgr::getInstance()->getFloatingParcelSelection();
|
||||
|
||||
// Refresh even if not over a region so we don't get an
|
||||
// uninitialized dialog. The dialog is 0-region aware.
|
||||
refresh();
|
||||
}
|
||||
|
||||
void LLFloaterLand::onVisibilityChanged(const LLSD& visible)
|
||||
{
|
||||
if (!visible.asBoolean())
|
||||
{
|
||||
// Might have been showing owned objects
|
||||
LLSelectMgr::getInstance()->unhighlightAll();
|
||||
|
||||
// Save which panel we had open
|
||||
sLastTab = mTabLand->getCurrentPanelIndex();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LLFloaterLand::LLFloaterLand(const LLSD& seed)
|
||||
: LLFloater(seed)
|
||||
{
|
||||
mFactoryMap["land_general_panel"] = LLCallbackMap(createPanelLandGeneral, this);
|
||||
mFactoryMap["land_covenant_panel"] = LLCallbackMap(createPanelLandCovenant, this);
|
||||
mFactoryMap["land_objects_panel"] = LLCallbackMap(createPanelLandObjects, this);
|
||||
mFactoryMap["land_options_panel"] = LLCallbackMap(createPanelLandOptions, this);
|
||||
mFactoryMap["land_audio_panel"] = LLCallbackMap(createPanelLandAudio, this);
|
||||
mFactoryMap["land_media_panel"] = LLCallbackMap(createPanelLandMedia, this);
|
||||
mFactoryMap["land_access_panel"] = LLCallbackMap(createPanelLandAccess, this);
|
||||
mFactoryMap["land_experiences_panel"] = LLCallbackMap(createPanelLandExperiences, this);
|
||||
|
||||
sObserver = new LLParcelSelectionObserver();
|
||||
LLViewerParcelMgr::getInstance()->addObserver( sObserver );
|
||||
}
|
||||
|
||||
BOOL LLFloaterLand::postBuild()
|
||||
{
|
||||
setVisibleCallback(boost::bind(&LLFloaterLand::onVisibilityChanged, this, _2));
|
||||
|
||||
LLTabContainer* tab = getChild<LLTabContainer>("landtab");
|
||||
|
||||
mTabLand = (LLTabContainer*) tab;
|
||||
|
||||
if (tab)
|
||||
{
|
||||
tab->selectTab(sLastTab);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// virtual
|
||||
LLFloaterLand::~LLFloaterLand()
|
||||
{
|
||||
LLViewerParcelMgr::getInstance()->removeObserver( sObserver );
|
||||
delete sObserver;
|
||||
sObserver = NULL;
|
||||
}
|
||||
|
||||
// public
|
||||
void LLFloaterLand::refresh()
|
||||
{
|
||||
mPanelGeneral->refresh();
|
||||
mPanelObjects->refresh();
|
||||
mPanelOptions->refresh();
|
||||
mPanelAudio->refresh();
|
||||
mPanelMedia->refresh();
|
||||
mPanelAccess->refresh();
|
||||
mPanelCovenant->refresh();
|
||||
mPanelExperiences->refresh();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void* LLFloaterLand::createPanelLandGeneral(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelGeneral = new LLPanelLandGeneral(self->mParcel);
|
||||
return self->mPanelGeneral;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandCovenant(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelCovenant = new LLPanelLandCovenant(self->mParcel);
|
||||
return self->mPanelCovenant;
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandObjects(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelObjects = new LLPanelLandObjects(self->mParcel);
|
||||
return self->mPanelObjects;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandOptions(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelOptions = new LLPanelLandOptions(self->mParcel);
|
||||
return self->mPanelOptions;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandAudio(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelAudio = new LLPanelLandAudio(self->mParcel);
|
||||
return self->mPanelAudio;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandMedia(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelMedia = new LLPanelLandMedia(self->mParcel);
|
||||
return self->mPanelMedia;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandAccess(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelAccess = new LLPanelLandAccess(self->mParcel);
|
||||
return self->mPanelAccess;
|
||||
}
|
||||
|
||||
// static
|
||||
void* LLFloaterLand::createPanelLandExperiences(void* data)
|
||||
{
|
||||
LLFloaterLand* self = (LLFloaterLand*)data;
|
||||
self->mPanelExperiences = new LLPanelLandExperiences(self->mParcel);
|
||||
return self->mPanelExperiences;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ class LLPanelLandBan;
|
|||
class LLPanelLandRenters;
|
||||
class LLPanelLandCovenant;
|
||||
class LLParcel;
|
||||
class LLPanelLandExperiences;
|
||||
|
||||
class LLFloaterLand
|
||||
: public LLFloater
|
||||
|
|
@ -101,6 +102,7 @@ protected:
|
|||
static void* createPanelLandAudio(void* data);
|
||||
static void* createPanelLandMedia(void* data);
|
||||
static void* createPanelLandAccess(void* data);
|
||||
static void* createPanelLandExperiences(void* data);
|
||||
static void* createPanelLandBan(void* data);
|
||||
|
||||
|
||||
|
|
@ -116,6 +118,7 @@ protected:
|
|||
LLPanelLandMedia* mPanelMedia;
|
||||
LLPanelLandAccess* mPanelAccess;
|
||||
LLPanelLandCovenant* mPanelCovenant;
|
||||
LLPanelLandExperiences* mPanelExperiences;
|
||||
|
||||
LLSafeHandle<LLParcelSelection> mParcel;
|
||||
|
||||
|
|
@ -307,83 +310,6 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
class LLPanelLandOptions
|
||||
: public LLPanel
|
||||
{
|
||||
public:
|
||||
LLPanelLandOptions(LLSafeHandle<LLParcelSelection>& parcelp);
|
||||
virtual ~LLPanelLandOptions();
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ void draw();
|
||||
/*virtual*/ void refresh();
|
||||
|
||||
private:
|
||||
// Refresh the "show in search" checkbox and category selector.
|
||||
void refreshSearch();
|
||||
|
||||
static void onCommitAny(LLUICtrl* ctrl, void *userdata);
|
||||
static void onClickSet(void* userdata);
|
||||
static void onClickClear(void* userdata);
|
||||
|
||||
private:
|
||||
LLCheckBoxCtrl* mCheckEditObjects;
|
||||
LLCheckBoxCtrl* mCheckEditGroupObjects;
|
||||
LLCheckBoxCtrl* mCheckAllObjectEntry;
|
||||
LLCheckBoxCtrl* mCheckGroupObjectEntry;
|
||||
LLCheckBoxCtrl* mCheckSafe;
|
||||
LLCheckBoxCtrl* mCheckFly;
|
||||
LLCheckBoxCtrl* mCheckGroupScripts;
|
||||
LLCheckBoxCtrl* mCheckOtherScripts;
|
||||
|
||||
LLCheckBoxCtrl* mCheckShowDirectory;
|
||||
LLComboBox* mCategoryCombo;
|
||||
LLComboBox* mLandingTypeCombo;
|
||||
|
||||
LLTextureCtrl* mSnapshotCtrl;
|
||||
|
||||
LLTextBox* mLocationText;
|
||||
LLButton* mSetBtn;
|
||||
LLButton* mClearBtn;
|
||||
|
||||
LLCheckBoxCtrl *mMatureCtrl;
|
||||
LLCheckBoxCtrl *mPushRestrictionCtrl;
|
||||
LLCheckBoxCtrl *mSeeAvatarsCtrl;
|
||||
|
||||
LLSafeHandle<LLParcelSelection>& mParcel;
|
||||
};
|
||||
|
||||
|
||||
class LLPanelLandAccess
|
||||
: public LLPanel
|
||||
{
|
||||
public:
|
||||
LLPanelLandAccess(LLSafeHandle<LLParcelSelection>& parcelp);
|
||||
virtual ~LLPanelLandAccess();
|
||||
void refresh();
|
||||
void refresh_ui();
|
||||
void refreshNames();
|
||||
virtual void draw();
|
||||
|
||||
static void onCommitPublicAccess(LLUICtrl* ctrl, void *userdata);
|
||||
static void onCommitAny(LLUICtrl* ctrl, void *userdata);
|
||||
static void onClickRemoveAccess(void*);
|
||||
static void onClickRemoveBanned(void*);
|
||||
|
||||
virtual BOOL postBuild();
|
||||
|
||||
void onClickAddAccess();
|
||||
void onClickAddBanned();
|
||||
void callbackAvatarCBBanned(const uuid_vec_t& ids);
|
||||
void callbackAvatarCBAccess(const uuid_vec_t& ids);
|
||||
|
||||
protected:
|
||||
LLNameListCtrl* mListAccess;
|
||||
LLNameListCtrl* mListBanned;
|
||||
|
||||
LLSafeHandle<LLParcelSelection>& mParcel;
|
||||
};
|
||||
|
||||
|
||||
class LLPanelLandCovenant
|
||||
: public LLPanel
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3555,26 +3555,28 @@ void LLPanelEnvironmentInfo::onRegionSettingsApplied(bool ok)
|
|||
|
||||
BOOL LLPanelRegionExperiences::postBuild()
|
||||
{
|
||||
mAllowed = setupList("panel_allowed");
|
||||
mTrusted = setupList("panel_trusted");
|
||||
mBlocked = setupList("panel_blocked");
|
||||
mAllowed = setupList("panel_allowed", ESTATE_EXPERIENCE_ALLOWED_ADD, ESTATE_EXPERIENCE_ALLOWED_REMOVE);
|
||||
mTrusted = setupList("panel_trusted", ESTATE_EXPERIENCE_BLOCKED_ADD, ESTATE_EXPERIENCE_BLOCKED_REMOVE);
|
||||
mBlocked = setupList("panel_blocked", ESTATE_EXPERIENCE_TRUSTED_ADD, ESTATE_EXPERIENCE_TRUSTED_REMOVE);
|
||||
|
||||
mAllowed->setAddedCallback( boost::bind(&LLPanelRegionExperiences::itemChanged, this, ESTATE_EXPERIENCE_ALLOWED_ADD, _1));
|
||||
mAllowed->setRemovedCallback( boost::bind(&LLPanelRegionExperiences::itemChanged, this, ESTATE_EXPERIENCE_ALLOWED_REMOVE, _1));
|
||||
mBlocked->setAddedCallback( boost::bind(&LLPanelRegionExperiences::itemChanged, this, ESTATE_EXPERIENCE_BLOCKED_ADD, _1));
|
||||
mBlocked->setRemovedCallback( boost::bind(&LLPanelRegionExperiences::itemChanged, this, ESTATE_EXPERIENCE_BLOCKED_REMOVE, _1));
|
||||
mTrusted->setAddedCallback( boost::bind(&LLPanelRegionExperiences::itemChanged, this, ESTATE_EXPERIENCE_TRUSTED_ADD, _1));
|
||||
mTrusted->setRemovedCallback( boost::bind(&LLPanelRegionExperiences::itemChanged, this, ESTATE_EXPERIENCE_TRUSTED_REMOVE, _1));
|
||||
getChild<LLLayoutPanel>("trusted_layout_panel")->setVisible(TRUE);
|
||||
getChild<LLTextBox>("experiences_help_text")->setText(getString("estate_caption"));
|
||||
getChild<LLTextBox>("trusted_text_help")->setText(getString("trusted_estate_text"));
|
||||
getChild<LLTextBox>("allowed_text_help")->setText(getString("allowed_estate_text"));
|
||||
getChild<LLTextBox>("blocked_text_help")->setText(getString("blocked_estate_text"));
|
||||
|
||||
return LLPanelRegionInfo::postBuild();
|
||||
}
|
||||
|
||||
LLPanelExperienceListEditor* LLPanelRegionExperiences::setupList( const char* control_name )
|
||||
LLPanelExperienceListEditor* LLPanelRegionExperiences::setupList( const char* control_name, U32 add_id, U32 remove_id )
|
||||
{
|
||||
LLPanelExperienceListEditor* child = findChild<LLPanelExperienceListEditor>(control_name);
|
||||
if(child)
|
||||
{
|
||||
child->getChild<LLTextBox>("text_name")->setText(getString(control_name));
|
||||
child->getChild<LLTextBox>("text_name")->setText(child->getString(control_name));
|
||||
child->setMaxExperienceIDs(ESTATE_MAX_EXPERIENCE_IDS);
|
||||
child->setAddedCallback( boost::bind(&LLPanelRegionExperiences::itemChanged, this, add_id, _1));
|
||||
child->setRemovedCallback(boost::bind(&LLPanelRegionExperiences::itemChanged, this, remove_id, _1));
|
||||
}
|
||||
|
||||
return child;
|
||||
|
|
@ -3600,18 +3602,10 @@ void LLPanelRegionExperiences::processResponse( const LLSD& content )
|
|||
|
||||
mTrusted->setExperienceIds(trusted);
|
||||
|
||||
if (!mAllowed->getReadonly())
|
||||
{
|
||||
mAllowed->refreshExperienceCounter("RegionInfoAllowedExperiences");
|
||||
}
|
||||
if (!mBlocked->getReadonly())
|
||||
{
|
||||
mBlocked->refreshExperienceCounter("RegionInfoBlockedExperiences");
|
||||
}
|
||||
if (!mTrusted->getReadonly())
|
||||
{
|
||||
mTrusted->refreshExperienceCounter("RegionInfoTrustedExperiences");
|
||||
}
|
||||
mAllowed->refreshExperienceCounter();
|
||||
mBlocked->refreshExperienceCounter();
|
||||
mTrusted->refreshExperienceCounter();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -470,7 +470,7 @@ public:
|
|||
private:
|
||||
void refreshRegionExperiences();
|
||||
|
||||
LLPanelExperienceListEditor* setupList(const char* control_name);
|
||||
LLPanelExperienceListEditor* setupList(const char* control_name, U32 add_id, U32 remove_id);
|
||||
static LLSD addIds( LLPanelExperienceListEditor* panel );
|
||||
|
||||
void itemChanged(U32 event_type, const LLUUID& id);
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ LLPanelExperienceListEditor::LLPanelExperienceListEditor()
|
|||
,mProfile(NULL)
|
||||
,mRemove(NULL)
|
||||
,mReadonly(false)
|
||||
,mMaxExperienceIDs(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -229,12 +230,15 @@ void LLPanelExperienceListEditor::setReadonly( bool val )
|
|||
checkButtonsEnabled();
|
||||
}
|
||||
|
||||
void LLPanelExperienceListEditor::refreshExperienceCounter(std::string string_name)
|
||||
void LLPanelExperienceListEditor::refreshExperienceCounter()
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[EXPERIENCES]"] = llformat("%d", mItems->getItemCount());
|
||||
args["[MAXEXPERIENCES]"] = llformat("%d", ESTATE_MAX_EXPERIENCE_IDS);
|
||||
getChild<LLTextBox>("text_name")->setText(LLTrans::getString(string_name, args));
|
||||
if(mMaxExperienceIDs > 0)
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[EXPERIENCES]"] = llformat("%d", mItems->getItemCount());
|
||||
args["[MAXEXPERIENCES]"] = llformat("%d", mMaxExperienceIDs);
|
||||
getChild<LLTextBox>("text_count")->setText(LLTrans::getString("ExperiencesCounter", args));
|
||||
}
|
||||
}
|
||||
|
||||
boost::signals2::connection LLPanelExperienceListEditor::setAddedCallback( list_changed_signal_t::slot_type cb )
|
||||
|
|
|
|||
|
|
@ -62,10 +62,12 @@ public:
|
|||
bool getReadonly() const { return mReadonly; }
|
||||
void setReadonly(bool val);
|
||||
|
||||
void refreshExperienceCounter(std::string string_name);
|
||||
void refreshExperienceCounter();
|
||||
|
||||
void addFilter(experience_function func){mFilters.push_back(func);}
|
||||
void setStickyFunction(experience_function func){mSticky = func;}
|
||||
U32 getMaxExperienceIDs() const { return mMaxExperienceIDs; }
|
||||
void setMaxExperienceIDs(U32 val) { mMaxExperienceIDs = val; }
|
||||
private:
|
||||
|
||||
void onItems();
|
||||
|
|
@ -91,6 +93,7 @@ private:
|
|||
LLUUID mKey;
|
||||
bool mReadonly;
|
||||
experience_function mSticky;
|
||||
U32 mMaxExperienceIDs;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -218,11 +218,7 @@ public:
|
|||
|
||||
// Takes an Access List flag, like AL_ACCESS or AL_BAN
|
||||
void sendParcelAccessListUpdate(U32 which);
|
||||
|
||||
static void sendParcelAccessListUpdate(U32 flags, const std::map<LLUUID, class LLAccessEntry>& entries, LLViewerRegion* region, S32 parcel_local_id);
|
||||
static void sendParcelExperienceUpdate( const U32 flags, uuid_vec_t experience_ids, LLViewerRegion* region, S32 parcel_local_id );
|
||||
|
||||
|
||||
|
||||
// Takes an Access List flag, like AL_ACCESS or AL_BAN
|
||||
void sendParcelAccessListRequest(U32 flags);
|
||||
|
||||
|
|
@ -295,6 +291,8 @@ public:
|
|||
static BOOL isParcelModifiableByAgent(const LLParcel* parcelp, U64 group_proxy_power);
|
||||
|
||||
private:
|
||||
static void sendParcelAccessListUpdate(U32 flags, const std::map<LLUUID, class LLAccessEntry>& entries, LLViewerRegion* region, S32 parcel_local_id);
|
||||
static void sendParcelExperienceUpdate( const U32 flags, uuid_vec_t experience_ids, LLViewerRegion* region, S32 parcel_local_id );
|
||||
static bool releaseAlertCB(const LLSD& notification, const LLSD& response);
|
||||
|
||||
// If the user is claiming land and the current selection
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
help_topic="floaterland"
|
||||
save_rect="true"
|
||||
title="ABOUT LAND"
|
||||
width="490">
|
||||
width="590">
|
||||
<floater.string
|
||||
name="maturity_icon_general">
|
||||
"Parcel_PG_Dark"
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
tab_height="25"
|
||||
tab_min_width="67"
|
||||
top="10"
|
||||
width="489">
|
||||
width="589">
|
||||
<panel
|
||||
border="false"
|
||||
follows="all"
|
||||
|
|
@ -569,8 +569,7 @@
|
|||
left="0"
|
||||
top="0"
|
||||
help_topic="land_covenant_tab"
|
||||
name="land_covenant_panel"
|
||||
word_wrap="true">
|
||||
name="land_covenant_panel">
|
||||
<panel.string
|
||||
name="can_resell"
|
||||
word_wrap="true">
|
||||
|
|
@ -2096,5 +2095,17 @@ Only large parcels can be listed in search.
|
|||
width="100" />
|
||||
</panel>
|
||||
</panel>
|
||||
<panel
|
||||
border="true"
|
||||
follows="all"
|
||||
label="EXPERIENCES"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="0"
|
||||
help_topic="land_experiences_tab"
|
||||
name="land_experiences_panel"
|
||||
class="land_experiences_panel"
|
||||
filename="panel_region_experiences.xml">
|
||||
</panel>
|
||||
</tab_container>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -13,26 +13,46 @@
|
|||
name="loading">
|
||||
loading...
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="panel_allowed">
|
||||
Allowed Experiences:
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="panel_blocked">
|
||||
Blocked Experiences:
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="panel_trusted">
|
||||
Trusted Experiences:
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="no_results">
|
||||
(empty)
|
||||
</panel.string>
|
||||
<text
|
||||
layout="topleft"
|
||||
name="text_name"
|
||||
left="3"
|
||||
right="-1"
|
||||
height="12"
|
||||
follows="left|top|right">
|
||||
Experience List
|
||||
</text>
|
||||
<text
|
||||
layout="topleft"
|
||||
name="text_name"
|
||||
left="3"
|
||||
right="120"
|
||||
height="12"
|
||||
follows="left|top">
|
||||
Experience List
|
||||
</text>
|
||||
<text
|
||||
layout="topleft"
|
||||
name="text_count"
|
||||
left="125"
|
||||
top_pad="-12"
|
||||
right="-1"
|
||||
height="12"
|
||||
follows="top|left">
|
||||
</text>
|
||||
<scroll_list
|
||||
draw_heading="false"
|
||||
left="3"
|
||||
width="225"
|
||||
height="77"
|
||||
follows="all"
|
||||
can_resize="false"
|
||||
name="experience_list">
|
||||
<columns
|
||||
width="225"
|
||||
|
|
|
|||
|
|
@ -10,44 +10,67 @@
|
|||
left="0"
|
||||
top="320"
|
||||
width="480">
|
||||
<panel.string
|
||||
name="panel_allowed">
|
||||
Allowed Experiences
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="panel_blocked">
|
||||
Blocked Experiences
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="panel_trusted">
|
||||
Trusted Experiences
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="trusted_estate_text">
|
||||
Any Experience may be Trusted.
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="32"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="experiences_help_text"
|
||||
top="14"
|
||||
word_wrap="true">
|
||||
Changes to settings on this tab will affect all regions in the estate.
|
||||
</text>
|
||||
Trusted Experiences have permission to run on this estate.
|
||||
|
||||
Additionally, if the estate does not allow public access, Residents participating in any Trusted Experience may enter the estate and can remain as long as they are in the Experience.
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="allowed_estate_text">
|
||||
Only Experiences that are not Grid-Wide may be Allowed.
|
||||
|
||||
Allowed Experiences have permission to run on this estate.
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="blocked_estate_text">
|
||||
Only Grid-Wide Experiences may be Blocked.
|
||||
|
||||
Blocked Experiences may not run on this estate.
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="estate_caption">
|
||||
Changes to settings on this tab will affect all regions in the estate.
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="allowed_parcel_text">Only Experiences that are not Grid-Wide may be Allowed.
|
||||
|
||||
Allowed Experiences have permission to run on this parcel if they are not Blocked by the estate.
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="blocked_parcel_text">Only Grid-Wide Experiences may be Blocked.
|
||||
|
||||
Blocked Experiences may not run on this parcel.
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="parcel_caption">
|
||||
</panel.string>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="32"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="experiences_help_text"
|
||||
top="14"
|
||||
word_wrap="true"/>
|
||||
<layout_stack
|
||||
left="5"
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
top="40"
|
||||
right="-5"
|
||||
height="280"
|
||||
min_height="140"
|
||||
height="260"
|
||||
orientation="vertical">
|
||||
<layout_panel
|
||||
height="100"
|
||||
min_height="100"
|
||||
width="530">
|
||||
follows="all"
|
||||
height="50"
|
||||
min_height="50"
|
||||
width="530"
|
||||
visible="false"
|
||||
name="trusted_layout_panel">
|
||||
<panel follows="all"
|
||||
width="330"
|
||||
name="panel_trusted"
|
||||
|
|
@ -63,16 +86,12 @@
|
|||
height="200"
|
||||
follows="top|right"
|
||||
word_wrap="true">
|
||||
Trusted Experiences have permission to run on this estate.
|
||||
|
||||
Additionally, if the estate does not allow public access, Residents participating in any Trusted Experience may enter the estate and can remain as long as they are in the Experience.
|
||||
|
||||
Any Experience may be Trusted.
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
height="100"
|
||||
min_height="100"
|
||||
height="50"
|
||||
min_height="50"
|
||||
follows="all"
|
||||
width="530">
|
||||
<panel
|
||||
width="330"
|
||||
|
|
@ -89,14 +108,12 @@ Any Experience may be Trusted.
|
|||
height="200"
|
||||
follows="top|right"
|
||||
word_wrap="true">
|
||||
Allowed Experiences have permission to run on this estate.
|
||||
|
||||
Only Experiences that are not Grid-Wide may be Allowed.
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
height="100"
|
||||
min_height="100"
|
||||
height="50"
|
||||
min_height="50"
|
||||
follows="all"
|
||||
width="530">
|
||||
<panel
|
||||
width="330"
|
||||
|
|
@ -113,9 +130,6 @@ Only Experiences that are not Grid-Wide may be Allowed.
|
|||
height="200"
|
||||
follows="top|right"
|
||||
word_wrap="true">
|
||||
Blocked Experiences may not run on this estate.
|
||||
|
||||
Only Grid-Wide Experiences may be Blocked.
|
||||
</text>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
|
|
|||
|
|
@ -194,9 +194,9 @@
|
|||
longdescription="Members in a role with this ability can edit the meta-data for an experience."
|
||||
name="experience admin"
|
||||
value ="49" />
|
||||
<action description="Experience Creator"
|
||||
longdescription="Members in a role with this ability can create scripts for an experience."
|
||||
name="experience creator"
|
||||
<action description="Experience Contributor"
|
||||
longdescription="Members in a role with this ability can contribute scripts for an experience."
|
||||
name="experience contributor"
|
||||
value ="50" />
|
||||
</action_set>
|
||||
</role_actions>
|
||||
|
|
|
|||
|
|
@ -3997,9 +3997,7 @@ Try enclosing path to the editor with double quotes.
|
|||
<string name="Admin_Experiences_Tab">ADMIN</string>
|
||||
<string name="Recent_Experiences_Tab">RECENT</string>
|
||||
<string name="Owned_Experiences_Tab">OWNED</string>
|
||||
<string name="RegionInfoAllowedExperiences">Allowed Experiences: ([EXPERIENCES], max [MAXEXPERIENCES])</string>
|
||||
<string name="RegionInfoBlockedExperiences">Blocked Experiences: ([EXPERIENCES], max [MAXEXPERIENCES])</string>
|
||||
<string name="RegionInfoTrustedExperiences">Trusted Experiences: ([EXPERIENCES], max [MAXEXPERIENCES])</string>
|
||||
<string name="ExperiencesCounter">([EXPERIENCES], max [MAXEXPERIENCES])</string>
|
||||
<string name="ExperiencePermission1">take over your controls</string>
|
||||
<string name="ExperiencePermission3">trigger animations on your avatar</string>
|
||||
<string name="ExperiencePermission4">attach to your avatar</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue