From a864acd74b7b6aca6551924191f08ecb7eee1cf3 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Fri, 26 Jul 2013 16:30:44 -0400 Subject: [PATCH] [Radar] Add menu to the radar --- indra/newview/llfloateravatarlist.cpp | 81 ++++++++ indra/newview/llfloateravatarlist.h | 1 - .../skins/default/xui/en-us/floater_radar.xml | 2 +- .../skins/default/xui/en-us/menu_radar.xml | 187 ++++++++++++++++++ 4 files changed, 269 insertions(+), 2 deletions(-) create mode 100644 indra/newview/skins/default/xui/en-us/menu_radar.xml diff --git a/indra/newview/llfloateravatarlist.cpp b/indra/newview/llfloateravatarlist.cpp index 67918e288..36b7265b6 100644 --- a/indra/newview/llfloateravatarlist.cpp +++ b/indra/newview/llfloateravatarlist.cpp @@ -337,6 +337,87 @@ static void cmd_profile(const LLAvatarListEntry* entry); static void cmd_toggle_mark(LLAvatarListEntry* entry); static void cmd_ar(const LLAvatarListEntry* entry); static void cmd_teleport(const LLAvatarListEntry* entry); + +namespace +{ + typedef LLMemberListener view_listener_t; + class RadarTrack : public view_listener_t + { + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLFloaterAvatarList::instance().onClickTrack(); + return true; + } + }; + + class RadarMark : public view_listener_t + { + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLFloaterAvatarList::instance().doCommand(cmd_toggle_mark); + return true; + } + }; + + class RadarFocus : public view_listener_t + { + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLFloaterAvatarList::instance().onClickFocus(); + return true; + } + }; + + class RadarFocusPrev : public view_listener_t + { + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLFloaterAvatarList::instance().focusOnPrev(userdata); + return true; + } + }; + + class RadarFocusNext : public view_listener_t + { + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLFloaterAvatarList::instance().focusOnNext(userdata); + return true; + } + }; + + class RadarTeleportTo : public view_listener_t + { + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLFloaterAvatarList::instance().doCommand(cmd_teleport, true); + return true; + } + }; + + class RadarAnnounceKeys : public view_listener_t + { + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLFloaterAvatarList::instance().sendKeys(); + return true; + } + }; +} + +void addMenu(view_listener_t* menu, const std::string& name); + +void add_radar_listeners() +{ + addMenu(new RadarTrack(), "Radar.Track"); + addMenu(new RadarMark(), "Radar.Mark"); + addMenu(new RadarFocus(), "Radar.Focus"); + addMenu(new RadarFocusPrev(), "Radar.FocusPrev"); + addMenu(new RadarFocusNext(), "Radar.FocusNext"); + addMenu(new RadarTeleportTo(), "Radar.TeleportTo"); + addMenu(new RadarAnnounceKeys(), "Radar.AnnounceKeys"); +} + BOOL LLFloaterAvatarList::postBuild() { // Set callbacks diff --git a/indra/newview/llfloateravatarlist.h b/indra/newview/llfloateravatarlist.h index 7b7291e21..33f02ce9b 100644 --- a/indra/newview/llfloateravatarlist.h +++ b/indra/newview/llfloateravatarlist.h @@ -250,7 +250,6 @@ public: typedef boost::shared_ptr LLAvatarListEntryPtr; typedef std::vector< LLAvatarListEntryPtr > av_list_t; -private: // when a line editor loses keyboard focus, it is committed. // commit callbacks are named onCommitWidgetName by convention. //void onCommitBaz(LLUICtrl* ctrl, void *userdata); diff --git a/indra/newview/skins/default/xui/en-us/floater_radar.xml b/indra/newview/skins/default/xui/en-us/floater_radar.xml index 568c9e884..2ccc31ca6 100644 --- a/indra/newview/skins/default/xui/en-us/floater_radar.xml +++ b/indra/newview/skins/default/xui/en-us/floater_radar.xml @@ -6,7 +6,7 @@ Radar (1 Avatar) Radar ([COUNT] Avatars) - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +