Skip to content
Snippets Groups Projects
Commit ca07973e authored by Dmitry Zaporozhan's avatar Dmitry Zaporozhan
Browse files

Making use of LLCommonUtils::computeDifference.

Replaced duplicating code with generic function LLCommonUtils::computeDifference()

Reviewed by Vadim Savchuk - https://codereview.productengine.com/secondlife/r/313/

--HG--
branch : product-engine
parent 17f2234a
No related branches found
No related tags found
No related merge requests found
...@@ -38,6 +38,11 @@ namespace LLCommonUtils ...@@ -38,6 +38,11 @@ namespace LLCommonUtils
* Computes difference between 'vnew' and 'vcur' vectors. * Computes difference between 'vnew' and 'vcur' vectors.
* Items present in 'vnew' and missing in 'vcur' are treated as added and are copied into 'vadded' * Items present in 'vnew' and missing in 'vcur' are treated as added and are copied into 'vadded'
* Items missing in 'vnew' and present in 'vcur' are treated as removed and are copied into 'vremoved' * Items missing in 'vnew' and present in 'vcur' are treated as removed and are copied into 'vremoved'
*
* @param vnew[in] - incoming IDs
* @param vcur[in] - current IDs
* @param vadded[out] - difference between incoming and current IDS - added IDs
* @param vremoved[out] - difference between incoming and current IDS - removed IDs
*/ */
LL_COMMON_API void computeDifference( LL_COMMON_API void computeDifference(
const uuid_vec_t& vnew, const uuid_vec_t& vnew,
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
// common // common
#include "lltrans.h" #include "lltrans.h"
#include "llcommonutils.h"
#include "llavatarlist.h" #include "llavatarlist.h"
#include "llagentdata.h" // for comparator #include "llagentdata.h" // for comparator
...@@ -404,7 +405,6 @@ void LLAvatarList::computeDifference( ...@@ -404,7 +405,6 @@ void LLAvatarList::computeDifference(
uuid_vec_t& vremoved) uuid_vec_t& vremoved)
{ {
uuid_vec_t vcur; uuid_vec_t vcur;
uuid_vec_t vnew = vnew_unsorted;
// Convert LLSDs to LLUUIDs. // Convert LLSDs to LLUUIDs.
{ {
...@@ -415,21 +415,7 @@ void LLAvatarList::computeDifference( ...@@ -415,21 +415,7 @@ void LLAvatarList::computeDifference(
vcur.push_back(vcur_values[i].asUUID()); vcur.push_back(vcur_values[i].asUUID());
} }
std::sort(vcur.begin(), vcur.end()); LLCommonUtils::computeDifference(vnew_unsorted, vcur, vadded, vremoved);
std::sort(vnew.begin(), vnew.end());
uuid_vec_t::iterator it;
size_t maxsize = llmax(vcur.size(), vnew.size());
vadded.resize(maxsize);
vremoved.resize(maxsize);
// what to remove
it = set_difference(vcur.begin(), vcur.end(), vnew.begin(), vnew.end(), vremoved.begin());
vremoved.erase(it, vremoved.end());
// what to add
it = set_difference(vnew.begin(), vnew.end(), vcur.begin(), vcur.end(), vadded.begin());
vadded.erase(it, vadded.end());
} }
// Refresh shown time of our last interaction with all listed avatars. // Refresh shown time of our last interaction with all listed avatars.
......
...@@ -36,6 +36,9 @@ ...@@ -36,6 +36,9 @@
// llcommon // llcommon
#include "llcommonutils.h" #include "llcommonutils.h"
// llcommon
#include "llcommonutils.h"
#include "llaccordionctrl.h" #include "llaccordionctrl.h"
#include "llaccordionctrltab.h" #include "llaccordionctrltab.h"
#include "llinventoryfunctions.h" #include "llinventoryfunctions.h"
...@@ -119,31 +122,11 @@ void LLOutfitsList::refreshList(const LLUUID& category_id) ...@@ -119,31 +122,11 @@ void LLOutfitsList::refreshList(const LLUUID& category_id)
LLInventoryModel::EXCLUDE_TRASH, LLInventoryModel::EXCLUDE_TRASH,
is_category); is_category);
uuid_vec_t vnew;
// Creating a vector of newly collected sub-categories UUIDs.
for (LLInventoryModel::cat_array_t::const_iterator iter = cat_array.begin();
iter != cat_array.end();
++iter)
{
vnew.push_back((*iter)->getUUID());
}
uuid_vec_t vcur;
// Creating a vector of currently displayed sub-categories UUIDs.
for (outfits_map_t::const_iterator iter = mOutfitsMap.begin();
iter != mOutfitsMap.end();
++iter)
{
vcur.push_back((*iter).first);
}
uuid_vec_t vadded; uuid_vec_t vadded;
uuid_vec_t vremoved; uuid_vec_t vremoved;
// Create added and removed items vectors. // Create added and removed items vectors.
LLCommonUtils::computeDifference(vnew, vcur, vadded, vremoved); computeDifference(cat_array, vadded, vremoved);
// Handle added tabs. // Handle added tabs.
for (uuid_vec_t::const_iterator iter = vadded.begin(); for (uuid_vec_t::const_iterator iter = vadded.begin();
...@@ -274,4 +257,30 @@ LLXMLNodePtr LLOutfitsList::getAccordionTabXMLNode() ...@@ -274,4 +257,30 @@ LLXMLNodePtr LLOutfitsList::getAccordionTabXMLNode()
return xmlNode; return xmlNode;
} }
void LLOutfitsList::computeDifference(
const LLInventoryModel::cat_array_t& vcats,
uuid_vec_t& vadded,
uuid_vec_t& vremoved)
{
uuid_vec_t vnew;
// Creating a vector of newly collected sub-categories UUIDs.
for (LLInventoryModel::cat_array_t::const_iterator iter = vcats.begin();
iter != vcats.end();
iter++)
{
vnew.push_back((*iter)->getUUID());
}
uuid_vec_t vcur;
// Creating a vector of currently displayed sub-categories UUIDs.
for (outfits_map_t::const_iterator iter = mOutfitsMap.begin();
iter != mOutfitsMap.end();
iter++)
{
vcur.push_back((*iter).first);
}
LLCommonUtils::computeDifference(vnew, vcur, vadded, vremoved);
}
// EOF // EOF
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "llpanel.h" #include "llpanel.h"
// newview // newview
#include "llinventorymodel.h"
#include "llinventoryobserver.h" #include "llinventoryobserver.h"
class LLAccordionCtrl; class LLAccordionCtrl;
...@@ -79,6 +80,11 @@ class LLOutfitsList : public LLPanel, public LLInventoryObserver ...@@ -79,6 +80,11 @@ class LLOutfitsList : public LLPanel, public LLInventoryObserver
*/ */
LLXMLNodePtr getAccordionTabXMLNode(); LLXMLNodePtr getAccordionTabXMLNode();
/**
* Wrapper for LLCommonUtils::computeDifference. @see LLCommonUtils::computeDifference
*/
void computeDifference(const LLInventoryModel::cat_array_t& vcats, uuid_vec_t& vadded, uuid_vec_t& vremoved);
LLInventoryCategoriesObserver* mCategoriesObserver; LLInventoryCategoriesObserver* mCategoriesObserver;
......
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