diff options
| author | Monroe Linden <monroe@lindenlab.com> | 2010-06-03 16:40:44 -0700 | 
|---|---|---|
| committer | Monroe Linden <monroe@lindenlab.com> | 2010-06-03 16:40:44 -0700 | 
| commit | a9164676687341fae33d3fe5f22b05156a65ff85 (patch) | |
| tree | 94494a6517ff653612b618e56dad5b6a4a650b6c | |
| parent | fbee0d8ef1cfd97c2ef52398d19d038c145bae67 (diff) | |
Code cleanup in LLPanelEditWearable, from Nyx.
Removed the misnamed LLPanelEditWearable::initializePanel() (which was actually being called multiple times for each object), and moved its functionality to postBuild() and showWearable().
| -rw-r--r-- | indra/newview/llpaneleditwearable.cpp | 206 | ||||
| -rw-r--r-- | indra/newview/llpaneleditwearable.h | 1 | 
2 files changed, 109 insertions, 98 deletions
| diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 36f2d05fab..8d0e3d4647 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -520,7 +520,8 @@ static void init_color_swatch_ctrl(LLPanelEditWearable* self, LLPanel* panel, co  	LLColorSwatchCtrl* color_swatch_ctrl = panel->getChild<LLColorSwatchCtrl>(entry->mControlName);  	if (color_swatch_ctrl)  	{ -		color_swatch_ctrl->setOriginal(self->getWearable()->getClothesColor(entry->mTextureIndex)); +		// Can't get the color from the wearable here, since the wearable may not be set when this is called. +		color_swatch_ctrl->setOriginal(LLColor4::white);  	}  } @@ -654,6 +655,49 @@ BOOL LLPanelEditWearable::postBuild()  	configureAlphaCheckbox(LLVOAvatarDefines::TEX_EYES_ALPHA, "eye alpha texture invisible");  	configureAlphaCheckbox(LLVOAvatarDefines::TEX_HAIR_ALPHA, "hair alpha texture invisible"); +	// configure tab expanded callbacks +	for (U32 type_index = 0; type_index < (U32)LLWearableType::WT_COUNT; ++type_index) +	{ +		LLWearableType::EType type = (LLWearableType::EType) type_index; +		const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(type); +		if (!wearable_entry) +		{ +			llwarns << "could not get wearable dictionary entry for wearable of type: " << type << llendl; +			continue; +		} +		U8 num_subparts = wearable_entry->mSubparts.size(); +	 +		for (U8 index = 0; index < num_subparts; ++index) +		{ +			// dive into data structures to get the panel we need +			ESubpart subpart_e = wearable_entry->mSubparts[index]; +			const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); +	 +			if (!subpart_entry) +			{ +				llwarns << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << llendl; +				continue; +			} +	 +			const std::string accordion_tab = subpart_entry->mAccordionTab; +	 +			LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab); +	 +			if (!tab) +			{ +				llwarns << "could not get llaccordionctrltab from UI with name: " << accordion_tab << llendl; +				continue; +			} +	 +			// initialize callback to ensure camera view changes appropriately. +			tab->setDropDownStateChangedCallback(boost::bind(&LLPanelEditWearable::onTabExpandedCollapsed,this,_2,index)); +		} + +		// initialize texture and color picker controls +		for_each_picker_ctrl_entry <LLColorSwatchCtrl> (getPanel(type), type, boost::bind(init_color_swatch_ctrl, this, _1, _2)); +		for_each_picker_ctrl_entry <LLTextureCtrl>     (getPanel(type), type, boost::bind(init_texture_ctrl, this, _1, _2)); +	} +  	return TRUE;  } @@ -690,10 +734,9 @@ void LLPanelEditWearable::setWearable(LLWearable *wearable)  	showWearable(mWearablePtr, FALSE);  	mWearablePtr = wearable;  	showWearable(mWearablePtr, TRUE); - -	initializePanel();  } +  //static   void LLPanelEditWearable::onRevertButtonClicked(void* userdata)  { @@ -880,29 +923,83 @@ void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show)  	std::string title;  	std::string description_title; -	const LLEditWearableDictionary::WearableEntry *entry = LLEditWearableDictionary::getInstance()->getWearable(type); -	if (!entry) +	const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(type); +	if (!wearable_entry)  	{  		llwarns << "called LLPanelEditWearable::showWearable with an invalid wearable type! (" << type << ")" << llendl;  		return;  	}  	targetPanel = getPanel(type); -	title = getString(entry->mTitle); -	description_title = getString(entry->mDescTitle); +	title = getString(wearable_entry->mTitle); +	description_title = getString(wearable_entry->mDescTitle); + +	// Update picker controls state +	for_each_picker_ctrl_entry <LLColorSwatchCtrl> (targetPanel, type, boost::bind(set_enabled_color_swatch_ctrl, show, _1, _2)); +	for_each_picker_ctrl_entry <LLTextureCtrl>     (targetPanel, type, boost::bind(set_enabled_texture_ctrl, show, _1, _2));  	targetPanel->setVisible(show); +	toggleTypeSpecificControls(type); +  	if (show)  	{  		mPanelTitle->setText(title);  		mDescTitle->setText(description_title); -	} +		 +		// set name +		mTextEditor->setText(wearable->getName()); -	// Update picker controls state -	for_each_picker_ctrl_entry <LLColorSwatchCtrl> (targetPanel, type, boost::bind(set_enabled_color_swatch_ctrl, show, _1, _2)); -	for_each_picker_ctrl_entry <LLTextureCtrl>     (targetPanel, type, boost::bind(set_enabled_texture_ctrl, show, _1, _2)); +		updatePanelPickerControls(type); +		updateTypeSpecificControls(type); -	showDefaultSubpart(); +		// clear and rebuild visual param list +		U8 num_subparts = wearable_entry->mSubparts.size(); +	 +		for (U8 index = 0; index < num_subparts; ++index) +		{ +			// dive into data structures to get the panel we need +			ESubpart subpart_e = wearable_entry->mSubparts[index]; +			const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); +	 +			if (!subpart_entry) +			{ +				llwarns << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << llendl; +				continue; +			} +	 +			const std::string scrolling_panel = subpart_entry->mParamList; +			const std::string accordion_tab = subpart_entry->mAccordionTab; +	 +			LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel); +			LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab); +	 +			if (!panel_list) +			{ +				llwarns << "could not get scrolling panel list: " << scrolling_panel << llendl; +				continue; +			} +	 +			if (!tab) +			{ +				llwarns << "could not get llaccordionctrltab from UI with name: " << accordion_tab << llendl; +				continue; +			} +	 +			// what edit group do we want to extract params for? +			const std::string edit_group = subpart_entry->mEditGroup; +	 +			// storage for ordered list of visual params +			value_map_t sorted_params; +			getSortedParams(sorted_params, edit_group); +	 +			buildParamList(panel_list, sorted_params, tab); +	 +			updateScrollingPanelUI(); +		} +		showDefaultSubpart(); + +		updateVerbs(); +	}  }  void LLPanelEditWearable::showDefaultSubpart() @@ -967,91 +1064,6 @@ void LLPanelEditWearable::updateScrollingPanelList()  	updateScrollingPanelUI();  } -void LLPanelEditWearable::initializePanel() -{ -	if (!mWearablePtr) -	{ -		// cannot initialize with a null reference. -		return; -	} - -	LLWearableType::EType type = mWearablePtr->getType(); - -	// set name -	mTextEditor->setText(mWearablePtr->getName()); - -	// toggle wearable type-specific controls -	toggleTypeSpecificControls(type); - -	// clear and rebuild visual param list -	const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(type); -	if (!wearable_entry) -	{ -		llwarns << "could not get wearable dictionary entry for wearable of type: " << type << llendl; -		return; -	} -	U8 num_subparts = wearable_entry->mSubparts.size(); - -	for (U8 index = 0; index < num_subparts; ++index) -	{ -		// dive into data structures to get the panel we need -		ESubpart subpart_e = wearable_entry->mSubparts[index]; -		const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); - -		if (!subpart_entry) -		{ -			llwarns << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << llendl; -			continue; -		} - -		const std::string scrolling_panel = subpart_entry->mParamList; -		const std::string accordion_tab = subpart_entry->mAccordionTab; - -		LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel); -		LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab); - -		if (!panel_list) -		{ -			llwarns << "could not get scrolling panel list: " << scrolling_panel << llendl; -			continue; -		} - -		if (!tab) -		{ -			llwarns << "could not get llaccordionctrltab from UI with name: " << accordion_tab << llendl; -			continue; -		} - -		// what edit group do we want to extract params for? -		const std::string edit_group = subpart_entry->mEditGroup; - -		// initialize callback to ensure camera view changes appropriately. -		tab->setDropDownStateChangedCallback(boost::bind(&LLPanelEditWearable::onTabExpandedCollapsed,this,_2,index)); - -		// storage for ordered list of visual params -		value_map_t sorted_params; -		getSortedParams(sorted_params, edit_group); - -		buildParamList(panel_list, sorted_params, tab); - -		updateScrollingPanelUI(); -	} - -	// initialize texture and color picker controls -	for_each_picker_ctrl_entry <LLColorSwatchCtrl> (getPanel(type), type, boost::bind(init_color_swatch_ctrl, this, _1, _2)); -	for_each_picker_ctrl_entry <LLTextureCtrl>     (getPanel(type), type, boost::bind(init_texture_ctrl, this, _1, _2)); - -	showDefaultSubpart(); -	updateVerbs(); - -	if (getWearable()) -	{ -		LLWearableType::EType type = getWearable()->getType(); -		updatePanelPickerControls(type); -		updateTypeSpecificControls(type); -	} -} -  void LLPanelEditWearable::toggleTypeSpecificControls(LLWearableType::EType type)  {  	// Toggle controls specific to shape editing panel. diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h index b6b8c0c781..6b376fe3d9 100644 --- a/indra/newview/llpaneleditwearable.h +++ b/indra/newview/llpaneleditwearable.h @@ -78,7 +78,6 @@ private:  	typedef std::map<F32, LLViewerVisualParam*> value_map_t;  	void				showWearable(LLWearable* wearable, BOOL show); -	void				initializePanel();  	void				updateScrollingPanelUI();  	LLPanel*			getPanel(LLWearableType::EType type);  	void				getSortedParams(value_map_t &sorted_params, const std::string &edit_group); | 
