From 36ce6fbda5ffe8474129c28ab77090c25967b51b Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Wed, 6 May 2015 23:47:44 -0700 Subject: DD-403 : Add sort by name and by most recent --- indra/newview/llfloatermarketplacelistings.cpp | 32 +++++++++++++++--- indra/newview/llfloatermarketplacelistings.h | 2 +- .../skins/default/xui/en/menu_marketplace_view.xml | 38 +++++++++++++++++----- 3 files changed, 59 insertions(+), 13 deletions(-) diff --git a/indra/newview/llfloatermarketplacelistings.cpp b/indra/newview/llfloatermarketplacelistings.cpp index 5d3eb50240..eb7601f67e 100755 --- a/indra/newview/llfloatermarketplacelistings.cpp +++ b/indra/newview/llfloatermarketplacelistings.cpp @@ -229,9 +229,22 @@ void LLPanelMarketplaceListings::onViewSortMenuItemClicked(const LLSD& userdata) std::string chosen_item = userdata.asString(); // Sort options - if (chosen_item == "sort_by_stock_amount") + if ((chosen_item == "sort_by_stock_amount") || (chosen_item == "sort_by_name") || (chosen_item == "sort_by_recent")) { - mSortOrder = (mSortOrder == LLInventoryFilter::SO_FOLDERS_BY_NAME ? LLInventoryFilter::SO_FOLDERS_BY_WEIGHT : LLInventoryFilter::SO_FOLDERS_BY_NAME); + // We're making sort options exclusive, default is SO_FOLDERS_BY_NAME + if (chosen_item == "sort_by_stock_amount") + { + mSortOrder = LLInventoryFilter::SO_FOLDERS_BY_WEIGHT; + } + else if (chosen_item == "sort_by_name") + { + mSortOrder = LLInventoryFilter::SO_FOLDERS_BY_NAME; + } + else if (chosen_item == "sort_by_recent") + { + mSortOrder = LLInventoryFilter::SO_DATE; + } + //mSortOrder = (mSortOrder == LLInventoryFilter::SO_FOLDERS_BY_NAME ? LLInventoryFilter::SO_FOLDERS_BY_WEIGHT : LLInventoryFilter::SO_FOLDERS_BY_NAME); // Set each panel with that sort order LLTabContainer* tabs_panel = getChild("marketplace_filter_tabs"); LLInventoryPanel* panel = (LLInventoryPanel*)tabs_panel->getPanelByName("All Items"); @@ -264,9 +277,20 @@ bool LLPanelMarketplaceListings::onViewSortMenuItemCheck(const LLSD& userdata) { std::string chosen_item = userdata.asString(); - if (chosen_item == "sort_by_stock_amount") + if ((chosen_item == "sort_by_stock_amount") || (chosen_item == "sort_by_name") || (chosen_item == "sort_by_recent")) { - return mSortOrder == LLInventoryFilter::SO_FOLDERS_BY_WEIGHT; + if (chosen_item == "sort_by_stock_amount") + { + return (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_WEIGHT); + } + else if (chosen_item == "sort_by_name") + { + return (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME); + } + else if (chosen_item == "sort_by_recent") + { + return (mSortOrder & LLInventoryFilter::SO_DATE); + } } else if (chosen_item == "show_only_listing_folders") { diff --git a/indra/newview/llfloatermarketplacelistings.h b/indra/newview/llfloatermarketplacelistings.h index 594451ede4..9fad31c456 100755 --- a/indra/newview/llfloatermarketplacelistings.h +++ b/indra/newview/llfloatermarketplacelistings.h @@ -80,7 +80,7 @@ private: LLFilterEditor* mFilterEditor; std::string mFilterSubString; bool mFilterListingFoldersOnly; - LLInventoryFilter::ESortOrderType mSortOrder; + U32 mSortOrder; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/indra/newview/skins/default/xui/en/menu_marketplace_view.xml b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml index a9e9b5a28f..4b3bb8ee1c 100755 --- a/indra/newview/skins/default/xui/en/menu_marketplace_view.xml +++ b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml @@ -4,15 +4,37 @@ left="0" bottom="0" visible="false" mouse_opaque="false"> - - + label="Sort by name" + name="sort_by_name"> + + + + + + + + + + + -- cgit v1.2.3