CHUI-78 WIP Added drop-down menus and connected callbacks to the new view/sort/add/remove buttons.

Vadim ProductEngine 2012-04-05 22:56:18 +03:00
parent 177c1f80bc
commit 2dc032e3e5
12 changed files with 235 additions and 220 deletions

View File

@ -153,6 +153,11 @@ BOOL LLMenuButton::handleMouseDown(S32 x, S32 y, MASK mask)
void LLMenuButton::toggleMenu()
{
if (mValidateSignal && !(*mValidateSignal)(this, LLSD()))
{
return;
}
if(mMenuHandle.isDead()) return;
LLToggleableMenu* menu = dynamic_cast<LLToggleableMenu*>(mMenuHandle.get());

View File

@ -501,17 +501,38 @@ LLPanelPeople::LLPanelPeople()
mNearbyList(NULL),
mRecentList(NULL),
mGroupList(NULL),
mNearbyGearButton(NULL),
mFriendsGearButton(NULL),
mGroupsGearButton(NULL),
mRecentGearButton(NULL),
mMiniMap(NULL)
{
mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::updateFriendList, this));
mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList, this));
mRecentListUpdater = new LLRecentListUpdater(boost::bind(&LLPanelPeople::updateRecentList, this));
mButtonsUpdater = new LLButtonsUpdater(boost::bind(&LLPanelPeople::updateButtons, this));
mCommitCallbackRegistrar.add("People.addFriend", boost::bind(&LLPanelPeople::onAddFriendButtonClicked, this));
mCommitCallbackRegistrar.add("People.AddFriend", boost::bind(&LLPanelPeople::onAddFriendButtonClicked, this));
mCommitCallbackRegistrar.add("People.AddFriendWizard", boost::bind(&LLPanelPeople::onAddFriendWizButtonClicked, this));
mCommitCallbackRegistrar.add("People.DelFriend", boost::bind(&LLPanelPeople::onDeleteFriendButtonClicked, this));
mCommitCallbackRegistrar.add("People.Group.Activate", boost::bind(&LLPanelPeople::onActivateButtonClicked, this));
mCommitCallbackRegistrar.add("People.Group.Minus", boost::bind(&LLPanelPeople::onGroupMinusButtonClicked, this));
mCommitCallbackRegistrar.add("People.ViewProfile", boost::bind(&LLPanelPeople::onViewProfileButtonClicked, this));
mCommitCallbackRegistrar.add("People.GroupInfo", boost::bind(&LLPanelPeople::onGroupInfoButtonClicked, this));
mCommitCallbackRegistrar.add("People.Chat", boost::bind(&LLPanelPeople::onChatButtonClicked, this));
mCommitCallbackRegistrar.add("People.IM", boost::bind(&LLPanelPeople::onImButtonClicked, this));
mCommitCallbackRegistrar.add("People.Call", boost::bind(&LLPanelPeople::onCallButtonClicked, this));
mCommitCallbackRegistrar.add("People.GroupCall", boost::bind(&LLPanelPeople::onGroupCallButtonClicked, this));
mCommitCallbackRegistrar.add("People.Teleport", boost::bind(&LLPanelPeople::onTeleportButtonClicked, this));
mCommitCallbackRegistrar.add("People.Share", boost::bind(&LLPanelPeople::onShareButtonClicked, this));
mCommitCallbackRegistrar.add("People.Group.Plus.Action", boost::bind(&LLPanelPeople::onGroupPlusMenuItemClicked, this, _2));
mCommitCallbackRegistrar.add("People.Friends.ViewSort.Action", boost::bind(&LLPanelPeople::onFriendsViewSortMenuItemClicked, this, _2));
mCommitCallbackRegistrar.add("People.Nearby.ViewSort.Action", boost::bind(&LLPanelPeople::onNearbyViewSortMenuItemClicked, this, _2));
mCommitCallbackRegistrar.add("People.Groups.ViewSort.Action", boost::bind(&LLPanelPeople::onGroupsViewSortMenuItemClicked, this, _2));
mCommitCallbackRegistrar.add("People.Recent.ViewSort.Action", boost::bind(&LLPanelPeople::onRecentViewSortMenuItemClicked, this, _2));
mEnableCallbackRegistrar.add("People.Friends.ViewSort.CheckItem", boost::bind(&LLPanelPeople::onFriendsViewSortMenuItemCheck, this, _2));
mEnableCallbackRegistrar.add("People.Recent.ViewSort.CheckItem", boost::bind(&LLPanelPeople::onRecentViewSortMenuItemCheck, this, _2));
mEnableCallbackRegistrar.add("People.Nearby.ViewSort.CheckItem", boost::bind(&LLPanelPeople::onNearbyViewSortMenuItemCheck, this, _2));
mEnableCallbackRegistrar.add("People.Group.Plus.Validate", boost::bind(&LLPanelPeople::onGroupPlusButtonValidate, this));
}
LLPanelPeople::~LLPanelPeople()
@ -525,13 +546,6 @@ LLPanelPeople::~LLPanelPeople()
{
LLVoiceClient::getInstance()->removeObserver(this);
}
if (mGroupPlusMenuHandle.get()) mGroupPlusMenuHandle.get()->die();
if (mNearbyViewSortMenuHandle.get()) mNearbyViewSortMenuHandle.get()->die();
if (mNearbyViewSortMenuHandle.get()) mNearbyViewSortMenuHandle.get()->die();
if (mGroupsViewSortMenuHandle.get()) mGroupsViewSortMenuHandle.get()->die();
if (mRecentViewSortMenuHandle.get()) mRecentViewSortMenuHandle.get()->die();
}
void LLPanelPeople::onFriendsAccordionExpandedCollapsed(LLUICtrl* ctrl, const LLSD& param, LLAvatarList* avatar_list)
@ -601,14 +615,6 @@ BOOL LLPanelPeople::postBuild()
setSortOrder(mAllFriendList, (ESortOrder)gSavedSettings.getU32("FriendsSortOrder"), false);
setSortOrder(mNearbyList, (ESortOrder)gSavedSettings.getU32("NearbyPeopleSortOrder"), false);
LLPanel* groups_panel = getChild<LLPanel>(GROUP_TAB_NAME);
groups_panel->childSetAction("activate_btn", boost::bind(&LLPanelPeople::onActivateButtonClicked, this));
groups_panel->childSetAction("plus_btn", boost::bind(&LLPanelPeople::onGroupPlusButtonClicked, this));
LLPanel* friends_panel = getChild<LLPanel>(FRIENDS_TAB_NAME);
friends_panel->childSetAction("add_btn", boost::bind(&LLPanelPeople::onAddFriendWizButtonClicked, this));
friends_panel->childSetAction("del_btn", boost::bind(&LLPanelPeople::onDeleteFriendButtonClicked, this));
mOnlineFriendList->setItemDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, _1));
mAllFriendList->setItemDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, _1));
mNearbyList->setItemDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, _1));
@ -637,70 +643,9 @@ BOOL LLPanelPeople::postBuild()
accordion_tab->setDropDownStateChangedCallback(
boost::bind(&LLPanelPeople::onFriendsAccordionExpandedCollapsed, this, _1, _2, mOnlineFriendList));
buttonSetAction("view_profile_btn", boost::bind(&LLPanelPeople::onViewProfileButtonClicked, this));
buttonSetAction("group_info_btn", boost::bind(&LLPanelPeople::onGroupInfoButtonClicked, this));
buttonSetAction("chat_btn", boost::bind(&LLPanelPeople::onChatButtonClicked, this));
buttonSetAction("im_btn", boost::bind(&LLPanelPeople::onImButtonClicked, this));
buttonSetAction("call_btn", boost::bind(&LLPanelPeople::onCallButtonClicked, this));
buttonSetAction("group_call_btn", boost::bind(&LLPanelPeople::onGroupCallButtonClicked, this));
buttonSetAction("teleport_btn", boost::bind(&LLPanelPeople::onTeleportButtonClicked, this));
buttonSetAction("share_btn", boost::bind(&LLPanelPeople::onShareButtonClicked, this));
// Must go after setting commit callback and initializing all pointers to children.
mTabContainer->selectTabByName(NEARBY_TAB_NAME);
// Create menus.
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
registrar.add("People.Group.Plus.Action", boost::bind(&LLPanelPeople::onGroupPlusMenuItemClicked, this, _2));
registrar.add("People.Group.Minus.Action", boost::bind(&LLPanelPeople::onGroupMinusButtonClicked, this));
registrar.add("People.Friends.ViewSort.Action", boost::bind(&LLPanelPeople::onFriendsViewSortMenuItemClicked, this, _2));
registrar.add("People.Nearby.ViewSort.Action", boost::bind(&LLPanelPeople::onNearbyViewSortMenuItemClicked, this, _2));
registrar.add("People.Groups.ViewSort.Action", boost::bind(&LLPanelPeople::onGroupsViewSortMenuItemClicked, this, _2));
registrar.add("People.Recent.ViewSort.Action", boost::bind(&LLPanelPeople::onRecentViewSortMenuItemClicked, this, _2));
enable_registrar.add("People.Group.Minus.Enable", boost::bind(&LLPanelPeople::isRealGroup, this));
enable_registrar.add("People.Friends.ViewSort.CheckItem", boost::bind(&LLPanelPeople::onFriendsViewSortMenuItemCheck, this, _2));
enable_registrar.add("People.Recent.ViewSort.CheckItem", boost::bind(&LLPanelPeople::onRecentViewSortMenuItemCheck, this, _2));
enable_registrar.add("People.Nearby.ViewSort.CheckItem", boost::bind(&LLPanelPeople::onNearbyViewSortMenuItemCheck, this, _2));
mNearbyGearButton = getChild<LLMenuButton>("nearby_view_sort_btn");
mFriendsGearButton = getChild<LLMenuButton>("friends_viewsort_btn");
mGroupsGearButton = getChild<LLMenuButton>("groups_viewsort_btn");
mRecentGearButton = getChild<LLMenuButton>("recent_viewsort_btn");
LLMenuGL* plus_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_group_plus.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
mGroupPlusMenuHandle = plus_menu->getHandle();
LLToggleableMenu* nearby_view_sort = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_people_nearby_view_sort.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if(nearby_view_sort)
{
mNearbyViewSortMenuHandle = nearby_view_sort->getHandle();
mNearbyGearButton->setMenu(nearby_view_sort);
}
LLToggleableMenu* friend_view_sort = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_people_friends_view_sort.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if(friend_view_sort)
{
mFriendsViewSortMenuHandle = friend_view_sort->getHandle();
mFriendsGearButton->setMenu(friend_view_sort);
}
LLToggleableMenu* group_view_sort = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_people_groups_view_sort.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if(group_view_sort)
{
mGroupsViewSortMenuHandle = group_view_sort->getHandle();
mGroupsGearButton->setMenu(group_view_sort);
}
LLToggleableMenu* recent_view_sort = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_people_recent_view_sort.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if(recent_view_sort)
{
mRecentViewSortMenuHandle = recent_view_sort->getHandle();
mRecentGearButton->setMenu(recent_view_sort);
}
LLVoiceClient::getInstance()->addObserver(this);
// call this method in case some list is empty and buttons can be in inconsistent state
@ -835,13 +780,6 @@ void LLPanelPeople::buttonSetEnabled(const std::string& btn_name, bool enabled)
button->setEnabled(enabled);
}
void LLPanelPeople::buttonSetAction(const std::string& btn_name, const commit_signal_t::slot_type& cb)
{
// To make sure we're referencing the right widget (a child of the button bar).
LLButton* button = getChild<LLView>("button_bar")->getChild<LLButton>(btn_name);
button->setClickedCallback(cb);
}
void LLPanelPeople::updateButtons()
{
std::string cur_tab = getActiveTabName();
@ -877,7 +815,7 @@ void LLPanelPeople::updateButtons()
LLPanel* groups_panel = mTabContainer->getCurrentPanel();
groups_panel->getChildView("activate_btn")->setEnabled(item_selected && !cur_group_active); // "none" or a non-active group selected
groups_panel->getChildView("minus_btn")->setEnabled(item_selected && selected_id.notNull());
groups_panel->getChildView("minus_btn")->setEnabled(item_selected && selected_id.notNull()); // a real group selected
}
else
{
@ -893,10 +831,12 @@ void LLPanelPeople::updateButtons()
LLPanel* cur_panel = mTabContainer->getCurrentPanel();
if (cur_panel)
{
cur_panel->getChildView("add_friend_btn")->setEnabled(!is_friend);
if (cur_panel->hasChild("add_friend_btn", TRUE))
cur_panel->getChildView("add_friend_btn")->setEnabled(item_selected && !is_friend);
if (friends_tab_active)
{
cur_panel->getChildView("del_btn")->setEnabled(multiple_selected);
cur_panel->getChildView("friends_del_btn")->setEnabled(multiple_selected);
}
}
}
@ -1031,11 +971,6 @@ void LLPanelPeople::setSortOrder(LLAvatarList* list, ESortOrder order, bool save
}
}
bool LLPanelPeople::isRealGroup()
{
return getCurrentItemID() != LLUUID::null;
}
void LLPanelPeople::onFilterEdit(const std::string& search_string)
{
mFilterSubStringOrig = search_string;
@ -1226,19 +1161,15 @@ void LLPanelPeople::onAvatarPicked(const uuid_vec_t& ids, const std::vector<LLAv
LLAvatarActions::requestFriendshipDialog(ids[0], names[0].getCompleteName());
}
void LLPanelPeople::onGroupPlusButtonClicked()
bool LLPanelPeople::onGroupPlusButtonValidate()
{
if (!gAgent.canJoinGroups())
{
LLNotificationsUtil::add("JoinedTooManyGroups");
return;
return false;
}
LLMenuGL* plus_menu = (LLMenuGL*)mGroupPlusMenuHandle.get();
if (!plus_menu)
return;
showGroupMenu(plus_menu);
return true;
}
void LLPanelPeople::onGroupMinusButtonClicked()

View File

@ -82,7 +82,6 @@ private:
void getCurrentItemIDs(uuid_vec_t& selected_uuids) const;
void buttonSetVisible(std::string btn_name, BOOL visible);
void buttonSetEnabled(const std::string& btn_name, bool enabled);
void buttonSetAction(const std::string& btn_name, const commit_signal_t::slot_type& cb);
void showGroupMenu(LLMenuGL* menu);
void setSortOrder(LLAvatarList* list, ESortOrder order, bool save = true);
@ -104,7 +103,7 @@ private:
void onActivateButtonClicked();
void onAvatarListDoubleClicked(LLUICtrl* ctrl);
void onAvatarListCommitted(LLAvatarList* list);
void onGroupPlusButtonClicked();
bool onGroupPlusButtonValidate();
void onGroupMinusButtonClicked();
void onGroupPlusMenuItemClicked(const LLSD& userdata);
@ -113,8 +112,6 @@ private:
void onGroupsViewSortMenuItemClicked(const LLSD& userdata);
void onRecentViewSortMenuItemClicked(const LLSD& userdata);
//returns false only if group is "none"
bool isRealGroup();
bool onFriendsViewSortMenuItemCheck(const LLSD& userdata);
bool onRecentViewSortMenuItemCheck(const LLSD& userdata);
bool onNearbyViewSortMenuItemCheck(const LLSD& userdata);
@ -144,22 +141,11 @@ private:
LLGroupList* mGroupList;
LLNetMap* mMiniMap;
LLHandle<LLView> mGroupPlusMenuHandle;
LLHandle<LLView> mNearbyViewSortMenuHandle;
LLHandle<LLView> mFriendsViewSortMenuHandle;
LLHandle<LLView> mGroupsViewSortMenuHandle;
LLHandle<LLView> mRecentViewSortMenuHandle;
Updater* mFriendListUpdater;
Updater* mNearbyListUpdater;
Updater* mRecentListUpdater;
Updater* mButtonsUpdater;
LLMenuButton* mNearbyGearButton;
LLMenuButton* mFriendsGearButton;
LLMenuButton* mGroupsGearButton;
LLMenuButton* mRecentGearButton;
std::string mFilterSubString;
std::string mFilterSubStringOrig;
};

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu name="menu_group_plus"
<toggleable_menu name="menu_group_plus"
left="0" bottom="0" visible="false"
mouse_opaque="false">
<menu_item_call name="item_join" label="Join Group...">
@ -8,4 +8,4 @@
<menu_item_call name="item_new" label="New Group...">
<menu_item_call.on_click function="People.Group.Plus.Action" userdata="new_group" />
</menu_item_call>
</menu>
</toggleable_menu>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<toggleable_menu
name="menu_group_plus"
left="0" bottom="0" visible="false"
mouse_opaque="false">
<menu_item_check
label="Sort by Name"
name="sort_name">
<menu_item_check.on_click
function="People.Friends.ViewSort.Action"
parameter="sort_name" />
<menu_item_check.on_check
function="People.Friends.ViewSort.CheckItem"
parameter="sort_name" />
</menu_item_check>
<menu_item_check
label="Sort by Status"
name="sort_status">
<menu_item_check.on_click
function="People.Friends.ViewSort.Action"
parameter="sort_status" />
<menu_item_check.on_check
function="People.Friends.ViewSort.CheckItem"
parameter="sort_status" />
</menu_item_check>
</toggleable_menu>

View File

@ -3,27 +3,6 @@
name="menu_group_plus"
left="0" bottom="0" visible="false"
mouse_opaque="false">
<menu_item_check
label="Sort by Name"
name="sort_name">
<menu_item_check.on_click
function="People.Friends.ViewSort.Action"
parameter="sort_name" />
<menu_item_check.on_check
function="People.Friends.ViewSort.CheckItem"
parameter="sort_name" />
</menu_item_check>
<menu_item_check
label="Sort by Status"
name="sort_status">
<menu_item_check.on_click
function="People.Friends.ViewSort.Action"
parameter="sort_status" />
<menu_item_check.on_check
function="People.Friends.ViewSort.CheckItem"
parameter="sort_status" />
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_check name="view_icons" label="View People Icons">
<menu_item_check.on_click
function="People.Friends.ViewSort.Action"

View File

@ -14,13 +14,4 @@
function="CheckControl"
parameter="GroupListShowIcons" />
</menu_item_check>
<menu_item_call
label="Leave Selected Group"
layout="topleft"
name="Leave Selected Group">
<menu_item_call.on_click
function="People.Group.Minus.Action"/>
<menu_item_call.on_enable
function="People.Group.Minus.Enable"/>
</menu_item_call>
</toggleable_menu>

View File

@ -33,25 +33,4 @@
function="People.Nearby.ViewSort.CheckItem"
parameter="sort_distance"/>
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_check name="view_icons" label="View People Icons">
<menu_item_check.on_click
function="People.Nearby.ViewSort.Action"
parameter="view_icons" />
<menu_item_check.on_check
function="CheckControl"
parameter="NearbyListShowIcons" />
</menu_item_check>
<menu_item_check name ="view_map" label="View Map">
<menu_item_check.on_check
function="CheckControl"
parameter="NearbyListShowMap" />
<menu_item_check.on_click
function="ToggleControl"
parameter="NearbyListShowMap" />
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
<menu_item_call.on_click function="People.Nearby.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
</toggleable_menu>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<toggleable_menu
name="menu_group_plus"
left="0" bottom="0" visible="false"
mouse_opaque="false">
<menu_item_check name="view_icons" label="View People Icons">
<menu_item_check.on_click
function="People.Nearby.ViewSort.Action"
parameter="view_icons" />
<menu_item_check.on_check
function="CheckControl"
parameter="NearbyListShowIcons" />
</menu_item_check>
<menu_item_check name ="view_map" label="View Map">
<menu_item_check.on_check
function="CheckControl"
parameter="NearbyListShowMap" />
<menu_item_check.on_click
function="ToggleControl"
parameter="NearbyListShowMap" />
</menu_item_check>
<menu_item_separator
layout="topleft" />
<menu_item_call
name="show_blocked_list"
label="Show Blocked Residents &amp; Objects">
<menu_item_call.on_click
function="People.Nearby.ViewSort.Action"
userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>

View File

@ -23,17 +23,4 @@
function="People.Recent.ViewSort.CheckItem"
parameter="sort_name" />
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_check name="view_icons" label="View People Icons">
<menu_item_check.on_click
function="People.Recent.ViewSort.Action"
parameter="view_icons" />
<menu_item_check.on_check
function="CheckControl"
parameter="RecentListShowIcons" />
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
<menu_item_call.on_click function="People.Recent.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<toggleable_menu
name="menu_group_plus"
left="0" bottom="0" visible="false"
mouse_opaque="false">
<menu_item_check name="view_icons" label="View People Icons">
<menu_item_check.on_click
function="People.Recent.ViewSort.Action"
parameter="view_icons" />
<menu_item_check.on_check
function="CheckControl"
parameter="RecentListShowIcons" />
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
<menu_item_call.on_click function="People.Recent.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>

View File

@ -73,6 +73,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
top="0"
halign="center"
width="319">
<!-- ================================= NEARBY tab =========================== -->
<panel
background_opaque="true"
background_visible="true"
@ -117,19 +120,23 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="10"
name="nearby_sort_btn"
menu_filename="menu_people_nearby_view.xml"
menu_position="bottomleft"
name="nearby_view_btn"
top="1"
width="31" />
<menu_button
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Hierarchy_View_Disabled"
image_overlay="Inv_Underpants"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="nearby_view_btn"
menu_filename="menu_people_nearby_sort.xml"
menu_position="bottomleft"
name="nearby_sort_btn"
top="1"
width="31" />
<button
@ -141,10 +148,14 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="nearby_add_btn"
name="add_friend_btn"
top="1"
width="31" />
width="31">
<commit_callback
function="People.AddFriend" />
</button>
<dnd_button
enabled="false"
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
@ -155,7 +166,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
layout="topleft"
name="nearby_del_btn"
top="1"
width="31"/>
width="31">
<commit_callback
function="People.DelFriend" />
</dnd_button>
</panel>
<layout_stack
clip="false"
@ -208,6 +222,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
</layout_panel>
</layout_stack>
</panel>
<!-- ================================= FRIENDS tab ========================== -->
<panel
background_opaque="true"
background_visible="true"
@ -252,19 +269,23 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="10"
name="friends_sort_btn"
menu_filename="menu_people_friends_view.xml"
menu_position="bottomleft"
name="friends_view_btn"
top="1"
width="31" />
<menu_button
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Hierarchy_View_Disabled"
image_overlay="Inv_Underpants"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="friends_view_btn"
menu_filename="menu_people_friends_sort.xml"
menu_position="bottomleft"
name="friends_sort_btn"
top="1"
width="31" />
<button
@ -278,7 +299,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
left_pad="2"
name="friends_add_btn"
top="1"
width="31" />
width="31">
<commit_callback
function="People.AddFriendWizard" />
</button>
<dnd_button
follows="right"
height="25"
@ -290,7 +314,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
layout="topleft"
name="friends_del_btn"
top="1"
width="31"/>
width="31">
<commit_callback
function="People.DelFriend" />
</dnd_button>
</panel>
<accordion
background_visible="true"
@ -348,6 +375,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
width="293"
wrap="true" />
</panel>
<!-- ================================= GROUPS tab =========================== -->
<panel
background_opaque="true"
background_visible="true"
@ -396,19 +426,22 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="10"
name="groups_sort_btn"
menu_filename="menu_people_groups_view.xml"
menu_position="bottomleft"
name="groups_view_btn"
top="1"
width="31" />
<menu_button
enabled="false"
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Hierarchy_View_Disabled"
image_overlay="Inv_Underpants"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="groups_view_btn"
name="groups_sort_btn"
top="1"
width="31" />
<button
@ -420,10 +453,13 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="groups_activate_btn"
name="activate_btn"
top="1"
width="31" />
<button
width="31">
<commit_callback
function="People.Group.Activate" />
</button>
<menu_button
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
@ -432,9 +468,14 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="groups_add_btn"
menu_filename="menu_group_plus.xml"
menu_position="bottomleft"
name="minus_btn"
top="1"
width="31" />
width="31">
<validate_callback
function="People.Group.Plus.Validate" />
</menu_button>
<dnd_button
follows="right"
height="25"
@ -444,9 +485,12 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
left_pad="2"
layout="topleft"
name="groups_del_btn"
name="minus_btn"
top="1"
width="31"/>
width="31">
<commit_callback
function="People.Group.Minus" />
</dnd_button>
</panel>
<group_list
allow_select="true"
@ -458,6 +502,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
top_pad="0"
width="307" />
</panel>
<!-- ================================= RECENT tab =========================== -->
<panel
background_opaque="true"
background_visible="true"
@ -502,19 +549,23 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="10"
name="recent_sort_btn"
menu_filename="menu_people_recent_view.xml"
menu_position="bottomleft"
name="recent_view_btn"
top="1"
width="31" />
<menu_button
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Hierarchy_View_Disabled"
image_overlay="Inv_Underpants"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="recent_view_btn"
menu_filename="menu_people_recent_sort.xml"
menu_position="bottomleft"
name="recent_sort_btn"
top="1"
width="31" />
<button
@ -526,10 +577,14 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="2"
name="recent_add_btn"
name="add_friend_btn"
top="1"
width="31" />
width="31">
<commit_callback
function="People.AddFriend" />
</button>
<dnd_button
enabled="false"
follows="right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
@ -540,7 +595,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
layout="topleft"
name="recent_del_btn"
top="1"
width="31"/>
width="31">
<commit_callback
function="People.DelFriend" />
</dnd_button>
</panel>
<avatar_list
allow_select="true"
@ -592,7 +650,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="view_profile_btn"
tool_tip="Show picture, groups, and other Residents information"
top="0"
width="67" />
width="67">
<commit_callback
function="People.ViewProfile" />
</button>
</layout_panel>
<layout_panel
@ -612,7 +673,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="im_btn"
tool_tip="Open instant message session"
top="0"
width="40" />
width="40">
<commit_callback
function="People.IM" />
</button>
</layout_panel>
<layout_panel
@ -632,7 +696,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="call_btn"
tool_tip="Call this Resident"
top="0"
width="51" />
width="51">
<commit_callback
function="People.Call" />
</button>
</layout_panel>
<layout_panel
@ -652,7 +719,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="share_btn"
tool_tip="Share an inventory item"
top="0"
width="65" />
width="65">
<commit_callback
function="People.Share" />
</button>
</layout_panel>
<layout_panel
@ -672,7 +742,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="teleport_btn"
tool_tip="Offer teleport"
top="0"
width="76" />
width="76">
<commit_callback
function="People.Teleport" />
</button>
</layout_panel>
</layout_stack>
@ -706,7 +779,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="group_info_btn"
tool_tip="Show group information"
top="0"
width="107" />
width="107">
<commit_callback
function="People.GroupInfo" />
</button>
</layout_panel>
<layout_panel
@ -728,7 +804,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="chat_btn"
tool_tip="Open chat session"
top="0"
width="100" />
width="100">
<commit_callback
function="People.Chat" />
</button>
</layout_panel>
<layout_panel
@ -750,7 +829,10 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="group_call_btn"
tool_tip="Call this group"
top="0"
width="95" />
width="95">
<commit_callback
function="People.GroupCall" />
</button>
</layout_panel>
</layout_stack>
</panel>