/** * * Copyright (c) 2009-2018, Kitty Barnett * * The source code in this file is provided to you under the terms of the * GNU Lesser General Public License, version 2.1, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. Terms of the LGPL can be found in doc/LGPL-licence.txt * in this distribution, or online at http://www.gnu.org/licenses/lgpl-2.1.txt * * By copying, modifying or distributing this software, you acknowledge that * you have read and understood your obligations described above, and agree to * abide by those obligations. * */ // Generic includes #include "llviewerprecompiledheaders.h" #include "llagent.h" #include "llappearancemgr.h" #include "llappviewer.h" #include "llexperiencecache.h" #include "llexperiencelog.h" #include "llgroupactions.h" #include "llhudtext.h" #include "llmoveview.h" #include "llslurl.h" #include "llstartup.h" #include "llviewermessage.h" #include "llviewermenu.h" #include "llviewerobjectlist.h" #include "llviewerparcelmgr.h" #include "llviewerregion.h" // Command specific includes #include "llagentcamera.h" // @setcam and related #include "llavataractions.h" // @stopim IM query #include "llavatarnamecache.h" // @shownames #include "llavatarlist.h" // @shownames #include "llfloatercamera.h" // @setcam family #include "llfloatersidepanelcontainer.h"// @shownames #include "llnotifications.h" // @list IM query #include "llnotificationsutil.h" #include "lloutfitslist.h" // @showinv - "Appearance / My Outfits" panel #include "llpaneloutfitsinventory.h" // @showinv - "Appearance" floater #include "llpanelpeople.h" // @shownames #include "llpanelwearing.h" // @showinv - "Appearance / Current Outfit" panel #include "llregionhandle.h" // @tpto #include "llsidepanelappearance.h" // @showinv - "Appearance / Edit appearance" panel #include "lltabcontainer.h" // @showinv - Tab container control for inventory tabs #include "lltoolmgr.h" // @edit #include "llviewercamera.h" // @setcam and related #include "llviewershadermgr.h" // @setsphere #include "llworldmapmessage.h" // @tpto #include "llviewertexturelist.h" // @setcam_texture #include "pipeline.h" // @setsphere // RLVa includes #include "rlvactions.h" #include "rlvenvironment.h" #include "rlvfloaters.h" #include "rlvactions.h" #include "rlveffects.h" #include "rlvhandler.h" #include "rlvhelper.h" #include "rlvinventory.h" #include "rlvlocks.h" #include "rlvmodifiers.h" #include "rlvui.h" #include "rlvextensions.h" // [FS communication UI] #include "fsfloatervoicecontrols.h" // [FS communication UI] #include "fslslbridge.h" #include "fsradar.h" // Boost includes #include // llappviewer.cpp extern bool gDoDisconnect; // ============================================================================ // Static variable initialization // bool RlvHandler::m_fEnabled = false; rlv_handler_t gRlvHandler; // ============================================================================ // Command specific helper functions // // Checked: 2009-08-04 (RLVa-1.0.1d) | Added: RLVa-1.0.1d static bool rlvParseNotifyOption(const std::string& strOption, S32& nChannel, std::string& strFilter) { boost_tokenizer tokens(strOption, boost::char_separator(";", "", boost::keep_empty_tokens)); boost_tokenizer::const_iterator itTok = tokens.begin(); // Extract and sanity check the first token (required) which is the channel if ( (itTok == tokens.end()) || (!LLStringUtil::convertToS32(*itTok, nChannel)) || (!RlvUtil::isValidReplyChannel(nChannel)) ) return false; // Second token (optional) is the filter strFilter.clear(); if (++itTok != tokens.end()) { strFilter = *itTok; ++itTok; } return (itTok == tokens.end()); } // Checked: 2014-02-26 (RLVa-1.4.10) static bool rlvParseGetStatusOption(const std::string& strOption, std::string& strFilter, std::string& strSeparator) { // @getstatus:[