Update Floater World Map, add support for worldmap and maptrackavatar slurls (Find on map and show pick on map in web profiles)
Cleaned up includes, switched callbacks over to mCommitCallbackRegistrar, updated RLVa portions to RLVa 1.4.5, changed mSLURL from a string to a real SLURL
This commit is contained in:
@@ -4,10 +4,9 @@
|
||||
* @brief LLFloaterWorldMap class implementation
|
||||
*
|
||||
* $LicenseInfo:firstyear=2003&license=viewergpl$
|
||||
*
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (c) 2003-2009, Linden Research, Inc.
|
||||
*
|
||||
* Second Life Viewer Source Code
|
||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||
* to you under the terms of the GNU General Public License, version 2.0
|
||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||
@@ -47,6 +46,7 @@
|
||||
#include "llcolorscheme.h"
|
||||
#include "llcombobox.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llcommandhandler.h"
|
||||
#include "lldraghandle.h"
|
||||
#include "llfirstuse.h"
|
||||
#include "llfocusmgr.h"
|
||||
@@ -55,15 +55,13 @@
|
||||
#include "llinventorymodelbackgroundfetch.h"
|
||||
#include "llinventoryobserver.h"
|
||||
#include "lllandmarklist.h"
|
||||
#include "lllineeditor.h"
|
||||
#include "llsearcheditor.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llregionhandle.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "llsearcheditor.h"
|
||||
#include "lltextbox.h"
|
||||
#include "lltracker.h"
|
||||
#include "lltrans.h"
|
||||
#include "llurldispatcher.h"
|
||||
#include "llviewermenu.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llviewerstats.h"
|
||||
@@ -74,11 +72,10 @@
|
||||
#include "llappviewer.h"
|
||||
#include "llmapimagetype.h"
|
||||
#include "llweb.h"
|
||||
#include "llsliderctrl.h"
|
||||
#include "llwindow.h" // copyTextToClipboard()
|
||||
#include "llslurl.h"
|
||||
|
||||
|
||||
// [RLVa:KB]
|
||||
// [RLVa:KB] - Checked: 2010-08-22 (RLVa-1.2.1a)
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
|
||||
@@ -114,12 +111,85 @@ enum EPanDirection
|
||||
// Values in pixels per region
|
||||
static const F32 ZOOM_MAX = 128.f;
|
||||
|
||||
static const F32 SIM_COORD_DEFAULT = 128.f;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Globals
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
// handle secondlife:///app/worldmap/{NAME}/{COORDS} URLs
|
||||
class LLWorldMapHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
// requires trusted browser to trigger
|
||||
LLWorldMapHandler() : LLCommandHandler("worldmap", UNTRUSTED_THROTTLE ) { }
|
||||
|
||||
bool handle(const LLSD& params, const LLSD& query_map,
|
||||
LLMediaCtrl* web)
|
||||
{
|
||||
/*if (!LLUI::sSettingGroups["config"]->getBOOL("EnableWorldMap"))
|
||||
{
|
||||
LLNotificationsUtil::add("NoWorldMap", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit"));
|
||||
return true;
|
||||
}*/
|
||||
|
||||
if (params.size() == 0)
|
||||
{
|
||||
// support the secondlife:///app/worldmap SLapp
|
||||
LLFloaterWorldMap::show(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
// support the secondlife:///app/worldmap/{LOCATION}/{COORDS} SLapp
|
||||
const std::string region_name = LLURI::unescape(params[0].asString());
|
||||
S32 x = (params.size() > 1) ? params[1].asInteger() : 128;
|
||||
S32 y = (params.size() > 2) ? params[2].asInteger() : 128;
|
||||
S32 z = (params.size() > 3) ? params[3].asInteger() : 0;
|
||||
|
||||
gFloaterWorldMap->trackURL(region_name, x, y, z);
|
||||
LLFloaterWorldMap::show(true);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
LLWorldMapHandler gWorldMapHandler;
|
||||
|
||||
// SocialMap handler secondlife:///app/maptrackavatar/id
|
||||
class LLMapTrackAvatarHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
// requires trusted browser to trigger
|
||||
LLMapTrackAvatarHandler() : LLCommandHandler("maptrackavatar", UNTRUSTED_THROTTLE)
|
||||
{
|
||||
}
|
||||
|
||||
bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
|
||||
{
|
||||
/*if (!LLUI::sSettingGroups["config"]->getBOOL("EnableWorldMap"))
|
||||
{
|
||||
LLNotificationsUtil::add("NoWorldMap", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit"));
|
||||
return true;
|
||||
}*/
|
||||
|
||||
//Make sure we have some parameters
|
||||
if (params.size() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//Get the ID
|
||||
LLUUID id;
|
||||
if (!id.set( params[0], FALSE ))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
gFloaterWorldMap->avatarTrackFromSlapp( id );
|
||||
LLFloaterWorldMap::show(true);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
LLMapTrackAvatarHandler gMapTrackAvatar;
|
||||
|
||||
LLFloaterWorldMap* gFloaterWorldMap = NULL;
|
||||
|
||||
class LLMapInventoryObserver : public LLInventoryObserver
|
||||
@@ -185,9 +255,22 @@ LLFloaterWorldMap::LLFloaterWorldMap()
|
||||
mListLandmarkCombo(NULL),
|
||||
mListSearchResults(NULL)
|
||||
{
|
||||
LLCallbackMap::map_t factory_map;
|
||||
factory_map["objects_mapview"] = LLCallbackMap(createWorldMapView, NULL);
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_world_map.xml", &factory_map);
|
||||
mFactoryMap["objects_mapview"] = LLCallbackMap(createWorldMapView, NULL);
|
||||
|
||||
mCommitCallbackRegistrar.add("WMap.Coordinates", boost::bind(&LLFloaterWorldMap::onCoordinatesCommit, this));
|
||||
mCommitCallbackRegistrar.add("WMap.Location", boost::bind(&LLFloaterWorldMap::onLocationCommit, this));
|
||||
mCommitCallbackRegistrar.add("WMap.AvatarCombo", boost::bind(&LLFloaterWorldMap::onAvatarComboCommit, this));
|
||||
mCommitCallbackRegistrar.add("WMap.Landmark", boost::bind(&LLFloaterWorldMap::onLandmarkComboCommit, this));
|
||||
mCommitCallbackRegistrar.add("WMap.SearchResult", boost::bind(&LLFloaterWorldMap::onCommitSearchResult, this));
|
||||
mCommitCallbackRegistrar.add("WMap.GoHome", boost::bind(&LLFloaterWorldMap::onGoHome, this));
|
||||
mCommitCallbackRegistrar.add("WMap.Teleport", boost::bind(&LLFloaterWorldMap::onClickTeleportBtn, this));
|
||||
mCommitCallbackRegistrar.add("WMap.ShowTarget", boost::bind(&LLFloaterWorldMap::onShowTargetBtn, this));
|
||||
mCommitCallbackRegistrar.add("WMap.ShowAgent", boost::bind(&LLFloaterWorldMap::onShowAgentBtn, this));
|
||||
mCommitCallbackRegistrar.add("WMap.Clear", boost::bind(&LLFloaterWorldMap::onClearBtn, this));
|
||||
mCommitCallbackRegistrar.add("WMap.CopySLURL", boost::bind(&LLFloaterWorldMap::onCopySLURL, this));
|
||||
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_world_map.xml", &getFactoryMap());
|
||||
gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLFloaterWorldMap::onChangeMaturity, this));
|
||||
}
|
||||
|
||||
// static
|
||||
@@ -198,14 +281,6 @@ void* LLFloaterWorldMap::createWorldMapView(void* data)
|
||||
|
||||
BOOL LLFloaterWorldMap::postBuild()
|
||||
{
|
||||
|
||||
// The following callback syncs the worlmap tabs with the images.
|
||||
// Commented out since it was crashing when LLWorldMap became a singleton.
|
||||
// We should be fine without it but override the onOpen method and put it
|
||||
// there if it turns out to be needed. -MG
|
||||
//
|
||||
//onCommitBackground((void*)this, false);
|
||||
|
||||
mPanel = getChild<LLPanel>("objects_mapview");
|
||||
|
||||
LLComboBox *avatar_combo = getChild<LLComboBox>("friend combo");
|
||||
@@ -218,9 +293,8 @@ BOOL LLFloaterWorldMap::postBuild()
|
||||
location_editor->setFocusChangedCallback(boost::bind(&LLFloaterWorldMap::onLocationFocusChanged, this, _1));
|
||||
location_editor->setKeystrokeCallback( boost::bind(&LLFloaterWorldMap::onSearchTextEntry, this));
|
||||
|
||||
LLScrollListCtrl* search_results = getChild<LLScrollListCtrl>("search_results");
|
||||
search_results->setDoubleClickCallback(boost::bind(&LLFloaterWorldMap::onClickTeleportBtn,this));
|
||||
mListSearchResults = dynamic_cast<LLCtrlListInterface *>(search_results);
|
||||
getChild<LLScrollListCtrl>("search_results")->setDoubleClickCallback( boost::bind(&LLFloaterWorldMap::onClickTeleportBtn, this));
|
||||
mListSearchResults = childGetListInterface("search_results");
|
||||
|
||||
LLComboBox *landmark_combo = getChild<LLComboBox>( "landmark combo");
|
||||
landmark_combo->selectFirstItem();
|
||||
@@ -228,26 +302,8 @@ BOOL LLFloaterWorldMap::postBuild()
|
||||
landmark_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) );
|
||||
mListLandmarkCombo = dynamic_cast<LLCtrlListInterface *>(landmark_combo);
|
||||
|
||||
avatar_combo->setCommitCallback( boost::bind(&LLFloaterWorldMap::onAvatarComboCommit,this) );
|
||||
|
||||
search_results->setCommitCallback( boost::bind(&LLFloaterWorldMap::onCommitSearchResult,this) );
|
||||
|
||||
landmark_combo->setCommitCallback( boost::bind(&LLFloaterWorldMap::onLandmarkComboCommit,this) );
|
||||
|
||||
getChild<LLUICtrl>("spin x")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onCoordinatesCommit,this) );
|
||||
getChild<LLUICtrl>("spin y")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onCoordinatesCommit,this) );
|
||||
getChild<LLUICtrl>("spin z")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onCoordinatesCommit,this) );
|
||||
|
||||
getChild<LLButton>("DoSearch")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onLocationCommit,this) );
|
||||
getChild<LLButton>("Go Home")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onGoHome,this) );
|
||||
getChild<LLButton>("Teleport")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onClickTeleportBtn,this) );
|
||||
getChild<LLButton>("Show Destination")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onShowTargetBtn,this) );
|
||||
getChild<LLButton>("Show My Location")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onShowAgentBtn,this) );
|
||||
getChild<LLButton>("Clear")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onClearBtn,this) );
|
||||
getChild<LLButton>("copy_slurl")->setCommitCallback(boost::bind(&LLFloaterWorldMap::onCopySLURL,this) );
|
||||
|
||||
mCurZoomVal = log(LLWorldMapView::sMapScale/256.f)/log(2.f);
|
||||
childSetValue("zoom slider", mCurZoomVal);
|
||||
getChild<LLUICtrl>("zoom slider")->setValue(mCurZoomVal);
|
||||
|
||||
setDefaultBtn(NULL);
|
||||
|
||||
@@ -323,7 +379,7 @@ void LLFloaterWorldMap::show(bool center_on_target)
|
||||
LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
|
||||
LLInventoryModelBackgroundFetch::instance().start(landmark_folder_id);
|
||||
|
||||
gFloaterWorldMap->childSetFocus("location", TRUE);
|
||||
gFloaterWorldMap->getChild<LLUICtrl>("location")->setFocus( TRUE);
|
||||
gFocusMgr.triggerFocusFlash();
|
||||
|
||||
gFloaterWorldMap->buildAvatarIDList();
|
||||
@@ -339,8 +395,6 @@ void LLFloaterWorldMap::show(bool center_on_target)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// static
|
||||
void LLFloaterWorldMap::reloadIcons(void*)
|
||||
{
|
||||
@@ -402,9 +456,9 @@ BOOL LLFloaterWorldMap::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
if(mPanel->pointInView(x, y))
|
||||
{
|
||||
F32 slider_value = (F32)childGetValue("zoom slider").asReal();
|
||||
F32 slider_value = (F32)getChild<LLUICtrl>("zoom slider")->getValue().asReal();
|
||||
slider_value += ((F32)clicks * -0.3333f);
|
||||
childSetValue("zoom slider", LLSD(slider_value));
|
||||
getChild<LLUICtrl>("zoom slider")->setValue(LLSD(slider_value));
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -417,12 +471,6 @@ BOOL LLFloaterWorldMap::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
||||
void LLFloaterWorldMap::reshape( S32 width, S32 height, BOOL called_from_parent )
|
||||
{
|
||||
LLFloater::reshape( width, height, called_from_parent );
|
||||
|
||||
// Might have changed size of world display area
|
||||
// JC: Technically, this is correct, but it makes the slider "pop"
|
||||
// if you resize the window, then draw the slider. Just leaving it
|
||||
// the way it was when you opened the window seems better.
|
||||
// adjustZoomSliderBounds();
|
||||
}
|
||||
|
||||
|
||||
@@ -436,32 +484,32 @@ void LLFloaterWorldMap::draw()
|
||||
LLViewerRegion* regionp = gAgent.getRegion();
|
||||
bool agent_on_prelude = (regionp && regionp->isPrelude());
|
||||
bool enable_go_home = gAgent.isGodlike() || !agent_on_prelude;
|
||||
childSetEnabled("Go Home", enable_go_home);
|
||||
getChildView("Go Home")->setEnabled(enable_go_home);
|
||||
|
||||
updateLocation();
|
||||
|
||||
LLTracker::ETrackingStatus tracking_status = LLTracker::getTrackingStatus();
|
||||
if (LLTracker::TRACKING_AVATAR == tracking_status)
|
||||
{
|
||||
childSetColor("avatar_icon", gTrackColor);
|
||||
getChild<LLUICtrl>("avatar_icon")->setColor( gTrackColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
childSetColor("avatar_icon", gDisabledTrackColor);
|
||||
getChild<LLUICtrl>("avatar_icon")->setColor( gDisabledTrackColor);
|
||||
}
|
||||
|
||||
if (LLTracker::TRACKING_LANDMARK == tracking_status)
|
||||
{
|
||||
childSetColor("landmark_icon", gTrackColor);
|
||||
getChild<LLUICtrl>("landmark_icon")->setColor( gTrackColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
childSetColor("landmark_icon", gDisabledTrackColor);
|
||||
getChild<LLUICtrl>("landmark_icon")->setColor( gDisabledTrackColor);
|
||||
}
|
||||
|
||||
if (LLTracker::TRACKING_LOCATION == tracking_status)
|
||||
{
|
||||
childSetColor("location_icon", gTrackColor);
|
||||
getChild<LLUICtrl>("location_icon")->setColor( gTrackColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -471,11 +519,11 @@ void LLFloaterWorldMap::draw()
|
||||
double value = fmod(seconds, 2);
|
||||
value = 0.5 + 0.5*cos(value * F_PI);
|
||||
LLColor4 loading_color(0.0, F32(value/2), F32(value), 1.0);
|
||||
childSetColor("location_icon", loading_color);
|
||||
getChild<LLUICtrl>("location_icon")->setColor( loading_color);
|
||||
}
|
||||
else
|
||||
{
|
||||
childSetColor("location_icon", gDisabledTrackColor);
|
||||
getChild<LLUICtrl>("location_icon")->setColor( gDisabledTrackColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -485,10 +533,10 @@ void LLFloaterWorldMap::draw()
|
||||
centerOnTarget(TRUE);
|
||||
}
|
||||
|
||||
childSetEnabled("Teleport", (BOOL)tracking_status);
|
||||
// childSetEnabled("Clear", (BOOL)tracking_status);
|
||||
childSetEnabled("Show Destination", (BOOL)tracking_status || LLWorldMap::getInstance()->isTracking());
|
||||
childSetEnabled("copy_slurl", (mSLURL.size() > 0) );
|
||||
getChildView("Teleport")->setEnabled((BOOL)tracking_status);
|
||||
// getChildView("Clear")->setEnabled((BOOL)tracking_status);
|
||||
getChildView("Show Destination")->setEnabled((BOOL)tracking_status || LLWorldMap::getInstance()->isTracking());
|
||||
getChildView("copy_slurl")->setEnabled((mSLURL.isValid()) );
|
||||
|
||||
setMouseOpaque(TRUE);
|
||||
getDragHandle()->setMouseOpaque(TRUE);
|
||||
@@ -508,8 +556,17 @@ void LLFloaterWorldMap::draw()
|
||||
F32 map_scale = 256.f*pow(2.f, mCurZoomVal);
|
||||
LLWorldMapView::setScale( map_scale );
|
||||
|
||||
onChangeMaturity();
|
||||
|
||||
// Enable/disable checkboxes depending on the zoom level
|
||||
// If above threshold level (i.e. low res) -> Disable all checkboxes
|
||||
// If under threshold level (i.e. high res) -> Enable all checkboxes
|
||||
bool enable = LLWorldMapView::showRegionInfo();
|
||||
getChildView("people_chk")->setEnabled(enable);
|
||||
getChildView("infohub_chk")->setEnabled(enable);
|
||||
getChildView("telehubchk")->setEnabled(enable);
|
||||
getChildView("land_for_sale_chk")->setEnabled(enable);
|
||||
getChildView("event_chk")->setEnabled(enable);
|
||||
getChildView("events_mature_chk")->setEnabled(enable);
|
||||
getChildView("events_adult_chk")->setEnabled(enable);
|
||||
|
||||
LLFloater::draw();
|
||||
}
|
||||
@@ -533,7 +590,7 @@ void LLFloaterWorldMap::trackAvatar( const LLUUID& avatar_id, const std::string&
|
||||
// convenience.
|
||||
if(gAgent.isGodlike())
|
||||
{
|
||||
childSetValue("spin z", LLSD(200.f));
|
||||
getChild<LLUICtrl>("spin z")->setValue(LLSD(200.f));
|
||||
}
|
||||
// Don't re-request info if we already have it or we won't have it in time to teleport
|
||||
if (mTrackedStatus != LLTracker::TRACKING_AVATAR || name != mTrackedAvatarName)
|
||||
@@ -646,17 +703,17 @@ void LLFloaterWorldMap::trackLocation(const LLVector3d& pos_global)
|
||||
F32 region_x = (F32)fmod( pos_global.mdV[VX], (F64)REGION_WIDTH_METERS );
|
||||
F32 region_y = (F32)fmod( pos_global.mdV[VY], (F64)REGION_WIDTH_METERS );
|
||||
std::string full_name = llformat("%s (%d, %d, %d)",
|
||||
// sim_name.c_str(),
|
||||
// [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-04 (RLVa-1.0.0a)
|
||||
(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) ? sim_name.c_str() : RlvStrings::getString(RLV_STRING_HIDDEN_REGION).c_str(),
|
||||
// [/RLVa:KB]
|
||||
sim_name.c_str(),
|
||||
llround(region_x),
|
||||
llround(region_y),
|
||||
llround((F32)pos_global.mdV[VZ]));
|
||||
|
||||
std::string tooltip("");
|
||||
mTrackedStatus = LLTracker::TRACKING_LOCATION;
|
||||
LLTracker::trackLocation(pos_global, full_name, tooltip);
|
||||
// [RLVa:KB] - Checked: 2012-02-08 (RLVa-1.4.5) | Added: RLVa-1.4.5
|
||||
LLTracker::trackLocation(pos_global, (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) ? full_name : RlvStrings::getString(RLV_STRING_HIDDEN).c_str(), tooltip);
|
||||
// [/RLVa:KB]
|
||||
// LLTracker::trackLocation(pos_global, full_name, tooltip);
|
||||
LLWorldMap::getInstance()->cancelTracking(); // The floater is taking over the tracking
|
||||
|
||||
LLVector3d coord_pos = LLTracker::getTrackedPositionGlobal();
|
||||
@@ -668,13 +725,28 @@ void LLFloaterWorldMap::trackLocation(const LLVector3d& pos_global)
|
||||
setDefaultBtn("Teleport");
|
||||
}
|
||||
|
||||
|
||||
// enable/disable teleport destination coordinates
|
||||
void LLFloaterWorldMap::enableTeleportCoordsDisplay( bool enabled )
|
||||
{
|
||||
childSetEnabled("spin x", enabled );
|
||||
childSetEnabled("spin y", enabled );
|
||||
childSetEnabled("spin z", enabled );
|
||||
// [RLVa:KB] - Checked: 2012-02-08 (RLVa-1.4.5) | Added: RLVa-1.4.5
|
||||
LLUICtrl* pCtrl = getChild<LLUICtrl>("events_label");
|
||||
pCtrl->setVisible(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC));
|
||||
|
||||
pCtrl = getChild<LLUICtrl>("spin x");
|
||||
pCtrl->setVisible(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC));
|
||||
pCtrl->setEnabled(enabled);
|
||||
|
||||
pCtrl = getChild<LLUICtrl>("spin y");
|
||||
pCtrl->setVisible(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC));
|
||||
pCtrl->setEnabled(enabled);
|
||||
|
||||
pCtrl = getChild<LLUICtrl>("spin z");
|
||||
pCtrl->setVisible(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC));
|
||||
pCtrl->setEnabled(enabled);
|
||||
// [/RLVa:KB]
|
||||
// childSetEnabled("spin x", enabled );
|
||||
// childSetEnabled("spin y", enabled );
|
||||
// childSetEnabled("spin z", enabled );
|
||||
}
|
||||
|
||||
// update display of teleport destination coordinates - pos is in global coordinates
|
||||
@@ -713,31 +785,34 @@ void LLFloaterWorldMap::updateLocation()
|
||||
// Make sure we know where we are before setting the current user position
|
||||
std::string agent_sim_name;
|
||||
gotSimName = LLWorldMap::getInstance()->simNameFromPosGlobal( agentPos, agent_sim_name );
|
||||
if ( gotSimName )
|
||||
// [RLVa:KB] - Checked: 2012-02-08 (RLVa-1.4.5) | Added: RLVa-1.4.5
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
|
||||
{
|
||||
mSetToUserPosition = FALSE;
|
||||
|
||||
// Fill out the location field
|
||||
childSetValue("location", agent_sim_name);
|
||||
getChild<LLUICtrl>("location")->setValue(RlvStrings::getString(RLV_STRING_HIDDEN_REGION));
|
||||
|
||||
// update the coordinate display with location of avatar in region
|
||||
updateTeleportCoordsDisplay( agentPos );
|
||||
|
||||
mSLURL = LLSLURL();
|
||||
}
|
||||
else if (gotSimName)
|
||||
// [/RLVa:KB]
|
||||
// if ( gotSimName )
|
||||
{
|
||||
mSetToUserPosition = FALSE;
|
||||
|
||||
// Fill out the location field
|
||||
getChild<LLUICtrl>("location")->setValue(agent_sim_name);
|
||||
|
||||
// update the coordinate display with location of avatar in region
|
||||
updateTeleportCoordsDisplay( agentPos );
|
||||
|
||||
S32 x = llround( (F32)fmod( (F32)agentPos[VX], (F32)REGION_WIDTH_METERS ) );
|
||||
S32 y = llround( (F32)fmod( (F32)agentPos[VY], (F32)REGION_WIDTH_METERS ) );
|
||||
S32 z = llround( (F32)agentPos[VZ] );
|
||||
|
||||
// Figure out where user is
|
||||
// Set the current SLURL
|
||||
mSLURL = LLSLURL(agent_sim_name, LLVector3(x, y, z)).getSLURLString();
|
||||
|
||||
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
|
||||
{
|
||||
childSetValue("location", RlvStrings::getString(RLV_STRING_HIDDEN_REGION));
|
||||
mSLURL.clear();
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
mSLURL = LLSLURL(agent_sim_name, gAgent.getPositionGlobal());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -763,32 +838,30 @@ void LLFloaterWorldMap::updateLocation()
|
||||
}
|
||||
}
|
||||
|
||||
childSetValue("location", sim_name);
|
||||
getChild<LLUICtrl>("location")->setValue(sim_name);
|
||||
|
||||
// refresh coordinate display to reflect where user clicked.
|
||||
LLVector3d coord_pos = LLTracker::getTrackedPositionGlobal();
|
||||
updateTeleportCoordsDisplay( coord_pos );
|
||||
|
||||
// simNameFromPosGlobal can fail, so don't give the user an invalid SLURL
|
||||
if ( gotSimName )
|
||||
// [RLVa:KB] - Checked: 2012-02-08 (RLVa-1.4.5) | Added: RLVa-1.4.5
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
|
||||
{
|
||||
S32 x = llround( (F32)fmod( (F32)coord_pos[VX], (F32)REGION_WIDTH_METERS ) );
|
||||
S32 y = llround( (F32)fmod( (F32)coord_pos[VY], (F32)REGION_WIDTH_METERS ) );
|
||||
S32 z = llround( (F32)coord_pos[VZ] );
|
||||
mSLURL = LLSLURL(sim_name, LLVector3(x, y, z)).getSLURLString();
|
||||
mSLURL = LLSLURL();
|
||||
|
||||
childSetValue("location", RlvStrings::getString(RLV_STRING_HIDDEN_REGION));
|
||||
}
|
||||
else if (gotSimName)
|
||||
// [/RLVa:KB]
|
||||
// if ( gotSimName )
|
||||
{
|
||||
mSLURL = LLSLURL(sim_name, pos_global);
|
||||
}
|
||||
else
|
||||
{ // Empty SLURL will disable the "Copy SLURL to clipboard" button
|
||||
mSLURL = "";
|
||||
mSLURL = LLSLURL();
|
||||
}
|
||||
|
||||
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
|
||||
{
|
||||
childSetValue("location", RlvStrings::getString(RLV_STRING_HIDDEN_REGION));
|
||||
mSLURL.clear();
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -809,7 +882,7 @@ void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S3
|
||||
else
|
||||
{
|
||||
// fill in UI based on URL
|
||||
gFloaterWorldMap->childSetValue("location", region_name);
|
||||
gFloaterWorldMap->getChild<LLUICtrl>("location")->setValue(region_name);
|
||||
|
||||
// Save local coords to highlight position after region global
|
||||
// position is returned.
|
||||
@@ -982,6 +1055,7 @@ void LLFloaterWorldMap::clearLocationSelection(BOOL clear_ui)
|
||||
{
|
||||
list->operateOnAll(LLCtrlListInterface::OP_DELETE);
|
||||
}
|
||||
const F32 SIM_COORD_DEFAULT = 128.f;
|
||||
if (!childHasKeyboardFocus("spin x"))
|
||||
{
|
||||
childSetValue("spin x", SIM_COORD_DEFAULT);
|
||||
@@ -1064,7 +1138,7 @@ void LLFloaterWorldMap::adjustZoomSliderBounds()
|
||||
|
||||
F32 min_power = log(pixels_per_region/256.f)/log(2.f);
|
||||
|
||||
childSetMinValue("zoom slider", min_power);
|
||||
getChild<LLSliderCtrl>("zoom slider")->setMinValue(min_power);
|
||||
}
|
||||
|
||||
|
||||
@@ -1114,7 +1188,7 @@ void LLFloaterWorldMap::onSearchTextEntry( )
|
||||
updateSearchEnabled();
|
||||
}
|
||||
|
||||
// static
|
||||
|
||||
void LLFloaterWorldMap::onLandmarkComboCommit()
|
||||
{
|
||||
if( mIsClosing )
|
||||
@@ -1212,6 +1286,13 @@ void LLFloaterWorldMap::onAvatarComboCommit()
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterWorldMap::avatarTrackFromSlapp( const LLUUID& id )
|
||||
{
|
||||
std::string name;
|
||||
trackAvatar( id, gCacheName->getFullName(id, name) ? name : "av" ); // Singu Note: Anything is better than "av"
|
||||
onShowTargetBtn();
|
||||
}
|
||||
|
||||
void LLFloaterWorldMap::onLocationFocusChanged( LLFocusableElement* focus )
|
||||
{
|
||||
updateSearchEnabled();
|
||||
@@ -1220,7 +1301,7 @@ void LLFloaterWorldMap::onLocationFocusChanged( LLFocusableElement* focus )
|
||||
void LLFloaterWorldMap::updateSearchEnabled()
|
||||
{
|
||||
if (childHasKeyboardFocus("location") &&
|
||||
childGetValue("location").asString().length() > 0)
|
||||
getChild<LLUICtrl>("location")->getValue().asString().length() > 0)
|
||||
{
|
||||
setDefaultBtn("DoSearch");
|
||||
}
|
||||
@@ -1241,14 +1322,14 @@ void LLFloaterWorldMap::onLocationCommit()
|
||||
mCompletingRegionName = "";
|
||||
mLastRegionName = "";
|
||||
|
||||
std::string str = childGetValue("location").asString();
|
||||
std::string str = getChild<LLUICtrl>("location")->getValue().asString();
|
||||
|
||||
// Trim any leading and trailing spaces in the search target
|
||||
std::string saved_str = str;
|
||||
LLStringUtil::trim( str );
|
||||
if ( str != saved_str )
|
||||
{ // Set the value in the UI if any spaces were removed
|
||||
childSetValue("location", str);
|
||||
getChild<LLUICtrl>("location")->setValue(str);
|
||||
}
|
||||
|
||||
// Don't try completing empty name (STORM-1427).
|
||||
@@ -1292,7 +1373,7 @@ void LLFloaterWorldMap::onClearBtn()
|
||||
mTrackedStatus = LLTracker::TRACKING_NOTHING;
|
||||
LLTracker::stopTracking(true);
|
||||
LLWorldMap::getInstance()->cancelTracking();
|
||||
mSLURL = ""; // Clear the SLURL since it's invalid
|
||||
mSLURL = LLSLURL(); // Clear the SLURL since it's invalid
|
||||
mSetToUserPosition = TRUE; // Revert back to the current user position
|
||||
}
|
||||
|
||||
@@ -1315,10 +1396,10 @@ void LLFloaterWorldMap::onClickTeleportBtn()
|
||||
|
||||
void LLFloaterWorldMap::onCopySLURL()
|
||||
{
|
||||
getWindow()->copyTextToClipboard(utf8str_to_wstring(mSLURL));
|
||||
getWindow()->copyTextToClipboard(utf8str_to_wstring(mSLURL.getSLURLString()));
|
||||
|
||||
LLSD args;
|
||||
args["SLURL"] = mSLURL;
|
||||
args["SLURL"] = mSLURL.getSLURLString();
|
||||
|
||||
LLNotificationsUtil::add("CopySLURL", args);
|
||||
}
|
||||
@@ -1394,7 +1475,7 @@ void LLFloaterWorldMap::teleport()
|
||||
&& av_tracker.haveTrackingInfo() )
|
||||
{
|
||||
pos_global = av_tracker.getGlobalPos();
|
||||
pos_global.mdV[VZ] = childGetValue("spin z");
|
||||
pos_global.mdV[VZ] = getChild<LLUICtrl>("spin z")->getValue();
|
||||
}
|
||||
else if ( LLTracker::TRACKING_LANDMARK == tracking_status)
|
||||
{
|
||||
@@ -1574,7 +1655,7 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim)
|
||||
{
|
||||
list->selectFirstItem();
|
||||
}
|
||||
childSetFocus("search_results");
|
||||
getChild<LLUICtrl>("search_results")->setFocus(TRUE);
|
||||
onCommitSearchResult();
|
||||
}
|
||||
else
|
||||
@@ -1621,7 +1702,7 @@ void LLFloaterWorldMap::onCommitSearchResult()
|
||||
pos_global.mdV[VY] += (F64)pos_local.mV[VY];
|
||||
pos_global.mdV[VZ] = (F64)pos_local.mV[VZ];
|
||||
|
||||
childSetValue("location", sim_name);
|
||||
getChild<LLUICtrl>("location")->setValue(sim_name);
|
||||
trackLocation(pos_global);
|
||||
setDefaultBtn("Teleport");
|
||||
break;
|
||||
@@ -1636,11 +1717,13 @@ void LLFloaterWorldMap::onChangeMaturity()
|
||||
bool can_access_mature = gAgent.canAccessMature();
|
||||
bool can_access_adult = gAgent.canAccessAdult();
|
||||
|
||||
childSetVisible("events_mature_icon", can_access_mature);
|
||||
childSetVisible("event_mature_chk", can_access_mature);
|
||||
getChildView("events_mature_icon")->setVisible( can_access_mature);
|
||||
getChildView("event_mature_label")->setVisible( can_access_mature);
|
||||
getChildView("event_mature_chk")->setVisible( can_access_mature);
|
||||
|
||||
childSetVisible("events_adult_icon", can_access_adult);
|
||||
childSetVisible("event_adult_chk", can_access_adult);
|
||||
getChildView("events_adult_icon")->setVisible( can_access_adult);
|
||||
getChildView("event_adult_label")->setVisible( can_access_adult);
|
||||
getChildView("event_adult_chk")->setVisible( can_access_adult);
|
||||
|
||||
// disable mature / adult events.
|
||||
if (!can_access_mature)
|
||||
|
||||
Reference in New Issue
Block a user