From 00529b31b722d64699615241d95ea492134bc9bf Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Thu, 4 May 2017 15:00:33 +0300 Subject: MAINT-7383 Revise notification for Empty Trash / Purge trash action to include number of items being deleted. --- indra/newview/llavataractions.cpp | 28 ++++++++++++++++++++++ indra/newview/llavataractions.h | 3 +++ indra/newview/llinventorymodel.cpp | 9 ++++++- indra/newview/llpanelmaininventory.cpp | 1 + .../skins/default/xui/en/menu_inventory.xml | 3 +-- .../newview/skins/default/xui/en/notifications.xml | 17 ++++++++++--- 6 files changed, 55 insertions(+), 6 deletions(-) (limited to 'indra') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 2045c3e297..0d0861efcc 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -930,6 +930,16 @@ void LLAvatarActions::shareWithAvatars(LLView * panel) } +//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*/) { @@ -1170,6 +1180,24 @@ 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 256d44d820..8ff1ef073d 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -125,6 +125,8 @@ public: */ static void shareWithAvatars(LLView * panel); + static void purgeSelectedItems(); + /** * Block/unblock the avatar. */ @@ -243,6 +245,7 @@ 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/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 8a605ff574..0fe03583f5 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -3318,7 +3318,14 @@ void LLInventoryModel::emptyFolderType(const std::string notification, LLFolderT { if (!notification.empty()) { - LLNotificationsUtil::add(notification, LLSD(), LLSD(), + LLSD args; + if(LLFolderType::FT_TRASH == preferred_type) + { + static const U32 trash_max_capacity = gSavedSettings.getU32("InventoryTrashMaxCapacity"); + const LLUUID trash_id = findCategoryUUIDForType(preferred_type); + args["COUNT"] = (S32)getDescendentsCountRecursive(trash_id, trash_max_capacity); + } + LLNotificationsUtil::add(notification, args, LLSD(), boost::bind(&LLInventoryModel::callbackEmptyFolderType, this, _1, _2, preferred_type)); } else diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index fa946ee5c7..adbcf377c0 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -118,6 +118,7 @@ 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 e1f9269c70..7b3a9a2e3e 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -518,8 +518,7 @@ layout="topleft" name="Purge Item"> + function="Inventory.Purge"/> + +[COUNT] item(s) will be permanently deleted. Are you sure you want to permanently delete selected item(s) from your Trash? + confirm + + + -Are you sure you want to permanently delete the contents of your Trash? +[COUNT] items will be permanently deleted. Are you sure you want to permanently delete the contents of your Trash? confirm -- cgit v1.2.3