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.cpp338
1 files changed, 228 insertions, 110 deletions
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 488d71aa70..02c83dcd09 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -39,6 +39,7 @@
#include "llcachename.h"
#include "llfocusmgr.h"
+#include "llnotificationsutil.h"
#include "llparcel.h"
#include "message.h"
#include "lluserauth.h"
@@ -51,10 +52,10 @@
#include "llfloateravatarpicker.h"
#include "llfloaterauction.h"
#include "llfloatergroups.h"
+#include "llfloaterscriptlimits.h"
#include "llavataractions.h"
#include "lllineeditor.h"
#include "llnamelistctrl.h"
-#include "llnotify.h"
#include "llpanellandaudio.h"
#include "llpanellandmedia.h"
#include "llradiogroup.h"
@@ -85,6 +86,7 @@
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;
@@ -101,6 +103,22 @@ public:
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
+{
+public:
+ LLTextBox* getTextBox()
+ {
+ return mLabel;
+ }
+};
+
+// inserts maturity info(icon and text) into target textbox
+// names_floater - pointer to floater which contains strings with maturity icons filenames
+// str_to_parse is string in format "txt1[MATURITY]txt2" where maturity icon and text will be inserted instead of [MATURITY]
+void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_floater, std::string str_to_parse);
+
//---------------------------------------------------------------------------
// LLFloaterLand
//---------------------------------------------------------------------------
@@ -148,6 +166,10 @@ void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
msg->sendReliable(region->getHost());
}
+LLParcel* LLFloaterLand::getCurrentSelectedParcel()
+{
+ return mParcel->getParcel();
+};
//static
LLPanelLandObjects* LLFloaterLand::getCurrentPanelLandObjects()
@@ -239,7 +261,7 @@ LLFloaterLand::LLFloaterLand(const LLSD& seed)
BOOL LLFloaterLand::postBuild()
{
- mVisibleSignal.connect(boost::bind(&LLFloaterLand::onVisibilityChange, this, _2));
+ setVisibleCallback(boost::bind(&LLFloaterLand::onVisibilityChange, this, _2));
LLTabContainer* tab = getChild<LLTabContainer>("landtab");
@@ -271,6 +293,7 @@ void LLFloaterLand::refresh()
mPanelAudio->refresh();
mPanelMedia->refresh();
mPanelAccess->refresh();
+ mPanelCovenant->refresh();
}
@@ -347,13 +370,14 @@ BOOL LLPanelLandGeneral::postBuild()
{
mEditName = getChild<LLLineEditor>("Name");
mEditName->setCommitCallback(onCommitAny, this);
- childSetPrevalidate("Name", LLLineEditor::prevalidatePrintableNotPipe);
+ childSetPrevalidate("Name", LLTextValidate::validateASCIIPrintableNoPipe);
mEditDesc = getChild<LLTextEditor>("Description");
mEditDesc->setCommitOnFocusLost(TRUE);
mEditDesc->setCommitCallback(onCommitAny, this);
- childSetPrevalidate("Description", LLLineEditor::prevalidatePrintableNotPipe);
-
+ // 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:");
@@ -420,6 +444,27 @@ BOOL LLPanelLandGeneral::postBuild()
mBtnBuyLand = getChild<LLButton>("Buy Land...");
mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
+ // 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.getRegion()->getCapability("LandResources");
+ if (!url.empty())
+ {
+ mBtnScriptLimits = getChild<LLButton>("Scripts...");
+ if(mBtnScriptLimits)
+ {
+ mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+ }
+ }
+ else
+ {
+ mBtnScriptLimits = getChild<LLButton>("Scripts...");
+ if(mBtnScriptLimits)
+ {
+ mBtnScriptLimits->setVisible(false);
+ }
+ }
+
mBtnBuyGroupLand = getChild<LLButton>("Buy For Group...");
mBtnBuyGroupLand->setClickedCallback(onClickBuyLand, (void*)&BUY_GROUP_LAND);
@@ -507,6 +552,7 @@ void LLPanelLandGeneral::refresh()
mTextDwell->setText(LLStringUtil::null);
mBtnBuyLand->setEnabled(FALSE);
+ mBtnScriptLimits->setEnabled(FALSE);
mBtnBuyGroupLand->setEnabled(FALSE);
mBtnReleaseLand->setEnabled(FALSE);
mBtnReclaimLand->setEnabled(FALSE);
@@ -525,7 +571,7 @@ void LLPanelLandGeneral::refresh()
if (regionp)
{
- mContentRating->setText(regionp->getSimAccessString());
+ insert_maturity_into_textbox(mContentRating, gFloaterView->getParentFloater(this), MATURITY);
mLandType->setText(regionp->getSimProductName());
}
@@ -714,6 +760,8 @@ void LLPanelLandGeneral::refresh()
mBtnBuyLand->setEnabled(
LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, false));
+ mBtnScriptLimits->setEnabled(true);
+// LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, false));
mBtnBuyGroupLand->setEnabled(
LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, true));
@@ -772,16 +820,19 @@ void LLPanelLandGeneral::refreshNames()
}
mTextGroup->setText(group);
- const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
- if(auth_buyer_id.notNull())
+ if (parcel->getForSale())
{
- std::string name;
- name = LLSLURL::buildCommand("agent", auth_buyer_id, "inspect");
- mSaleInfoForSale2->setTextArg("[BUYER]", name);
- }
- else
- {
- mSaleInfoForSale2->setTextArg("[BUYER]", getString("anyone"));
+ const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
+ if(auth_buyer_id.notNull())
+ {
+ std::string name;
+ name = LLSLURL::buildCommand("agent", auth_buyer_id, "inspect");
+ mSaleInfoForSale2->setTextArg("[BUYER]", name);
+ }
+ else
+ {
+ mSaleInfoForSale2->setTextArg("[BUYER]", getString("anyone"));
+ }
}
}
@@ -853,6 +904,17 @@ void LLPanelLandGeneral::onClickBuyLand(void* 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");
+ }
+}
+
BOOL LLPanelLandGeneral::enableDeedToGroup(void* data)
{
LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
@@ -913,7 +975,7 @@ void LLPanelLandGeneral::onClickBuyPass(void* data)
args["PARCEL_NAME"] = parcel_name;
args["TIME"] = time;
- LLNotifications::instance().add("LandBuyPass", args, LLSD(), cbBuyPass);
+ LLNotificationsUtil::add("LandBuyPass", args, LLSD(), cbBuyPass);
}
// static
@@ -925,7 +987,7 @@ void LLPanelLandGeneral::onClickStartAuction(void* data)
{
if(parcelp->getForSale())
{
- LLNotifications::instance().add("CannotStartAuctionAlreadyForSale");
+ LLNotificationsUtil::add("CannotStartAuctionAlreadyForSale");
}
else
{
@@ -938,7 +1000,7 @@ void LLPanelLandGeneral::onClickStartAuction(void* data)
// static
bool LLPanelLandGeneral::cbBuyPass(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotification::getSelectedOption(notification, response);
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (0 == option)
{
// User clicked OK
@@ -1005,7 +1067,30 @@ void LLPanelLandGeneral::onClickStopSellLand(void* data)
//---------------------------------------------------------------------------
LLPanelLandObjects::LLPanelLandObjects(LLParcelSelectionHandle& parcel)
: LLPanel(),
- mParcel(parcel)
+
+ 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)
{
}
@@ -1046,7 +1131,7 @@ BOOL LLPanelLandObjects::postBuild()
mCleanOtherObjectsTime->setFocusLostCallback(boost::bind(onLostFocus, _1, this));
mCleanOtherObjectsTime->setCommitCallback(onCommitClean, this);
- childSetPrevalidate("clean other time", LLLineEditor::prevalidateNonNegativeS32);
+ childSetPrevalidate("clean other time", LLTextValidate::validateNonNegativeS32);
mBtnRefresh = getChild<LLButton>("Refresh List");
mBtnRefresh->setClickedCallback(onClickRefresh, this);
@@ -1054,9 +1139,9 @@ BOOL LLPanelLandObjects::postBuild()
mBtnReturnOwnerList = getChild<LLButton>("Return objects...");
mBtnReturnOwnerList->setClickedCallback(onClickReturnOwnerList, this);
- mIconAvatarOnline = LLUIImageList::getInstance()->getUIImage("icon_avatar_online.tga");
- mIconAvatarOffline = LLUIImageList::getInstance()->getUIImage("icon_avatar_offline.tga");
- mIconGroup = LLUIImageList::getInstance()->getUIImage("icon_group.tga");
+ 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->sortByColumnIndex(3, FALSE);
@@ -1284,7 +1369,7 @@ void send_return_objects_message(S32 parcel_local_id, S32 return_type,
bool LLPanelLandObjects::callbackReturnOwnerObjects(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotification::getSelectedOption(notification, response);
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
LLParcel *parcel = mParcel->getParcel();
if (0 == option)
{
@@ -1294,7 +1379,7 @@ bool LLPanelLandObjects::callbackReturnOwnerObjects(const LLSD& notification, co
LLSD args;
if (owner_id == gAgentID)
{
- LLNotifications::instance().add("OwnedObjectsReturned");
+ LLNotificationsUtil::add("OwnedObjectsReturned");
}
else
{
@@ -1302,7 +1387,7 @@ bool LLPanelLandObjects::callbackReturnOwnerObjects(const LLSD& notification, co
gCacheName->getName(owner_id, first, last);
args["FIRST"] = first;
args["LAST"] = last;
- LLNotifications::instance().add("OtherObjectsReturned", args);
+ LLNotificationsUtil::add("OtherObjectsReturned", args);
}
send_return_objects_message(parcel->getLocalID(), RT_OWNER);
}
@@ -1316,7 +1401,7 @@ bool LLPanelLandObjects::callbackReturnOwnerObjects(const LLSD& notification, co
bool LLPanelLandObjects::callbackReturnGroupObjects(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotification::getSelectedOption(notification, response);
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
LLParcel *parcel = mParcel->getParcel();
if (0 == option)
{
@@ -1326,7 +1411,7 @@ bool LLPanelLandObjects::callbackReturnGroupObjects(const LLSD& notification, co
gCacheName->getGroupName(parcel->getGroupID(), group_name);
LLSD args;
args["GROUPNAME"] = group_name;
- LLNotifications::instance().add("GroupObjectsReturned", args);
+ LLNotificationsUtil::add("GroupObjectsReturned", args);
send_return_objects_message(parcel->getLocalID(), RT_GROUP);
}
}
@@ -1338,13 +1423,13 @@ bool LLPanelLandObjects::callbackReturnGroupObjects(const LLSD& notification, co
bool LLPanelLandObjects::callbackReturnOtherObjects(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotification::getSelectedOption(notification, response);
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
LLParcel *parcel = mParcel->getParcel();
if (0 == option)
{
if (parcel)
{
- LLNotifications::instance().add("UnOwnedObjectsReturned");
+ LLNotificationsUtil::add("UnOwnedObjectsReturned");
send_return_objects_message(parcel->getLocalID(), RT_OTHER);
}
}
@@ -1356,7 +1441,7 @@ bool LLPanelLandObjects::callbackReturnOtherObjects(const LLSD& notification, co
bool LLPanelLandObjects::callbackReturnOwnerList(const LLSD& notification, const LLSD& response)
{
- S32 option = LLNotification::getSelectedOption(notification, response);
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
LLParcel *parcel = mParcel->getParcel();
if (0 == option)
{
@@ -1370,12 +1455,12 @@ bool LLPanelLandObjects::callbackReturnOwnerList(const LLSD& notification, const
if (mSelectedIsGroup)
{
args["GROUPNAME"] = mSelectedName;
- LLNotifications::instance().add("GroupObjectsReturned", args);
+ LLNotificationsUtil::add("GroupObjectsReturned", args);
}
else
{
args["NAME"] = mSelectedName;
- LLNotifications::instance().add("OtherObjectsReturned2", args);
+ LLNotificationsUtil::add("OtherObjectsReturned2", args);
}
send_return_objects_message(parcel->getLocalID(), RT_LIST, &(mSelectedOwners));
@@ -1412,11 +1497,11 @@ void LLPanelLandObjects::onClickReturnOwnerList(void* userdata)
args["N"] = llformat("%d",self->mSelectedCount);
if (self->mSelectedIsGroup)
{
- LLNotifications::instance().add("ReturnObjectsDeededToGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerList, self, _1, _2));
+ LLNotificationsUtil::add("ReturnObjectsDeededToGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerList, self, _1, _2));
}
else
{
- LLNotifications::instance().add("ReturnObjectsOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerList, self, _1, _2));
+ LLNotificationsUtil::add("ReturnObjectsOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerList, self, _1, _2));
}
}
@@ -1519,13 +1604,15 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo
}
// Placeholder for name.
- item_params.columns.add().font(FONT).column("name");
+ std::string name;
+ gCacheName->getFullName(owner_id, name);
+ item_params.columns.add().value(name).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(formatted_time((time_t)most_recent_time)).font(FONT).column("mostrecent");
+ item_params.columns.add().value(LLDate((time_t)most_recent_time)).font(FONT).column("mostrecent").type("date");
- self->mOwnerList->addRow(item_params);
+ self->mOwnerList->addNameItemRow(item_params);
lldebugs << "object owner " << owner_id << " (" << (is_group_owned ? "group" : "agent")
<< ") owns " << object_count << " objects." << llendl;
@@ -1624,14 +1711,14 @@ void LLPanelLandObjects::onClickReturnOwnerObjects(void* userdata)
if (owner_id == gAgent.getID())
{
- LLNotifications::instance().add("ReturnObjectsOwnedBySelf", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerObjects, panelp, _1, _2));
+ LLNotificationsUtil::add("ReturnObjectsOwnedBySelf", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerObjects, panelp, _1, _2));
}
else
{
std::string name;
gCacheName->getFullName(owner_id, name);
args["NAME"] = name;
- LLNotifications::instance().add("ReturnObjectsOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerObjects, panelp, _1, _2));
+ LLNotificationsUtil::add("ReturnObjectsOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOwnerObjects, panelp, _1, _2));
}
}
@@ -1652,7 +1739,7 @@ void LLPanelLandObjects::onClickReturnGroupObjects(void* userdata)
args["N"] = llformat("%d", parcel->getGroupPrimCount());
// create and show confirmation textbox
- LLNotifications::instance().add("ReturnObjectsDeededToGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnGroupObjects, panelp, _1, _2));
+ LLNotificationsUtil::add("ReturnObjectsDeededToGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnGroupObjects, panelp, _1, _2));
}
// static
@@ -1677,7 +1764,7 @@ void LLPanelLandObjects::onClickReturnOtherObjects(void* userdata)
gCacheName->getGroupName(parcel->getGroupID(), group_name);
args["NAME"] = group_name;
- LLNotifications::instance().add("ReturnObjectsNotOwnedByGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
+ LLNotificationsUtil::add("ReturnObjectsNotOwnedByGroup", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
}
else
{
@@ -1685,7 +1772,7 @@ void LLPanelLandObjects::onClickReturnOtherObjects(void* userdata)
if (owner_id == gAgent.getID())
{
- LLNotifications::instance().add("ReturnObjectsNotOwnedBySelf", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
+ LLNotificationsUtil::add("ReturnObjectsNotOwnedBySelf", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
}
else
{
@@ -1693,7 +1780,7 @@ void LLPanelLandObjects::onClickReturnOtherObjects(void* userdata)
gCacheName->getFullName(owner_id, name);
args["NAME"] = name;
- LLNotifications::instance().add("ReturnObjectsNotOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
+ LLNotificationsUtil::add("ReturnObjectsNotOwnedByUser", args, LLSD(), boost::bind(&LLPanelLandObjects::callbackReturnOtherObjects, panelp, _1, _2));
}
}
}
@@ -1743,7 +1830,6 @@ LLPanelLandOptions::LLPanelLandOptions(LLParcelSelectionHandle& parcel)
mClearBtn(NULL),
mMatureCtrl(NULL),
mPushRestrictionCtrl(NULL),
- mPublishHelpButton(NULL),
mParcel(parcel)
{
}
@@ -1812,14 +1898,9 @@ BOOL LLPanelLandOptions::postBuild()
mMatureCtrl = getChild<LLCheckBoxCtrl>( "MatureCheck");
childSetCommitCallback("MatureCheck", onCommitAny, this);
- mPublishHelpButton = getChild<LLButton>("?");
- mPublishHelpButton->setClickedCallback(onClickPublishHelp, this);
-
if (gAgent.wantsPGOnly())
{
// Disable these buttons if they are PG (Teen) users
- mPublishHelpButton->setVisible(FALSE);
- mPublishHelpButton->setEnabled(FALSE);
mMatureCtrl->setVisible(FALSE);
mMatureCtrl->setEnabled(FALSE);
}
@@ -1912,7 +1993,6 @@ void LLPanelLandOptions::refresh()
mClearBtn->setEnabled(FALSE);
mMatureCtrl->setEnabled(FALSE);
- mPublishHelpButton->setEnabled(FALSE);
}
else
{
@@ -1988,13 +2068,9 @@ void LLPanelLandOptions::refresh()
mSetBtn->setEnabled( can_change_landing_point );
mClearBtn->setEnabled( can_change_landing_point );
- mPublishHelpButton->setEnabled( can_change_identity );
-
if (gAgent.wantsPGOnly())
{
// Disable these buttons if they are PG (Teen) users
- mPublishHelpButton->setVisible(FALSE);
- mPublishHelpButton->setEnabled(FALSE);
mMatureCtrl->setVisible(FALSE);
mMatureCtrl->setEnabled(FALSE);
}
@@ -2002,8 +2078,14 @@ void LLPanelLandOptions::refresh()
{
// not teen so fill in the data for the maturity control
mMatureCtrl->setVisible(TRUE);
- mMatureCtrl->setLabel(getString("mature_check_mature"));
- mMatureCtrl->setToolTip(getString("mature_check_mature_tooltip"));
+ 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(std::string("icon"),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();
@@ -2173,7 +2255,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
if (!allow_other_scripts && region && region->getAllowDamage())
{
- LLNotifications::instance().add("UnableToDisableOutsideScripts");
+ LLNotificationsUtil::add("UnableToDisableOutsideScripts");
return;
}
@@ -2217,7 +2299,7 @@ void LLPanelLandOptions::onClickSet(void* userdata)
if (agent_parcel->getLocalID() != selected_parcel->getLocalID())
{
- LLNotifications::instance().add("MustBeInParcel");
+ LLNotificationsUtil::add("MustBeInParcel");
return;
}
@@ -2247,28 +2329,6 @@ void LLPanelLandOptions::onClickClear(void* userdata)
self->refresh();
}
-// static
-void LLPanelLandOptions::onClickPublishHelp(void*)
-{
- LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
- LLParcel *parcel = LLViewerParcelMgr::getInstance()->getFloatingParcelSelection()->getParcel();
- llassert(region); // Region should never be null.
-
- bool can_change_identity = region && parcel ?
- LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_IDENTITY) &&
- ! (region->getRegionFlags() & REGION_FLAGS_BLOCK_PARCEL_SEARCH) : false;
-
- if(! can_change_identity)
- {
- LLNotifications::instance().add("ClickPublishHelpLandDisabled");
- }
- else
- {
- LLNotifications::instance().add("ClickPublishHelpLand");
- }
-}
-
-
//---------------------------------------------------------------------------
// LLPanelLandAccess
@@ -2292,9 +2352,9 @@ BOOL LLPanelLandAccess::postBuild()
childSetCommitCallback("PriceSpin", onCommitAny, this);
childSetCommitCallback("HoursSpin", onCommitAny, this);
- childSetAction("add_allowed", onClickAddAccess, this);
+ childSetAction("add_allowed", boost::bind(&LLPanelLandAccess::onClickAddAccess, this));
childSetAction("remove_allowed", onClickRemoveAccess, this);
- childSetAction("add_banned", onClickAddBanned, this);
+ childSetAction("add_banned", boost::bind(&LLPanelLandAccess::onClickAddBanned, this));
childSetAction("remove_banned", onClickRemoveBanned, this);
mListAccess = getChild<LLNameListCtrl>("AccessList");
@@ -2329,7 +2389,7 @@ void LLPanelLandAccess::refresh()
mListBanned->deleteAllItems();
LLParcel *parcel = mParcel->getParcel();
-
+
// Display options
if (parcel)
{
@@ -2425,22 +2485,47 @@ void LLPanelLandAccess::refresh()
mListBanned->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix);
}
}
+
+ LLCheckBoxWithTBAcess* maturity_checkbox = (LLCheckBoxWithTBAcess*) getChild<LLCheckBoxCtrl>( "public_access");
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if(region)
+ {
+ LLTextBox* maturity_textbox = maturity_checkbox->getTextBox();
+ insert_maturity_into_textbox(maturity_textbox, gFloaterView->getParentFloater(this), getString("allow_public_access"));
+ maturity_checkbox->reshape(maturity_checkbox->getRect().getWidth(), maturity_checkbox->getRect().getHeight(), FALSE);
+ }
+ else
+ {
+ std::string maturity_string = getString("allow_public_access");
+ size_t maturity_pos = maturity_string.find(MATURITY);
+
+ if (maturity_pos != std::string::npos)
+ {
+ maturity_string.replace(maturity_pos, MATURITY.length(), std::string(""));
+ }
+
+ maturity_checkbox->setLabel(maturity_string);
+ }
if(parcel->getRegionDenyAnonymousOverride())
{
childSetValue("limit_payment", TRUE);
+ childSetLabelArg( "limit_payment", "[ESTATE_PAYMENT_LIMIT]", getString("access_estate_defined") );
}
else
{
childSetValue("limit_payment", (parcel->getParcelFlag(PF_DENY_ANONYMOUS)));
+ childSetLabelArg( "limit_payment", "[ESTATE_PAYMENT_LIMIT]", std::string() );
}
if(parcel->getRegionDenyAgeUnverifiedOverride())
{
childSetValue("limit_age_verified", TRUE);
+ childSetLabelArg( "limit_age_verified", "[ESTATE_AGE_LIMIT]", getString("access_estate_defined") );
}
else
{
childSetValue("limit_age_verified", (parcel->getParcelFlag(PF_DENY_AGEUNVERIFIED)));
+ childSetLabelArg( "limit_age_verified", "[ESTATE_AGE_LIMIT]", std::string() );
}
BOOL use_pass = parcel->getParcelFlag(PF_USE_PASS_LIST);
@@ -2684,29 +2769,22 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
self->refresh();
}
-// static
-void LLPanelLandAccess::onClickAddAccess(void* data)
+void LLPanelLandAccess::onClickAddAccess()
{
- LLPanelLandAccess* panelp = (LLPanelLandAccess*)data;
- if (panelp)
- {
- gFloaterView->getParentFloater(panelp)->addDependentFloater(LLFloaterAvatarPicker::show(callbackAvatarCBAccess, data) );
- }
+ gFloaterView->getParentFloater(this)->addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLPanelLandAccess::callbackAvatarCBAccess, this, _1,_2)) );
}
-// static
-void LLPanelLandAccess::callbackAvatarCBAccess(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata)
+void LLPanelLandAccess::callbackAvatarCBAccess(const std::vector<std::string>& names, const uuid_vec_t& ids)
{
- LLPanelLandAccess* panelp = (LLPanelLandAccess*)userdata;
if (!names.empty() && !ids.empty())
{
LLUUID id = ids[0];
- LLParcel* parcel = panelp->mParcel->getParcel();
+ LLParcel* parcel = mParcel->getParcel();
if (parcel)
{
parcel->addToAccessList(id, 0);
LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(AL_ACCESS);
- panelp->refresh();
+ refresh();
}
}
}
@@ -2735,25 +2813,23 @@ void LLPanelLandAccess::onClickRemoveAccess(void* data)
}
// static
-void LLPanelLandAccess::onClickAddBanned(void* data)
+void LLPanelLandAccess::onClickAddBanned()
{
- LLPanelLandAccess* panelp = (LLPanelLandAccess*)data;
- gFloaterView->getParentFloater(panelp)->addDependentFloater(LLFloaterAvatarPicker::show(callbackAvatarCBBanned, data) );
+ gFloaterView->getParentFloater(this)->addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLPanelLandAccess::callbackAvatarCBBanned, this, _1,_2)));
}
// static
-void LLPanelLandAccess::callbackAvatarCBBanned(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata)
+void LLPanelLandAccess::callbackAvatarCBBanned(const std::vector<std::string>& names, const uuid_vec_t& ids)
{
- LLPanelLandAccess* panelp = (LLPanelLandAccess*)userdata;
if (!names.empty() && !ids.empty())
{
LLUUID id = ids[0];
- LLParcel* parcel = panelp->mParcel->getParcel();
+ LLParcel* parcel = mParcel->getParcel();
if (parcel)
{
parcel->addToBanList(id, 0);
LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(AL_BAN);
- panelp->refresh();
+ refresh();
}
}
}
@@ -2794,12 +2870,6 @@ LLPanelLandCovenant::~LLPanelLandCovenant()
{
}
-BOOL LLPanelLandCovenant::postBuild()
-{
- refresh();
- return TRUE;
-}
-
// virtual
void LLPanelLandCovenant::refresh()
{
@@ -2821,7 +2891,7 @@ void LLPanelLandCovenant::refresh()
LLTextBox* region_maturity = getChild<LLTextBox>("region_maturity_text");
if (region_maturity)
{
- region_maturity->setText(region->getSimAccessString());
+ insert_maturity_into_textbox(region_maturity, gFloaterView->getParentFloater(this), MATURITY);
}
LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
@@ -2902,3 +2972,51 @@ void LLPanelLandCovenant::updateEstateOwnerName(const std::string& name)
if (editor) editor->setText(name);
}
}
+
+// inserts maturity info(icon and text) into target textbox
+// names_floater - pointer to floater which contains strings with maturity icons filenames
+// str_to_parse is string in format "txt1[MATURITY]txt2" where maturity icon and text will be inserted instead of [MATURITY]
+void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_floater, std::string str_to_parse)
+{
+ LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+ if (!region)
+ return;
+
+ LLStyle::Params style;
+
+ U8 sim_access = region->getSimAccess();
+
+ switch(sim_access)
+ {
+ case SIM_ACCESS_PG:
+ style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_general")));
+ break;
+
+ case SIM_ACCESS_ADULT:
+ style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_adult")));
+ break;
+
+ case SIM_ACCESS_MATURE:
+ style.image(LLUI::getUIImage(names_floater->getString("maturity_icon_moderate")));
+ break;
+
+ default:
+ break;
+ }
+
+ size_t maturity_pos = str_to_parse.find(MATURITY);
+
+ if (maturity_pos == std::string::npos)
+ {
+ return;
+ }
+
+ std::string text_before_rating = str_to_parse.substr(0, maturity_pos);
+ std::string text_after_rating = str_to_parse.substr(maturity_pos + MATURITY.length());
+
+ target_textbox->setText(text_before_rating);
+ // any text may be here instead of "icon" except ""
+ target_textbox->appendText(std::string("icon"), false, style);
+ target_textbox->appendText(LLViewerParcelMgr::getInstance()->getSelectionRegion()->getSimAccessString(), false);
+ target_textbox->appendText(text_after_rating, false);
+}