diff options
| -rw-r--r-- | indra/newview/llpanelpick.cpp | 86 | ||||
| -rw-r--r-- | indra/newview/llpanelpick.h | 12 | ||||
| -rw-r--r-- | indra/newview/llpanelplaceinfo.cpp | 13 | ||||
| -rw-r--r-- | indra/newview/llpanelplaceinfo.h | 1 | 
4 files changed, 67 insertions, 45 deletions
| diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index 541361324a..839452d061 100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -91,12 +91,19 @@ LLPanelPickInfo::LLPanelPickInfo()   , mAvatarId(LLUUID::null)   , mSnapshotCtrl(NULL)   , mPickId(LLUUID::null) + , mParcelId(LLUUID::null) + , mRequestedId(LLUUID::null)  {  }  LLPanelPickInfo::~LLPanelPickInfo()  {  	LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(), this); + +	if (mParcelId.notNull()) +	{ +		LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelId, this); +	}  }  void LLPanelPickInfo::onOpen(const LLSD& key) @@ -156,12 +163,14 @@ void LLPanelPickInfo::processProperties(void* data, EAvatarProcessorType type)  		return;  	} +	mParcelId = pick_info->parcel_id;  	setSnapshotId(pick_info->snapshot_id);  	setPickName(pick_info->name);  	setPickDesc(pick_info->desc);  	setPosGlobal(pick_info->pos_global); -	setPickLocation(createLocationText(pick_info->user_name, pick_info->original_name,  -		pick_info->sim_name, pick_info->pos_global)); + +	// Send remote parcel info request to get parcel name and sim (region) name. +	sendParcelInfoRequest();  	// *NOTE dzaporozhan  	// We want to keep listening to APT_PICK_INFO because user may  @@ -169,6 +178,17 @@ void LLPanelPickInfo::processProperties(void* data, EAvatarProcessorType type)  	// revomeObserver is called from onClickBack  } +void LLPanelPickInfo::sendParcelInfoRequest() +{ +	if (mParcelId != mRequestedId) +	{ +		LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelId, this); +		LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelId); + +		mRequestedId = mParcelId; +	} +} +  void LLPanelPickInfo::setExitCallback(const commit_callback_t& cb)  {  	getChild<LLButton>("back_btn")->setClickedCallback(cb); @@ -176,21 +196,16 @@ void LLPanelPickInfo::setExitCallback(const commit_callback_t& cb)  void LLPanelPickInfo::processParcelInfo(const LLParcelData& parcel_data)  { -	// HACK: Flag 0x2 == adult region, -	// Flag 0x1 == mature region, otherwise assume PG -	std::string rating_icon = "icon_event.tga"; -	if (parcel_data.flags & 0x2) -	{ -		rating_icon = "icon_event_adult.tga"; -	} -	else if (parcel_data.flags & 0x1) -	{ -		rating_icon = "icon_event_mature.tga"; -	} +	setPickLocation(createLocationText(LLStringUtil::null, parcel_data.name, +		parcel_data.sim_name, getPosGlobal())); -	childSetValue("maturity", rating_icon); +	// We have received parcel info for the requested ID so clear it now. +	mRequestedId.setNull(); -	//*NOTE we don't removeObserver(...) ourselves cause LLRemoveParcelProcessor does it for us +	if (mParcelId.notNull()) +	{ +		LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelId, this); +	}  }  void LLPanelPickInfo::setEditPickCallback(const commit_callback_t& cb) @@ -222,7 +237,8 @@ void LLPanelPickInfo::resetData()  	setPickId(LLUUID::null);  	setSnapshotId(LLUUID::null);  	mPosGlobal.clearVec(); -	childSetValue("maturity", LLStringUtil::null); +	mParcelId.setNull(); +	mRequestedId.setNull();  }  // static @@ -273,9 +289,6 @@ void LLPanelPickInfo::setPickDesc(const std::string& desc)  void LLPanelPickInfo::setPickLocation(const std::string& location)  {  	childSetValue(XML_LOCATION, location); - -	//preserving non-wrapped text for info/edit modes switching -	mLocation = location;  }  void LLPanelPickInfo::onClickMap() @@ -340,7 +353,7 @@ void LLPanelPickEdit::onOpen(const LLSD& key)  		setPosGlobal(gAgent.getPositionGlobal());  		LLUUID parcel_id = LLUUID::null, snapshot_id = LLUUID::null; -		std::string pick_name, pick_desc; +		std::string pick_name, pick_desc, region_name;  		LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();  		if(parcel) @@ -351,21 +364,17 @@ void LLPanelPickEdit::onOpen(const LLSD& key)  			snapshot_id = parcel->getSnapshotID();  		} -		if(pick_name.empty()) +		LLViewerRegion* region = gAgent.getRegion(); +		if(region)  		{ -			LLViewerRegion* region = gAgent.getRegion(); -			if(region) -			{ -				pick_name = region->getName(); -			} +			region_name = region->getName();  		}  		setParcelID(parcel_id); -		childSetValue("pick_name", pick_name); +		childSetValue("pick_name", pick_name.empty() ? region_name : pick_name);  		childSetValue("pick_desc", pick_desc);  		setSnapshotId(snapshot_id); -		setPickLocation(createLocationText(LLStringUtil::null, SET_LOCATION_NOTICE,  -			pick_name, getPosGlobal())); +		setPickLocation(createLocationText(SET_LOCATION_NOTICE, pick_name, region_name, getPosGlobal()));  		enableSaveButton(true);  	} @@ -394,8 +403,9 @@ void LLPanelPickEdit::setPickData(const LLPickData* pick_data)  	childSetValue("pick_name", pick_data->name);  	childSetValue("pick_desc", pick_data->desc);  	setSnapshotId(pick_data->snapshot_id); -	setPickLocation(createLocationText(pick_data->user_name, pick_data->original_name, /*pick_data->sim_name,*/  -		pick_data->name, pick_data->pos_global)); +	setPosGlobal(pick_data->pos_global); +	setPickLocation(createLocationText(LLStringUtil::null, pick_data->name, +			pick_data->sim_name, pick_data->pos_global));  }  BOOL LLPanelPickEdit::postBuild() @@ -519,14 +529,22 @@ void LLPanelPickEdit::onClickSetLocation()  	// Save location for later use.  	setPosGlobal(gAgent.getPositionGlobal()); +	std::string parcel_name, region_name; +  	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();  	if (parcel)  	{  		mParcelId = parcel->getID(); -		mSimName = parcel->getName(); +		parcel_name = parcel->getName();  	} -	setPickLocation(createLocationText( -		LLStringUtil::null, SET_LOCATION_NOTICE, mSimName, getPosGlobal())); + +	LLViewerRegion* region = gAgent.getRegion(); +	if(region) +	{ +		region_name = region->getName(); +	} + +	setPickLocation(createLocationText(SET_LOCATION_NOTICE, parcel_name, region_name, getPosGlobal()));  	mLocationChanged = true;  	enableSaveButton(TRUE); diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h index 2c0830f2ac..95add387d0 100644 --- a/indra/newview/llpanelpick.h +++ b/indra/newview/llpanelpick.h @@ -72,6 +72,11 @@ public:  	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);  	/** +	 * Sends remote parcel info request to resolve parcel name from its ID. +	 */ +	void sendParcelInfoRequest(); + +	/**  	 * Sets "Back" button click callback  	 */  	virtual void setExitCallback(const commit_callback_t& cb); @@ -81,9 +86,9 @@ public:  	 */  	virtual void setEditPickCallback(const commit_callback_t& cb); -	//This stuff we got from LLRemoteParcelObserver, in the last two we intentionally do nothing +	//This stuff we got from LLRemoteParcelObserver, in the last one we intentionally do nothing  	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); -	/*virtual*/ void setParcelID(const LLUUID& parcel_id) {}; +	/*virtual*/ void setParcelID(const LLUUID& parcel_id) { mParcelId = parcel_id; }  	/*virtual*/ void setErrorStatus(U32 status, const std::string& reason) {};  protected: @@ -154,8 +159,7 @@ protected:  	LLVector3d mPosGlobal;  	LLUUID mParcelId;  	LLUUID mPickId; -	std::string mSimName; -	std::string mLocation; +	LLUUID mRequestedId;  };  /** diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index b845f38ace..b80eb9db38 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -233,8 +233,10 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data)  	if (!parcel_data.name.empty())  	{ +		mParcelTitle = parcel_data.name; +  		mParcelName->setText(llformat("%s (%d, %d, %d)", -							 parcel_data.name.c_str(), region_x, region_y, region_z)); +							 mParcelTitle.c_str(), region_x, region_y, region_z));  	}  	else  	{ @@ -284,15 +286,12 @@ void LLPanelPlaceInfo::handleVisibilityChange(BOOL new_visibility)  void LLPanelPlaceInfo::createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel)  { -	std::string name = mParcelName->getText(); -	if (name.empty()) -	{ -		name = mRegionName->getText(); -	} +	std::string region_name = mRegionName->getText();  	LLPickData data;  	data.pos_global = pos_global; -	data.name = name; +	data.name = mParcelTitle.empty() ? region_name : mParcelTitle; +	data.sim_name = region_name;  	data.desc = mDescEditor->getText();  	data.snapshot_id = mSnapshotCtrl->getImageAssetID();  	data.parcel_id = mParcelID; diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h index b9bf92b534..7dfc7b2444 100644 --- a/indra/newview/llpanelplaceinfo.h +++ b/indra/newview/llpanelplaceinfo.h @@ -111,6 +111,7 @@ protected:  	LLUUID					mParcelID;  	LLUUID					mRequestedID;  	LLVector3				mPosRegion; +	std::string				mParcelTitle; // used for pick title without coordinates  	std::string				mCurrentTitle;  	S32						mScrollingPanelMinHeight;  	S32						mScrollingPanelWidth; | 
