From 03622e0833fd2d2bdcc9ed3ed0c009ad9e9fee3e Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Thu, 20 Mar 2014 09:31:35 -0700 Subject: DD-50 : Adding new filter code for marketplace filtered tabs (active, unactive and unassociated) --- indra/newview/llinventoryfilter.cpp | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'indra/newview/llinventoryfilter.cpp') diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 3c6974cf6d..284c354fc6 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -33,6 +33,7 @@ #include "llfolderviewitem.h" #include "llinventorymodel.h" #include "llinventorymodelbackgroundfetch.h" +#include "llmarketplacefunctions.h" #include "llviewercontrol.h" #include "llfolderview.h" #include "llinventorybridge.h" @@ -243,6 +244,48 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent } } } + + //////////////////////////////////////////////////////////////////////////////// + // FILTERTYPE_MARKETPLACE_ACTIVE + // Pass if this item is a folder and is active + if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) + { + if (object_type == LLInventoryType::IT_CATEGORY) + { + if (LLMarketplaceData::instance().getActivationState(object_id)) + { + return FALSE; + } + } + } + + //////////////////////////////////////////////////////////////////////////////// + // FILTERTYPE_MARKETPLACE_INACTIVE + // Pass if this item is a folder and is not active + if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) + { + if (object_type == LLInventoryType::IT_CATEGORY) + { + if (!LLMarketplaceData::instance().getActivationState(object_id)) + { + return FALSE; + } + } + } + + //////////////////////////////////////////////////////////////////////////////// + // FILTERTYPE_MARKETPLACE_UNASSOCIATED + // Pass if this item is a folder and is active + if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) + { + if (object_type == LLInventoryType::IT_CATEGORY) + { + if (LLMarketplaceData::instance().getListingID(object_id).empty()) + { + return FALSE; + } + } + } return TRUE; } @@ -468,6 +511,21 @@ void LLInventoryFilter::setFilterEmptySystemFolders() mFilterOps.mFilterTypes |= FILTERTYPE_EMPTYFOLDERS; } +void LLInventoryFilter::setFilterMarketplaceActiveFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_ACTIVE; +} + +void LLInventoryFilter::setFilterMarketplaceInactiveFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_INACTIVE; +} + +void LLInventoryFilter::setFilterMarketplaceUnassociatedFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_UNASSOCIATED; +} + void LLInventoryFilter::setFilterUUID(const LLUUID& object_id) { if (mFilterOps.mFilterUUID == LLUUID::null) -- cgit v1.2.3 From 74c4f3d0e6ab0d5c7dc6b7480ef63b2898e7a6f2 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Thu, 20 Mar 2014 15:17:36 -0700 Subject: DD-50 : Add the filtering code for marketplace prefiltered tabs --- indra/newview/llinventoryfilter.cpp | 66 ++++++++++++++----------------------- 1 file changed, 24 insertions(+), 42 deletions(-) (limited to 'indra/newview/llinventoryfilter.cpp') diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 284c354fc6..41567c5237 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -132,6 +132,30 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const LLInventoryModelBackgroundFetch::instance().start(folder_id); } + // Marketplace folder filtering + const U32 filterTypes = mFilterOps.mFilterTypes; + if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) + { + if (!LLMarketplaceData::instance().getActivationState(folder_id)) + { + return false; + } + } + if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) + { + if (LLMarketplaceData::instance().getActivationState(folder_id)) + { + return false; + } + } + if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) + { + if (!LLMarketplaceData::instance().getListingID(folder_id).empty()) + { + return false; + } + } + // Always check against the clipboard const BOOL passed_clipboard = checkAgainstClipboard(folder_id); @@ -245,48 +269,6 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent } } - //////////////////////////////////////////////////////////////////////////////// - // FILTERTYPE_MARKETPLACE_ACTIVE - // Pass if this item is a folder and is active - if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) - { - if (object_type == LLInventoryType::IT_CATEGORY) - { - if (LLMarketplaceData::instance().getActivationState(object_id)) - { - return FALSE; - } - } - } - - //////////////////////////////////////////////////////////////////////////////// - // FILTERTYPE_MARKETPLACE_INACTIVE - // Pass if this item is a folder and is not active - if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) - { - if (object_type == LLInventoryType::IT_CATEGORY) - { - if (!LLMarketplaceData::instance().getActivationState(object_id)) - { - return FALSE; - } - } - } - - //////////////////////////////////////////////////////////////////////////////// - // FILTERTYPE_MARKETPLACE_UNASSOCIATED - // Pass if this item is a folder and is active - if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) - { - if (object_type == LLInventoryType::IT_CATEGORY) - { - if (LLMarketplaceData::instance().getListingID(object_id).empty()) - { - return FALSE; - } - } - } - return TRUE; } -- cgit v1.2.3 From a0f5a63a661d3ebc03e82463897c63dd35918749 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Wed, 9 Apr 2014 15:51:28 -0700 Subject: DD-16 : WIP : Fix filtering on menu and tabs. Sort still not done --- indra/newview/llinventoryfilter.cpp | 38 +++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) (limited to 'indra/newview/llinventoryfilter.cpp') diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 6a800cf5ba..cf5e87c717 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -33,6 +33,7 @@ #include "llfolderviewitem.h" #include "llinventorymodel.h" #include "llinventorymodelbackgroundfetch.h" +#include "llinventoryfunctions.h" #include "llmarketplacefunctions.h" #include "llviewercontrol.h" #include "llfolderview.h" @@ -133,29 +134,34 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const } // Marketplace folder filtering - const U32 filterTypes = mFilterOps.mFilterTypes; - if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) - { - if (!LLMarketplaceData::instance().getActivationState(folder_id)) + S32 depth = depth_nesting_in_marketplace(folder_id); + if (depth > 0) + { + const U32 filterTypes = mFilterOps.mFilterTypes; + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) { - return false; + if (!LLMarketplaceData::instance().getActivationState(listing_uuid)) + { + return false; + } } - } - if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) - { - if (LLMarketplaceData::instance().getActivationState(folder_id)) + else if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) { - return false; + if (!LLMarketplaceData::instance().isListed(listing_uuid) || LLMarketplaceData::instance().getActivationState(listing_uuid)) + { + return false; + } } - } - if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) - { - if (!LLMarketplaceData::instance().getListingID(folder_id).empty()) + else if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) { - return false; + if (LLMarketplaceData::instance().isListed(listing_uuid)) + { + return false; + } } } - + // Always check against the clipboard const BOOL passed_clipboard = checkAgainstClipboard(folder_id); -- cgit v1.2.3 From 511c77657963afa06819560b6eb2c4a6c224af72 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Tue, 21 Oct 2014 16:39:55 -0700 Subject: DD-220 : Avoid testing folders against marketplace root if we are not filtering against the marketplace --- indra/newview/llinventoryfilter.cpp | 40 ++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'indra/newview/llinventoryfilter.cpp') diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index a649b515d1..07835f189c 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -136,33 +136,37 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const } // Marketplace folder filtering - S32 depth = depth_nesting_in_marketplace(folder_id); - if (depth > 0) + const U32 filterTypes = mFilterOps.mFilterTypes; + const U32 marketplace_filter = FILTERTYPE_MARKETPLACE_ACTIVE | FILTERTYPE_MARKETPLACE_INACTIVE | FILTERTYPE_MARKETPLACE_UNASSOCIATED; + if (filterTypes & marketplace_filter) { - const U32 filterTypes = mFilterOps.mFilterTypes; - LLUUID listing_uuid = nested_parent_id(folder_id, depth); - if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) + S32 depth = depth_nesting_in_marketplace(folder_id); + if (depth > 0) { - if (!LLMarketplaceData::instance().getActivationState(listing_uuid)) + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) { - return false; + if (!LLMarketplaceData::instance().getActivationState(listing_uuid)) + { + return false; + } } - } - else if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) - { - if (!LLMarketplaceData::instance().isListed(listing_uuid) || LLMarketplaceData::instance().getActivationState(listing_uuid)) + else if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) { - return false; + if (!LLMarketplaceData::instance().isListed(listing_uuid) || LLMarketplaceData::instance().getActivationState(listing_uuid)) + { + return false; + } } - } - else if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) - { - if (LLMarketplaceData::instance().isListed(listing_uuid)) + else if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) { - return false; + if (LLMarketplaceData::instance().isListed(listing_uuid)) + { + return false; + } } } - } + } // Always check against the clipboard const BOOL passed_clipboard = checkAgainstClipboard(folder_id); -- cgit v1.2.3 From a62b1a26f5fcc88fa00c90075fa3c02b1f611e4c Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Sat, 24 Jan 2015 20:56:24 -0800 Subject: DD-301 : Add show only listing folders as an optional filter --- indra/newview/llinventoryfilter.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'indra/newview/llinventoryfilter.cpp') diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 8fcfbd646f..d0fb994043 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -146,10 +146,20 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const // Marketplace folder filtering const U32 filterTypes = mFilterOps.mFilterTypes; - const U32 marketplace_filter = FILTERTYPE_MARKETPLACE_ACTIVE | FILTERTYPE_MARKETPLACE_INACTIVE | FILTERTYPE_MARKETPLACE_UNASSOCIATED; + const U32 marketplace_filter = FILTERTYPE_MARKETPLACE_ACTIVE | FILTERTYPE_MARKETPLACE_INACTIVE | + FILTERTYPE_MARKETPLACE_UNASSOCIATED | FILTERTYPE_MARKETPLACE_LISTING_FOLDER; if (filterTypes & marketplace_filter) { S32 depth = depth_nesting_in_marketplace(folder_id); + + if (filterTypes & FILTERTYPE_MARKETPLACE_LISTING_FOLDER) + { + if (depth > 1) + { + return false; + } + } + if (depth > 0) { LLUUID listing_uuid = nested_parent_id(folder_id, depth); @@ -551,6 +561,20 @@ void LLInventoryFilter::setFilterMarketplaceUnassociatedFolders() mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_UNASSOCIATED; } +void LLInventoryFilter::setFilterMarketplaceListingFolders(bool select_only_listing_folders) +{ + if (select_only_listing_folders) + { + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_LISTING_FOLDER; + setModified(FILTER_MORE_RESTRICTIVE); + } + else + { + mFilterOps.mFilterTypes &= ~FILTERTYPE_MARKETPLACE_LISTING_FOLDER; + setModified(FILTER_LESS_RESTRICTIVE); + } +} + void LLInventoryFilter::setFilterUUID(const LLUUID& object_id) { if (mFilterOps.mFilterUUID == LLUUID::null) -- cgit v1.2.3 From fc33f396d46d5425ea2737731c6ba23d81b323bd Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 17 Mar 2015 18:26:18 +0200 Subject: MAINT-4987 FIXED After cancelling the search term when using "Find all links" in Recent items tab of inventory, full inventory contents display in Recent items tab. --- indra/newview/llinventoryfilter.cpp | 39 +++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'indra/newview/llinventoryfilter.cpp') diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index dc8b15a5bf..9f6a042e41 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -68,7 +68,8 @@ LLInventoryFilter::LLInventoryFilter(const Params& p) : mName(p.name), mFilterModified(FILTER_NONE), mEmptyLookupMessage("InventoryNoMatchingItems"), - mFilterOps(p.filter_ops), + mFilterOps(p.filter_ops), + mBackupFilterOps(mFilterOps), mFilterSubString(p.substring), mCurrentGeneration(0), mFirstRequiredGeneration(0), @@ -546,6 +547,21 @@ void LLInventoryFilter::setFilterSubString(const std::string& string) setModified(FILTER_RESTART); } + // Cancel out filter links once the search string is modified + if (mFilterOps.mFilterLinks == FILTERLINK_ONLY_LINKS) + { + if (mBackupFilterOps.mFilterLinks == FILTERLINK_ONLY_LINKS) + { + // we started viewer/floater in 'only links' mode + mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS; + } + else + { + mFilterOps = mBackupFilterOps; + setModified(FILTER_RESTART); + } + } + // Cancel out UUID once the search string is modified if (mFilterOps.mFilterTypes == FILTERTYPE_UUID) { @@ -553,11 +569,6 @@ void LLInventoryFilter::setFilterSubString(const std::string& string) mFilterOps.mFilterUUID == LLUUID::null; setModified(FILTER_RESTART); } - - // Cancel out filter links once the search string is modified - { - mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS; - } } } @@ -748,6 +759,22 @@ void LLInventoryFilter::setShowFolderState(EFolderShow state) } } +void LLInventoryFilter::setFindAllLinksMode(const std::string &search_name, const LLUUID& search_id) +{ + // Save a copy of settings so that we will be able to restore it later + // but make sure we are not searching for links already + if(mFilterOps.mFilterLinks != FILTERLINK_ONLY_LINKS) + { + mBackupFilterOps = mFilterOps; + } + + // set search options + setFilterSubString(search_name); + setFilterUUID(search_id); + setShowFolderState(SHOW_NON_EMPTY_FOLDERS); + setFilterLinks(FILTERLINK_ONLY_LINKS); +} + void LLInventoryFilter::markDefault() { mDefaultFilterOps = mFilterOps; -- cgit v1.2.3 From 1d257ab53fa031db7d7adb2f4eda61c37b68b82a Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Fri, 5 Jun 2015 14:51:30 -0700 Subject: DD-290 : Add an option to filter out marketplace, use it in Recent tab --- indra/newview/llinventoryfilter.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'indra/newview/llinventoryfilter.cpp') diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 0f393de79c..3ed876af87 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -147,11 +147,20 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const // Marketplace folder filtering const U32 filterTypes = mFilterOps.mFilterTypes; const U32 marketplace_filter = FILTERTYPE_MARKETPLACE_ACTIVE | FILTERTYPE_MARKETPLACE_INACTIVE | - FILTERTYPE_MARKETPLACE_UNASSOCIATED | FILTERTYPE_MARKETPLACE_LISTING_FOLDER; + FILTERTYPE_MARKETPLACE_UNASSOCIATED | FILTERTYPE_MARKETPLACE_LISTING_FOLDER | + FILTERTYPE_NO_MARKETPLACE_ITEMS; if (filterTypes & marketplace_filter) { S32 depth = depth_nesting_in_marketplace(folder_id); + if (filterTypes & FILTERTYPE_NO_MARKETPLACE_ITEMS) + { + if (depth >= 0) + { + return false; + } + } + if (filterTypes & FILTERTYPE_MARKETPLACE_LISTING_FOLDER) { if (depth > 1) @@ -575,6 +584,11 @@ void LLInventoryFilter::setFilterMarketplaceListingFolders(bool select_only_list } } +void LLInventoryFilter::setFilterNoMarketplaceFolder() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_NO_MARKETPLACE_ITEMS; +} + void LLInventoryFilter::setFilterUUID(const LLUUID& object_id) { if (mFilterOps.mFilterUUID == LLUUID::null) -- cgit v1.2.3