Refactor radar layout to match CHUI layout

meow-7.2.2
Ansariel 2013-07-18 03:22:31 +02:00
parent 88b3f76956
commit 2017c60baa
12 changed files with 502 additions and 816 deletions

View File

@ -28,65 +28,24 @@
#include "fsfloaterradar.h"
#include "llnotificationsutil.h"
#include "llfiltereditor.h"
#include "llavataractions.h"
#include "rlvhandler.h"
FSFloaterRadar::FSFloaterRadar(const LLSD& key)
: LLFloater(key),
mFilterSubString(LLStringUtil::null),
mFilterSubStringOrig(LLStringUtil::null),
mFilterEditor(NULL),
mRadarPanel(NULL),
mRadarChangeConnection()
mRadarPanel(NULL)
{
mCommitCallbackRegistrar.add("People.addFriend", boost::bind(&FSFloaterRadar::onAddFriendButtonClicked, this));
}
FSFloaterRadar::~FSFloaterRadar()
{
if (LLVoiceClient::instanceExists())
{
LLVoiceClient::getInstance()->removeObserver(this);
}
if (mRadarChangeConnection.connected())
{
mRadarChangeConnection.disconnect();
}
}
BOOL FSFloaterRadar::postBuild()
{
mFilterEditor = getChild<LLFilterEditor>("filter_input");
mFilterEditor->setCommitCallback(boost::bind(&FSFloaterRadar::onFilterEdit, this, _2));
mProfileButton = getChild<LLButton>("view_profile_btn");
mIMButton = getChild<LLButton>("im_btn");
mCallButton = getChild<LLButton>("call_btn");
mTeleportButton = getChild<LLButton>("teleport_btn");
mShareButton = getChild<LLButton>("share_btn");
mProfileButton->setCommitCallback(boost::bind(&FSFloaterRadar::onViewProfileButtonClicked, this));
mIMButton->setCommitCallback(boost::bind(&FSFloaterRadar::onImButtonClicked, this));
mCallButton->setCommitCallback(boost::bind(&FSFloaterRadar::onCallButtonClicked, this));
mTeleportButton->setCommitCallback(boost::bind(&FSFloaterRadar::onTeleportButtonClicked, this));
mShareButton->setCommitCallback(boost::bind(&FSFloaterRadar::onShareButtonClicked, this));
mRadarPanel = findChild<FSPanelRadar>("panel_radar");
if (!mRadarPanel)
{
return FALSE;
}
mRadarPanel->setVisibleCheckFunction(boost::bind(&FSFloaterRadar::getVisible, this));
mRadarChangeConnection = mRadarPanel->setChangeCallback(boost::bind(&FSFloaterRadar::updateButtons, this));
LLVoiceClient::getInstance()->addObserver(this);
// call this method in case some list is empty and buttons can be in inconsistent state
updateButtons();
return TRUE;
}
@ -99,117 +58,3 @@ void FSFloaterRadar::onOpen(const LLSD& key)
LLFloater::onOpen(key);
}
// virtual
void FSFloaterRadar::onChange(EStatusType status, const std::string &channelURI, bool proximal)
{
if (status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
{
return;
}
updateButtons();
}
void FSFloaterRadar::updateButtons()
{
LLUUID selected_id;
uuid_vec_t selected_uuids;
mRadarPanel->getCurrentItemIDs(selected_uuids);
bool item_selected = (selected_uuids.size() == 1);
bool multiple_selected = (selected_uuids.size() >= 1);
bool enable_calls = LLVoiceClient::getInstance()->isVoiceWorking() && LLVoiceClient::getInstance()->voiceEnabled();
// [RLVa:KB] - Checked: 2010-06-04 (RLVa-1.2.2a) | Modified: RLVa-1.2.0d
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
{
item_selected = multiple_selected = false;
}
// [/RLBa:KB]
mProfileButton->setEnabled(item_selected);
mShareButton->setEnabled(item_selected);
mIMButton->setEnabled(multiple_selected); // allow starting the friends conference for multiple selection
mCallButton->setEnabled(multiple_selected && enable_calls);
mTeleportButton->setEnabled(multiple_selected /* && LLAvatarActions::canOfferTeleport(selected_uuids) */ ); // LO - Dont block the TP button at all.
}
void FSFloaterRadar::onFilterEdit(const std::string& search_string)
{
mFilterSubStringOrig = search_string;
LLStringUtil::trimHead(mFilterSubStringOrig);
// Searches are case-insensitive
std::string search_upper = mFilterSubStringOrig;
LLStringUtil::toUpper(search_upper);
if (mFilterSubString == search_upper)
{
return;
}
mFilterSubString = search_upper;
// Apply new filter.
mRadarPanel->setFilter(mFilterSubStringOrig);
}
void FSFloaterRadar::onViewProfileButtonClicked()
{
LLUUID id = mRadarPanel->getCurrentItemID();
LLAvatarActions::showProfile(id);
}
void FSFloaterRadar::onAddFriendButtonClicked()
{
LLUUID id = mRadarPanel->getCurrentItemID();
if (id.notNull())
{
LLAvatarActions::requestFriendshipDialog(id);
}
}
void FSFloaterRadar::onImButtonClicked()
{
uuid_vec_t selected_uuids;
mRadarPanel->getCurrentItemIDs(selected_uuids);
if ( selected_uuids.size() == 1 )
{
// if selected only one person then start up IM
LLAvatarActions::startIM(selected_uuids.at(0));
}
else if ( selected_uuids.size() > 1 )
{
// for multiple selection start up friends conference
LLAvatarActions::startConference(selected_uuids);
}
}
void FSFloaterRadar::onCallButtonClicked()
{
uuid_vec_t selected_uuids;
mRadarPanel->getCurrentItemIDs(selected_uuids);
if (selected_uuids.size() == 1)
{
// initiate a P2P voice chat with the selected user
LLAvatarActions::startCall(mRadarPanel->getCurrentItemID());
}
else if (selected_uuids.size() > 1)
{
// initiate an ad-hoc voice chat with multiple users
LLAvatarActions::startAdhocCall(selected_uuids);
}
}
void FSFloaterRadar::onTeleportButtonClicked()
{
uuid_vec_t selected_uuids;
mRadarPanel->getCurrentItemIDs(selected_uuids);
LLAvatarActions::offerTeleport(selected_uuids);
}
void FSFloaterRadar::onShareButtonClicked()
{
LLAvatarActions::share(mRadarPanel->getCurrentItemID());
}

View File

@ -31,14 +31,12 @@
#include "fspanelradar.h"
#include "fsradar.h"
#include "llvoiceclient.h"
class LLButton;
class LLFilterEditor;
class FSFloaterRadar
: public LLFloater
, public LLVoiceClientStatusObserver
{
LOG_CLASS(FSFloaterRadar);
public:
@ -48,35 +46,8 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
// Implements LLVoiceClientStatusObserver::onChange() to enable call buttons
// when voice is available
/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
private:
void updateButtons();
// UI callbacks
void onFilterEdit(const std::string& search_string);
void onViewProfileButtonClicked();
void onAddFriendButtonClicked();
void onImButtonClicked();
void onCallButtonClicked();
void onTeleportButtonClicked();
void onShareButtonClicked();
FSPanelRadar* mRadarPanel;
LLFilterEditor* mFilterEditor;
LLButton* mProfileButton;
LLButton* mShareButton;
LLButton* mIMButton;
LLButton* mCallButton;
LLButton* mTeleportButton;
std::string mFilterSubString;
std::string mFilterSubStringOrig;
boost::signals2::connection mRadarChangeConnection;
};
#endif // FS_FLOATERRADAR_H

View File

@ -29,6 +29,7 @@
#include "fspanelradar.h"
// libs
#include "llfiltereditor.h"
#include "llfloaterreg.h"
#include "lllayoutstack.h"
#include "llmenugl.h"
@ -78,13 +79,17 @@ static LLRegisterPanelClassWrapper<FSPanelRadar> t_fs_panel_radar("fs_panel_rada
FSPanelRadar::FSPanelRadar()
: LLPanel(),
mRadarGearButton(NULL),
mRadarGearButton(NULL),
mOptionsButton(NULL),
mMiniMap(NULL),
mFilterSubString(LLStringUtil::null),
mFilterSubStringOrig(LLStringUtil::null),
mRadarList(NULL),
mVisibleCheckFunction(NULL)
{
mButtonsUpdater = new FSButtonsUpdater(boost::bind(&FSPanelRadar::updateButtons, this));
mCommitCallbackRegistrar.add("People.addFriend", boost::bind(&FSPanelRadar::onAddFriendButtonClicked, this));
mCommitCallbackRegistrar.add("People.addFriend", boost::bind(&FSPanelRadar::onAddFriendButtonClicked, this));
mCommitCallbackRegistrar.add("Radar.Gear", boost::bind(&FSPanelRadar::onGearButtonClicked, this, _1));
}
FSPanelRadar::~FSPanelRadar()
@ -92,7 +97,7 @@ FSPanelRadar::~FSPanelRadar()
mUpdateSignalConnection.disconnect();
delete mButtonsUpdater;
if (mRadarGearMenuHandle.get()) mRadarGearMenuHandle.get()->die();
if (mÓptionsMenuHandle.get()) mÓptionsMenuHandle.get()->die();
}
BOOL FSPanelRadar::postBuild()
@ -106,26 +111,29 @@ BOOL FSPanelRadar::postBuild()
mRadarList->setCommitCallback(boost::bind(&FSPanelRadar::onRadarListCommitted, this));
mMiniMap = getChild<LLNetMap>("Net Map");
mAddFriendButton = getChild<LLButton>("add_friend_btn_nearby");
mAddFriendButton = getChild<LLButton>("add_friend_btn");
getChild<LLFilterEditor>("nearby_filter_input")->setCommitCallback(boost::bind(&FSPanelRadar::onFilterEdit, this, _2));
// Create menus.
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
registrar.add("Radar.Gear.Action", boost::bind(&FSPanelRadar::onGearMenuItemClicked, this, _2));
registrar.add("Radar.NameFmt", boost::bind(&FSRadar::onRadarNameFmtClicked, _2));
registrar.add("Radar.ReportTo", boost::bind(&FSRadar::onRadarReportToClicked, _2));
registrar.add("Radar.Option.Action", boost::bind(&FSPanelRadar::onGearMenuItemClicked, this, _2));
registrar.add("Radar.NameFmt", boost::bind(&FSRadar::onRadarNameFmtClicked, _2));
registrar.add("Radar.ReportTo", boost::bind(&FSRadar::onRadarReportToClicked, _2));
enable_registrar.add("Radar.NameFmtCheck", boost::bind(&FSRadar::radarNameFmtCheck, _2));
enable_registrar.add("Radar.ReportToCheck", boost::bind(&FSRadar::radarReportToCheck, _2));
mRadarGearButton = getChild<LLButton>("gear_btn");
mOptionsButton = getChild<LLMenuButton>("options_btn");
mRadarGearButton = getChild<LLMenuButton>("nearby_view_sort_btn");
LLToggleableMenu* radar_gear = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_fs_radar_gear.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if (radar_gear)
LLToggleableMenu* options_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_fs_radar_gear.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if (options_menu)
{
mRadarGearMenuHandle = radar_gear->getHandle();
mRadarGearButton->setMenu(radar_gear);
mÓptionsMenuHandle = options_menu->getHandle();
mOptionsButton->setMenu(options_menu, LLMenuButton::MP_BOTTOM_LEFT);
}
// Register for radar updates
@ -154,6 +162,7 @@ void FSPanelRadar::updateButtons()
is_friend = LLAvatarTracker::instance().getBuddyInfo(selected_id) != NULL;
}
mAddFriendButton->setEnabled(!is_friend && !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES));
mRadarGearButton->setEnabled(selected_uuids.size() > 0);
}
LLUUID FSPanelRadar::getCurrentItemID() const
@ -179,10 +188,23 @@ void FSPanelRadar::getCurrentItemIDs(uuid_vec_t& selected_uuids) const
}
}
void FSPanelRadar::setFilter(const std::string& search_string)
void FSPanelRadar::onFilterEdit(const std::string& search_string)
{
mFilterSubStringOrig = search_string;
LLStringUtil::trimHead(mFilterSubStringOrig);
// Searches are case-insensitive
std::string search_upper = mFilterSubStringOrig;
LLStringUtil::toUpper(search_upper);
if (mFilterSubString == search_upper)
{
return;
}
mFilterSubString = search_upper;
// Apply new filter.
mRadarList->setFilterString(search_string);
mRadarList->setFilterString(mFilterSubStringOrig);
}
void FSPanelRadar::onRadarListDoubleClicked()
@ -244,6 +266,14 @@ void FSPanelRadar::onGearMenuItemClicked(const LLSD& userdata)
}
}
void FSPanelRadar::onGearButtonClicked(LLUICtrl* btn)
{
uuid_vec_t selected_uuids;
getCurrentItemIDs(selected_uuids);
// Spawn at bottom left corner of the button.
FSFloaterRadarMenu::gFSRadarMenu.show(btn, selected_uuids, 0, 0);
}
void FSPanelRadar::requestUpdate()
{
FSRadar* radar = FSRadar::getInstance();

View File

@ -51,7 +51,6 @@ public:
void requestUpdate();
LLUUID getCurrentItemID() const;
void getCurrentItemIDs(uuid_vec_t& selected_uuids) const;
void setFilter(const std::string& search_string);
typedef boost::signals2::signal<void()> change_callback_t;
boost::signals2::connection setChangeCallback(const change_callback_t::slot_type& cb)
@ -74,16 +73,22 @@ private:
void onRadarListCommitted();
void onRadarListDoubleClicked();
void onGearMenuItemClicked(const LLSD& userdata);
void onFilterEdit(const std::string& search_string);
void onGearButtonClicked(LLUICtrl* btn);
FSRadarListCtrl* mRadarList;
LLNetMap* mMiniMap;
LLMenuButton* mRadarGearButton;
LLButton* mRadarGearButton;
LLButton* mAddFriendButton;
LLMenuButton* mOptionsButton;
LLHandle<LLView> mRadarGearMenuHandle;
LLHandle<LLView> mÓptionsMenuHandle;
FSRadar::Updater* mButtonsUpdater;
std::string mFilterSubString;
std::string mFilterSubStringOrig;
// Slot connection for FSRadar updates
boost::signals2::connection mUpdateSignalConnection;

View File

@ -589,7 +589,8 @@ void LLPanelPeople::removePicker()
BOOL LLPanelPeople::postBuild()
{
getChild<LLFilterEditor>("nearby_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
// <FS:Ansariel> Firestorm radar
//getChild<LLFilterEditor>("nearby_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
getChild<LLFilterEditor>("friends_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
getChild<LLFilterEditor>("groups_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
getChild<LLFilterEditor>("recent_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));

View File

@ -1,165 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
name="radar"
help_topic="fs_radar"
title="Radar"
width="333"
height="415"
min_width="250"
min_height="150"
reuse_instance="true"
single_instance="true"
save_rect="true"
save_visibility="true"
can_resize="true"
can_minimize="true"
can_close="true">
<filter_editor
follows="left|top|right"
height="23"
layout="topleft"
left="9"
label="Filter People"
max_length_chars="300"
name="filter_input"
text_pad_left="4"
top="3"
width="314"/>
<panel
class="fs_panel_radar"
name="panel_radar"
filename="panel_fs_radar.xml"
follows="all"
height="383"
layout="topleft"
left="3"
top_pad="3"
width="326"/>
<panel
visible="false"
follows="bottom|left|right"
height="23"
layout="topleft"
left="3"
top_pad="1"
name="button_bar"
width="326">
<layout_stack
follows="bottom|left|right"
height="23"
layout="topleft"
name="bottom_bar_ls"
orientation="horizontal"
top_pad="0"
width="326">
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
name="view_profile_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
height="23"
label="Profile"
layout="topleft"
left="1"
name="view_profile_btn"
tool_tip="Show picture, groups, and other Residents information"
top="0"
width="71"/>
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="1"
name="im_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
left="1"
height="23"
label="IM"
layout="topleft"
name="im_btn"
tool_tip="Open instant message session"
top="0"
width="71"/>
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="3"
name="call_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
left="1"
height="23"
label="Call"
layout="topleft"
name="call_btn"
tool_tip="Call this Resident"
top="0"
width="71"/>
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="3"
name="share_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
left="1"
height="23"
label="Share"
layout="topleft"
name="share_btn"
tool_tip="Share an inventory item"
top="0"
width="71"/>
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="3"
name="tp_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
left="1"
height="23"
label="Teleport"
layout="topleft"
name="teleport_btn"
tool_tip="Offer teleport"
top="0"
width="71"/>
</layout_panel>
</layout_stack>
</panel>
</floater>

View File

@ -26,172 +26,242 @@
name="nearby_panel"
top="0"
width="327">
<layout_stack
orientation="vertical"
clip="true"
follows="all"
layout="topleft"
top="0"
left="0"
height="306"
width="327"
mouse_opaque="false"
name="radar_ls"
auto_resize="false"
user_resize="true">
<layout_panel
layout="topleft"
top="0"
left="3"
height="140"
width="321"
min_dim="140"
follows="top"
mouse_opaque="false"
visibility_control="ShowRadarMinimap"
name="minimaplayout"
auto_resize="false"
user_resize="true">
<net_map
bg_color="NetMapBackgroundColor"
visibility_control="ShowRadarMinimap"
follows="all"
layout="topleft"
left="3"
mouse_opaque="false"
name="Net Map"
width="316"
height="140"
top="0"/>
</layout_panel>
<layout_panel
layout="topleft"
top="0"
left="0"
height="166"
width="327"
mouse_opaque="false"
follows="all"
name="radarlayout">
<radar_list
draw_heading="true"
follows="all"
height="166"
layout="topleft"
left="0"
top_pad="0"
sort_column="0"
sort_ascending="true"
name="radar_list"
draw_stripes="true"
multi_select="true"
width="327">
<radar_list.columns
label="Name"
name="name"
tool_tip="[TOTAL] avatars, [IN_REGION] in the same region, [IN_CHAT_RANGE] in chat range"
relative_width="0.34"/>
<radar_list.columns
label=""
name="voice_level"
tool_tip="Is talking on voice"
relative_width="0.07"/>
<radar_list.columns
label=""
name="in_region"
tool_tip="Is in the same region"
relative_width="0.03"/>
<radar_list.columns
label=""
name="flags"
tool_tip="Payment info status"
relative_width="0.05"/>
<radar_list.columns
label="Age"
name="age"
relative_width="0.1"/>
<radar_list.columns
label="Seen"
name="seen"
relative_width="0.15"/>
<radar_list.columns
label="Range"
name="range"
relative_width="0.16"/>
<radar_list.columns
label="av_id"
name="uuid"
relative_width="0"/>
</radar_list>
</layout_panel>
</layout_stack>
<!-- Buttons -->
<panel
background_visible="false"
follows="left|right|bottom"
follows="left|top|right"
height="27"
label="bottom_panel"
layout="topleft"
left="0"
name="bottom_panel_nearby"
top_pad="0"
width="327">
<menu_button
follows="bottom|left"
height="25"
image_hover_unselected="Toolbar_Left_Over"
image_overlay="OptionsMenu_Off"
image_selected="Toolbar_Left_Selected"
image_unselected="Toolbar_Left_Off"
name="nearby_buttons_panel"
right="-1"
top="0">
<filter_editor
follows="left|top|right"
height="23"
layout="topleft"
left="0"
name="nearby_view_sort_btn"
tool_tip="Options"
left="3"
label="Filter People"
max_length_chars="300"
name="nearby_filter_input"
text_color="Black"
text_pad_left="4"
top="1"
width="31"/>
width="219" />
<button
follows="bottom|left"
commit_callback.function="Radar.Gear"
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="OptionsMenu_Off"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="7"
name="gear_btn"
tool_tip="Actions on selected person"
top="0"
width="31" />
<menu_button
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Conv_toolbar_sort"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="options_btn"
tool_tip="Radar options"
top_delta="0"
width="31" />
<button
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="AddItem_Off"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="1"
name="add_friend_btn_nearby"
tool_tip="Add selected Resident to your friends List"
left_pad="2"
name="add_friend_btn"
tool_tip="Offer friendship to a resident"
top_delta="0"
width="31">
<commit_callback
function="People.addFriend"/>
function="People.AddFriend" />
</button>
<icon
follows="bottom|left|right"
height="25"
image_name="Toolbar_Right_Off"
layout="topleft"
left_pad="1"
name="nearby_dummy_icon"
width="263"/>
<slider
visibility_control="LimitRadarByRange"
control_name="NearMeRange"
decimal_digits="0"
follows="bottom|left"
height="16"
increment="2"
initial_value="96"
label="Range(m):"
label_width="70"
layout="topleft"
max_val="4096"
min_val="20"
name="NearMeRange"
visible="True"
left_delta="10"
top_delta="6"
width="220"/>
</panel>
<layout_stack
orientation="vertical"
clip="true"
follows="all"
layout="topleft"
top="27"
left="3"
height="301"
right="327"
mouse_opaque="false"
name="radar_outer_ls">
<layout_panel
auto_resize="true"
layout="topleft"
top="0"
left="3"
height="281"
width="321"
min_dim="140"
follows="all"
mouse_opaque="false"
name="radar_upper_layout">
<layout_stack
orientation="vertical"
clip="true"
follows="all"
layout="topleft"
top="0"
left="0"
height="281"
width="321"
mouse_opaque="false"
name="radar_ls"
auto_resize="true"
user_resize="true">
<layout_panel
layout="topleft"
top="0"
left="3"
height="140"
width="321"
min_dim="140"
follows="top"
mouse_opaque="false"
visibility_control="ShowRadarMinimap"
name="minimaplayout"
auto_resize="false"
user_resize="true">
<net_map
bg_color="NetMapBackgroundColor"
visibility_control="ShowRadarMinimap"
follows="all"
layout="topleft"
left="3"
mouse_opaque="false"
name="Net Map"
width="316"
height="140"
top="0"/>
</layout_panel>
<layout_panel
layout="topleft"
top="0"
left="0"
height="166"
width="321"
mouse_opaque="false"
follows="all"
name="radarlayout">
<radar_list
draw_heading="true"
follows="all"
height="166"
layout="topleft"
left="0"
top_pad="0"
sort_column="0"
sort_ascending="true"
name="radar_list"
draw_stripes="true"
multi_select="true"
width="321">
<radar_list.columns
label="Name"
name="name"
tool_tip="[TOTAL] avatars, [IN_REGION] in the same region, [IN_CHAT_RANGE] in chat range"
relative_width="0.34"/>
<radar_list.columns
label=""
name="voice_level"
tool_tip="Is talking on voice"
relative_width="0.07"/>
<radar_list.columns
label=""
name="in_region"
tool_tip="Is in the same region"
relative_width="0.03"/>
<radar_list.columns
label=""
name="flags"
tool_tip="Payment info status"
relative_width="0.05"/>
<radar_list.columns
label="Age"
name="age"
relative_width="0.1"/>
<radar_list.columns
label="Seen"
name="seen"
relative_width="0.15"/>
<radar_list.columns
label="Range"
name="range"
relative_width="0.16"/>
<radar_list.columns
label="av_id"
name="uuid"
relative_width="0"/>
</radar_list>
</layout_panel>
</layout_stack>
</layout_panel>
<layout_panel
auto_resize="false"
layout="topleft"
top="0"
left="3"
height="25"
width="321"
min_dim="20"
follows="top"
mouse_opaque="false"
visibility_control="LimitRadarByRange"
name="radar_lower_layout">
<icon
top="0"
follows="top|left|right"
height="25"
image_name="Toolbar_Left_Off"
layout="topleft"
left="1"
name="nearby_dummy_icon"
width="318"/>
<icon
top="0"
follows="top|right"
height="25"
image_name="Toolbar_Right_Off"
layout="topleft"
left="318"
name="nearby_dummy_icon"
width="0"/>
<slider
control_name="NearMeRange"
decimal_digits="0"
follows="bottom|left"
height="16"
increment="2"
initial_value="96"
label="Range (m):"
label_width="70"
layout="topleft"
max_val="4096"
min_val="20"
name="NearMeRange"
visible="True"
left="10"
top="6"
width="220"/>
</layout_panel>
</layout_stack>
</panel>
</panel>

View File

@ -85,6 +85,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="nearby_panel"
right="-1"
top="0">
<!-- FS:Ansariel: Firestorm radar
<panel
follows="left|top|right"
height="27"
@ -103,10 +104,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
max_length_chars="300"
name="nearby_filter_input"
text_color="Black"
text_pad_left="4"
text_pad_left="10"
top="4"
right="-6" />
<!-- FS:Ansariel: Firestorm radar
<button
commit_callback.function="People.Gear"
follows="right"
@ -169,9 +169,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
<commit_callback
function="People.DelFriend" />
</dnd_button>
-->
</panel>
<!-- FS:Ansariel: Firestorm radar
<layout_stack
clip="false"
follows="all"
@ -229,7 +227,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="panel_radar"
filename="panel_fs_radar.xml"
follows="all"
height="408"
height="441"
layout="topleft"
left="3"
top_pad="3"

View File

@ -14,151 +14,14 @@
can_resize="true"
can_minimize="true"
can_close="true">
<filter_editor
follows="left|top|right"
height="23"
layout="topleft"
left="9"
label="Filter People"
max_length_chars="300"
name="filter_input"
text_pad_left="10"
top="3"
width="314"/>
<panel
class="fs_panel_radar"
name="panel_radar"
filename="panel_fs_radar.xml"
follows="all"
height="383"
height="437"
layout="topleft"
left="3"
top_pad="3"
width="326"/>
<panel
follows="bottom|left|right"
height="23"
layout="topleft"
left="3"
top_pad="1"
name="button_bar"
width="326">
<layout_stack
follows="bottom|left|right"
height="23"
layout="topleft"
name="bottom_bar_ls"
orientation="horizontal"
top_pad="0"
width="326">
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
name="view_profile_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
height="23"
label="Profile"
layout="topleft"
left="1"
name="view_profile_btn"
tool_tip="Show picture, groups, and other Residents information"
top="0"
width="71"/>
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="1"
name="im_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
left="1"
height="23"
label="IM"
layout="topleft"
name="im_btn"
tool_tip="Open instant message session"
top="0"
width="71"/>
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="3"
name="call_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
left="1"
height="23"
label="Call"
layout="topleft"
name="call_btn"
tool_tip="Call this Resident"
top="0"
width="71"/>
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="3"
name="share_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
left="1"
height="23"
label="Share"
layout="topleft"
name="share_btn"
tool_tip="Share an inventory item"
top="0"
width="71"/>
</layout_panel>
<layout_panel
follows="bottom|left|right"
height="23"
layout="bottomleft"
left_pad="3"
name="tp_btn_lp"
user_resize="false"
auto_resize="true"
width="72">
<button
use_ellipses="true"
follows="bottom|left|right"
left="1"
height="23"
label="Teleport"
layout="topleft"
name="teleport_btn"
tool_tip="Offer teleport"
top="0"
width="71"/>
</layout_panel>
</layout_stack>
</panel>
width="324"/>
</floater>

View File

@ -197,6 +197,6 @@
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
<menu_item_call.on_click function="Radar.Gear.Action" userdata="panel_block_list_sidetray" />
<menu_item_call.on_click function="Radar.Option.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>

View File

@ -26,172 +26,242 @@
name="nearby_panel"
top="0"
width="327">
<layout_stack
orientation="vertical"
clip="true"
follows="all"
layout="topleft"
top="0"
left="0"
height="306"
width="327"
mouse_opaque="false"
name="radar_ls"
auto_resize="false"
user_resize="true">
<layout_panel
layout="topleft"
top="0"
left="3"
height="140"
width="321"
min_dim="140"
follows="top"
mouse_opaque="false"
visibility_control="ShowRadarMinimap"
name="minimaplayout"
auto_resize="false"
user_resize="true">
<net_map
bg_color="NetMapBackgroundColor"
visibility_control="ShowRadarMinimap"
follows="all"
layout="topleft"
left="3"
mouse_opaque="false"
name="Net Map"
width="316"
height="140"
top="0"/>
</layout_panel>
<layout_panel
layout="topleft"
top="0"
left="0"
height="166"
width="327"
mouse_opaque="false"
follows="all"
name="radarlayout">
<radar_list
draw_heading="true"
follows="all"
height="166"
layout="topleft"
left="0"
top_pad="0"
sort_column="0"
sort_ascending="true"
name="radar_list"
draw_stripes="true"
multi_select="true"
width="327">
<radar_list.columns
label="Name"
name="name"
tool_tip="[TOTAL] avatars, [IN_REGION] in the same region, [IN_CHAT_RANGE] in chat range"
relative_width="0.34"/>
<radar_list.columns
label=""
name="voice_level"
tool_tip="Is talking on voice"
relative_width="0.07"/>
<radar_list.columns
label=""
name="in_region"
tool_tip="Is in the same region"
relative_width="0.03"/>
<radar_list.columns
label=""
name="flags"
tool_tip="Payment info status"
relative_width="0.05"/>
<radar_list.columns
label="Age"
name="age"
relative_width="0.1"/>
<radar_list.columns
label="Seen"
name="seen"
relative_width="0.15"/>
<radar_list.columns
label="Range"
name="range"
relative_width="0.16"/>
<radar_list.columns
label="av_id"
name="uuid"
relative_width="0"/>
</radar_list>
</layout_panel>
</layout_stack>
<!-- Buttons -->
<panel
background_visible="false"
follows="left|right|bottom"
follows="left|top|right"
height="27"
label="bottom_panel"
layout="topleft"
left="0"
name="bottom_panel_nearby"
top_pad="0"
width="327">
<menu_button
follows="bottom|left"
height="25"
image_hover_unselected="Toolbar_Left_Over"
image_overlay="OptionsMenu_Off"
image_selected="Toolbar_Left_Selected"
image_unselected="Toolbar_Left_Off"
name="nearby_buttons_panel"
right="-1"
top="0">
<filter_editor
follows="left|top|right"
height="23"
layout="topleft"
left="0"
name="nearby_view_sort_btn"
tool_tip="Options"
left="3"
label="Filter People"
max_length_chars="300"
name="nearby_filter_input"
text_color="Black"
text_pad_left="10"
top="1"
width="31"/>
width="219" />
<button
follows="bottom|left"
commit_callback.function="Radar.Gear"
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="OptionsMenu_Off"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="7"
name="gear_btn"
tool_tip="Actions on selected person"
top="0"
width="31" />
<menu_button
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Conv_toolbar_sort"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="options_btn"
tool_tip="Radar options"
top_delta="0"
width="31" />
<button
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="AddItem_Off"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="1"
name="add_friend_btn_nearby"
tool_tip="Add selected Resident to your friends List"
left_pad="2"
name="add_friend_btn"
tool_tip="Offer friendship to a resident"
top_delta="0"
width="31">
<commit_callback
function="People.addFriend"/>
function="People.AddFriend" />
</button>
<icon
follows="bottom|left|right"
height="25"
image_name="Toolbar_Right_Off"
layout="topleft"
left_pad="1"
name="nearby_dummy_icon"
width="263"/>
<slider
visibility_control="LimitRadarByRange"
control_name="NearMeRange"
decimal_digits="0"
follows="bottom|left"
height="16"
increment="2"
initial_value="96"
label="Range(m):"
label_width="70"
layout="topleft"
max_val="4096"
min_val="20"
name="NearMeRange"
visible="True"
left_delta="10"
top_delta="6"
width="220"/>
</panel>
<layout_stack
orientation="vertical"
clip="true"
follows="all"
layout="topleft"
top="27"
left="3"
height="301"
right="327"
mouse_opaque="false"
name="radar_outer_ls">
<layout_panel
auto_resize="true"
layout="topleft"
top="0"
left="3"
height="281"
width="321"
min_dim="140"
follows="all"
mouse_opaque="false"
name="radar_upper_layout">
<layout_stack
orientation="vertical"
clip="true"
follows="all"
layout="topleft"
top="0"
left="0"
height="281"
width="321"
mouse_opaque="false"
name="radar_ls"
auto_resize="true"
user_resize="true">
<layout_panel
layout="topleft"
top="0"
left="3"
height="140"
width="321"
min_dim="140"
follows="top"
mouse_opaque="false"
visibility_control="ShowRadarMinimap"
name="minimaplayout"
auto_resize="false"
user_resize="true">
<net_map
bg_color="NetMapBackgroundColor"
visibility_control="ShowRadarMinimap"
follows="all"
layout="topleft"
left="3"
mouse_opaque="false"
name="Net Map"
width="316"
height="140"
top="0"/>
</layout_panel>
<layout_panel
layout="topleft"
top="0"
left="0"
height="166"
width="321"
mouse_opaque="false"
follows="all"
name="radarlayout">
<radar_list
draw_heading="true"
follows="all"
height="166"
layout="topleft"
left="0"
top_pad="0"
sort_column="0"
sort_ascending="true"
name="radar_list"
draw_stripes="true"
multi_select="true"
width="321">
<radar_list.columns
label="Name"
name="name"
tool_tip="[TOTAL] avatars, [IN_REGION] in the same region, [IN_CHAT_RANGE] in chat range"
relative_width="0.34"/>
<radar_list.columns
label=""
name="voice_level"
tool_tip="Is talking on voice"
relative_width="0.07"/>
<radar_list.columns
label=""
name="in_region"
tool_tip="Is in the same region"
relative_width="0.03"/>
<radar_list.columns
label=""
name="flags"
tool_tip="Payment info status"
relative_width="0.05"/>
<radar_list.columns
label="Age"
name="age"
relative_width="0.1"/>
<radar_list.columns
label="Seen"
name="seen"
relative_width="0.15"/>
<radar_list.columns
label="Range"
name="range"
relative_width="0.16"/>
<radar_list.columns
label="av_id"
name="uuid"
relative_width="0"/>
</radar_list>
</layout_panel>
</layout_stack>
</layout_panel>
<layout_panel
auto_resize="false"
layout="topleft"
top="0"
left="3"
height="25"
width="321"
min_dim="20"
follows="top"
mouse_opaque="false"
visibility_control="LimitRadarByRange"
name="radar_lower_layout">
<icon
top="0"
follows="top|left|right"
height="25"
image_name="Toolbar_Left_Off"
layout="topleft"
left="1"
name="nearby_dummy_icon"
width="318"/>
<icon
top="0"
follows="top|right"
height="25"
image_name="Toolbar_Right_Off"
layout="topleft"
left="318"
name="nearby_dummy_icon"
width="0"/>
<slider
control_name="NearMeRange"
decimal_digits="0"
follows="bottom|left"
height="16"
increment="2"
initial_value="96"
label="Range (m):"
label_width="70"
layout="topleft"
max_val="4096"
min_val="20"
name="NearMeRange"
visible="True"
left="10"
top="6"
width="220"/>
</layout_panel>
</layout_stack>
</panel>
</panel>

View File

@ -85,6 +85,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="nearby_panel"
right="-1"
top="0">
<!-- FS:Ansariel: Firestorm radar
<panel
follows="left|top|right"
height="27"
@ -106,7 +107,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
text_pad_left="10"
top="4"
right="-6" />
<!-- FS:Ansariel: Firestorm radar
<button
commit_callback.function="People.Gear"
follows="right"
@ -169,9 +169,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
<commit_callback
function="People.DelFriend" />
</dnd_button>
-->
</panel>
<!-- FS:Ansariel: Firestorm radar
<layout_stack
clip="false"
follows="all"
@ -229,7 +227,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="panel_radar"
filename="panel_fs_radar.xml"
follows="all"
height="408"
height="441"
layout="topleft"
left="3"
top_pad="3"