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.cpp47
1 files changed, 26 insertions, 21 deletions
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 30b0075c4b..cd4a821774 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -62,6 +62,7 @@ public:
{
mPanel->inventoryFetched();
gInventory.removeObserver(this);
+ delete this;
}
private:
LLSidepanelAppearance *mPanel;
@@ -86,7 +87,7 @@ void LLWatchForOutfitRenameObserver::changed(U32 mask)
mPanel->refreshCurrentOutfitName();
}
}
-
+
LLSidepanelAppearance::LLSidepanelAppearance() :
LLPanel(),
mFilterSubString(LLStringUtil::null),
@@ -94,14 +95,12 @@ LLSidepanelAppearance::LLSidepanelAppearance() :
mLookInfo(NULL),
mCurrOutfitPanel(NULL)
{
- //LLUICtrlFactory::getInstance()->buildPanel(this, "panel_appearance.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
- mFetchWorn = new LLCurrentlyWornFetchObserver(this);
-
- mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this);
}
LLSidepanelAppearance::~LLSidepanelAppearance()
{
+ gInventory.removeObserver(mOutfitRenameWatcher);
+ delete mOutfitRenameWatcher;
}
// virtual
@@ -151,9 +150,12 @@ BOOL LLSidepanelAppearance::postBuild()
}
mCurrentLookName = getChild<LLTextBox>("currentlook_name");
+
+ mOutfitDirtyTag = getChild<LLTextBox>("currentlook_title");
mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
+ mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this);
gInventory.addObserver(mOutfitRenameWatcher);
return TRUE;
@@ -166,6 +168,11 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
refreshCurrentOutfitName();
updateVerbs();
+ if (mPanelOutfitsInventory)
+ {
+ mPanelOutfitsInventory->onOpen(key);
+ }
+
if(key.size() == 0)
return;
@@ -198,7 +205,7 @@ void LLSidepanelAppearance::onFilterEdit(const std::string& search_string)
void LLSidepanelAppearance::onOpenOutfitButtonClicked()
{
- const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getCurrentOutfitLink();
+ const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getBaseOutfitLink();
if (!outfit_link)
return;
if (!outfit_link->getIsLinkType())
@@ -208,7 +215,7 @@ void LLSidepanelAppearance::onOpenOutfitButtonClicked()
if (tab_outfits)
{
tab_outfits->changeOpenClose(FALSE);
- LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_accordionpanel");
+ LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab");
if (inventory_panel)
{
LLFolderView *folder = inventory_panel->getRootFolder();
@@ -248,7 +255,7 @@ void LLSidepanelAppearance::onNewOutfitButtonClicked()
{
if (!mLookInfo->getVisible())
{
- mPanelOutfitsInventory->onNew();
+ mPanelOutfitsInventory->onSave();
}
}
@@ -271,7 +278,7 @@ void LLSidepanelAppearance::toggleLookInfoPanel(BOOL visible)
return;
mLookInfo->setVisible(visible);
- mPanelOutfitsInventory->setVisible(!visible);
+ if (mPanelOutfitsInventory) mPanelOutfitsInventory->setVisible(!visible);
mFilterEditor->setVisible(!visible);
mEditBtn->setVisible(!visible);
mNewOutfitBtn->setVisible(!visible);
@@ -298,7 +305,7 @@ void LLSidepanelAppearance::updateVerbs()
{
bool is_look_info_visible = mLookInfo->getVisible();
- if (!is_look_info_visible)
+ if (mPanelOutfitsInventory && !is_look_info_visible)
{
const bool is_correct_type = (mPanelOutfitsInventory->getCorrectListenerForAction() != NULL);
mEditBtn->setEnabled(is_correct_type);
@@ -311,17 +318,14 @@ void LLSidepanelAppearance::updateVerbs()
void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
{
+ mOutfitDirtyTag->setVisible(LLAppearanceManager::getInstance()->isOutfitDirty());
if (name == "")
{
- const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getCurrentOutfitLink();
- if (outfit_link)
+ std::string outfit_name;
+ if (LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name))
{
- const LLViewerInventoryCategory *cat = outfit_link->getLinkedCategory();
- if (cat && cat->getPreferredType() == LLFolderType::FT_OUTFIT)
- {
- mCurrentLookName->setText(cat->getName());
+ mCurrentLookName->setText(outfit_name);
return;
- }
}
mCurrentLookName->setText(getString("No Outfit"));
mOpenOutfitBtn->setEnabled(FALSE);
@@ -381,16 +385,17 @@ void LLSidepanelAppearance::fetchInventory()
}
}
- mFetchWorn->fetchItems(ids);
+ LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(this);
+ fetch_worn->fetchItems(ids);
// If no items to be fetched, done will never be triggered.
// TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition.
- if (mFetchWorn->isEverythingComplete())
+ if (fetch_worn->isEverythingComplete())
{
- mFetchWorn->done();
+ fetch_worn->done();
}
else
{
- gInventory.addObserver(mFetchWorn);
+ gInventory.addObserver(fetch_worn);
}
}