diff options
Diffstat (limited to 'indra/newview')
22 files changed, 591 insertions, 573 deletions
| diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 4c0f51056d..88782e35dc 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -501,7 +501,7 @@ LLPanelClothingListItem* LLCOFWearables::buildClothingListItem(LLViewerInventory  	item_panel->childSetAction("btn_edit", mCOFCallbacks.mEditWearable);  	//turning on gray separator line for the last item in the items group of the same wearable type -	item_panel->childSetVisible("wearable_type_separator_icon", last); +	item_panel->setSeparatorVisible(last);  	return item_panel;  } @@ -637,10 +637,10 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()  	const LLAccordionCtrlTab* expanded_tab = accordion_ctrl->getExpandedTab();  	return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE); -} +	}  LLAssetType::EType LLCOFWearables::getSelectedAccordionAssetType() -{ +	{  	static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");  	const LLAccordionCtrlTab* selected_tab = accordion_ctrl->getSelectedTab(); diff --git a/indra/newview/lldndbutton.cpp b/indra/newview/lldndbutton.cpp index 22f2bb1d16..4f4c7dead7 100644 --- a/indra/newview/lldndbutton.cpp +++ b/indra/newview/lldndbutton.cpp @@ -42,7 +42,7 @@ LLDragAndDropButton::Params::Params()  } -LLDragAndDropButton::LLDragAndDropButton(Params& params) +LLDragAndDropButton::LLDragAndDropButton(const Params& params)  : LLButton(params)  { diff --git a/indra/newview/lldndbutton.h b/indra/newview/lldndbutton.h index c888268187..433b3f7ff5 100644 --- a/indra/newview/lldndbutton.h +++ b/indra/newview/lldndbutton.h @@ -54,7 +54,7 @@ public:  		Params();  	}; -	LLDragAndDropButton(Params& params); +	LLDragAndDropButton(const Params& params);  	typedef boost::function<bool (  		S32 /*x*/, S32 /*y*/, MASK /*mask*/, BOOL /*drop*/, diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp index a2b5ffbac4..cb7b338e95 100644 --- a/indra/newview/llinspectobject.cpp +++ b/indra/newview/llinspectobject.cpp @@ -161,8 +161,7 @@ BOOL LLInspectObject::postBuild(void)  	// Hide floater when name links clicked  	LLTextBox* textbox = getChild<LLTextBox>("object_creator"); -	textbox->mURLClickSignal.connect( -		boost::bind(&LLInspectObject::closeFloater, this, false) ); +	textbox->setURLClickedCallback(boost::bind(&LLInspectObject::closeFloater, this, false) );  	// Hook up functionality  	getChild<LLUICtrl>("buy_btn")->setCommitCallback( diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp index fbb3774917..e01f05c0f2 100644 --- a/indra/newview/llinventoryitemslist.cpp +++ b/indra/newview/llinventoryitemslist.cpp @@ -107,9 +107,12 @@ void LLInventoryItemsList::idle(void* user_data)  	}  } +LLFastTimer::DeclareTimer FTM_INVENTORY_ITEMS_REFRESH("Inventory List Refresh"); +  void LLInventoryItemsList::refresh()  { -	static const unsigned ADD_LIMIT = 50; +	LLFastTimer _(FTM_INVENTORY_ITEMS_REFRESH); +	static const unsigned ADD_LIMIT = 20;  	uuid_vec_t added_items;  	uuid_vec_t removed_items; @@ -140,7 +143,8 @@ void LLInventoryItemsList::refresh()  	it = removed_items.begin();  	for( ; removed_items.end() != it; ++it)  	{ -		removeItemByUUID(*it); +		// don't filter items right away +		removeItemByUUID(*it, false);  	}  	// Filter, rearrange and notify parent about shape changes diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp index c487aa10a7..e4a7a158a3 100644 --- a/indra/newview/llinventorylistitem.cpp +++ b/indra/newview/llinventorylistitem.cpp @@ -51,7 +51,12 @@ static const S32 WIDGET_SPACING = 3;  LLPanelInventoryListItemBase::Params::Params()  :	default_style("default_style"), -	worn_style("worn_style") +	worn_style("worn_style"), +	hover_image("hover_image"), +	selected_image("selected_image"), +	separator_image("separator_image"), +	item_icon("item_icon"), +	item_name("item_name")  {};  LLPanelInventoryListItemBase* LLPanelInventoryListItemBase::create(LLViewerInventoryItem* item) @@ -59,8 +64,10 @@ LLPanelInventoryListItemBase* LLPanelInventoryListItemBase::create(LLViewerInven  	LLPanelInventoryListItemBase* list_item = NULL;  	if (item)  	{ -		list_item = new LLPanelInventoryListItemBase(item); -		list_item->init(); +		const LLPanelInventoryListItemBase::Params& params = LLUICtrlFactory::getDefaultParams<LLPanelInventoryListItemBase>(); +		list_item = new LLPanelInventoryListItemBase(item, params); +		list_item->initFromParams(params); +		list_item->postBuild();  	}  	return list_item;  } @@ -76,6 +83,25 @@ void LLPanelInventoryListItemBase::draw()  		}  		setNeedsRefresh(false);  	} + +	if (mHovered && mHoverImage) +	{ +		mHoverImage->draw(getLocalRect()); +	} + +	if (mSelected && mSelectedImage) +	{ +		mSelectedImage->draw(getLocalRect()); +	} + +	if (mSeparatorVisible && mSeparatorImage) +	{ +		// stretch along bottom of listitem, using image height +		LLRect separator_rect = getLocalRect(); +		separator_rect.mTop = mSeparatorImage->getHeight(); +		mSeparatorImage->draw(separator_rect); +	} +	  	LLPanel::draw();  } @@ -134,9 +160,6 @@ void LLPanelInventoryListItemBase::setShowWidget(LLUICtrl* ctrl, bool show)  BOOL LLPanelInventoryListItemBase::postBuild()  { -	setIconCtrl(getChild<LLIconCtrl>("item_icon")); -	setTitleCtrl(getChild<LLTextBox>("item_name")); -  	LLViewerInventoryItem* inv_item = getItem();  	if (inv_item)  	{ @@ -156,18 +179,18 @@ void LLPanelInventoryListItemBase::setValue(const LLSD& value)  {  	if (!value.isMap()) return;  	if (!value.has("selected")) return; -	childSetVisible("selected_icon", value["selected"]); +	mSelected = value["selected"];  }  void LLPanelInventoryListItemBase::onMouseEnter(S32 x, S32 y, MASK mask)  { -	childSetVisible("hovered_icon", true); +	mHovered = true;  	LLPanel::onMouseEnter(x, y, mask);  }  void LLPanelInventoryListItemBase::onMouseLeave(S32 x, S32 y, MASK mask)  { -	childSetVisible("hovered_icon", false); +	mHovered = false;  	LLPanel::onMouseLeave(x, y, mask);  } @@ -244,21 +267,47 @@ S32 LLPanelInventoryListItemBase::notify(const LLSD& info)  	return rv;  } -LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem* item) -: LLPanel() -, mInventoryItemUUID(item ? item->getUUID() : LLUUID::null) -, mIconCtrl(NULL) -, mTitleCtrl(NULL) -, mWidgetSpacing(WIDGET_SPACING) -, mLeftWidgetsWidth(0) -, mRightWidgetsWidth(0) -, mNeedsRefresh(false) +LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem* item, const LLPanelInventoryListItemBase::Params& params) +:	LLPanel(params), +	mInventoryItemUUID(item ? item->getUUID() : LLUUID::null), +	mIconCtrl(NULL), +	mTitleCtrl(NULL), +	mWidgetSpacing(WIDGET_SPACING), +	mLeftWidgetsWidth(0), +	mRightWidgetsWidth(0), +	mNeedsRefresh(false), +	mHovered(false), +	mSelected(false), +	mSeparatorVisible(false), +	mHoverImage(params.hover_image), +	mSelectedImage(params.selected_image), +	mSeparatorImage(params.separator_image)  { -} +	LLIconCtrl::Params icon_params(params.item_icon); +	applyXUILayout(icon_params, this); -void LLPanelInventoryListItemBase::init() -{ -	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_inventory_item.xml"); +	mIconCtrl = LLUICtrlFactory::create<LLIconCtrl>(icon_params); +	if (mIconCtrl) +	{ +		addChild(mIconCtrl); +	} +	else +	{ +		mIconCtrl = dynamic_cast<LLIconCtrl*>(LLUICtrlFactory::createDefaultWidget<LLIconCtrl>("item_icon")); +	} + +	LLTextBox::Params text_params(params.item_name); +	applyXUILayout(text_params, this); + +	mTitleCtrl = LLUICtrlFactory::create<LLTextBox>(text_params); +	if (mTitleCtrl) +	{ +		addChild(mTitleCtrl); +	} +	else +	{ +		mTitleCtrl = dynamic_cast<LLTextBox*>(LLUICtrlFactory::createDefaultWidget<LLTextBox>("item_title")); +	}  }  class WidgetVisibilityChanger diff --git a/indra/newview/llinventorylistitem.h b/indra/newview/llinventorylistitem.h index f29d92d51c..575f6aec19 100644 --- a/indra/newview/llinventorylistitem.h +++ b/indra/newview/llinventorylistitem.h @@ -41,12 +41,12 @@  // llui  #include "llpanel.h"  #include "llstyle.h" +#include "lliconctrl.h" +#include "lltextbox.h"  // newview  #include "llwearabletype.h" -class LLIconCtrl; -class LLTextBox;  class LLViewerInventoryItem;  /** @@ -70,6 +70,11 @@ public:  	{  		Optional<LLStyle::Params>	default_style,  									worn_style; +		Optional<LLUIImage*>		hover_image, +									selected_image, +									separator_image; +		Optional<LLIconCtrl::Params>	item_icon; +		Optional<LLTextBox::Params>		item_name;  		Params();  	}; @@ -149,30 +154,22 @@ public:  	/** Get the associated inventory item */  	LLViewerInventoryItem* getItem() const; +	void setSeparatorVisible(bool visible) { mSeparatorVisible = visible; } +  	virtual ~LLPanelInventoryListItemBase(){}  protected: -	LLPanelInventoryListItemBase(LLViewerInventoryItem* item); +	LLPanelInventoryListItemBase(LLViewerInventoryItem* item, const Params& params);  	typedef std::vector<LLUICtrl*> widget_array_t;  	/** -	 * Use it from a factory function to build panel, do not build panel in constructor -	 */ -	virtual void init(); - -	/**  	 * Called after inventory item was updated, update panel widgets to reflect inventory changes.  	 */  	virtual void updateItem(const std::string& name,  							EItemState item_state = IS_DEFAULT); -	/** setter for mIconCtrl */ -	void setIconCtrl(LLIconCtrl* icon) { mIconCtrl = icon; } -	/** setter for MTitleCtrl */ -	void setTitleCtrl(LLTextBox* tb) { mTitleCtrl = tb; } -  	void setLeftWidgetsWidth(S32 width) { mLeftWidgetsWidth = width; }  	void setRightWidgetsWidth(S32 width) { mRightWidgetsWidth = width; } @@ -221,6 +218,14 @@ private:  	LLTextBox*		mTitleCtrl;  	LLUIImagePtr	mIconImage; +	LLUIImagePtr	mHoverImage; +	LLUIImagePtr	mSelectedImage; +	LLUIImagePtr	mSeparatorImage; + +	bool			mHovered; +	bool			mSelected; +	bool			mSeparatorVisible; +  	std::string		mHighlightedText;  	widget_array_t	mLeftSideWidgets; diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 98282c1673..7104f3934d 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -230,15 +230,15 @@ LLSideTrayTab*  LLSideTrayTab::createInstance	()  LLSideTray::Params::Params()  :	collapsed("collapsed",false), -	tab_btn_image_normal("tab_btn_image","sidebar_tab_left.tga"), -	tab_btn_image_selected("tab_btn_image_selected","button_enabled_selected_32x128.tga"), +	tab_btn_image_normal("tab_btn_image",LLUI::getUIImage("sidebar_tab_left.tga")), +	tab_btn_image_selected("tab_btn_image_selected",LLUI::getUIImage("button_enabled_selected_32x128.tga")),  	default_button_width("tab_btn_width",32),  	default_button_height("tab_btn_height",32),  	default_button_margin("tab_btn_margin",0)  {}  //virtual  -LLSideTray::LLSideTray(Params& params) +LLSideTray::LLSideTray(const Params& params)  	   : LLPanel(params)  	    ,mActiveTab(0)  		,mCollapsed(false) @@ -373,10 +373,10 @@ LLButton* LLSideTray::createButton	(const std::string& name,const std::string& i  	bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP);  	bparams.rect (rect);  	bparams.tab_stop(false); -	bparams.image_unselected.name(sidetray_params.tab_btn_image_normal); -	bparams.image_selected.name(sidetray_params.tab_btn_image_selected); -	bparams.image_disabled.name(sidetray_params.tab_btn_image_normal); -	bparams.image_disabled_selected.name(sidetray_params.tab_btn_image_selected); +	bparams.image_unselected(sidetray_params.tab_btn_image_normal); +	bparams.image_selected(sidetray_params.tab_btn_image_selected); +	bparams.image_disabled(sidetray_params.tab_btn_image_normal); +	bparams.image_disabled_selected(sidetray_params.tab_btn_image_selected);  	LLButton* button = LLUICtrlFactory::create<LLButton> (bparams);  	button->setLabel(name); diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index 3a8d308425..406cdc9055 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -54,13 +54,13 @@ public:  	:	public LLInitParam::Block<Params, LLPanel::Params>  	{  		// initial state -		Optional<bool>		collapsed; -		Optional<std::string>		tab_btn_image_normal; -		Optional<std::string>		tab_btn_image_selected; +		Optional<bool>				collapsed; +		Optional<LLUIImage*>		tab_btn_image_normal, +									tab_btn_image_selected; -		Optional<S32>				default_button_width; -		Optional<S32>				default_button_height; -		Optional<S32>				default_button_margin; +		Optional<S32>				default_button_width, +									default_button_height, +									default_button_margin;  		Params();  	}; @@ -68,7 +68,7 @@ public:  	static LLSideTray*	getInstance		();  	static bool			instanceCreated	();  protected: -	LLSideTray(Params& params); +	LLSideTray(const Params& params);  	typedef std::vector<LLSideTrayTab*> child_vector_t;  	typedef child_vector_t::iterator					child_vector_iter_t;  	typedef child_vector_t::const_iterator  			child_vector_const_iter_t; diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 3887f64618..60ebb9416e 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -85,8 +85,8 @@ void LLPanelWearableListItem::onMouseLeave(S32 x, S32 y, MASK mask)  	reshapeWidgets();  } -LLPanelWearableListItem::LLPanelWearableListItem(LLViewerInventoryItem* item) -: LLPanelInventoryListItemBase(item) +LLPanelWearableListItem::LLPanelWearableListItem(LLViewerInventoryItem* item, const LLPanelWearableListItem::Params& params) +: LLPanelInventoryListItemBase(item, params)  {  } @@ -101,15 +101,19 @@ LLPanelWearableOutfitItem* LLPanelWearableOutfitItem::create(LLViewerInventoryIt  	LLPanelWearableOutfitItem* list_item = NULL;  	if (item)  	{ -		list_item = new LLPanelWearableOutfitItem(item, worn_indication_enabled); -		list_item->init(); +		const LLPanelInventoryListItemBase::Params& params = LLUICtrlFactory::getDefaultParams<LLPanelInventoryListItemBase>(); + +		list_item = new LLPanelWearableOutfitItem(item, worn_indication_enabled, params); +		list_item->initFromParams(params); +		list_item->postBuild();  	}  	return list_item;  }  LLPanelWearableOutfitItem::LLPanelWearableOutfitItem(LLViewerInventoryItem* item, -													 bool worn_indication_enabled) -: LLPanelInventoryListItemBase(item) +													 bool worn_indication_enabled, +													 const LLPanelWearableOutfitItem::Params& params) +: LLPanelInventoryListItemBase(item, params)  , mWornIndicationEnabled(worn_indication_enabled)  {  } @@ -132,6 +136,17 @@ void LLPanelWearableOutfitItem::updateItem(const std::string& name,  //////////////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////// +static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelClothingListItem(&typeid(LLPanelClothingListItem::Params), "clothing_list_item"); + + +LLPanelClothingListItem::Params::Params() +:	up_btn("up_btn"), +	down_btn("down_btn"), +	edit_btn("edit_btn"), +	lock_panel("lock_panel"), +	edit_panel("edit_panel"), +	lock_icon("lock_icon") +{}  // static  LLPanelClothingListItem* LLPanelClothingListItem::create(LLViewerInventoryItem* item) @@ -139,24 +154,54 @@ LLPanelClothingListItem* LLPanelClothingListItem::create(LLViewerInventoryItem*  	LLPanelClothingListItem* list_item = NULL;  	if(item)  	{ -		list_item = new LLPanelClothingListItem(item); -		list_item->init(); +		const LLPanelClothingListItem::Params& params = LLUICtrlFactory::getDefaultParams<LLPanelClothingListItem>(); +		list_item = new LLPanelClothingListItem(item, params); +		list_item->initFromParams(params); +		list_item->postBuild();  	}  	return list_item;  } -LLPanelClothingListItem::LLPanelClothingListItem(LLViewerInventoryItem* item) - : LLPanelDeletableWearableListItem(item) +LLPanelClothingListItem::LLPanelClothingListItem(LLViewerInventoryItem* item, const LLPanelClothingListItem::Params& params) + : LLPanelDeletableWearableListItem(item, params) +{ +	LLButton::Params button_params = params.up_btn; +	applyXUILayout(button_params, this); +	addChild(LLUICtrlFactory::create<LLButton>(button_params)); + +	button_params = params.down_btn; +	applyXUILayout(button_params, this); +	addChild(LLUICtrlFactory::create<LLButton>(button_params)); + +	LLPanel::Params panel_params = params.lock_panel; +	applyXUILayout(panel_params, this); +	LLPanel* lock_panelp = LLUICtrlFactory::create<LLPanel>(panel_params); +	addChild(lock_panelp); + +	panel_params = params.edit_panel; +	applyXUILayout(panel_params, this); +	LLPanel* edit_panelp = LLUICtrlFactory::create<LLPanel>(panel_params); +	addChild(edit_panelp); + +	if (lock_panelp)  { +		LLIconCtrl::Params icon_params = params.lock_icon; +		applyXUILayout(icon_params, this); +		lock_panelp->addChild(LLUICtrlFactory::create<LLIconCtrl>(icon_params));  } -LLPanelClothingListItem::~LLPanelClothingListItem() +	if (edit_panelp)  { +		button_params = params.edit_btn; +		applyXUILayout(button_params, this); +		edit_panelp->addChild(LLUICtrlFactory::create<LLButton>(button_params)); +	} + +	setSeparatorVisible(false);  } -void LLPanelClothingListItem::init() +LLPanelClothingListItem::~LLPanelClothingListItem()  { -	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_clothing_list_item.xml");  }  BOOL LLPanelClothingListItem::postBuild() @@ -178,30 +223,62 @@ BOOL LLPanelClothingListItem::postBuild()  //////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////// +static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelBodyPartsListItem(&typeid(LLPanelBodyPartsListItem::Params), "bodyparts_list_item"); + + +LLPanelBodyPartsListItem::Params::Params() +:	edit_btn("edit_btn"), +	edit_panel("edit_panel"), +	lock_panel("lock_panel"), +	lock_icon("lock_icon") +{} +  // static  LLPanelBodyPartsListItem* LLPanelBodyPartsListItem::create(LLViewerInventoryItem* item)  {  	LLPanelBodyPartsListItem* list_item = NULL;  	if(item)  	{ -		list_item = new LLPanelBodyPartsListItem(item); -		list_item->init(); +		const Params& params = LLUICtrlFactory::getDefaultParams<LLPanelBodyPartsListItem>(); +		list_item = new LLPanelBodyPartsListItem(item, params); +		list_item->initFromParams(params); +		list_item->postBuild();  	}  	return list_item;  } -LLPanelBodyPartsListItem::LLPanelBodyPartsListItem(LLViewerInventoryItem* item) -: LLPanelWearableListItem(item) +LLPanelBodyPartsListItem::LLPanelBodyPartsListItem(LLViewerInventoryItem* item, const LLPanelBodyPartsListItem::Params& params) +: LLPanelWearableListItem(item, params)  { +	LLPanel::Params panel_params = params.edit_panel; +	applyXUILayout(panel_params, this); +	LLPanel* edit_panelp = LLUICtrlFactory::create<LLPanel>(panel_params); +	addChild(edit_panelp); + +	panel_params = params.lock_panel; +	applyXUILayout(panel_params, this); +	LLPanel* lock_panelp = LLUICtrlFactory::create<LLPanel>(panel_params); +	addChild(lock_panelp); +	 +	if (edit_panelp) +	{ +		LLButton::Params btn_params = params.edit_btn; +		applyXUILayout(btn_params, this); +		edit_panelp->addChild(LLUICtrlFactory::create<LLButton>(btn_params));  } -LLPanelBodyPartsListItem::~LLPanelBodyPartsListItem() +	if (lock_panelp)  { +		LLIconCtrl::Params icon_params = params.lock_icon; +		applyXUILayout(icon_params, this); +		lock_panelp->addChild(LLUICtrlFactory::create<LLIconCtrl>(icon_params)); +	} + +	setSeparatorVisible(true);  } -void LLPanelBodyPartsListItem::init() +LLPanelBodyPartsListItem::~LLPanelBodyPartsListItem()  { -	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_body_parts_list_item.xml");  }  BOOL LLPanelBodyPartsListItem::postBuild() @@ -214,6 +291,11 @@ BOOL LLPanelBodyPartsListItem::postBuild()  	return TRUE;  } +static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelDeletableWearableListItem(&typeid(LLPanelDeletableWearableListItem::Params), "deletable_wearable_list_item"); + +LLPanelDeletableWearableListItem::Params::Params() +:	delete_btn("delete_btn") +{}  // static  LLPanelDeletableWearableListItem* LLPanelDeletableWearableListItem::create(LLViewerInventoryItem* item) @@ -221,20 +303,22 @@ LLPanelDeletableWearableListItem* LLPanelDeletableWearableListItem::create(LLVie  	LLPanelDeletableWearableListItem* list_item = NULL;  	if(item)  	{ -		list_item = new LLPanelDeletableWearableListItem(item); -		list_item->init(); +		const Params& params = LLUICtrlFactory::getDefaultParams<LLPanelDeletableWearableListItem>(); +		list_item = new LLPanelDeletableWearableListItem(item, params); +		list_item->initFromParams(params); +		list_item->postBuild();  	}  	return list_item;  } -LLPanelDeletableWearableListItem::LLPanelDeletableWearableListItem(LLViewerInventoryItem* item) -: LLPanelWearableListItem(item) +LLPanelDeletableWearableListItem::LLPanelDeletableWearableListItem(LLViewerInventoryItem* item, const LLPanelDeletableWearableListItem::Params& params) +: LLPanelWearableListItem(item, params)  { -} +	LLButton::Params button_params = params.delete_btn; +	applyXUILayout(button_params, this); +	addChild(LLUICtrlFactory::create<LLButton>(button_params)); -void LLPanelDeletableWearableListItem::init() -{ -	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_deletable_wearable_list_item.xml"); +	setSeparatorVisible(true);  }  BOOL LLPanelDeletableWearableListItem::postBuild() @@ -260,8 +344,11 @@ LLPanelAttachmentListItem* LLPanelAttachmentListItem::create(LLViewerInventoryIt  	LLPanelAttachmentListItem* list_item = NULL;  	if(item)  	{ -		list_item = new LLPanelAttachmentListItem(item); -		list_item->init(); +		const Params& params = LLUICtrlFactory::getDefaultParams<LLPanelDeletableWearableListItem>(); + +		list_item = new LLPanelAttachmentListItem(item, params); +		list_item->initFromParams(params); +		list_item->postBuild();  	}  	return list_item;  } @@ -284,27 +371,32 @@ void LLPanelAttachmentListItem::updateItem(const std::string& name,  //////////////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////// +static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelDummyClothingListItem(&typeid(LLPanelDummyClothingListItem::Params), "dummy_clothing_list_item"); + +LLPanelDummyClothingListItem::Params::Params() +:	add_panel("add_panel"), +	add_btn("add_btn") +{}  LLPanelDummyClothingListItem* LLPanelDummyClothingListItem::create(LLWearableType::EType w_type)  { -	LLPanelDummyClothingListItem* list_item = new LLPanelDummyClothingListItem(w_type); -	list_item->init(); +	const Params& params = LLUICtrlFactory::getDefaultParams<LLPanelDummyClothingListItem>(); + +	LLPanelDummyClothingListItem* list_item = new LLPanelDummyClothingListItem(w_type, params); +	list_item->initFromParams(params); +	list_item->postBuild();  	return list_item;  }  BOOL LLPanelDummyClothingListItem::postBuild()  { -	LLIconCtrl* icon = getChild<LLIconCtrl>("item_icon"); -	setIconCtrl(icon); -	setTitleCtrl(getChild<LLTextBox>("item_name")); -  	addWidgetToRightSide("btn_add_panel");  	setIconImage(LLInventoryIcon::getIcon(LLAssetType::AT_CLOTHING, LLInventoryType::IT_NONE, mWearableType, FALSE));  	updateItem(wearableTypeToString(mWearableType));  	// Make it look loke clothing item - reserve space for 'delete' button -	setLeftWidgetsWidth(icon->getRect().mLeft); +	setLeftWidgetsWidth(getChildView("item_icon")->getRect().mLeft);  	setWidgetsVisible(false);  	reshapeWidgets(); @@ -317,15 +409,23 @@ LLWearableType::EType LLPanelDummyClothingListItem::getWearableType() const  	return mWearableType;  } -LLPanelDummyClothingListItem::LLPanelDummyClothingListItem(LLWearableType::EType w_type) - : LLPanelWearableListItem(NULL) - , mWearableType(w_type) +LLPanelDummyClothingListItem::LLPanelDummyClothingListItem(LLWearableType::EType w_type, const LLPanelDummyClothingListItem::Params& params) +:	LLPanelWearableListItem(NULL, params),  +	mWearableType(w_type)  { -} +	LLPanel::Params panel_params(params.add_panel); +	applyXUILayout(panel_params, this); +	LLPanel* add_panelp = LLUICtrlFactory::create<LLPanel>(panel_params); +	addChild(add_panelp); -void LLPanelDummyClothingListItem::init() +	if (add_panelp)  { -	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_dummy_clothing_list_item.xml"); +		LLButton::Params button_params(params.add_btn); +		applyXUILayout(button_params, this); +		add_panelp->addChild(LLUICtrlFactory::create<LLButton>(button_params)); +} + +	setSeparatorVisible(true);  }  typedef std::map<LLWearableType::EType, std::string> clothing_to_string_map_t; diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h index d16a2a89c8..367b648b3d 100644 --- a/indra/newview/llwearableitemslist.h +++ b/indra/newview/llwearableitemslist.h @@ -68,7 +68,7 @@ public:  protected: -	LLPanelWearableListItem(LLViewerInventoryItem* item); +	LLPanelWearableListItem(LLViewerInventoryItem* item, const Params& params);  };  /** @@ -93,7 +93,7 @@ public:  protected:  	LLPanelWearableOutfitItem(LLViewerInventoryItem* item, -							  bool worn_indication_enabled); +							  bool worn_indication_enabled, const Params& params);  private:  	bool	mWornIndicationEnabled; @@ -103,6 +103,13 @@ class LLPanelDeletableWearableListItem : public LLPanelWearableListItem  {  	LOG_CLASS(LLPanelDeletableWearableListItem);  public: +	struct Params : public LLInitParam::Block<Params, LLPanelWearableListItem::Params> +	{ +		Optional<LLButton::Params>		delete_btn; + +		Params(); +	}; +  	static LLPanelDeletableWearableListItem* create(LLViewerInventoryItem* item); @@ -116,9 +123,7 @@ public:  	inline void setShowDeleteButton(bool show) { setShowWidget("btn_delete", show); }  protected: -	LLPanelDeletableWearableListItem(LLViewerInventoryItem* item); - -	/*virtual*/ void init(); +	LLPanelDeletableWearableListItem(LLViewerInventoryItem* item, const Params& params);  };  /** Outfit list item for an attachment */ @@ -134,7 +139,7 @@ public:  								EItemState item_state = IS_DEFAULT);  protected: -	LLPanelAttachmentListItem(LLViewerInventoryItem* item) : LLPanelDeletableWearableListItem(item) {}; +	LLPanelAttachmentListItem(LLViewerInventoryItem* item, const Params& params) : LLPanelDeletableWearableListItem(item, params) {};  };  /** @@ -147,6 +152,18 @@ class LLPanelClothingListItem : public LLPanelDeletableWearableListItem  	LOG_CLASS(LLPanelClothingListItem);  public: +	struct Params : public LLInitParam::Block<Params, LLPanelDeletableWearableListItem::Params> +	{ +		Optional<LLButton::Params>		up_btn, +										down_btn, +										edit_btn; +		Optional<LLPanel::Params>		lock_panel, +										edit_panel; +		Optional<LLIconCtrl::Params>	lock_icon; + +		Params(); +	}; +  	static LLPanelClothingListItem* create(LLViewerInventoryItem* item);  	virtual ~LLPanelClothingListItem(); @@ -162,18 +179,25 @@ public:  	inline void setShowLockButton(bool show) { setShowWidget("btn_lock", show); }  	inline void setShowEditButton(bool show) { setShowWidget("btn_edit_panel", show); } -  protected: -	LLPanelClothingListItem(LLViewerInventoryItem* item); -	 -	/*virtual*/ void init(); +	LLPanelClothingListItem(LLViewerInventoryItem* item, const Params& params); +  };  class LLPanelBodyPartsListItem : public LLPanelWearableListItem  {  	LOG_CLASS(LLPanelBodyPartsListItem);  public: +	struct Params : public LLInitParam::Block<Params, LLPanelWearableListItem::Params> +	{ +		Optional<LLButton::Params>		edit_btn; +		Optional<LLPanel::Params>		lock_panel, +										edit_panel; +		Optional<LLIconCtrl::Params>	lock_icon; + +		Params(); +	};  	static LLPanelBodyPartsListItem* create(LLViewerInventoryItem* item); @@ -188,9 +212,7 @@ public:  	inline void setShowEditButton(bool show) { setShowWidget("btn_edit_panel", show); }  protected: -	LLPanelBodyPartsListItem(LLViewerInventoryItem* item); - -	/*virtual*/ void init(); +	LLPanelBodyPartsListItem(LLViewerInventoryItem* item, const Params& params);  }; @@ -202,15 +224,19 @@ protected:  class LLPanelDummyClothingListItem : public LLPanelWearableListItem  {  public: +	struct Params : public LLInitParam::Block<Params, LLPanelWearableListItem::Params> +	{ +		Optional<LLPanel::Params> add_panel; +		Optional<LLButton::Params> add_btn; +		Params(); +	};  	static LLPanelDummyClothingListItem* create(LLWearableType::EType w_type);  	/*virtual*/ BOOL postBuild();  	LLWearableType::EType getWearableType() const;  protected: -	LLPanelDummyClothingListItem(LLWearableType::EType w_type); - -	/*virtual*/ void init(); +	LLPanelDummyClothingListItem(LLWearableType::EType w_type, const Params& params);  	static std::string wearableTypeToString(LLWearableType::EType w_type); diff --git a/indra/newview/llwindebug.cpp b/indra/newview/llwindebug.cpp index 282c6f0c30..660245b02b 100644 --- a/indra/newview/llwindebug.cpp +++ b/indra/newview/llwindebug.cpp @@ -91,7 +91,7 @@ LONG NTAPI vectoredHandler(PEXCEPTION_POINTERS exception_infop)  }  // static -void LLWinDebug::init() +void  LLWinDebug::init()  {  	static bool s_first_run = true;  	// Load the dbghelp dll now, instead of waiting for the crash. diff --git a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml deleted file mode 100644 index 4f989a6f6f..0000000000 --- a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml +++ /dev/null @@ -1,105 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - follows="top|right|left" - height="23" - layout="topleft" - left="0" - name="wearable_item" - top="0" - width="380"> -    <icon -     follows="top|right|left" -     height="22" -     image_name="ListItem_Over" -     layout="topleft" -     left="0" -     name="hovered_icon" -     top="1" -     visible="false" -     width="380" /> -    <icon -     height="22" -     follows="top|right|left" -     image_name="ListItem_Select" -     layout="topleft" -     left="0" -     name="selected_icon" -     top="1" -     visible="false" -     width="380" /> -    <icon -     height="16" -     follows="top|left" -     image_name="Inv_Object" -     layout="topleft" -     left="0" -     name="item_icon" -     top="2" -     width="16" /> -    <text -     follows="left|right" -     height="16" -     layout="topleft" -     left_pad="5" -     allow_html="false" -     use_ellipses="true" -     name="item_name" -     text_color="white" -     top="5" -     value="..." -     width="359" /> -    <panel -     background_visible="false" -     name="btn_lock" -     layout="topleft" -     follows="top|right" -     top="0" -     left="0" -     height="23" -     width="23" -     tab_stop="false" -     tool_tip="You don't have permission to edit"> -        <icon  -         name="btn_lock1" -         layout="topleft" -         follows="top|right" -         image_name="Locked_Icon" -         top="2" -         left="5" -         height="13" -         width="9" -         tab_stop="false" /> -    </panel> -    <panel -     background_visible="false" -     name="btn_edit_panel" -     layout="topleft" -     follows="top|right" -     top="1" -     left_pad="3" -     height="23" -     width="26" -     tab_stop="false"> -         <button  -          name="btn_edit" -          layout="topleft" -          follows="top|right" -          image_overlay="Edit_Wrench" -          top="0" -          left="0" -          height="23" -          width="23" -          tab_stop="false" -          tool_tip="Edit this shape"/> -      </panel> -    <icon -     follows="left|right|top" -     height="3" -     image_name="Wearables_Divider" -     layout="bottomleft" -     left="0" -     name="wearable_type_separator_icon" -     top="0" -     visible="true" -     width="380"/> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml deleted file mode 100644 index 93d7720c57..0000000000 --- a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml +++ /dev/null @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - follows="top|right|left" - height="23" - layout="topleft" - left="0" - name="wearable_item" - top="0" - width="380"> -    <icon -     follows="top|right|left" -     height="22" -     image_name="ListItem_Over" -     layout="topleft" -     left="0" -     name="hovered_icon" -     top="1" -     visible="false" -     width="380" /> -    <icon -     height="22" -     follows="top|right|left" -     image_name="ListItem_Select" -     layout="topleft" -     left="0" -     name="selected_icon" -     top="1" -     visible="false" -     width="380" /> -    <button  -     name="btn_delete" -     layout="topleft" -     follows="top|left" -     image_unselected="Toast_CloseBtn" -     image_selected="Toast_CloseBtn" -     top="3" -     left="0" -     height="18" -     width="18" -     tab_stop="false" -     tool_tip="Remove from outfit" /> -    <icon -     height="16" -     follows="top|left" -     image_name="Inv_Object" -     layout="topleft" -     left_pad="3" -     name="item_icon" -     top="2" -     width="16" /> -    <text -     follows="left|right" -     height="16" -     layout="topleft" -     left_pad="5" -     allow_html="false" -     use_ellipses="true" -     name="item_name" -     text_color="white" -     top="5" -     value="..." -     width="359" /> -    <button  -     name="btn_move_up" -     layout="topleft" -     follows="top|right" -     image_overlay="UpArrow_Off" -     top="1" -     left="0" -     height="23" -     width="23" -     tab_stop="false" /> -    <button  -     name="btn_move_down" -     layout="topleft" -     follows="top|right" -     image_overlay="DownArrow_Off" -     top="1" -     left_pad="3" -     height="23" -     width="23" -     tab_stop="false" /> -    <panel -     background_visible="false" -     name="btn_lock" -     layout="topleft" -     follows="top|right" -     top="0" -     left="0" -     height="23" -     width="23" -     tab_stop="false" -     tool_tip="You don't have permission to edit"> -        <icon  -         name="btn_lock1" -         layout="topleft" -         follows="top|right" -         image_name="Locked_Icon" -         top="2" -         left="5" -         height="13" -         width="9" -         tab_stop="false" /> -    </panel> -    <panel -     background_visible="false" -     name="btn_edit_panel" -     layout="topleft" -     follows="top|right" -     top="0" -     left_pad="3" -     height="23" -     width="26" -     tab_stop="false"> -        <button  -         name="btn_edit" -         layout="topleft" -         follows="top|right" -         image_overlay="Edit_Wrench" -         top="1" -         left="0" -         height="23" -         width="23" -         tab_stop="false" -         tool_tip="Edit this wearable"/> -      </panel> -    <icon -     follows="left|right|top" -     height="3" -     image_name="Wearables_Divider" -     layout="bottomleft" -     left="0" -     name="wearable_type_separator_icon" -     top="0" -     visible="false" -     width="380"/> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml deleted file mode 100644 index 75b5fd1532..0000000000 --- a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - follows="top|right|left" - height="23" - layout="topleft" - left="0" - name="deletable_wearable_item" - top="0" - width="380"> -    <icon -     follows="top|right|left" -     height="22" -     image_name="ListItem_Over" -     layout="topleft" -     left="0" -     name="hovered_icon" -     top="1" -     visible="false" -     width="380" /> -    <icon -     height="22" -     follows="top|right|left" -     image_name="ListItem_Select" -     layout="topleft" -     left="0" -     name="selected_icon" -     top="1" -     visible="false" -     width="380" /> -    <button  -     name="btn_delete" -     layout="topleft" -     follows="top|left" -     image_unselected="Toast_CloseBtn" -     image_selected="Toast_CloseBtn" -     top="3" -     left="0" -     height="18" -     width="18" -     tab_stop="false" -     tool_tip="Remove from outfit"/> -    <icon -     height="16" -     follows="top|left" -     image_name="Inv_Object" -     layout="topleft" -     left_pad="3" -     name="item_icon" -     top="2" -     width="16" /> -    <text -     follows="left|right" -     height="16" -     layout="topleft" -     left_pad="5" -     allow_html="false" -     use_ellipses="true" -     name="item_name" -     text_color="white" -     top="5" -     value="..." -     width="359" /> -    <icon -     follows="left|right|top" -     height="3" -     image_name="Wearables_Divider" -     layout="bottomleft" -     left="0" -     name="wearable_type_separator_icon" -     top="0" -     visible="true" -     width="380"/> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml deleted file mode 100644 index a5dd34bd22..0000000000 --- a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - follows="top|right|left" - height="23" - layout="topleft" - left="0" - name="dummy_clothing_item" - top="0" - width="380"> -    <icon -     follows="top|right|left" -     height="22" -     image_name="ListItem_Over" -     layout="topleft" -     left="0" -     name="hovered_icon" -     top="1" -     visible="false" -     width="380" /> -    <icon -     height="22" -     follows="top|right|left" -     image_name="ListItem_Select" -     layout="topleft" -     left="0" -     name="selected_icon" -     top="1" -     visible="false" -     width="380" /> -    <icon -     height="16" -     color="0.75 0.75 0.75 1" -     follows="top|left" -     image_name="Inv_Object" -     layout="topleft" -     left="20" -     name="item_icon" -     top="2" -     width="16" /> -    <text -     follows="left|right" -     height="16" -     layout="topleft" -     left_pad="5" -     allow_html="false" -     use_ellipses="true" -     name="item_name" -     text_color="LtGray_50" -     top="4" -     value="..." -     width="359" /> -    <panel -     name="btn_add_panel" -     layout="topleft" -     follows="top|right" -     top="0" -     left="0" -     height="23" -     width="26" -     tab_stop="false"> -      <button  -       name="btn_add" -       layout="topleft" -       follows="top|right" -       image_overlay="AddItem_Off" -       top="0" -       left="0" -       height="23" -       width="23" -       tab_stop="false" -       tool_tip="Add more items of this type" /> -    </panel> -    <icon -     follows="left|right|top" -     height="3" -     image_name="Wearables_Divider" -     layout="bottomleft" -     left="0" -     name="wearable_type_separator_icon" -     top="0" -     visible="true" -     width="380"/> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_inventory_item.xml b/indra/newview/skins/default/xui/en/panel_inventory_item.xml deleted file mode 100644 index f1b7b92ece..0000000000 --- a/indra/newview/skins/default/xui/en/panel_inventory_item.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - follows="top|right|left" - height="20" - layout="topleft" - left="0" - name="inventory_item" - top="0" - width="380"> -    <icon -     follows="top|right|left" -     height="20" -     image_name="ListItem_Over" -     layout="topleft" -     left="0" -     name="hovered_icon" -     top="0" -     visible="false" -     width="380" /> -    <icon -     height="20" -     follows="top|right|left" -     image_name="ListItem_Select" -     layout="topleft" -     left="0" -     name="selected_icon" -     top="0" -     visible="false" -     width="380" /> -    <icon -     height="16" -     follows="top|left" -     image_name="Inv_Object" -     layout="topleft" -     left="0" -     name="item_icon" -     top="0" -     width="16" /> -    <text -     follows="left|right" -     height="20" -     layout="topleft" -     left_pad="5" -     allow_html="false" -     use_ellipses="true" -     name="item_name" -     text_color="white" -     top="4" -     value="..." -     width="359" /> -</panel> diff --git a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml new file mode 100644 index 0000000000..c08267de82 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<bodyparts_list_item + follows="top|right|left" + height="23" + layout="topleft" + left="0" + name="wearable_item" + bottom="0" + width="380"> +  <item_icon +   height="16" +   follows="top|left" +   image_name="Inv_Object" +   layout="topleft" +   left="0" +   name="item_icon" +   top="2" +   width="16" /> +  <item_name +   follows="left|right" +   height="16" +   layout="topleft" +   left="21" +   allow_html="false" +   use_ellipses="true" +   name="item_name" +   text_color="white" +   top="5" +   value="..." +   width="359" /> +  <lock_panel +   background_visible="false" +   name="btn_lock" +   layout="topleft" +   follows="top|right" +   top="0" +   left="0" +   height="23" +   width="23" +   tab_stop="false" +   tool_tip="You don't have permission to edit"/> +  <lock_icon +   name="btn_lock1" +   layout="topleft" +   follows="top|right" +   image_name="Locked_Icon" +   top="2" +   left="5" +   height="13" +   width="9" +   tab_stop="false" /> +  <edit_panel +   background_visible="false" +   name="btn_edit_panel" +   layout="topleft" +   follows="top|right" +   top="1" +   left="17" +   height="23" +   width="26" +   tab_stop="false"/> +  <edit_btn +   name="btn_edit" +   layout="topleft" +   follows="top|right" +   image_overlay="Edit_Wrench" +   top="0" +   left="0" +   height="23" +   width="23" +   tab_stop="false" +   tool_tip="Edit this shape"/> +</bodyparts_list_item> diff --git a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml new file mode 100644 index 0000000000..f7a05e9bc4 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<clothing_list_item + follows="top|right|left" + height="23" + layout="topleft" + left="0" + name="wearable_item" + bottom="0" + width="380"> +  <lock_icon +   height="16" +   follows="top|left" +   image_name="Inv_Object" +   layout="topleft" +   left="21" +   name="item_icon" +   top="2" +   width="16" /> +  <item_name +   follows="left|right" +   height="16" +   layout="topleft" +   left="42" +   allow_html="false" +   use_ellipses="true" +   name="item_name" +   text_color="white" +   top="5" +   value="..." +   width="359" /> +  <up_btn +   name="btn_move_up" +   layout="topleft" +   follows="top|right" +   image_overlay="UpArrow_Off" +   top="1" +   left="0" +   height="23" +   width="23" +   tab_stop="false" /> +  <down_btn +   name="btn_move_down" +   layout="topleft" +   follows="top|right" +   image_overlay="DownArrow_Off" +   top="1" +   left="26" +   height="23" +   width="23" +   tab_stop="false" /> +  <lock_panel +   background_visible="false" +   name="btn_lock" +   layout="topleft" +   follows="top|right" +   top="0" +   left="0" +   height="23" +   width="23" +   tab_stop="false" +   tool_tip="You don't have permission to edit"/> +  <lock_icon +   name="btn_lock1" +   layout="topleft" +   follows="top|right" +   image_name="Locked_Icon" +   top="2" +   left="5" +   height="13" +   width="9" +   tab_stop="false" /> +  <edit_panel +   background_visible="false" +   name="btn_edit_panel" +   layout="topleft" +   follows="top|right" +   top="0" +   left="26" +   height="23" +   width="26" +   tab_stop="false"/> +  <edit_btn +   name="btn_edit" +   layout="topleft" +   follows="top|right" +   image_overlay="Edit_Wrench" +   top="1" +   left="0" +   height="23" +   width="23" +   tab_stop="false" +   tool_tip="Edit this wearable"/> +</clothing_list_item> diff --git a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml new file mode 100644 index 0000000000..88a4682e13 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<deletable_wearable_list_item +  follows="top|right|left" +  height="23" +  layout="topleft" +  left="0" +  name="deletable_wearable_item" +  bottom="0" +  width="380"> +  <delete_btn +  name="btn_delete" +  layout="topleft" +  follows="top|left" +  image_unselected="Toast_CloseBtn" +  image_selected="Toast_CloseBtn" +  top="3" +  left="0" +  height="18" +  width="18" +  tab_stop="false" +  tool_tip="Remove from outfit"/> +  <item_icon +   height="16" +   follows="top|left" +   image_name="Inv_Object" +   layout="topleft" +   left="24" +   name="item_icon" +   top="2" +   width="16" /> +  <item_name +   follows="left|right" +   height="16" +   layout="topleft" +   left="45" +   allow_html="false" +   use_ellipses="true" +   name="item_name" +   text_color="white" +   top="5" +   value="..." +   width="359" /> +</deletable_wearable_list_item> diff --git a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml new file mode 100644 index 0000000000..80a877a6c2 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<dummy_clothing_list_item + follows="top|right|left" + height="23" + layout="topleft" + left="0" + name="dummy_clothing_item" + bottom="0" + width="380"> +  <item_icon +    height="16" +    color="0.75 0.75 0.75 1" +    follows="top|left" +    image_name="Inv_Object" +    layout="topleft" +    left="20" +    name="item_icon" +    top="2" +    width="16" /> +  <item_name +    follows="left|right" +    height="16" +    layout="topleft" +    left="41" +    allow_html="false" +    use_ellipses="true" +    name="item_name" +    text_color="LtGray_50" +    top="4" +    value="..." +    width="359" /> +  <add_panel +    name="btn_add_panel" +    layout="topleft" +    follows="top|right" +    top="0" +    left="0" +    height="23" +    width="26" +    tab_stop="false"/> +  <add_btn +     name="btn_add" +     layout="topleft" +     follows="top|right" +     image_overlay="AddItem_Off" +     top="0" +     left="0" +     height="23" +     width="23" +     tab_stop="false" +     tool_tip="Add more items of this type" /> +</dummy_clothing_list_item> diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml index 50be0ac1a1..4e7e2873b5 100644 --- a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml @@ -1,11 +1,13 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <inventory_list_item - height="0" - layout="topleft" - left="0" - name="inventory_list_item" - top="0" - width="0"> +  follows="top|right|left" +  height="20" +  name="inventory_item" +  tab_stop="false"  +  hover_image="ListItem_Over"  +  selected_name="ListItem_Select" +  separator_image="Wearables_Divider"  +  width="380">    <!-- DEFAULT style for inventory list item -->    <default_style     font="SansSerifSmall" @@ -16,4 +18,25 @@     font="SansSerifSmall"     font.style="BOLD"     color="EmphasisColor" /> +  <item_icon +    height="16" +    follows="top|left" +    image_name="Inv_Object" +    layout="topleft" +    left="0" +    name="item_icon" +    top="0" +    width="16" /> +  <item_name +    follows="left|right" +    height="20" +    layout="topleft" +    left="21" +    allow_html="false" +    use_ellipses="true" +    name="item_name" +    text_color="white" +    top="4" +    value="..." +    width="359" />  </inventory_list_item> | 
