summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterland.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloaterland.cpp')
-rw-r--r--indra/newview/llfloaterland.cpp5044
1 files changed, 2522 insertions, 2522 deletions
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 9c4c9b3e59..a6afa03e6a 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -1,25 +1,25 @@
-/**
+/**
* @file llfloaterland.cpp
* @brief "About Land" floater, allowing display and editing of land parcel properties.
*
* $LicenseInfo:firstyear=2002&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
- *
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
+ *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
@@ -55,7 +55,7 @@
#include "llpanellandaudio.h"
#include "llpanellandmedia.h"
#include "llradiogroup.h"
-#include "llresmgr.h" // getMonetaryString
+#include "llresmgr.h" // getMonetaryString
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
#include "llscrolllistcell.h"
@@ -67,7 +67,7 @@
#include "lltexturectrl.h"
#include "lluiconstants.h"
#include "lluictrlfactory.h"
-#include "llviewertexturelist.h" // LLUIImageList
+#include "llviewertexturelist.h" // LLUIImageList
#include "llviewermessage.h"
#include "llviewerparcelmgr.h"
#include "llviewerregion.h"
@@ -87,10 +87,10 @@
const F64 COVENANT_REFRESH_TIME_SEC = 60.0f;
-static std::string OWNER_ONLINE = "0";
-static std::string OWNER_OFFLINE = "1";
-static std::string OWNER_GROUP = "2";
-static std::string MATURITY = "[MATURITY]";
+static std::string OWNER_ONLINE = "0";
+static std::string OWNER_OFFLINE = "1";
+static std::string OWNER_GROUP = "2";
+static std::string MATURITY = "[MATURITY]";
// constants used in callbacks below - syntactic sugar.
static const BOOL BUY_GROUP_LAND = TRUE;
@@ -105,40 +105,40 @@ S32 LLFloaterLand::sLastTab = 0;
class LLParcelSelectionObserver : public LLParcelObserver
{
public:
- virtual void changed() { LLFloaterLand::refreshAll(); }
+ virtual void changed() { LLFloaterLand::refreshAll(); }
};
// class needed to get full access to textbox inside checkbox, because LLCheckBoxCtrl::setLabel() has string as its argument.
// It was introduced while implementing EXT-4706
-class LLCheckBoxWithTBAcess : public LLCheckBoxCtrl
+class LLCheckBoxWithTBAcess : public LLCheckBoxCtrl
{
public:
- LLTextBox* getTextBox()
- {
- return mLabel;
- }
+ LLTextBox* getTextBox()
+ {
+ return mLabel;
+ }
};
class LLPanelLandExperiences
- : public LLPanel
+ : public LLPanel
{
-public:
- LLPanelLandExperiences(LLSafeHandle<LLParcelSelection>& parcelp);
- virtual BOOL postBuild();
- void refresh();
+public:
+ LLPanelLandExperiences(LLSafeHandle<LLParcelSelection>& parcelp);
+ virtual BOOL postBuild();
+ void refresh();
- void experienceAdded(const LLUUID& id, U32 xp_type, U32 access_type);
- void experienceRemoved(const LLUUID& id, U32 access_type);
+ 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);
+ LLPanelExperienceListEditor* setupList( const char* control_name, U32 xp_type, U32 access_type );
+ void refreshPanel(LLPanelExperienceListEditor* panel, U32 xp_type);
- LLSafeHandle<LLParcelSelection>& mParcel;
+ LLSafeHandle<LLParcelSelection>& mParcel;
- LLPanelExperienceListEditor* mAllowed;
- LLPanelExperienceListEditor* mBlocked;
+ LLPanelExperienceListEditor* mAllowed;
+ LLPanelExperienceListEditor* mBlocked;
};
@@ -147,13 +147,13 @@ class LLPanelLandEnvironment
{
public:
LLPanelLandEnvironment(LLSafeHandle<LLParcelSelection>& parcelp);
-
+
virtual bool isRegion() const override { return false; }
- virtual bool isLargeEnough() override
- {
+ virtual bool isLargeEnough() override
+ {
LLParcel *parcelp = mParcel->getParcel();
return ((parcelp) ? (parcelp->getArea() >= MINIMUM_PARCEL_SIZE) : false);
- }
+ }
virtual BOOL postBuild() override;
virtual void refresh() override;
@@ -161,7 +161,7 @@ public:
virtual LLParcel * getParcel() override;
virtual bool canEdit() override;
- virtual S32 getParcelId() override;
+ virtual S32 getParcelId() override;
protected:
virtual void refreshFromSource() override;
@@ -173,7 +173,7 @@ protected:
};
-// inserts maturity info(icon and text) into target textbox
+// 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);
@@ -183,177 +183,177 @@ void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_fl
//---------------------------------------------------------------------------
void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
- uuid_list_t* return_ids = NULL)
-{
- LLMessageSystem *msg = gMessageSystem;
-
- LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if (!region) return;
-
- // Since new highlight will be coming in, drop any highlights
- // that exist right now.
- LLSelectMgr::getInstance()->unhighlightAll();
-
- msg->newMessageFast(_PREHASH_ParcelSelectObjects);
- 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, return_type);
-
- // Throw all return ids into the packet.
- // TODO: Check for too many ids.
- if (return_ids)
- {
- uuid_list_t::iterator end = return_ids->end();
- for (uuid_list_t::iterator it = return_ids->begin();
- it != end;
- ++it)
- {
- msg->nextBlockFast(_PREHASH_ReturnIDs);
- msg->addUUIDFast(_PREHASH_ReturnID, (*it));
- }
- }
- else
- {
- // Put in a null key so that the message is complete.
- msg->nextBlockFast(_PREHASH_ReturnIDs);
- msg->addUUIDFast(_PREHASH_ReturnID, LLUUID::null);
- }
-
- msg->sendReliable(region->getHost());
+ uuid_list_t* return_ids = NULL)
+{
+ LLMessageSystem *msg = gMessageSystem;
+
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (!region) return;
+
+ // Since new highlight will be coming in, drop any highlights
+ // that exist right now.
+ LLSelectMgr::getInstance()->unhighlightAll();
+
+ msg->newMessageFast(_PREHASH_ParcelSelectObjects);
+ 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, return_type);
+
+ // Throw all return ids into the packet.
+ // TODO: Check for too many ids.
+ if (return_ids)
+ {
+ uuid_list_t::iterator end = return_ids->end();
+ for (uuid_list_t::iterator it = return_ids->begin();
+ it != end;
+ ++it)
+ {
+ msg->nextBlockFast(_PREHASH_ReturnIDs);
+ msg->addUUIDFast(_PREHASH_ReturnID, (*it));
+ }
+ }
+ else
+ {
+ // Put in a null key so that the message is complete.
+ msg->nextBlockFast(_PREHASH_ReturnIDs);
+ msg->addUUIDFast(_PREHASH_ReturnID, LLUUID::null);
+ }
+
+ msg->sendReliable(region->getHost());
}
LLParcel* LLFloaterLand::getCurrentSelectedParcel()
{
- return mParcel->getParcel();
+ 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;
- }
+ 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;
- }
+ 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::findTypedInstance<LLFloaterLand>("about_land");
- if(land_instance)
- {
- land_instance->refresh();
- }
+ LLFloaterLand* land_instance = LLFloaterReg::findTypedInstance<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);
+ // 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();
- 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();
+ // 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();
+ if (!visible.asBoolean())
+ {
+ // Might have been showing owned objects
+ LLSelectMgr::getInstance()->unhighlightAll();
- // Save which panel we had open
- sLastTab = mTabLand->getCurrentPanelIndex();
- }
+ // 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);
+: 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);
mFactoryMap["land_environment_panel"] = LLCallbackMap(createPanelLandEnvironment, this);
- sObserver = new LLParcelSelectionObserver();
- LLViewerParcelMgr::getInstance()->addObserver( sObserver );
+ sObserver = new LLParcelSelectionObserver();
+ LLViewerParcelMgr::getInstance()->addObserver( sObserver );
}
BOOL LLFloaterLand::postBuild()
-{
- setVisibleCallback(boost::bind(&LLFloaterLand::onVisibilityChanged, this, _2));
-
- LLTabContainer* tab = getChild<LLTabContainer>("landtab");
+{
+ setVisibleCallback(boost::bind(&LLFloaterLand::onVisibilityChanged, this, _2));
- mTabLand = (LLTabContainer*) tab;
+ LLTabContainer* tab = getChild<LLTabContainer>("landtab");
- if (tab)
- {
- tab->selectTab(sLastTab);
- }
+ mTabLand = (LLTabContainer*) tab;
+
+ if (tab)
+ {
+ tab->selectTab(sLastTab);
+ }
- return TRUE;
+ return TRUE;
}
// virtual
LLFloaterLand::~LLFloaterLand()
{
- LLViewerParcelMgr::getInstance()->removeObserver( sObserver );
- delete sObserver;
- sObserver = NULL;
+ 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();
+ mPanelGeneral->refresh();
+ mPanelObjects->refresh();
+ mPanelOptions->refresh();
+ mPanelAudio->refresh();
+ mPanelMedia->refresh();
+ mPanelAccess->refresh();
+ mPanelCovenant->refresh();
+ mPanelExperiences->refresh();
mPanelEnvironment->refresh();
}
@@ -361,69 +361,69 @@ void LLFloaterLand::refresh()
void* LLFloaterLand::createPanelLandGeneral(void* data)
{
- LLFloaterLand* self = (LLFloaterLand*)data;
- self->mPanelGeneral = new LLPanelLandGeneral(self->mParcel);
- return self->mPanelGeneral;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ LLFloaterLand* self = (LLFloaterLand*)data;
+ self->mPanelExperiences = new LLPanelLandExperiences(self->mParcel);
+ return self->mPanelExperiences;
}
-//static
+//static
void* LLFloaterLand::createPanelLandEnvironment(void* data)
{
LLFloaterLand* self = (LLFloaterLand*)data;
@@ -438,135 +438,135 @@ void* LLFloaterLand::createPanelLandEnvironment(void* data)
LLPanelLandGeneral::LLPanelLandGeneral(LLParcelSelectionHandle& parcel)
-: LLPanel(),
- mUncheckedSell(FALSE),
- mParcel(parcel)
+: LLPanel(),
+ mUncheckedSell(FALSE),
+ mParcel(parcel)
{
}
BOOL LLPanelLandGeneral::postBuild()
{
- mEditName = getChild<LLLineEditor>("Name");
- mEditName->setCommitCallback(onCommitAny, this);
- getChild<LLLineEditor>("Name")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
+ mEditName = getChild<LLLineEditor>("Name");
+ mEditName->setCommitCallback(onCommitAny, this);
+ getChild<LLLineEditor>("Name")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
- mEditDesc = getChild<LLTextEditor>("Description");
- mEditDesc->setCommitOnFocusLost(TRUE);
- mEditDesc->setCommitCallback(onCommitAny, this);
+ mEditDesc = getChild<LLTextEditor>("Description");
+ mEditDesc->setCommitOnFocusLost(TRUE);
+ mEditDesc->setCommitCallback(onCommitAny, this);
mEditDesc->setContentTrusted(false);
- // No prevalidate function - historically the prevalidate function was broken,
- // allowing residents to put in characters like U+2661 WHITE HEART SUIT, so
- // preserve that ability.
-
- mTextSalePending = getChild<LLTextBox>("SalePending");
- mTextOwnerLabel = getChild<LLTextBox>("Owner:");
- mTextOwner = getChild<LLTextBox>("OwnerText");
- mTextOwner->setIsFriendCallback(LLAvatarActions::isFriend);
-
- mContentRating = getChild<LLTextBox>("ContentRatingText");
- mLandType = getChild<LLTextBox>("LandTypeText");
-
- mBtnProfile = getChild<LLButton>("Profile...");
- mBtnProfile->setClickedCallback(boost::bind(&LLPanelLandGeneral::onClickProfile, this));
-
-
- mTextGroupLabel = getChild<LLTextBox>("Group:");
- mTextGroup = getChild<LLTextBox>("GroupText");
-
-
- mBtnSetGroup = getChild<LLButton>("Set...");
- mBtnSetGroup->setCommitCallback(boost::bind(&LLPanelLandGeneral::onClickSetGroup, this));
-
-
- mCheckDeedToGroup = getChild<LLCheckBoxCtrl>( "check deed");
- childSetCommitCallback("check deed", onCommitAny, this);
-
-
- mBtnDeedToGroup = getChild<LLButton>("Deed...");
- mBtnDeedToGroup->setClickedCallback(onClickDeed, this);
-
-
- mCheckContributeWithDeed = getChild<LLCheckBoxCtrl>( "check contrib");
- childSetCommitCallback("check contrib", onCommitAny, this);
-
-
-
- mSaleInfoNotForSale = getChild<LLTextBox>("Not for sale.");
-
- mSaleInfoForSale1 = getChild<LLTextBox>("For Sale: Price L$[PRICE].");
-
-
- mBtnSellLand = getChild<LLButton>("Sell Land...");
- mBtnSellLand->setClickedCallback(onClickSellLand, this);
-
- mSaleInfoForSale2 = getChild<LLTextBox>("For sale to");
-
- mSaleInfoForSaleObjects = getChild<LLTextBox>("Sell with landowners objects in parcel.");
-
- mSaleInfoForSaleNoObjects = getChild<LLTextBox>("Selling with no objects in parcel.");
-
-
- mBtnStopSellLand = getChild<LLButton>("Cancel Land Sale");
- mBtnStopSellLand->setClickedCallback(onClickStopSellLand, this);
-
-
- mTextClaimDateLabel = getChild<LLTextBox>("Claimed:");
- mTextClaimDate = getChild<LLTextBox>("DateClaimText");
-
-
- mTextPriceLabel = getChild<LLTextBox>("PriceLabel");
- mTextPrice = getChild<LLTextBox>("PriceText");
-
-
- mTextDwell = getChild<LLTextBox>("DwellText");
-
- mBtnBuyLand = getChild<LLButton>("Buy Land...");
- mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
-
-
- mBtnBuyGroupLand = getChild<LLButton>("Buy For Group...");
- mBtnBuyGroupLand->setClickedCallback(onClickBuyLand, (void*)&BUY_GROUP_LAND);
-
-
- mBtnBuyPass = getChild<LLButton>("Buy Pass...");
- mBtnBuyPass->setClickedCallback(onClickBuyPass, this);
-
- mBtnReleaseLand = getChild<LLButton>("Abandon Land...");
- mBtnReleaseLand->setClickedCallback(onClickRelease, NULL);
-
- mBtnReclaimLand = getChild<LLButton>("Reclaim Land...");
- mBtnReclaimLand->setClickedCallback(onClickReclaim, NULL);
-
- mBtnStartAuction = getChild<LLButton>("Linden Sale...");
- mBtnStartAuction->setClickedCallback(onClickStartAuction, this);
-
- mBtnScriptLimits = getChild<LLButton>("Scripts...");
-
- if(gDisconnected)
- {
- return TRUE;
- }
-
- // note: on region change this will not be re checked, should not matter on Agni as
- // 99% of the time all regions will return the same caps. In case of an erroneous setting
- // to enabled the floater will just throw an error when trying to get it's cap
- std::string url = gAgent.getRegionCapability("LandResources");
- if (!url.empty())
- {
- if(mBtnScriptLimits)
- {
- mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
- }
- }
- else
- {
- if(mBtnScriptLimits)
- {
- mBtnScriptLimits->setVisible(false);
- }
- }
-
- return TRUE;
+ // No prevalidate function - historically the prevalidate function was broken,
+ // allowing residents to put in characters like U+2661 WHITE HEART SUIT, so
+ // preserve that ability.
+
+ mTextSalePending = getChild<LLTextBox>("SalePending");
+ mTextOwnerLabel = getChild<LLTextBox>("Owner:");
+ mTextOwner = getChild<LLTextBox>("OwnerText");
+ mTextOwner->setIsFriendCallback(LLAvatarActions::isFriend);
+
+ mContentRating = getChild<LLTextBox>("ContentRatingText");
+ mLandType = getChild<LLTextBox>("LandTypeText");
+
+ mBtnProfile = getChild<LLButton>("Profile...");
+ mBtnProfile->setClickedCallback(boost::bind(&LLPanelLandGeneral::onClickProfile, this));
+
+
+ mTextGroupLabel = getChild<LLTextBox>("Group:");
+ mTextGroup = getChild<LLTextBox>("GroupText");
+
+
+ mBtnSetGroup = getChild<LLButton>("Set...");
+ mBtnSetGroup->setCommitCallback(boost::bind(&LLPanelLandGeneral::onClickSetGroup, this));
+
+
+ mCheckDeedToGroup = getChild<LLCheckBoxCtrl>( "check deed");
+ childSetCommitCallback("check deed", onCommitAny, this);
+
+
+ mBtnDeedToGroup = getChild<LLButton>("Deed...");
+ mBtnDeedToGroup->setClickedCallback(onClickDeed, this);
+
+
+ mCheckContributeWithDeed = getChild<LLCheckBoxCtrl>( "check contrib");
+ childSetCommitCallback("check contrib", onCommitAny, this);
+
+
+
+ mSaleInfoNotForSale = getChild<LLTextBox>("Not for sale.");
+
+ mSaleInfoForSale1 = getChild<LLTextBox>("For Sale: Price L$[PRICE].");
+
+
+ mBtnSellLand = getChild<LLButton>("Sell Land...");
+ mBtnSellLand->setClickedCallback(onClickSellLand, this);
+
+ mSaleInfoForSale2 = getChild<LLTextBox>("For sale to");
+
+ mSaleInfoForSaleObjects = getChild<LLTextBox>("Sell with landowners objects in parcel.");
+
+ mSaleInfoForSaleNoObjects = getChild<LLTextBox>("Selling with no objects in parcel.");
+
+
+ mBtnStopSellLand = getChild<LLButton>("Cancel Land Sale");
+ mBtnStopSellLand->setClickedCallback(onClickStopSellLand, this);
+
+
+ mTextClaimDateLabel = getChild<LLTextBox>("Claimed:");
+ mTextClaimDate = getChild<LLTextBox>("DateClaimText");
+
+
+ mTextPriceLabel = getChild<LLTextBox>("PriceLabel");
+ mTextPrice = getChild<LLTextBox>("PriceText");
+
+
+ mTextDwell = getChild<LLTextBox>("DwellText");
+
+ mBtnBuyLand = getChild<LLButton>("Buy Land...");
+ mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
+
+
+ mBtnBuyGroupLand = getChild<LLButton>("Buy For Group...");
+ mBtnBuyGroupLand->setClickedCallback(onClickBuyLand, (void*)&BUY_GROUP_LAND);
+
+
+ mBtnBuyPass = getChild<LLButton>("Buy Pass...");
+ mBtnBuyPass->setClickedCallback(onClickBuyPass, this);
+
+ mBtnReleaseLand = getChild<LLButton>("Abandon Land...");
+ mBtnReleaseLand->setClickedCallback(onClickRelease, NULL);
+
+ mBtnReclaimLand = getChild<LLButton>("Reclaim Land...");
+ mBtnReclaimLand->setClickedCallback(onClickReclaim, NULL);
+
+ mBtnStartAuction = getChild<LLButton>("Linden Sale...");
+ mBtnStartAuction->setClickedCallback(onClickStartAuction, this);
+
+ mBtnScriptLimits = getChild<LLButton>("Scripts...");
+
+ if(gDisconnected)
+ {
+ return TRUE;
+ }
+
+ // note: on region change this will not be re checked, should not matter on Agni as
+ // 99% of the time all regions will return the same caps. In case of an erroneous setting
+ // to enabled the floater will just throw an error when trying to get it's cap
+ std::string url = gAgent.getRegionCapability("LandResources");
+ if (!url.empty())
+ {
+ if(mBtnScriptLimits)
+ {
+ mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+ }
+ }
+ else
+ {
+ if(mBtnScriptLimits)
+ {
+ mBtnScriptLimits->setVisible(false);
+ }
+ }
+
+ return TRUE;
}
@@ -578,614 +578,614 @@ LLPanelLandGeneral::~LLPanelLandGeneral()
// public
void LLPanelLandGeneral::refresh()
{
- mEditName->setEnabled(FALSE);
- mEditName->setText(LLStringUtil::null);
-
- mEditDesc->setEnabled(FALSE);
- mEditDesc->setText(getString("no_selection_text"));
-
- mTextSalePending->setText(LLStringUtil::null);
- mTextSalePending->setEnabled(FALSE);
-
- mBtnDeedToGroup->setEnabled(FALSE);
- mBtnSetGroup->setEnabled(FALSE);
- mBtnStartAuction->setEnabled(FALSE);
-
- mCheckDeedToGroup ->set(FALSE);
- mCheckDeedToGroup ->setEnabled(FALSE);
- mCheckContributeWithDeed->set(FALSE);
- mCheckContributeWithDeed->setEnabled(FALSE);
-
- mTextOwner->setText(LLStringUtil::null);
- mContentRating->setText(LLStringUtil::null);
- mLandType->setText(LLStringUtil::null);
- mBtnProfile->setLabel(getString("profile_text"));
- mBtnProfile->setEnabled(FALSE);
-
- mTextClaimDate->setText(LLStringUtil::null);
- mTextGroup->setText(LLStringUtil::null);
- mTextPrice->setText(LLStringUtil::null);
-
- mSaleInfoForSale1->setVisible(FALSE);
- mSaleInfoForSale2->setVisible(FALSE);
- mSaleInfoForSaleObjects->setVisible(FALSE);
- mSaleInfoForSaleNoObjects->setVisible(FALSE);
- mSaleInfoNotForSale->setVisible(FALSE);
- mBtnSellLand->setVisible(FALSE);
- mBtnStopSellLand->setVisible(FALSE);
-
- mTextPriceLabel->setText(LLStringUtil::null);
- mTextDwell->setText(LLStringUtil::null);
-
- mBtnBuyLand->setEnabled(FALSE);
- mBtnScriptLimits->setEnabled(FALSE);
- mBtnBuyGroupLand->setEnabled(FALSE);
- mBtnReleaseLand->setEnabled(FALSE);
- mBtnReclaimLand->setEnabled(FALSE);
- mBtnBuyPass->setEnabled(FALSE);
-
- if(gDisconnected)
- {
- return;
- }
-
- mBtnStartAuction->setVisible(gAgent.isGodlike());
- bool region_owner = false;
- LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if(regionp && (regionp->getOwner() == gAgent.getID()))
- {
- region_owner = true;
- mBtnReleaseLand->setVisible(FALSE);
- mBtnReclaimLand->setVisible(TRUE);
- }
- else
- {
- mBtnReleaseLand->setVisible(TRUE);
- mBtnReclaimLand->setVisible(FALSE);
- }
- LLParcel *parcel = mParcel->getParcel();
- if (parcel)
- {
- // something selected, hooray!
- BOOL is_leased = (LLParcel::OS_LEASED == parcel->getOwnershipStatus());
- BOOL region_xfer = FALSE;
- if(regionp
- && !(regionp->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL)))
- {
- region_xfer = TRUE;
- }
-
- if (regionp)
- {
- insert_maturity_into_textbox(mContentRating, gFloaterView->getParentFloater(this), MATURITY);
- mLandType->setText(regionp->getLocalizedSimProductName());
- }
-
- // estate owner/manager cannot edit other parts of the parcel
- BOOL estate_manager_sellable = !parcel->getAuctionID()
- && gAgent.canManageEstate()
- // estate manager/owner can only sell parcels owned by estate owner
- && regionp
- && (parcel->getOwnerID() == regionp->getOwner());
- BOOL owner_sellable = region_xfer && !parcel->getAuctionID()
- && LLViewerParcelMgr::isParcelModifiableByAgent(
- parcel, GP_LAND_SET_SALE_INFO);
- BOOL can_be_sold = owner_sellable || estate_manager_sellable;
-
- const LLUUID &owner_id = parcel->getOwnerID();
- BOOL is_public = parcel->isPublic();
-
- // Is it owned?
- if (is_public)
- {
- mTextSalePending->setText(LLStringUtil::null);
- mTextSalePending->setEnabled(FALSE);
- mTextOwner->setText(getString("public_text"));
- mTextOwner->setEnabled(FALSE);
- mBtnProfile->setEnabled(FALSE);
- mTextClaimDate->setText(LLStringUtil::null);
- mTextClaimDate->setEnabled(FALSE);
- mTextGroup->setText(getString("none_text"));
- mTextGroup->setEnabled(FALSE);
- mBtnStartAuction->setEnabled(FALSE);
- }
- else
- {
- if(!is_leased && (owner_id == gAgent.getID()))
- {
- mTextSalePending->setText(getString("need_tier_to_modify"));
- mTextSalePending->setEnabled(TRUE);
- }
- else if(parcel->getAuctionID())
- {
- mTextSalePending->setText(getString("auction_id_text"));
- mTextSalePending->setTextArg("[ID]", llformat("%u", parcel->getAuctionID()));
- mTextSalePending->setEnabled(TRUE);
- }
- else
- {
- // not the owner, or it is leased
- mTextSalePending->setText(LLStringUtil::null);
- mTextSalePending->setEnabled(FALSE);
- }
- //refreshNames();
- mTextOwner->setEnabled(TRUE);
-
- // We support both group and personal profiles
- mBtnProfile->setEnabled(TRUE);
-
- if (parcel->getGroupID().isNull())
- {
- // Not group owned, so "Profile"
- mBtnProfile->setLabel(getString("profile_text"));
-
- mTextGroup->setText(getString("none_text"));
- mTextGroup->setEnabled(FALSE);
- }
- else
- {
- // Group owned, so "Info"
- mBtnProfile->setLabel(getString("info_text"));
-
- //mTextGroup->setText("HIPPOS!");//parcel->getGroupName());
- mTextGroup->setEnabled(TRUE);
- }
-
- // Display claim date
- time_t claim_date = parcel->getClaimDate();
- std::string claim_date_str = getString("time_stamp_template");
- LLSD substitution;
- substitution["datetime"] = (S32) claim_date;
- LLStringUtil::format (claim_date_str, substitution);
- mTextClaimDate->setText(claim_date_str);
- mTextClaimDate->setEnabled(is_leased);
-
- BOOL enable_auction = (gAgent.getGodLevel() >= GOD_LIAISON)
- && (owner_id == GOVERNOR_LINDEN_ID)
- && (parcel->getAuctionID() == 0);
- mBtnStartAuction->setEnabled(enable_auction);
- }
-
- // Display options
- BOOL can_edit_identity = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_IDENTITY);
- mEditName->setEnabled(can_edit_identity);
- mEditDesc->setEnabled(can_edit_identity);
+ mEditName->setEnabled(FALSE);
+ mEditName->setText(LLStringUtil::null);
+
+ mEditDesc->setEnabled(FALSE);
+ mEditDesc->setText(getString("no_selection_text"));
+
+ mTextSalePending->setText(LLStringUtil::null);
+ mTextSalePending->setEnabled(FALSE);
+
+ mBtnDeedToGroup->setEnabled(FALSE);
+ mBtnSetGroup->setEnabled(FALSE);
+ mBtnStartAuction->setEnabled(FALSE);
+
+ mCheckDeedToGroup ->set(FALSE);
+ mCheckDeedToGroup ->setEnabled(FALSE);
+ mCheckContributeWithDeed->set(FALSE);
+ mCheckContributeWithDeed->setEnabled(FALSE);
+
+ mTextOwner->setText(LLStringUtil::null);
+ mContentRating->setText(LLStringUtil::null);
+ mLandType->setText(LLStringUtil::null);
+ mBtnProfile->setLabel(getString("profile_text"));
+ mBtnProfile->setEnabled(FALSE);
+
+ mTextClaimDate->setText(LLStringUtil::null);
+ mTextGroup->setText(LLStringUtil::null);
+ mTextPrice->setText(LLStringUtil::null);
+
+ mSaleInfoForSale1->setVisible(FALSE);
+ mSaleInfoForSale2->setVisible(FALSE);
+ mSaleInfoForSaleObjects->setVisible(FALSE);
+ mSaleInfoForSaleNoObjects->setVisible(FALSE);
+ mSaleInfoNotForSale->setVisible(FALSE);
+ mBtnSellLand->setVisible(FALSE);
+ mBtnStopSellLand->setVisible(FALSE);
+
+ mTextPriceLabel->setText(LLStringUtil::null);
+ mTextDwell->setText(LLStringUtil::null);
+
+ mBtnBuyLand->setEnabled(FALSE);
+ mBtnScriptLimits->setEnabled(FALSE);
+ mBtnBuyGroupLand->setEnabled(FALSE);
+ mBtnReleaseLand->setEnabled(FALSE);
+ mBtnReclaimLand->setEnabled(FALSE);
+ mBtnBuyPass->setEnabled(FALSE);
+
+ if(gDisconnected)
+ {
+ return;
+ }
+
+ mBtnStartAuction->setVisible(gAgent.isGodlike());
+ bool region_owner = false;
+ LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if(regionp && (regionp->getOwner() == gAgent.getID()))
+ {
+ region_owner = true;
+ mBtnReleaseLand->setVisible(FALSE);
+ mBtnReclaimLand->setVisible(TRUE);
+ }
+ else
+ {
+ mBtnReleaseLand->setVisible(TRUE);
+ mBtnReclaimLand->setVisible(FALSE);
+ }
+ LLParcel *parcel = mParcel->getParcel();
+ if (parcel)
+ {
+ // something selected, hooray!
+ BOOL is_leased = (LLParcel::OS_LEASED == parcel->getOwnershipStatus());
+ BOOL region_xfer = FALSE;
+ if(regionp
+ && !(regionp->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL)))
+ {
+ region_xfer = TRUE;
+ }
+
+ if (regionp)
+ {
+ insert_maturity_into_textbox(mContentRating, gFloaterView->getParentFloater(this), MATURITY);
+ mLandType->setText(regionp->getLocalizedSimProductName());
+ }
+
+ // estate owner/manager cannot edit other parts of the parcel
+ BOOL estate_manager_sellable = !parcel->getAuctionID()
+ && gAgent.canManageEstate()
+ // estate manager/owner can only sell parcels owned by estate owner
+ && regionp
+ && (parcel->getOwnerID() == regionp->getOwner());
+ BOOL owner_sellable = region_xfer && !parcel->getAuctionID()
+ && LLViewerParcelMgr::isParcelModifiableByAgent(
+ parcel, GP_LAND_SET_SALE_INFO);
+ BOOL can_be_sold = owner_sellable || estate_manager_sellable;
+
+ const LLUUID &owner_id = parcel->getOwnerID();
+ BOOL is_public = parcel->isPublic();
+
+ // Is it owned?
+ if (is_public)
+ {
+ mTextSalePending->setText(LLStringUtil::null);
+ mTextSalePending->setEnabled(FALSE);
+ mTextOwner->setText(getString("public_text"));
+ mTextOwner->setEnabled(FALSE);
+ mBtnProfile->setEnabled(FALSE);
+ mTextClaimDate->setText(LLStringUtil::null);
+ mTextClaimDate->setEnabled(FALSE);
+ mTextGroup->setText(getString("none_text"));
+ mTextGroup->setEnabled(FALSE);
+ mBtnStartAuction->setEnabled(FALSE);
+ }
+ else
+ {
+ if(!is_leased && (owner_id == gAgent.getID()))
+ {
+ mTextSalePending->setText(getString("need_tier_to_modify"));
+ mTextSalePending->setEnabled(TRUE);
+ }
+ else if(parcel->getAuctionID())
+ {
+ mTextSalePending->setText(getString("auction_id_text"));
+ mTextSalePending->setTextArg("[ID]", llformat("%u", parcel->getAuctionID()));
+ mTextSalePending->setEnabled(TRUE);
+ }
+ else
+ {
+ // not the owner, or it is leased
+ mTextSalePending->setText(LLStringUtil::null);
+ mTextSalePending->setEnabled(FALSE);
+ }
+ //refreshNames();
+ mTextOwner->setEnabled(TRUE);
+
+ // We support both group and personal profiles
+ mBtnProfile->setEnabled(TRUE);
+
+ if (parcel->getGroupID().isNull())
+ {
+ // Not group owned, so "Profile"
+ mBtnProfile->setLabel(getString("profile_text"));
+
+ mTextGroup->setText(getString("none_text"));
+ mTextGroup->setEnabled(FALSE);
+ }
+ else
+ {
+ // Group owned, so "Info"
+ mBtnProfile->setLabel(getString("info_text"));
+
+ //mTextGroup->setText("HIPPOS!");//parcel->getGroupName());
+ mTextGroup->setEnabled(TRUE);
+ }
+
+ // Display claim date
+ time_t claim_date = parcel->getClaimDate();
+ std::string claim_date_str = getString("time_stamp_template");
+ LLSD substitution;
+ substitution["datetime"] = (S32) claim_date;
+ LLStringUtil::format (claim_date_str, substitution);
+ mTextClaimDate->setText(claim_date_str);
+ mTextClaimDate->setEnabled(is_leased);
+
+ BOOL enable_auction = (gAgent.getGodLevel() >= GOD_LIAISON)
+ && (owner_id == GOVERNOR_LINDEN_ID)
+ && (parcel->getAuctionID() == 0);
+ mBtnStartAuction->setEnabled(enable_auction);
+ }
+
+ // Display options
+ BOOL can_edit_identity = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_IDENTITY);
+ mEditName->setEnabled(can_edit_identity);
+ mEditDesc->setEnabled(can_edit_identity);
mEditDesc->setParseURLs(!can_edit_identity);
- BOOL can_edit_agent_only = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_NO_POWERS);
- mBtnSetGroup->setEnabled(can_edit_agent_only && !parcel->getIsGroupOwned());
-
- const LLUUID& group_id = parcel->getGroupID();
-
- // Can only allow deeding if you own it and it's got a group.
- BOOL enable_deed = (owner_id == gAgent.getID()
- && group_id.notNull()
- && gAgent.isInGroup(group_id));
- // You don't need special powers to allow your object to
- // be deeded to the group.
- mCheckDeedToGroup->setEnabled(enable_deed);
- mCheckDeedToGroup->set( parcel->getAllowDeedToGroup() );
- mCheckContributeWithDeed->setEnabled(enable_deed && parcel->getAllowDeedToGroup());
- mCheckContributeWithDeed->set(parcel->getContributeWithDeed());
-
- // Actually doing the deeding requires you to have GP_LAND_DEED
- // powers in the group.
- BOOL can_deed = gAgent.hasPowerInGroup(group_id, GP_LAND_DEED);
- mBtnDeedToGroup->setEnabled( parcel->getAllowDeedToGroup()
- && group_id.notNull()
- && can_deed
- && !parcel->getIsGroupOwned()
- );
-
- mEditName->setText( parcel->getName() );
- mEditDesc->setText( parcel->getDesc() );
-
- BOOL for_sale = parcel->getForSale();
-
- mBtnSellLand->setVisible(FALSE);
- mBtnStopSellLand->setVisible(FALSE);
-
- // show pricing information
- S32 area;
- S32 claim_price;
- S32 rent_price;
- F32 dwell = DWELL_NAN;
- LLViewerParcelMgr::getInstance()->getDisplayInfo(&area,
- &claim_price,
- &rent_price,
- &for_sale,
- &dwell);
- // Area
- LLUIString price = getString("area_size_text");
- price.setArg("[AREA]", llformat("%d",area));
- mTextPriceLabel->setText(getString("area_text"));
- mTextPrice->setText(price.getString());
-
- if (dwell == DWELL_NAN)
- {
- mTextDwell->setText(LLTrans::getString("LoadingData"));
- }
- else
- {
- mTextDwell->setText(llformat("%.0f", dwell));
- }
-
- if (for_sale)
- {
- mSaleInfoForSale1->setVisible(TRUE);
- mSaleInfoForSale2->setVisible(TRUE);
- if (parcel->getSellWithObjects())
- {
- mSaleInfoForSaleObjects->setVisible(TRUE);
- mSaleInfoForSaleNoObjects->setVisible(FALSE);
- }
- else
- {
- mSaleInfoForSaleObjects->setVisible(FALSE);
- mSaleInfoForSaleNoObjects->setVisible(TRUE);
- }
- mSaleInfoNotForSale->setVisible(FALSE);
-
- F32 cost_per_sqm = 0.0f;
- if (area > 0)
- {
- cost_per_sqm = (F32)parcel->getSalePrice() / (F32)area;
- }
-
- S32 price = parcel->getSalePrice();
- mSaleInfoForSale1->setTextArg("[PRICE]", LLResMgr::getInstance()->getMonetaryString(price));
- mSaleInfoForSale1->setTextArg("[PRICE_PER_SQM]", llformat("%.1f", cost_per_sqm));
- if (can_be_sold)
- {
- mBtnStopSellLand->setVisible(TRUE);
- }
- }
- else
- {
- mSaleInfoForSale1->setVisible(FALSE);
- mSaleInfoForSale2->setVisible(FALSE);
- mSaleInfoForSaleObjects->setVisible(FALSE);
- mSaleInfoForSaleNoObjects->setVisible(FALSE);
- mSaleInfoNotForSale->setVisible(TRUE);
- if (can_be_sold)
- {
- mBtnSellLand->setVisible(TRUE);
- }
- }
-
- refreshNames();
-
- mBtnBuyLand->setEnabled(
- LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, false));
- mBtnScriptLimits->setEnabled(true);
-// LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, false));
- mBtnBuyGroupLand->setEnabled(
- LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, true));
-
- if(region_owner)
- {
- mBtnReclaimLand->setEnabled(
- !is_public && (parcel->getOwnerID() != gAgent.getID()));
- }
- else
- {
- BOOL is_owner_release = LLViewerParcelMgr::isParcelOwnedByAgent(parcel, GP_LAND_RELEASE);
- BOOL is_manager_release = (gAgent.canManageEstate() &&
- regionp &&
- (parcel->getOwnerID() != regionp->getOwner()));
- BOOL can_release = is_owner_release || is_manager_release;
- mBtnReleaseLand->setEnabled( can_release );
- }
-
- BOOL use_pass = parcel->getOwnerID()!= gAgent.getID() && parcel->getParcelFlag(PF_USE_PASS_LIST) && !LLViewerParcelMgr::getInstance()->isCollisionBanned();;
- mBtnBuyPass->setEnabled(use_pass);
-
- }
+ BOOL can_edit_agent_only = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_NO_POWERS);
+ mBtnSetGroup->setEnabled(can_edit_agent_only && !parcel->getIsGroupOwned());
+
+ const LLUUID& group_id = parcel->getGroupID();
+
+ // Can only allow deeding if you own it and it's got a group.
+ BOOL enable_deed = (owner_id == gAgent.getID()
+ && group_id.notNull()
+ && gAgent.isInGroup(group_id));
+ // You don't need special powers to allow your object to
+ // be deeded to the group.
+ mCheckDeedToGroup->setEnabled(enable_deed);
+ mCheckDeedToGroup->set( parcel->getAllowDeedToGroup() );
+ mCheckContributeWithDeed->setEnabled(enable_deed && parcel->getAllowDeedToGroup());
+ mCheckContributeWithDeed->set(parcel->getContributeWithDeed());
+
+ // Actually doing the deeding requires you to have GP_LAND_DEED
+ // powers in the group.
+ BOOL can_deed = gAgent.hasPowerInGroup(group_id, GP_LAND_DEED);
+ mBtnDeedToGroup->setEnabled( parcel->getAllowDeedToGroup()
+ && group_id.notNull()
+ && can_deed
+ && !parcel->getIsGroupOwned()
+ );
+
+ mEditName->setText( parcel->getName() );
+ mEditDesc->setText( parcel->getDesc() );
+
+ BOOL for_sale = parcel->getForSale();
+
+ mBtnSellLand->setVisible(FALSE);
+ mBtnStopSellLand->setVisible(FALSE);
+
+ // show pricing information
+ S32 area;
+ S32 claim_price;
+ S32 rent_price;
+ F32 dwell = DWELL_NAN;
+ LLViewerParcelMgr::getInstance()->getDisplayInfo(&area,
+ &claim_price,
+ &rent_price,
+ &for_sale,
+ &dwell);
+ // Area
+ LLUIString price = getString("area_size_text");
+ price.setArg("[AREA]", llformat("%d",area));
+ mTextPriceLabel->setText(getString("area_text"));
+ mTextPrice->setText(price.getString());
+
+ if (dwell == DWELL_NAN)
+ {
+ mTextDwell->setText(LLTrans::getString("LoadingData"));
+ }
+ else
+ {
+ mTextDwell->setText(llformat("%.0f", dwell));
+ }
+
+ if (for_sale)
+ {
+ mSaleInfoForSale1->setVisible(TRUE);
+ mSaleInfoForSale2->setVisible(TRUE);
+ if (parcel->getSellWithObjects())
+ {
+ mSaleInfoForSaleObjects->setVisible(TRUE);
+ mSaleInfoForSaleNoObjects->setVisible(FALSE);
+ }
+ else
+ {
+ mSaleInfoForSaleObjects->setVisible(FALSE);
+ mSaleInfoForSaleNoObjects->setVisible(TRUE);
+ }
+ mSaleInfoNotForSale->setVisible(FALSE);
+
+ F32 cost_per_sqm = 0.0f;
+ if (area > 0)
+ {
+ cost_per_sqm = (F32)parcel->getSalePrice() / (F32)area;
+ }
+
+ S32 price = parcel->getSalePrice();
+ mSaleInfoForSale1->setTextArg("[PRICE]", LLResMgr::getInstance()->getMonetaryString(price));
+ mSaleInfoForSale1->setTextArg("[PRICE_PER_SQM]", llformat("%.1f", cost_per_sqm));
+ if (can_be_sold)
+ {
+ mBtnStopSellLand->setVisible(TRUE);
+ }
+ }
+ else
+ {
+ mSaleInfoForSale1->setVisible(FALSE);
+ mSaleInfoForSale2->setVisible(FALSE);
+ mSaleInfoForSaleObjects->setVisible(FALSE);
+ mSaleInfoForSaleNoObjects->setVisible(FALSE);
+ mSaleInfoNotForSale->setVisible(TRUE);
+ if (can_be_sold)
+ {
+ mBtnSellLand->setVisible(TRUE);
+ }
+ }
+
+ refreshNames();
+
+ mBtnBuyLand->setEnabled(
+ LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, false));
+ mBtnScriptLimits->setEnabled(true);
+// LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, false));
+ mBtnBuyGroupLand->setEnabled(
+ LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, true));
+
+ if(region_owner)
+ {
+ mBtnReclaimLand->setEnabled(
+ !is_public && (parcel->getOwnerID() != gAgent.getID()));
+ }
+ else
+ {
+ BOOL is_owner_release = LLViewerParcelMgr::isParcelOwnedByAgent(parcel, GP_LAND_RELEASE);
+ BOOL is_manager_release = (gAgent.canManageEstate() &&
+ regionp &&
+ (parcel->getOwnerID() != regionp->getOwner()));
+ BOOL can_release = is_owner_release || is_manager_release;
+ mBtnReleaseLand->setEnabled( can_release );
+ }
+
+ BOOL use_pass = parcel->getOwnerID()!= gAgent.getID() && parcel->getParcelFlag(PF_USE_PASS_LIST) && !LLViewerParcelMgr::getInstance()->isCollisionBanned();;
+ mBtnBuyPass->setEnabled(use_pass);
+
+ }
}
// public
void LLPanelLandGeneral::refreshNames()
{
- LLParcel *parcel = mParcel->getParcel();
- if (!parcel)
- {
- mTextOwner->setText(LLStringUtil::null);
- mTextGroup->setText(LLStringUtil::null);
- return;
- }
-
- std::string owner;
- if (parcel->getIsGroupOwned())
- {
- owner = getString("group_owned_text");
- }
- else
- {
- // Figure out the owner's name
- owner = LLSLURL("agent", parcel->getOwnerID(), "inspect").getSLURLString();
- }
-
- if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus())
- {
- owner += getString("sale_pending_text");
- }
- mTextOwner->setText(owner);
-
- std::string group;
- if (!parcel->getGroupID().isNull())
- {
- group = LLSLURL("group", parcel->getGroupID(), "inspect").getSLURLString();
- }
- mTextGroup->setText(group);
-
- if (parcel->getForSale())
- {
- const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
- if(auth_buyer_id.notNull())
- {
- std::string name;
- name = LLSLURL("agent", auth_buyer_id, "inspect").getSLURLString();
- mSaleInfoForSale2->setTextArg("[BUYER]", name);
- }
- else
- {
- mSaleInfoForSale2->setTextArg("[BUYER]", getString("anyone"));
- }
- }
+ LLParcel *parcel = mParcel->getParcel();
+ if (!parcel)
+ {
+ mTextOwner->setText(LLStringUtil::null);
+ mTextGroup->setText(LLStringUtil::null);
+ return;
+ }
+
+ std::string owner;
+ if (parcel->getIsGroupOwned())
+ {
+ owner = getString("group_owned_text");
+ }
+ else
+ {
+ // Figure out the owner's name
+ owner = LLSLURL("agent", parcel->getOwnerID(), "inspect").getSLURLString();
+ }
+
+ if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus())
+ {
+ owner += getString("sale_pending_text");
+ }
+ mTextOwner->setText(owner);
+
+ std::string group;
+ if (!parcel->getGroupID().isNull())
+ {
+ group = LLSLURL("group", parcel->getGroupID(), "inspect").getSLURLString();
+ }
+ mTextGroup->setText(group);
+
+ if (parcel->getForSale())
+ {
+ const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
+ if(auth_buyer_id.notNull())
+ {
+ std::string name;
+ name = LLSLURL("agent", auth_buyer_id, "inspect").getSLURLString();
+ mSaleInfoForSale2->setTextArg("[BUYER]", name);
+ }
+ else
+ {
+ mSaleInfoForSale2->setTextArg("[BUYER]", getString("anyone"));
+ }
+ }
}
// virtual
void LLPanelLandGeneral::draw()
{
- LLPanel::draw();
+ LLPanel::draw();
}
void LLPanelLandGeneral::onClickSetGroup()
{
- LLFloater* parent_floater = gFloaterView->getParentFloater(this);
+ LLFloater* parent_floater = gFloaterView->getParentFloater(this);
- LLFloaterGroupPicker* fg = LLFloaterReg::showTypedInstance<LLFloaterGroupPicker>("group_picker", LLSD(gAgent.getID()));
- if (fg)
- {
- fg->setSelectGroupCallback( boost::bind(&LLPanelLandGeneral::setGroup, this, _1 ));
- if (parent_floater)
- {
- LLRect new_rect = gFloaterView->findNeighboringPosition(parent_floater, fg);
- fg->setOrigin(new_rect.mLeft, new_rect.mBottom);
- parent_floater->addDependentFloater(fg);
- }
- }
+ LLFloaterGroupPicker* fg = LLFloaterReg::showTypedInstance<LLFloaterGroupPicker>("group_picker", LLSD(gAgent.getID()));
+ if (fg)
+ {
+ fg->setSelectGroupCallback( boost::bind(&LLPanelLandGeneral::setGroup, this, _1 ));
+ if (parent_floater)
+ {
+ LLRect new_rect = gFloaterView->findNeighboringPosition(parent_floater, fg);
+ fg->setOrigin(new_rect.mLeft, new_rect.mBottom);
+ parent_floater->addDependentFloater(fg);
+ }
+ }
}
void LLPanelLandGeneral::onClickProfile()
{
- LLParcel* parcel = mParcel->getParcel();
- if (!parcel) return;
+ LLParcel* parcel = mParcel->getParcel();
+ if (!parcel) return;
- if (parcel->getIsGroupOwned())
- {
- const LLUUID& group_id = parcel->getGroupID();
- LLGroupActions::show(group_id);
- }
- else
- {
- const LLUUID& avatar_id = parcel->getOwnerID();
- LLAvatarActions::showProfile(avatar_id);
- }
+ if (parcel->getIsGroupOwned())
+ {
+ const LLUUID& group_id = parcel->getGroupID();
+ LLGroupActions::show(group_id);
+ }
+ else
+ {
+ const LLUUID& avatar_id = parcel->getOwnerID();
+ LLAvatarActions::showProfile(avatar_id);
+ }
}
// public
void LLPanelLandGeneral::setGroup(const LLUUID& group_id)
{
- LLParcel* parcel = mParcel->getParcel();
- if (!parcel) return;
+ LLParcel* parcel = mParcel->getParcel();
+ if (!parcel) return;
- // Set parcel properties and send message
- parcel->setGroupID(group_id);
- //parcel->setGroupName(group_name);
- //mTextGroup->setText(group_name);
+ // Set parcel properties and send message
+ parcel->setGroupID(group_id);
+ //parcel->setGroupName(group_name);
+ //mTextGroup->setText(group_name);
- // Send update
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(parcel);
+ // Send update
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(parcel);
- // Update UI
- refresh();
+ // Update UI
+ refresh();
}
// static
void LLPanelLandGeneral::onClickBuyLand(void* data)
{
- BOOL* for_group = (BOOL*)data;
- LLViewerParcelMgr::getInstance()->startBuyLand(*for_group);
+ BOOL* for_group = (BOOL*)data;
+ LLViewerParcelMgr::getInstance()->startBuyLand(*for_group);
}
// static
void LLPanelLandGeneral::onClickScriptLimits(void* data)
{
- LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
- LLParcel* parcel = panelp->mParcel->getParcel();
- if(parcel != NULL)
- {
- LLFloaterReg::showInstance("script_limits");
- }
+ LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
+ LLParcel* parcel = panelp->mParcel->getParcel();
+ if(parcel != NULL)
+ {
+ LLFloaterReg::showInstance("script_limits");
+ }
}
// static
void LLPanelLandGeneral::onClickDeed(void*)
{
- //LLParcel* parcel = mParcel->getParcel();
- //if (parcel)
- //{
- LLViewerParcelMgr::getInstance()->startDeedLandToGroup();
- //}
+ //LLParcel* parcel = mParcel->getParcel();
+ //if (parcel)
+ //{
+ LLViewerParcelMgr::getInstance()->startDeedLandToGroup();
+ //}
}
// static
void LLPanelLandGeneral::onClickRelease(void*)
{
- LLViewerParcelMgr::getInstance()->startReleaseLand();
+ LLViewerParcelMgr::getInstance()->startReleaseLand();
}
// static
void LLPanelLandGeneral::onClickReclaim(void*)
{
- LL_DEBUGS() << "LLPanelLandGeneral::onClickReclaim()" << LL_ENDL;
- LLViewerParcelMgr::getInstance()->reclaimParcel();
+ LL_DEBUGS() << "LLPanelLandGeneral::onClickReclaim()" << LL_ENDL;
+ LLViewerParcelMgr::getInstance()->reclaimParcel();
}
// static
BOOL LLPanelLandGeneral::enableBuyPass(void* data)
{
- LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
- LLParcel* parcel = panelp != NULL ? panelp->mParcel->getParcel() : LLViewerParcelMgr::getInstance()->getParcelSelection()->getParcel();
- return (parcel != NULL) && (parcel->getParcelFlag(PF_USE_PASS_LIST) && !LLViewerParcelMgr::getInstance()->isCollisionBanned());
+ LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
+ LLParcel* parcel = panelp != NULL ? panelp->mParcel->getParcel() : LLViewerParcelMgr::getInstance()->getParcelSelection()->getParcel();
+ return (parcel != NULL) && (parcel->getParcelFlag(PF_USE_PASS_LIST) && !LLViewerParcelMgr::getInstance()->isCollisionBanned());
}
// static
void LLPanelLandGeneral::onClickBuyPass(void* data)
{
- LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
- LLParcel* parcel = panelp != NULL ? panelp->mParcel->getParcel() : LLViewerParcelMgr::getInstance()->getParcelSelection()->getParcel();
+ LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
+ LLParcel* parcel = panelp != NULL ? panelp->mParcel->getParcel() : LLViewerParcelMgr::getInstance()->getParcelSelection()->getParcel();
+
+ if (!parcel) return;
- if (!parcel) return;
+ S32 pass_price = parcel->getPassPrice();
+ std::string parcel_name = parcel->getName();
+ F32 pass_hours = parcel->getPassHours();
- S32 pass_price = parcel->getPassPrice();
- std::string parcel_name = parcel->getName();
- F32 pass_hours = parcel->getPassHours();
+ std::string cost, time;
+ cost = llformat("%d", pass_price);
+ time = llformat("%.2f", pass_hours);
- std::string cost, time;
- cost = llformat("%d", pass_price);
- time = llformat("%.2f", pass_hours);
+ LLSD args;
+ args["COST"] = cost;
+ args["PARCEL_NAME"] = parcel_name;
+ args["TIME"] = time;
- LLSD args;
- args["COST"] = cost;
- args["PARCEL_NAME"] = parcel_name;
- args["TIME"] = time;
-
- // creating pointer on selection to avoid deselection of parcel until we are done with buying pass (EXT-6464)
- sSelectionForBuyPass = LLViewerParcelMgr::getInstance()->getParcelSelection();
- LLNotificationsUtil::add("LandBuyPass", args, LLSD(), cbBuyPass);
+ // creating pointer on selection to avoid deselection of parcel until we are done with buying pass (EXT-6464)
+ sSelectionForBuyPass = LLViewerParcelMgr::getInstance()->getParcelSelection();
+ LLNotificationsUtil::add("LandBuyPass", args, LLSD(), cbBuyPass);
}
// static
void LLPanelLandGeneral::onClickStartAuction(void* data)
{
- LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
- LLParcel* parcelp = panelp->mParcel->getParcel();
- if(parcelp)
- {
- if(parcelp->getForSale())
- {
- LLNotificationsUtil::add("CannotStartAuctionAlreadyForSale");
- }
- else
- {
- //LLFloaterAuction::showInstance();
- LLFloaterReg::showInstance("auction");
- }
- }
+ LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
+ LLParcel* parcelp = panelp->mParcel->getParcel();
+ if(parcelp)
+ {
+ if(parcelp->getForSale())
+ {
+ LLNotificationsUtil::add("CannotStartAuctionAlreadyForSale");
+ }
+ else
+ {
+ //LLFloaterAuction::showInstance();
+ LLFloaterReg::showInstance("auction");
+ }
+ }
}
// static
bool LLPanelLandGeneral::cbBuyPass(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- if (0 == option)
- {
- // User clicked OK
- LLViewerParcelMgr::getInstance()->buyPass();
- }
- // we are done with buying pass, additional selection is no longer needed
- sSelectionForBuyPass = NULL;
- return false;
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (0 == option)
+ {
+ // User clicked OK
+ LLViewerParcelMgr::getInstance()->buyPass();
+ }
+ // we are done with buying pass, additional selection is no longer needed
+ sSelectionForBuyPass = NULL;
+ return false;
}
// static
void LLPanelLandGeneral::onCommitAny(LLUICtrl *ctrl, void *userdata)
{
- LLPanelLandGeneral *panelp = (LLPanelLandGeneral *)userdata;
+ LLPanelLandGeneral *panelp = (LLPanelLandGeneral *)userdata;
- LLParcel* parcel = panelp->mParcel->getParcel();
- if (!parcel)
- {
- return;
- }
+ LLParcel* parcel = panelp->mParcel->getParcel();
+ if (!parcel)
+ {
+ return;
+ }
- // Extract data from UI
- std::string name = panelp->mEditName->getText();
- std::string desc = panelp->mEditDesc->getText();
+ // Extract data from UI
+ std::string name = panelp->mEditName->getText();
+ std::string desc = panelp->mEditDesc->getText();
- // Valid data from UI
+ // Valid data from UI
- // Stuff data into selected parcel
- parcel->setName(name);
- parcel->setDesc(desc);
+ // Stuff data into selected parcel
+ parcel->setName(name);
+ parcel->setDesc(desc);
- BOOL allow_deed_to_group= panelp->mCheckDeedToGroup->get();
- BOOL contribute_with_deed = panelp->mCheckContributeWithDeed->get();
+ BOOL allow_deed_to_group= panelp->mCheckDeedToGroup->get();
+ BOOL contribute_with_deed = panelp->mCheckContributeWithDeed->get();
- parcel->setParcelFlag(PF_ALLOW_DEED_TO_GROUP, allow_deed_to_group);
- parcel->setContributeWithDeed(contribute_with_deed);
+ parcel->setParcelFlag(PF_ALLOW_DEED_TO_GROUP, allow_deed_to_group);
+ parcel->setContributeWithDeed(contribute_with_deed);
- // Send update to server
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
+ // Send update to server
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
- // Might have changed properties, so let's redraw!
- panelp->refresh();
+ // Might have changed properties, so let's redraw!
+ panelp->refresh();
}
// static
void LLPanelLandGeneral::onClickSellLand(void* data)
{
- LLViewerParcelMgr::getInstance()->startSellLand();
- LLPanelLandGeneral *panelp = (LLPanelLandGeneral *)data;
- panelp->refresh();
+ LLViewerParcelMgr::getInstance()->startSellLand();
+ LLPanelLandGeneral *panelp = (LLPanelLandGeneral *)data;
+ panelp->refresh();
}
// static
void LLPanelLandGeneral::onClickStopSellLand(void* data)
{
- LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
- LLParcel* parcel = panelp->mParcel->getParcel();
+ LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
+ LLParcel* parcel = panelp->mParcel->getParcel();
- parcel->setParcelFlag(PF_FOR_SALE, FALSE);
- parcel->setSalePrice(0);
- parcel->setAuthorizedBuyerID(LLUUID::null);
+ parcel->setParcelFlag(PF_FOR_SALE, FALSE);
+ parcel->setSalePrice(0);
+ parcel->setAuthorizedBuyerID(LLUUID::null);
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(parcel);
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(parcel);
}
//---------------------------------------------------------------------------
// LLPanelLandObjects
//---------------------------------------------------------------------------
LLPanelLandObjects::LLPanelLandObjects(LLParcelSelectionHandle& parcel)
- : LLPanel(),
-
- mParcel(parcel),
- mParcelObjectBonus(NULL),
- mSWTotalObjects(NULL),
- mObjectContribution(NULL),
- mTotalObjects(NULL),
- mOwnerObjects(NULL),
- mBtnShowOwnerObjects(NULL),
- mBtnReturnOwnerObjects(NULL),
- mGroupObjects(NULL),
- mBtnShowGroupObjects(NULL),
- mBtnReturnGroupObjects(NULL),
- mOtherObjects(NULL),
- mBtnShowOtherObjects(NULL),
- mBtnReturnOtherObjects(NULL),
- mSelectedObjects(NULL),
- mCleanOtherObjectsTime(NULL),
- mOtherTime(0),
- mBtnRefresh(NULL),
- mBtnReturnOwnerList(NULL),
- mOwnerList(NULL),
- mFirstReply(TRUE),
- mSelectedCount(0),
- mSelectedIsGroup(FALSE)
+ : LLPanel(),
+
+ mParcel(parcel),
+ mParcelObjectBonus(NULL),
+ mSWTotalObjects(NULL),
+ mObjectContribution(NULL),
+ mTotalObjects(NULL),
+ mOwnerObjects(NULL),
+ mBtnShowOwnerObjects(NULL),
+ mBtnReturnOwnerObjects(NULL),
+ mGroupObjects(NULL),
+ mBtnShowGroupObjects(NULL),
+ mBtnReturnGroupObjects(NULL),
+ mOtherObjects(NULL),
+ mBtnShowOtherObjects(NULL),
+ mBtnReturnOtherObjects(NULL),
+ mSelectedObjects(NULL),
+ mCleanOtherObjectsTime(NULL),
+ mOtherTime(0),
+ mBtnRefresh(NULL),
+ mBtnReturnOwnerList(NULL),
+ mOwnerList(NULL),
+ mFirstReply(TRUE),
+ mSelectedCount(0),
+ mSelectedIsGroup(FALSE)
{
}
@@ -1193,59 +1193,59 @@ LLPanelLandObjects::LLPanelLandObjects(LLParcelSelectionHandle& parcel)
BOOL LLPanelLandObjects::postBuild()
{
-
- mFirstReply = TRUE;
- mParcelObjectBonus = getChild<LLTextBox>("parcel_object_bonus");
- mSWTotalObjects = getChild<LLTextBox>("objects_available");
- mObjectContribution = getChild<LLTextBox>("object_contrib_text");
- mTotalObjects = getChild<LLTextBox>("total_objects_text");
- mOwnerObjects = getChild<LLTextBox>("owner_objects_text");
-
- mBtnShowOwnerObjects = getChild<LLButton>("ShowOwner");
- mBtnShowOwnerObjects->setClickedCallback(onClickShowOwnerObjects, this);
-
- mBtnReturnOwnerObjects = getChild<LLButton>("ReturnOwner...");
- mBtnReturnOwnerObjects->setClickedCallback(onClickReturnOwnerObjects, this);
-
- mGroupObjects = getChild<LLTextBox>("group_objects_text");
- mBtnShowGroupObjects = getChild<LLButton>("ShowGroup");
- mBtnShowGroupObjects->setClickedCallback(onClickShowGroupObjects, this);
-
- mBtnReturnGroupObjects = getChild<LLButton>("ReturnGroup...");
- mBtnReturnGroupObjects->setClickedCallback(onClickReturnGroupObjects, this);
-
- mOtherObjects = getChild<LLTextBox>("other_objects_text");
- mBtnShowOtherObjects = getChild<LLButton>("ShowOther");
- mBtnShowOtherObjects->setClickedCallback(onClickShowOtherObjects, this);
-
- mBtnReturnOtherObjects = getChild<LLButton>("ReturnOther...");
- mBtnReturnOtherObjects->setClickedCallback(onClickReturnOtherObjects, this);
-
- mSelectedObjects = getChild<LLTextBox>("selected_objects_text");
- mCleanOtherObjectsTime = getChild<LLLineEditor>("clean other time");
-
- mCleanOtherObjectsTime->setFocusLostCallback(boost::bind(onLostFocus, _1, this));
- mCleanOtherObjectsTime->setCommitCallback(onCommitClean, this);
- getChild<LLLineEditor>("clean other time")->setPrevalidate(LLTextValidate::validateNonNegativeS32);
-
- mBtnRefresh = getChild<LLButton>("Refresh List");
- mBtnRefresh->setClickedCallback(onClickRefresh, this);
-
- mBtnReturnOwnerList = getChild<LLButton>("Return objects...");
- mBtnReturnOwnerList->setClickedCallback(onClickReturnOwnerList, this);
-
- mIconAvatarOnline = LLUIImageList::getInstance()->getUIImage("icon_avatar_online.tga", 0);
- mIconAvatarOffline = LLUIImageList::getInstance()->getUIImage("icon_avatar_offline.tga", 0);
- mIconGroup = LLUIImageList::getInstance()->getUIImage("icon_group.tga", 0);
-
- mOwnerList = getChild<LLNameListCtrl>("owner list");
- mOwnerList->setIsFriendCallback(LLAvatarActions::isFriend);
- mOwnerList->sortByColumnIndex(3, FALSE);
- childSetCommitCallback("owner list", onCommitList, this);
- mOwnerList->setDoubleClickCallback(onDoubleClickOwner, this);
- mOwnerList->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
-
- return TRUE;
+
+ mFirstReply = TRUE;
+ mParcelObjectBonus = getChild<LLTextBox>("parcel_object_bonus");
+ mSWTotalObjects = getChild<LLTextBox>("objects_available");
+ mObjectContribution = getChild<LLTextBox>("object_contrib_text");
+ mTotalObjects = getChild<LLTextBox>("total_objects_text");
+ mOwnerObjects = getChild<LLTextBox>("owner_objects_text");
+
+ mBtnShowOwnerObjects = getChild<LLButton>("ShowOwner");
+ mBtnShowOwnerObjects->setClickedCallback(onClickShowOwnerObjects, this);
+
+ mBtnReturnOwnerObjects = getChild<LLButton>("ReturnOwner...");
+ mBtnReturnOwnerObjects->setClickedCallback(onClickReturnOwnerObjects, this);
+
+ mGroupObjects = getChild<LLTextBox>("group_objects_text");
+ mBtnShowGroupObjects = getChild<LLButton>("ShowGroup");
+ mBtnShowGroupObjects->setClickedCallback(onClickShowGroupObjects, this);
+
+ mBtnReturnGroupObjects = getChild<LLButton>("ReturnGroup...");
+ mBtnReturnGroupObjects->setClickedCallback(onClickReturnGroupObjects, this);
+
+ mOtherObjects = getChild<LLTextBox>("other_objects_text");
+ mBtnShowOtherObjects = getChild<LLButton>("ShowOther");
+ mBtnShowOtherObjects->setClickedCallback(onClickShowOtherObjects, this);
+
+ mBtnReturnOtherObjects = getChild<LLButton>("ReturnOther...");
+ mBtnReturnOtherObjects->setClickedCallback(onClickReturnOtherObjects, this);
+
+ mSelectedObjects = getChild<LLTextBox>("selected_objects_text");
+ mCleanOtherObjectsTime = getChild<LLLineEditor>("clean other time");
+
+ mCleanOtherObjectsTime->setFocusLostCallback(boost::bind(onLostFocus, _1, this));
+ mCleanOtherObjectsTime->setCommitCallback(onCommitClean, this);
+ getChild<LLLineEditor>("clean other time")->setPrevalidate(LLTextValidate::validateNonNegativeS32);
+
+ mBtnRefresh = getChild<LLButton>("Refresh List");
+ mBtnRefresh->setClickedCallback(onClickRefresh, this);
+
+ mBtnReturnOwnerList = getChild<LLButton>("Return objects...");
+ mBtnReturnOwnerList->setClickedCallback(onClickReturnOwnerList, this);
+
+ mIconAvatarOnline = LLUIImageList::getInstance()->getUIImage("icon_avatar_online.tga", 0);
+ mIconAvatarOffline = LLUIImageList::getInstance()->getUIImage("icon_avatar_offline.tga", 0);
+ mIconGroup = LLUIImageList::getInstance()->getUIImage("icon_group.tga", 0);
+
+ mOwnerList = getChild<LLNameListCtrl>("owner list");
+ mOwnerList->setIsFriendCallback(LLAvatarActions::isFriend);
+ mOwnerList->sortByColumnIndex(3, FALSE);
+ childSetCommitCallback("owner list", onCommitList, this);
+ mOwnerList->setDoubleClickCallback(onDoubleClickOwner, this);
+ mOwnerList->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
+
+ return TRUE;
}
@@ -1258,648 +1258,648 @@ LLPanelLandObjects::~LLPanelLandObjects()
// static
void LLPanelLandObjects::onDoubleClickOwner(void *userdata)
{
- LLPanelLandObjects *self = (LLPanelLandObjects *)userdata;
-
- LLScrollListItem* item = self->mOwnerList->getFirstSelected();
- if (item)
- {
- LLUUID owner_id = item->getUUID();
- // Look up the selected name, for future dialog box use.
- const LLScrollListCell* cell;
- cell = item->getColumn(1);
- if (!cell)
- {
- return;
- }
- // Is this a group?
- BOOL is_group = cell->getValue().asString() == OWNER_GROUP;
- if (is_group)
- {
- LLGroupActions::show(owner_id);
- }
- else
- {
- LLAvatarActions::showProfile(owner_id);
- }
- }
+ LLPanelLandObjects *self = (LLPanelLandObjects *)userdata;
+
+ LLScrollListItem* item = self->mOwnerList->getFirstSelected();
+ if (item)
+ {
+ LLUUID owner_id = item->getUUID();
+ // Look up the selected name, for future dialog box use.
+ const LLScrollListCell* cell;
+ cell = item->getColumn(1);
+ if (!cell)
+ {
+ return;
+ }
+ // Is this a group?
+ BOOL is_group = cell->getValue().asString() == OWNER_GROUP;
+ if (is_group)
+ {
+ LLGroupActions::show(owner_id);
+ }
+ else
+ {
+ LLAvatarActions::showProfile(owner_id);
+ }
+ }
}
// public
void LLPanelLandObjects::refresh()
{
- LLParcel *parcel = mParcel->getParcel();
-
- mBtnShowOwnerObjects->setEnabled(FALSE);
- mBtnShowGroupObjects->setEnabled(FALSE);
- mBtnShowOtherObjects->setEnabled(FALSE);
- mBtnReturnOwnerObjects->setEnabled(FALSE);
- mBtnReturnGroupObjects->setEnabled(FALSE);
- mBtnReturnOtherObjects->setEnabled(FALSE);
- mCleanOtherObjectsTime->setEnabled(FALSE);
- mBtnRefresh-> setEnabled(FALSE);
- mBtnReturnOwnerList-> setEnabled(FALSE);
-
- mSelectedOwners.clear();
- mOwnerList->deleteAllItems();
- mOwnerList->setEnabled(FALSE);
-
- if (!parcel || gDisconnected)
- {
- mSWTotalObjects->setTextArg("[COUNT]", llformat("%d", 0));
- mSWTotalObjects->setTextArg("[TOTAL]", llformat("%d", 0));
- mSWTotalObjects->setTextArg("[AVAILABLE]", llformat("%d", 0));
- mObjectContribution->setTextArg("[COUNT]", llformat("%d", 0));
- mTotalObjects->setTextArg("[COUNT]", llformat("%d", 0));
- mOwnerObjects->setTextArg("[COUNT]", llformat("%d", 0));
- mGroupObjects->setTextArg("[COUNT]", llformat("%d", 0));
- mOtherObjects->setTextArg("[COUNT]", llformat("%d", 0));
- mSelectedObjects->setTextArg("[COUNT]", llformat("%d", 0));
- }
- else
- {
- S32 sw_max = parcel->getSimWideMaxPrimCapacity();
- S32 sw_total = parcel->getSimWidePrimCount();
- S32 max = ll_round(parcel->getMaxPrimCapacity() * parcel->getParcelPrimBonus());
- S32 total = parcel->getPrimCount();
- S32 owned = parcel->getOwnerPrimCount();
- S32 group = parcel->getGroupPrimCount();
- S32 other = parcel->getOtherPrimCount();
- S32 selected = parcel->getSelectedPrimCount();
- F32 parcel_object_bonus = parcel->getParcelPrimBonus();
- mOtherTime = parcel->getCleanOtherTime();
-
- // Can't have more than region max tasks, regardless of parcel
- // object bonus factor.
- LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if (region)
- {
- S32 max_tasks_per_region = (S32)region->getMaxTasks();
- sw_max = llmin(sw_max, max_tasks_per_region);
- max = llmin(max, max_tasks_per_region);
- }
-
- if (parcel_object_bonus != 1.0f)
- {
- mParcelObjectBonus->setVisible(TRUE);
- mParcelObjectBonus->setTextArg("[BONUS]", llformat("%.2f", parcel_object_bonus));
- }
- else
- {
- mParcelObjectBonus->setVisible(FALSE);
- }
-
- if (sw_total > sw_max)
- {
- mSWTotalObjects->setText(getString("objects_deleted_text"));
- mSWTotalObjects->setTextArg("[DELETED]", llformat("%d", sw_total - sw_max));
- }
- else
- {
- mSWTotalObjects->setText(getString("objects_available_text"));
- mSWTotalObjects->setTextArg("[AVAILABLE]", llformat("%d", sw_max - sw_total));
- }
- mSWTotalObjects->setTextArg("[COUNT]", llformat("%d", sw_total));
- mSWTotalObjects->setTextArg("[MAX]", llformat("%d", sw_max));
-
- mObjectContribution->setTextArg("[COUNT]", llformat("%d", max));
- mTotalObjects->setTextArg("[COUNT]", llformat("%d", total));
- mOwnerObjects->setTextArg("[COUNT]", llformat("%d", owned));
- mGroupObjects->setTextArg("[COUNT]", llformat("%d", group));
- mOtherObjects->setTextArg("[COUNT]", llformat("%d", other));
- mSelectedObjects->setTextArg("[COUNT]", llformat("%d", selected));
- mCleanOtherObjectsTime->setText(llformat("%d", mOtherTime));
-
- BOOL can_return_owned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_RETURN_GROUP_OWNED);
- BOOL can_return_group_set = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_RETURN_GROUP_SET);
- BOOL can_return_other = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_RETURN_NON_GROUP);
-
- if (can_return_owned || can_return_group_set || can_return_other)
- {
- if (owned && can_return_owned)
- {
- mBtnShowOwnerObjects->setEnabled(TRUE);
- mBtnReturnOwnerObjects->setEnabled(TRUE);
- }
- if (group && can_return_group_set)
- {
- mBtnShowGroupObjects->setEnabled(TRUE);
- mBtnReturnGroupObjects->setEnabled(TRUE);
- }
- if (other && can_return_other)
- {
- mBtnShowOtherObjects->setEnabled(TRUE);
- mBtnReturnOtherObjects->setEnabled(TRUE);
- }
-
- mCleanOtherObjectsTime->setEnabled(TRUE);
- mBtnRefresh->setEnabled(TRUE);
- }
- }
+ LLParcel *parcel = mParcel->getParcel();
+
+ mBtnShowOwnerObjects->setEnabled(FALSE);
+ mBtnShowGroupObjects->setEnabled(FALSE);
+ mBtnShowOtherObjects->setEnabled(FALSE);
+ mBtnReturnOwnerObjects->setEnabled(FALSE);
+ mBtnReturnGroupObjects->setEnabled(FALSE);
+ mBtnReturnOtherObjects->setEnabled(FALSE);
+ mCleanOtherObjectsTime->setEnabled(FALSE);
+ mBtnRefresh-> setEnabled(FALSE);
+ mBtnReturnOwnerList-> setEnabled(FALSE);
+
+ mSelectedOwners.clear();
+ mOwnerList->deleteAllItems();
+ mOwnerList->setEnabled(FALSE);
+
+ if (!parcel || gDisconnected)
+ {
+ mSWTotalObjects->setTextArg("[COUNT]", llformat("%d", 0));
+ mSWTotalObjects->setTextArg("[TOTAL]", llformat("%d", 0));
+ mSWTotalObjects->setTextArg("[AVAILABLE]", llformat("%d", 0));
+ mObjectContribution->setTextArg("[COUNT]", llformat("%d", 0));
+ mTotalObjects->setTextArg("[COUNT]", llformat("%d", 0));
+ mOwnerObjects->setTextArg("[COUNT]", llformat("%d", 0));
+ mGroupObjects->setTextArg("[COUNT]", llformat("%d", 0));
+ mOtherObjects->setTextArg("[COUNT]", llformat("%d", 0));
+ mSelectedObjects->setTextArg("[COUNT]", llformat("%d", 0));
+ }
+ else
+ {
+ S32 sw_max = parcel->getSimWideMaxPrimCapacity();
+ S32 sw_total = parcel->getSimWidePrimCount();
+ S32 max = ll_round(parcel->getMaxPrimCapacity() * parcel->getParcelPrimBonus());
+ S32 total = parcel->getPrimCount();
+ S32 owned = parcel->getOwnerPrimCount();
+ S32 group = parcel->getGroupPrimCount();
+ S32 other = parcel->getOtherPrimCount();
+ S32 selected = parcel->getSelectedPrimCount();
+ F32 parcel_object_bonus = parcel->getParcelPrimBonus();
+ mOtherTime = parcel->getCleanOtherTime();
+
+ // Can't have more than region max tasks, regardless of parcel
+ // object bonus factor.
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (region)
+ {
+ S32 max_tasks_per_region = (S32)region->getMaxTasks();
+ sw_max = llmin(sw_max, max_tasks_per_region);
+ max = llmin(max, max_tasks_per_region);
+ }
+
+ if (parcel_object_bonus != 1.0f)
+ {
+ mParcelObjectBonus->setVisible(TRUE);
+ mParcelObjectBonus->setTextArg("[BONUS]", llformat("%.2f", parcel_object_bonus));
+ }
+ else
+ {
+ mParcelObjectBonus->setVisible(FALSE);
+ }
+
+ if (sw_total > sw_max)
+ {
+ mSWTotalObjects->setText(getString("objects_deleted_text"));
+ mSWTotalObjects->setTextArg("[DELETED]", llformat("%d", sw_total - sw_max));
+ }
+ else
+ {
+ mSWTotalObjects->setText(getString("objects_available_text"));
+ mSWTotalObjects->setTextArg("[AVAILABLE]", llformat("%d", sw_max - sw_total));
+ }
+ mSWTotalObjects->setTextArg("[COUNT]", llformat("%d", sw_total));
+ mSWTotalObjects->setTextArg("[MAX]", llformat("%d", sw_max));
+
+ mObjectContribution->setTextArg("[COUNT]", llformat("%d", max));
+ mTotalObjects->setTextArg("[COUNT]", llformat("%d", total));
+ mOwnerObjects->setTextArg("[COUNT]", llformat("%d", owned));
+ mGroupObjects->setTextArg("[COUNT]", llformat("%d", group));
+ mOtherObjects->setTextArg("[COUNT]", llformat("%d", other));
+ mSelectedObjects->setTextArg("[COUNT]", llformat("%d", selected));
+ mCleanOtherObjectsTime->setText(llformat("%d", mOtherTime));
+
+ BOOL can_return_owned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_RETURN_GROUP_OWNED);
+ BOOL can_return_group_set = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_RETURN_GROUP_SET);
+ BOOL can_return_other = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_RETURN_NON_GROUP);
+
+ if (can_return_owned || can_return_group_set || can_return_other)
+ {
+ if (owned && can_return_owned)
+ {
+ mBtnShowOwnerObjects->setEnabled(TRUE);
+ mBtnReturnOwnerObjects->setEnabled(TRUE);
+ }
+ if (group && can_return_group_set)
+ {
+ mBtnShowGroupObjects->setEnabled(TRUE);
+ mBtnReturnGroupObjects->setEnabled(TRUE);
+ }
+ if (other && can_return_other)
+ {
+ mBtnShowOtherObjects->setEnabled(TRUE);
+ mBtnReturnOtherObjects->setEnabled(TRUE);
+ }
+
+ mCleanOtherObjectsTime->setEnabled(TRUE);
+ mBtnRefresh->setEnabled(TRUE);
+ }
+ }
}
// virtual
void LLPanelLandObjects::draw()
{
- LLPanel::draw();
+ LLPanel::draw();
}
void send_other_clean_time_message(S32 parcel_local_id, S32 other_clean_time)
{
- LLMessageSystem *msg = gMessageSystem;
+ LLMessageSystem *msg = gMessageSystem;
- LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if (!region) return;
+ 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->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());
+ msg->sendReliable(region->getHost());
}
-void send_return_objects_message(S32 parcel_local_id, S32 return_type,
- uuid_list_t* owner_ids = NULL)
+void send_return_objects_message(S32 parcel_local_id, S32 return_type,
+ uuid_list_t* owner_ids = NULL)
{
- LLMessageSystem *msg = gMessageSystem;
+ LLMessageSystem *msg = gMessageSystem;
- LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if (!region) return;
+ 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);
+ 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);
+ // 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);
- }
+ // 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());
+ msg->sendReliable(region->getHost());
}
bool LLPanelLandObjects::callbackReturnOwnerObjects(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- LLParcel *parcel = mParcel->getParcel();
- if (0 == option)
- {
- if (parcel)
- {
- LLUUID owner_id = parcel->getOwnerID();
- LLSD args;
- if (owner_id == gAgentID)
- {
- LLNotificationsUtil::add("OwnedObjectsReturned");
- }
- else
- {
- args["NAME"] = LLSLURL("agent", owner_id, "completename").getSLURLString();
- LLNotificationsUtil::add("OtherObjectsReturned", args);
- }
- send_return_objects_message(parcel->getLocalID(), RT_OWNER);
- }
- }
-
- LLSelectMgr::getInstance()->unhighlightAll();
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
- refresh();
- return false;
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ LLParcel *parcel = mParcel->getParcel();
+ if (0 == option)
+ {
+ if (parcel)
+ {
+ LLUUID owner_id = parcel->getOwnerID();
+ LLSD args;
+ if (owner_id == gAgentID)
+ {
+ LLNotificationsUtil::add("OwnedObjectsReturned");
+ }
+ else
+ {
+ args["NAME"] = LLSLURL("agent", owner_id, "completename").getSLURLString();
+ LLNotificationsUtil::add("OtherObjectsReturned", args);
+ }
+ send_return_objects_message(parcel->getLocalID(), RT_OWNER);
+ }
+ }
+
+ LLSelectMgr::getInstance()->unhighlightAll();
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
+ refresh();
+ return false;
}
bool LLPanelLandObjects::callbackReturnGroupObjects(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- LLParcel *parcel = mParcel->getParcel();
- if (0 == option)
- {
- if (parcel)
- {
- std::string group_name;
- gCacheName->getGroupName(parcel->getGroupID(), group_name);
- LLSD args;
- args["GROUPNAME"] = group_name;
- LLNotificationsUtil::add("GroupObjectsReturned", args);
- send_return_objects_message(parcel->getLocalID(), RT_GROUP);
- }
- }
- LLSelectMgr::getInstance()->unhighlightAll();
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
- refresh();
- return false;
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ LLParcel *parcel = mParcel->getParcel();
+ if (0 == option)
+ {
+ if (parcel)
+ {
+ std::string group_name;
+ gCacheName->getGroupName(parcel->getGroupID(), group_name);
+ LLSD args;
+ args["GROUPNAME"] = group_name;
+ LLNotificationsUtil::add("GroupObjectsReturned", args);
+ send_return_objects_message(parcel->getLocalID(), RT_GROUP);
+ }
+ }
+ LLSelectMgr::getInstance()->unhighlightAll();
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
+ refresh();
+ return false;
}
bool LLPanelLandObjects::callbackReturnOtherObjects(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- LLParcel *parcel = mParcel->getParcel();
- if (0 == option)
- {
- if (parcel)
- {
- LLNotificationsUtil::add("UnOwnedObjectsReturned");
- send_return_objects_message(parcel->getLocalID(), RT_OTHER);
- }
- }
- LLSelectMgr::getInstance()->unhighlightAll();
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
- refresh();
- return false;
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ LLParcel *parcel = mParcel->getParcel();
+ if (0 == option)
+ {
+ if (parcel)
+ {
+ LLNotificationsUtil::add("UnOwnedObjectsReturned");
+ send_return_objects_message(parcel->getLocalID(), RT_OTHER);
+ }
+ }
+ LLSelectMgr::getInstance()->unhighlightAll();
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
+ refresh();
+ return false;
}
bool LLPanelLandObjects::callbackReturnOwnerList(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- LLParcel *parcel = mParcel->getParcel();
- if (0 == option)
- {
- if (parcel)
- {
- // Make sure we have something selected.
- uuid_list_t::iterator selected = mSelectedOwners.begin();
- if (selected != mSelectedOwners.end())
- {
- LLSD args;
- if (mSelectedIsGroup)
- {
- args["GROUPNAME"] = mSelectedName;
- LLNotificationsUtil::add("GroupObjectsReturned", args);
- }
- else
- {
- args["NAME"] = mSelectedName;
- LLNotificationsUtil::add("OtherObjectsReturned2", args);
- }
-
- send_return_objects_message(parcel->getLocalID(), RT_LIST, &(mSelectedOwners));
- }
- }
- }
- LLSelectMgr::getInstance()->unhighlightAll();
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
- refresh();
- return false;
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ LLParcel *parcel = mParcel->getParcel();
+ if (0 == option)
+ {
+ if (parcel)
+ {
+ // Make sure we have something selected.
+ uuid_list_t::iterator selected = mSelectedOwners.begin();
+ if (selected != mSelectedOwners.end())
+ {
+ LLSD args;
+ if (mSelectedIsGroup)
+ {
+ args["GROUPNAME"] = mSelectedName;
+ LLNotificationsUtil::add("GroupObjectsReturned", args);
+ }
+ else
+ {
+ args["NAME"] = mSelectedName;
+ LLNotificationsUtil::add("OtherObjectsReturned2", args);
+ }
+
+ send_return_objects_message(parcel->getLocalID(), RT_LIST, &(mSelectedOwners));
+ }
+ }
+ }
+ LLSelectMgr::getInstance()->unhighlightAll();
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
+ refresh();
+ return false;
}
// static
void LLPanelLandObjects::onClickReturnOwnerList(void* userdata)
{
- LLPanelLandObjects *self = (LLPanelLandObjects *)userdata;
+ LLPanelLandObjects *self = (LLPanelLandObjects *)userdata;
- LLParcel* parcelp = self->mParcel->getParcel();
- if (!parcelp) return;
+ LLParcel* parcelp = self->mParcel->getParcel();
+ if (!parcelp) return;
- // Make sure we have something selected.
- if (self->mSelectedOwners.empty())
- {
- return;
- }
- //uuid_list_t::iterator selected_itr = self->mSelectedOwners.begin();
- //if (selected_itr == self->mSelectedOwners.end()) return;
+ // Make sure we have something selected.
+ if (self->mSelectedOwners.empty())
+ {
+ return;
+ }
+ //uuid_list_t::iterator selected_itr = self->mSelectedOwners.begin();
+ //if (selected_itr == self->mSelectedOwners.end()) return;
- send_parcel_select_objects(parcelp->getLocalID(), RT_LIST, &(self->mSelectedOwners));
+ send_parcel_select_objects(parcelp->getLocalID(), RT_LIST, &(self->mSelectedOwners));
- LLSD args;
- args["NAME"] = self->mSelectedName;
- args["N"] = llformat("%d",self->mSelectedCount);
- if (self->mSelectedIsGroup)
- {
- LLNotificationsUtil::add("ReturnObjectsDeededToGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerList, self, _1, _2));
- }
- else
- {
- LLNotificationsUtil::add("ReturnObjectsOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerList, self, _1, _2));
- }
+ LLSD args;
+ args["NAME"] = self->mSelectedName;
+ args["N"] = llformat("%d",self->mSelectedCount);
+ if (self->mSelectedIsGroup)
+ {
+ LLNotificationsUtil::add("ReturnObjectsDeededToGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerList, self, _1, _2));
+ }
+ else
+ {
+ LLNotificationsUtil::add("ReturnObjectsOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerList, self, _1, _2));
+ }
}
// static
void LLPanelLandObjects::onClickRefresh(void* userdata)
{
- LLPanelLandObjects *self = (LLPanelLandObjects*)userdata;
+ LLPanelLandObjects *self = (LLPanelLandObjects*)userdata;
- LLMessageSystem *msg = gMessageSystem;
+ LLMessageSystem *msg = gMessageSystem;
- LLParcel* parcel = self->mParcel->getParcel();
- if (!parcel) return;
+ LLParcel* parcel = self->mParcel->getParcel();
+ if (!parcel) return;
- LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if (!region) return;
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (!region) return;
- self->mBtnRefresh->setEnabled(false);
+ self->mBtnRefresh->setEnabled(false);
- // ready the list for results
- self->mOwnerList->deleteAllItems();
- self->mOwnerList->setCommentText(LLTrans::getString("Searching"));
- self->mOwnerList->setEnabled(FALSE);
- self->mFirstReply = TRUE;
+ // ready the list for results
+ self->mOwnerList->deleteAllItems();
+ self->mOwnerList->setCommentText(LLTrans::getString("Searching"));
+ self->mOwnerList->setEnabled(FALSE);
+ self->mFirstReply = TRUE;
- // send the message
- msg->newMessageFast(_PREHASH_ParcelObjectOwnersRequest);
- 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->getLocalID());
+ // send the message
+ msg->newMessageFast(_PREHASH_ParcelObjectOwnersRequest);
+ 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->getLocalID());
- msg->sendReliable(region->getHost());
+ msg->sendReliable(region->getHost());
}
// static
void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, void **)
{
- LLPanelLandObjects* self = LLFloaterLand::getCurrentPanelLandObjects();
-
- if (!self)
- {
- LL_WARNS() << "Received message for nonexistent LLPanelLandObject"
- << LL_ENDL;
- return;
- }
-
- const LLFontGL* FONT = LLFontGL::getFontSansSerif();
-
- // Extract all of the owners.
- S32 rows = msg->getNumberOfBlocksFast(_PREHASH_Data);
- //uuid_list_t return_ids;
- LLUUID owner_id;
- BOOL is_group_owned;
- S32 object_count;
- U32 most_recent_time = 0;
- BOOL is_online;
- std::string object_count_str;
- //BOOL b_need_refresh = FALSE;
-
- // If we were waiting for the first reply, clear the "Searching..." text.
- if (self->mFirstReply)
- {
- self->mOwnerList->deleteAllItems();
- self->mFirstReply = FALSE;
- }
-
- for(S32 i = 0; i < rows; ++i)
- {
- msg->getUUIDFast(_PREHASH_Data, _PREHASH_OwnerID, owner_id, i);
- msg->getBOOLFast(_PREHASH_Data, _PREHASH_IsGroupOwned, is_group_owned, i);
- msg->getS32Fast (_PREHASH_Data, _PREHASH_Count, object_count, i);
- msg->getBOOLFast(_PREHASH_Data, _PREHASH_OnlineStatus, is_online, i);
- if(msg->has("DataExtended"))
- {
- msg->getU32("DataExtended", "TimeStamp", most_recent_time, i);
- }
-
- if (owner_id.isNull())
- {
- continue;
- }
-
- LLNameListCtrl::NameItem item_params;
- item_params.value = owner_id;
- item_params.target = is_group_owned ? LLNameListCtrl::GROUP : LLNameListCtrl::INDIVIDUAL;
-
- if (is_group_owned)
- {
- item_params.columns.add().type("icon").value(self->mIconGroup->getName()).column("type");
- item_params.columns.add().value(OWNER_GROUP).font(FONT).column("online_status");
- }
- else if (is_online)
- {
- item_params.columns.add().type("icon").value(self->mIconAvatarOnline->getName()).column("type");
- item_params.columns.add().value(OWNER_ONLINE).font(FONT).column("online_status");
- }
- else // offline
- {
- item_params.columns.add().type("icon").value(self->mIconAvatarOffline->getName()).column("type");
- item_params.columns.add().value(OWNER_OFFLINE).font(FONT).column("online_status");
- }
-
- // Placeholder for name.
- LLAvatarName av_name;
- LLAvatarNameCache::get(owner_id, &av_name);
- item_params.columns.add().value(av_name.getCompleteName()).font(FONT).column("name");
-
- object_count_str = llformat("%d", object_count);
- item_params.columns.add().value(object_count_str).font(FONT).column("count");
- item_params.columns.add().value(LLDate((time_t)most_recent_time)).font(FONT).column("mostrecent").type("date");
-
- self->mOwnerList->addNameItemRow(item_params);
- LL_DEBUGS() << "object owner " << owner_id << " (" << (is_group_owned ? "group" : "agent")
- << ") owns " << object_count << " objects." << LL_ENDL;
- }
-
- // check for no results
- if (0 == self->mOwnerList->getItemCount())
- {
- self->mOwnerList->setCommentText(LLTrans::getString("NoneFound"));
- }
- else
- {
- self->mOwnerList->setEnabled(TRUE);
- }
-
- self->mBtnRefresh->setEnabled(true);
+ LLPanelLandObjects* self = LLFloaterLand::getCurrentPanelLandObjects();
+
+ if (!self)
+ {
+ LL_WARNS() << "Received message for nonexistent LLPanelLandObject"
+ << LL_ENDL;
+ return;
+ }
+
+ const LLFontGL* FONT = LLFontGL::getFontSansSerif();
+
+ // Extract all of the owners.
+ S32 rows = msg->getNumberOfBlocksFast(_PREHASH_Data);
+ //uuid_list_t return_ids;
+ LLUUID owner_id;
+ BOOL is_group_owned;
+ S32 object_count;
+ U32 most_recent_time = 0;
+ BOOL is_online;
+ std::string object_count_str;
+ //BOOL b_need_refresh = FALSE;
+
+ // If we were waiting for the first reply, clear the "Searching..." text.
+ if (self->mFirstReply)
+ {
+ self->mOwnerList->deleteAllItems();
+ self->mFirstReply = FALSE;
+ }
+
+ for(S32 i = 0; i < rows; ++i)
+ {
+ msg->getUUIDFast(_PREHASH_Data, _PREHASH_OwnerID, owner_id, i);
+ msg->getBOOLFast(_PREHASH_Data, _PREHASH_IsGroupOwned, is_group_owned, i);
+ msg->getS32Fast (_PREHASH_Data, _PREHASH_Count, object_count, i);
+ msg->getBOOLFast(_PREHASH_Data, _PREHASH_OnlineStatus, is_online, i);
+ if(msg->has("DataExtended"))
+ {
+ msg->getU32("DataExtended", "TimeStamp", most_recent_time, i);
+ }
+
+ if (owner_id.isNull())
+ {
+ continue;
+ }
+
+ LLNameListCtrl::NameItem item_params;
+ item_params.value = owner_id;
+ item_params.target = is_group_owned ? LLNameListCtrl::GROUP : LLNameListCtrl::INDIVIDUAL;
+
+ if (is_group_owned)
+ {
+ item_params.columns.add().type("icon").value(self->mIconGroup->getName()).column("type");
+ item_params.columns.add().value(OWNER_GROUP).font(FONT).column("online_status");
+ }
+ else if (is_online)
+ {
+ item_params.columns.add().type("icon").value(self->mIconAvatarOnline->getName()).column("type");
+ item_params.columns.add().value(OWNER_ONLINE).font(FONT).column("online_status");
+ }
+ else // offline
+ {
+ item_params.columns.add().type("icon").value(self->mIconAvatarOffline->getName()).column("type");
+ item_params.columns.add().value(OWNER_OFFLINE).font(FONT).column("online_status");
+ }
+
+ // Placeholder for name.
+ LLAvatarName av_name;
+ LLAvatarNameCache::get(owner_id, &av_name);
+ item_params.columns.add().value(av_name.getCompleteName()).font(FONT).column("name");
+
+ object_count_str = llformat("%d", object_count);
+ item_params.columns.add().value(object_count_str).font(FONT).column("count");
+ item_params.columns.add().value(LLDate((time_t)most_recent_time)).font(FONT).column("mostrecent").type("date");
+
+ self->mOwnerList->addNameItemRow(item_params);
+ LL_DEBUGS() << "object owner " << owner_id << " (" << (is_group_owned ? "group" : "agent")
+ << ") owns " << object_count << " objects." << LL_ENDL;
+ }
+
+ // check for no results
+ if (0 == self->mOwnerList->getItemCount())
+ {
+ self->mOwnerList->setCommentText(LLTrans::getString("NoneFound"));
+ }
+ else
+ {
+ self->mOwnerList->setEnabled(TRUE);
+ }
+
+ self->mBtnRefresh->setEnabled(true);
}
// static
void LLPanelLandObjects::onCommitList(LLUICtrl* ctrl, void* data)
{
- LLPanelLandObjects* self = (LLPanelLandObjects*)data;
-
- if (FALSE == self->mOwnerList->getCanSelect())
- {
- return;
- }
- LLScrollListItem *item = self->mOwnerList->getFirstSelected();
- if (item)
- {
- // Look up the selected name, for future dialog box use.
- const LLScrollListCell* cell;
- cell = item->getColumn(1);
- if (!cell)
- {
- return;
- }
- // Is this a group?
- self->mSelectedIsGroup = cell->getValue().asString() == OWNER_GROUP;
- cell = item->getColumn(2);
- self->mSelectedName = cell->getValue().asString();
- cell = item->getColumn(3);
- self->mSelectedCount = atoi(cell->getValue().asString().c_str());
-
- // Set the selection, and enable the return button.
- self->mSelectedOwners.clear();
- self->mSelectedOwners.insert(item->getUUID());
- self->mBtnReturnOwnerList->setEnabled(TRUE);
-
- // Highlight this user's objects
- clickShowCore(self, RT_LIST, &(self->mSelectedOwners));
- }
+ LLPanelLandObjects* self = (LLPanelLandObjects*)data;
+
+ if (FALSE == self->mOwnerList->getCanSelect())
+ {
+ return;
+ }
+ LLScrollListItem *item = self->mOwnerList->getFirstSelected();
+ if (item)
+ {
+ // Look up the selected name, for future dialog box use.
+ const LLScrollListCell* cell;
+ cell = item->getColumn(1);
+ if (!cell)
+ {
+ return;
+ }
+ // Is this a group?
+ self->mSelectedIsGroup = cell->getValue().asString() == OWNER_GROUP;
+ cell = item->getColumn(2);
+ self->mSelectedName = cell->getValue().asString();
+ cell = item->getColumn(3);
+ self->mSelectedCount = atoi(cell->getValue().asString().c_str());
+
+ // Set the selection, and enable the return button.
+ self->mSelectedOwners.clear();
+ self->mSelectedOwners.insert(item->getUUID());
+ self->mBtnReturnOwnerList->setEnabled(TRUE);
+
+ // Highlight this user's objects
+ clickShowCore(self, RT_LIST, &(self->mSelectedOwners));
+ }
}
// static
void LLPanelLandObjects::clickShowCore(LLPanelLandObjects* self, S32 return_type, uuid_list_t* list)
{
- LLParcel* parcel = self->mParcel->getParcel();
- if (!parcel) return;
+ LLParcel* parcel = self->mParcel->getParcel();
+ if (!parcel) return;
- send_parcel_select_objects(parcel->getLocalID(), return_type, list);
+ send_parcel_select_objects(parcel->getLocalID(), return_type, list);
}
// static
void LLPanelLandObjects::onClickShowOwnerObjects(void* userdata)
{
- clickShowCore((LLPanelLandObjects*)userdata, RT_OWNER);
+ clickShowCore((LLPanelLandObjects*)userdata, RT_OWNER);
}
// static
void LLPanelLandObjects::onClickShowGroupObjects(void* userdata)
{
- clickShowCore((LLPanelLandObjects*)userdata, (RT_GROUP));
+ clickShowCore((LLPanelLandObjects*)userdata, (RT_GROUP));
}
// static
void LLPanelLandObjects::onClickShowOtherObjects(void* userdata)
{
- clickShowCore((LLPanelLandObjects*)userdata, RT_OTHER);
+ clickShowCore((LLPanelLandObjects*)userdata, RT_OTHER);
}
// static
void LLPanelLandObjects::onClickReturnOwnerObjects(void* userdata)
{
- S32 owned = 0;
+ S32 owned = 0;
- LLPanelLandObjects* panelp = (LLPanelLandObjects*)userdata;
- LLParcel* parcel = panelp->mParcel->getParcel();
- if (!parcel) return;
+ LLPanelLandObjects* panelp = (LLPanelLandObjects*)userdata;
+ LLParcel* parcel = panelp->mParcel->getParcel();
+ if (!parcel) return;
- owned = parcel->getOwnerPrimCount();
+ owned = parcel->getOwnerPrimCount();
- send_parcel_select_objects(parcel->getLocalID(), RT_OWNER);
+ send_parcel_select_objects(parcel->getLocalID(), RT_OWNER);
- LLUUID owner_id = parcel->getOwnerID();
-
- LLSD args;
- args["N"] = llformat("%d",owned);
+ LLUUID owner_id = parcel->getOwnerID();
- if (owner_id == gAgent.getID())
- {
- LLNotificationsUtil::add("ReturnObjectsOwnedBySelf", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerObjects, panelp, _1, _2));
- }
- else
- {
- args["NAME"] = LLSLURL("agent", owner_id, "completename").getSLURLString();
- LLNotificationsUtil::add("ReturnObjectsOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerObjects, panelp, _1, _2));
- }
+ LLSD args;
+ args["N"] = llformat("%d",owned);
+
+ if (owner_id == gAgent.getID())
+ {
+ LLNotificationsUtil::add("ReturnObjectsOwnedBySelf", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerObjects, panelp, _1, _2));
+ }
+ else
+ {
+ args["NAME"] = LLSLURL("agent", owner_id, "completename").getSLURLString();
+ LLNotificationsUtil::add("ReturnObjectsOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerObjects, panelp, _1, _2));
+ }
}
// static
void LLPanelLandObjects::onClickReturnGroupObjects(void* userdata)
{
- LLPanelLandObjects* panelp = (LLPanelLandObjects*)userdata;
- LLParcel* parcel = panelp->mParcel->getParcel();
- if (!parcel) return;
+ LLPanelLandObjects* panelp = (LLPanelLandObjects*)userdata;
+ LLParcel* parcel = panelp->mParcel->getParcel();
+ if (!parcel) return;
- send_parcel_select_objects(parcel->getLocalID(), RT_GROUP);
+ send_parcel_select_objects(parcel->getLocalID(), RT_GROUP);
- std::string group_name;
- gCacheName->getGroupName(parcel->getGroupID(), group_name);
-
- LLSD args;
- args["NAME"] = group_name;
- args["N"] = llformat("%d", parcel->getGroupPrimCount());
+ std::string group_name;
+ gCacheName->getGroupName(parcel->getGroupID(), group_name);
- // create and show confirmation textbox
- LLNotificationsUtil::add("ReturnObjectsDeededToGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnGroupObjects, panelp, _1, _2));
+ LLSD args;
+ args["NAME"] = group_name;
+ args["N"] = llformat("%d", parcel->getGroupPrimCount());
+
+ // create and show confirmation textbox
+ LLNotificationsUtil::add("ReturnObjectsDeededToGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnGroupObjects, panelp, _1, _2));
}
// static
void LLPanelLandObjects::onClickReturnOtherObjects(void* userdata)
{
- S32 other = 0;
-
- LLPanelLandObjects* panelp = (LLPanelLandObjects*)userdata;
- LLParcel* parcel = panelp->mParcel->getParcel();
- if (!parcel) return;
-
- other = parcel->getOtherPrimCount();
-
- send_parcel_select_objects(parcel->getLocalID(), RT_OTHER);
-
- LLSD args;
- args["N"] = llformat("%d", other);
-
- if (parcel->getIsGroupOwned())
- {
- std::string group_name;
- gCacheName->getGroupName(parcel->getGroupID(), group_name);
- args["NAME"] = group_name;
-
- LLNotificationsUtil::add("ReturnObjectsNotOwnedByGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
- }
- else
- {
- LLUUID owner_id = parcel->getOwnerID();
-
- if (owner_id == gAgent.getID())
- {
- LLNotificationsUtil::add("ReturnObjectsNotOwnedBySelf", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
- }
- else
- {
- args["NAME"] = LLSLURL("agent", owner_id, "completename").getSLURLString();
- LLNotificationsUtil::add("ReturnObjectsNotOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
- }
- }
+ S32 other = 0;
+
+ LLPanelLandObjects* panelp = (LLPanelLandObjects*)userdata;
+ LLParcel* parcel = panelp->mParcel->getParcel();
+ if (!parcel) return;
+
+ other = parcel->getOtherPrimCount();
+
+ send_parcel_select_objects(parcel->getLocalID(), RT_OTHER);
+
+ LLSD args;
+ args["N"] = llformat("%d", other);
+
+ if (parcel->getIsGroupOwned())
+ {
+ std::string group_name;
+ gCacheName->getGroupName(parcel->getGroupID(), group_name);
+ args["NAME"] = group_name;
+
+ LLNotificationsUtil::add("ReturnObjectsNotOwnedByGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
+ }
+ else
+ {
+ LLUUID owner_id = parcel->getOwnerID();
+
+ if (owner_id == gAgent.getID())
+ {
+ LLNotificationsUtil::add("ReturnObjectsNotOwnedBySelf", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
+ }
+ else
+ {
+ args["NAME"] = LLSLURL("agent", owner_id, "completename").getSLURLString();
+ LLNotificationsUtil::add("ReturnObjectsNotOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
+ }
+ }
}
// static
void LLPanelLandObjects::onLostFocus(LLFocusableElement* caller, void* user_data)
{
- onCommitClean((LLUICtrl*)caller, user_data);
+ onCommitClean((LLUICtrl*)caller, user_data);
}
// static
void LLPanelLandObjects::onCommitClean(LLUICtrl *caller, void* user_data)
{
- LLPanelLandObjects *lop = (LLPanelLandObjects *)user_data;
- LLParcel* parcel = lop->mParcel->getParcel();
- if (parcel)
- {
- S32 return_time = atoi(lop->mCleanOtherObjectsTime->getText().c_str());
- // Only send return time if it has changed
- if (return_time != lop->mOtherTime)
- {
- lop->mOtherTime = return_time;
+ LLPanelLandObjects *lop = (LLPanelLandObjects *)user_data;
+ LLParcel* parcel = lop->mParcel->getParcel();
+ if (parcel)
+ {
+ S32 return_time = atoi(lop->mCleanOtherObjectsTime->getText().c_str());
+ // Only send return time if it has changed
+ if (return_time != lop->mOtherTime)
+ {
+ lop->mOtherTime = return_time;
- parcel->setCleanOtherTime(lop->mOtherTime);
- send_other_clean_time_message(parcel->getLocalID(), lop->mOtherTime);
- }
+ parcel->setCleanOtherTime(lop->mOtherTime);
+ send_other_clean_time_message(parcel->getLocalID(), lop->mOtherTime);
+ }
}
}
@@ -1909,122 +1909,122 @@ void LLPanelLandObjects::onCommitClean(LLUICtrl *caller, void* user_data)
//---------------------------------------------------------------------------
LLPanelLandOptions::LLPanelLandOptions(LLParcelSelectionHandle& parcel)
-: LLPanel(),
- mCheckEditObjects(NULL),
- mCheckEditGroupObjects(NULL),
- mCheckAllObjectEntry(NULL),
- mCheckGroupObjectEntry(NULL),
- mCheckSafe(NULL),
- mCheckFly(NULL),
- mCheckGroupScripts(NULL),
- mCheckOtherScripts(NULL),
- mCheckShowDirectory(NULL),
- mCategoryCombo(NULL),
- mLandingTypeCombo(NULL),
- mSnapshotCtrl(NULL),
- mLocationText(NULL),
- mSeeAvatarsText(NULL),
- mSetBtn(NULL),
- mClearBtn(NULL),
- mMatureCtrl(NULL),
- mPushRestrictionCtrl(NULL),
- mSeeAvatarsCtrl(NULL),
- mParcel(parcel)
+: LLPanel(),
+ mCheckEditObjects(NULL),
+ mCheckEditGroupObjects(NULL),
+ mCheckAllObjectEntry(NULL),
+ mCheckGroupObjectEntry(NULL),
+ mCheckSafe(NULL),
+ mCheckFly(NULL),
+ mCheckGroupScripts(NULL),
+ mCheckOtherScripts(NULL),
+ mCheckShowDirectory(NULL),
+ mCategoryCombo(NULL),
+ mLandingTypeCombo(NULL),
+ mSnapshotCtrl(NULL),
+ mLocationText(NULL),
+ mSeeAvatarsText(NULL),
+ mSetBtn(NULL),
+ mClearBtn(NULL),
+ mMatureCtrl(NULL),
+ mPushRestrictionCtrl(NULL),
+ mSeeAvatarsCtrl(NULL),
+ mParcel(parcel)
{
}
BOOL LLPanelLandOptions::postBuild()
{
- mCheckEditObjects = getChild<LLCheckBoxCtrl>( "edit objects check");
- childSetCommitCallback("edit objects check", onCommitAny, this);
-
- mCheckEditGroupObjects = getChild<LLCheckBoxCtrl>( "edit group objects check");
- childSetCommitCallback("edit group objects check", onCommitAny, this);
-
- mCheckAllObjectEntry = getChild<LLCheckBoxCtrl>( "all object entry check");
- childSetCommitCallback("all object entry check", onCommitAny, this);
-
- mCheckGroupObjectEntry = getChild<LLCheckBoxCtrl>( "group object entry check");
- childSetCommitCallback("group object entry check", onCommitAny, this);
-
- mCheckGroupScripts = getChild<LLCheckBoxCtrl>( "check group scripts");
- childSetCommitCallback("check group scripts", onCommitAny, this);
-
-
- mCheckFly = getChild<LLCheckBoxCtrl>( "check fly");
- childSetCommitCallback("check fly", onCommitAny, this);
-
-
- mCheckOtherScripts = getChild<LLCheckBoxCtrl>( "check other scripts");
- childSetCommitCallback("check other scripts", onCommitAny, this);
-
-
- mCheckSafe = getChild<LLCheckBoxCtrl>( "check safe");
- childSetCommitCallback("check safe", onCommitAny, this);
-
-
- mPushRestrictionCtrl = getChild<LLCheckBoxCtrl>( "PushRestrictCheck");
- childSetCommitCallback("PushRestrictCheck", onCommitAny, this);
-
- mSeeAvatarsCtrl = getChild<LLCheckBoxCtrl>( "SeeAvatarsCheck");
- childSetCommitCallback("SeeAvatarsCheck", onCommitAny, this);
-
- mSeeAvatarsText = getChild<LLTextBox>("allow_see_label");
- if (mSeeAvatarsText)
- {
- mSeeAvatarsText->setShowCursorHand(false);
- mSeeAvatarsText->setSoundFlags(LLView::MOUSE_UP);
- mSeeAvatarsText->setClickedCallback(boost::bind(&toggleSeeAvatars, this));
- }
-
- mCheckShowDirectory = getChild<LLCheckBoxCtrl>( "ShowDirectoryCheck");
- childSetCommitCallback("ShowDirectoryCheck", onCommitAny, this);
-
-
- mCategoryCombo = getChild<LLComboBox>( "land category");
- childSetCommitCallback("land category", onCommitAny, this);
-
-
- mMatureCtrl = getChild<LLCheckBoxCtrl>( "MatureCheck");
- childSetCommitCallback("MatureCheck", onCommitAny, this);
-
- if (gAgent.wantsPGOnly())
- {
- // Disable these buttons if they are PG (Teen) users
- mMatureCtrl->setVisible(FALSE);
- mMatureCtrl->setEnabled(FALSE);
- }
-
-
- mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
- if (mSnapshotCtrl)
- {
- mSnapshotCtrl->setCommitCallback( onCommitAny, this );
- mSnapshotCtrl->setAllowNoTexture ( TRUE );
- mSnapshotCtrl->setImmediateFilterPermMask(PERM_COPY | PERM_TRANSFER);
- mSnapshotCtrl->setDnDFilterPermMask(PERM_COPY | PERM_TRANSFER);
- }
- else
- {
- LL_WARNS() << "LLUICtrlFactory::getTexturePickerByName() returned NULL for 'snapshot_ctrl'" << LL_ENDL;
- }
-
-
- mLocationText = getChild<LLTextBox>("landing_point");
-
- mSetBtn = getChild<LLButton>("Set");
- mSetBtn->setClickedCallback(onClickSet, this);
-
-
- mClearBtn = getChild<LLButton>("Clear");
- mClearBtn->setClickedCallback(onClickClear, this);
-
-
- mLandingTypeCombo = getChild<LLComboBox>( "landing type");
- childSetCommitCallback("landing type", onCommitAny, this);
-
- return TRUE;
+ mCheckEditObjects = getChild<LLCheckBoxCtrl>( "edit objects check");
+ childSetCommitCallback("edit objects check", onCommitAny, this);
+
+ mCheckEditGroupObjects = getChild<LLCheckBoxCtrl>( "edit group objects check");
+ childSetCommitCallback("edit group objects check", onCommitAny, this);
+
+ mCheckAllObjectEntry = getChild<LLCheckBoxCtrl>( "all object entry check");
+ childSetCommitCallback("all object entry check", onCommitAny, this);
+
+ mCheckGroupObjectEntry = getChild<LLCheckBoxCtrl>( "group object entry check");
+ childSetCommitCallback("group object entry check", onCommitAny, this);
+
+ mCheckGroupScripts = getChild<LLCheckBoxCtrl>( "check group scripts");
+ childSetCommitCallback("check group scripts", onCommitAny, this);
+
+
+ mCheckFly = getChild<LLCheckBoxCtrl>( "check fly");
+ childSetCommitCallback("check fly", onCommitAny, this);
+
+
+ mCheckOtherScripts = getChild<LLCheckBoxCtrl>( "check other scripts");
+ childSetCommitCallback("check other scripts", onCommitAny, this);
+
+
+ mCheckSafe = getChild<LLCheckBoxCtrl>( "check safe");
+ childSetCommitCallback("check safe", onCommitAny, this);
+
+
+ mPushRestrictionCtrl = getChild<LLCheckBoxCtrl>( "PushRestrictCheck");
+ childSetCommitCallback("PushRestrictCheck", onCommitAny, this);
+
+ mSeeAvatarsCtrl = getChild<LLCheckBoxCtrl>( "SeeAvatarsCheck");
+ childSetCommitCallback("SeeAvatarsCheck", onCommitAny, this);
+
+ mSeeAvatarsText = getChild<LLTextBox>("allow_see_label");
+ if (mSeeAvatarsText)
+ {
+ mSeeAvatarsText->setShowCursorHand(false);
+ mSeeAvatarsText->setSoundFlags(LLView::MOUSE_UP);
+ mSeeAvatarsText->setClickedCallback(boost::bind(&toggleSeeAvatars, this));
+ }
+
+ mCheckShowDirectory = getChild<LLCheckBoxCtrl>( "ShowDirectoryCheck");
+ childSetCommitCallback("ShowDirectoryCheck", onCommitAny, this);
+
+
+ mCategoryCombo = getChild<LLComboBox>( "land category");
+ childSetCommitCallback("land category", onCommitAny, this);
+
+
+ mMatureCtrl = getChild<LLCheckBoxCtrl>( "MatureCheck");
+ childSetCommitCallback("MatureCheck", onCommitAny, this);
+
+ if (gAgent.wantsPGOnly())
+ {
+ // Disable these buttons if they are PG (Teen) users
+ mMatureCtrl->setVisible(FALSE);
+ mMatureCtrl->setEnabled(FALSE);
+ }
+
+
+ mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
+ if (mSnapshotCtrl)
+ {
+ mSnapshotCtrl->setCommitCallback( onCommitAny, this );
+ mSnapshotCtrl->setAllowNoTexture ( TRUE );
+ mSnapshotCtrl->setImmediateFilterPermMask(PERM_COPY | PERM_TRANSFER);
+ mSnapshotCtrl->setDnDFilterPermMask(PERM_COPY | PERM_TRANSFER);
+ }
+ else
+ {
+ LL_WARNS() << "LLUICtrlFactory::getTexturePickerByName() returned NULL for 'snapshot_ctrl'" << LL_ENDL;
+ }
+
+
+ mLocationText = getChild<LLTextBox>("landing_point");
+
+ mSetBtn = getChild<LLButton>("Set");
+ mSetBtn->setClickedCallback(onClickSet, this);
+
+
+ mClearBtn = getChild<LLButton>("Clear");
+ mClearBtn->setClickedCallback(onClickClear, this);
+
+
+ mLandingTypeCombo = getChild<LLComboBox>( "landing type");
+ childSetCommitCallback("landing type", onCommitAny, this);
+
+ return TRUE;
}
@@ -2036,462 +2036,462 @@ LLPanelLandOptions::~LLPanelLandOptions()
// virtual
void LLPanelLandOptions::refresh()
{
- refreshSearch();
+ refreshSearch();
+
+ LLParcel *parcel = mParcel->getParcel();
+ if (!parcel || gDisconnected)
+ {
+ mCheckEditObjects ->set(FALSE);
+ mCheckEditObjects ->setEnabled(FALSE);
+
+ mCheckEditGroupObjects ->set(FALSE);
+ mCheckEditGroupObjects ->setEnabled(FALSE);
+
+ mCheckAllObjectEntry ->set(FALSE);
+ mCheckAllObjectEntry ->setEnabled(FALSE);
+
+ mCheckGroupObjectEntry ->set(FALSE);
+ mCheckGroupObjectEntry ->setEnabled(FALSE);
- LLParcel *parcel = mParcel->getParcel();
- if (!parcel || gDisconnected)
- {
- mCheckEditObjects ->set(FALSE);
- mCheckEditObjects ->setEnabled(FALSE);
-
- mCheckEditGroupObjects ->set(FALSE);
- mCheckEditGroupObjects ->setEnabled(FALSE);
-
- mCheckAllObjectEntry ->set(FALSE);
- mCheckAllObjectEntry ->setEnabled(FALSE);
-
- mCheckGroupObjectEntry ->set(FALSE);
- mCheckGroupObjectEntry ->setEnabled(FALSE);
-
- mCheckSafe ->set(FALSE);
- mCheckSafe ->setEnabled(FALSE);
-
- mCheckFly ->set(FALSE);
- mCheckFly ->setEnabled(FALSE);
-
- mCheckGroupScripts ->set(FALSE);
- mCheckGroupScripts ->setEnabled(FALSE);
-
- mCheckOtherScripts ->set(FALSE);
- mCheckOtherScripts ->setEnabled(FALSE);
-
- mPushRestrictionCtrl->set(FALSE);
- mPushRestrictionCtrl->setEnabled(FALSE);
-
- mSeeAvatarsCtrl->set(TRUE);
- mSeeAvatarsCtrl->setEnabled(FALSE);
- mSeeAvatarsText->setEnabled(FALSE);
-
- mLandingTypeCombo->setCurrentByIndex(0);
- mLandingTypeCombo->setEnabled(FALSE);
-
- mSnapshotCtrl->setImageAssetID(LLUUID::null);
- mSnapshotCtrl->setEnabled(FALSE);
-
- mLocationText->setTextArg("[LANDING]", getString("landing_point_none"));
- mSetBtn->setEnabled(FALSE);
- mClearBtn->setEnabled(FALSE);
-
- mMatureCtrl->setEnabled(FALSE);
- }
- else
- {
- // something selected, hooray!
-
- // Display options
- BOOL can_change_options = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_OPTIONS);
- mCheckEditObjects ->set( parcel->getAllowModify() );
- mCheckEditObjects ->setEnabled( can_change_options );
-
- mCheckEditGroupObjects ->set( parcel->getAllowGroupModify() || parcel->getAllowModify());
- mCheckEditGroupObjects ->setEnabled( can_change_options && !parcel->getAllowModify() ); // If others edit is enabled, then this is explicitly enabled.
-
- mCheckAllObjectEntry ->set( parcel->getAllowAllObjectEntry() );
- mCheckAllObjectEntry ->setEnabled( can_change_options );
-
- mCheckGroupObjectEntry ->set( parcel->getAllowGroupObjectEntry() || parcel->getAllowAllObjectEntry());
- mCheckGroupObjectEntry ->setEnabled( can_change_options && !parcel->getAllowAllObjectEntry() );
-
- mCheckSafe ->set( !parcel->getAllowDamage() );
- mCheckSafe ->setEnabled( can_change_options );
-
- mCheckFly ->set( parcel->getAllowFly() );
- mCheckFly ->setEnabled( can_change_options );
-
- mCheckGroupScripts ->set( parcel->getAllowGroupScripts() || parcel->getAllowOtherScripts());
- mCheckGroupScripts ->setEnabled( can_change_options && !parcel->getAllowOtherScripts());
-
- mCheckOtherScripts ->set( parcel->getAllowOtherScripts() );
- mCheckOtherScripts ->setEnabled( can_change_options );
-
- mPushRestrictionCtrl->set( parcel->getRestrictPushObject() );
- if(parcel->getRegionPushOverride())
- {
- mPushRestrictionCtrl->setLabel(getString("push_restrict_region_text"));
- mPushRestrictionCtrl->setEnabled(false);
- mPushRestrictionCtrl->set(TRUE);
- }
- else
- {
- mPushRestrictionCtrl->setLabel(getString("push_restrict_text"));
- mPushRestrictionCtrl->setEnabled(can_change_options);
- }
-
- mSeeAvatarsCtrl->set(parcel->getSeeAVs());
- mSeeAvatarsCtrl->setEnabled(can_change_options && parcel->getHaveNewParcelLimitData());
- mSeeAvatarsText->setEnabled(can_change_options && parcel->getHaveNewParcelLimitData());
-
- BOOL can_change_landing_point = LLViewerParcelMgr::isParcelModifiableByAgent(parcel,
- GP_LAND_SET_LANDING_POINT);
- mLandingTypeCombo->setCurrentByIndex((S32)parcel->getLandingType());
- mLandingTypeCombo->setEnabled( can_change_landing_point );
-
- bool can_change_identity =
- LLViewerParcelMgr::isParcelModifiableByAgent(
- parcel, GP_LAND_CHANGE_IDENTITY);
- mSnapshotCtrl->setImageAssetID(parcel->getSnapshotID());
- mSnapshotCtrl->setEnabled( can_change_identity );
-
- // find out where we're looking and convert that to an angle in degrees on a regular compass (not the internal representation)
- LLVector3 user_look_at = parcel->getUserLookAt();
- U32 user_look_at_angle = ( (U32)( ( atan2(user_look_at[1], -user_look_at[0]) + F_PI * 2 ) * RAD_TO_DEG + 0.5) - 90) % 360;
-
- LLVector3 pos = parcel->getUserLocation();
- if (pos.isExactlyZero())
- {
- mLocationText->setTextArg("[LANDING]", getString("landing_point_none"));
- }
- else
- {
- mLocationText->setTextArg("[LANDING]",llformat("%d, %d, %d (%d\xC2\xB0)",
- ll_round(pos.mV[VX]),
- ll_round(pos.mV[VY]),
- ll_round(pos.mV[VZ]),
- user_look_at_angle));
- }
-
- mSetBtn->setEnabled( can_change_landing_point );
- mClearBtn->setEnabled( can_change_landing_point );
-
- if (gAgent.wantsPGOnly())
- {
- // Disable these buttons if they are PG (Teen) users
- mMatureCtrl->setVisible(FALSE);
- mMatureCtrl->setEnabled(FALSE);
- }
- else
- {
- // not teen so fill in the data for the maturity control
- mMatureCtrl->setVisible(TRUE);
- LLStyle::Params style;
- style.image(LLUI::getUIImage(gFloaterView->getParentFloater(this)->getString("maturity_icon_moderate")));
- LLCheckBoxWithTBAcess* fullaccess_mature_ctrl = (LLCheckBoxWithTBAcess*)mMatureCtrl;
- fullaccess_mature_ctrl->getTextBox()->setText(LLStringExplicit(""));
- fullaccess_mature_ctrl->getTextBox()->appendImageSegment(style);
- fullaccess_mature_ctrl->getTextBox()->appendText(getString("mature_check_mature"), false);
- fullaccess_mature_ctrl->setToolTip(getString("mature_check_mature_tooltip"));
- fullaccess_mature_ctrl->reshape(fullaccess_mature_ctrl->getRect().getWidth(), fullaccess_mature_ctrl->getRect().getHeight(), FALSE);
-
- // they can see the checkbox, but its disposition depends on the
- // state of the region
- LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if (regionp)
- {
- if (regionp->getSimAccess() == SIM_ACCESS_PG)
- {
- mMatureCtrl->setEnabled(FALSE);
- mMatureCtrl->set(FALSE);
- }
- else if (regionp->getSimAccess() == SIM_ACCESS_MATURE)
- {
- mMatureCtrl->setEnabled(can_change_identity);
- mMatureCtrl->set(parcel->getMaturePublish());
- }
- else if (regionp->getSimAccess() == SIM_ACCESS_ADULT)
- {
- mMatureCtrl->setEnabled(FALSE);
- mMatureCtrl->set(TRUE);
- mMatureCtrl->setLabel(getString("mature_check_adult"));
- mMatureCtrl->setToolTip(getString("mature_check_adult_tooltip"));
- }
- }
- }
- }
+ mCheckSafe ->set(FALSE);
+ mCheckSafe ->setEnabled(FALSE);
+
+ mCheckFly ->set(FALSE);
+ mCheckFly ->setEnabled(FALSE);
+
+ mCheckGroupScripts ->set(FALSE);
+ mCheckGroupScripts ->setEnabled(FALSE);
+
+ mCheckOtherScripts ->set(FALSE);
+ mCheckOtherScripts ->setEnabled(FALSE);
+
+ mPushRestrictionCtrl->set(FALSE);
+ mPushRestrictionCtrl->setEnabled(FALSE);
+
+ mSeeAvatarsCtrl->set(TRUE);
+ mSeeAvatarsCtrl->setEnabled(FALSE);
+ mSeeAvatarsText->setEnabled(FALSE);
+
+ mLandingTypeCombo->setCurrentByIndex(0);
+ mLandingTypeCombo->setEnabled(FALSE);
+
+ mSnapshotCtrl->setImageAssetID(LLUUID::null);
+ mSnapshotCtrl->setEnabled(FALSE);
+
+ mLocationText->setTextArg("[LANDING]", getString("landing_point_none"));
+ mSetBtn->setEnabled(FALSE);
+ mClearBtn->setEnabled(FALSE);
+
+ mMatureCtrl->setEnabled(FALSE);
+ }
+ else
+ {
+ // something selected, hooray!
+
+ // Display options
+ BOOL can_change_options = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_OPTIONS);
+ mCheckEditObjects ->set( parcel->getAllowModify() );
+ mCheckEditObjects ->setEnabled( can_change_options );
+
+ mCheckEditGroupObjects ->set( parcel->getAllowGroupModify() || parcel->getAllowModify());
+ mCheckEditGroupObjects ->setEnabled( can_change_options && !parcel->getAllowModify() ); // If others edit is enabled, then this is explicitly enabled.
+
+ mCheckAllObjectEntry ->set( parcel->getAllowAllObjectEntry() );
+ mCheckAllObjectEntry ->setEnabled( can_change_options );
+
+ mCheckGroupObjectEntry ->set( parcel->getAllowGroupObjectEntry() || parcel->getAllowAllObjectEntry());
+ mCheckGroupObjectEntry ->setEnabled( can_change_options && !parcel->getAllowAllObjectEntry() );
+
+ mCheckSafe ->set( !parcel->getAllowDamage() );
+ mCheckSafe ->setEnabled( can_change_options );
+
+ mCheckFly ->set( parcel->getAllowFly() );
+ mCheckFly ->setEnabled( can_change_options );
+
+ mCheckGroupScripts ->set( parcel->getAllowGroupScripts() || parcel->getAllowOtherScripts());
+ mCheckGroupScripts ->setEnabled( can_change_options && !parcel->getAllowOtherScripts());
+
+ mCheckOtherScripts ->set( parcel->getAllowOtherScripts() );
+ mCheckOtherScripts ->setEnabled( can_change_options );
+
+ mPushRestrictionCtrl->set( parcel->getRestrictPushObject() );
+ if(parcel->getRegionPushOverride())
+ {
+ mPushRestrictionCtrl->setLabel(getString("push_restrict_region_text"));
+ mPushRestrictionCtrl->setEnabled(false);
+ mPushRestrictionCtrl->set(TRUE);
+ }
+ else
+ {
+ mPushRestrictionCtrl->setLabel(getString("push_restrict_text"));
+ mPushRestrictionCtrl->setEnabled(can_change_options);
+ }
+
+ mSeeAvatarsCtrl->set(parcel->getSeeAVs());
+ mSeeAvatarsCtrl->setEnabled(can_change_options && parcel->getHaveNewParcelLimitData());
+ mSeeAvatarsText->setEnabled(can_change_options && parcel->getHaveNewParcelLimitData());
+
+ BOOL can_change_landing_point = LLViewerParcelMgr::isParcelModifiableByAgent(parcel,
+ GP_LAND_SET_LANDING_POINT);
+ mLandingTypeCombo->setCurrentByIndex((S32)parcel->getLandingType());
+ mLandingTypeCombo->setEnabled( can_change_landing_point );
+
+ bool can_change_identity =
+ LLViewerParcelMgr::isParcelModifiableByAgent(
+ parcel, GP_LAND_CHANGE_IDENTITY);
+ mSnapshotCtrl->setImageAssetID(parcel->getSnapshotID());
+ mSnapshotCtrl->setEnabled( can_change_identity );
+
+ // find out where we're looking and convert that to an angle in degrees on a regular compass (not the internal representation)
+ LLVector3 user_look_at = parcel->getUserLookAt();
+ U32 user_look_at_angle = ( (U32)( ( atan2(user_look_at[1], -user_look_at[0]) + F_PI * 2 ) * RAD_TO_DEG + 0.5) - 90) % 360;
+
+ LLVector3 pos = parcel->getUserLocation();
+ if (pos.isExactlyZero())
+ {
+ mLocationText->setTextArg("[LANDING]", getString("landing_point_none"));
+ }
+ else
+ {
+ mLocationText->setTextArg("[LANDING]",llformat("%d, %d, %d (%d\xC2\xB0)",
+ ll_round(pos.mV[VX]),
+ ll_round(pos.mV[VY]),
+ ll_round(pos.mV[VZ]),
+ user_look_at_angle));
+ }
+
+ mSetBtn->setEnabled( can_change_landing_point );
+ mClearBtn->setEnabled( can_change_landing_point );
+
+ if (gAgent.wantsPGOnly())
+ {
+ // Disable these buttons if they are PG (Teen) users
+ mMatureCtrl->setVisible(FALSE);
+ mMatureCtrl->setEnabled(FALSE);
+ }
+ else
+ {
+ // not teen so fill in the data for the maturity control
+ mMatureCtrl->setVisible(TRUE);
+ LLStyle::Params style;
+ style.image(LLUI::getUIImage(gFloaterView->getParentFloater(this)->getString("maturity_icon_moderate")));
+ LLCheckBoxWithTBAcess* fullaccess_mature_ctrl = (LLCheckBoxWithTBAcess*)mMatureCtrl;
+ fullaccess_mature_ctrl->getTextBox()->setText(LLStringExplicit(""));
+ fullaccess_mature_ctrl->getTextBox()->appendImageSegment(style);
+ fullaccess_mature_ctrl->getTextBox()->appendText(getString("mature_check_mature"), false);
+ fullaccess_mature_ctrl->setToolTip(getString("mature_check_mature_tooltip"));
+ fullaccess_mature_ctrl->reshape(fullaccess_mature_ctrl->getRect().getWidth(), fullaccess_mature_ctrl->getRect().getHeight(), FALSE);
+
+ // they can see the checkbox, but its disposition depends on the
+ // state of the region
+ LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (regionp)
+ {
+ if (regionp->getSimAccess() == SIM_ACCESS_PG)
+ {
+ mMatureCtrl->setEnabled(FALSE);
+ mMatureCtrl->set(FALSE);
+ }
+ else if (regionp->getSimAccess() == SIM_ACCESS_MATURE)
+ {
+ mMatureCtrl->setEnabled(can_change_identity);
+ mMatureCtrl->set(parcel->getMaturePublish());
+ }
+ else if (regionp->getSimAccess() == SIM_ACCESS_ADULT)
+ {
+ mMatureCtrl->setEnabled(FALSE);
+ mMatureCtrl->set(TRUE);
+ mMatureCtrl->setLabel(getString("mature_check_adult"));
+ mMatureCtrl->setToolTip(getString("mature_check_adult_tooltip"));
+ }
+ }
+ }
+ }
}
// virtual
void LLPanelLandOptions::draw()
{
- LLPanel::draw();
+ LLPanel::draw();
}
// private
void LLPanelLandOptions::refreshSearch()
{
- LLParcel *parcel = mParcel->getParcel();
- if (!parcel || gDisconnected)
- {
- mCheckShowDirectory->set(FALSE);
- mCheckShowDirectory->setEnabled(FALSE);
-
- const std::string& none_string = LLParcel::getCategoryString(LLParcel::C_NONE);
- mCategoryCombo->setValue(none_string);
- mCategoryCombo->setEnabled(FALSE);
- return;
- }
-
- LLViewerRegion* region =
- LLViewerParcelMgr::getInstance()->getSelectionRegion();
-
- bool can_change =
- LLViewerParcelMgr::isParcelModifiableByAgent(
- parcel, GP_LAND_FIND_PLACES)
- && region
- && !(region->getRegionFlag(REGION_FLAGS_BLOCK_PARCEL_SEARCH));
-
- BOOL show_directory = parcel->getParcelFlag(PF_SHOW_DIRECTORY);
- mCheckShowDirectory->set(show_directory);
-
- // Set by string in case the order in UI doesn't match the order by index.
- LLParcel::ECategory cat = parcel->getCategory();
- const std::string& category_string = LLParcel::getCategoryString(cat);
- mCategoryCombo->setValue(category_string);
-
- std::string tooltip;
- bool enable_show_directory = false;
- // Parcels <= 128 square meters cannot be listed in search, in an
- // effort to reduce search spam from small parcels. See also
- // the search crawler "grid-crawl.py" in secondlife.com/doc/app/search/ JC
- const S32 MIN_PARCEL_AREA_FOR_SEARCH = 128;
- bool large_enough = parcel->getArea() >= MIN_PARCEL_AREA_FOR_SEARCH;
- if (large_enough)
- {
- if (can_change)
- {
- tooltip = getString("search_enabled_tooltip");
- enable_show_directory = true;
- }
- else
- {
- tooltip = getString("search_disabled_permissions_tooltip");
- enable_show_directory = false;
- }
- }
- else
- {
- // not large enough to include in search
- if (can_change)
- {
- if (show_directory)
- {
- // parcels that are too small, but are still in search for
- // legacy reasons, need to have the check box enabled so
- // the owner can delist the parcel. JC
- tooltip = getString("search_enabled_tooltip");
- enable_show_directory = true;
- }
- else
- {
- tooltip = getString("search_disabled_small_tooltip");
- enable_show_directory = false;
- }
- }
- else
- {
- // both too small and don't have permission, so just
- // show the permissions as the reason (which is probably
- // the more common case) JC
- tooltip = getString("search_disabled_permissions_tooltip");
- enable_show_directory = false;
- }
- }
- mCheckShowDirectory->setToolTip(tooltip);
- mCategoryCombo->setToolTip(tooltip);
- mCheckShowDirectory->setEnabled(enable_show_directory);
- mCategoryCombo->setEnabled(enable_show_directory);
+ LLParcel *parcel = mParcel->getParcel();
+ if (!parcel || gDisconnected)
+ {
+ mCheckShowDirectory->set(FALSE);
+ mCheckShowDirectory->setEnabled(FALSE);
+
+ const std::string& none_string = LLParcel::getCategoryString(LLParcel::C_NONE);
+ mCategoryCombo->setValue(none_string);
+ mCategoryCombo->setEnabled(FALSE);
+ return;
+ }
+
+ LLViewerRegion* region =
+ LLViewerParcelMgr::getInstance()->getSelectionRegion();
+
+ bool can_change =
+ LLViewerParcelMgr::isParcelModifiableByAgent(
+ parcel, GP_LAND_FIND_PLACES)
+ && region
+ && !(region->getRegionFlag(REGION_FLAGS_BLOCK_PARCEL_SEARCH));
+
+ BOOL show_directory = parcel->getParcelFlag(PF_SHOW_DIRECTORY);
+ mCheckShowDirectory->set(show_directory);
+
+ // Set by string in case the order in UI doesn't match the order by index.
+ LLParcel::ECategory cat = parcel->getCategory();
+ const std::string& category_string = LLParcel::getCategoryString(cat);
+ mCategoryCombo->setValue(category_string);
+
+ std::string tooltip;
+ bool enable_show_directory = false;
+ // Parcels <= 128 square meters cannot be listed in search, in an
+ // effort to reduce search spam from small parcels. See also
+ // the search crawler "grid-crawl.py" in secondlife.com/doc/app/search/ JC
+ const S32 MIN_PARCEL_AREA_FOR_SEARCH = 128;
+ bool large_enough = parcel->getArea() >= MIN_PARCEL_AREA_FOR_SEARCH;
+ if (large_enough)
+ {
+ if (can_change)
+ {
+ tooltip = getString("search_enabled_tooltip");
+ enable_show_directory = true;
+ }
+ else
+ {
+ tooltip = getString("search_disabled_permissions_tooltip");
+ enable_show_directory = false;
+ }
+ }
+ else
+ {
+ // not large enough to include in search
+ if (can_change)
+ {
+ if (show_directory)
+ {
+ // parcels that are too small, but are still in search for
+ // legacy reasons, need to have the check box enabled so
+ // the owner can delist the parcel. JC
+ tooltip = getString("search_enabled_tooltip");
+ enable_show_directory = true;
+ }
+ else
+ {
+ tooltip = getString("search_disabled_small_tooltip");
+ enable_show_directory = false;
+ }
+ }
+ else
+ {
+ // both too small and don't have permission, so just
+ // show the permissions as the reason (which is probably
+ // the more common case) JC
+ tooltip = getString("search_disabled_permissions_tooltip");
+ enable_show_directory = false;
+ }
+ }
+ mCheckShowDirectory->setToolTip(tooltip);
+ mCategoryCombo->setToolTip(tooltip);
+ mCheckShowDirectory->setEnabled(enable_show_directory);
+ mCategoryCombo->setEnabled(enable_show_directory);
}
// static
void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
{
- LLPanelLandOptions *self = (LLPanelLandOptions *)userdata;
-
- LLParcel* parcel = self->mParcel->getParcel();
- if (!parcel)
- {
- return;
- }
-
- // Extract data from UI
- BOOL create_objects = self->mCheckEditObjects->get();
- BOOL create_group_objects = self->mCheckEditGroupObjects->get() || self->mCheckEditObjects->get();
- BOOL all_object_entry = self->mCheckAllObjectEntry->get();
- BOOL group_object_entry = self->mCheckGroupObjectEntry->get() || self->mCheckAllObjectEntry->get();
- BOOL allow_terraform = false; // removed from UI so always off now - self->mCheckEditLand->get();
- BOOL allow_damage = !self->mCheckSafe->get();
- BOOL allow_fly = self->mCheckFly->get();
- BOOL allow_landmark = TRUE; // cannot restrict landmark creation
- BOOL allow_other_scripts = self->mCheckOtherScripts->get();
- BOOL allow_group_scripts = self->mCheckGroupScripts->get() || allow_other_scripts;
- BOOL allow_publish = FALSE;
- BOOL mature_publish = self->mMatureCtrl->get();
- BOOL push_restriction = self->mPushRestrictionCtrl->get();
- BOOL see_avs = self->mSeeAvatarsCtrl->get();
- BOOL show_directory = self->mCheckShowDirectory->get();
- // we have to get the index from a lookup, not from the position in the dropdown!
- S32 category_index = LLParcel::getCategoryFromString(self->mCategoryCombo->getSelectedValue());
- S32 landing_type_index = self->mLandingTypeCombo->getCurrentIndex();
- LLUUID snapshot_id = self->mSnapshotCtrl->getImageAssetID();
- LLViewerRegion* region;
- region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
-
- if (region && region->getAllowDamage())
- { // Damage is allowed on the region - server will always allow scripts
- if ( (!allow_other_scripts && parcel->getParcelFlag(PF_ALLOW_OTHER_SCRIPTS)) ||
- (!allow_group_scripts && parcel->getParcelFlag(PF_ALLOW_GROUP_SCRIPTS)) )
- { // Don't allow turning off "Run Scripts" if damage is allowed in the region
- self->mCheckOtherScripts->set(parcel->getParcelFlag(PF_ALLOW_OTHER_SCRIPTS)); // Restore UI to actual settings
- self->mCheckGroupScripts->set(parcel->getParcelFlag(PF_ALLOW_GROUP_SCRIPTS));
- LLNotificationsUtil::add("UnableToDisableOutsideScripts");
- return;
- }
- }
-
- // Push data into current parcel
- parcel->setParcelFlag(PF_CREATE_OBJECTS, create_objects);
- parcel->setParcelFlag(PF_CREATE_GROUP_OBJECTS, create_group_objects);
- parcel->setParcelFlag(PF_ALLOW_ALL_OBJECT_ENTRY, all_object_entry);
- parcel->setParcelFlag(PF_ALLOW_GROUP_OBJECT_ENTRY, group_object_entry);
- parcel->setParcelFlag(PF_ALLOW_TERRAFORM, allow_terraform);
- parcel->setParcelFlag(PF_ALLOW_DAMAGE, allow_damage);
- parcel->setParcelFlag(PF_ALLOW_FLY, allow_fly);
- parcel->setParcelFlag(PF_ALLOW_LANDMARK, allow_landmark);
- parcel->setParcelFlag(PF_ALLOW_GROUP_SCRIPTS, allow_group_scripts);
- parcel->setParcelFlag(PF_ALLOW_OTHER_SCRIPTS, allow_other_scripts);
- parcel->setParcelFlag(PF_SHOW_DIRECTORY, show_directory);
- parcel->setParcelFlag(PF_ALLOW_PUBLISH, allow_publish);
- parcel->setParcelFlag(PF_MATURE_PUBLISH, mature_publish);
- parcel->setParcelFlag(PF_RESTRICT_PUSHOBJECT, push_restriction);
- parcel->setCategory((LLParcel::ECategory)category_index);
- parcel->setLandingType((LLParcel::ELandingType)landing_type_index);
- parcel->setSnapshotID(snapshot_id);
- parcel->setSeeAVs(see_avs);
-
- // Send current parcel data upstream to server
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
-
- // Might have changed properties, so let's redraw!
- self->refresh();
+ LLPanelLandOptions *self = (LLPanelLandOptions *)userdata;
+
+ LLParcel* parcel = self->mParcel->getParcel();
+ if (!parcel)
+ {
+ return;
+ }
+
+ // Extract data from UI
+ BOOL create_objects = self->mCheckEditObjects->get();
+ BOOL create_group_objects = self->mCheckEditGroupObjects->get() || self->mCheckEditObjects->get();
+ BOOL all_object_entry = self->mCheckAllObjectEntry->get();
+ BOOL group_object_entry = self->mCheckGroupObjectEntry->get() || self->mCheckAllObjectEntry->get();
+ BOOL allow_terraform = false; // removed from UI so always off now - self->mCheckEditLand->get();
+ BOOL allow_damage = !self->mCheckSafe->get();
+ BOOL allow_fly = self->mCheckFly->get();
+ BOOL allow_landmark = TRUE; // cannot restrict landmark creation
+ BOOL allow_other_scripts = self->mCheckOtherScripts->get();
+ BOOL allow_group_scripts = self->mCheckGroupScripts->get() || allow_other_scripts;
+ BOOL allow_publish = FALSE;
+ BOOL mature_publish = self->mMatureCtrl->get();
+ BOOL push_restriction = self->mPushRestrictionCtrl->get();
+ BOOL see_avs = self->mSeeAvatarsCtrl->get();
+ BOOL show_directory = self->mCheckShowDirectory->get();
+ // we have to get the index from a lookup, not from the position in the dropdown!
+ S32 category_index = LLParcel::getCategoryFromString(self->mCategoryCombo->getSelectedValue());
+ S32 landing_type_index = self->mLandingTypeCombo->getCurrentIndex();
+ LLUUID snapshot_id = self->mSnapshotCtrl->getImageAssetID();
+ LLViewerRegion* region;
+ region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+
+ if (region && region->getAllowDamage())
+ { // Damage is allowed on the region - server will always allow scripts
+ if ( (!allow_other_scripts && parcel->getParcelFlag(PF_ALLOW_OTHER_SCRIPTS)) ||
+ (!allow_group_scripts && parcel->getParcelFlag(PF_ALLOW_GROUP_SCRIPTS)) )
+ { // Don't allow turning off "Run Scripts" if damage is allowed in the region
+ self->mCheckOtherScripts->set(parcel->getParcelFlag(PF_ALLOW_OTHER_SCRIPTS)); // Restore UI to actual settings
+ self->mCheckGroupScripts->set(parcel->getParcelFlag(PF_ALLOW_GROUP_SCRIPTS));
+ LLNotificationsUtil::add("UnableToDisableOutsideScripts");
+ return;
+ }
+ }
+
+ // Push data into current parcel
+ parcel->setParcelFlag(PF_CREATE_OBJECTS, create_objects);
+ parcel->setParcelFlag(PF_CREATE_GROUP_OBJECTS, create_group_objects);
+ parcel->setParcelFlag(PF_ALLOW_ALL_OBJECT_ENTRY, all_object_entry);
+ parcel->setParcelFlag(PF_ALLOW_GROUP_OBJECT_ENTRY, group_object_entry);
+ parcel->setParcelFlag(PF_ALLOW_TERRAFORM, allow_terraform);
+ parcel->setParcelFlag(PF_ALLOW_DAMAGE, allow_damage);
+ parcel->setParcelFlag(PF_ALLOW_FLY, allow_fly);
+ parcel->setParcelFlag(PF_ALLOW_LANDMARK, allow_landmark);
+ parcel->setParcelFlag(PF_ALLOW_GROUP_SCRIPTS, allow_group_scripts);
+ parcel->setParcelFlag(PF_ALLOW_OTHER_SCRIPTS, allow_other_scripts);
+ parcel->setParcelFlag(PF_SHOW_DIRECTORY, show_directory);
+ parcel->setParcelFlag(PF_ALLOW_PUBLISH, allow_publish);
+ parcel->setParcelFlag(PF_MATURE_PUBLISH, mature_publish);
+ parcel->setParcelFlag(PF_RESTRICT_PUSHOBJECT, push_restriction);
+ parcel->setCategory((LLParcel::ECategory)category_index);
+ parcel->setLandingType((LLParcel::ELandingType)landing_type_index);
+ parcel->setSnapshotID(snapshot_id);
+ parcel->setSeeAVs(see_avs);
+
+ // Send current parcel data upstream to server
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
+
+ // Might have changed properties, so let's redraw!
+ self->refresh();
}
// static
void LLPanelLandOptions::onClickSet(void* userdata)
{
- LLPanelLandOptions* self = (LLPanelLandOptions*)userdata;
+ LLPanelLandOptions* self = (LLPanelLandOptions*)userdata;
- LLParcel* selected_parcel = self->mParcel->getParcel();
- if (!selected_parcel) return;
+ LLParcel* selected_parcel = self->mParcel->getParcel();
+ if (!selected_parcel) return;
- LLParcel* agent_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
- if (!agent_parcel) return;
+ LLParcel* agent_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+ if (!agent_parcel) return;
- if (agent_parcel->getLocalID() != selected_parcel->getLocalID())
- {
- LLNotificationsUtil::add("MustBeInParcel");
- return;
- }
+ if (agent_parcel->getLocalID() != selected_parcel->getLocalID())
+ {
+ LLNotificationsUtil::add("MustBeInParcel");
+ return;
+ }
- LLVector3 pos_region = gAgent.getPositionAgent();
- selected_parcel->setUserLocation(pos_region);
- selected_parcel->setUserLookAt(gAgent.getFrameAgent().getAtAxis());
+ LLVector3 pos_region = gAgent.getPositionAgent();
+ selected_parcel->setUserLocation(pos_region);
+ selected_parcel->setUserLookAt(gAgent.getFrameAgent().getAtAxis());
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(selected_parcel);
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(selected_parcel);
- self->refresh();
+ self->refresh();
}
void LLPanelLandOptions::onClickClear(void* userdata)
{
- LLPanelLandOptions* self = (LLPanelLandOptions*)userdata;
+ LLPanelLandOptions* self = (LLPanelLandOptions*)userdata;
- LLParcel* selected_parcel = self->mParcel->getParcel();
- if (!selected_parcel) return;
+ LLParcel* selected_parcel = self->mParcel->getParcel();
+ if (!selected_parcel) return;
- // yes, this magic number of 0,0,0 means that it is clear
- LLVector3 zero_vec(0.f, 0.f, 0.f);
- selected_parcel->setUserLocation(zero_vec);
- selected_parcel->setUserLookAt(zero_vec);
+ // yes, this magic number of 0,0,0 means that it is clear
+ LLVector3 zero_vec(0.f, 0.f, 0.f);
+ selected_parcel->setUserLocation(zero_vec);
+ selected_parcel->setUserLookAt(zero_vec);
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(selected_parcel);
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate(selected_parcel);
- self->refresh();
+ self->refresh();
}
void LLPanelLandOptions::toggleSeeAvatars(void* userdata)
{
- LLPanelLandOptions* self = (LLPanelLandOptions*)userdata;
- if (self)
- {
- self->getChild<LLCheckBoxCtrl>("SeeAvatarsCheck")->toggle();
- self->getChild<LLCheckBoxCtrl>("SeeAvatarsCheck")->setBtnFocus();
- self->onCommitAny(NULL, userdata);
- }
+ LLPanelLandOptions* self = (LLPanelLandOptions*)userdata;
+ if (self)
+ {
+ self->getChild<LLCheckBoxCtrl>("SeeAvatarsCheck")->toggle();
+ self->getChild<LLCheckBoxCtrl>("SeeAvatarsCheck")->setBtnFocus();
+ self->onCommitAny(NULL, userdata);
+ }
}
//---------------------------------------------------------------------------
// LLPanelLandAccess
//---------------------------------------------------------------------------
LLPanelLandAccess::LLPanelLandAccess(LLParcelSelectionHandle& parcel)
- : LLPanel(),
- mParcel(parcel)
+ : LLPanel(),
+ mParcel(parcel)
{
}
BOOL LLPanelLandAccess::postBuild()
{
- childSetCommitCallback("public_access", onCommitPublicAccess, this);
- childSetCommitCallback("limit_payment", onCommitAny, this);
- childSetCommitCallback("limit_age_verified", onCommitAny, this);
- childSetCommitCallback("GroupCheck", onCommitGroupCheck, this);
- childSetCommitCallback("PassCheck", onCommitAny, this);
- childSetCommitCallback("pass_combo", onCommitAny, this);
- childSetCommitCallback("PriceSpin", onCommitAny, this);
- childSetCommitCallback("HoursSpin", onCommitAny, this);
-
- childSetAction("add_allowed", boost::bind(&LLPanelLandAccess::onClickAddAccess, this));
- childSetAction("remove_allowed", onClickRemoveAccess, this);
- childSetAction("add_banned", boost::bind(&LLPanelLandAccess::onClickAddBanned, this));
- childSetAction("remove_banned", onClickRemoveBanned, this);
-
- mListAccess = getChild<LLNameListCtrl>("AccessList");
- if (mListAccess)
- {
- mListAccess->sortByColumnIndex(0, TRUE); // ascending
- mListAccess->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
- }
-
- mListBanned = getChild<LLNameListCtrl>("BannedList");
- if (mListBanned)
- {
- mListBanned->sortByColumnIndex(0, TRUE); // ascending
- mListBanned->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
- mListBanned->setAlternateSort();
- }
-
- return TRUE;
+ childSetCommitCallback("public_access", onCommitPublicAccess, this);
+ childSetCommitCallback("limit_payment", onCommitAny, this);
+ childSetCommitCallback("limit_age_verified", onCommitAny, this);
+ childSetCommitCallback("GroupCheck", onCommitGroupCheck, this);
+ childSetCommitCallback("PassCheck", onCommitAny, this);
+ childSetCommitCallback("pass_combo", onCommitAny, this);
+ childSetCommitCallback("PriceSpin", onCommitAny, this);
+ childSetCommitCallback("HoursSpin", onCommitAny, this);
+
+ childSetAction("add_allowed", boost::bind(&LLPanelLandAccess::onClickAddAccess, this));
+ childSetAction("remove_allowed", onClickRemoveAccess, this);
+ childSetAction("add_banned", boost::bind(&LLPanelLandAccess::onClickAddBanned, this));
+ childSetAction("remove_banned", onClickRemoveBanned, this);
+
+ mListAccess = getChild<LLNameListCtrl>("AccessList");
+ if (mListAccess)
+ {
+ mListAccess->sortByColumnIndex(0, TRUE); // ascending
+ mListAccess->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
+ }
+
+ mListBanned = getChild<LLNameListCtrl>("BannedList");
+ if (mListBanned)
+ {
+ mListBanned->sortByColumnIndex(0, TRUE); // ascending
+ mListBanned->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
+ mListBanned->setAlternateSort();
+ }
+
+ return TRUE;
}
LLPanelLandAccess::~LLPanelLandAccess()
-{
+{
}
void LLPanelLandAccess::refresh()
{
- LLFloater* parent_floater = gFloaterView->getParentFloater(this);
- LLParcel *parcel = mParcel->getParcel();
-
- // Display options
- if (parcel && !gDisconnected)
- {
- BOOL use_access_list = parcel->getParcelFlag(PF_USE_ACCESS_LIST);
- BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
- BOOL public_access = !use_access_list;
-
+ LLFloater* parent_floater = gFloaterView->getParentFloater(this);
+ LLParcel *parcel = mParcel->getParcel();
+
+ // Display options
+ if (parcel && !gDisconnected)
+ {
+ BOOL use_access_list = parcel->getParcelFlag(PF_USE_ACCESS_LIST);
+ BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
+ BOOL public_access = !use_access_list;
+
if (parcel->getRegionAllowAccessOverride())
{
getChild<LLUICtrl>("public_access")->setValue(public_access);
@@ -2502,463 +2502,463 @@ void LLPanelLandAccess::refresh()
getChild<LLUICtrl>("public_access")->setValue(TRUE);
getChild<LLUICtrl>("GroupCheck")->setValue(FALSE);
}
- std::string group_name;
- gCacheName->getGroupName(parcel->getGroupID(), group_name);
- getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name );
-
- // Allow list
- if (mListAccess)
- {
- // Clear the sort order so we don't re-sort on every add.
- mListAccess->clearSortOrder();
- mListAccess->deleteAllItems();
- S32 count = parcel->mAccessList.size();
- getChild<LLUICtrl>("AllowedText")->setTextArg("[COUNT]", llformat("%d",count));
- getChild<LLUICtrl>("AllowedText")->setTextArg("[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST));
-
- getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));
- getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST));
-
- for (LLAccessEntry::map::const_iterator cit = parcel->mAccessList.begin();
- cit != parcel->mAccessList.end(); ++cit)
- {
- const LLAccessEntry& entry = (*cit).second;
- std::string prefix;
- if (entry.mTime != 0)
- {
- LLStringUtil::format_map_t args;
- S32 now = time(NULL);
- S32 seconds = entry.mTime - now;
- if (seconds < 0) seconds = 0;
- prefix.assign(" (");
- if (seconds >= 120)
- {
- args["[MINUTES]"] = llformat("%d", (seconds/60));
- std::string buf = parent_floater->getString ("Minutes", args);
- prefix.append(buf);
- }
- else if (seconds >= 60)
- {
- prefix.append("1 " + parent_floater->getString("Minute"));
- }
- else
- {
- args["[SECONDS]"] = llformat("%d", seconds);
- std::string buf = parent_floater->getString ("Seconds", args);
- prefix.append(buf);
- }
- prefix.append(" " + parent_floater->getString("Remaining") + ") ");
- }
- mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, "", prefix);
- }
- mListAccess->sortByName(TRUE);
- }
-
- // Ban List
- if(mListBanned)
- {
- // Clear the sort order so we don't re-sort on every add.
- mListBanned->clearSortOrder();
- mListBanned->deleteAllItems();
- S32 count = parcel->mBanList.size();
- getChild<LLUICtrl>("BanCheck")->setTextArg("[COUNT]", llformat("%d",count));
- getChild<LLUICtrl>("BanCheck")->setTextArg("[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST));
-
- getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));
- getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST));
-
- for (LLAccessEntry::map::const_iterator cit = parcel->mBanList.begin();
- cit != parcel->mBanList.end(); ++cit)
- {
- const LLAccessEntry& entry = (*cit).second;
- std::string duration;
- S32 seconds = -1;
- if (entry.mTime != 0)
- {
- LLStringUtil::format_map_t args;
- S32 now = time(NULL);
- seconds = entry.mTime - now;
- if (seconds < 0) seconds = 0;
-
- if (seconds >= 7200)
- {
- args["[HOURS]"] = llformat("%d", (seconds / 3600));
- duration = parent_floater->getString("Hours", args);
- }
- else if (seconds >= 3600)
- {
- duration = "1 " + parent_floater->getString("Hour");
- }
- else if (seconds >= 120)
- {
- args["[MINUTES]"] = llformat("%d", (seconds / 60));
- duration = parent_floater->getString("Minutes", args);
- }
- else if (seconds >= 60)
- {
- duration = "1 " + parent_floater->getString("Minute");
- }
- else
- {
- args["[SECONDS]"] = llformat("%d", seconds);
- duration = parent_floater->getString("Seconds", args);
- }
- }
- else
- {
- duration = parent_floater->getString("Always");
- }
- LLSD item;
- item["id"] = entry.mID;
- LLSD& columns = item["columns"];
- columns[0]["column"] = "name"; // to be populated later
- columns[1]["column"] = "duration";
- columns[1]["value"] = duration;
- columns[1]["alt_value"] = entry.mTime != 0 ? std::to_string(seconds) : "Always";
- mListBanned->addElement(item);
- }
- mListBanned->sortByName(TRUE);
- }
-
- if(parcel->getRegionDenyAnonymousOverride())
- {
- getChild<LLUICtrl>("limit_payment")->setValue(TRUE);
- getChild<LLUICtrl>("limit_payment")->setLabelArg("[ESTATE_PAYMENT_LIMIT]", getString("access_estate_defined") );
- }
- else
- {
- getChild<LLUICtrl>("limit_payment")->setValue((parcel->getParcelFlag(PF_DENY_ANONYMOUS)));
- getChild<LLUICtrl>("limit_payment")->setLabelArg("[ESTATE_PAYMENT_LIMIT]", std::string() );
- }
- if(parcel->getRegionDenyAgeUnverifiedOverride())
- {
- getChild<LLUICtrl>("limit_age_verified")->setValue(TRUE);
- getChild<LLUICtrl>("limit_age_verified")->setLabelArg("[ESTATE_AGE_LIMIT]", getString("access_estate_defined") );
- }
- else
- {
- getChild<LLUICtrl>("limit_age_verified")->setValue((parcel->getParcelFlag(PF_DENY_AGEUNVERIFIED)));
- getChild<LLUICtrl>("limit_age_verified")->setLabelArg("[ESTATE_AGE_LIMIT]", std::string() );
- }
-
- BOOL use_pass = parcel->getParcelFlag(PF_USE_PASS_LIST);
- getChild<LLUICtrl>("PassCheck")->setValue(use_pass);
- LLCtrlSelectionInterface* passcombo = childGetSelectionInterface("pass_combo");
- if (passcombo)
- {
- if (public_access || !use_pass)
- {
- passcombo->selectByValue("anyone");
- }
- }
-
- S32 pass_price = parcel->getPassPrice();
- getChild<LLUICtrl>("PriceSpin")->setValue((F32)pass_price );
-
- F32 pass_hours = parcel->getPassHours();
- getChild<LLUICtrl>("HoursSpin")->setValue(pass_hours );
- }
- else
- {
- getChild<LLUICtrl>("public_access")->setValue(FALSE);
- getChild<LLUICtrl>("limit_payment")->setValue(FALSE);
- getChild<LLUICtrl>("limit_age_verified")->setValue(FALSE);
- getChild<LLUICtrl>("GroupCheck")->setValue(FALSE);
- getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", LLStringUtil::null );
- getChild<LLUICtrl>("PassCheck")->setValue(FALSE);
- getChild<LLUICtrl>("PriceSpin")->setValue((F32)PARCEL_PASS_PRICE_DEFAULT);
- getChild<LLUICtrl>("HoursSpin")->setValue(PARCEL_PASS_HOURS_DEFAULT );
- getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",0));
- getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",0));
- getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",0));
- getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",0));
- }
+ std::string group_name;
+ gCacheName->getGroupName(parcel->getGroupID(), group_name);
+ getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name );
+
+ // Allow list
+ if (mListAccess)
+ {
+ // Clear the sort order so we don't re-sort on every add.
+ mListAccess->clearSortOrder();
+ mListAccess->deleteAllItems();
+ S32 count = parcel->mAccessList.size();
+ getChild<LLUICtrl>("AllowedText")->setTextArg("[COUNT]", llformat("%d",count));
+ getChild<LLUICtrl>("AllowedText")->setTextArg("[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST));
+
+ getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));
+ getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST));
+
+ for (LLAccessEntry::map::const_iterator cit = parcel->mAccessList.begin();
+ cit != parcel->mAccessList.end(); ++cit)
+ {
+ const LLAccessEntry& entry = (*cit).second;
+ std::string prefix;
+ if (entry.mTime != 0)
+ {
+ LLStringUtil::format_map_t args;
+ S32 now = time(NULL);
+ S32 seconds = entry.mTime - now;
+ if (seconds < 0) seconds = 0;
+ prefix.assign(" (");
+ if (seconds >= 120)
+ {
+ args["[MINUTES]"] = llformat("%d", (seconds/60));
+ std::string buf = parent_floater->getString ("Minutes", args);
+ prefix.append(buf);
+ }
+ else if (seconds >= 60)
+ {
+ prefix.append("1 " + parent_floater->getString("Minute"));
+ }
+ else
+ {
+ args["[SECONDS]"] = llformat("%d", seconds);
+ std::string buf = parent_floater->getString ("Seconds", args);
+ prefix.append(buf);
+ }
+ prefix.append(" " + parent_floater->getString("Remaining") + ") ");
+ }
+ mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, "", prefix);
+ }
+ mListAccess->sortByName(TRUE);
+ }
+
+ // Ban List
+ if(mListBanned)
+ {
+ // Clear the sort order so we don't re-sort on every add.
+ mListBanned->clearSortOrder();
+ mListBanned->deleteAllItems();
+ S32 count = parcel->mBanList.size();
+ getChild<LLUICtrl>("BanCheck")->setTextArg("[COUNT]", llformat("%d",count));
+ getChild<LLUICtrl>("BanCheck")->setTextArg("[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST));
+
+ getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));
+ getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST));
+
+ for (LLAccessEntry::map::const_iterator cit = parcel->mBanList.begin();
+ cit != parcel->mBanList.end(); ++cit)
+ {
+ const LLAccessEntry& entry = (*cit).second;
+ std::string duration;
+ S32 seconds = -1;
+ if (entry.mTime != 0)
+ {
+ LLStringUtil::format_map_t args;
+ S32 now = time(NULL);
+ seconds = entry.mTime - now;
+ if (seconds < 0) seconds = 0;
+
+ if (seconds >= 7200)
+ {
+ args["[HOURS]"] = llformat("%d", (seconds / 3600));
+ duration = parent_floater->getString("Hours", args);
+ }
+ else if (seconds >= 3600)
+ {
+ duration = "1 " + parent_floater->getString("Hour");
+ }
+ else if (seconds >= 120)
+ {
+ args["[MINUTES]"] = llformat("%d", (seconds / 60));
+ duration = parent_floater->getString("Minutes", args);
+ }
+ else if (seconds >= 60)
+ {
+ duration = "1 " + parent_floater->getString("Minute");
+ }
+ else
+ {
+ args["[SECONDS]"] = llformat("%d", seconds);
+ duration = parent_floater->getString("Seconds", args);
+ }
+ }
+ else
+ {
+ duration = parent_floater->getString("Always");
+ }
+ LLSD item;
+ item["id"] = entry.mID;
+ LLSD& columns = item["columns"];
+ columns[0]["column"] = "name"; // to be populated later
+ columns[1]["column"] = "duration";
+ columns[1]["value"] = duration;
+ columns[1]["alt_value"] = entry.mTime != 0 ? std::to_string(seconds) : "Always";
+ mListBanned->addElement(item);
+ }
+ mListBanned->sortByName(TRUE);
+ }
+
+ if(parcel->getRegionDenyAnonymousOverride())
+ {
+ getChild<LLUICtrl>("limit_payment")->setValue(TRUE);
+ getChild<LLUICtrl>("limit_payment")->setLabelArg("[ESTATE_PAYMENT_LIMIT]", getString("access_estate_defined") );
+ }
+ else
+ {
+ getChild<LLUICtrl>("limit_payment")->setValue((parcel->getParcelFlag(PF_DENY_ANONYMOUS)));
+ getChild<LLUICtrl>("limit_payment")->setLabelArg("[ESTATE_PAYMENT_LIMIT]", std::string() );
+ }
+ if(parcel->getRegionDenyAgeUnverifiedOverride())
+ {
+ getChild<LLUICtrl>("limit_age_verified")->setValue(TRUE);
+ getChild<LLUICtrl>("limit_age_verified")->setLabelArg("[ESTATE_AGE_LIMIT]", getString("access_estate_defined") );
+ }
+ else
+ {
+ getChild<LLUICtrl>("limit_age_verified")->setValue((parcel->getParcelFlag(PF_DENY_AGEUNVERIFIED)));
+ getChild<LLUICtrl>("limit_age_verified")->setLabelArg("[ESTATE_AGE_LIMIT]", std::string() );
+ }
+
+ BOOL use_pass = parcel->getParcelFlag(PF_USE_PASS_LIST);
+ getChild<LLUICtrl>("PassCheck")->setValue(use_pass);
+ LLCtrlSelectionInterface* passcombo = childGetSelectionInterface("pass_combo");
+ if (passcombo)
+ {
+ if (public_access || !use_pass)
+ {
+ passcombo->selectByValue("anyone");
+ }
+ }
+
+ S32 pass_price = parcel->getPassPrice();
+ getChild<LLUICtrl>("PriceSpin")->setValue((F32)pass_price );
+
+ F32 pass_hours = parcel->getPassHours();
+ getChild<LLUICtrl>("HoursSpin")->setValue(pass_hours );
+ }
+ else
+ {
+ getChild<LLUICtrl>("public_access")->setValue(FALSE);
+ getChild<LLUICtrl>("limit_payment")->setValue(FALSE);
+ getChild<LLUICtrl>("limit_age_verified")->setValue(FALSE);
+ getChild<LLUICtrl>("GroupCheck")->setValue(FALSE);
+ getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", LLStringUtil::null );
+ getChild<LLUICtrl>("PassCheck")->setValue(FALSE);
+ getChild<LLUICtrl>("PriceSpin")->setValue((F32)PARCEL_PASS_PRICE_DEFAULT);
+ getChild<LLUICtrl>("HoursSpin")->setValue(PARCEL_PASS_HOURS_DEFAULT );
+ getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",0));
+ getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",0));
+ getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",0));
+ getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",0));
+ }
}
void LLPanelLandAccess::refresh_ui()
{
- getChildView("public_access")->setEnabled(FALSE);
- getChildView("limit_payment")->setEnabled(FALSE);
- getChildView("limit_age_verified")->setEnabled(FALSE);
- getChildView("GroupCheck")->setEnabled(FALSE);
- getChildView("PassCheck")->setEnabled(FALSE);
- getChildView("pass_combo")->setEnabled(FALSE);
- getChildView("PriceSpin")->setEnabled(FALSE);
- getChildView("HoursSpin")->setEnabled(FALSE);
- getChildView("AccessList")->setEnabled(FALSE);
- getChildView("BannedList")->setEnabled(FALSE);
- getChildView("add_allowed")->setEnabled(FALSE);
- getChildView("remove_allowed")->setEnabled(FALSE);
- getChildView("add_banned")->setEnabled(FALSE);
- getChildView("remove_banned")->setEnabled(FALSE);
-
- LLParcel *parcel = mParcel->getParcel();
- if (parcel && !gDisconnected)
- {
+ getChildView("public_access")->setEnabled(FALSE);
+ getChildView("limit_payment")->setEnabled(FALSE);
+ getChildView("limit_age_verified")->setEnabled(FALSE);
+ getChildView("GroupCheck")->setEnabled(FALSE);
+ getChildView("PassCheck")->setEnabled(FALSE);
+ getChildView("pass_combo")->setEnabled(FALSE);
+ getChildView("PriceSpin")->setEnabled(FALSE);
+ getChildView("HoursSpin")->setEnabled(FALSE);
+ getChildView("AccessList")->setEnabled(FALSE);
+ getChildView("BannedList")->setEnabled(FALSE);
+ getChildView("add_allowed")->setEnabled(FALSE);
+ getChildView("remove_allowed")->setEnabled(FALSE);
+ getChildView("add_banned")->setEnabled(FALSE);
+ getChildView("remove_banned")->setEnabled(FALSE);
+
+ LLParcel *parcel = mParcel->getParcel();
+ if (parcel && !gDisconnected)
+ {
BOOL can_manage_allowed = false;
- BOOL can_manage_banned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_BANNED);
-
+ BOOL can_manage_banned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_BANNED);
+
if (parcel->getRegionAllowAccessOverride())
{ // Estate owner may have disabled allowing the parcel owner from managing access.
can_manage_allowed = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_ALLOWED);
}
- getChildView("public_access")->setEnabled(can_manage_allowed);
- BOOL public_access = getChild<LLUICtrl>("public_access")->getValue().asBoolean();
- if (public_access)
- {
- bool override = false;
- if(parcel->getRegionDenyAnonymousOverride())
- {
- override = true;
- getChildView("limit_payment")->setEnabled(FALSE);
- }
- else
- {
- getChildView("limit_payment")->setEnabled(can_manage_allowed);
- }
- if(parcel->getRegionDenyAgeUnverifiedOverride())
- {
- override = true;
- getChildView("limit_age_verified")->setEnabled(FALSE);
- }
- else
- {
- getChildView("limit_age_verified")->setEnabled(can_manage_allowed);
- }
- if (override)
- {
- getChildView("Only Allow")->setToolTip(getString("estate_override"));
- }
- else
- {
- getChildView("Only Allow")->setToolTip(std::string());
- }
- getChildView("PassCheck")->setEnabled(FALSE);
- getChildView("pass_combo")->setEnabled(FALSE);
- getChildView("AccessList")->setEnabled(FALSE);
- }
- else
- {
- getChildView("limit_payment")->setEnabled(FALSE);
- getChildView("limit_age_verified")->setEnabled(FALSE);
-
-
- BOOL sell_passes = getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
- getChildView("PassCheck")->setEnabled(can_manage_allowed);
- if (sell_passes)
- {
- getChildView("pass_combo")->setEnabled(can_manage_allowed);
- getChildView("PriceSpin")->setEnabled(can_manage_allowed);
- getChildView("HoursSpin")->setEnabled(can_manage_allowed);
- }
- }
- std::string group_name;
- if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
- {
- bool can_allow_groups = !public_access || (public_access && (getChild<LLUICtrl>("limit_payment")->getValue().asBoolean() ^ getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean()));
- getChildView("GroupCheck")->setEnabled(can_manage_allowed && can_allow_groups);
- }
- getChildView("AccessList")->setEnabled(can_manage_allowed);
- S32 allowed_list_count = parcel->mAccessList.size();
- getChildView("add_allowed")->setEnabled(can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
- BOOL has_selected = (mListAccess && mListAccess->getSelectionInterface()->getFirstSelectedIndex() >= 0);
- getChildView("remove_allowed")->setEnabled(can_manage_allowed && has_selected);
-
- getChildView("BannedList")->setEnabled(can_manage_banned);
- S32 banned_list_count = parcel->mBanList.size();
- getChildView("add_banned")->setEnabled(can_manage_banned && banned_list_count < PARCEL_MAX_ACCESS_LIST);
- has_selected = (mListBanned && mListBanned->getSelectionInterface()->getFirstSelectedIndex() >= 0);
- getChildView("remove_banned")->setEnabled(can_manage_banned && has_selected);
- }
-}
-
+ getChildView("public_access")->setEnabled(can_manage_allowed);
+ BOOL public_access = getChild<LLUICtrl>("public_access")->getValue().asBoolean();
+ if (public_access)
+ {
+ bool override = false;
+ if(parcel->getRegionDenyAnonymousOverride())
+ {
+ override = true;
+ getChildView("limit_payment")->setEnabled(FALSE);
+ }
+ else
+ {
+ getChildView("limit_payment")->setEnabled(can_manage_allowed);
+ }
+ if(parcel->getRegionDenyAgeUnverifiedOverride())
+ {
+ override = true;
+ getChildView("limit_age_verified")->setEnabled(FALSE);
+ }
+ else
+ {
+ getChildView("limit_age_verified")->setEnabled(can_manage_allowed);
+ }
+ if (override)
+ {
+ getChildView("Only Allow")->setToolTip(getString("estate_override"));
+ }
+ else
+ {
+ getChildView("Only Allow")->setToolTip(std::string());
+ }
+ getChildView("PassCheck")->setEnabled(FALSE);
+ getChildView("pass_combo")->setEnabled(FALSE);
+ getChildView("AccessList")->setEnabled(FALSE);
+ }
+ else
+ {
+ getChildView("limit_payment")->setEnabled(FALSE);
+ getChildView("limit_age_verified")->setEnabled(FALSE);
+
+
+ BOOL sell_passes = getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
+ getChildView("PassCheck")->setEnabled(can_manage_allowed);
+ if (sell_passes)
+ {
+ getChildView("pass_combo")->setEnabled(can_manage_allowed);
+ getChildView("PriceSpin")->setEnabled(can_manage_allowed);
+ getChildView("HoursSpin")->setEnabled(can_manage_allowed);
+ }
+ }
+ std::string group_name;
+ if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
+ {
+ bool can_allow_groups = !public_access || (public_access && (getChild<LLUICtrl>("limit_payment")->getValue().asBoolean() ^ getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean()));
+ getChildView("GroupCheck")->setEnabled(can_manage_allowed && can_allow_groups);
+ }
+ getChildView("AccessList")->setEnabled(can_manage_allowed);
+ S32 allowed_list_count = parcel->mAccessList.size();
+ getChildView("add_allowed")->setEnabled(can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
+ BOOL has_selected = (mListAccess && mListAccess->getSelectionInterface()->getFirstSelectedIndex() >= 0);
+ getChildView("remove_allowed")->setEnabled(can_manage_allowed && has_selected);
+
+ getChildView("BannedList")->setEnabled(can_manage_banned);
+ S32 banned_list_count = parcel->mBanList.size();
+ getChildView("add_banned")->setEnabled(can_manage_banned && banned_list_count < PARCEL_MAX_ACCESS_LIST);
+ has_selected = (mListBanned && mListBanned->getSelectionInterface()->getFirstSelectedIndex() >= 0);
+ getChildView("remove_banned")->setEnabled(can_manage_banned && has_selected);
+ }
+}
+
// public
void LLPanelLandAccess::refreshNames()
{
- LLParcel* parcel = mParcel->getParcel();
- std::string group_name;
- if(parcel)
- {
- gCacheName->getGroupName(parcel->getGroupID(), group_name);
- }
- getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name);
+ LLParcel* parcel = mParcel->getParcel();
+ std::string group_name;
+ if(parcel)
+ {
+ gCacheName->getGroupName(parcel->getGroupID(), group_name);
+ }
+ getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name);
}
// virtual
void LLPanelLandAccess::draw()
{
- refresh_ui();
- refreshNames();
- LLPanel::draw();
+ refresh_ui();
+ refreshNames();
+ LLPanel::draw();
}
// static
void LLPanelLandAccess::onCommitPublicAccess(LLUICtrl *ctrl, void *userdata)
{
- LLPanelLandAccess *self = (LLPanelLandAccess *)userdata;
- LLParcel* parcel = self->mParcel->getParcel();
- if (!parcel)
- {
- return;
- }
+ LLPanelLandAccess *self = (LLPanelLandAccess *)userdata;
+ LLParcel* parcel = self->mParcel->getParcel();
+ if (!parcel)
+ {
+ return;
+ }
- onCommitAny(ctrl, userdata);
+ onCommitAny(ctrl, userdata);
}
void LLPanelLandAccess::onCommitGroupCheck(LLUICtrl *ctrl, void *userdata)
{
- LLPanelLandAccess *self = (LLPanelLandAccess *)userdata;
- LLParcel* parcel = self->mParcel->getParcel();
- if (!parcel)
- {
- return;
- }
-
- BOOL use_pass_list = !self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
- BOOL use_access_group = self->getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
- LLCtrlSelectionInterface* passcombo = self->childGetSelectionInterface("pass_combo");
- if (passcombo)
- {
- if (use_access_group && use_pass_list)
- {
- if (passcombo->getSelectedValue().asString() == "group")
- {
- passcombo->selectByValue("anyone");
- }
- }
- }
-
- onCommitAny(ctrl, userdata);
+ LLPanelLandAccess *self = (LLPanelLandAccess *)userdata;
+ LLParcel* parcel = self->mParcel->getParcel();
+ if (!parcel)
+ {
+ return;
+ }
+
+ BOOL use_pass_list = !self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
+ BOOL use_access_group = self->getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
+ LLCtrlSelectionInterface* passcombo = self->childGetSelectionInterface("pass_combo");
+ if (passcombo)
+ {
+ if (use_access_group && use_pass_list)
+ {
+ if (passcombo->getSelectedValue().asString() == "group")
+ {
+ passcombo->selectByValue("anyone");
+ }
+ }
+ }
+
+ onCommitAny(ctrl, userdata);
}
// static
void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
{
- LLPanelLandAccess *self = (LLPanelLandAccess *)userdata;
-
- LLParcel* parcel = self->mParcel->getParcel();
- if (!parcel)
- {
- return;
- }
-
- // Extract data from UI
- BOOL public_access = self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
- BOOL use_access_group = self->getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
- if (use_access_group)
- {
- std::string group_name;
- if (!gCacheName->getGroupName(parcel->getGroupID(), group_name))
- {
- use_access_group = FALSE;
- }
- }
-
- BOOL limit_payment = FALSE, limit_age_verified = FALSE;
- BOOL use_access_list = FALSE;
- BOOL use_pass_list = FALSE;
-
- if (public_access)
- {
- use_access_list = FALSE;
- limit_payment = self->getChild<LLUICtrl>("limit_payment")->getValue().asBoolean();
- limit_age_verified = self->getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean();
- }
- else
- {
- use_access_list = TRUE;
- use_pass_list = self->getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
- LLCtrlSelectionInterface* passcombo = self->childGetSelectionInterface("pass_combo");
- if (passcombo)
- {
- if (use_access_group && use_pass_list)
- {
- if (passcombo->getSelectedValue().asString() == "group")
- {
- use_access_group = FALSE;
- }
- }
- }
- }
-
- S32 pass_price = llfloor((F32)self->getChild<LLUICtrl>("PriceSpin")->getValue().asReal());
- F32 pass_hours = (F32)self->getChild<LLUICtrl>("HoursSpin")->getValue().asReal();
-
- // Push data into current parcel
- parcel->setParcelFlag(PF_USE_ACCESS_GROUP, use_access_group);
- parcel->setParcelFlag(PF_USE_ACCESS_LIST, use_access_list);
- parcel->setParcelFlag(PF_USE_PASS_LIST, use_pass_list);
- parcel->setParcelFlag(PF_USE_BAN_LIST, TRUE);
- parcel->setParcelFlag(PF_DENY_ANONYMOUS, limit_payment);
- parcel->setParcelFlag(PF_DENY_AGEUNVERIFIED, limit_age_verified);
-
- parcel->setPassPrice( pass_price );
- parcel->setPassHours( pass_hours );
-
- // Send current parcel data upstream to server
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
-
- // Might have changed properties, so let's redraw!
- self->refresh();
+ LLPanelLandAccess *self = (LLPanelLandAccess *)userdata;
+
+ LLParcel* parcel = self->mParcel->getParcel();
+ if (!parcel)
+ {
+ return;
+ }
+
+ // Extract data from UI
+ BOOL public_access = self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
+ BOOL use_access_group = self->getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
+ if (use_access_group)
+ {
+ std::string group_name;
+ if (!gCacheName->getGroupName(parcel->getGroupID(), group_name))
+ {
+ use_access_group = FALSE;
+ }
+ }
+
+ BOOL limit_payment = FALSE, limit_age_verified = FALSE;
+ BOOL use_access_list = FALSE;
+ BOOL use_pass_list = FALSE;
+
+ if (public_access)
+ {
+ use_access_list = FALSE;
+ limit_payment = self->getChild<LLUICtrl>("limit_payment")->getValue().asBoolean();
+ limit_age_verified = self->getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean();
+ }
+ else
+ {
+ use_access_list = TRUE;
+ use_pass_list = self->getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
+ LLCtrlSelectionInterface* passcombo = self->childGetSelectionInterface("pass_combo");
+ if (passcombo)
+ {
+ if (use_access_group && use_pass_list)
+ {
+ if (passcombo->getSelectedValue().asString() == "group")
+ {
+ use_access_group = FALSE;
+ }
+ }
+ }
+ }
+
+ S32 pass_price = llfloor((F32)self->getChild<LLUICtrl>("PriceSpin")->getValue().asReal());
+ F32 pass_hours = (F32)self->getChild<LLUICtrl>("HoursSpin")->getValue().asReal();
+
+ // Push data into current parcel
+ parcel->setParcelFlag(PF_USE_ACCESS_GROUP, use_access_group);
+ parcel->setParcelFlag(PF_USE_ACCESS_LIST, use_access_list);
+ parcel->setParcelFlag(PF_USE_PASS_LIST, use_pass_list);
+ parcel->setParcelFlag(PF_USE_BAN_LIST, TRUE);
+ parcel->setParcelFlag(PF_DENY_ANONYMOUS, limit_payment);
+ parcel->setParcelFlag(PF_DENY_AGEUNVERIFIED, limit_age_verified);
+
+ parcel->setPassPrice( pass_price );
+ parcel->setPassHours( pass_hours );
+
+ // Send current parcel data upstream to server
+ LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
+
+ // Might have changed properties, so let's redraw!
+ self->refresh();
}
void LLPanelLandAccess::onClickAddAccess()
{
LLView * button = findChild<LLButton>("add_allowed");
LLFloater * root_floater = gFloaterView->getParentFloater(this);
- LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(
- boost::bind(&LLPanelLandAccess::callbackAvatarCBAccess, this, _1), FALSE, FALSE, FALSE, root_floater->getName(), button);
- if (picker)
- {
- root_floater->addDependentFloater(picker);
- }
+ LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(
+ boost::bind(&LLPanelLandAccess::callbackAvatarCBAccess, this, _1), FALSE, FALSE, FALSE, root_floater->getName(), button);
+ if (picker)
+ {
+ root_floater->addDependentFloater(picker);
+ }
}
void LLPanelLandAccess::callbackAvatarCBAccess(const uuid_vec_t& ids)
{
- if (!ids.empty())
- {
- LLUUID id = ids[0];
- LLParcel* parcel = mParcel->getParcel();
- if (parcel && parcel->addToAccessList(id, 0))
- {
- U32 lists_to_update = AL_ACCESS;
- // agent was successfully added to access list
- // but we also need to check ban list to ensure that agent will not be in two lists simultaneously
- if(parcel->removeFromBanList(id))
- {
- lists_to_update |= AL_BAN;
- }
- LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(lists_to_update);
- refresh();
- }
- }
+ if (!ids.empty())
+ {
+ LLUUID id = ids[0];
+ LLParcel* parcel = mParcel->getParcel();
+ if (parcel && parcel->addToAccessList(id, 0))
+ {
+ U32 lists_to_update = AL_ACCESS;
+ // agent was successfully added to access list
+ // but we also need to check ban list to ensure that agent will not be in two lists simultaneously
+ if(parcel->removeFromBanList(id))
+ {
+ lists_to_update |= AL_BAN;
+ }
+ LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(lists_to_update);
+ refresh();
+ }
+ }
}
// static
void LLPanelLandAccess::onClickRemoveAccess(void* data)
{
- LLPanelLandAccess* panelp = (LLPanelLandAccess*)data;
- if (panelp && panelp->mListAccess)
- {
- LLParcel* parcel = panelp->mParcel->getParcel();
- if (parcel)
- {
- std::vector<LLScrollListItem*> names = panelp->mListAccess->getAllSelected();
- for (std::vector<LLScrollListItem*>::iterator iter = names.begin();
- iter != names.end(); )
- {
- LLScrollListItem* item = *iter++;
- const LLUUID& agent_id = item->getUUID();
- parcel->removeFromAccessList(agent_id);
- }
- LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(AL_ACCESS);
- panelp->refresh();
- }
- }
+ LLPanelLandAccess* panelp = (LLPanelLandAccess*)data;
+ if (panelp && panelp->mListAccess)
+ {
+ LLParcel* parcel = panelp->mParcel->getParcel();
+ if (parcel)
+ {
+ std::vector<LLScrollListItem*> names = panelp->mListAccess->getAllSelected();
+ for (std::vector<LLScrollListItem*>::iterator iter = names.begin();
+ iter != names.end(); )
+ {
+ LLScrollListItem* item = *iter++;
+ const LLUUID& agent_id = item->getUUID();
+ parcel->removeFromAccessList(agent_id);
+ }
+ LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(AL_ACCESS);
+ panelp->refresh();
+ }
+ }
}
// static
@@ -2966,84 +2966,84 @@ void LLPanelLandAccess::onClickAddBanned()
{
LLView * button = findChild<LLButton>("add_banned");
LLFloater * root_floater = gFloaterView->getParentFloater(this);
- LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(
- boost::bind(&LLPanelLandAccess::callbackAvatarCBBanned, this, _1), TRUE, FALSE, FALSE, root_floater->getName(), button);
- if (picker)
- {
- root_floater->addDependentFloater(picker);
- }
+ LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(
+ boost::bind(&LLPanelLandAccess::callbackAvatarCBBanned, this, _1), TRUE, FALSE, FALSE, root_floater->getName(), button);
+ if (picker)
+ {
+ root_floater->addDependentFloater(picker);
+ }
}
// static
void LLPanelLandAccess::callbackAvatarCBBanned(const uuid_vec_t& ids)
{
- LLFloater * root_floater = gFloaterView->getParentFloater(this);
- LLFloaterBanDuration* duration_floater = LLFloaterBanDuration::show(
- boost::bind(&LLPanelLandAccess::callbackAvatarCBBanned2, this, _1, _2), ids);
- if (duration_floater)
- {
- root_floater->addDependentFloater(duration_floater);
- }
+ LLFloater * root_floater = gFloaterView->getParentFloater(this);
+ LLFloaterBanDuration* duration_floater = LLFloaterBanDuration::show(
+ boost::bind(&LLPanelLandAccess::callbackAvatarCBBanned2, this, _1, _2), ids);
+ if (duration_floater)
+ {
+ root_floater->addDependentFloater(duration_floater);
+ }
}
void LLPanelLandAccess::callbackAvatarCBBanned2(const uuid_vec_t& ids, S32 duration)
{
- LLParcel* parcel = mParcel->getParcel();
- if (!parcel) return;
-
- U32 lists_to_update = 0;
-
- for (uuid_vec_t::const_iterator it = ids.begin(); it < ids.end(); it++)
- {
- LLUUID id = *it;
- if (parcel->addToBanList(id, duration))
- {
- lists_to_update |= AL_BAN;
- // agent was successfully added to ban list
- // but we also need to check access list to ensure that agent will not be in two lists simultaneously
- if (parcel->removeFromAccessList(id))
- {
- lists_to_update |= AL_ACCESS;
- }
- }
- }
- if (lists_to_update > 0)
- {
- LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(lists_to_update);
- refresh();
- }
+ LLParcel* parcel = mParcel->getParcel();
+ if (!parcel) return;
+
+ U32 lists_to_update = 0;
+
+ for (uuid_vec_t::const_iterator it = ids.begin(); it < ids.end(); it++)
+ {
+ LLUUID id = *it;
+ if (parcel->addToBanList(id, duration))
+ {
+ lists_to_update |= AL_BAN;
+ // agent was successfully added to ban list
+ // but we also need to check access list to ensure that agent will not be in two lists simultaneously
+ if (parcel->removeFromAccessList(id))
+ {
+ lists_to_update |= AL_ACCESS;
+ }
+ }
+ }
+ if (lists_to_update > 0)
+ {
+ LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(lists_to_update);
+ refresh();
+ }
}
// static
void LLPanelLandAccess::onClickRemoveBanned(void* data)
{
- LLPanelLandAccess* panelp = (LLPanelLandAccess*)data;
- if (panelp && panelp->mListBanned)
- {
- LLParcel* parcel = panelp->mParcel->getParcel();
- if (parcel)
- {
- std::vector<LLScrollListItem*> names = panelp->mListBanned->getAllSelected();
- for (std::vector<LLScrollListItem*>::iterator iter = names.begin();
- iter != names.end(); )
- {
- LLScrollListItem* item = *iter++;
- const LLUUID& agent_id = item->getUUID();
- parcel->removeFromBanList(agent_id);
- }
- LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(AL_BAN);
- panelp->refresh();
- }
- }
+ LLPanelLandAccess* panelp = (LLPanelLandAccess*)data;
+ if (panelp && panelp->mListBanned)
+ {
+ LLParcel* parcel = panelp->mParcel->getParcel();
+ if (parcel)
+ {
+ std::vector<LLScrollListItem*> names = panelp->mListBanned->getAllSelected();
+ for (std::vector<LLScrollListItem*>::iterator iter = names.begin();
+ iter != names.end(); )
+ {
+ LLScrollListItem* item = *iter++;
+ const LLUUID& agent_id = item->getUUID();
+ parcel->removeFromBanList(agent_id);
+ }
+ LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(AL_BAN);
+ panelp->refresh();
+ }
+ }
}
//---------------------------------------------------------------------------
// LLPanelLandCovenant
//---------------------------------------------------------------------------
LLPanelLandCovenant::LLPanelLandCovenant(LLParcelSelectionHandle& parcel)
- : LLPanel(),
- mParcel(parcel),
- mNextUpdateTime(0)
+ : LLPanel(),
+ mParcel(parcel),
+ mNextUpdateTime(0)
{
}
@@ -3053,172 +3053,172 @@ LLPanelLandCovenant::~LLPanelLandCovenant()
BOOL LLPanelLandCovenant::postBuild()
{
- mLastRegionID = LLUUID::null;
- mNextUpdateTime = 0;
+ mLastRegionID = LLUUID::null;
+ mNextUpdateTime = 0;
mTextEstateOwner = getChild<LLTextBox>("estate_owner_text");
mTextEstateOwner->setIsFriendCallback(LLAvatarActions::isFriend);
- return TRUE;
+ return TRUE;
}
// virtual
void LLPanelLandCovenant::refresh()
{
- LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if(!region || gDisconnected) return;
-
- LLTextBox* region_name = getChild<LLTextBox>("region_name_text");
- if (region_name)
- {
- region_name->setText(region->getName());
- }
-
- LLTextBox* region_landtype = getChild<LLTextBox>("region_landtype_text");
- region_landtype->setText(region->getLocalizedSimProductName());
-
- LLTextBox* region_maturity = getChild<LLTextBox>("region_maturity_text");
- if (region_maturity)
- {
- insert_maturity_into_textbox(region_maturity, gFloaterView->getParentFloater(this), MATURITY);
- }
-
- LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
- if (resellable_clause)
- {
- if (region->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL))
- {
- resellable_clause->setText(getString("can_not_resell"));
- }
- else
- {
- resellable_clause->setText(getString("can_resell"));
- }
- }
-
- LLTextBox* changeable_clause = getChild<LLTextBox>("changeable_clause");
- if (changeable_clause)
- {
- if (region->getRegionFlag(REGION_FLAGS_ALLOW_PARCEL_CHANGES))
- {
- changeable_clause->setText(getString("can_change"));
- }
- else
- {
- changeable_clause->setText(getString("can_not_change"));
- }
- }
-
- if (mLastRegionID != region->getRegionID()
- || mNextUpdateTime < LLTimer::getElapsedSeconds())
- {
- // Request Covenant Info
- // Note: LLPanelLandCovenant doesn't change Covenant's content and any
- // changes made by Estate floater should be requested by Estate floater
- LLMessageSystem *msg = gMessageSystem;
- msg->newMessage("EstateCovenantRequest");
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
- msg->sendReliable(region->getHost());
-
- mLastRegionID = region->getRegionID();
- mNextUpdateTime = LLTimer::getElapsedSeconds() + COVENANT_REFRESH_TIME_SEC;
- }
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if(!region || gDisconnected) return;
+
+ LLTextBox* region_name = getChild<LLTextBox>("region_name_text");
+ if (region_name)
+ {
+ region_name->setText(region->getName());
+ }
+
+ LLTextBox* region_landtype = getChild<LLTextBox>("region_landtype_text");
+ region_landtype->setText(region->getLocalizedSimProductName());
+
+ LLTextBox* region_maturity = getChild<LLTextBox>("region_maturity_text");
+ if (region_maturity)
+ {
+ insert_maturity_into_textbox(region_maturity, gFloaterView->getParentFloater(this), MATURITY);
+ }
+
+ LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
+ if (resellable_clause)
+ {
+ if (region->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL))
+ {
+ resellable_clause->setText(getString("can_not_resell"));
+ }
+ else
+ {
+ resellable_clause->setText(getString("can_resell"));
+ }
+ }
+
+ LLTextBox* changeable_clause = getChild<LLTextBox>("changeable_clause");
+ if (changeable_clause)
+ {
+ if (region->getRegionFlag(REGION_FLAGS_ALLOW_PARCEL_CHANGES))
+ {
+ changeable_clause->setText(getString("can_change"));
+ }
+ else
+ {
+ changeable_clause->setText(getString("can_not_change"));
+ }
+ }
+
+ if (mLastRegionID != region->getRegionID()
+ || mNextUpdateTime < LLTimer::getElapsedSeconds())
+ {
+ // Request Covenant Info
+ // Note: LLPanelLandCovenant doesn't change Covenant's content and any
+ // changes made by Estate floater should be requested by Estate floater
+ LLMessageSystem *msg = gMessageSystem;
+ msg->newMessage("EstateCovenantRequest");
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
+ msg->sendReliable(region->getHost());
+
+ mLastRegionID = region->getRegionID();
+ mNextUpdateTime = LLTimer::getElapsedSeconds() + COVENANT_REFRESH_TIME_SEC;
+ }
}
// static
void LLPanelLandCovenant::updateCovenantText(const std::string &string)
{
- LLPanelLandCovenant* self = LLFloaterLand::getCurrentPanelLandCovenant();
- if (self)
- {
- LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("covenant_editor");
- editor->setText(string);
- }
+ LLPanelLandCovenant* self = LLFloaterLand::getCurrentPanelLandCovenant();
+ if (self)
+ {
+ LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("covenant_editor");
+ editor->setText(string);
+ }
}
// static
void LLPanelLandCovenant::updateEstateName(const std::string& name)
{
- LLPanelLandCovenant* self = LLFloaterLand::getCurrentPanelLandCovenant();
- if (self)
- {
- LLTextBox* editor = self->getChild<LLTextBox>("estate_name_text");
- if (editor) editor->setText(name);
- }
+ LLPanelLandCovenant* self = LLFloaterLand::getCurrentPanelLandCovenant();
+ if (self)
+ {
+ LLTextBox* editor = self->getChild<LLTextBox>("estate_name_text");
+ if (editor) editor->setText(name);
+ }
}
// static
void LLPanelLandCovenant::updateLastModified(const std::string& text)
{
- LLPanelLandCovenant* self = LLFloaterLand::getCurrentPanelLandCovenant();
- if (self)
- {
- LLTextBox* editor = self->getChild<LLTextBox>("covenant_timestamp_text");
- if (editor) editor->setText(text);
- }
+ LLPanelLandCovenant* self = LLFloaterLand::getCurrentPanelLandCovenant();
+ if (self)
+ {
+ LLTextBox* editor = self->getChild<LLTextBox>("covenant_timestamp_text");
+ if (editor) editor->setText(text);
+ }
}
// static
void LLPanelLandCovenant::updateEstateOwnerName(const std::string& name)
{
- LLPanelLandCovenant* self = LLFloaterLand::getCurrentPanelLandCovenant();
- if (self)
- {
- self->mTextEstateOwner->setText(name);
- }
+ LLPanelLandCovenant* self = LLFloaterLand::getCurrentPanelLandCovenant();
+ if (self)
+ {
+ self->mTextEstateOwner->setText(name);
+ }
}
-// inserts maturity info(icon and text) into target textbox
+// 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)
{
- LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- if (!region)
- return;
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (!region)
+ return;
- LLStyle::Params style;
+ LLStyle::Params style;
- U8 sim_access = region->getSimAccess();
+ U8 sim_access = region->getSimAccess();
- switch(sim_access)
- {
- case SIM_ACCESS_PG:
- style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_general")));
- break;
+ 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_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;
+ case SIM_ACCESS_MATURE:
+ style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_moderate")));
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- size_t maturity_pos = str_to_parse.find(MATURITY);
-
- if (maturity_pos == std::string::npos)
- {
- return;
- }
+ 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());
+ 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->setText(text_before_rating);
- target_textbox->appendImageSegment(style);
+ target_textbox->appendImageSegment(style);
- target_textbox->appendText(LLViewerParcelMgr::getInstance()->getSelectionRegion()->getSimAccessString(), false);
- target_textbox->appendText(text_after_rating, false);
+ target_textbox->appendText(LLViewerParcelMgr::getInstance()->getSelectionRegion()->getSimAccessString(), false);
+ target_textbox->appendText(text_after_rating, false);
}
-LLPanelLandExperiences::LLPanelLandExperiences( LLSafeHandle<LLParcelSelection>& parcelp )
- : mParcel(parcelp)
+LLPanelLandExperiences::LLPanelLandExperiences( LLSafeHandle<LLParcelSelection>& parcelp )
+ : mParcel(parcelp)
{
}
@@ -3226,95 +3226,95 @@ LLPanelLandExperiences::LLPanelLandExperiences( LLSafeHandle<LLParcelSelection>&
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);
+ mAllowed = setupList("panel_allowed", EXPERIENCE_KEY_TYPE_ALLOWED, AL_ALLOW_EXPERIENCE);
+ mBlocked = setupList("panel_blocked", EXPERIENCE_KEY_TYPE_BLOCKED, AL_BLOCK_EXPERIENCE);
+
+ // only non-grid-wide experiences
+ mAllowed->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithProperty, _1, LLExperienceCache::PROPERTY_GRID));
- // only non-grid-wide experiences
- mAllowed->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithProperty, _1, LLExperienceCache::PROPERTY_GRID));
+ // no privileged ones
+ mBlocked->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithoutProperties, _1, LLExperienceCache::PROPERTY_PRIVILEGED|LLExperienceCache::PROPERTY_GRID));
- // no privileged ones
- mBlocked->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithoutProperties, _1, LLExperienceCache::PROPERTY_PRIVILEGED|LLExperienceCache::PROPERTY_GRID));
+ 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"));
- 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();
+ 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));
- }
+ 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;
+ 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();
- }
+ 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();
- }
+ 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 (panel == NULL)
- {
- return;
- }
- if (!parcel || gDisconnected)
- {
- // disable the panel
- panel->setEnabled(FALSE);
- panel->setExperienceIds(LLSD::emptyArray());
- }
- else
- {
- // enable the panel
- panel->setEnabled(TRUE);
- 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();
- }
+ LLParcel *parcel = mParcel->getParcel();
+
+ // Display options
+ if (panel == NULL)
+ {
+ return;
+ }
+ if (!parcel || gDisconnected)
+ {
+ // disable the panel
+ panel->setEnabled(FALSE);
+ panel->setExperienceIds(LLSD::emptyArray());
+ }
+ else
+ {
+ // enable the panel
+ panel->setEnabled(TRUE);
+ 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);
+ refreshPanel(mAllowed, EXPERIENCE_KEY_TYPE_ALLOWED);
+ refreshPanel(mBlocked, EXPERIENCE_KEY_TYPE_BLOCKED);
}
//=========================================================================
@@ -3408,12 +3408,12 @@ void LLPanelLandEnvironment::refreshFromSource()
mLastParcelId = parcel->getLocalID();
LLEnvironment::instance().requestParcel(parcel->getLocalID(),
- [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo)
- {
+ [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo)
+ {
LLPanelLandEnvironment *that = (LLPanelLandEnvironment*)that_h.get();
if (!that) return;
- that->mLastParcelId = parcel_id;
- that->onEnvironmentReceived(parcel_id, envifo);
+ that->mLastParcelId = parcel_id;
+ that->onEnvironmentReceived(parcel_id, envifo);
});
}
else
@@ -3449,7 +3449,7 @@ bool LLPanelLandEnvironment::canEdit()
return LLEnvironment::instance().canAgentUpdateParcelEnvironment(parcel) && mAllowOverride;
}
-S32 LLPanelLandEnvironment::getParcelId()
+S32 LLPanelLandEnvironment::getParcelId()
{
LLParcel *parcel = getParcel();
if (!parcel)