Fire-3142 - Request for option to only show "entering" events, not leaving. (patch by holy gavenkrantz)

Tank_Master 2012-05-30 11:41:45 -07:00
parent bd92873106
commit 3b46a0335c
5 changed files with 214 additions and 66 deletions

View File

@ -963,10 +963,46 @@
<integer>0</integer>
</map>
<key>RadarReportChatRange</key>
<key>RadarReportChatRangeEnter</key>
<map>
<key>Comment</key>
<string>Display a chat message when avatar leaves/enters chat distance</string>
<string>Display a chat message when avatar enters chat distance</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RadarReportChatRangeLeave</key>
<map>
<key>Comment</key>
<string>Display a chat message when avatar leaves chat distance</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RadarReportDrawRangeEnter</key>
<map>
<key>Comment</key>
<string>Display a chat message when avatar enters draw distance</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RadarReportDrawRangeLeave</key>
<map>
<key>Comment</key>
<string>Display a chat message when avatar leaves draw distance</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@ -975,10 +1011,10 @@
<integer>0</integer>
</map>
<key>RadarReportDrawRange</key>
<key>RadarReportSimRangeEnter</key>
<map>
<key>Comment</key>
<string>Display a chat message when avatar leaves/enters draw distance</string>
<string>Display a chat message when avatar enteres local region</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@ -986,12 +1022,11 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>RadarReportSimRange</key>
<key>RadarReportSimRangeLeave</key>
<map>
<key>Comment</key>
<string>Display a chat message when avatar leaves/enteres local region</string>
<string>Display a chat message when avatar leaves local region</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@ -1000,7 +1035,6 @@
<integer>0</integer>
</map>
<key>PermAllowScriptedMedia</key>
<map>
<key>Comment</key>

View File

@ -881,9 +881,12 @@ void LLPanelPeople::updateNearbyList()
return;
//Configuration
static LLCachedControl<bool> RadarReportChatRange(gSavedSettings, "RadarReportChatRange");
static LLCachedControl<bool> RadarReportDrawRange(gSavedSettings, "RadarReportDrawRange");
static LLCachedControl<bool> RadarReportSimRange(gSavedSettings, "RadarReportSimRange");
static LLCachedControl<bool> RadarReportChatRangeEnter(gSavedSettings, "RadarReportChatRangeEnter");
static LLCachedControl<bool> RadarReportChatRangeLeave(gSavedSettings, "RadarReportChatRangeLeave");
static LLCachedControl<bool> RadarReportDrawRangeEnter(gSavedSettings, "RadarReportDrawRangeEnter");
static LLCachedControl<bool> RadarReportDrawRangeLeave(gSavedSettings, "RadarReportDrawRangeLeave");
static LLCachedControl<bool> RadarReportSimRangeEnter(gSavedSettings, "RadarReportSimRangeEnter");
static LLCachedControl<bool> RadarReportSimRangeLeave(gSavedSettings, "RadarReportSimRangeLeave");
static LLCachedControl<bool> RadarEnterChannelAlert(gSavedSettings, "RadarEnterChannelAlert");
static LLCachedControl<bool> RadarLeaveChannelAlert(gSavedSettings, "RadarLeaveChannelAlert");
@ -1011,21 +1014,21 @@ void LLPanelPeople::updateNearbyList()
if (lastRadarSweep.count(avId) == 0)
{
// chat alerts
if (RadarReportChatRange && (avRange <= CHAT_NORMAL_RADIUS) && avRange > -1)
if (RadarReportChatRangeEnter && (avRange <= CHAT_NORMAL_RADIUS) && avRange > -1)
{
LLStringUtil::format_map_t args;
args["DISTANCE"] = llformat("%3.2f", avRange);
std::string message = getString("entering_chat_range", args);
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, message));
}
if (RadarReportDrawRange && (avRange <= drawRadius) && avRange > -1)
if (RadarReportDrawRangeEnter && (avRange <= drawRadius) && avRange > -1)
{
LLStringUtil::format_map_t args;
args["DISTANCE"] = llformat("%3.2f", avRange);
std::string message = getString("entering_draw_distance", args);
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, message));
}
if (RadarReportSimRange && (avRegion == regionSelf))
if (RadarReportSimRangeEnter && (avRegion == regionSelf))
{
if (avPos[VZ] != -1) // Don't report an inaccurate range in localchat, if the true range is not known.
{
@ -1061,33 +1064,33 @@ void LLPanelPeople::updateNearbyList()
if (lastRadarSweep.count(avId) == 1) // normal case, check from last position
{
rf = lastRadarSweep.find(avId)->second;
if (RadarReportChatRange)
if (RadarReportChatRangeEnter || RadarReportChatRangeLeave )
{
if ((avRange <= CHAT_NORMAL_RADIUS && avRange > -1) && (rf.lastDistance > CHAT_NORMAL_RADIUS || rf.lastDistance == -1))
if (RadarReportChatRangeEnter && (avRange <= CHAT_NORMAL_RADIUS && avRange > -1) && (rf.lastDistance > CHAT_NORMAL_RADIUS || rf.lastDistance == -1))
{
LLStringUtil::format_map_t args;
args["DISTANCE"] = llformat("%3.2f", avRange);
std::string message = getString("entering_chat_range", args);
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, message));
}
else if ((avRange > CHAT_NORMAL_RADIUS || avRange == -1) && (rf.lastDistance <= CHAT_NORMAL_RADIUS && rf.lastDistance > -1))
else if (RadarReportChatRangeLeave && (avRange > CHAT_NORMAL_RADIUS || avRange == -1) && (rf.lastDistance <= CHAT_NORMAL_RADIUS && rf.lastDistance > -1))
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_chat_range")));
}
if (RadarReportDrawRange)
if ( RadarReportDrawRangeEnter || RadarReportDrawRangeLeave )
{
if ((avRange <= drawRadius && avRange > -1) && (rf.lastDistance > drawRadius || rf.lastDistance == -1))
if (RadarReportDrawRangeEnter && (avRange <= drawRadius && avRange > -1) && (rf.lastDistance > drawRadius || rf.lastDistance == -1))
{
LLStringUtil::format_map_t args;
args["DISTANCE"] = llformat("%3.2f", avRange);
std::string message = getString("entering_draw_distance", args);
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, message));
}
else if ((avRange > drawRadius || avRange == -1) && (rf.lastDistance <= drawRadius && rf.lastDistance > -1))
else if ( RadarReportDrawRangeLeave && (avRange > drawRadius || avRange == -1) && (rf.lastDistance <= drawRadius && rf.lastDistance > -1))
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_draw_distance")));
}
if (RadarReportSimRange)
if (RadarReportSimRangeEnter || RadarReportSimRangeLeave )
{
if ((avRegion == regionSelf) && (avRegion != rf.lastRegion))
if ( RadarReportSimRangeEnter && (avRegion == regionSelf) && (avRegion != rf.lastRegion))
{
if (avPos[VZ] != -1) // Don't report an inaccurate range in localchat, if the true range is not known.
{
@ -1099,7 +1102,7 @@ void LLPanelPeople::updateNearbyList()
else
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("entering_region")));
}
else if ((rf.lastRegion == regionSelf) && (avRegion != regionSelf))
else if (RadarReportSimRangeLeave && (rf.lastRegion == regionSelf) && (avRegion != regionSelf))
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_region")));
}
}
@ -1116,33 +1119,33 @@ void LLPanelPeople::updateNearbyList()
}
llinfos << "AO: Duplicates detected for " << avName <<" , most recent is " << rf.firstSeen << llendl;
if (RadarReportChatRange)
if (RadarReportChatRangeEnter || RadarReportChatRangeLeave)
{
if ((avRange <= CHAT_NORMAL_RADIUS && avRange > -1) && (rf.lastDistance > CHAT_NORMAL_RADIUS || rf.lastDistance == -1))
if (RadarReportChatRangeEnter && (avRange <= CHAT_NORMAL_RADIUS && avRange > -1) && (rf.lastDistance > CHAT_NORMAL_RADIUS || rf.lastDistance == -1))
{
LLStringUtil::format_map_t args;
args["DISTANCE"] = llformat("%3.2f", avRange);
std::string message = getString("entering_chat_range", args);
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, message));
}
else if ((avRange > CHAT_NORMAL_RADIUS || avRange == -1) && (rf.lastDistance <= CHAT_NORMAL_RADIUS && rf.lastDistance > -1))
else if (RadarReportChatRangeLeave && (avRange > CHAT_NORMAL_RADIUS || avRange == -1) && (rf.lastDistance <= CHAT_NORMAL_RADIUS && rf.lastDistance > -1))
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_chat_range")));
}
if (RadarReportDrawRange)
if (RadarReportDrawRangeEnter || RadarReportDrawRangeLeave)
{
if ((avRange <= drawRadius && avRange > -1) && (rf.lastDistance > drawRadius || rf.lastDistance == -1))
if (RadarReportDrawRangeEnter && (avRange <= drawRadius && avRange > -1) && (rf.lastDistance > drawRadius || rf.lastDistance == -1))
{
LLStringUtil::format_map_t args;
args["DISTANCE"] = llformat("%3.2f", avRange);
std::string message = getString("entering_draw_distance", args);
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, message));
}
else if ((avRange > drawRadius || avRange == -1) && (rf.lastDistance <= drawRadius && rf.lastDistance > -1))
else if (RadarReportDrawRangeLeave && (avRange > drawRadius || avRange == -1) && (rf.lastDistance <= drawRadius && rf.lastDistance > -1))
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_draw_distance")));
}
if (RadarReportSimRange)
if (RadarReportSimRangeEnter || RadarReportSimRangeLeave)
{
if ((avRegion == regionSelf) && (avRegion != rf.lastRegion))
if (RadarReportSimRangeEnter && (avRegion == regionSelf) && (avRegion != rf.lastRegion))
{
if (avPos[VZ] != -1) // Don't report an inaccurate range in localchat, if the true range is not known.
{
@ -1154,7 +1157,7 @@ void LLPanelPeople::updateNearbyList()
else
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("entering_region")));
}
else if ((rf.lastRegion == regionSelf) && (avRegion != regionSelf))
else if (RadarReportSimRangeLeave && (rf.lastRegion == regionSelf) && (avRegion != regionSelf))
LLAvatarNameCache::get(avId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_region")));
}
}
@ -1314,11 +1317,11 @@ void LLPanelPeople::updateNearbyList()
if (!mNearbyList->contains(prevId))
{
radarFields rf = i->second;
if (RadarReportChatRange && (rf.lastDistance <= CHAT_NORMAL_RADIUS) && rf.lastDistance > -1)
if (RadarReportChatRangeLeave && (rf.lastDistance <= CHAT_NORMAL_RADIUS) && rf.lastDistance > -1)
LLAvatarNameCache::get(prevId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_chat_range")));
if (RadarReportDrawRange && (rf.lastDistance <= drawRadius) && rf.lastDistance > -1)
if (RadarReportDrawRangeLeave && (rf.lastDistance <= drawRadius) && rf.lastDistance > -1)
LLAvatarNameCache::get(prevId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_draw_distance")));
if (RadarReportSimRange && (rf.lastRegion == regionSelf))
if (RadarReportSimRangeLeave && (rf.lastRegion == regionSelf))
LLAvatarNameCache::get(prevId,boost::bind(&LLPanelPeople::radarAlertMsg, this, _1, _2, getString("leaving_region")));
if (RadarLeaveChannelAlert)

View File

@ -77,33 +77,63 @@
</menu_item_check>
<menu_item_check
label="Report Crossing Draw Range"
name="RadarReportDrawRange">
label="Report Entering Draw Range"
name="RadarReportDrawRangeEnter">
<menu_item_check.on_check
control="RadarReportDrawRange" />
control="RadarReportDrawRangeEnter" />
<menu_item_check.on_click
function="ToggleControl"
parameter="RadarReportDrawRange" />
parameter="RadarReportDrawRangeEnter" />
</menu_item_check>
<menu_item_check
label="Report Leaving Draw Range"
name="RadarReportDrawRangeLeave">
<menu_item_check.on_check
control="RadarReportDrawRangeLeave" />
<menu_item_check.on_click
function="ToggleControl"
parameter="RadarReportDrawRangeLeave" />
</menu_item_check>
<menu_item_check
label="Report Crossing Chat Range"
name="RadarReportChatRange">
label="Report Entering Chat Range"
name="RadarReportChatRangeEnter">
<menu_item_check.on_check
control="RadarReportChatRange" />
control="RadarReportChatRangeEnter" />
<menu_item_check.on_click
function="ToggleControl"
parameter="RadarReportChatRange" />
parameter="RadarReportChatRangeEnter" />
</menu_item_check>
<menu_item_check
label="Report Leaving Chat Range"
name="RadarReportChatRangeLeave">
<menu_item_check.on_check
control="RadarReportChatRangeLeave" />
<menu_item_check.on_click
function="ToggleControl"
parameter="RadarReportChatRangeLeave" />
</menu_item_check>
<menu_item_check
label="Report Crossing your Region"
name="RadarReportSimRange">
label="Report Entering your Region"
name="RadarReportSimRangeEnter">
<menu_item_check.on_check
control="RadarReportSimRange" />
control="RadarReportSimRangeEnter" />
<menu_item_check.on_click
function="ToggleControl"
parameter="RadarReportSimRange" />
parameter="RadarReportSimRangeEnter" />
</menu_item_check>
<menu_item_check
label="Report Leaving your Region"
name="RadarReportSimRangeLeave">
<menu_item_check.on_check
control="RadarReportSimRangeLeave" />
<menu_item_check.on_click
function="ToggleControl"
parameter="RadarReportSimRangeLeave" />
</menu_item_check>
<menu_item_check

View File

@ -808,30 +808,78 @@
name="ChatRadar" >
<check_box
control_name="RadarReportChatRange"
name="reportChatRange"
label="Radar reports when avatars enter/leave chat range"
control_name="RadarReportChatRangeEnter"
name="reportChatRangeEnter"
label="Radar reports when avatars enter chat range"
layout="topleft"
left="24"
top_pad="15"
height="20"
width="400" />
<check_box
control_name="RadarReportDrawRange"
name="reportDrawRange"
label="Radar reports when avatars enter/leave draw distance"
control_name="RadarReportChatRangeLeave"
name="reportChatRangeLeave"
label="Radar reports when avatars leave chat range"
layout="topleft"
left="24"
top_pad="0"
height="20"
width="400" />
<check_box
control_name="RadarReportDrawRangeEnter"
name="reportDrawRangeEnter"
label="Radar reports when avatars enter draw distance"
layout="topleft"
top_pad="0"
height="20"
width="400" />
<check_box
control_name="RadarReportSimRange"
name="RadarReportSimRange"
label="Radar reports when avatars enter/leave the region"
control_name="RadarReportDrawRangeLeave"
name="reportDrawRangeLeaave"
label="Radar reports when avatars leave draw distance"
layout="topleft"
top_pad="0"
height="20"
width="400" />
<check_box
control_name="RadarReportSimRangeEnter"
name="RadarReportSimRangeEnter"
label="Radar reports when avatars enter the region"
layout="topleft"
top_pad="0"
height="20"
width="400" />
<check_box
control_name="RadarReportSimRangeLeave"
name="RadarReportSimRangeLeave"
label="Radar reports when avatars leave the region"
layout="topleft"
top_pad="0"
height="20"
width="400" />
<check_box
control_name="RadarEnterChannelAlert"
name="RadarEnterChannelAlert"
label="Report Enter Alerts to Scripts"
layout="topleft"
top_pad="0"
height="20"
width="400" />
<check_box
control_name="RadarLeaveChannelAlert"
name="RadarLeaveChannelAlert"
label="Report Exit Alerts to Scripts"
layout="topleft"
top_pad="0"
height="20"
width="400" />
</panel>

View File

@ -256,33 +256,66 @@ Looking for people to hang out with? Use the search box to find topics or conten
follows="left|top"/>
<check_box
label="Report Crossing Draw Range"
label="Report Entering Draw Range"
left="0"
top_pad="2"
name="RadarReportDrawRange"
control_name="RadarReportDrawRange"
name="RadarReportDrawRangeEnter"
control_name="RadarReportDrawRangeEnter"
right="-1"
height="16"
layout="topleft"
follows="left|top"/>
<check_box
label="Report Leaving Draw Range"
left="0"
top_pad="2"
name="RadarReportDrawRangeLeaving"
control_name="RadarReportDrawRangeLeaving"
right="-1"
height="16"
layout="topleft"
follows="left|top"/>
<check_box
label="Report Crossing Chat Range"
label="Report Entering Chat Range"
left="0"
top_pad="2"
name="RadarReportChatRange"
control_name="RadarReportChatRange"
name="RadarReportChatRangeEnter"
control_name="RadarReportChatRangeEnter"
right="-1"
height="16"
layout="topleft"
follows="left|top"/>
<check_box
label="Report Leaving Chat Range"
left="0"
top_pad="2"
name="RadarReportChatRangeLeave"
control_name="RadarReportChatRangeLeave"
right="-1"
height="16"
layout="topleft"
follows="left|top"/>
<check_box
label="Report Crossing your Region"
label="Report Entering your Region"
left="0"
top_pad="2"
name="RadarReportSimRange"
control_name="RadarReportSimRange"
name="RadarReportSimRangeEnter"
control_name="RadarReportSimRangeEnter"
right="-1"
height="16"
layout="topleft"
follows="left|top"/>
<check_box
label="Report Leaving your Region"
left="0"
top_pad="2"
name="RadarReportSimRangeLeave"
control_name="RadarReportSimRangeLeave"
right="-1"
height="16"
layout="topleft"