void LLUrlAction::showLocationOnMap(std::string url) { LLUrlMatch match; if (LLUrlRegistry::instance().findUrl(url, match)) { if (! match.getLocation().empty()) { executeSLURL("secondlife:///app/worldmap/" + match.getLocation()); } } }
void LLUrlAction::teleportToLocation(std::string url) { LLUrlMatch match; if (LLUrlRegistry::instance().findUrl(url, match)) { if (! match.getLocation().empty()) { executeSLURL("secondlife:///app/teleport/" + match.getLocation()); } } }
void object::test<9>() { // // test the getLocation() method // LLUrlMatch match; ensure("getLocation() empty", match.getLocation().empty()); match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "Paris", false,LLUUID::null); ensure_equals("getLocation() == \"Paris\"", match.getLocation(), "Paris"); match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); ensure("getLocation() empty (2)", match.getLocation().empty()); }
bool LLUrlRegistry::findUrl(const LLWString &text, LLUrlMatch &match, const LLUrlLabelCallback &cb) { // boost::regex_search() only works on char or wchar_t // types, but wchar_t is only 2-bytes on Win32 (not 4). // So we use UTF-8 to make this work the same everywhere. std::string utf8_text = wstring_to_utf8str(text); if (findUrl(utf8_text, match, cb)) { // we cannot blindly return the start/end offsets from // the UTF-8 string because it is a variable-length // character encoding, so we need to update the start // and end values to be correct for the wide string. LLWString wurl = utf8str_to_wstring(match.getUrl()); S32 start = text.find(wurl); if (start == std::string::npos) { return false; } S32 end = start + wurl.size() - 1; match.setValues(start, end, match.getUrl(), match.getLabel(), match.getTooltip(), match.getIcon(), match.getStyle(), match.getMenuName(), match.getLocation(), match.getID(), match.underlineOnHoverOnly()); return true; } return false; }