diff options
| author | William Todd Stinson <stinson@lindenlab.com> | 2012-12-14 11:04:55 -0800 |
|---|---|---|
| committer | William Todd Stinson <stinson@lindenlab.com> | 2012-12-14 11:04:55 -0800 |
| commit | 0182eb11f70b6f5a485f8b447acd9c14117a7186 (patch) | |
| tree | 0c52c49f8b5d128c0fd04428e70f4b5bb49fe755 /indra/newview/llautoreplace.cpp | |
| parent | 70ea607842c239cd87b229b416e13485da974658 (diff) | |
| parent | 9f1b484817840cc8f185090f2e8b7bdee441ea7a (diff) | |
Pull and merge from ssh://hg@bitbucket.org/lindenlab/viewer-beta.
Diffstat (limited to 'indra/newview/llautoreplace.cpp')
| -rw-r--r-- | indra/newview/llautoreplace.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/indra/newview/llautoreplace.cpp b/indra/newview/llautoreplace.cpp index 0f1ce2bcd0..d71cf290d6 100644 --- a/indra/newview/llautoreplace.cpp +++ b/indra/newview/llautoreplace.cpp @@ -536,6 +536,46 @@ LLAutoReplaceSettings::AddListResult LLAutoReplaceSettings::addList(const LLSD& return result; } +LLAutoReplaceSettings::AddListResult LLAutoReplaceSettings::replaceList(const LLSD& newList) +{ + AddListResult result = AddListInvalidList; + if ( listIsValid( newList ) ) + { + std::string listName = newList[AUTOREPLACE_LIST_NAME].asString(); + bool listFound = false; + S32 search_index; + LLSD targetList; + // The following is working around the fact that LLSD arrays containing maps also seem to have undefined entries... see LLSD-30 + for ( search_index = 0, targetList = mLists[0]; + !listFound && search_index < mLists.size(); + search_index += 1, targetList = mLists[search_index] + ) + { + if ( targetList.isMap() ) + { + if ( listNameMatches( targetList, listName) ) + { + LL_DEBUGS("AutoReplace")<<"list to replace found at "<<search_index<<LL_ENDL; + mLists.erase(search_index); + mLists.insert(search_index, newList); + listFound = true; + result = AddListOk; + } + } + } + + if ( ! listFound ) + { + LL_WARNS("AutoReplace") << "attempt to replace unconfigured list" << LL_ENDL; + } + } + else + { + LL_WARNS("AutoReplace") << "attempt to add invalid list" << LL_ENDL; + } + return result; +} + bool LLAutoReplaceSettings::removeReplacementList(std::string listName) { bool found = false; |
