summaryrefslogtreecommitdiff
path: root/indra/newview/llcofwearables.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llcofwearables.cpp')
-rw-r--r--indra/newview/llcofwearables.cpp55
1 files changed, 37 insertions, 18 deletions
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 35a1ad747b..6648bd7e57 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -163,7 +163,7 @@ public:
}
protected:
- static void replaceWearable(const LLUUID& item_id)
+ static void replaceWearable()
{
// *TODO: Most probable that accessing to LLPanelOutfitEdit instance should be:
// LLSideTray::getInstance()->getSidepanelAppearance()->getPanelOutfitEdit()
@@ -175,7 +175,7 @@ protected:
"panel_outfit_edit"));
if (panel_outfit_edit != NULL)
{
- panel_outfit_edit->onReplaceMenuItemClicked(item_id);
+ panel_outfit_edit->showAddWearablesPanel(true);
}
}
@@ -187,7 +187,7 @@ protected:
functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
registrar.add("Clothing.TakeOff", boost::bind(handleMultiple, take_off, mUUIDs));
- registrar.add("Clothing.Replace", boost::bind(replaceWearable, selected_id));
+ registrar.add("Clothing.Replace", boost::bind(replaceWearable));
registrar.add("Clothing.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
registrar.add("Clothing.Create", boost::bind(&CofClothingContextMenu::createNew, this, selected_id));
@@ -244,7 +244,7 @@ protected:
// *HACK* need to pass pointer to LLPanelOutfitEdit instead of LLSideTray::getInstance()->getPanel().
// LLSideTray::getInstance()->getPanel() is rather slow variant
LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
- registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceMenuItemClicked, panel_oe, selected_id));
+ registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceBodyPartMenuItemClicked, panel_oe, selected_id));
registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
registrar.add("BodyPart.Create", boost::bind(&CofBodyPartContextMenu::createNew, this, selected_id));
@@ -284,6 +284,7 @@ LLCOFWearables::LLCOFWearables() : LLPanel(),
mAttachmentsTab(NULL),
mBodyPartsTab(NULL),
mLastSelectedTab(NULL),
+ mAccordionCtrl(NULL),
mCOFVersion(-1)
{
mClothingMenu = new CofClothingContextMenu(this);
@@ -336,6 +337,8 @@ BOOL LLCOFWearables::postBuild()
mTab2AssetType[mAttachmentsTab] = LLAssetType::AT_OBJECT;
mTab2AssetType[mBodyPartsTab] = LLAssetType::AT_BODYPART;
+ mAccordionCtrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
+
return LLPanel::postBuild();
}
@@ -393,8 +396,7 @@ void LLCOFWearables::refresh()
return;
}
- // BAP - removed check; does not detect item name changes.
- //if (mCOFVersion == catp->getVersion()) return;
+ if (mCOFVersion == catp->getVersion()) return;
mCOFVersion = catp->getVersion();
typedef std::vector<LLSD> values_vector_t;
@@ -514,10 +516,10 @@ LLPanelClothingListItem* LLCOFWearables::buildClothingListItem(LLViewerInventory
//setting callbacks
//*TODO move that item panel's inner structure disclosing stuff into the panels
- item_panel->childSetAction("btn_delete", mCOFCallbacks.mDeleteWearable);
- item_panel->childSetAction("btn_move_up", mCOFCallbacks.mMoveWearableFurther);
- item_panel->childSetAction("btn_move_down", mCOFCallbacks.mMoveWearableCloser);
- item_panel->childSetAction("btn_edit", mCOFCallbacks.mEditWearable);
+ item_panel->childSetAction("btn_delete", boost::bind(mCOFCallbacks.mDeleteWearable));
+ item_panel->childSetAction("btn_move_up", boost::bind(mCOFCallbacks.mMoveWearableFurther));
+ item_panel->childSetAction("btn_move_down", boost::bind(mCOFCallbacks.mMoveWearableCloser));
+ item_panel->childSetAction("btn_edit", boost::bind(mCOFCallbacks.mEditWearable));
//turning on gray separator line for the last item in the items group of the same wearable type
item_panel->setSeparatorVisible(last);
@@ -543,8 +545,8 @@ LLPanelBodyPartsListItem* LLCOFWearables::buildBodypartListItem(LLViewerInventor
//setting callbacks
//*TODO move that item panel's inner structure disclosing stuff into the panels
- item_panel->childSetAction("btn_delete", mCOFCallbacks.mDeleteWearable);
- item_panel->childSetAction("btn_edit", mCOFCallbacks.mEditWearable);
+ item_panel->childSetAction("btn_delete", boost::bind(mCOFCallbacks.mDeleteWearable));
+ item_panel->childSetAction("btn_edit", boost::bind(mCOFCallbacks.mEditWearable));
return item_panel;
}
@@ -559,7 +561,7 @@ LLPanelDeletableWearableListItem* LLCOFWearables::buildAttachemntListItem(LLView
//setting callbacks
//*TODO move that item panel's inner structure disclosing stuff into the panels
- item_panel->childSetAction("btn_delete", mCOFCallbacks.mDeleteWearable);
+ item_panel->childSetAction("btn_delete", boost::bind(mCOFCallbacks.mDeleteWearable));
return item_panel;
}
@@ -605,7 +607,7 @@ void LLCOFWearables::addClothingTypesDummies(const LLAppearanceMgr::wearables_by
LLWearableType::EType w_type = static_cast<LLWearableType::EType>(type);
LLPanelInventoryListItemBase* item_panel = LLPanelDummyClothingListItem::create(w_type);
if(!item_panel) continue;
- item_panel->childSetAction("btn_add", mCOFCallbacks.mAddWearable);
+ item_panel->childSetAction("btn_add", boost::bind(mCOFCallbacks.mAddWearable));
mClothing->addItem(item_panel, LLUUID::null, ADD_BOTTOM, false);
}
}
@@ -652,20 +654,37 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
typedef std::map<std::string, LLAssetType::EType> type_map_t;
static type_map_t type_map;
- static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
- const LLAccordionCtrlTab* expanded_tab = accordion_ctrl->getExpandedTab();
+
+ if (mAccordionCtrl != NULL)
+ {
+ const LLAccordionCtrlTab* expanded_tab = mAccordionCtrl->getExpandedTab();
return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE);
}
+ return LLAssetType::AT_NONE;
+}
+
LLAssetType::EType LLCOFWearables::getSelectedAccordionAssetType()
{
- static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
- const LLAccordionCtrlTab* selected_tab = accordion_ctrl->getSelectedTab();
+ if (mAccordionCtrl != NULL)
+ {
+ const LLAccordionCtrlTab* selected_tab = mAccordionCtrl->getSelectedTab();
return get_if_there(mTab2AssetType, selected_tab, LLAssetType::AT_NONE);
}
+ return LLAssetType::AT_NONE;
+}
+
+void LLCOFWearables::expandDefaultAccordionTab()
+{
+ if (mAccordionCtrl != NULL)
+ {
+ mAccordionCtrl->expandDefaultTab();
+ }
+}
+
void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu)
{
if(menu)