diff options
author | Richard Linden <none@none> | 2010-07-09 14:30:49 -0700 |
---|---|---|
committer | Richard Linden <none@none> | 2010-07-09 14:30:49 -0700 |
commit | 5b1386e5b6e147f2b253ca4e5f0ba3ee831f08a9 (patch) | |
tree | 061dd6e1ae8c1cb12f2f0d7071acabd6487365a2 /indra/newview | |
parent | 05e6faf38172ab701ef2483408bffa9cceb4142e (diff) | |
parent | ded3253d1f3d81421c2159805bc3df4f81e13d53 (diff) |
merge
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 948b9a56e1..17d87b6e52 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> |