Merge Firestorm LGPL
commit
a1a1723b14
|
|
@ -27,9 +27,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>e54568cfa7bced82cb6eae26471b7fa5</string>
|
||||
<string>68bf8ef0e36e52a995fbe5a4889d5065</string>
|
||||
<key>url</key>
|
||||
<string>http://downloads.phoenixviewer.com/slplugin_x86-4.7.8.50261-darwin-201606211711-r3.tar.bz2</string>
|
||||
<string>http://downloads.phoenixviewer.com/slplugin_x86-4.7.8.50451-darwin-201607130911-r5.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -2231,9 +2231,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>06c3a9b1005249f0c94a8b9f3775f3d3</string>
|
||||
<string>6e7b0961d6489a1b3c3090eccfd6e80e</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/vivox_3p-slvoice/rev/302004/arch/Linux/installer/slvoice-3.2.0002.10426.302004-linux-302004.tar.bz2</string>
|
||||
<string>http://downloads.phoenixviewer.com/slvoice-3.2.0002.10426.298329-linux-20160717.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
|
|||
|
|
@ -480,6 +480,9 @@ public:
|
|||
|
||||
// *WORKAROUND: two methods to overload appropriate Params due to localization issue:
|
||||
// no_items_msg & no_filtered_items_msg attributes are not defined as translatable in VLT. See EXT-5931
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.3
|
||||
const std::string& getNoItemsMsg() const { return mNoItemsMsg; }
|
||||
// [/RLVa:KB]
|
||||
void setNoItemsMsg(const std::string& msg) { mNoItemsMsg = msg; }
|
||||
void setNoFilteredItemsMsg(const std::string& msg) { mNoFilteredItemsMsg = msg; }
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
4.7.8
|
||||
4.7.10
|
||||
|
|
|
|||
|
|
@ -24042,10 +24042,10 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSTagShowTooComplexARW</key>
|
||||
<key>FSTagShowARW</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If enabled, the avatar complexity will be shown in the nametag for too complex avatars (Jelly Dolls)</string>
|
||||
<string>If enabled, the avatar complexity will be shown in the nametag for every avatar.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
@ -24053,10 +24053,32 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FSTagAlwaysShowARW</key>
|
||||
<key>FSTagShowOwnARW</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If enabled, the avatar complexity will be shown in the nametag for every avatar.</string>
|
||||
<string>If enabled, the avatar complexity for the own avatar will be shown in the nametag.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSTagShowTooComplexOnlyARW</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If enabled, the avatar complexity will be shown in the nametag only for too complex avatars (Jelly Dolls)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FSLinuxEnableWin32VoiceProxy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Use Win32 SLVoice.exe for voice. Needs wine (https://www.winehq.org/) installed, as SLVoice.exe is started inside wine.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
|
|||
|
|
@ -1968,13 +1968,13 @@ BOOL FSPanelSearchClassifieds::postBuild()
|
|||
if (mClassifiedsCategory)
|
||||
{
|
||||
LLClassifiedInfo::cat_map::iterator iter;
|
||||
mClassifiedsCategory->add(LLTrans::getString("all_categories"), LLSD("any"));
|
||||
mClassifiedsCategory->add(LLTrans::getString("all_categories"), LLSD(0));
|
||||
mClassifiedsCategory->addSeparator();
|
||||
for (iter = LLClassifiedInfo::sCategories.begin();
|
||||
iter != LLClassifiedInfo::sCategories.end();
|
||||
iter++)
|
||||
{
|
||||
mClassifiedsCategory->add(LLTrans::getString(iter->second));
|
||||
mClassifiedsCategory->add(LLTrans::getString(iter->second), LLSD((S32)iter->first));
|
||||
}
|
||||
}
|
||||
childSetAction("classifieds_next", boost::bind(&FSPanelSearchClassifieds::onBtnNext, this));
|
||||
|
|
@ -2008,7 +2008,7 @@ void FSPanelSearchClassifieds::find()
|
|||
LLNotificationsUtil::add("NoContentToSearch");
|
||||
return;
|
||||
}
|
||||
U32 category = childGetValue("classifieds_category").asInteger();
|
||||
U32 category = mClassifiedsCategory->getValue().asInteger();
|
||||
BOOL auto_renew = FALSE;
|
||||
U32 flags = pack_classified_flags_request(auto_renew, inc_pg, inc_mature, inc_adult);
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,8 @@
|
|||
#include "llfirstuse.h"
|
||||
|
||||
#include "llsliderctrl.h"
|
||||
#include "lltextbox.h"
|
||||
#include "rlvcommon.h"
|
||||
|
||||
static void get_voice_participants_uuids(uuid_vec_t& speakers_uuids);
|
||||
void reshape_floater(FSFloaterVoiceControls* floater, S32 delta_height);
|
||||
|
|
@ -112,6 +114,7 @@ FSFloaterVoiceControls::FSFloaterVoiceControls(const LLSD& key)
|
|||
, mInitParticipantsVoiceState(false)
|
||||
, mVolumeSlider(NULL)
|
||||
, mMuteButton(NULL)
|
||||
, mIsRlvShowNearbyRestricted(false)
|
||||
{
|
||||
static LLUICachedControl<S32> voice_left_remove_delay ("VoiceParticipantLeftRemoveDelay", 10);
|
||||
mSpeakerDelayRemover = new LLSpeakersDelayActionsStorage(boost::bind(&FSFloaterVoiceControls::removeVoiceLeftParticipant, this, _1), voice_left_remove_delay);
|
||||
|
|
@ -158,6 +161,9 @@ BOOL FSFloaterVoiceControls::postBuild()
|
|||
mVolumeSlider = findChild<LLSliderCtrl>("volume_slider");
|
||||
mMuteButton = findChild<LLButton>("mute_btn");
|
||||
|
||||
mRlvRestrictedText = getChild<LLTextBox>("rlv_restricted");
|
||||
mRlvRestrictedText->setText(RlvStrings::getString("blocked_nearby"));
|
||||
|
||||
if (mVolumeSlider && mMuteButton)
|
||||
{
|
||||
mAvatarList->setCommitCallback(boost::bind(&FSFloaterVoiceControls::onParticipantSelected, this));
|
||||
|
|
@ -350,8 +356,10 @@ void FSFloaterVoiceControls::refreshParticipantList()
|
|||
mNonAvatarCaller->setName(session->mName);
|
||||
}
|
||||
|
||||
mNonAvatarCaller->setVisible(non_avatar_caller);
|
||||
mAvatarList->setVisible(!non_avatar_caller);
|
||||
// Ansariel: Changed for RLVa @shownearby
|
||||
//mNonAvatarCaller->setVisible(non_avatar_caller);
|
||||
//mAvatarList->setVisible(!non_avatar_caller);
|
||||
updateListVisibility();
|
||||
|
||||
if (!non_avatar_caller)
|
||||
{
|
||||
|
|
@ -885,10 +893,45 @@ void FSFloaterVoiceControls::reset(const LLVoiceChannel::EState& new_state)
|
|||
mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData"));
|
||||
}
|
||||
|
||||
mAvatarList->setVisible(TRUE);
|
||||
mNonAvatarCaller->setVisible(FALSE);
|
||||
// Ansariel: Changed for RLVa @shownearby
|
||||
//mAvatarList->setVisible(TRUE);
|
||||
//mNonAvatarCaller->setVisible(FALSE);
|
||||
updateListVisibility();
|
||||
|
||||
mSpeakerManager = NULL;
|
||||
}
|
||||
|
||||
void FSFloaterVoiceControls::toggleRlvShowNearbyRestriction(bool restricted)
|
||||
{
|
||||
mIsRlvShowNearbyRestricted = restricted;
|
||||
updateListVisibility();
|
||||
}
|
||||
|
||||
void FSFloaterVoiceControls::updateListVisibility()
|
||||
{
|
||||
if (mIsRlvShowNearbyRestricted && mVoiceType == VC_LOCAL_CHAT)
|
||||
{
|
||||
mAvatarList->setVisible(FALSE);
|
||||
mNonAvatarCaller->setVisible(FALSE);
|
||||
mRlvRestrictedText->setVisible(TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
mRlvRestrictedText->setVisible(FALSE);
|
||||
|
||||
if (mParticipants)
|
||||
{
|
||||
// Case coming from refreshParticipantList
|
||||
bool non_avatar_caller = VC_PEER_TO_PEER_AVALINE == mVoiceType;
|
||||
mNonAvatarCaller->setVisible(non_avatar_caller);
|
||||
mAvatarList->setVisible(!non_avatar_caller);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Case coming from reset()
|
||||
mAvatarList->setVisible(TRUE);
|
||||
mNonAvatarCaller->setVisible(FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
//EOF
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ class LLOutputMonitorCtrl;
|
|||
class LLSpeakerMgr;
|
||||
class LLSpeakersDelayActionsStorage;
|
||||
class LLSliderCtrl;
|
||||
class LLTextBox;
|
||||
|
||||
/**
|
||||
* The Voice Control Panel is an ambient window summoned by clicking the flyout chevron
|
||||
|
|
@ -82,6 +83,8 @@ public:
|
|||
LLAvatarList* getAvatarCallerList() { return mAvatarList; }
|
||||
// [/RLVa:KB]
|
||||
|
||||
void toggleRlvShowNearbyRestriction(bool restricted);
|
||||
|
||||
private:
|
||||
typedef enum e_voice_controls_type
|
||||
{
|
||||
|
|
@ -248,6 +251,8 @@ private:
|
|||
*/
|
||||
void reset(const LLVoiceChannel::EState& new_state);
|
||||
|
||||
void updateListVisibility();
|
||||
|
||||
private:
|
||||
speaker_state_map_t mSpeakerStateMap;
|
||||
LLSpeakerMgr* mSpeakerManager;
|
||||
|
|
@ -258,10 +263,12 @@ private:
|
|||
LLPanel* mAgentPanel;
|
||||
LLOutputMonitorCtrl* mSpeakingIndicator;
|
||||
bool mIsModeratorMutedVoice;
|
||||
bool mIsRlvShowNearbyRestricted;
|
||||
|
||||
LLUUID mSelectedParticipant;
|
||||
LLSliderCtrl* mVolumeSlider;
|
||||
LLButton* mMuteButton;
|
||||
LLTextBox* mRlvRestrictedText;
|
||||
|
||||
/**
|
||||
* Flag indicated that participants voice states should be initialized.
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#include "llpanelblockedlist.h"
|
||||
#include "llviewercontrol.h" // for gSavedSettings
|
||||
#include "llviewermenu.h" // for gMenuHolder
|
||||
#include "rlvactions.h"
|
||||
#include "rlvhandler.h"
|
||||
|
||||
|
||||
|
|
@ -321,6 +322,11 @@ void FSPanelRadar::updateList(const std::vector<LLSD>& entries, const LLSD& stat
|
|||
S32 lastScroll = mRadarList->getScrollPos();
|
||||
|
||||
// Update list
|
||||
mRadarList->setCommentText(RlvActions::canShowNearbyAgents() ? LLStringUtil::null : RlvStrings::getString("blocked_nearby"));
|
||||
|
||||
bool needs_sort = mRadarList->isSorted();
|
||||
mRadarList->setNeedsSort(false);
|
||||
|
||||
mRadarList->clearRows();
|
||||
const std::vector<LLSD>::const_iterator it_end = entries.end();
|
||||
for (std::vector<LLSD>::const_iterator it = entries.begin(); it != it_end; ++it)
|
||||
|
|
@ -408,6 +414,9 @@ void FSPanelRadar::updateList(const std::vector<LLSD>& entries, const LLSD& stat
|
|||
}
|
||||
}
|
||||
|
||||
mRadarList->setNeedsSort(needs_sort);
|
||||
mRadarList->updateSort();
|
||||
|
||||
LLStringUtil::format_map_t name_count_args;
|
||||
name_count_args["[TOTAL]"] = stats["total"].asString();
|
||||
name_count_args["[IN_REGION]"] = stats["region"].asString();
|
||||
|
|
|
|||
|
|
@ -55,8 +55,9 @@
|
|||
#include "llvoiceclient.h"
|
||||
#include "llworld.h"
|
||||
#include "llspeakers.h"
|
||||
#include "rlvhandler.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "rlvactions.h"
|
||||
#include "rlvhandler.h"
|
||||
|
||||
using namespace boost;
|
||||
|
||||
|
|
@ -229,13 +230,16 @@ void FSRadar::updateRadarList()
|
|||
std::vector<LLVector3d> positions;
|
||||
uuid_vec_t avatar_ids;
|
||||
std::map<LLUUID, LLUUID> region_assignments;
|
||||
if (sLimitRange)
|
||||
if (RlvActions::canShowNearbyAgents())
|
||||
{
|
||||
world->getAvatars(&avatar_ids, &positions, gAgent.getPositionGlobal(), sNearMeRange, ®ion_assignments);
|
||||
}
|
||||
else
|
||||
{
|
||||
world->getAvatars(&avatar_ids, &positions, LLVector3d(), FLT_MAX, ®ion_assignments);
|
||||
if (sLimitRange)
|
||||
{
|
||||
world->getAvatars(&avatar_ids, &positions, gAgent.getPositionGlobal(), sNearMeRange, ®ion_assignments);
|
||||
}
|
||||
else
|
||||
{
|
||||
world->getAvatars(&avatar_ids, &positions, LLVector3d(), FLT_MAX, ®ion_assignments);
|
||||
}
|
||||
}
|
||||
|
||||
// Determine lists of new added and removed avatars
|
||||
|
|
@ -680,33 +684,35 @@ void FSRadar::updateRadarList()
|
|||
//3b: process alerts for avatars that where here last frame, but gone this frame (ie, they left)
|
||||
// as well as dispatch all earlier detected alerts for crossing range thresholds.
|
||||
//
|
||||
|
||||
radarfields_map_t::iterator rf_it_end = mLastRadarSweep.end();
|
||||
for (radarfields_map_t::iterator i = mLastRadarSweep.begin(); i != rf_it_end; ++i)
|
||||
if (RlvActions::canShowNearbyAgents())
|
||||
{
|
||||
LLUUID prevId = i->first;
|
||||
RadarFields rf = i->second;
|
||||
if ((sFSRadarShowMutedAndDerendered || !rf.lastIgnore) && mEntryList.find(prevId) == mEntryList.end())
|
||||
radarfields_map_t::iterator rf_it_end = mLastRadarSweep.end();
|
||||
for (radarfields_map_t::iterator i = mLastRadarSweep.begin(); i != rf_it_end; ++i)
|
||||
{
|
||||
if (sRadarReportChatRangeLeave && (rf.lastDistance <= chat_range_say) && rf.lastDistance > AVATAR_UNKNOWN_RANGE)
|
||||
LLUUID prevId = i->first;
|
||||
RadarFields rf = i->second;
|
||||
if ((sFSRadarShowMutedAndDerendered || !rf.lastIgnore) && mEntryList.find(prevId) == mEntryList.end())
|
||||
{
|
||||
make_ui_sound("UISndRadarChatLeave"); // <FS:PP> FIRE-6069: Radar alerts sounds
|
||||
LLAvatarNameCache::get(prevId, boost::bind(&FSRadar::radarAlertMsg, this, _1, _2, str_chat_leaving));
|
||||
}
|
||||
if (sRadarReportDrawRangeLeave && (rf.lastDistance <= drawRadius) && rf.lastDistance > AVATAR_UNKNOWN_RANGE)
|
||||
{
|
||||
make_ui_sound("UISndRadarDrawLeave"); // <FS:PP> FIRE-6069: Radar alerts sounds
|
||||
LLAvatarNameCache::get(prevId, boost::bind(&FSRadar::radarAlertMsg, this, _1, _2, str_draw_distance_leaving));
|
||||
}
|
||||
if (sRadarReportSimRangeLeave && (rf.lastRegion == regionSelf || rf.lastRegion.isNull()))
|
||||
{
|
||||
make_ui_sound("UISndRadarSimLeave"); // <FS:PP> FIRE-6069: Radar alerts sounds
|
||||
LLAvatarNameCache::get(prevId, boost::bind(&FSRadar::radarAlertMsg, this, _1, _2, str_region_leaving));
|
||||
}
|
||||
|
||||
if (sRadarLeaveChannelAlert)
|
||||
{
|
||||
mRadarLeaveAlerts.push_back(prevId);
|
||||
if (sRadarReportChatRangeLeave && (rf.lastDistance <= chat_range_say) && rf.lastDistance > AVATAR_UNKNOWN_RANGE)
|
||||
{
|
||||
make_ui_sound("UISndRadarChatLeave"); // <FS:PP> FIRE-6069: Radar alerts sounds
|
||||
LLAvatarNameCache::get(prevId, boost::bind(&FSRadar::radarAlertMsg, this, _1, _2, str_chat_leaving));
|
||||
}
|
||||
if (sRadarReportDrawRangeLeave && (rf.lastDistance <= drawRadius) && rf.lastDistance > AVATAR_UNKNOWN_RANGE)
|
||||
{
|
||||
make_ui_sound("UISndRadarDrawLeave"); // <FS:PP> FIRE-6069: Radar alerts sounds
|
||||
LLAvatarNameCache::get(prevId, boost::bind(&FSRadar::radarAlertMsg, this, _1, _2, str_draw_distance_leaving));
|
||||
}
|
||||
if (sRadarReportSimRangeLeave && (rf.lastRegion == regionSelf || rf.lastRegion.isNull()))
|
||||
{
|
||||
make_ui_sound("UISndRadarSimLeave"); // <FS:PP> FIRE-6069: Radar alerts sounds
|
||||
LLAvatarNameCache::get(prevId, boost::bind(&FSRadar::radarAlertMsg, this, _1, _2, str_region_leaving));
|
||||
}
|
||||
|
||||
if (sRadarLeaveChannelAlert)
|
||||
{
|
||||
mRadarLeaveAlerts.push_back(prevId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -797,10 +803,18 @@ void FSRadar::updateRadarList()
|
|||
//
|
||||
//STEP 5: Final data updates and notification of subscribers
|
||||
//
|
||||
|
||||
mAvatarStats["total"] = llformat("%d", mLastRadarSweep.size() - 1);
|
||||
mAvatarStats["region"] = llformat("%d", inSameRegion);
|
||||
mAvatarStats["chatrange"] = llformat("%d", inChatRange);
|
||||
if (RlvActions::canShowNearbyAgents())
|
||||
{
|
||||
mAvatarStats["total"] = llformat("%d", mLastRadarSweep.size() - 1);
|
||||
mAvatarStats["region"] = llformat("%d", inSameRegion);
|
||||
mAvatarStats["chatrange"] = llformat("%d", inChatRange);
|
||||
}
|
||||
else
|
||||
{
|
||||
mAvatarStats["total"] = "-";
|
||||
mAvatarStats["region"] = "-";
|
||||
mAvatarStats["chatrange"] = "-";
|
||||
}
|
||||
|
||||
checkTracking();
|
||||
|
||||
|
|
|
|||
|
|
@ -300,6 +300,10 @@ void LLAvatarList::draw()
|
|||
void LLAvatarList::clear()
|
||||
{
|
||||
getIDs().clear();
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.3
|
||||
// We need to be able to call this *somehow* and it actually makes moderate sense to call this in here
|
||||
updateNoItemsMessage(mNameFilter);
|
||||
// [/RLVa:KB]
|
||||
setDirty(true);
|
||||
LLFlatListViewEx::clear();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -767,6 +767,8 @@ BOOL LLFloaterPreference::postBuild()
|
|||
// <FS:Ansariel> Properly disable avatar tag setting
|
||||
gSavedSettings.getControl("NameTagShowUsernames")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::onAvatarTagSettingsChanged, this));
|
||||
gSavedSettings.getControl("FSNameTagShowLegacyUsernames")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::onAvatarTagSettingsChanged, this));
|
||||
gSavedSettings.getControl("AvatarNameTagMode")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::onAvatarTagSettingsChanged, this));
|
||||
gSavedSettings.getControl("FSTagShowARW")->getCommitSignal()->connect(boost::bind(&LLFloaterPreference::onAvatarTagSettingsChanged, this));
|
||||
onAvatarTagSettingsChanged();
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
|
@ -3403,6 +3405,10 @@ void LLFloaterPreference::onAvatarTagSettingsChanged()
|
|||
|
||||
childSetEnabled("FSshow_legacyun", usernames_enabled);
|
||||
childSetEnabled("legacy_trim_check", usernames_enabled && legacy_enabled);
|
||||
|
||||
bool arw_options_enabled = gSavedSettings.getBOOL("FSTagShowARW") && gSavedSettings.getS32("AvatarNameTagMode") > 0;
|
||||
childSetEnabled("FSTagShowTooComplexOnlyARW", arw_options_enabled);
|
||||
childSetEnabled("FSTagShowOwnARW", arw_options_enabled);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
|
|
|||
|
|
@ -259,7 +259,7 @@ void LLHUDText::setString(const std::string &text_utf8)
|
|||
{
|
||||
mTextSegments.clear();
|
||||
// addLine(text_utf8, mColor);
|
||||
// [RLVa:KB] - Checked: 2010-03-02 (RLVa-1.4.0a) | Modified: RLVa-1.0.0f
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.3
|
||||
// NOTE: setString() is called for debug and map beacons as well
|
||||
if (RlvActions::isRlvEnabled())
|
||||
{
|
||||
|
|
@ -268,8 +268,10 @@ void LLHUDText::setString(const std::string &text_utf8)
|
|||
{
|
||||
if (!RlvActions::canShowLocation())
|
||||
RlvUtil::filterLocation(text);
|
||||
if (!RlvActions::canShowName(RlvActions::SNC_DEFAULT))
|
||||
RlvUtil::filterNames(text);
|
||||
|
||||
bool fCanShowNearby = RlvActions::canShowNearbyAgents();
|
||||
if ( (!RlvActions::canShowName(RlvActions::SNC_DEFAULT)) || (!fCanShowNearby) )
|
||||
RlvUtil::filterNames(text, true, !fCanShowNearby);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -671,14 +673,16 @@ F32 LLHUDText::LLHUDTextSegment::getWidth(const LLFontGL* font)
|
|||
}
|
||||
}
|
||||
|
||||
// [RLVa:KB] - Checked: 2010-03-27 (RLVa-1.4.0a) | Added: RLVa-1.0.0f
|
||||
void LLHUDText::refreshAllObjectText()
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.3
|
||||
void LLHUDText::refreshAllObjectText(EObjectTextFilter eObjFilter)
|
||||
{
|
||||
for (TextObjectIterator itText = sTextObjects.begin(); itText != sTextObjects.end(); ++itText)
|
||||
for (LLHUDText* pText : sTextObjects)
|
||||
{
|
||||
LLHUDText* pText = *itText;
|
||||
if ( (pText) && (!pText->mObjText.empty()) && (pText->mSourceObject) && (LL_PCODE_VOLUME == pText->mSourceObject->getPCode()) )
|
||||
if ((pText) && (!pText->mObjText.empty()) && (pText->mSourceObject) && (LL_PCODE_VOLUME == pText->mSourceObject->getPCode()) &&
|
||||
((OTF_NONE == eObjFilter) || ((OTF_HUD_ATTACHMENTS == eObjFilter) && (pText->mSourceObject->isHUDAttachment()))))
|
||||
{
|
||||
pText->setString(pText->mObjText);
|
||||
}
|
||||
}
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
|
|
|||
|
|
@ -124,10 +124,12 @@ public:
|
|||
static void reshape();
|
||||
static void setDisplayText(BOOL flag) { sDisplayText = flag ; }
|
||||
|
||||
// [RLVa:KB] - Checked: 2010-03-27 (RLVa-1.4.0a) | Added: RLVa-1.0.0f
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.3
|
||||
const std::string& getObjectText() const { return mObjText; }
|
||||
void setObjectText(const std::string &utf8string) { mObjText = utf8string; }
|
||||
static void refreshAllObjectText();
|
||||
|
||||
enum EObjectTextFilter { OTF_NONE, OTF_HUD_ATTACHMENTS };
|
||||
static void refreshAllObjectText(EObjectTextFilter eObjFilter = OTF_NONE);
|
||||
// [/RLVa:KB]
|
||||
|
||||
// <FS:Ansariel> FIRE-17393: Control HUD text fading by options
|
||||
|
|
@ -170,7 +172,7 @@ private:
|
|||
ETextAlignment mTextAlignment;
|
||||
EVertAlignment mVertAlignment;
|
||||
BOOL mHidden;
|
||||
// [RLVa:KB] - Checked: 2010-03-27 (RLVa-1.4.0a) | Added: RLVa-1.0.0f
|
||||
// [RLVa:KB] - Checked: RLVa-1.0.0
|
||||
std::string mObjText;
|
||||
// [/RLVa:KB]
|
||||
|
||||
|
|
|
|||
|
|
@ -4153,7 +4153,7 @@ F32 LLMeshRepository::getStreamingCost(LLSD& header, F32 radius, S32* bytes, S32
|
|||
}
|
||||
}
|
||||
|
||||
F32 max_area = 102932.f; //area of circle that encompasses region
|
||||
F32 max_area = 102944.f; //area of circle that encompasses region (see MAINT-6559)
|
||||
F32 min_area = 1.f;
|
||||
|
||||
F32 high_area = llmin(F_PI*dmid*dmid, max_area);
|
||||
|
|
|
|||
|
|
@ -949,7 +949,18 @@ void LLPanelPeople::updateNearbyList()
|
|||
|
||||
std::vector<LLVector3d> positions;
|
||||
|
||||
LLWorld::getInstance()->getAvatars(&mNearbyList->getIDs(), &positions, gAgent.getPositionGlobal(), gSavedSettings.getF32("NearMeRange"));
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.3
|
||||
if (RlvActions::canShowNearbyAgents())
|
||||
{
|
||||
// [/RLVa:KB]
|
||||
LLWorld::getInstance()->getAvatars(&mNearbyList->getIDs(), &positions, gAgent.getPositionGlobal(), gSavedSettings.getF32("NearMeRange"));
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.3
|
||||
}
|
||||
else
|
||||
{
|
||||
mNearbyList->getIDs().clear();
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
mNearbyList->setDirty();
|
||||
|
||||
DISTANCE_COMPARATOR.updateAvatarsPositions(positions, mNearbyList->getIDs());
|
||||
|
|
@ -1080,16 +1091,6 @@ void LLPanelPeople::updateButtons()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// [RLVa:KB] - Checked: RLVa-1.2.0
|
||||
if ( (nearby_tab_active) && (RlvActions::isRlvEnabled()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT)) )
|
||||
{
|
||||
bool fCanShowNames = true;
|
||||
std::for_each(selected_uuids.begin(), selected_uuids.end(), [&fCanShowNames](const LLUUID& idAgent) { fCanShowNames &= RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgent); });
|
||||
if (!fCanShowNames)
|
||||
item_selected = multiple_selected = false;
|
||||
}
|
||||
// [/RLBa:KB]
|
||||
}
|
||||
|
||||
std::string LLPanelPeople::getActiveTabName() const
|
||||
|
|
@ -1337,10 +1338,11 @@ void LLPanelPeople::onAvatarListDoubleClicked(LLUICtrl* ctrl)
|
|||
}
|
||||
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.1
|
||||
if ( (RlvActions::isRlvEnabled()) && (NEARBY_TAB_NAME == getActiveTabName()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, clicked_id)) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
// <FS:Ansariel> Firestorm radar; commented out
|
||||
//if ( (RlvActions::isRlvEnabled()) && (NEARBY_TAB_NAME == getActiveTabName()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, clicked_id)) )
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
// [/RLVa:KB]
|
||||
|
||||
#if 0 // SJB: Useful for testing, but not currently functional or to spec
|
||||
|
|
@ -1460,13 +1462,14 @@ void LLPanelPeople::onImButtonClicked()
|
|||
uuid_vec_t selected_uuids;
|
||||
getCurrentItemIDs(selected_uuids);
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.1
|
||||
if ( (RlvActions::isRlvEnabled()) && (NEARBY_TAB_NAME == getActiveTabName()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT)) )
|
||||
{
|
||||
bool fCanShowNames = true;
|
||||
std::for_each(selected_uuids.begin(), selected_uuids.end(), [&fCanShowNames](const LLUUID& idAgent) { fCanShowNames &= RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgent); });
|
||||
if (!fCanShowNames)
|
||||
return;
|
||||
}
|
||||
// <FS:Ansariel> Firestorm radar; commented out
|
||||
//if ( (RlvActions::isRlvEnabled()) && (NEARBY_TAB_NAME == getActiveTabName()) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT)) )
|
||||
//{
|
||||
// bool fCanShowNames = true;
|
||||
// std::for_each(selected_uuids.begin(), selected_uuids.end(), [&fCanShowNames](const LLUUID& idAgent) { fCanShowNames &= RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgent); });
|
||||
// if (!fCanShowNames)
|
||||
// return;
|
||||
//}
|
||||
// [/RLVa:KB]
|
||||
if ( selected_uuids.size() == 1 )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ public:
|
|||
|
||||
// [RLVa:KB] - Checked: RLVa-1.2.0
|
||||
LLAvatarList* getNearbyList() { return mNearbyList; }
|
||||
void updateNearbyList();
|
||||
// [/RLVa:KB]
|
||||
|
||||
// internals
|
||||
|
|
@ -94,7 +95,7 @@ private:
|
|||
void updateFriendListHelpText();
|
||||
void updateFriendList();
|
||||
bool updateSuggestedFriendList();
|
||||
void updateNearbyList();
|
||||
// void updateNearbyList();
|
||||
void updateRecentList();
|
||||
void updateFacebookList(bool visible);
|
||||
|
||||
|
|
|
|||
|
|
@ -790,8 +790,11 @@ void LLStatusBar::onClickBuyCurrency()
|
|||
void LLStatusBar::onMouseEnterPresets()
|
||||
{
|
||||
LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder");
|
||||
LLIconCtrl* icon = getChild<LLIconCtrl>( "presets_icon" );
|
||||
LLRect icon_rect = icon->getRect();
|
||||
// <FS:Ansariel> Changed presets icon to LLButton
|
||||
//LLIconCtrl* icon = getChild<LLIconCtrl>( "presets_icon" );
|
||||
//LLRect icon_rect = icon->getRect();
|
||||
LLRect icon_rect = mIconPresets->getRect();
|
||||
// </FS:Ansariel>
|
||||
LLRect pulldown_rect = mPanelPresetsPulldown->getRect();
|
||||
pulldown_rect.setLeftTopAndSize(icon_rect.mLeft -
|
||||
(pulldown_rect.getWidth() - icon_rect.getWidth()),
|
||||
|
|
|
|||
|
|
@ -6370,8 +6370,6 @@ void process_sim_stats(LLMessageSystem *msg, void **user_data)
|
|||
{
|
||||
// <FS:Ansariel> Cut down logspam
|
||||
//LL_WARNS() << "Unknown sim stat identifier: " << stat_id << LL_ENDL;
|
||||
LL_WARNS_ONCE() << "Unknown sim stat identifier: " << stat_id << LL_ENDL;
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2319,7 +2319,7 @@ void LLViewerRegion::setSimulatorFeatures(const LLSD& sim_features)
|
|||
std::stringstream str;
|
||||
|
||||
LLSDSerialize::toPrettyXML(sim_features, str);
|
||||
LL_INFOS() << str.str() << LL_ENDL;
|
||||
LL_INFOS() << "Region ID " << getRegionID().asString() << ": " << str.str() << LL_ENDL;
|
||||
mSimulatorFeatures = sim_features;
|
||||
|
||||
setSimulatorFeaturesReceived(true);
|
||||
|
|
|
|||
|
|
@ -3051,26 +3051,30 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Show Arc in nametag (for Jelly Dolls)
|
||||
// <FS:TS> ...or everyone, if selected
|
||||
static LLCachedControl<bool> show_too_complex_arw_tag(gSavedSettings, "FSTagShowTooComplexARW");
|
||||
static LLCachedControl<bool> show_arw_always_tag(gSavedSettings, "FSTagAlwaysShowARW");
|
||||
// <FS:Ansariel> Show ARW in nametag options (for Jelly Dolls)
|
||||
static LLCachedControl<bool> show_arw_tag(gSavedSettings, "FSTagShowARW");
|
||||
static LLCachedControl<bool> show_too_complex_only_arw_tag(gSavedSettings, "FSTagShowTooComplexOnlyARW");
|
||||
static LLCachedControl<bool> show_own_arw_tag(gSavedSettings, "FSTagShowOwnARW");
|
||||
U32 complexity(0);
|
||||
LLColor4 complexity_color(LLColor4::grey1); // default if we're not limiting the complexity
|
||||
|
||||
if (!isSelf() && (show_arw_always_tag || (show_too_complex_arw_tag && isTooComplex())))
|
||||
if (show_arw_tag &&
|
||||
((isSelf() && show_own_arw_tag) ||
|
||||
(!isSelf() && (!show_too_complex_only_arw_tag || isTooComplex()))))
|
||||
{
|
||||
complexity = mVisualComplexity;
|
||||
// This calculation is copied from idleUpdateRenderComplexity()
|
||||
|
||||
// Show complexity color if we're limiting and not showing our own ARW...
|
||||
static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAvatarMaxComplexity", 0);
|
||||
// Show complexity color if we're limiting...
|
||||
if (max_render_cost != 0)
|
||||
if (max_render_cost != 0 && !isSelf())
|
||||
{
|
||||
// This calculation is copied from idleUpdateRenderComplexity()
|
||||
F32 green_level = 1.f - llclamp(((F32)complexity - (F32)max_render_cost) / (F32)max_render_cost, 0.f, 1.f);
|
||||
F32 red_level = llmin((F32)complexity / (F32)max_render_cost, 1.f);
|
||||
complexity_color.set(red_level, green_level, 0.f, 1.f);
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// Rebuild name tag if state change detected
|
||||
if (!mNameIsSet
|
||||
|
|
@ -3269,10 +3273,11 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
|
|||
}
|
||||
// <FS:Ansariel> Show distance in tag
|
||||
|
||||
// <FS:Ansariel> Show Arc in nametag (for Jelly Dolls)
|
||||
// <FS:TS> ...or everyone, if selected
|
||||
// <FS:Ansariel> Show ARW in nametag options (for Jelly Dolls)
|
||||
static const std::string complexity_label = LLTrans::getString("Nametag_Complexity_Label");
|
||||
if (!isSelf() && (show_arw_always_tag || (show_too_complex_arw_tag && isTooComplex())))
|
||||
if (show_arw_tag &&
|
||||
((isSelf() && show_own_arw_tag) ||
|
||||
(!isSelf() && (!show_too_complex_only_arw_tag || isTooComplex()))))
|
||||
{
|
||||
std::string complexity_string;
|
||||
LLLocale locale(LLLocale::USER_LOCALE);
|
||||
|
|
|
|||
|
|
@ -395,6 +395,26 @@ bool LLVivoxVoiceClient::writeString(const std::string &str)
|
|||
return result;
|
||||
}
|
||||
|
||||
// <FS:ND> On Linux the viewer can run SLVoice.exe through wine (https://www.winehq.org/)
|
||||
// Vivox does not support Linux anymore and the SDK SLVoice for Linux uses is old and according to LL
|
||||
// will stop working 'soon' (as of 2016-07-17). See also FIRE-19663
|
||||
bool viewerUsesWineForVoice()
|
||||
{
|
||||
#ifndef LL_LINUX
|
||||
return false;
|
||||
#else
|
||||
static LLCachedControl<bool> sEnableVoiceChat(gSavedSettings, "FSLinuxEnableWin32VoiceProxy" );
|
||||
|
||||
return sEnableVoiceChat;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool viewerChoosesConnectionHandles()
|
||||
{
|
||||
return viewerUsesWineForVoice();
|
||||
}
|
||||
// </FS:ND>
|
||||
|
||||
|
||||
/////////////////////////////
|
||||
// session control messages
|
||||
|
|
@ -425,13 +445,19 @@ void LLVivoxVoiceClient::connectorCreate()
|
|||
loglevel = savedLogLevel;
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
// <FS:ND> Check if using the old SLVoice for Linux. the SDK in that version is too old to handle the extra args
|
||||
std::string strConnectorHandle;
|
||||
if( viewerChoosesConnectionHandles() )
|
||||
strConnectorHandle = "<ConnectorHandle>" + LLVivoxSecurity::getInstance()->connectorHandle() + "</ConnectorHandle>";
|
||||
// </FS:ND>
|
||||
|
||||
stream
|
||||
<< "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Connector.Create.1\">"
|
||||
<< "<ClientName>V2 SDK</ClientName>"
|
||||
<< "<AccountManagementServer>" << mVoiceAccountServerURI << "</AccountManagementServer>"
|
||||
<< "<Mode>Normal</Mode>"
|
||||
<< "<ConnectorHandle>" << LLVivoxSecurity::getInstance()->connectorHandle() << "</ConnectorHandle>"
|
||||
<< strConnectorHandle
|
||||
// <FS:Ansariel> Voice in multiple instances; by Latif Khalifa
|
||||
<< (gSavedSettings.getBOOL("VoiceMultiInstance") ? "<MinimumPort>30000</MinimumPort><MaximumPort>50000</MaximumPort>" : "")
|
||||
// </FS:Ansariel>
|
||||
|
|
@ -649,7 +675,13 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
|
|||
#elif LL_DARWIN
|
||||
exe_path += "../Resources/SLVoice";
|
||||
#else
|
||||
exe_path += "SLVoice";
|
||||
// <FS:ND> On Linux the viewer can run SLVoice.exe through wine (https://www.winehq.org/)
|
||||
// exe_path += "SLVoice";
|
||||
if( !viewerUsesWineForVoice() )
|
||||
exe_path += "SLVoice"; // native version
|
||||
else
|
||||
exe_path += "win32/SLVoice.exe"; // use bundled win32 version
|
||||
// </FS:ND>
|
||||
#endif
|
||||
// See if the vivox executable exists
|
||||
llstat s;
|
||||
|
|
@ -657,8 +689,19 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
|
|||
{
|
||||
// vivox executable exists. Build the command line and launch the daemon.
|
||||
LLProcess::Params params;
|
||||
|
||||
// <FS:ND> On Linux the viewer can run SLVoice.exe through wine (https://www.winehq.org/)
|
||||
params.executable = exe_path;
|
||||
|
||||
if( !viewerUsesWineForVoice() )
|
||||
params.executable = exe_path;
|
||||
else
|
||||
{
|
||||
params.executable = "wine";
|
||||
params.args.add( exe_path );
|
||||
}
|
||||
//</FS:ND>
|
||||
|
||||
std::string loglevel = gSavedSettings.getString("VivoxDebugLevel");
|
||||
std::string shutdown_timeout = gSavedSettings.getString("VivoxShutdownTimeout");
|
||||
if (loglevel.empty())
|
||||
|
|
@ -708,6 +751,8 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
|
|||
|
||||
params.cwd = gDirUtilp->getAppRODataDir();
|
||||
|
||||
// <FS:ND> Check if using the old SLVoice for Linux. the SDK in that version is too old to handle the extra args
|
||||
if( viewerChoosesConnectionHandles() ) { // </FS:ND>
|
||||
# ifdef VIVOX_HANDLE_ARGS
|
||||
params.args.add("-ah");
|
||||
params.args.add(LLVivoxSecurity::getInstance()->accountHandle());
|
||||
|
|
@ -715,6 +760,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
|
|||
params.args.add("-ch");
|
||||
params.args.add(LLVivoxSecurity::getInstance()->connectorHandle());
|
||||
# endif // VIVOX_HANDLE_ARGS
|
||||
} // <FS:ND/>
|
||||
|
||||
sGatewayPtr = LLProcess::create(params);
|
||||
|
||||
|
|
@ -1878,12 +1924,18 @@ void LLVivoxVoiceClient::loginSendMessage()
|
|||
|
||||
bool autoPostCrashDumps = gSavedSettings.getBOOL("VivoxAutoPostCrashDumps");
|
||||
|
||||
// <FS:ND> Check if using the old SLVoice for Linux. the SDK in that version is too old to handle the extra args
|
||||
std::string strAccountHandle;
|
||||
if( viewerChoosesConnectionHandles() )
|
||||
strAccountHandle = "<AccountHandle>" + LLVivoxSecurity::getInstance()->accountHandle() + "</AccountHandle>";
|
||||
// </FS:ND>
|
||||
|
||||
stream
|
||||
<< "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Account.Login.1\">"
|
||||
<< "<ConnectorHandle>" << LLVivoxSecurity::getInstance()->connectorHandle() << "</ConnectorHandle>"
|
||||
<< "<AccountName>" << mAccountName << "</AccountName>"
|
||||
<< "<AccountPassword>" << mAccountPassword << "</AccountPassword>"
|
||||
<< "<AccountHandle>" << LLVivoxSecurity::getInstance()->accountHandle() << "</AccountHandle>"
|
||||
<< strAccountHandle
|
||||
<< "<AudioSessionAnswerMode>VerifyAnswer</AudioSessionAnswerMode>"
|
||||
<< "<EnableBuddiesAndPresence>false</EnableBuddiesAndPresence>"
|
||||
<< "<EnablePresencePersistence>0</EnablePresencePersistence>"
|
||||
|
|
@ -2904,6 +2956,8 @@ void LLVivoxVoiceClient::connectorCreateResponse(int statusCode, std::string &st
|
|||
else
|
||||
{
|
||||
// Connector created, move forward.
|
||||
// <FS:ND> Check if using the old SLVoice for Linux. the SDK in that version is too old to handle the extra args
|
||||
if( viewerChoosesConnectionHandles() ) { // </FS:ND>
|
||||
if (connectorHandle == LLVivoxSecurity::getInstance()->connectorHandle())
|
||||
{
|
||||
LL_INFOS("Voice") << "Connector.Create succeeded, Vivox SDK version is " << versionID << " connector handle " << connectorHandle << LL_ENDL;
|
||||
|
|
@ -2921,6 +2975,15 @@ void LLVivoxVoiceClient::connectorCreateResponse(int statusCode, std::string &st
|
|||
<< LL_ENDL;
|
||||
result["connector"] = LLSD::Boolean(false);
|
||||
}
|
||||
} else { // <FS:ND/> For old Linux Voice
|
||||
LL_INFOS("Voice") << "Connector.Create succeeded, Vivox SDK version is " << versionID << LL_ENDL;
|
||||
mVoiceVersion.serverVersion = versionID;
|
||||
LLVivoxSecurity::getInstance()->setConnectorHandle(connectorHandle);
|
||||
mConnectorEstablished = true;
|
||||
mTerminateDaemon = false;
|
||||
|
||||
result["connector"] = LLSD::Boolean(true);
|
||||
} // <FS:ND/> For old Linux voice
|
||||
}
|
||||
|
||||
LLEventPumps::instance().post("vivoxClientPump", result);
|
||||
|
|
@ -2948,6 +3011,11 @@ void LLVivoxVoiceClient::loginResponse(int statusCode, std::string &statusString
|
|||
else
|
||||
{
|
||||
// Login succeeded, move forward.
|
||||
|
||||
// <FS:ND> Check if using the old SLVoice for Linux.
|
||||
if( !viewerChoosesConnectionHandles() )
|
||||
LLVivoxSecurity::getInstance()->setAccountHandle(accountHandle);
|
||||
// </FS:ND>
|
||||
mAccountLoggedIn = true;
|
||||
mNumberOfAliases = numberOfAliases;
|
||||
result["login"] = LLSD::String("response_ok");
|
||||
|
|
|
|||
|
|
@ -1050,6 +1050,11 @@ class LLVivoxSecurity : public LLSingleton<LLVivoxSecurity>
|
|||
std::string connectorHandle() { return mConnectorHandle; };
|
||||
std::string accountHandle() { return mAccountHandle; };
|
||||
|
||||
// <FS:ND> For the old Vivox SDK used on Linux
|
||||
void setConnectorHandle(const std::string& handle) { mConnectorHandle = handle; }
|
||||
void setAccountHandle(const std::string& handle) { mAccountHandle = handle; }
|
||||
// </FS:ND>
|
||||
|
||||
private:
|
||||
std::string mConnectorHandle;
|
||||
std::string mAccountHandle;
|
||||
|
|
|
|||
|
|
@ -213,9 +213,14 @@ bool RlvActions::canShowName(EShowNamesContext eContext, const LLUUID& idAgent)
|
|||
return false;
|
||||
}
|
||||
|
||||
bool RlvActions::canShowNearbyAgents()
|
||||
{
|
||||
return !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNEARBY);
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Movement
|
||||
//
|
||||
//
|
||||
|
||||
bool RlvActions::canAcceptTpOffer(const LLUUID& idSender)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -113,6 +113,11 @@ public:
|
|||
static bool canShowName(EShowNamesContext eContext, const LLUUID& idAgent = LLUUID::null);
|
||||
static void setShowName(EShowNamesContext eContext, bool fCanShowName) { if ( (eContext < SNC_COUNT) && (isRlvEnabled()) ) { s_BlockNamesContexts[eContext] = !fCanShowName; } }
|
||||
|
||||
/*
|
||||
* Returns true if the user is allowed to see the presence of nearby avatars in UI elements (anonymized or otherwise)
|
||||
*/
|
||||
static bool canShowNearbyAgents();
|
||||
|
||||
protected:
|
||||
// Backwards logic so that we can initialize to 0 and it won't block when we forget to/don't check if RLVa is disabled
|
||||
static bool s_BlockNamesContexts[SNC_COUNT];
|
||||
|
|
|
|||
|
|
@ -458,20 +458,21 @@ void RlvUtil::filterLocation(std::string& strUTF8Text)
|
|||
}
|
||||
|
||||
// Checked: 2010-12-08 (RLVa-1.2.2c) | Modified: RLVa-1.2.2c
|
||||
void RlvUtil::filterNames(std::string& strUTF8Text, bool fFilterLegacy)
|
||||
void RlvUtil::filterNames(std::string& strUTF8Text, bool fFilterLegacy, bool fClearMatches)
|
||||
{
|
||||
uuid_vec_t idAgents;
|
||||
LLWorld::getInstance()->getAvatars(&idAgents, NULL);
|
||||
for (int idxAgent = 0, cntAgent = idAgents.size(); idxAgent < cntAgent; idxAgent++)
|
||||
{
|
||||
LLAvatarName avName;
|
||||
if ( (LLAvatarNameCache::get(idAgents[idxAgent], &avName)) && (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgents[idxAgent])) )
|
||||
// NOTE: if we're agressively culling nearby names then ignore exceptions
|
||||
if ( (LLAvatarNameCache::get(idAgents[idxAgent], &avName)) && ((fClearMatches) || (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, idAgents[idxAgent]))) )
|
||||
{
|
||||
const std::string& strDisplayName = escape_for_regex(avName.getDisplayName());
|
||||
bool fFilterDisplay = (strDisplayName.length() > 2);
|
||||
const std::string& strLegacyName = avName.getLegacyName();
|
||||
fFilterLegacy &= (strLegacyName.length() > 2);
|
||||
const std::string& strAnonym = RlvStrings::getAnonym(avName);
|
||||
const std::string& strAnonym = (!fClearMatches) ? RlvStrings::getAnonym(avName) : LLStringUtil::null;
|
||||
|
||||
// If the display name is a subset of the legacy name we need to filter that first, otherwise it's the other way around
|
||||
if (boost::icontains(strLegacyName, strDisplayName))
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ public:
|
|||
static bool isNearbyRegion(const std::string& strRegion); // @showloc
|
||||
|
||||
static void filterLocation(std::string& strUTF8Text); // @showloc
|
||||
static void filterNames(std::string& strUTF8Text, bool fFilterLegacy = true); // @shownames
|
||||
static void filterNames(std::string& strUTF8Text, bool fFilterLegacy = true, bool fClearMatches = false); // @shownames
|
||||
static void filterScriptQuestions(S32& nQuestions, LLSD& sdPayload);
|
||||
|
||||
static bool isForceTp() { return m_fForceTp; }
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ enum ERlvBehaviour {
|
|||
RLV_BHVR_SHOWLOC, // "showloc"
|
||||
RLV_BHVR_SHOWNAMES, // "shownames"
|
||||
RLV_BHVR_SHOWNAMETAGS, // "shownametags"
|
||||
RLV_BHVR_SHOWNEARBY,
|
||||
RLV_BHVR_SHOWHOVERTEXT, // "showhovertext"
|
||||
RLV_BHVR_SHOWHOVERTEXTHUD, // "showhovertexthud"
|
||||
RLV_BHVR_SHOWHOVERTEXTWORLD, // "showhovertextworld"
|
||||
|
|
@ -307,9 +308,10 @@ enum ERlvExceptionCheck
|
|||
|
||||
enum ERlvLockMask
|
||||
{
|
||||
RLV_LOCK_ADD = 0x01,
|
||||
RLV_LOCK_REMOVE = 0x02,
|
||||
RLV_LOCK_ANY = RLV_LOCK_ADD | RLV_LOCK_REMOVE
|
||||
RLV_LOCK_NONE = 0x00,
|
||||
RLV_LOCK_ADD = 0x01,
|
||||
RLV_LOCK_REMOVE = 0x02,
|
||||
RLV_LOCK_ANY = RLV_LOCK_ADD | RLV_LOCK_REMOVE
|
||||
};
|
||||
|
||||
enum ERlvWearMask
|
||||
|
|
|
|||
|
|
@ -2089,14 +2089,27 @@ ERlvCmdRet RlvBehaviourHandler<RLV_BHVR_SHOWNAMES>::onCommand(const RlvCommand&
|
|||
const LLUUID idAgent = RlvCommandOptionHelper::parseOption<LLUUID>(rlvCmd.getOption());
|
||||
|
||||
// Refresh the nearby people list (if necessary)
|
||||
LLPanelPeople* pPeoplePanel = LLFloaterSidePanelContainer::getPanel<LLPanelPeople>("people", "panel_people");
|
||||
RLV_ASSERT( (pPeoplePanel) && (pPeoplePanel->getNearbyList()) );
|
||||
if ( (pPeoplePanel) && (pPeoplePanel->getNearbyList()) && (pPeoplePanel->getNearbyList()->contains(idAgent)) )
|
||||
{
|
||||
if (pPeoplePanel->getNearbyList()->isInVisibleChain())
|
||||
pPeoplePanel->onCommit();
|
||||
pPeoplePanel->getNearbyList()->updateAvatarNames();
|
||||
}
|
||||
// <FS:Ansariel> [Standalone radar]
|
||||
//LLPanelPeople* pPeoplePanel = LLFloaterSidePanelContainer::getPanel<LLPanelPeople>("people", "panel_people");
|
||||
//RLV_ASSERT( (pPeoplePanel) && (pPeoplePanel->getNearbyList()) );
|
||||
//if ( (pPeoplePanel) && (pPeoplePanel->getNearbyList()) && (pPeoplePanel->getNearbyList()->contains(idAgent)) )
|
||||
//{
|
||||
// if (pPeoplePanel->getNearbyList()->isInVisibleChain())
|
||||
// pPeoplePanel->onCommit();
|
||||
// pPeoplePanel->getNearbyList()->updateAvatarNames();
|
||||
//}
|
||||
FSRadar* pRadar = FSRadar::getInstance();
|
||||
RLV_ASSERT( (pRadar) );
|
||||
if ( (pRadar) )
|
||||
pRadar->updateNames();
|
||||
// </FS:Ansariel> [Standalone radar]
|
||||
|
||||
// Refresh the speaker list
|
||||
// <FS:Ansariel> [FS communication UI]
|
||||
FSFloaterVoiceControls* pCallFloater = LLFloaterReg::findTypedInstance<FSFloaterVoiceControls>("fs_voice_controls");
|
||||
if (pCallFloater)
|
||||
pCallFloater->getAvatarCallerList()->updateAvatarNames();
|
||||
// </FS:Ansariel> [FS communication UI]
|
||||
|
||||
// Refresh that avatar's name tag and all HUD text
|
||||
LLVOAvatar::invalidateNameTag(idAgent);
|
||||
|
|
@ -2129,6 +2142,47 @@ ERlvCmdRet RlvBehaviourHandler<RLV_BHVR_SHOWNAMETAGS>::onCommand(const RlvComman
|
|||
return eRet;
|
||||
}
|
||||
|
||||
// Handles: @shownearby=n|y toggles
|
||||
template<> template<>
|
||||
void RlvBehaviourToggleHandler<RLV_BHVR_SHOWNEARBY>::onCommandToggle(ERlvBehaviour eBhvr, bool fHasBhvr)
|
||||
{
|
||||
if (LLApp::isQuitting())
|
||||
return; // Nothing to do if the viewer is shutting down
|
||||
|
||||
// Refresh the nearby people list
|
||||
// <FS:Ansariel> [Standalone radar]
|
||||
// -> This is handled in FSRadar (filtering all items) and
|
||||
// FSPanelRadar (setting the blocked message). Since the radar
|
||||
// is updated once every second, we do not hassle to explicitly
|
||||
// clear it here, since it will happening almost instantly anyway
|
||||
//LLPanelPeople* pPeoplePanel = LLFloaterSidePanelContainer::getPanel<LLPanelPeople>("people", "panel_people");
|
||||
//LLAvatarList* pNearbyList = (pPeoplePanel) ? pPeoplePanel->getNearbyList() : NULL;
|
||||
//RLV_ASSERT( (pPeoplePanel) && (pNearbyList) );
|
||||
//if (pNearbyList)
|
||||
//{
|
||||
// static std::string s_strNoItemsMsg = pNearbyList->getNoItemsMsg();
|
||||
// pNearbyList->setNoItemsMsg( (fHasBhvr) ? RlvStrings::getString("blocked_nearby") : s_strNoItemsMsg );
|
||||
// pNearbyList->clear();
|
||||
|
||||
// if (pNearbyList->isInVisibleChain())
|
||||
// pPeoplePanel->onCommit();
|
||||
// if (!fHasBhvr)
|
||||
// pPeoplePanel->updateNearbyList();
|
||||
//}
|
||||
// </FS:Ansariel> [Standalone radar]
|
||||
|
||||
// <FS:Ansariel> [FS communication UI]
|
||||
FSFloaterVoiceControls* pCallFloater = LLFloaterReg::findTypedInstance<FSFloaterVoiceControls>("fs_voice_controls");
|
||||
if (pCallFloater)
|
||||
{
|
||||
pCallFloater->toggleRlvShowNearbyRestriction(fHasBhvr);
|
||||
}
|
||||
// </FS:Ansariel> [FS communication UI]
|
||||
|
||||
// Refresh that avatar's name tag and all HUD text
|
||||
LLHUDText::refreshAllObjectText();
|
||||
}
|
||||
|
||||
// Handles: @showself=n|y and @showselfhead=n|y toggles
|
||||
template<> template<>
|
||||
void RlvBehaviourShowSelfToggleHandler::onCommandToggle(ERlvBehaviour eBvhr, bool fHasBhvr)
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ RlvBehaviourDictionary::RlvBehaviourDictionary()
|
|||
addEntry(new RlvBehaviourInfo("remoutfit", RLV_BHVR_REMOUTFIT, RLV_TYPE_ADDREM));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE>("rez", RLV_BHVR_REZ));
|
||||
addEntry(new RlvBehaviourProcessor<RLV_BHVR_SENDCHANNEL, RlvBehaviourSendChannelHandler>("sendchannel", RlvBehaviourInfo::BHVR_STRICT));
|
||||
addEntry(new RlvBehaviourProcessor<RLV_BHVR_SENDCHANNELEXCEPT, RlvBehaviourSendChannelHandler>("sendchannel_except", RlvBehaviourInfo::BHVR_STRICT));
|
||||
addEntry(new RlvBehaviourProcessor<RLV_BHVR_SENDCHANNELEXCEPT, RlvBehaviourSendChannelHandler>("sendchannel_except", RlvBehaviourInfo::BHVR_STRICT | RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE>("sendchat", RLV_BHVR_SENDCHAT));
|
||||
addEntry(new RlvBehaviourToggleProcessor<RLV_BHVR_SENDIM, RlvBehaviourRecvSendStartIMHandler>("sendim", RlvBehaviourInfo::BHVR_STRICT));
|
||||
addModifier(RLV_BHVR_SENDIM, RLV_MODIFIER_SENDIMDISTMIN, new RlvBehaviourModifier("SendIM Distance (Min)", F32_MAX, true, new RlvBehaviourModifier_CompMax));
|
||||
|
|
@ -144,8 +144,9 @@ RlvBehaviourDictionary::RlvBehaviourDictionary()
|
|||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE>("showminimap", RLV_BHVR_SHOWMINIMAP));
|
||||
addEntry(new RlvBehaviourToggleProcessor<RLV_BHVR_SHOWNAMES>("shownames", RlvBehaviourInfo::BHVR_STRICT));
|
||||
addEntry(new RlvBehaviourToggleProcessor<RLV_BHVR_SHOWNAMETAGS>("shownametags", RlvBehaviourInfo::BHVR_STRICT ));
|
||||
addEntry(new RlvBehaviourGenericToggleProcessor<RLV_BHVR_SHOWSELF, RLV_OPTION_NONE, RlvBehaviourShowSelfToggleHandler>("showself", RlvBehaviourInfo::BHVR_EXTENDED));
|
||||
addEntry(new RlvBehaviourGenericToggleProcessor<RLV_BHVR_SHOWSELFHEAD, RLV_OPTION_NONE, RlvBehaviourShowSelfToggleHandler>("showselfhead", RlvBehaviourInfo::BHVR_EXTENDED));
|
||||
addEntry(new RlvBehaviourGenericToggleProcessor<RLV_BHVR_SHOWNEARBY, RLV_OPTION_NONE>("shownearby", RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addEntry(new RlvBehaviourGenericToggleProcessor<RLV_BHVR_SHOWSELF, RLV_OPTION_NONE, RlvBehaviourShowSelfToggleHandler>("showself", RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addEntry(new RlvBehaviourGenericToggleProcessor<RLV_BHVR_SHOWSELFHEAD, RLV_OPTION_NONE, RlvBehaviourShowSelfToggleHandler>("showselfhead", RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE>("showworldmap", RLV_BHVR_SHOWWORLDMAP));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE>("sit", RLV_BHVR_SIT));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE_OR_MODIFIER>("sittp", RLV_BHVR_SITTP));
|
||||
|
|
@ -167,7 +168,7 @@ RlvBehaviourDictionary::RlvBehaviourDictionary()
|
|||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE_OR_EXCEPTION>("touchworld", RLV_BHVR_TOUCHWORLD));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE>("tplm", RLV_BHVR_TPLM));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE>("tploc", RLV_BHVR_TPLOC));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE_OR_MODIFIER>("tplocal", RLV_BHVR_TPLOCAL));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE_OR_MODIFIER>("tplocal", RLV_BHVR_TPLOCAL, RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addModifier(RLV_BHVR_TPLOCAL, RLV_MODIFIER_TPLOCALDIST, new RlvBehaviourModifier("Local Teleport Distance", RLV_MODIFIER_TPLOCAL_DEFAULT, true, new RlvBehaviourModifier_CompMin));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE_OR_EXCEPTION>("tplure", RLV_BHVR_TPLURE, RlvBehaviourInfo::BHVR_STRICT));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE_OR_EXCEPTION>("tprequest", RLV_BHVR_TPREQUEST, RlvBehaviourInfo::BHVR_STRICT | RlvBehaviourInfo::BHVR_EXTENDED));
|
||||
|
|
@ -179,13 +180,13 @@ RlvBehaviourDictionary::RlvBehaviourDictionary()
|
|||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_NONE>("viewtexture", RLV_BHVR_VIEWTEXTURE));
|
||||
// Camera
|
||||
addEntry(new RlvBehaviourGenericToggleProcessor<RLV_BHVR_SETCAM, RLV_OPTION_NONE>("setcam"));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_MODIFIER>("setcam_avdistmin", RLV_BHVR_SETCAM_AVDISTMIN));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_MODIFIER>("setcam_avdistmin", RLV_BHVR_SETCAM_AVDISTMIN, RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addModifier(RLV_BHVR_SETCAM_AVDISTMIN, RLV_MODIFIER_SETCAM_AVDISTMIN, new RlvBehaviourModifierHandler<RLV_MODIFIER_SETCAM_AVDISTMIN>("Camera - Avatar Distance (Min)", 0.0f, false, new RlvBehaviourModifier_CompMax()));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_MODIFIER>("setcam_avdistmax", RLV_BHVR_SETCAM_AVDISTMAX));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_MODIFIER>("setcam_avdistmax", RLV_BHVR_SETCAM_AVDISTMAX, RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addModifier(RLV_BHVR_SETCAM_AVDISTMAX, RLV_MODIFIER_SETCAM_AVDISTMAX, new RlvBehaviourModifier("Camera - Avatar Distance (Max)", F32_MAX, false, new RlvBehaviourModifier_CompMin));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_MODIFIER>("setcam_origindistmin", RLV_BHVR_SETCAM_ORIGINDISTMIN));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_MODIFIER>("setcam_origindistmin", RLV_BHVR_SETCAM_ORIGINDISTMIN, RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addModifier(RLV_BHVR_SETCAM_ORIGINDISTMIN, RLV_MODIFIER_SETCAM_ORIGINDISTMIN, new RlvBehaviourModifier("Camera - Focus Distance (Min)", 0.0f, true, new RlvBehaviourModifier_CompMax));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_MODIFIER>("setcam_origindistmax", RLV_BHVR_SETCAM_ORIGINDISTMAX));
|
||||
addEntry(new RlvBehaviourGenericProcessor<RLV_OPTION_MODIFIER>("setcam_origindistmax", RLV_BHVR_SETCAM_ORIGINDISTMAX, RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addModifier(RLV_BHVR_SETCAM_ORIGINDISTMAX, RLV_MODIFIER_SETCAM_ORIGINDISTMAX, new RlvBehaviourModifier("Camera - Focus Distance (Max)", F32_MAX, true, new RlvBehaviourModifier_CompMin));
|
||||
addEntry(new RlvBehaviourGenericToggleProcessor<RLV_BHVR_SETCAM_EYEOFFSET, RLV_OPTION_MODIFIER, RlvBehaviourCamEyeFocusOffsetHandler>("setcam_eyeoffset", RlvBehaviourInfo::BHVR_EXPERIMENTAL));
|
||||
addModifier(RLV_BHVR_SETCAM_EYEOFFSET, RLV_MODIFIER_SETCAM_EYEOFFSET, new RlvBehaviourModifierHandler<RLV_MODIFIER_SETCAM_EYEOFFSET>("Camera - Eye Offset", LLVector3::zero, true, nullptr));
|
||||
|
|
|
|||
|
|
@ -949,7 +949,7 @@ protected:
|
|||
|
||||
// Checked: 2011-03-28 (RLVa-1.3.0g) | Modified: RLVa-1.3.0g
|
||||
RlvFolderLocks::RlvFolderLocks()
|
||||
: m_fLookupDirty(false), m_fLockedRoot(false), m_cntLockAdd(0), m_cntLockRem(0)
|
||||
: m_fLookupDirty(false), m_RootLockType(RLV_LOCK_NONE), m_cntLockAdd(0), m_cntLockRem(0)
|
||||
{
|
||||
LLOutfitObserver::instance().addCOFChangedCallback(boost::bind(&RlvFolderLocks::onNeedsLookupRefresh, this));
|
||||
RlvInventory::instance().addSharedRootIDChangedCallback(boost::bind(&RlvFolderLocks::onNeedsLookupRefresh, this));
|
||||
|
|
@ -1201,7 +1201,7 @@ bool RlvFolderLocks::isLockedFolder(LLUUID idFolder, ERlvLockMask eLockTypeMask,
|
|||
idFolderCur = (pParent) ? pParent->getParentUUID() : idFolderRoot;
|
||||
}
|
||||
// If we didn't encounter an explicit deny lock with no exception then the folder is locked if the entire inventory is locked down
|
||||
return (m_fLockedRoot) && (eSourceTypeMask & ST_ROOTFOLDER) && (idsRlvObjRem.empty()) && (idsRlvObjAdd.empty());
|
||||
return (m_RootLockType & eLockTypeMask) && (eSourceTypeMask & ST_ROOTFOLDER) && (idsRlvObjRem.empty()) && (idsRlvObjAdd.empty());
|
||||
}
|
||||
|
||||
// Checked: 2010-11-30 (RLVa-1.3.0b) | Added: RLVa-1.3.0b
|
||||
|
|
@ -1217,7 +1217,7 @@ void RlvFolderLocks::refreshLockedLookups() const
|
|||
//
|
||||
// Refresh locked folders
|
||||
//
|
||||
m_fLockedRoot = false;
|
||||
m_RootLockType = RLV_LOCK_NONE;
|
||||
m_LockedFolderMap.clear();
|
||||
for (folderlock_list_t::const_iterator itFolderLock = m_FolderLocks.begin(); itFolderLock != m_FolderLocks.end(); ++itFolderLock)
|
||||
{
|
||||
|
|
@ -1231,8 +1231,8 @@ void RlvFolderLocks::refreshLockedLookups() const
|
|||
const LLViewerInventoryCategory* pFolder = lockedFolders.at(idxFolder);
|
||||
if (idFolderRoot != pFolder->getUUID())
|
||||
m_LockedFolderMap.insert(std::pair<LLUUID, const folderlock_descr_t*>(pFolder->getUUID(), pLockDescr));
|
||||
else
|
||||
m_fLockedRoot |= (SCOPE_SUBTREE == pLockDescr->eLockScope);
|
||||
else if (SCOPE_SUBTREE == pLockDescr->eLockScope)
|
||||
m_RootLockType |= (U32)pLockDescr->eLockType;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -376,11 +376,11 @@ protected:
|
|||
|
||||
// Cached item look-up variables
|
||||
typedef std::multimap<LLUUID, const folderlock_descr_t*> folderlock_map_t;
|
||||
mutable bool m_fLookupDirty;
|
||||
mutable bool m_fLockedRoot;
|
||||
mutable uuid_vec_t m_LockedAttachmentRem;
|
||||
mutable folderlock_map_t m_LockedFolderMap;
|
||||
mutable uuid_vec_t m_LockedWearableRem;
|
||||
mutable bool m_fLookupDirty;
|
||||
mutable U32 m_RootLockType;
|
||||
mutable uuid_vec_t m_LockedAttachmentRem;
|
||||
mutable folderlock_map_t m_LockedFolderMap;
|
||||
mutable uuid_vec_t m_LockedWearableRem;
|
||||
private:
|
||||
friend class LLSingleton<RlvFolderLocks>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -63,8 +63,9 @@
|
|||
<check_box label="Im alten Namensformat „Resident“ abschneiden" name="legacy_trim_check" tool_tip="Schneidet den Nachnamen „Resident“ im alten Namensformat ab." />
|
||||
<check_box label="Alte Position für Avatarnamen" name="FSLegacyNametagPosition" tool_tip="Falls aktiviert, wird die Position des Avatarnamens fest an der Position des Avatars angezeigt und folgt nicht der Bewegung des Kopfes bei Animationen." />
|
||||
<check_box label="„Automatische Antwort“-Modus anzeigen" name="FSShowAutorespondInNameTag" tool_tip="Falls aktiviert, wird der Modus „Automatische Antwort“ im eigenen Avatarnamen angezeigt."/>
|
||||
<check_box label="Komplexität falls zu komplex" name="FSTagShowTooComplexARW" tool_tip="Falls aktiviert, wird die aktuelle Avatar-Komplexität angezeigt, wenn der Avatar zu komplex ist und als Jelly Doll dargestellt wird."/>
|
||||
<check_box label="Komplexität immer anzeigen" name="FSTagAlwaysShowARW" tool_tip="Falls aktiviert, wird immer die aktuelle Avatar-Komplexität angezeigt."/>
|
||||
<check_box label="Komplexität anzeigen" name="FSTagShowARW" tool_tip="Falls aktiviert, wird die aktuelle Avatar-Komplexität angezeigt."/>
|
||||
<check_box label="Nur falls zu komplex" name="FSTagShowTooComplexOnlyARW" tool_tip="Falls aktiviert, wird die aktuelle Avatar-Komplexität nur angezeigt, wenn der Avatar zu komplex ist und als Jelly Doll dargestellt wird."/>
|
||||
<check_box label="Eigene Komplexität anzeigen" name="FSTagShowOwnARW" tool_tip="Falls aktiviert, wird die eigene aktuelle Avatar-Komplexität angezeigt."/>
|
||||
|
||||
<check_box label="Viewer-UI-Tipps aktivieren" name="viewer_hints_check"/>
|
||||
<text name="title_afk_text" width="275">
|
||||
|
|
|
|||
|
|
@ -61,6 +61,11 @@
|
|||
<key>value</key>
|
||||
<string>Die aktive Gruppe kann aufgrund von RLV-Einschränkungen nicht geändert werden. Setze zurück auf „[GROUP_SLURL]“.</string>
|
||||
</map>
|
||||
<key>blocked_nearby</key>
|
||||
<map>
|
||||
<key>value</key>
|
||||
<string>Avatare in der Nähe können aufgrund von RLV-Einschränkungen nicht angezeigt werden.</string>
|
||||
</map>
|
||||
<key>blocked_permattach</key>
|
||||
<map>
|
||||
<key>value</key>
|
||||
|
|
|
|||
|
|
@ -152,6 +152,16 @@
|
|||
name="non_avatar_caller"
|
||||
top="10"
|
||||
width="276" />
|
||||
<text
|
||||
follows="all"
|
||||
font="SansSerif"
|
||||
height="120"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="rlv_restricted"
|
||||
top="10"
|
||||
width="280"
|
||||
wrap="true"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@
|
|||
</text>
|
||||
<panel_inventory_object
|
||||
background_visible="false"
|
||||
draw_border="false"
|
||||
follows="all"
|
||||
height="250"
|
||||
layout="topleft"
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ Maximum 200 per group daily
|
|||
height="125"
|
||||
column_padding="0"
|
||||
draw_heading="true"
|
||||
sort_column="4"
|
||||
sort_ascending="false"
|
||||
follows="left|top|right"
|
||||
layout="topleft">
|
||||
<scroll_list.columns
|
||||
|
|
@ -61,6 +63,7 @@ Maximum 200 per group daily
|
|||
<scroll_list.columns
|
||||
label="Date"
|
||||
name="date"
|
||||
sort_column="sort"
|
||||
relative_width="0.35" />
|
||||
<scroll_list.columns
|
||||
name="sort"
|
||||
|
|
|
|||
|
|
@ -436,29 +436,36 @@
|
|||
top_delta="0"/>
|
||||
|
||||
<check_box
|
||||
control_name="FSTagShowTooComplexARW"
|
||||
control_name="FSTagShowARW"
|
||||
enabled_control="AvatarNameTagMode"
|
||||
height="16"
|
||||
label="Complexity if too complex"
|
||||
label="Show avatar complexity"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
width="140"
|
||||
top_pad="3"
|
||||
name="FSTagShowTooComplexARW"
|
||||
tool_tip="If enabled, the nametag will show the current avatar complexity if the avatar is too complex and shown as a jelly doll."
|
||||
top_delta="0" />
|
||||
|
||||
name="FSTagShowARW"
|
||||
tool_tip="If enabled, the nametag will show the current avatar complexity."/>
|
||||
<check_box
|
||||
control_name="FSTagAlwaysShowARW"
|
||||
enabled_control="AvatarNameTagMode"
|
||||
control_name="FSTagShowTooComplexOnlyARW"
|
||||
height="16"
|
||||
label="Always show complexity"
|
||||
label="Only if too complex"
|
||||
layout="topleft"
|
||||
left_pad="50"
|
||||
width="100"
|
||||
name="FSTagAlwaysShowARW"
|
||||
tool_tip="If enabled, the nametag will always show the current avatar complexity."
|
||||
top_delta="0" />
|
||||
left="40"
|
||||
width="140"
|
||||
top_pad="3"
|
||||
name="FSTagShowTooComplexOnlyARW"
|
||||
tool_tip="If enabled, the nametag will show the current avatar complexity only if the avatar is too complex and shown as a jelly doll."/>
|
||||
<check_box
|
||||
control_name="FSTagShowOwnARW"
|
||||
height="16"
|
||||
label="Show own complexity"
|
||||
layout="topleft"
|
||||
left="40"
|
||||
width="140"
|
||||
top_pad="3"
|
||||
name="FSTagShowOwnARW"
|
||||
tool_tip="If enabled, your own nametag will your current avatar complexity."/>
|
||||
|
||||
<!--away/logout-->
|
||||
<text
|
||||
|
|
@ -468,7 +475,7 @@
|
|||
height="13"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
top_pad="15"
|
||||
top_pad="10"
|
||||
name="title_afk_text"
|
||||
width="260">
|
||||
Away timeout:
|
||||
|
|
@ -576,7 +583,7 @@
|
|||
left="30"
|
||||
mouse_opaque="false"
|
||||
name="text_box3"
|
||||
top_pad="25"
|
||||
top_pad="10"
|
||||
width="500">
|
||||
Unavailable and Autoresponse messages can be found under Privacy / Autoresponse
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -61,6 +61,11 @@
|
|||
<key>value</key>
|
||||
<string>Unable to change your active group due to an RLV restriction; switching back to [GROUP_SLURL]</string>
|
||||
</map>
|
||||
<key>blocked_nearby</key>
|
||||
<map>
|
||||
<key>value</key>
|
||||
<string>Unable to see the presence of nearby avatars due to RLV restrictions</string>
|
||||
</map>
|
||||
<key>blocked_permattach</key>
|
||||
<map>
|
||||
<key>value</key>
|
||||
|
|
|
|||
|
|
@ -61,8 +61,9 @@
|
|||
<check_box label="Usuwaj 'Resident' z imion starego typu" name="legacy_trim_check" tool_tip="Usuwaj 'Resident' z imion starego typu."/>
|
||||
<check_box label="Pozycje imion w stary sposób" name="FSLegacyNametagPosition" tool_tip="Gdy włączysz tą opcję, to tag imienia będzie zawieszony na stałej wysokości ponad awatarem i nie będzie podążać za jego głową, jeśli poruszy się ona np. w wyniku animacji."/>
|
||||
<check_box label="Pokaż tryb autoodpowiedzi w moim tagu imienia" name="FSShowAutorespondInNameTag" tool_tip="Status będzie widoczny, gdy włączysz autoodpowiedź."/>
|
||||
<check_box label="Złożoność, gdy jest zbyt duża" name="FSTagShowTooComplexARW" tool_tip="Gdy włączysz tą opcję, to tag imienia będzie pokazywać złożoność graficzną awatara, jeśli będzie on zbyt złożony i pokazywany jako mniej obciążająca komputer forma (tzw. Jelly Doll)"/>
|
||||
<check_box label="Zawsze pokazuj złożoność" name="FSTagAlwaysShowARW" tool_tip="Gdy włączysz tą opcję, to tag imienia będzie zawsze pokazywać złożoność graficzną awatara."/>
|
||||
<check_box label="Pokazuj złożoność" name="FSTagShowARW" tool_tip="Gdy włączysz tą opcję, to tag imienia będzie pokazywać obecną złożoność graficzną awatara."/>
|
||||
<check_box label="Tylko gdy jest zbyt duża" name="FSTagShowTooComplexOnlyARW" tool_tip="Gdy włączysz tą opcję, to tag imienia będzie pokazywać złożoność graficzną awatara tylko wtedy, gdy będzie on zbyt złożony i zastępowany przez mniej obciążającą komputer formę (tzw. Jelly Doll)."/>
|
||||
<check_box label="Pokazuj własną złożoność" name="FSTagShowOwnARW" tool_tip="Gdy włączysz tą opcję, to tag imienia będzie pokazywać Twoją własną, obecną złożoność graficzną."/>
|
||||
<text name="title_afk_text">
|
||||
Zasypiaj po czasie:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -55,6 +55,11 @@
|
|||
<key>value</key>
|
||||
<string>Nie można zmienić aktywnej grupy ze względu na ograniczenia RLV; Zmieniam z powrotem na [GROUP_SLURL]</string>
|
||||
</map>
|
||||
<key>blocked_nearby</key>
|
||||
<map>
|
||||
<key>value</key>
|
||||
<string>Nie można widzieć osób w pobliżu ze względu na ograniczenia RLV</string>
|
||||
</map>
|
||||
<key>blocked_permattach</key>
|
||||
<map>
|
||||
<key>value</key>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@ Maximum 200 per group daily
|
|||
left="0"
|
||||
right="-1"
|
||||
name="notice_list"
|
||||
sort_ascending="false"
|
||||
sort_column="4"
|
||||
top_pad="0"
|
||||
width="304">
|
||||
<scroll_list.columns
|
||||
|
|
@ -60,6 +62,7 @@ Maximum 200 per group daily
|
|||
<scroll_list.columns
|
||||
label="Date"
|
||||
name="date"
|
||||
sort_column="sort"
|
||||
relative_width="0.35" />
|
||||
<scroll_list.columns
|
||||
name="sort"
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@ Maximum 200 per group daily
|
|||
left="0"
|
||||
right="-1"
|
||||
name="notice_list"
|
||||
sort_ascending="false"
|
||||
sort_column="4"
|
||||
top_pad="0"
|
||||
width="304">
|
||||
<scroll_list.columns
|
||||
|
|
@ -60,6 +62,7 @@ Maximum 200 per group daily
|
|||
<scroll_list.columns
|
||||
label="Date"
|
||||
name="date"
|
||||
sort_column="sort"
|
||||
relative_width="0.35" />
|
||||
<scroll_list.columns
|
||||
name="sort"
|
||||
|
|
|
|||
|
|
@ -114,6 +114,16 @@
|
|||
name="non_avatar_caller"
|
||||
top="10"
|
||||
width="276" />
|
||||
<text
|
||||
follows="all"
|
||||
font="SansSerif"
|
||||
height="120"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="rlv_restricted"
|
||||
top="10"
|
||||
width="280"
|
||||
wrap="true"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<slider
|
||||
|
|
|
|||
|
|
@ -1497,6 +1497,7 @@ class LinuxManifest(ViewerManifest):
|
|||
# Currentelly, the 32-bit ones will work with a 64-bit client.
|
||||
if self.prefix(src="../packages/lib/release", dst="bin"):
|
||||
self.path("SLVoice")
|
||||
self.path("win32")
|
||||
self.end_prefix()
|
||||
if self.prefix(src="../packages/lib/release", dst="lib"):
|
||||
self.path("libortp.so")
|
||||
|
|
@ -1562,7 +1563,7 @@ class LinuxManifest(ViewerManifest):
|
|||
def strip_binaries(self):
|
||||
if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():
|
||||
print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
|
||||
self.run_command(r"find %(d)r/bin %(d)r/lib -type f \! -name update_install \! -name *.pak \! -name *.dat \! -name *.bin \! -name core | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
|
||||
self.run_command(r"find %(d)r/bin %(d)r/lib -type f \! -name update_install \! -name *.pak \! -name *.dat \! -name *.bin \! -name core \! -path '*win32*' | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
|
||||
|
||||
class Linux_i686_Manifest(LinuxManifest):
|
||||
def construct(self):
|
||||
|
|
|
|||
Loading…
Reference in New Issue