summaryrefslogtreecommitdiff
path: root/indra/newview/llfloatermap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloatermap.cpp')
-rw-r--r--indra/newview/llfloatermap.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index d53929272c..242f5b7991 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -197,3 +197,47 @@ void LLFloaterMap::toggle(void*)
}
}
}
+
+
+BOOL process_secondlife_url(LLString url)
+{
+ S32 strpos, strpos2;
+
+ LLString slurlID = "slurl.com/secondlife/";
+ strpos = url.find(slurlID);
+
+ if (strpos < 0)
+ {
+ slurlID="secondlife://";
+ strpos = url.find(slurlID);
+ }
+
+ if (strpos >= 0)
+ {
+ LLString simname;
+
+ strpos+=slurlID.length();
+ strpos2=url.find("/",strpos);
+ if (strpos2 < strpos) strpos2=url.length();
+ simname="secondlife://" + url.substr(strpos,url.length() - strpos);
+
+ LLURLSimString::setString( simname );
+ LLURLSimString::parse();
+
+ // if there is a world map
+ if ( gFloaterWorldMap )
+ {
+ // mark where the destination is
+ gFloaterWorldMap->trackURL( LLURLSimString::sInstance.mSimName.c_str(),
+ LLURLSimString::sInstance.mX,
+ LLURLSimString::sInstance.mY,
+ LLURLSimString::sInstance.mZ );
+
+ // display map
+ LLFloaterWorldMap::show( NULL, TRUE );
+ };
+
+ return TRUE;
+ }
+ return FALSE;
+}