MAINT-6400 Make the region "Object Bonus" setting safer

meow-7.2.2
Mnikolenko Productengine 2016-05-13 13:33:14 +03:00
parent 5048402da8
commit 87ca1fc3d9
3 changed files with 71 additions and 1 deletions

View File

@ -412,6 +412,11 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
panel->getChild<LLUICtrl>("object_bonus_spin")->setValue(LLSD(object_bonus_factor) );
panel->getChild<LLUICtrl>("access_combo")->setValue(LLSD(sim_access) );
LLPanelRegionGeneralInfo* panel_general = LLFloaterRegionInfo::getPanelGeneral();
if (panel)
{
panel_general->setObjBonusFactor(object_bonus_factor);
}
// detect teen grid for maturity
@ -464,6 +469,16 @@ LLPanelEstateCovenant* LLFloaterRegionInfo::getPanelCovenant()
return panel;
}
// static
LLPanelRegionGeneralInfo* LLFloaterRegionInfo::getPanelGeneral()
{
LLFloaterRegionInfo* floater = LLFloaterReg::getTypedInstance<LLFloaterRegionInfo>("region_info");
if (!floater) return NULL;
LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
LLPanelRegionGeneralInfo* panel = (LLPanelRegionGeneralInfo*)tab->getChild<LLPanel>("General");
return panel;
}
// static
LLPanelRegionTerrainInfo* LLFloaterRegionInfo::getPanelRegionTerrain()
{
@ -717,7 +732,42 @@ BOOL LLPanelRegionGeneralInfo::postBuild()
childSetAction("im_btn", onClickMessage, this);
// childSetAction("manage_telehub_btn", onClickManageTelehub, this);
return LLPanelRegionInfo::postBuild();
LLUICtrl* apply_btn = findChild<LLUICtrl>("apply_btn");
if (apply_btn)
{
apply_btn->setCommitCallback(boost::bind(&LLPanelRegionGeneralInfo::onBtnSet, this));
}
refresh();
return TRUE;
}
void LLPanelRegionGeneralInfo::onBtnSet()
{
if(mObjBonusFactor == getChild<LLUICtrl>("object_bonus_spin")->getValue().asReal())
{
if (sendUpdate())
{
disableButton("apply_btn");
}
}
else
{
LLNotificationsUtil::add("ChangeObjectBonusFactor", LLSD(), LLSD(), boost::bind(&LLPanelRegionGeneralInfo::onChangeObjectBonus, this, _1, _2));
}
}
bool LLPanelRegionGeneralInfo::onChangeObjectBonus(const LLSD& notification, const LLSD& response)
{
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (option == 0)
{
if (sendUpdate())
{
disableButton("apply_btn");
}
}
return false;
}
void LLPanelRegionGeneralInfo::onClickKick()

View File

@ -95,6 +95,7 @@ public:
static LLPanelEstateCovenant* getPanelCovenant();
static LLPanelRegionTerrainInfo* getPanelRegionTerrain();
static LLPanelRegionExperiences* getPanelExperiences();
static LLPanelRegionGeneralInfo* getPanelGeneral();
// from LLPanel
virtual void refresh();
@ -183,6 +184,9 @@ public:
// LLPanel
virtual BOOL postBuild();
void onBtnSet();
void setObjBonusFactor(F32 object_bonus_factor) {mObjBonusFactor = object_bonus_factor;}
protected:
virtual BOOL sendUpdate();
void onClickKick();
@ -191,6 +195,9 @@ protected:
bool onKickAllCommit(const LLSD& notification, const LLSD& response);
static void onClickMessage(void* userdata);
bool onMessageCommit(const LLSD& notification, const LLSD& response);
bool onChangeObjectBonus(const LLSD& notification, const LLSD& response);
F32 mObjBonusFactor;
};

View File

@ -3542,6 +3542,19 @@ Teleport all Residents in this region home?
yestext="OK"/>
</notification>
<notification
icon="alertmodal.tga"
name="ChangeObjectBonusFactor"
type="alertmodal">
Lowering the object bonus after builds have been established in a region may cause objects to be returned or deleted. Are you sure you want to change object bonus?
<tag>confirm</tag>
<usetemplate
ignoretext="Confirm changing object bonus factor"
name="okcancelignore"
notext="Cancel"
yestext="OK"/>
</notification>
<notification
icon="alertmodal.tga"
name="EstateObjectReturn"