summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelplaceprofile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanelplaceprofile.cpp')
-rw-r--r--[-rwxr-xr-x]indra/newview/llpanelplaceprofile.cpp36
1 files changed, 27 insertions, 9 deletions
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index e853b2d050..2fa4ee376a 100755..100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -53,6 +53,8 @@
#include "llviewerparcelmgr.h"
#include "llviewerregion.h"
+const F64 COVENANT_REFRESH_TIME_SEC = 60.0f;
+
static LLPanelInjector<LLPanelPlaceProfile> t_place_profile("panel_place_profile");
// Statics for textures filenames
@@ -76,6 +78,7 @@ static std::string icon_see_avs_off;
LLPanelPlaceProfile::LLPanelPlaceProfile()
: LLPanelPlaceInfo(),
+ mNextCovenantUpdateTime(0),
mForSalePanel(NULL),
mYouAreHerePanel(NULL),
mSelectedParcelID(-1),
@@ -162,6 +165,9 @@ BOOL LLPanelPlaceProfile::postBuild()
icon_see_avs_on = getString("icon_SeeAVs_On");
icon_see_avs_off = getString("icon_SeeAVs_Off");
+ mLastSelectedRegionID = LLUUID::null;
+ mNextCovenantUpdateTime = 0;
+
return TRUE;
}
@@ -170,6 +176,9 @@ void LLPanelPlaceProfile::resetLocation()
{
LLPanelPlaceInfo::resetLocation();
+ mLastSelectedRegionID = LLUUID::null;
+ mNextCovenantUpdateTime = 0;
+
mForSalePanel->setVisible(FALSE);
mYouAreHerePanel->setVisible(FALSE);
@@ -215,6 +224,8 @@ void LLPanelPlaceProfile::resetLocation()
mSubdivideText->setValue(loading);
mResaleText->setValue(loading);
mSaleToText->setValue(loading);
+
+ getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(TRUE);
}
// virtual
@@ -330,13 +341,20 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
if (!region || !parcel)
return;
- // send EstateCovenantInfo message
- 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());
+ if (mLastSelectedRegionID != region->getRegionID()
+ || mNextCovenantUpdateTime < LLTimer::getElapsedSeconds())
+ {
+ // send EstateCovenantInfo message
+ // Note: LLPanelPlaceProfile 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());
+ mNextCovenantUpdateTime = LLTimer::getElapsedSeconds() + COVENANT_REFRESH_TIME_SEC;
+ }
LLParcelData parcel_data;
@@ -522,6 +540,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
F32 dwell;
BOOL for_sale;
vpm->getDisplayInfo(&area, &claim_price, &rent_price, &for_sale, &dwell);
+ mForSalePanel->setVisible(for_sale);
if (for_sale)
{
const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
@@ -540,8 +559,6 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
mSaleToText->setText(getString("anyone"));
}
- mForSalePanel->setVisible(for_sale);
-
const U8* sign = (U8*)getString("price_text").c_str();
const U8* sqm = (U8*)getString("area_text").c_str();
@@ -598,6 +615,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
mYouAreHerePanel->setVisible(is_current_parcel);
getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(for_sale);
+ mAccordionCtrl->arrange();
}
void LLPanelPlaceProfile::updateEstateName(const std::string& name)