summaryrefslogtreecommitdiff
path: root/indra/newview/llsidepanelappearance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llsidepanelappearance.cpp')
-rw-r--r--indra/newview/llsidepanelappearance.cpp50
1 files changed, 41 insertions, 9 deletions
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 0f8e86cb3c..eb3695a371 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -32,6 +32,7 @@
#include "llviewerprecompiledheaders.h"
#include "llsidepanelappearance.h"
+#include "llaccordionctrltab.h"
#include "llagent.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
@@ -66,6 +67,26 @@ private:
LLSidepanelAppearance *mPanel;
};
+class LLWatchForOutfitRenameObserver : public LLInventoryObserver
+{
+public:
+ LLWatchForOutfitRenameObserver(LLSidepanelAppearance *panel) :
+ mPanel(panel)
+ {}
+ virtual void changed(U32 mask);
+
+private:
+ LLSidepanelAppearance *mPanel;
+};
+
+void LLWatchForOutfitRenameObserver::changed(U32 mask)
+{
+ if (mask & LABEL)
+ {
+ mPanel->refreshCurrentOutfitName();
+ }
+}
+
LLSidepanelAppearance::LLSidepanelAppearance() :
LLPanel(),
mFilterSubString(LLStringUtil::null),
@@ -75,6 +96,8 @@ LLSidepanelAppearance::LLSidepanelAppearance() :
{
//LLUICtrlFactory::getInstance()->buildPanel(this, "panel_appearance.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
mFetchWorn = new LLCurrentlyWornFetchObserver(this);
+
+ mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this);
}
LLSidepanelAppearance::~LLSidepanelAppearance()
@@ -134,6 +157,8 @@ BOOL LLSidepanelAppearance::postBuild()
mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
+ gInventory.addObserver(mOutfitRenameWatcher);
+
return TRUE;
}
@@ -142,6 +167,7 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
{
fetchInventory();
refreshCurrentOutfitName();
+ updateVerbs();
if(key.size() == 0)
return;
@@ -188,16 +214,22 @@ void LLSidepanelAppearance::onOpenOutfitButtonClicked()
return;
if (!outfit_link->getIsLinkType())
return;
- LLInventoryPanel *inventory_panel = mPanelOutfitsInventory->getActivePanel();
- if (inventory_panel)
+
+ LLAccordionCtrlTab* tab_outfits = mPanelOutfitsInventory->findChild<LLAccordionCtrlTab>("tab_outfits");
+ if (tab_outfits)
{
- LLFolderView *folder = inventory_panel->getRootFolder();
- LLFolderViewItem *outfit_folder = folder->getItemByID(outfit_link->getLinkedUUID());
- if (outfit_folder)
+ tab_outfits->changeOpenClose(FALSE);
+ LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_accordionpanel");
+ if (inventory_panel)
{
- outfit_folder->setOpen(!outfit_folder->isOpen());
- folder->setSelectionFromRoot(outfit_folder,TRUE);
- folder->scrollToShowSelection();
+ LLFolderView *folder = inventory_panel->getRootFolder();
+ LLFolderViewItem *outfit_folder = folder->getItemByID(outfit_link->getLinkedUUID());
+ if (outfit_folder)
+ {
+ outfit_folder->setOpen(!outfit_folder->isOpen());
+ folder->setSelectionFromRoot(outfit_folder,TRUE);
+ folder->scrollToShowSelection();
+ }
}
}
}
@@ -291,7 +323,7 @@ void LLSidepanelAppearance::updateVerbs()
}
}
-void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string name)
+void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
{
if (name == "")
{