Skip to content
Snippets Groups Projects
Commit a62b1a26 authored by Merov Linden's avatar Merov Linden
Browse files

DD-301 : Add show only listing folders as an optional filter

parent 855696c3
No related branches found
No related tags found
No related merge requests found
...@@ -53,7 +53,7 @@ static LLPanelInjector<LLPanelMarketplaceListings> t_panel_status("llpanelmarket ...@@ -53,7 +53,7 @@ static LLPanelInjector<LLPanelMarketplaceListings> t_panel_status("llpanelmarket
LLPanelMarketplaceListings::LLPanelMarketplaceListings() LLPanelMarketplaceListings::LLPanelMarketplaceListings()
: mRootFolder(NULL) : mRootFolder(NULL)
, mSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME) , mSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME)
, mFilterType(LLInventoryFilter::FILTERTYPE_NONE) , mFilterListingFoldersOnly(false)
{ {
mCommitCallbackRegistrar.add("Marketplace.ViewSort.Action", boost::bind(&LLPanelMarketplaceListings::onViewSortMenuItemClicked, this, _2)); mCommitCallbackRegistrar.add("Marketplace.ViewSort.Action", boost::bind(&LLPanelMarketplaceListings::onViewSortMenuItemClicked, this, _2));
mEnableCallbackRegistrar.add("Marketplace.ViewSort.CheckItem", boost::bind(&LLPanelMarketplaceListings::onViewSortMenuItemCheck, this, _2)); mEnableCallbackRegistrar.add("Marketplace.ViewSort.CheckItem", boost::bind(&LLPanelMarketplaceListings::onViewSortMenuItemCheck, this, _2));
...@@ -226,6 +226,21 @@ void LLPanelMarketplaceListings::onViewSortMenuItemClicked(const LLSD& userdata) ...@@ -226,6 +226,21 @@ void LLPanelMarketplaceListings::onViewSortMenuItemClicked(const LLSD& userdata)
panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items"); panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items");
panel->setSortOrder(mSortOrder); panel->setSortOrder(mSortOrder);
} }
// Filter option
else if (chosen_item == "show_only_listing_folders")
{
mFilterListingFoldersOnly = !mFilterListingFoldersOnly;
// Set each panel with that filter flag
LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs");
LLInventoryPanel* panel = (LLInventoryPanel*)tabs_panel->getPanelByName("All Items");
panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly);
panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Active Items");
panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly);
panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Inactive Items");
panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly);
panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items");
panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly);
}
} }
bool LLPanelMarketplaceListings::onViewSortMenuItemCheck(const LLSD& userdata) bool LLPanelMarketplaceListings::onViewSortMenuItemCheck(const LLSD& userdata)
...@@ -233,7 +248,13 @@ bool LLPanelMarketplaceListings::onViewSortMenuItemCheck(const LLSD& userdata) ...@@ -233,7 +248,13 @@ bool LLPanelMarketplaceListings::onViewSortMenuItemCheck(const LLSD& userdata)
std::string chosen_item = userdata.asString(); std::string chosen_item = userdata.asString();
if (chosen_item == "sort_by_stock_amount") if (chosen_item == "sort_by_stock_amount")
{
return mSortOrder == LLInventoryFilter::SO_FOLDERS_BY_WEIGHT; return mSortOrder == LLInventoryFilter::SO_FOLDERS_BY_WEIGHT;
}
else if (chosen_item == "show_only_listing_folders")
{
return mFilterListingFoldersOnly;
}
return false; return false;
} }
......
...@@ -74,8 +74,8 @@ class LLPanelMarketplaceListings : public LLPanel ...@@ -74,8 +74,8 @@ class LLPanelMarketplaceListings : public LLPanel
LLButton* mAuditBtn; LLButton* mAuditBtn;
LLFilterEditor* mFilterEditor; LLFilterEditor* mFilterEditor;
std::string mFilterSubString; std::string mFilterSubString;
bool mFilterListingFoldersOnly;
LLInventoryFilter::ESortOrderType mSortOrder; LLInventoryFilter::ESortOrderType mSortOrder;
LLInventoryFilter::EFilterType mFilterType;
}; };
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
...@@ -146,10 +146,20 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const ...@@ -146,10 +146,20 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const
// Marketplace folder filtering // Marketplace folder filtering
const U32 filterTypes = mFilterOps.mFilterTypes; 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) if (filterTypes & marketplace_filter)
{ {
S32 depth = depth_nesting_in_marketplace(folder_id); S32 depth = depth_nesting_in_marketplace(folder_id);
if (filterTypes & FILTERTYPE_MARKETPLACE_LISTING_FOLDER)
{
if (depth > 1)
{
return false;
}
}
if (depth > 0) if (depth > 0)
{ {
LLUUID listing_uuid = nested_parent_id(folder_id, depth); LLUUID listing_uuid = nested_parent_id(folder_id, depth);
...@@ -551,6 +561,20 @@ void LLInventoryFilter::setFilterMarketplaceUnassociatedFolders() ...@@ -551,6 +561,20 @@ void LLInventoryFilter::setFilterMarketplaceUnassociatedFolders()
mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_UNASSOCIATED; 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) void LLInventoryFilter::setFilterUUID(const LLUUID& object_id)
{ {
if (mFilterOps.mFilterUUID == LLUUID::null) if (mFilterOps.mFilterUUID == LLUUID::null)
......
...@@ -55,7 +55,8 @@ class LLInventoryFilter : public LLFolderViewFilter ...@@ -55,7 +55,8 @@ class LLInventoryFilter : public LLFolderViewFilter
FILTERTYPE_EMPTYFOLDERS = 0x1 << 5, // pass if folder is not a system folder to be hidden if empty FILTERTYPE_EMPTYFOLDERS = 0x1 << 5, // pass if folder is not a system folder to be hidden if empty
FILTERTYPE_MARKETPLACE_ACTIVE = 0x1 << 6, // pass if folder is a marketplace active folder FILTERTYPE_MARKETPLACE_ACTIVE = 0x1 << 6, // pass if folder is a marketplace active folder
FILTERTYPE_MARKETPLACE_INACTIVE = 0x1 << 7, // pass if folder is a marketplace inactive folder FILTERTYPE_MARKETPLACE_INACTIVE = 0x1 << 7, // pass if folder is a marketplace inactive folder
FILTERTYPE_MARKETPLACE_UNASSOCIATED = 0x1 << 8 // pass if folder is a marketplace non associated (no market ID) folder FILTERTYPE_MARKETPLACE_UNASSOCIATED = 0x1 << 8, // pass if folder is a marketplace non associated (no market ID) folder
FILTERTYPE_MARKETPLACE_LISTING_FOLDER = 0x1 << 9 // pass iff folder is a listing folder
}; };
enum EFilterDateDirection enum EFilterDateDirection
...@@ -177,6 +178,7 @@ class LLInventoryFilter : public LLFolderViewFilter ...@@ -177,6 +178,7 @@ class LLInventoryFilter : public LLFolderViewFilter
void setFilterMarketplaceActiveFolders(); void setFilterMarketplaceActiveFolders();
void setFilterMarketplaceInactiveFolders(); void setFilterMarketplaceInactiveFolders();
void setFilterMarketplaceUnassociatedFolders(); void setFilterMarketplaceUnassociatedFolders();
void setFilterMarketplaceListingFolders(bool select_only_listing_folders);
void updateFilterTypes(U64 types, U64& current_types); void updateFilterTypes(U64 types, U64& current_types);
void setFilterSubString(const std::string& string); void setFilterSubString(const std::string& string);
......
...@@ -13,4 +13,14 @@ ...@@ -13,4 +13,14 @@
function="Marketplace.ViewSort.CheckItem" function="Marketplace.ViewSort.CheckItem"
parameter="sort_by_stock_amount"/> parameter="sort_by_stock_amount"/>
</menu_item_check> </menu_item_check>
<menu_item_check
label="Show only listing folders"
name="show_only_listing_folders">
<menu_item_check.on_click
function="Marketplace.ViewSort.Action"
parameter="show_only_listing_folders"/>
<menu_item_check.on_check
function="Marketplace.ViewSort.CheckItem"
parameter="show_only_listing_folders"/>
</menu_item_check>
</toggleable_menu> </toggleable_menu>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment