summaryrefslogtreecommitdiff
path: root/indra/newview/rlvhandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/rlvhandler.cpp')
-rw-r--r--indra/newview/rlvhandler.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp
index 67739ec72f..57275af54a 100644
--- a/indra/newview/rlvhandler.cpp
+++ b/indra/newview/rlvhandler.cpp
@@ -28,6 +28,8 @@
#include "llviewerprecompiledheaders.h"
#include "llagent.h"
#include "llstartup.h"
+#include "llappearancemgr.h"
+#include "llinventorymodel.h"
#include "llmoveview.h"
#include "llviewercontrol.h"
#include "llviewermenu.h"
@@ -238,6 +240,29 @@ ECmdRet ReplyHandler<EBehaviour::GetSitID>::onCommand(const RlvCommand& rlvCmd,
return ECmdRet::Succeeded;
}
+template<> template<>
+ECmdRet ReplyHandler<EBehaviour::GetInv>::onCommand(const RlvCommand& rlvCmd, std::string& strReply)
+{
+ LLInventoryModel::cat_array_t* cats;
+ LLInventoryModel::item_array_t* items;
+ auto rlvFolderID = findDescendentCategoryIDByName(gInventory.getRootFolderID(), "#RLV");
+ if (rlvFolderID == LLUUID::null)
+ return ECmdRet::FailedNoSharedRoot;
+ strReply = "";
+ gInventory.getDirectDescendentsOf(rlvFolderID, cats, items);
+ auto iter = cats->begin();
+ for(; cats->end() != iter; ++iter)
+ {
+ auto name = (*iter)->getName();
+ if (name.front() == '.')
+ continue;
+ if (iter != cats->begin())
+ strReply.append(",");
+ strReply.append(name);
+ }
+ return ECmdRet::Succeeded;
+}
+
// Force
ECmdRet CommandHandlerBaseImpl<EParamType::Force>::processCommand(const RlvCommand& rlvCmd, ForceHandlerFunc* pHandler)