diff options
Diffstat (limited to 'indra/newview/llsidepanelinventory.cpp')
-rw-r--r-- | indra/newview/llsidepanelinventory.cpp | 54 |
1 files changed, 49 insertions, 5 deletions
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 5383158cd3..fa543f1371 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -33,6 +33,7 @@ #include "llsidepanelinventory.h" #include "llagent.h" +#include "llavataractions.h" #include "llbutton.h" #include "llinventorybridge.h" #include "llinventorypanel.h" @@ -62,7 +63,7 @@ BOOL LLSidepanelInventory::postBuild() // UI elements from inventory panel { mInventoryPanel = getChild<LLPanel>("sidepanel__inventory_panel"); - + mInfoBtn = mInventoryPanel->getChild<LLButton>("info_btn"); mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this)); @@ -83,6 +84,14 @@ BOOL LLSidepanelInventory::postBuild() mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2)); + + /* + EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?" + Deferring this until 2.1. + LLInventoryPanel *my_inventory_panel = mPanelMainInventory->getChild<LLInventoryPanel>("All Items"); + my_inventory_panel->addHideFolderType(LLFolderType::FT_LANDMARK); + my_inventory_panel->addHideFolderType(LLFolderType::FT_FAVORITE); + */ } // UI elements from item panel @@ -143,6 +152,7 @@ void LLSidepanelInventory::onInfoButtonClicked() void LLSidepanelInventory::onShareButtonClicked() { + LLAvatarActions::shareWithAvatars(); } void LLSidepanelInventory::performActionOnSelection(const std::string &action) @@ -153,7 +163,7 @@ void LLSidepanelInventory::performActionOnSelection(const std::string &action) { return; } - current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getRootFolder(), panel_main_inventory->getActivePanel()->getModel(), action); + current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getModel(), action); } void LLSidepanelInventory::onWearButtonClicked() @@ -164,7 +174,21 @@ void LLSidepanelInventory::onWearButtonClicked() void LLSidepanelInventory::onPlayButtonClicked() { - performActionOnSelection("activate"); + const LLInventoryItem *item = getSelectedItem(); + if (!item) + { + return; + } + + switch(item->getInventoryType()) + { + case LLInventoryType::IT_GESTURE: + performActionOnSelection("play"); + break; + default: + performActionOnSelection("open"); + break; + } } void LLSidepanelInventory::onTeleportButtonClicked() @@ -230,7 +254,9 @@ void LLSidepanelInventory::updateVerbs() mPlayBtn->setEnabled(FALSE); mTeleportBtn->setVisible(FALSE); mTeleportBtn->setEnabled(FALSE); - + + mShareBtn->setEnabled(canShare()); + const LLInventoryItem *item = getSelectedItem(); if (!item) return; @@ -238,7 +264,6 @@ void LLSidepanelInventory::updateVerbs() bool is_single_selection = getSelectedCount() == 1; mInfoBtn->setEnabled(is_single_selection); - mShareBtn->setEnabled(is_single_selection); switch(item->getInventoryType()) { @@ -263,6 +288,25 @@ void LLSidepanelInventory::updateVerbs() } } +bool LLSidepanelInventory::canShare() +{ + LLPanelMainInventory* panel_main_inventory = + mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); + + LLFolderView* root_folder = + panel_main_inventory->getActivePanel()->getRootFolder(); + + LLFolderViewItem* current_item = root_folder->hasVisibleChildren() + ? root_folder->getCurSelectedItem() + : NULL; + + LLInvFVBridge* bridge = current_item + ? dynamic_cast <LLInvFVBridge*> (current_item->getListener()) + : NULL; + + return bridge ? bridge->canShare() : false; +} + LLInventoryItem *LLSidepanelInventory::getSelectedItem() { LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); |