diff options
| author | Alexei Arabadji <aarabadji@productengine.com> | 2010-06-10 14:43:28 +0300 | 
|---|---|---|
| committer | Alexei Arabadji <aarabadji@productengine.com> | 2010-06-10 14:43:28 +0300 | 
| commit | e22f4bb4e793457cf8f18db530c306fa22e8c35b (patch) | |
| tree | ae0b8e08c3abacc7a07bd389cc3bb8b53c9a696b | |
| parent | 7629a39a6df70b2a04cd1e4f259b32a863c355f6 (diff) | |
EXT-7613 FIXED Provided updating of base outfit name on outfit rename event.
1 Updated LLOutfitObserver to provide controlling of changing outfit name.
2 Added call of LLPanelOutfitEdit::updateCurrentOutfitName to LLPanelOutfitEdit::updateVerbs since both should be called on BOFChanged signal.
3 Corrected updating field LLOutfitObserver::mBaseOutfitLastVersion.
reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/553/
--HG--
branch : product-engine
| -rw-r--r-- | indra/newview/lloutfitobserver.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/lloutfitobserver.h | 3 | ||||
| -rw-r--r-- | indra/newview/llpaneloutfitedit.cpp | 1 | 
3 files changed, 21 insertions, 3 deletions
diff --git a/indra/newview/lloutfitobserver.cpp b/indra/newview/lloutfitobserver.cpp index 5652a98981..efa01bade9 100644 --- a/indra/newview/lloutfitobserver.cpp +++ b/indra/newview/lloutfitobserver.cpp @@ -74,6 +74,16 @@ S32 LLOutfitObserver::getCategoryVersion(const LLUUID& cat_id)  	return cat->getVersion();  } +// static +const std::string& LLOutfitObserver::getCategoryName(const LLUUID& cat_id) +{ +	LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); +	if (!cat) +		return LLStringUtil::null; + +	return cat->getName(); +} +  bool LLOutfitObserver::checkCOF()  {  	LLUUID cof = LLAppearanceMgr::getInstance()->getCOF(); @@ -105,8 +115,11 @@ void LLOutfitObserver::checkBaseOutfit()  			return;  		const S32 baseoutfit_ver = getCategoryVersion(baseoutfit_id); +		const std::string& baseoutfit_name = getCategoryName(baseoutfit_id); -		if (baseoutfit_ver == mBaseOutfitLastVersion) +		if (baseoutfit_ver == mBaseOutfitLastVersion +				// renaming category doesn't change version, so it's need to check it +				&& baseoutfit_name == mLastBaseOutfitName)  			return;  	}  	else @@ -116,10 +129,11 @@ void LLOutfitObserver::checkBaseOutfit()  		if (baseoutfit_id.isNull())  			return; - -		mBaseOutfitLastVersion = getCategoryVersion(mBaseOutfitId);  	} +	mBaseOutfitLastVersion = getCategoryVersion(mBaseOutfitId); +	mLastBaseOutfitName = getCategoryName(baseoutfit_id); +  	LLAppearanceMgr& app_mgr = LLAppearanceMgr::instance();  	// dirtiness state should be updated before sending signal  	app_mgr.updateIsDirty(); diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h index a4b5fbe04a..3a66b5ea9f 100644 --- a/indra/newview/lloutfitobserver.h +++ b/indra/newview/lloutfitobserver.h @@ -68,6 +68,8 @@ protected:  	/** Get a version of an inventory category specified by its UUID */  	static S32 getCategoryVersion(const LLUUID& cat_id); +	static const std::string& getCategoryName(const LLUUID& cat_id); +  	bool checkCOF();  	void checkBaseOutfit(); @@ -78,6 +80,7 @@ protected:  	LLUUID mBaseOutfitId;  	S32 mBaseOutfitLastVersion; +	std::string mLastBaseOutfitName;  	bool mLastOutfitDirtiness; diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 3d0684afca..32b209dd0d 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -707,6 +707,7 @@ void LLPanelOutfitEdit::updateVerbs()  	mStatus->setText(outfit_is_dirty ? getString("unsaved_changes") : getString("now_editing")); +	updateCurrentOutfitName();  }  bool LLPanelOutfitEdit::switchPanels(LLPanel* switch_from_panel, LLPanel* switch_to_panel)  | 
