From 5bd00f860213ebfa116d7b85fff447af3b87d814 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Mon, 15 May 2017 16:47:18 +0300 Subject: MAINT-7383 show notifications for Purge item action in all inventory panels --- indra/newview/llavataractions.cpp | 29 -------------------- indra/newview/llavataractions.h | 3 --- indra/newview/llinventorypanel.cpp | 31 +++++++++++++++++----- indra/newview/llinventorypanel.h | 2 ++ indra/newview/llpanelmaininventory.cpp | 1 - .../skins/default/xui/en/menu_inventory.xml | 3 ++- 6 files changed, 28 insertions(+), 41 deletions(-) diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 0d0861efcc..219d9da01f 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -929,17 +929,6 @@ void LLAvatarActions::shareWithAvatars(LLView * panel) LLNotificationsUtil::add("ShareNotification"); } - -//static -void LLAvatarActions::purgeSelectedItems() -{ - const std::set inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(); - if (inventory_selected_uuids.empty()) return; - LLSD args; - args["COUNT"] = (S32)inventory_selected_uuids.size(); - LLNotificationsUtil::add("PurgeSelectedItems", args, LLSD(), &callbackPurgeSelectedItems); -} - // static bool LLAvatarActions::canShareSelectedItems(LLInventoryPanel* inv_panel /* = NULL*/) { @@ -1180,24 +1169,6 @@ bool LLAvatarActions::callbackAddFriendWithMessage(const LLSD& notification, con return false; } -bool LLAvatarActions::callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) - { - const std::set inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(); - if (inventory_selected_uuids.empty()) return false; - - std::set::const_iterator it = inventory_selected_uuids.begin(); - const std::set::const_iterator it_end = inventory_selected_uuids.end(); - for (; it != it_end; ++it) - { - remove_inventory_object(*it, NULL); - } - } - return false; -} - // static bool LLAvatarActions::handleKick(const LLSD& notification, const LLSD& response) { diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index 8ff1ef073d..256d44d820 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -125,8 +125,6 @@ public: */ static void shareWithAvatars(LLView * panel); - static void purgeSelectedItems(); - /** * Block/unblock the avatar. */ @@ -245,7 +243,6 @@ public: private: static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response); - static bool callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response); static bool handleRemove(const LLSD& notification, const LLSD& response); static bool handlePay(const LLSD& notification, const LLSD& response, LLUUID avatar_id); static bool handleFreezeAvatar(const LLSD& notification, const LLSD& response); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index a00dcf02ab..4b117941a0 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -43,6 +43,7 @@ #include "llinventorybridge.h" #include "llinventoryfunctions.h" #include "llinventorymodelbackgroundfetch.h" +#include "llnotificationsutil.h" #include "llpreview.h" #include "llsidepanelinventory.h" #include "lltrans.h" @@ -168,7 +169,6 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) : mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this)); mCommitCallbackRegistrar.add("Inventory.Share", boost::bind(&LLAvatarActions::shareWithAvatars, this)); mCommitCallbackRegistrar.add("Inventory.FileUploadLocation", boost::bind(&LLInventoryPanel::fileUploadLocation, this, _2)); - mCommitCallbackRegistrar.add("Inventory.Purge", boost::bind(&LLInventoryPanel::purgeSelectedItems, this)); } LLFolderView * LLInventoryPanel::createFolderRoot(LLUUID root_id ) @@ -1216,17 +1216,29 @@ void LLInventoryPanel::purgeSelectedItems() { const std::set inventory_selected = mFolderRoot.get()->getSelectionList(); if (inventory_selected.empty()) return; + LLSD args; + args["COUNT"] = (S32)inventory_selected.size(); + LLNotificationsUtil::add("PurgeSelectedItems", args, LLSD(), boost::bind(&LLInventoryPanel::callbackPurgeSelectedItems, this, _1, _2)); +} - std::set::const_iterator it = inventory_selected.begin(); - const std::set::const_iterator it_end = inventory_selected.end(); - for (; it != it_end; ++it) +void LLInventoryPanel::callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) { - LLUUID item_id = static_cast((*it)->getViewModelItem())->getUUID(); - remove_inventory_object(item_id, NULL); + const std::set inventory_selected = mFolderRoot.get()->getSelectionList(); + if (inventory_selected.empty()) return; + + std::set::const_iterator it = inventory_selected.begin(); + const std::set::const_iterator it_end = inventory_selected.end(); + for (; it != it_end; ++it) + { + LLUUID item_id = static_cast((*it)->getViewModelItem())->getUUID(); + remove_inventory_object(item_id, NULL); + } } } - bool LLInventoryPanel::attachObject(const LLSD& userdata) { // Copy selected item UUIDs to a vector. @@ -1464,6 +1476,11 @@ void LLInventoryPanel::updateSelection() void LLInventoryPanel::doToSelected(const LLSD& userdata) { + if (("purge" == userdata.asString())) + { + purgeSelectedItems(); + return; + } LLInventoryAction::doToSelected(mInventory, mFolderRoot.get(), userdata.asString()); return; diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 7f63ea97cc..5ee58707b0 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -233,6 +233,8 @@ public: // Clean up stuff when the folder root gets deleted void clearFolderRoot(); + void callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response); + protected: void openStartFolderOrMyInventory(); // open the first level of inventory void onItemsCompletion(); // called when selected items are complete diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index ff54f83016..3db9500de0 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -118,7 +118,6 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p) mCommitCallbackRegistrar.add("Inventory.ResetFilters", boost::bind(&LLPanelMainInventory::resetFilters, this)); mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2)); mCommitCallbackRegistrar.add("Inventory.Share", boost::bind(&LLAvatarActions::shareWithAvatars, this)); - mCommitCallbackRegistrar.add("Inventory.Purge", boost::bind(&LLAvatarActions::purgeSelectedItems)); mSavedFolderState = new LLSaveFolderState(); mSavedFolderState->setApply(FALSE); diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 8472185457..ec9f947338 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -518,7 +518,8 @@ layout="topleft" name="Purge Item"> + function="Inventory.DoToSelected" + parameter="purge"/>