summaryrefslogtreecommitdiff
path: root/indra/llui/llurlentry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/llurlentry.cpp')
-rw-r--r--indra/llui/llurlentry.cpp1744
1 files changed, 872 insertions, 872 deletions
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 05d821f5d8..45afc9efee 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -1,4 +1,4 @@
-/**
+/**
* @file llurlentry.cpp
* @author Martin Reddy
* @brief Describes the Url types that can be registered in LLUrlRegistry
@@ -6,21 +6,21 @@
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
- *
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
+ *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
@@ -59,135 +59,135 @@ LLUrlEntryBase::~LLUrlEntryBase()
std::string LLUrlEntryBase::getUrl(const std::string &string) const
{
- return escapeUrl(string);
+ return escapeUrl(string);
}
//virtual
std::string LLUrlEntryBase::getIcon(const std::string &url)
{
- return mIcon;
+ return mIcon;
}
LLStyle::Params LLUrlEntryBase::getStyle() const
{
- LLStyle::Params style_params;
- style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
- style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
- style_params.font.style = "UNDERLINE";
- return style_params;
+ LLStyle::Params style_params;
+ style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+ style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+ style_params.font.style = "UNDERLINE";
+ return style_params;
}
std::string LLUrlEntryBase::getIDStringFromUrl(const std::string &url) const
{
- // return the id from a SLURL in the format /app/{cmd}/{id}/about
- LLURI uri(url);
- LLSD path_array = uri.pathArray();
- if (path_array.size() == 4)
- {
- return path_array.get(2).asString();
- }
- return "";
+ // return the id from a SLURL in the format /app/{cmd}/{id}/about
+ LLURI uri(url);
+ LLSD path_array = uri.pathArray();
+ if (path_array.size() == 4)
+ {
+ return path_array.get(2).asString();
+ }
+ return "";
}
std::string LLUrlEntryBase::unescapeUrl(const std::string &url) const
{
- return LLURI::unescape(url);
+ return LLURI::unescape(url);
}
std::string LLUrlEntryBase::escapeUrl(const std::string &url) const
{
- static std::string no_escape_chars;
- static bool initialized = false;
- if (!initialized)
- {
- no_escape_chars =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "abcdefghijklmnopqrstuvwxyz"
- "0123456789"
- "-._~!$?&()*+,@:;=/%#";
-
- std::sort(no_escape_chars.begin(), no_escape_chars.end());
- initialized = true;
- }
- return LLURI::escape(url, no_escape_chars, true);
+ static std::string no_escape_chars;
+ static bool initialized = false;
+ if (!initialized)
+ {
+ no_escape_chars =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789"
+ "-._~!$?&()*+,@:;=/%#";
+
+ std::sort(no_escape_chars.begin(), no_escape_chars.end());
+ initialized = true;
+ }
+ return LLURI::escape(url, no_escape_chars, true);
}
std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url) const
{
- // return the label part from [http://www.example.org Label]
- const char *text = url.c_str();
- S32 start = 0;
- while (! isspace(text[start]))
- {
- start++;
- }
- while (text[start] == ' ' || text[start] == '\t')
- {
- start++;
- }
- return unescapeUrl(url.substr(start, url.size()-start-1));
+ // return the label part from [http://www.example.org Label]
+ const char *text = url.c_str();
+ S32 start = 0;
+ while (! isspace(text[start]))
+ {
+ start++;
+ }
+ while (text[start] == ' ' || text[start] == '\t')
+ {
+ start++;
+ }
+ return unescapeUrl(url.substr(start, url.size()-start-1));
}
std::string LLUrlEntryBase::getUrlFromWikiLink(const std::string &string) const
{
- // return the url part from [http://www.example.org Label]
- const char *text = string.c_str();
- S32 end = 0;
- while (! isspace(text[end]))
- {
- end++;
- }
- return escapeUrl(string.substr(1, end-1));
+ // return the url part from [http://www.example.org Label]
+ const char *text = string.c_str();
+ S32 end = 0;
+ while (! isspace(text[end]))
+ {
+ end++;
+ }
+ return escapeUrl(string.substr(1, end-1));
}
void LLUrlEntryBase::addObserver(const std::string &id,
- const std::string &url,
- const LLUrlLabelCallback &cb)
-{
- // add a callback to be notified when we have a label for the uuid
- LLUrlEntryObserver observer;
- observer.url = url;
- observer.signal = new LLUrlLabelSignal();
- if (observer.signal)
- {
- observer.signal->connect(cb);
- mObservers.insert(std::pair<std::string, LLUrlEntryObserver>(id, observer));
- }
+ const std::string &url,
+ const LLUrlLabelCallback &cb)
+{
+ // add a callback to be notified when we have a label for the uuid
+ LLUrlEntryObserver observer;
+ observer.url = url;
+ observer.signal = new LLUrlLabelSignal();
+ if (observer.signal)
+ {
+ observer.signal->connect(cb);
+ mObservers.insert(std::pair<std::string, LLUrlEntryObserver>(id, observer));
+ }
}
// *NOTE: See also LLUrlEntryAgent::callObservers()
void LLUrlEntryBase::callObservers(const std::string &id,
- const std::string &label,
- const std::string &icon)
-{
- // notify all callbacks waiting on the given uuid
- typedef std::multimap<std::string, LLUrlEntryObserver>::iterator observer_it;
- std::pair<observer_it, observer_it> matching_range = mObservers.equal_range(id);
- for (observer_it it = matching_range.first; it != matching_range.second;)
- {
- // call the callback - give it the new label
- LLUrlEntryObserver &observer = it->second;
- (*observer.signal)(it->second.url, label, icon);
- // then remove the signal - we only need to call it once
- delete observer.signal;
- mObservers.erase(it++);
- }
+ const std::string &label,
+ const std::string &icon)
+{
+ // notify all callbacks waiting on the given uuid
+ typedef std::multimap<std::string, LLUrlEntryObserver>::iterator observer_it;
+ std::pair<observer_it, observer_it> matching_range = mObservers.equal_range(id);
+ for (observer_it it = matching_range.first; it != matching_range.second;)
+ {
+ // call the callback - give it the new label
+ LLUrlEntryObserver &observer = it->second;
+ (*observer.signal)(it->second.url, label, icon);
+ // then remove the signal - we only need to call it once
+ delete observer.signal;
+ mObservers.erase(it++);
+ }
}
/// is this a match for a URL that should not be hyperlinked?
bool LLUrlEntryBase::isLinkDisabled() const
{
- // this allows us to have a global setting to turn off text hyperlink highlighting/action
- static LLCachedControl<bool> globally_disabled(*LLUI::getInstance()->mSettingGroups["config"], "DisableTextHyperlinkActions", false);
+ // this allows us to have a global setting to turn off text hyperlink highlighting/action
+ static LLCachedControl<bool> globally_disabled(*LLUI::getInstance()->mSettingGroups["config"], "DisableTextHyperlinkActions", false);
- return globally_disabled;
+ return globally_disabled;
}
bool LLUrlEntryBase::isWikiLinkCorrect(const std::string &labeled_url) const
{
- LLWString wlabel = utf8str_to_wstring(getLabelFromWikiLink(labeled_url));
- wlabel.erase(std::remove(wlabel.begin(), wlabel.end(), L'\u200B'), wlabel.end());
+ LLWString wlabel = utf8str_to_wstring(getLabelFromWikiLink(labeled_url));
+ wlabel.erase(std::remove(wlabel.begin(), wlabel.end(), L'\u200B'), wlabel.end());
// Unicode URL validation, see SL-15243
std::replace_if(wlabel.begin(),
@@ -229,7 +229,7 @@ bool LLUrlEntryBase::isWikiLinkCorrect(const std::string &labeled_url) const
label = "http://" + label;
}
- return (LLUrlRegistry::instance().hasUrl(label)) ? false : true;
+ return (LLUrlRegistry::instance().hasUrl(label)) ? false : true;
}
std::string LLUrlEntryBase::urlToLabelWithGreyQuery(const std::string &url) const
@@ -238,8 +238,8 @@ std::string LLUrlEntryBase::urlToLabelWithGreyQuery(const std::string &url) cons
{
return url;
}
- LLUriParser up(escapeUrl(url));
- if (up.normalize() == 0)
+ LLUriParser up(escapeUrl(url));
+ if (up.normalize() == 0)
{
std::string label;
up.extractParts();
@@ -252,69 +252,69 @@ std::string LLUrlEntryBase::urlToLabelWithGreyQuery(const std::string &url) cons
std::string LLUrlEntryBase::urlToGreyQuery(const std::string &url) const
{
- std::string escaped_url = escapeUrl(url);
- LLUriParser up(escaped_url);
+ std::string escaped_url = escapeUrl(url);
+ LLUriParser up(escaped_url);
- std::string label;
- up.extractParts();
- up.glueFirst(label, false);
+ std::string label;
+ up.extractParts();
+ up.glueFirst(label, false);
- size_t pos = escaped_url.find(label);
- if (pos == std::string::npos)
- {
- return "";
- }
- pos += label.size();
- return unescapeUrl(escaped_url.substr(pos));
+ size_t pos = escaped_url.find(label);
+ if (pos == std::string::npos)
+ {
+ return "";
+ }
+ pos += label.size();
+ return unescapeUrl(escaped_url.substr(pos));
}
static std::string getStringAfterToken(const std::string str, const std::string token)
{
- size_t pos = str.find(token);
- if (pos == std::string::npos)
- {
- return "";
- }
+ size_t pos = str.find(token);
+ if (pos == std::string::npos)
+ {
+ return "";
+ }
- pos += token.size();
- return str.substr(pos, str.size() - pos);
+ pos += token.size();
+ return str.substr(pos, str.size() - pos);
}
//
// LLUrlEntryHTTP Describes generic http: and https: Urls
//
LLUrlEntryHTTP::LLUrlEntryHTTP()
- : LLUrlEntryBase()
+ : LLUrlEntryBase()
{
- mPattern = boost::regex("https?://([^\\s/?\\.#]+\\.?)+\\.\\w+(:\\d+)?(/\\S*)?",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_http.xml";
- mTooltip = LLTrans::getString("TooltipHttpUrl");
+ mPattern = boost::regex("https?://([^\\s/?\\.#]+\\.?)+\\.\\w+(:\\d+)?(/\\S*)?",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_http.xml";
+ mTooltip = LLTrans::getString("TooltipHttpUrl");
}
std::string LLUrlEntryHTTP::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- return urlToLabelWithGreyQuery(url);
+ return urlToLabelWithGreyQuery(url);
}
std::string LLUrlEntryHTTP::getQuery(const std::string &url) const
{
- return urlToGreyQuery(url);
+ return urlToGreyQuery(url);
}
std::string LLUrlEntryHTTP::getUrl(const std::string &string) const
{
- if (string.find("://") == std::string::npos)
- {
- return "http://" + escapeUrl(string);
- }
- return escapeUrl(string);
+ if (string.find("://") == std::string::npos)
+ {
+ return "http://" + escapeUrl(string);
+ }
+ return escapeUrl(string);
}
std::string LLUrlEntryHTTP::getTooltip(const std::string &url) const
{
- return unescapeUrl(url);
+ return unescapeUrl(url);
}
//
@@ -323,110 +323,110 @@ std::string LLUrlEntryHTTP::getTooltip(const std::string &url) const
//
LLUrlEntryHTTPLabel::LLUrlEntryHTTPLabel()
{
- mPattern = boost::regex("\\[https?://\\S+[ \t]+[^\\]]+\\]",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_http.xml";
- mTooltip = LLTrans::getString("TooltipHttpUrl");
+ mPattern = boost::regex("\\[https?://\\S+[ \t]+[^\\]]+\\]",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_http.xml";
+ mTooltip = LLTrans::getString("TooltipHttpUrl");
}
std::string LLUrlEntryHTTPLabel::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- std::string label = getLabelFromWikiLink(url);
- return (!LLUrlRegistry::instance().hasUrl(label)) ? label : getUrl(url);
+ std::string label = getLabelFromWikiLink(url);
+ return (!LLUrlRegistry::instance().hasUrl(label)) ? label : getUrl(url);
}
std::string LLUrlEntryHTTPLabel::getTooltip(const std::string &string) const
{
- return getUrl(string);
+ return getUrl(string);
}
std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string) const
{
- return getUrlFromWikiLink(string);
+ return getUrlFromWikiLink(string);
}
LLUrlEntryInvalidSLURL::LLUrlEntryInvalidSLURL()
- : LLUrlEntryBase()
+ : LLUrlEntryBase()
{
- mPattern = boost::regex("(https?://(maps.secondlife.com|slurl.com)/secondlife/|secondlife://(/app/(worldmap|teleport)/)?)[^ /]+(/-?[0-9]+){1,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_http.xml";
- mTooltip = LLTrans::getString("TooltipHttpUrl");
+ mPattern = boost::regex("(https?://(maps.secondlife.com|slurl.com)/secondlife/|secondlife://(/app/(worldmap|teleport)/)?)[^ /]+(/-?[0-9]+){1,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_http.xml";
+ mTooltip = LLTrans::getString("TooltipHttpUrl");
}
std::string LLUrlEntryInvalidSLURL::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- return escapeUrl(url);
+ return escapeUrl(url);
}
std::string LLUrlEntryInvalidSLURL::getUrl(const std::string &string) const
{
- return escapeUrl(string);
+ return escapeUrl(string);
}
std::string LLUrlEntryInvalidSLURL::getTooltip(const std::string &url) const
{
- return unescapeUrl(url);
+ return unescapeUrl(url);
}
bool LLUrlEntryInvalidSLURL::isSLURLvalid(const std::string &url) const
{
- S32 actual_parts;
-
- if(url.find(".com/secondlife/") != std::string::npos)
- {
- actual_parts = 5;
- }
- else if(url.find("/app/") != std::string::npos)
- {
- actual_parts = 6;
- }
- else
- {
- actual_parts = 3;
- }
-
- LLURI uri(url);
- LLSD path_array = uri.pathArray();
- S32 path_parts = path_array.size();
- S32 x,y,z;
-
- if (path_parts == actual_parts)
- {
- // handle slurl with (X,Y,Z) coordinates
- LLStringUtil::convertToS32(path_array[path_parts-3],x);
- LLStringUtil::convertToS32(path_array[path_parts-2],y);
- LLStringUtil::convertToS32(path_array[path_parts-1],z);
-
- if((x>= 0 && x<= 256) && (y>= 0 && y<= 256) && (z>= 0))
- {
- return TRUE;
- }
- }
- else if (path_parts == (actual_parts-1))
- {
- // handle slurl with (X,Y) coordinates
-
- LLStringUtil::convertToS32(path_array[path_parts-2],x);
- LLStringUtil::convertToS32(path_array[path_parts-1],y);
- ;
- if((x>= 0 && x<= 256) && (y>= 0 && y<= 256))
- {
- return TRUE;
- }
- }
- else if (path_parts == (actual_parts-2))
- {
- // handle slurl with (X) coordinate
- LLStringUtil::convertToS32(path_array[path_parts-1],x);
- if(x>= 0 && x<= 256)
- {
- return TRUE;
- }
- }
-
- return FALSE;
+ S32 actual_parts;
+
+ if(url.find(".com/secondlife/") != std::string::npos)
+ {
+ actual_parts = 5;
+ }
+ else if(url.find("/app/") != std::string::npos)
+ {
+ actual_parts = 6;
+ }
+ else
+ {
+ actual_parts = 3;
+ }
+
+ LLURI uri(url);
+ LLSD path_array = uri.pathArray();
+ S32 path_parts = path_array.size();
+ S32 x,y,z;
+
+ if (path_parts == actual_parts)
+ {
+ // handle slurl with (X,Y,Z) coordinates
+ LLStringUtil::convertToS32(path_array[path_parts-3],x);
+ LLStringUtil::convertToS32(path_array[path_parts-2],y);
+ LLStringUtil::convertToS32(path_array[path_parts-1],z);
+
+ if((x>= 0 && x<= 256) && (y>= 0 && y<= 256) && (z>= 0))
+ {
+ return TRUE;
+ }
+ }
+ else if (path_parts == (actual_parts-1))
+ {
+ // handle slurl with (X,Y) coordinates
+
+ LLStringUtil::convertToS32(path_array[path_parts-2],x);
+ LLStringUtil::convertToS32(path_array[path_parts-1],y);
+ ;
+ if((x>= 0 && x<= 256) && (y>= 0 && y<= 256))
+ {
+ return TRUE;
+ }
+ }
+ else if (path_parts == (actual_parts-2))
+ {
+ // handle slurl with (X) coordinate
+ LLStringUtil::convertToS32(path_array[path_parts-1],x);
+ if(x>= 0 && x<= 256)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
}
//
@@ -434,120 +434,120 @@ bool LLUrlEntryInvalidSLURL::isSLURLvalid(const std::string &url) const
//
LLUrlEntrySLURL::LLUrlEntrySLURL()
{
- // see http://slurl.com/about.php for details on the SLURL format
- mPattern = boost::regex("https?://(maps.secondlife.com|slurl.com)/secondlife/[^ /]+(/\\d+){0,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?",
- boost::regex::perl|boost::regex::icase);
- mIcon = "Hand";
- mMenuName = "menu_url_slurl.xml";
- mTooltip = LLTrans::getString("TooltipSLURL");
+ // see http://slurl.com/about.php for details on the SLURL format
+ mPattern = boost::regex("https?://(maps.secondlife.com|slurl.com)/secondlife/[^ /]+(/\\d+){0,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?",
+ boost::regex::perl|boost::regex::icase);
+ mIcon = "Hand";
+ mMenuName = "menu_url_slurl.xml";
+ mTooltip = LLTrans::getString("TooltipSLURL");
}
std::string LLUrlEntrySLURL::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- //
- // we handle SLURLs in the following formats:
- // - http://slurl.com/secondlife/Place/X/Y/Z
- // - http://slurl.com/secondlife/Place/X/Y
- // - http://slurl.com/secondlife/Place/X
- // - http://slurl.com/secondlife/Place
- //
-
- LLURI uri(url);
- LLSD path_array = uri.pathArray();
- S32 path_parts = path_array.size();
- if (path_parts == 5)
- {
- // handle slurl with (X,Y,Z) coordinates
- std::string location = unescapeUrl(path_array[path_parts-4]);
- std::string x = path_array[path_parts-3];
- std::string y = path_array[path_parts-2];
- std::string z = path_array[path_parts-1];
- return location + " (" + x + "," + y + "," + z + ")";
- }
- else if (path_parts == 4)
- {
- // handle slurl with (X,Y) coordinates
- std::string location = unescapeUrl(path_array[path_parts-3]);
- std::string x = path_array[path_parts-2];
- std::string y = path_array[path_parts-1];
- return location + " (" + x + "," + y + ")";
- }
- else if (path_parts == 3)
- {
- // handle slurl with (X) coordinate
- std::string location = unescapeUrl(path_array[path_parts-2]);
- std::string x = path_array[path_parts-1];
- return location + " (" + x + ")";
- }
- else if (path_parts == 2)
- {
- // handle slurl with no coordinates
- std::string location = unescapeUrl(path_array[path_parts-1]);
- return location;
- }
-
- return url;
+ //
+ // we handle SLURLs in the following formats:
+ // - http://slurl.com/secondlife/Place/X/Y/Z
+ // - http://slurl.com/secondlife/Place/X/Y
+ // - http://slurl.com/secondlife/Place/X
+ // - http://slurl.com/secondlife/Place
+ //
+
+ LLURI uri(url);
+ LLSD path_array = uri.pathArray();
+ S32 path_parts = path_array.size();
+ if (path_parts == 5)
+ {
+ // handle slurl with (X,Y,Z) coordinates
+ std::string location = unescapeUrl(path_array[path_parts-4]);
+ std::string x = path_array[path_parts-3];
+ std::string y = path_array[path_parts-2];
+ std::string z = path_array[path_parts-1];
+ return location + " (" + x + "," + y + "," + z + ")";
+ }
+ else if (path_parts == 4)
+ {
+ // handle slurl with (X,Y) coordinates
+ std::string location = unescapeUrl(path_array[path_parts-3]);
+ std::string x = path_array[path_parts-2];
+ std::string y = path_array[path_parts-1];
+ return location + " (" + x + "," + y + ")";
+ }
+ else if (path_parts == 3)
+ {
+ // handle slurl with (X) coordinate
+ std::string location = unescapeUrl(path_array[path_parts-2]);
+ std::string x = path_array[path_parts-1];
+ return location + " (" + x + ")";
+ }
+ else if (path_parts == 2)
+ {
+ // handle slurl with no coordinates
+ std::string location = unescapeUrl(path_array[path_parts-1]);
+ return location;
+ }
+
+ return url;
}
std::string LLUrlEntrySLURL::getLocation(const std::string &url) const
{
- // return the part of the Url after slurl.com/secondlife/
- const std::string search_string = "/secondlife";
- size_t pos = url.find(search_string);
- if (pos == std::string::npos)
- {
- return "";
- }
+ // return the part of the Url after slurl.com/secondlife/
+ const std::string search_string = "/secondlife";
+ size_t pos = url.find(search_string);
+ if (pos == std::string::npos)
+ {
+ return "";
+ }
- pos += search_string.size() + 1;
- return url.substr(pos, url.size() - pos);
+ pos += search_string.size() + 1;
+ return url.substr(pos, url.size() - pos);
}
//
// LLUrlEntrySeconlifeURL Describes *secondlife.com/ *lindenlab.com/ *secondlifegrid.net/ and *tilia-inc.com/ urls to substitute icon 'hand.png' before link
//
LLUrlEntrySecondlifeURL::LLUrlEntrySecondlifeURL()
-{
- mPattern = boost::regex("((http://([-\\w\\.]*\\.)?(secondlife|lindenlab|tilia-inc)\\.com)"
- "|"
- "(http://([-\\w\\.]*\\.)?secondlifegrid\\.net)"
- "|"
- "(https://([-\\w\\.]*\\.)?(secondlife|lindenlab|tilia-inc)\\.com(:\\d{1,5})?)"
- "|"
- "(https://([-\\w\\.]*\\.)?secondlifegrid\\.net(:\\d{1,5})?)"
- "|"
- "(https?://([-\\w\\.]*\\.)?secondlife\\.io(:\\d{1,5})?))"
- "\\/\\S*",
- boost::regex::perl|boost::regex::icase);
-
- mIcon = "Hand";
- mMenuName = "menu_url_http.xml";
- mTooltip = LLTrans::getString("TooltipHttpUrl");
+{
+ mPattern = boost::regex("((http://([-\\w\\.]*\\.)?(secondlife|lindenlab|tilia-inc)\\.com)"
+ "|"
+ "(http://([-\\w\\.]*\\.)?secondlifegrid\\.net)"
+ "|"
+ "(https://([-\\w\\.]*\\.)?(secondlife|lindenlab|tilia-inc)\\.com(:\\d{1,5})?)"
+ "|"
+ "(https://([-\\w\\.]*\\.)?secondlifegrid\\.net(:\\d{1,5})?)"
+ "|"
+ "(https?://([-\\w\\.]*\\.)?secondlife\\.io(:\\d{1,5})?))"
+ "\\/\\S*",
+ boost::regex::perl|boost::regex::icase);
+
+ mIcon = "Hand";
+ mMenuName = "menu_url_http.xml";
+ mTooltip = LLTrans::getString("TooltipHttpUrl");
}
/// Return the url from a string that matched the regex
std::string LLUrlEntrySecondlifeURL::getUrl(const std::string &string) const
{
- if (string.find("://") == std::string::npos)
- {
- return "https://" + escapeUrl(string);
- }
- return escapeUrl(string);
+ if (string.find("://") == std::string::npos)
+ {
+ return "https://" + escapeUrl(string);
+ }
+ return escapeUrl(string);
}
std::string LLUrlEntrySecondlifeURL::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- return urlToLabelWithGreyQuery(url);
+ return urlToLabelWithGreyQuery(url);
}
std::string LLUrlEntrySecondlifeURL::getQuery(const std::string &url) const
{
- return urlToGreyQuery(url);
+ return urlToGreyQuery(url);
}
std::string LLUrlEntrySecondlifeURL::getTooltip(const std::string &url) const
{
- return url;
+ return url;
}
//
@@ -555,13 +555,13 @@ std::string LLUrlEntrySecondlifeURL::getTooltip(const std::string &url) const
//
LLUrlEntrySimpleSecondlifeURL::LLUrlEntrySimpleSecondlifeURL()
{
- mPattern = boost::regex("https?://([-\\w\\.]*\\.)?(secondlife|lindenlab|tilia-inc)\\.com(?!\\S)"
- "|"
- "https?://([-\\w\\.]*\\.)?secondlifegrid\\.net(?!\\S)",
- boost::regex::perl|boost::regex::icase);
+ mPattern = boost::regex("https?://([-\\w\\.]*\\.)?(secondlife|lindenlab|tilia-inc)\\.com(?!\\S)"
+ "|"
+ "https?://([-\\w\\.]*\\.)?secondlifegrid\\.net(?!\\S)",
+ boost::regex::perl|boost::regex::icase);
- mIcon = "Hand";
- mMenuName = "menu_url_http.xml";
+ mIcon = "Hand";
+ mMenuName = "menu_url_http.xml";
}
//
@@ -571,194 +571,194 @@ LLUrlEntrySimpleSecondlifeURL::LLUrlEntrySimpleSecondlifeURL()
//
LLUrlEntryAgent::LLUrlEntryAgent()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/\\w+",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_agent.xml";
- mIcon = "Generic_Person";
+ mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/\\w+",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_agent.xml";
+ mIcon = "Generic_Person";
}
// virtual
void LLUrlEntryAgent::callObservers(const std::string &id,
- const std::string &label,
- const std::string &icon)
-{
- // notify all callbacks waiting on the given uuid
- typedef std::multimap<std::string, LLUrlEntryObserver>::iterator observer_it;
- std::pair<observer_it, observer_it> matching_range = mObservers.equal_range(id);
- for (observer_it it = matching_range.first; it != matching_range.second;)
- {
- // call the callback - give it the new label
- LLUrlEntryObserver &observer = it->second;
- std::string final_label = localize_slapp_label(observer.url, label);
- (*observer.signal)(observer.url, final_label, icon);
- // then remove the signal - we only need to call it once
- delete observer.signal;
- mObservers.erase(it++);
- }
+ const std::string &label,
+ const std::string &icon)
+{
+ // notify all callbacks waiting on the given uuid
+ typedef std::multimap<std::string, LLUrlEntryObserver>::iterator observer_it;
+ std::pair<observer_it, observer_it> matching_range = mObservers.equal_range(id);
+ for (observer_it it = matching_range.first; it != matching_range.second;)
+ {
+ // call the callback - give it the new label
+ LLUrlEntryObserver &observer = it->second;
+ std::string final_label = localize_slapp_label(observer.url, label);
+ (*observer.signal)(observer.url, final_label, icon);
+ // then remove the signal - we only need to call it once
+ delete observer.signal;
+ mObservers.erase(it++);
+ }
}
void LLUrlEntryAgent::onAvatarNameCache(const LLUUID& id,
- const LLAvatarName& av_name)
+ const LLAvatarName& av_name)
{
- avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(id);
- if (it != mAvatarNameCacheConnections.end())
- {
- if (it->second.connected())
- {
- it->second.disconnect();
- }
- mAvatarNameCacheConnections.erase(it);
- }
-
- std::string label = av_name.getCompleteName();
+ avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(id);
+ if (it != mAvatarNameCacheConnections.end())
+ {
+ if (it->second.connected())
+ {
+ it->second.disconnect();
+ }
+ mAvatarNameCacheConnections.erase(it);
+ }
- // received the agent name from the server - tell our observers
- callObservers(id.asString(), label, mIcon);
+ std::string label = av_name.getCompleteName();
+
+ // received the agent name from the server - tell our observers
+ callObservers(id.asString(), label, mIcon);
}
-LLUUID LLUrlEntryAgent::getID(const std::string &string) const
+LLUUID LLUrlEntryAgent::getID(const std::string &string) const
{
- return LLUUID(getIDStringFromUrl(string));
+ return LLUUID(getIDStringFromUrl(string));
}
std::string LLUrlEntryAgent::getTooltip(const std::string &string) const
{
- // return a tooltip corresponding to the URL type instead of the generic one
- std::string url = getUrl(string);
-
- if (LLStringUtil::endsWith(url, "/inspect"))
- {
- return LLTrans::getString("TooltipAgentInspect");
- }
- if (LLStringUtil::endsWith(url, "/mute"))
- {
- return LLTrans::getString("TooltipAgentMute");
- }
- if (LLStringUtil::endsWith(url, "/unmute"))
- {
- return LLTrans::getString("TooltipAgentUnmute");
- }
- if (LLStringUtil::endsWith(url, "/im"))
- {
- return LLTrans::getString("TooltipAgentIM");
- }
- if (LLStringUtil::endsWith(url, "/pay"))
- {
- return LLTrans::getString("TooltipAgentPay");
- }
- if (LLStringUtil::endsWith(url, "/offerteleport"))
- {
- return LLTrans::getString("TooltipAgentOfferTeleport");
- }
- if (LLStringUtil::endsWith(url, "/requestfriend"))
- {
- return LLTrans::getString("TooltipAgentRequestFriend");
- }
- return LLTrans::getString("TooltipAgentUrl");
+ // return a tooltip corresponding to the URL type instead of the generic one
+ std::string url = getUrl(string);
+
+ if (LLStringUtil::endsWith(url, "/inspect"))
+ {
+ return LLTrans::getString("TooltipAgentInspect");
+ }
+ if (LLStringUtil::endsWith(url, "/mute"))
+ {
+ return LLTrans::getString("TooltipAgentMute");
+ }
+ if (LLStringUtil::endsWith(url, "/unmute"))
+ {
+ return LLTrans::getString("TooltipAgentUnmute");
+ }
+ if (LLStringUtil::endsWith(url, "/im"))
+ {
+ return LLTrans::getString("TooltipAgentIM");
+ }
+ if (LLStringUtil::endsWith(url, "/pay"))
+ {
+ return LLTrans::getString("TooltipAgentPay");
+ }
+ if (LLStringUtil::endsWith(url, "/offerteleport"))
+ {
+ return LLTrans::getString("TooltipAgentOfferTeleport");
+ }
+ if (LLStringUtil::endsWith(url, "/requestfriend"))
+ {
+ return LLTrans::getString("TooltipAgentRequestFriend");
+ }
+ return LLTrans::getString("TooltipAgentUrl");
}
bool LLUrlEntryAgent::underlineOnHoverOnly(const std::string &string) const
{
- std::string url = getUrl(string);
- return LLStringUtil::endsWith(url, "/about") || LLStringUtil::endsWith(url, "/inspect");
+ std::string url = getUrl(string);
+ return LLStringUtil::endsWith(url, "/about") || LLStringUtil::endsWith(url, "/inspect");
}
std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- if (!gCacheName)
- {
- // probably at the login screen, use short string for layout
- return LLTrans::getString("LoadingData");
- }
-
- std::string agent_id_string = getIDStringFromUrl(url);
- if (agent_id_string.empty())
- {
- // something went wrong, just give raw url
- return unescapeUrl(url);
- }
-
- LLUUID agent_id(agent_id_string);
- if (agent_id.isNull())
- {
- return LLTrans::getString("AvatarNameNobody");
- }
-
- LLAvatarName av_name;
- if (LLAvatarNameCache::get(agent_id, &av_name))
- {
- std::string label = av_name.getCompleteName();
-
- // handle suffixes like /mute or /offerteleport
- label = localize_slapp_label(url, label);
- return label;
- }
- else
- {
- avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(agent_id);
- if (it != mAvatarNameCacheConnections.end())
- {
- if (it->second.connected())
- {
- it->second.disconnect();
- }
- mAvatarNameCacheConnections.erase(it);
- }
- mAvatarNameCacheConnections[agent_id] = LLAvatarNameCache::get(agent_id, boost::bind(&LLUrlEntryAgent::onAvatarNameCache, this, _1, _2));
-
- addObserver(agent_id_string, url, cb);
- return LLTrans::getString("LoadingData");
- }
+ if (!gCacheName)
+ {
+ // probably at the login screen, use short string for layout
+ return LLTrans::getString("LoadingData");
+ }
+
+ std::string agent_id_string = getIDStringFromUrl(url);
+ if (agent_id_string.empty())
+ {
+ // something went wrong, just give raw url
+ return unescapeUrl(url);
+ }
+
+ LLUUID agent_id(agent_id_string);
+ if (agent_id.isNull())
+ {
+ return LLTrans::getString("AvatarNameNobody");
+ }
+
+ LLAvatarName av_name;
+ if (LLAvatarNameCache::get(agent_id, &av_name))
+ {
+ std::string label = av_name.getCompleteName();
+
+ // handle suffixes like /mute or /offerteleport
+ label = localize_slapp_label(url, label);
+ return label;
+ }
+ else
+ {
+ avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(agent_id);
+ if (it != mAvatarNameCacheConnections.end())
+ {
+ if (it->second.connected())
+ {
+ it->second.disconnect();
+ }
+ mAvatarNameCacheConnections.erase(it);
+ }
+ mAvatarNameCacheConnections[agent_id] = LLAvatarNameCache::get(agent_id, boost::bind(&LLUrlEntryAgent::onAvatarNameCache, this, _1, _2));
+
+ addObserver(agent_id_string, url, cb);
+ return LLTrans::getString("LoadingData");
+ }
}
LLStyle::Params LLUrlEntryAgent::getStyle() const
{
- LLStyle::Params style_params = LLUrlEntryBase::getStyle();
- style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
- style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
- return style_params;
+ LLStyle::Params style_params = LLUrlEntryBase::getStyle();
+ style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+ style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+ return style_params;
}
std::string localize_slapp_label(const std::string& url, const std::string& full_name)
{
- // customize label string based on agent SLapp suffix
- if (LLStringUtil::endsWith(url, "/mute"))
- {
- return LLTrans::getString("SLappAgentMute") + " " + full_name;
- }
- if (LLStringUtil::endsWith(url, "/unmute"))
- {
- return LLTrans::getString("SLappAgentUnmute") + " " + full_name;
- }
- if (LLStringUtil::endsWith(url, "/im"))
- {
- return LLTrans::getString("SLappAgentIM") + " " + full_name;
- }
- if (LLStringUtil::endsWith(url, "/pay"))
- {
- return LLTrans::getString("SLappAgentPay") + " " + full_name;
- }
- if (LLStringUtil::endsWith(url, "/offerteleport"))
- {
- return LLTrans::getString("SLappAgentOfferTeleport") + " " + full_name;
- }
- if (LLStringUtil::endsWith(url, "/requestfriend"))
- {
- return LLTrans::getString("SLappAgentRequestFriend") + " " + full_name;
- }
- if (LLStringUtil::endsWith(url, "/removefriend"))
- {
- return LLTrans::getString("SLappAgentRemoveFriend") + " " + full_name;
- }
- return full_name;
+ // customize label string based on agent SLapp suffix
+ if (LLStringUtil::endsWith(url, "/mute"))
+ {
+ return LLTrans::getString("SLappAgentMute") + " " + full_name;
+ }
+ if (LLStringUtil::endsWith(url, "/unmute"))
+ {
+ return LLTrans::getString("SLappAgentUnmute") + " " + full_name;
+ }
+ if (LLStringUtil::endsWith(url, "/im"))
+ {
+ return LLTrans::getString("SLappAgentIM") + " " + full_name;
+ }
+ if (LLStringUtil::endsWith(url, "/pay"))
+ {
+ return LLTrans::getString("SLappAgentPay") + " " + full_name;
+ }
+ if (LLStringUtil::endsWith(url, "/offerteleport"))
+ {
+ return LLTrans::getString("SLappAgentOfferTeleport") + " " + full_name;
+ }
+ if (LLStringUtil::endsWith(url, "/requestfriend"))
+ {
+ return LLTrans::getString("SLappAgentRequestFriend") + " " + full_name;
+ }
+ if (LLStringUtil::endsWith(url, "/removefriend"))
+ {
+ return LLTrans::getString("SLappAgentRemoveFriend") + " " + full_name;
+ }
+ return full_name;
}
std::string LLUrlEntryAgent::getIcon(const std::string &url)
{
- // *NOTE: Could look up a badge here by calling getIDStringFromUrl()
- // and looking up the badge for the agent.
- return mIcon;
+ // *NOTE: Could look up a badge here by calling getIDStringFromUrl()
+ // and looking up the badge for the agent.
+ return mIcon;
}
//
@@ -770,71 +770,71 @@ LLUrlEntryAgentName::LLUrlEntryAgentName()
{}
void LLUrlEntryAgentName::onAvatarNameCache(const LLUUID& id,
- const LLAvatarName& av_name)
+ const LLAvatarName& av_name)
{
- avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(id);
- if (it != mAvatarNameCacheConnections.end())
- {
- if (it->second.connected())
- {
- it->second.disconnect();
- }
- mAvatarNameCacheConnections.erase(it);
- }
+ avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(id);
+ if (it != mAvatarNameCacheConnections.end())
+ {
+ if (it->second.connected())
+ {
+ it->second.disconnect();
+ }
+ mAvatarNameCacheConnections.erase(it);
+ }
- std::string label = getName(av_name);
- // received the agent name from the server - tell our observers
- callObservers(id.asString(), label, mIcon);
+ std::string label = getName(av_name);
+ // received the agent name from the server - tell our observers
+ callObservers(id.asString(), label, mIcon);
}
std::string LLUrlEntryAgentName::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- if (!gCacheName)
- {
- // probably at the login screen, use short string for layout
- return LLTrans::getString("LoadingData");
- }
-
- std::string agent_id_string = getIDStringFromUrl(url);
- if (agent_id_string.empty())
- {
- // something went wrong, just give raw url
- return unescapeUrl(url);
- }
-
- LLUUID agent_id(agent_id_string);
- if (agent_id.isNull())
- {
- return LLTrans::getString("AvatarNameNobody");
- }
-
- LLAvatarName av_name;
- if (LLAvatarNameCache::get(agent_id, &av_name))
- {
- return getName(av_name);
- }
- else
- {
- avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(agent_id);
- if (it != mAvatarNameCacheConnections.end())
- {
- if (it->second.connected())
- {
- it->second.disconnect();
- }
- mAvatarNameCacheConnections.erase(it);
- }
- mAvatarNameCacheConnections[agent_id] = LLAvatarNameCache::get(agent_id, boost::bind(&LLUrlEntryAgentName::onAvatarNameCache, this, _1, _2));
-
- addObserver(agent_id_string, url, cb);
- return LLTrans::getString("LoadingData");
- }
+ if (!gCacheName)
+ {
+ // probably at the login screen, use short string for layout
+ return LLTrans::getString("LoadingData");
+ }
+
+ std::string agent_id_string = getIDStringFromUrl(url);
+ if (agent_id_string.empty())
+ {
+ // something went wrong, just give raw url
+ return unescapeUrl(url);
+ }
+
+ LLUUID agent_id(agent_id_string);
+ if (agent_id.isNull())
+ {
+ return LLTrans::getString("AvatarNameNobody");
+ }
+
+ LLAvatarName av_name;
+ if (LLAvatarNameCache::get(agent_id, &av_name))
+ {
+ return getName(av_name);
+ }
+ else
+ {
+ avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(agent_id);
+ if (it != mAvatarNameCacheConnections.end())
+ {
+ if (it->second.connected())
+ {
+ it->second.disconnect();
+ }
+ mAvatarNameCacheConnections.erase(it);
+ }
+ mAvatarNameCacheConnections[agent_id] = LLAvatarNameCache::get(agent_id, boost::bind(&LLUrlEntryAgentName::onAvatarNameCache, this, _1, _2));
+
+ addObserver(agent_id_string, url, cb);
+ return LLTrans::getString("LoadingData");
+ }
}
LLStyle::Params LLUrlEntryAgentName::getStyle() const
{
- // don't override default colors
- return LLStyle::Params().is_link(false);
+ // don't override default colors
+ return LLStyle::Params().is_link(false);
}
//
@@ -844,13 +844,13 @@ LLStyle::Params LLUrlEntryAgentName::getStyle() const
//
LLUrlEntryAgentCompleteName::LLUrlEntryAgentCompleteName()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/completename",
- boost::regex::perl|boost::regex::icase);
+ mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/completename",
+ boost::regex::perl|boost::regex::icase);
}
std::string LLUrlEntryAgentCompleteName::getName(const LLAvatarName& avatar_name)
{
- return avatar_name.getCompleteName(true, true);
+ return avatar_name.getCompleteName(true, true);
}
//
@@ -860,13 +860,13 @@ std::string LLUrlEntryAgentCompleteName::getName(const LLAvatarName& avatar_name
//
LLUrlEntryAgentLegacyName::LLUrlEntryAgentLegacyName()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/legacyname",
- boost::regex::perl|boost::regex::icase);
+ mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/legacyname",
+ boost::regex::perl|boost::regex::icase);
}
std::string LLUrlEntryAgentLegacyName::getName(const LLAvatarName& avatar_name)
{
- return avatar_name.getLegacyName();
+ return avatar_name.getLegacyName();
}
//
@@ -876,13 +876,13 @@ std::string LLUrlEntryAgentLegacyName::getName(const LLAvatarName& avatar_name)
//
LLUrlEntryAgentDisplayName::LLUrlEntryAgentDisplayName()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/displayname",
- boost::regex::perl|boost::regex::icase);
+ mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/displayname",
+ boost::regex::perl|boost::regex::icase);
}
std::string LLUrlEntryAgentDisplayName::getName(const LLAvatarName& avatar_name)
{
- return avatar_name.getDisplayName(true);
+ return avatar_name.getDisplayName(true);
}
//
@@ -892,13 +892,13 @@ std::string LLUrlEntryAgentDisplayName::getName(const LLAvatarName& avatar_name)
//
LLUrlEntryAgentUserName::LLUrlEntryAgentUserName()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/username",
- boost::regex::perl|boost::regex::icase);
+ mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/username",
+ boost::regex::perl|boost::regex::icase);
}
std::string LLUrlEntryAgentUserName::getName(const LLAvatarName& avatar_name)
{
- return avatar_name.getAccountName();
+ return avatar_name.getAccountName();
}
//
@@ -909,70 +909,70 @@ std::string LLUrlEntryAgentUserName::getName(const LLAvatarName& avatar_name)
//
LLUrlEntryGroup::LLUrlEntryGroup()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/group/[\\da-f-]+/\\w+",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_group.xml";
- mIcon = "Generic_Group";
- mTooltip = LLTrans::getString("TooltipGroupUrl");
+ mPattern = boost::regex(APP_HEADER_REGEX "/group/[\\da-f-]+/\\w+",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_group.xml";
+ mIcon = "Generic_Group";
+ mTooltip = LLTrans::getString("TooltipGroupUrl");
}
void LLUrlEntryGroup::onGroupNameReceived(const LLUUID& id,
- const std::string& name,
- bool is_group)
+ const std::string& name,
+ bool is_group)
{
- // received the group name from the server - tell our observers
- callObservers(id.asString(), name, mIcon);
+ // received the group name from the server - tell our observers
+ callObservers(id.asString(), name, mIcon);
}
-LLUUID LLUrlEntryGroup::getID(const std::string &string) const
+LLUUID LLUrlEntryGroup::getID(const std::string &string) const
{
- return LLUUID(getIDStringFromUrl(string));
+ return LLUUID(getIDStringFromUrl(string));
}
std::string LLUrlEntryGroup::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- if (!gCacheName)
- {
- // probably at login screen, give something short for layout
- return LLTrans::getString("LoadingData");
- }
-
- std::string group_id_string = getIDStringFromUrl(url);
- if (group_id_string.empty())
- {
- // something went wrong, give raw url
- return unescapeUrl(url);
- }
-
- LLUUID group_id(group_id_string);
- std::string group_name;
- if (group_id.isNull())
- {
- return LLTrans::getString("GroupNameNone");
- }
- else if (gCacheName->getGroupName(group_id, group_name))
- {
- return group_name;
- }
- else
- {
- gCacheName->getGroup(group_id,
- boost::bind(&LLUrlEntryGroup::onGroupNameReceived,
- this, _1, _2, _3));
- addObserver(group_id_string, url, cb);
- return LLTrans::getString("LoadingData");
- }
+ if (!gCacheName)
+ {
+ // probably at login screen, give something short for layout
+ return LLTrans::getString("LoadingData");
+ }
+
+ std::string group_id_string = getIDStringFromUrl(url);
+ if (group_id_string.empty())
+ {
+ // something went wrong, give raw url
+ return unescapeUrl(url);
+ }
+
+ LLUUID group_id(group_id_string);
+ std::string group_name;
+ if (group_id.isNull())
+ {
+ return LLTrans::getString("GroupNameNone");
+ }
+ else if (gCacheName->getGroupName(group_id, group_name))
+ {
+ return group_name;
+ }
+ else
+ {
+ gCacheName->getGroup(group_id,
+ boost::bind(&LLUrlEntryGroup::onGroupNameReceived,
+ this, _1, _2, _3));
+ addObserver(group_id_string, url, cb);
+ return LLTrans::getString("LoadingData");
+ }
}
LLStyle::Params LLUrlEntryGroup::getStyle() const
{
- LLStyle::Params style_params = LLUrlEntryBase::getStyle();
- style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
- style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
- return style_params;
+ LLStyle::Params style_params = LLUrlEntryBase::getStyle();
+ style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+ style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+ return style_params;
}
@@ -982,19 +982,19 @@ LLStyle::Params LLUrlEntryGroup::getStyle() const
//
LLUrlEntryInventory::LLUrlEntryInventory()
{
- //*TODO: add supporting of inventory item names with whitespaces
- //this pattern cann't parse for example
- //secondlife:///app/inventory/0e346d8b-4433-4d66-a6b0-fd37083abc4c/select?name=name with spaces&param2=value
- //x-grid-location-info://lincoln.lindenlab.com/app/inventory/0e346d8b-4433-4d66-a6b0-fd37083abc4c/select?name=name with spaces&param2=value
- mPattern = boost::regex(APP_HEADER_REGEX "/inventory/[\\da-f-]+/\\w+\\S*",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_inventory.xml";
+ //*TODO: add supporting of inventory item names with whitespaces
+ //this pattern cann't parse for example
+ //secondlife:///app/inventory/0e346d8b-4433-4d66-a6b0-fd37083abc4c/select?name=name with spaces&param2=value
+ //x-grid-location-info://lincoln.lindenlab.com/app/inventory/0e346d8b-4433-4d66-a6b0-fd37083abc4c/select?name=name with spaces&param2=value
+ mPattern = boost::regex(APP_HEADER_REGEX "/inventory/[\\da-f-]+/\\w+\\S*",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_inventory.xml";
}
std::string LLUrlEntryInventory::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- std::string label = getStringAfterToken(url, "name=");
- return LLURI::unescape(label.empty() ? url : label);
+ std::string label = getStringAfterToken(url, "name=");
+ return LLURI::unescape(label.empty() ? url : label);
}
//
@@ -1003,27 +1003,27 @@ std::string LLUrlEntryInventory::getLabel(const std::string &url, const LLUrlLab
//
LLUrlEntryObjectIM::LLUrlEntryObjectIM()
{
- mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?\\S*\\w",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_objectim.xml";
+ mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?\\S*\\w",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_objectim.xml";
}
std::string LLUrlEntryObjectIM::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- LLURI uri(url);
- LLSD query_map = uri.queryMap();
- if (query_map.has("name"))
- return query_map["name"];
- return unescapeUrl(url);
+ LLURI uri(url);
+ LLSD query_map = uri.queryMap();
+ if (query_map.has("name"))
+ return query_map["name"];
+ return unescapeUrl(url);
}
std::string LLUrlEntryObjectIM::getLocation(const std::string &url) const
{
- LLURI uri(url);
- LLSD query_map = uri.queryMap();
- if (query_map.has("slurl"))
- return query_map["slurl"];
- return LLUrlEntryBase::getLocation(url);
+ LLURI uri(url);
+ LLSD query_map = uri.queryMap();
+ if (query_map.has("slurl"))
+ return query_map["slurl"];
+ return LLUrlEntryBase::getLocation(url);
}
//
@@ -1045,10 +1045,10 @@ std::string LLUrlEntryChat::getLabel(const std::string &url, const LLUrlLabelCal
}
// LLUrlEntryParcel statics.
-LLUUID LLUrlEntryParcel::sAgentID(LLUUID::null);
-LLUUID LLUrlEntryParcel::sSessionID(LLUUID::null);
-LLHost LLUrlEntryParcel::sRegionHost;
-bool LLUrlEntryParcel::sDisconnected(false);
+LLUUID LLUrlEntryParcel::sAgentID(LLUUID::null);
+LLUUID LLUrlEntryParcel::sSessionID(LLUUID::null);
+LLHost LLUrlEntryParcel::sRegionHost;
+bool LLUrlEntryParcel::sDisconnected(false);
std::set<LLUrlEntryParcel*> LLUrlEntryParcel::sParcelInfoObservers;
///
@@ -1058,90 +1058,90 @@ std::set<LLUrlEntryParcel*> LLUrlEntryParcel::sParcelInfoObservers;
///
LLUrlEntryParcel::LLUrlEntryParcel()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/parcel/[\\da-f-]+/about",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_parcel.xml";
- mTooltip = LLTrans::getString("TooltipParcelUrl");
+ mPattern = boost::regex(APP_HEADER_REGEX "/parcel/[\\da-f-]+/about",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_parcel.xml";
+ mTooltip = LLTrans::getString("TooltipParcelUrl");
- sParcelInfoObservers.insert(this);
+ sParcelInfoObservers.insert(this);
}
LLUrlEntryParcel::~LLUrlEntryParcel()
{
- sParcelInfoObservers.erase(this);
+ sParcelInfoObservers.erase(this);
}
std::string LLUrlEntryParcel::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- LLSD path_array = LLURI(url).pathArray();
- S32 path_parts = path_array.size();
+ LLSD path_array = LLURI(url).pathArray();
+ S32 path_parts = path_array.size();
- if (path_parts < 3) // no parcel id
- {
- LL_WARNS() << "Failed to parse url [" << url << "]" << LL_ENDL;
- return url;
- }
+ if (path_parts < 3) // no parcel id
+ {
+ LL_WARNS() << "Failed to parse url [" << url << "]" << LL_ENDL;
+ return url;
+ }
- std::string parcel_id_string = unescapeUrl(path_array[2]); // parcel id
+ std::string parcel_id_string = unescapeUrl(path_array[2]); // parcel id
- // Add an observer to call LLUrlLabelCallback when we have parcel name.
- addObserver(parcel_id_string, url, cb);
+ // Add an observer to call LLUrlLabelCallback when we have parcel name.
+ addObserver(parcel_id_string, url, cb);
- LLUUID parcel_id(parcel_id_string);
+ LLUUID parcel_id(parcel_id_string);
- sendParcelInfoRequest(parcel_id);
+ sendParcelInfoRequest(parcel_id);
- return unescapeUrl(url);
+ return unescapeUrl(url);
}
void LLUrlEntryParcel::sendParcelInfoRequest(const LLUUID& parcel_id)
{
- if (sRegionHost.isInvalid() || sDisconnected) return;
+ if (sRegionHost.isInvalid() || sDisconnected) return;
- LLMessageSystem *msg = gMessageSystem;
- msg->newMessage("ParcelInfoRequest");
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, sAgentID );
- msg->addUUID("SessionID", sSessionID);
- msg->nextBlock("Data");
- msg->addUUID("ParcelID", parcel_id);
- msg->sendReliable(sRegionHost);
+ LLMessageSystem *msg = gMessageSystem;
+ msg->newMessage("ParcelInfoRequest");
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, sAgentID );
+ msg->addUUID("SessionID", sSessionID);
+ msg->nextBlock("Data");
+ msg->addUUID("ParcelID", parcel_id);
+ msg->sendReliable(sRegionHost);
}
void LLUrlEntryParcel::onParcelInfoReceived(const std::string &id, const std::string &label)
{
- callObservers(id, label.empty() ? LLTrans::getString("RegionInfoError") : label, mIcon);
+ callObservers(id, label.empty() ? LLTrans::getString("RegionInfoError") : label, mIcon);
}
// static
void LLUrlEntryParcel::processParcelInfo(const LLParcelData& parcel_data)
{
- std::string label(LLStringUtil::null);
- if (!parcel_data.name.empty())
- {
- label = parcel_data.name;
- }
- // If parcel name is empty use Sim_name (x, y, z) for parcel label.
- else if (!parcel_data.sim_name.empty())
- {
- S32 region_x = ll_round(parcel_data.global_x) % REGION_WIDTH_UNITS;
- S32 region_y = ll_round(parcel_data.global_y) % REGION_WIDTH_UNITS;
- S32 region_z = ll_round(parcel_data.global_z);
-
- label = llformat("%s (%d, %d, %d)",
- parcel_data.sim_name.c_str(), region_x, region_y, region_z);
- }
-
- for (std::set<LLUrlEntryParcel*>::iterator iter = sParcelInfoObservers.begin();
- iter != sParcelInfoObservers.end();
- ++iter)
- {
- LLUrlEntryParcel* url_entry = *iter;
- if (url_entry)
- {
- url_entry->onParcelInfoReceived(parcel_data.parcel_id.asString(), label);
- }
- }
+ std::string label(LLStringUtil::null);
+ if (!parcel_data.name.empty())
+ {
+ label = parcel_data.name;
+ }
+ // If parcel name is empty use Sim_name (x, y, z) for parcel label.
+ else if (!parcel_data.sim_name.empty())
+ {
+ S32 region_x = ll_round(parcel_data.global_x) % REGION_WIDTH_UNITS;
+ S32 region_y = ll_round(parcel_data.global_y) % REGION_WIDTH_UNITS;
+ S32 region_z = ll_round(parcel_data.global_z);
+
+ label = llformat("%s (%d, %d, %d)",
+ parcel_data.sim_name.c_str(), region_x, region_y, region_z);
+ }
+
+ for (std::set<LLUrlEntryParcel*>::iterator iter = sParcelInfoObservers.begin();
+ iter != sParcelInfoObservers.end();
+ ++iter)
+ {
+ LLUrlEntryParcel* url_entry = *iter;
+ if (url_entry)
+ {
+ url_entry->onParcelInfoReceived(parcel_data.parcel_id.asString(), label);
+ }
+ }
}
//
@@ -1149,46 +1149,46 @@ void LLUrlEntryParcel::processParcelInfo(const LLParcelData& parcel_data)
//
LLUrlEntryPlace::LLUrlEntryPlace()
{
- mPattern = boost::regex("((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://))\\S+/?(\\d+/\\d+/\\d+|\\d+/\\d+)/?",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_slurl.xml";
- mTooltip = LLTrans::getString("TooltipSLURL");
+ mPattern = boost::regex("((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://))\\S+/?(\\d+/\\d+/\\d+|\\d+/\\d+)/?",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_slurl.xml";
+ mTooltip = LLTrans::getString("TooltipSLURL");
}
std::string LLUrlEntryPlace::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- //
- // we handle SLURLs in the following formats:
- // - secondlife://Place/X/Y/Z
- // - secondlife://Place/X/Y
- //
- LLURI uri(url);
- std::string location = unescapeUrl(uri.hostName());
- LLSD path_array = uri.pathArray();
- S32 path_parts = path_array.size();
- if (path_parts == 3)
- {
- // handle slurl with (X,Y,Z) coordinates
- std::string x = path_array[0];
- std::string y = path_array[1];
- std::string z = path_array[2];
- return location + " (" + x + "," + y + "," + z + ")";
- }
- else if (path_parts == 2)
- {
- // handle slurl with (X,Y) coordinates
- std::string x = path_array[0];
- std::string y = path_array[1];
- return location + " (" + x + "," + y + ")";
- }
-
- return url;
+ //
+ // we handle SLURLs in the following formats:
+ // - secondlife://Place/X/Y/Z
+ // - secondlife://Place/X/Y
+ //
+ LLURI uri(url);
+ std::string location = unescapeUrl(uri.hostName());
+ LLSD path_array = uri.pathArray();
+ S32 path_parts = path_array.size();
+ if (path_parts == 3)
+ {
+ // handle slurl with (X,Y,Z) coordinates
+ std::string x = path_array[0];
+ std::string y = path_array[1];
+ std::string z = path_array[2];
+ return location + " (" + x + "," + y + "," + z + ")";
+ }
+ else if (path_parts == 2)
+ {
+ // handle slurl with (X,Y) coordinates
+ std::string x = path_array[0];
+ std::string y = path_array[1];
+ return location + " (" + x + "," + y + ")";
+ }
+
+ return url;
}
std::string LLUrlEntryPlace::getLocation(const std::string &url) const
{
- // return the part of the Url after secondlife:// part
- return ::getStringAfterToken(url, "://");
+ // return the part of the Url after secondlife:// part
+ return ::getStringAfterToken(url, "://");
}
//
@@ -1197,61 +1197,61 @@ std::string LLUrlEntryPlace::getLocation(const std::string &url) const
//
LLUrlEntryRegion::LLUrlEntryRegion()
{
- mPattern = boost::regex("secondlife:///app/region/[A-Za-z0-9()_%]+(/\\d+)?(/\\d+)?(/\\d+)?/?",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_slurl.xml";
- mTooltip = LLTrans::getString("TooltipSLURL");
+ mPattern = boost::regex("secondlife:///app/region/[A-Za-z0-9()_%]+(/\\d+)?(/\\d+)?(/\\d+)?/?",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_slurl.xml";
+ mTooltip = LLTrans::getString("TooltipSLURL");
}
std::string LLUrlEntryRegion::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- //
- // we handle SLURLs in the following formats:
- // - secondlife:///app/region/Place/X/Y/Z
- // - secondlife:///app/region/Place/X/Y
- // - secondlife:///app/region/Place/X
- // - secondlife:///app/region/Place
- //
+ //
+ // we handle SLURLs in the following formats:
+ // - secondlife:///app/region/Place/X/Y/Z
+ // - secondlife:///app/region/Place/X/Y
+ // - secondlife:///app/region/Place/X
+ // - secondlife:///app/region/Place
+ //
- LLSD path_array = LLURI(url).pathArray();
- S32 path_parts = path_array.size();
+ LLSD path_array = LLURI(url).pathArray();
+ S32 path_parts = path_array.size();
- if (path_parts < 3) // no region name
- {
- LL_WARNS() << "Failed to parse url [" << url << "]" << LL_ENDL;
- return url;
- }
-
- std::string label = unescapeUrl(path_array[2]); // region name
+ if (path_parts < 3) // no region name
+ {
+ LL_WARNS() << "Failed to parse url [" << url << "]" << LL_ENDL;
+ return url;
+ }
- if (path_parts > 3) // secondlife:///app/region/Place/X
- {
- std::string x = path_array[3];
- label += " (" + x;
+ std::string label = unescapeUrl(path_array[2]); // region name
- if (path_parts > 4) // secondlife:///app/region/Place/X/Y
- {
- std::string y = path_array[4];
- label += "," + y;
+ if (path_parts > 3) // secondlife:///app/region/Place/X
+ {
+ std::string x = path_array[3];
+ label += " (" + x;
- if (path_parts > 5) // secondlife:///app/region/Place/X/Y/Z
- {
- std::string z = path_array[5];
- label = label + "," + z;
- }
- }
+ if (path_parts > 4) // secondlife:///app/region/Place/X/Y
+ {
+ std::string y = path_array[4];
+ label += "," + y;
+
+ if (path_parts > 5) // secondlife:///app/region/Place/X/Y/Z
+ {
+ std::string z = path_array[5];
+ label = label + "," + z;
+ }
+ }
- label += ")";
- }
+ label += ")";
+ }
- return label;
+ return label;
}
std::string LLUrlEntryRegion::getLocation(const std::string &url) const
{
- LLSD path_array = LLURI(url).pathArray();
- std::string region_name = unescapeUrl(path_array[2]);
- return region_name;
+ LLSD path_array = LLURI(url).pathArray();
+ std::string region_name = unescapeUrl(path_array[2]);
+ return region_name;
}
//
@@ -1261,68 +1261,68 @@ std::string LLUrlEntryRegion::getLocation(const std::string &url) const
//
LLUrlEntryTeleport::LLUrlEntryTeleport()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/teleport/\\S+(/\\d+)?(/\\d+)?(/\\d+)?/?\\S*",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_teleport.xml";
- mTooltip = LLTrans::getString("TooltipTeleportUrl");
+ mPattern = boost::regex(APP_HEADER_REGEX "/teleport/\\S+(/\\d+)?(/\\d+)?(/\\d+)?/?\\S*",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_teleport.xml";
+ mTooltip = LLTrans::getString("TooltipTeleportUrl");
}
std::string LLUrlEntryTeleport::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- //
- // we handle teleport SLURLs in the following formats:
- // - secondlife:///app/teleport/Place/X/Y/Z
- // - secondlife:///app/teleport/Place/X/Y
- // - secondlife:///app/teleport/Place/X
- // - secondlife:///app/teleport/Place
- //
- LLURI uri(url);
- LLSD path_array = uri.pathArray();
- S32 path_parts = path_array.size();
- std::string host = uri.hostName();
- std::string label = LLTrans::getString("SLurlLabelTeleport");
- if (!host.empty())
- {
- label += " " + host;
- }
- if (path_parts == 6)
- {
- // handle teleport url with (X,Y,Z) coordinates
- std::string location = unescapeUrl(path_array[path_parts-4]);
- std::string x = path_array[path_parts-3];
- std::string y = path_array[path_parts-2];
- std::string z = path_array[path_parts-1];
- return label + " " + location + " (" + x + "," + y + "," + z + ")";
- }
- else if (path_parts == 5)
- {
- // handle teleport url with (X,Y) coordinates
- std::string location = unescapeUrl(path_array[path_parts-3]);
- std::string x = path_array[path_parts-2];
- std::string y = path_array[path_parts-1];
- return label + " " + location + " (" + x + "," + y + ")";
- }
- else if (path_parts == 4)
- {
- // handle teleport url with (X) coordinate only
- std::string location = unescapeUrl(path_array[path_parts-2]);
- std::string x = path_array[path_parts-1];
- return label + " " + location + " (" + x + ")";
- }
- else if (path_parts == 3)
- {
- // handle teleport url with no coordinates
- std::string location = unescapeUrl(path_array[path_parts-1]);
- return label + " " + location;
- }
-
- return url;
+ //
+ // we handle teleport SLURLs in the following formats:
+ // - secondlife:///app/teleport/Place/X/Y/Z
+ // - secondlife:///app/teleport/Place/X/Y
+ // - secondlife:///app/teleport/Place/X
+ // - secondlife:///app/teleport/Place
+ //
+ LLURI uri(url);
+ LLSD path_array = uri.pathArray();
+ S32 path_parts = path_array.size();
+ std::string host = uri.hostName();
+ std::string label = LLTrans::getString("SLurlLabelTeleport");
+ if (!host.empty())
+ {
+ label += " " + host;
+ }
+ if (path_parts == 6)
+ {
+ // handle teleport url with (X,Y,Z) coordinates
+ std::string location = unescapeUrl(path_array[path_parts-4]);
+ std::string x = path_array[path_parts-3];
+ std::string y = path_array[path_parts-2];
+ std::string z = path_array[path_parts-1];
+ return label + " " + location + " (" + x + "," + y + "," + z + ")";
+ }
+ else if (path_parts == 5)
+ {
+ // handle teleport url with (X,Y) coordinates
+ std::string location = unescapeUrl(path_array[path_parts-3]);
+ std::string x = path_array[path_parts-2];
+ std::string y = path_array[path_parts-1];
+ return label + " " + location + " (" + x + "," + y + ")";
+ }
+ else if (path_parts == 4)
+ {
+ // handle teleport url with (X) coordinate only
+ std::string location = unescapeUrl(path_array[path_parts-2]);
+ std::string x = path_array[path_parts-1];
+ return label + " " + location + " (" + x + ")";
+ }
+ else if (path_parts == 3)
+ {
+ // handle teleport url with no coordinates
+ std::string location = unescapeUrl(path_array[path_parts-1]);
+ return label + " " + location;
+ }
+
+ return url;
}
std::string LLUrlEntryTeleport::getLocation(const std::string &url) const
{
- // return the part of the Url after ///app/teleport
- return ::getStringAfterToken(url, "app/teleport/");
+ // return the part of the Url after ///app/teleport
+ return ::getStringAfterToken(url, "app/teleport/");
}
//
@@ -1331,15 +1331,15 @@ std::string LLUrlEntryTeleport::getLocation(const std::string &url) const
//
LLUrlEntrySL::LLUrlEntrySL()
{
- mPattern = boost::regex("secondlife://(\\w+)?(:\\d+)?/\\S+",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_slapp.xml";
- mTooltip = LLTrans::getString("TooltipSLAPP");
+ mPattern = boost::regex("secondlife://(\\w+)?(:\\d+)?/\\S+",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_slapp.xml";
+ mTooltip = LLTrans::getString("TooltipSLAPP");
}
std::string LLUrlEntrySL::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- return unescapeUrl(url);
+ return unescapeUrl(url);
}
//
@@ -1348,48 +1348,48 @@ std::string LLUrlEntrySL::getLabel(const std::string &url, const LLUrlLabelCallb
//
LLUrlEntrySLLabel::LLUrlEntrySLLabel()
{
- mPattern = boost::regex("\\[secondlife://\\S+[ \t]+[^\\]]+\\]",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_slapp.xml";
- mTooltip = LLTrans::getString("TooltipSLAPP");
+ mPattern = boost::regex("\\[secondlife://\\S+[ \t]+[^\\]]+\\]",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_slapp.xml";
+ mTooltip = LLTrans::getString("TooltipSLAPP");
}
std::string LLUrlEntrySLLabel::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- std::string label = getLabelFromWikiLink(url);
- return (!LLUrlRegistry::instance().hasUrl(label)) ? label : getUrl(url);
+ std::string label = getLabelFromWikiLink(url);
+ return (!LLUrlRegistry::instance().hasUrl(label)) ? label : getUrl(url);
}
std::string LLUrlEntrySLLabel::getUrl(const std::string &string) const
{
- return getUrlFromWikiLink(string);
+ return getUrlFromWikiLink(string);
}
std::string LLUrlEntrySLLabel::getTooltip(const std::string &string) const
{
- // return a tooltip corresponding to the URL type instead of the generic one (EXT-4574)
- std::string url = getUrl(string);
- LLUrlMatch match;
- if (LLUrlRegistry::instance().findUrl(url, match))
- {
- return match.getTooltip();
- }
+ // return a tooltip corresponding to the URL type instead of the generic one (EXT-4574)
+ std::string url = getUrl(string);
+ LLUrlMatch match;
+ if (LLUrlRegistry::instance().findUrl(url, match))
+ {
+ return match.getTooltip();
+ }
- // unrecognized URL? should not happen
- return LLUrlEntryBase::getTooltip(string);
+ // unrecognized URL? should not happen
+ return LLUrlEntryBase::getTooltip(string);
}
bool LLUrlEntrySLLabel::underlineOnHoverOnly(const std::string &string) const
{
- std::string url = getUrl(string);
- LLUrlMatch match;
- if (LLUrlRegistry::instance().findUrl(url, match))
- {
- return match.underlineOnHoverOnly();
- }
+ std::string url = getUrl(string);
+ LLUrlMatch match;
+ if (LLUrlRegistry::instance().findUrl(url, match))
+ {
+ return match.underlineOnHoverOnly();
+ }
- // unrecognized URL? should not happen
- return LLUrlEntryBase::underlineOnHoverOnly(string);
+ // unrecognized URL? should not happen
+ return LLUrlEntryBase::underlineOnHoverOnly(string);
}
//
@@ -1397,40 +1397,40 @@ bool LLUrlEntrySLLabel::underlineOnHoverOnly(const std::string &string) const
//
LLUrlEntryWorldMap::LLUrlEntryWorldMap()
{
- mPattern = boost::regex(APP_HEADER_REGEX "/worldmap/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*",
- boost::regex::perl|boost::regex::icase);
- mMenuName = "menu_url_map.xml";
- mTooltip = LLTrans::getString("TooltipMapUrl");
+ mPattern = boost::regex(APP_HEADER_REGEX "/worldmap/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_map.xml";
+ mTooltip = LLTrans::getString("TooltipMapUrl");
}
std::string LLUrlEntryWorldMap::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- //
- // we handle SLURLs in the following formats:
- // - secondlife:///app/worldmap/PLACE/X/Y/Z
- // - secondlife:///app/worldmap/PLACE/X/Y
- // - secondlife:///app/worldmap/PLACE/X
- //
- LLURI uri(url);
- LLSD path_array = uri.pathArray();
- S32 path_parts = path_array.size();
- if (path_parts < 3)
- {
- return url;
- }
-
- const std::string label = LLTrans::getString("SLurlLabelShowOnMap");
- std::string location = unescapeUrl(path_array[2]);
- std::string x = (path_parts > 3) ? path_array[3] : "128";
- std::string y = (path_parts > 4) ? path_array[4] : "128";
- std::string z = (path_parts > 5) ? path_array[5] : "0";
- return label + " " + location + " (" + x + "," + y + "," + z + ")";
+ //
+ // we handle SLURLs in the following formats:
+ // - secondlife:///app/worldmap/PLACE/X/Y/Z
+ // - secondlife:///app/worldmap/PLACE/X/Y
+ // - secondlife:///app/worldmap/PLACE/X
+ //
+ LLURI uri(url);
+ LLSD path_array = uri.pathArray();
+ S32 path_parts = path_array.size();
+ if (path_parts < 3)
+ {
+ return url;
+ }
+
+ const std::string label = LLTrans::getString("SLurlLabelShowOnMap");
+ std::string location = unescapeUrl(path_array[2]);
+ std::string x = (path_parts > 3) ? path_array[3] : "128";
+ std::string y = (path_parts > 4) ? path_array[4] : "128";
+ std::string z = (path_parts > 5) ? path_array[5] : "0";
+ return label + " " + location + " (" + x + "," + y + "," + z + ")";
}
std::string LLUrlEntryWorldMap::getLocation(const std::string &url) const
{
- // return the part of the Url after secondlife:///app/worldmap/ part
- return ::getStringAfterToken(url, "app/worldmap/");
+ // return the part of the Url after secondlife:///app/worldmap/ part
+ return ::getStringAfterToken(url, "app/worldmap/");
}
//
@@ -1438,25 +1438,25 @@ std::string LLUrlEntryWorldMap::getLocation(const std::string &url) const
//
LLUrlEntryNoLink::LLUrlEntryNoLink()
{
- mPattern = boost::regex("<nolink>.*?</nolink>",
- boost::regex::perl|boost::regex::icase);
+ mPattern = boost::regex("<nolink>.*?</nolink>",
+ boost::regex::perl|boost::regex::icase);
}
std::string LLUrlEntryNoLink::getUrl(const std::string &url) const
{
- // return the text between the <nolink> and </nolink> tags
- return url.substr(8, url.size()-8-9);
+ // return the text between the <nolink> and </nolink> tags
+ return url.substr(8, url.size()-8-9);
}
std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- return getUrl(url);
+ return getUrl(url);
}
-LLStyle::Params LLUrlEntryNoLink::getStyle() const
-{
- // Don't render as URL (i.e. no context menu or hand cursor).
- return LLStyle::Params().is_link(false);
+LLStyle::Params LLUrlEntryNoLink::getStyle() const
+{
+ // Don't render as URL (i.e. no context menu or hand cursor).
+ return LLStyle::Params().is_link(false);
}
@@ -1465,64 +1465,64 @@ LLStyle::Params LLUrlEntryNoLink::getStyle() const
//
LLUrlEntryIcon::LLUrlEntryIcon()
{
- mPattern = boost::regex("<icon\\s*>\\s*([^<]*)?\\s*</icon\\s*>",
- boost::regex::perl|boost::regex::icase);
+ mPattern = boost::regex("<icon\\s*>\\s*([^<]*)?\\s*</icon\\s*>",
+ boost::regex::perl|boost::regex::icase);
}
std::string LLUrlEntryIcon::getUrl(const std::string &url) const
{
- return LLStringUtil::null;
+ return LLStringUtil::null;
}
std::string LLUrlEntryIcon::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- return LLStringUtil::null;
+ return LLStringUtil::null;
}
std::string LLUrlEntryIcon::getIcon(const std::string &url)
{
- // Grep icon info between <icon>...</icon> tags
- // matches[1] contains the icon name/path
- boost::match_results<std::string::const_iterator> matches;
- mIcon = (ll_regex_match(url, matches, mPattern) && matches[1].matched)
- ? matches[1]
- : LLStringUtil::null;
- LLStringUtil::trim(mIcon);
- return mIcon;
+ // Grep icon info between <icon>...</icon> tags
+ // matches[1] contains the icon name/path
+ boost::match_results<std::string::const_iterator> matches;
+ mIcon = (ll_regex_match(url, matches, mPattern) && matches[1].matched)
+ ? matches[1]
+ : LLStringUtil::null;
+ LLStringUtil::trim(mIcon);
+ return mIcon;
}
//
// LLUrlEntryEmail Describes a generic mailto: Urls
//
LLUrlEntryEmail::LLUrlEntryEmail()
- : LLUrlEntryBase()
+ : LLUrlEntryBase()
{
- mPattern = boost::regex("(mailto:)?[\\w\\.\\-]+@[\\w\\.\\-]+\\.[a-z]{2,63}",
- boost::regex::perl | boost::regex::icase);
- mMenuName = "menu_url_email.xml";
- mTooltip = LLTrans::getString("TooltipEmail");
+ mPattern = boost::regex("(mailto:)?[\\w\\.\\-]+@[\\w\\.\\-]+\\.[a-z]{2,63}",
+ boost::regex::perl | boost::regex::icase);
+ mMenuName = "menu_url_email.xml";
+ mTooltip = LLTrans::getString("TooltipEmail");
}
std::string LLUrlEntryEmail::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- int pos = url.find("mailto:");
+ int pos = url.find("mailto:");
- if (pos == std::string::npos)
- {
- return escapeUrl(url);
- }
+ if (pos == std::string::npos)
+ {
+ return escapeUrl(url);
+ }
- std::string ret = escapeUrl(url.substr(pos + 7, url.length() - pos + 8));
- return ret;
+ std::string ret = escapeUrl(url.substr(pos + 7, url.length() - pos + 8));
+ return ret;
}
std::string LLUrlEntryEmail::getUrl(const std::string &string) const
{
- if (string.find("mailto:") == std::string::npos)
- {
- return "mailto:" + escapeUrl(string);
- }
- return escapeUrl(string);
+ if (string.find("mailto:") == std::string::npos)
+ {
+ return "mailto:" + escapeUrl(string);
+ }
+ return escapeUrl(string);
}
LLUrlEntryExperienceProfile::LLUrlEntryExperienceProfile()
@@ -1530,7 +1530,7 @@ LLUrlEntryExperienceProfile::LLUrlEntryExperienceProfile()
mPattern = boost::regex(APP_HEADER_REGEX "/experience/[\\da-f-]+/profile",
boost::regex::perl|boost::regex::icase);
mIcon = "Generic_Experience";
- mMenuName = "menu_url_experience.xml";
+ mMenuName = "menu_url_experience.xml";
}
std::string LLUrlEntryExperienceProfile::getLabel( const std::string &url, const LLUrlLabelCallback &cb )
@@ -1557,7 +1557,7 @@ std::string LLUrlEntryExperienceProfile::getLabel( const std::string &url, const
const LLSD& experience_details = LLExperienceCache::instance().get(experience_id);
if(!experience_details.isUndefined())
{
- std::string experience_name_string = experience_details[LLExperienceCache::NAME].asString();
+ std::string experience_name_string = experience_details[LLExperienceCache::NAME].asString();
return experience_name_string.empty() ? LLTrans::getString("ExperienceNameUntitled") : experience_name_string;
}
@@ -1569,11 +1569,11 @@ std::string LLUrlEntryExperienceProfile::getLabel( const std::string &url, const
void LLUrlEntryExperienceProfile::onExperienceDetails( const LLSD& experience_details )
{
- std::string name = experience_details[LLExperienceCache::NAME].asString();
- if(name.empty())
- {
- name = LLTrans::getString("ExperienceNameUntitled");
- }
+ std::string name = experience_details[LLExperienceCache::NAME].asString();
+ if(name.empty())
+ {
+ name = LLTrans::getString("ExperienceNameUntitled");
+ }
callObservers(experience_details[LLExperienceCache::EXPERIENCE_ID].asString(), name, LLStringUtil::null);
}
@@ -1581,41 +1581,41 @@ void LLUrlEntryExperienceProfile::onExperienceDetails( const LLSD& experience_de
// LLUrlEntryEmail Describes an IPv6 address
//
LLUrlEntryIPv6::LLUrlEntryIPv6()
- : LLUrlEntryBase()
+ : LLUrlEntryBase()
{
- mHostPath = "https?://\\[([a-f0-9:]+:+)+[a-f0-9]+]";
- mPattern = boost::regex(mHostPath + "(:\\d{1,5})?(/\\S*)?",
- boost::regex::perl | boost::regex::icase);
- mMenuName = "menu_url_http.xml";
- mTooltip = LLTrans::getString("TooltipHttpUrl");
+ mHostPath = "https?://\\[([a-f0-9:]+:+)+[a-f0-9]+]";
+ mPattern = boost::regex(mHostPath + "(:\\d{1,5})?(/\\S*)?",
+ boost::regex::perl | boost::regex::icase);
+ mMenuName = "menu_url_http.xml";
+ mTooltip = LLTrans::getString("TooltipHttpUrl");
}
std::string LLUrlEntryIPv6::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
- boost::regex regex = boost::regex(mHostPath, boost::regex::perl | boost::regex::icase);
- boost::match_results<std::string::const_iterator> matches;
+ boost::regex regex = boost::regex(mHostPath, boost::regex::perl | boost::regex::icase);
+ boost::match_results<std::string::const_iterator> matches;
- if (boost::regex_search(url, matches, regex))
- {
- return url.substr(0, matches[0].length());
- }
- else
- {
- return url;
- }
+ if (boost::regex_search(url, matches, regex))
+ {
+ return url.substr(0, matches[0].length());
+ }
+ else
+ {
+ return url;
+ }
}
std::string LLUrlEntryIPv6::getQuery(const std::string &url) const
{
- boost::regex regex = boost::regex(mHostPath, boost::regex::perl | boost::regex::icase);
- boost::match_results<std::string::const_iterator> matches;
+ boost::regex regex = boost::regex(mHostPath, boost::regex::perl | boost::regex::icase);
+ boost::match_results<std::string::const_iterator> matches;
- return boost::regex_replace(url, regex, "");
+ return boost::regex_replace(url, regex, "");
}
std::string LLUrlEntryIPv6::getUrl(const std::string &string) const
{
- return string;
+ return string;
}