From 305ec89a70bf88fce8f5edda15047182bc56682b Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 23 Feb 2010 16:33:43 -0800 Subject: Added ageFromDateISO() for YYYY-MM-DD dates --- indra/newview/lldateutil.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'indra/newview/lldateutil.cpp') diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index abb2fdeb9a..150edb5bf8 100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp @@ -59,12 +59,9 @@ static S32 days_from_month(S32 year, S32 month) } } -std::string LLDateUtil::ageFromDate(const std::string& date_string, - const LLDate& now) +static std::string age_from_date(S32 born_year, S32 born_month, S32 born_day, + const LLDate& now) { - S32 born_month, born_day, born_year; - S32 matched = sscanf(date_string.c_str(), "%d/%d/%d", &born_month, &born_day, &born_year); - if (matched != 3) return "???"; LLDate born_date; born_date.fromYMDHMS(born_year, born_month, born_day); F64 born_date_secs_since_epoch = born_date.secondsSinceEpoch(); @@ -155,7 +152,31 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string, return LLTrans::getString("TodayOld"); } +std::string LLDateUtil::ageFromDate(const std::string& date_string, + const LLDate& now) +{ + S32 born_month, born_day, born_year; + S32 matched = sscanf(date_string.c_str(), "%d/%d/%d", &born_month, &born_day, &born_year); + if (matched != 3) return "???"; + return age_from_date(born_year, born_month, born_day, now); +} + std::string LLDateUtil::ageFromDate(const std::string& date_string) { return ageFromDate(date_string, LLDate::now()); } + +std::string LLDateUtil::ageFromDateISO(const std::string& date_string, + const LLDate& now) +{ + S32 born_month, born_day, born_year; + S32 matched = sscanf(date_string.c_str(), "%d-%d-%d", + &born_year, &born_month, &born_day); + if (matched != 3) return "???"; + return age_from_date(born_year, born_month, born_day, now); +} + +std::string LLDateUtil::ageFromDateISO(const std::string& date_string) +{ + return ageFromDateISO(date_string, LLDate::now()); +} -- cgit v1.3 From 6d1e44b0338dd2815f605a5ba6e6528932cf3ebc Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 20 Apr 2010 14:52:09 -0700 Subject: Avatar picker requests are routed via sim capability --- indra/newview/lldateutil.cpp | 5 +++ indra/newview/lldateutil.h | 2 + indra/newview/llfloateravatarpicker.cpp | 44 +++++++++++++++------- indra/newview/llviewerregion.cpp | 1 + .../skins/default/xui/en/floater_avatar_picker.xml | 4 -- 5 files changed, 39 insertions(+), 17 deletions(-) (limited to 'indra/newview/lldateutil.cpp') diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index 150edb5bf8..1a13cd05fd 100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp @@ -180,3 +180,8 @@ std::string LLDateUtil::ageFromDateISO(const std::string& date_string) { return ageFromDateISO(date_string, LLDate::now()); } + +std::string LLDateUtil::ageFromDate(S32 year, S32 month, S32 day) +{ + return age_from_date(year, month, day, LLDate::now()); +} diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h index d077f4eefb..9c62241fe6 100644 --- a/indra/newview/lldateutil.h +++ b/indra/newview/lldateutil.h @@ -50,6 +50,8 @@ namespace LLDateUtil // Calls the above with LLDate::now() std::string ageFromDateISO(const std::string& date_string); + + std::string ageFromDate(S32 year, S32 month, S32 day); } #endif diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index ed458a4b02..06070f876d 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -36,10 +36,12 @@ // Viewer includes #include "llagent.h" #include "llcallingcard.h" -#include "lldateutil.h" // IDEVO +#include "lldate.h" // split() +#include "lldateutil.h" // ageFromDate() #include "llfocusmgr.h" #include "llfloaterreg.h" #include "llviewercontrol.h" +#include "llviewerregion.h" // getCapability() #include "llworld.h" // Linden libraries @@ -371,12 +373,26 @@ void LLFloaterAvatarPicker::find() std::string text = childGetValue("Edit").asString(); mQueryID.generate(); - // IDEVO - if (LLAvatarNameCache::useDisplayNames()) + + std::string url; + url.reserve(128); // avoid a memory allocation or two + + LLViewerRegion* region = gAgent.getRegion(); + url = region->getCapability("AvatarPickerSearch"); + // Prefer use of capabilities to search on both SLID and display name + // but allow display name search to be manually turned off for test + if (!url.empty() + && LLAvatarNameCache::useDisplayNames()) { - std::string url = "http://pdp15.lindenlab.com:8050/my-service/agent/search/"; + // capability urls don't end in '/', but we need one to parse + // query parameters correctly + if (url.size() > 0 && url[url.size()-1] != '/') + { + url += "/"; + } + url += "?name="; url += LLURI::escape(text); - url += "/"; + llinfos << "JAMESDEBUG picker " << url << llendl; LLHTTPClient::get(url, new LLAvatarPickerResponder(mQueryID)); } else @@ -483,7 +499,8 @@ void LLFloaterAvatarPicker::processResponse(const LLUUID& query_id, const LLSD& LLScrollListCtrl* search_results = getChild("SearchResults"); - if (content.size() == 0) + LLSD agents = content["agents"]; + if (agents.size() == 0) { LLStringUtil::format_map_t map; map["[TEXT]"] = childGetText("Edit"); @@ -501,8 +518,8 @@ void LLFloaterAvatarPicker::processResponse(const LLUUID& query_id, const LLSD& search_results->deleteAllItems(); LLSD item; - LLSD::array_const_iterator it = content.beginArray(); - for ( ; it != content.endArray(); ++it) + LLSD::array_const_iterator it = agents.beginArray(); + for ( ; it != agents.endArray(); ++it) { const LLSD& row = *it; item["id"] = row["agent_id"]; @@ -510,12 +527,13 @@ void LLFloaterAvatarPicker::processResponse(const LLUUID& query_id, const LLSD& columns[0]["column"] = "name"; columns[0]["value"] = row["display_name"]; columns[1]["column"] = "slid"; - columns[1]["value"] = row["slid"]; - std::string born_on = row["born_on"].asString(); + columns[1]["value"] = row["sl_id"]; + LLDate account_created = row["account_created"].asDate(); + S32 year, month, day; + account_created.split(&year, &month, &day); + std::string age = LLDateUtil::ageFromDate(year, month, day); columns[2]["column"] = "age"; - columns[2]["value"] = LLDateUtil::ageFromDateISO(born_on); - columns[3]["column"] = "profile"; - columns[3]["value"] = row["profile"]; + columns[2]["value"] = age; search_results->addElement(item); } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 83c5760b58..502fc87e41 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1466,6 +1466,7 @@ void LLViewerRegion::setSeedCapability(const std::string& url) LLSD capabilityNames = LLSD::emptyArray(); capabilityNames.append("AttachmentResources"); + capabilityNames.append("AvatarPickerSearch"); capabilityNames.append("ChatSessionRequest"); capabilityNames.append("CopyInventoryFromNotecard"); capabilityNames.append("DispatchRegionInfo"); diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml index 59923bec96..489b7c0536 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml @@ -104,10 +104,6 @@ label="Age" name="age" width="100" /> - Date: Tue, 20 Apr 2010 16:06:25 -0700 Subject: LLDateUtil::ageFromDate() now takes more sensible parameters This and last reviewed with Kelly --- indra/newview/lldateutil.cpp | 15 ++++++--------- indra/newview/lldateutil.h | 2 +- indra/newview/llfloateravatarpicker.cpp | 3 ++- 3 files changed, 9 insertions(+), 11 deletions(-) (limited to 'indra/newview/lldateutil.cpp') diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index 1a13cd05fd..32b8b9662a 100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp @@ -59,8 +59,10 @@ static S32 days_from_month(S32 year, S32 month) } } -static std::string age_from_date(S32 born_year, S32 born_month, S32 born_day, - const LLDate& now) +std::string LLDateUtil::ageFromDate(S32 born_year, + S32 born_month, + S32 born_day, + const LLDate& now) { LLDate born_date; born_date.fromYMDHMS(born_year, born_month, born_day); @@ -158,7 +160,7 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string, S32 born_month, born_day, born_year; S32 matched = sscanf(date_string.c_str(), "%d/%d/%d", &born_month, &born_day, &born_year); if (matched != 3) return "???"; - return age_from_date(born_year, born_month, born_day, now); + return ageFromDate(born_year, born_month, born_day, now); } std::string LLDateUtil::ageFromDate(const std::string& date_string) @@ -173,15 +175,10 @@ std::string LLDateUtil::ageFromDateISO(const std::string& date_string, S32 matched = sscanf(date_string.c_str(), "%d-%d-%d", &born_year, &born_month, &born_day); if (matched != 3) return "???"; - return age_from_date(born_year, born_month, born_day, now); + return ageFromDate(born_year, born_month, born_day, now); } std::string LLDateUtil::ageFromDateISO(const std::string& date_string) { return ageFromDateISO(date_string, LLDate::now()); } - -std::string LLDateUtil::ageFromDate(S32 year, S32 month, S32 day) -{ - return age_from_date(year, month, day, LLDate::now()); -} diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h index 9c62241fe6..d72d8d1ed4 100644 --- a/indra/newview/lldateutil.h +++ b/indra/newview/lldateutil.h @@ -51,7 +51,7 @@ namespace LLDateUtil // Calls the above with LLDate::now() std::string ageFromDateISO(const std::string& date_string); - std::string ageFromDate(S32 year, S32 month, S32 day); + std::string ageFromDate(S32 born_year, S32 born_month, S32 born_day, const LLDate& now); } #endif diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index 06070f876d..76567229d9 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -531,7 +531,8 @@ void LLFloaterAvatarPicker::processResponse(const LLUUID& query_id, const LLSD& LLDate account_created = row["account_created"].asDate(); S32 year, month, day; account_created.split(&year, &month, &day); - std::string age = LLDateUtil::ageFromDate(year, month, day); + std::string age = + LLDateUtil::ageFromDate(year, month, day, LLDate::now()); columns[2]["column"] = "age"; columns[2]["value"] = age; search_results->addElement(item); -- cgit v1.3 From 5aa8b5d37eb6824865d09af248aa9d9d518daeb9 Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 11 May 2010 17:27:14 -0700 Subject: Clean up merge, dueling LLDateUtil refactoring --- indra/newview/lldateutil.cpp | 72 +++++++++++++++++++-------------- indra/newview/lldateutil.h | 6 +-- indra/newview/llfloateravatarpicker.cpp | 2 +- indra/newview/tests/lldateutil_test.cpp | 18 ++++----- 4 files changed, 54 insertions(+), 44 deletions(-) (limited to 'indra/newview/lldateutil.cpp') diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index 32b8b9662a..ae955b6cad 100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp @@ -59,18 +59,22 @@ static S32 days_from_month(S32 year, S32 month) } } -std::string LLDateUtil::ageFromDate(S32 born_year, - S32 born_month, - S32 born_day, - const LLDate& now) +bool LLDateUtil::dateFromPDTString(LLDate& date, const std::string& str) { - LLDate born_date; - born_date.fromYMDHMS(born_year, born_month, born_day); - F64 born_date_secs_since_epoch = born_date.secondsSinceEpoch(); - // Correct for the fact that account creation dates are in Pacific time, - // == UTC - 8 - born_date_secs_since_epoch += 8.0 * 60.0 * 60.0; - born_date.secondsSinceEpoch(born_date_secs_since_epoch); + S32 month, day, year; + S32 matched = sscanf(str.c_str(), "%d/%d/%d", &month, &day, &year); + if (matched != 3) return false; + date.fromYMDHMS(year, month, day); + F64 secs_since_epoch = date.secondsSinceEpoch(); + // Correct for the fact that specified date is in Pacific time, == UTC - 8 + secs_since_epoch += 8.0 * 60.0 * 60.0; + date.secondsSinceEpoch(secs_since_epoch); + return true; +} + +std::string LLDateUtil::ageFromDate(const LLDate& born_date, const LLDate& now) +{ + S32 born_month, born_day, born_year; // explode out to month/day/year again born_date.split(&born_year, &born_month, &born_day); @@ -154,13 +158,14 @@ std::string LLDateUtil::ageFromDate(S32 born_year, return LLTrans::getString("TodayOld"); } -std::string LLDateUtil::ageFromDate(const std::string& date_string, - const LLDate& now) +std::string LLDateUtil::ageFromDate(const std::string& date_string, const LLDate& now) { - S32 born_month, born_day, born_year; - S32 matched = sscanf(date_string.c_str(), "%d/%d/%d", &born_month, &born_day, &born_year); - if (matched != 3) return "???"; - return ageFromDate(born_year, born_month, born_day, now); + LLDate born_date; + + if (!dateFromPDTString(born_date, date_string)) + return "???"; + + return ageFromDate(born_date, now); } std::string LLDateUtil::ageFromDate(const std::string& date_string) @@ -168,17 +173,22 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string) return ageFromDate(date_string, LLDate::now()); } -std::string LLDateUtil::ageFromDateISO(const std::string& date_string, - const LLDate& now) -{ - S32 born_month, born_day, born_year; - S32 matched = sscanf(date_string.c_str(), "%d-%d-%d", - &born_year, &born_month, &born_day); - if (matched != 3) return "???"; - return ageFromDate(born_year, born_month, born_day, now); -} - -std::string LLDateUtil::ageFromDateISO(const std::string& date_string) -{ - return ageFromDateISO(date_string, LLDate::now()); -} +//std::string LLDateUtil::ageFromDateISO(const std::string& date_string, +// const LLDate& now) +//{ +// S32 born_month, born_day, born_year; +// S32 matched = sscanf(date_string.c_str(), "%d-%d-%d", +// &born_year, &born_month, &born_day); +// if (matched != 3) return "???"; +// date.fromYMDHMS(year, month, day); +// F64 secs_since_epoch = date.secondsSinceEpoch(); +// // Correct for the fact that specified date is in Pacific time, == UTC - 8 +// secs_since_epoch += 8.0 * 60.0 * 60.0; +// date.secondsSinceEpoch(secs_since_epoch); +// return ageFromDate(born_year, born_month, born_day, now); +//} +// +//std::string LLDateUtil::ageFromDateISO(const std::string& date_string) +//{ +// return ageFromDateISO(date_string, LLDate::now()); +//} diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h index a2bfa11ce7..8d41eea511 100644 --- a/indra/newview/lldateutil.h +++ b/indra/newview/lldateutil.h @@ -69,12 +69,12 @@ namespace LLDateUtil std::string ageFromDate(const std::string& date_string); // As above, for YYYY-MM-DD dates - std::string ageFromDateISO(const std::string& date_string, const LLDate& now); + //std::string ageFromDateISO(const std::string& date_string, const LLDate& now); // Calls the above with LLDate::now() - std::string ageFromDateISO(const std::string& date_string); + //std::string ageFromDateISO(const std::string& date_string); - std::string ageFromDate(S32 born_year, S32 born_month, S32 born_day, const LLDate& now); + //std::string ageFromDate(S32 born_year, S32 born_month, S32 born_day, const LLDate& now); } #endif diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index bca9282cec..e0346222c0 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -604,7 +604,7 @@ void LLFloaterAvatarPicker::processResponse(const LLUUID& query_id, const LLSD& S32 year, month, day; account_created.split(&year, &month, &day); std::string age = - LLDateUtil::ageFromDate(year, month, day, LLDate::now()); + LLDateUtil::ageFromDate(account_created, LLDate::now()); columns[2]["column"] = "age"; columns[2]["value"] = age; search_results->addElement(item); diff --git a/indra/newview/tests/lldateutil_test.cpp b/indra/newview/tests/lldateutil_test.cpp index e19983db8f..9ec24eb515 100644 --- a/indra/newview/tests/lldateutil_test.cpp +++ b/indra/newview/tests/lldateutil_test.cpp @@ -190,13 +190,13 @@ namespace tut "3 weeks old" ); } - template<> template<> - void dateutil_object_t::test<6>() - { - set_test_name("ISO dates"); - LLDate now(std::string("2010-01-04T12:00:00Z")); - ensure_equals("days", - LLDateUtil::ageFromDateISO("2009-12-13", now), - "3 weeks old" ); - } + //template<> template<> + //void dateutil_object_t::test<6>() + //{ + // set_test_name("ISO dates"); + // LLDate now(std::string("2010-01-04T12:00:00Z")); + // ensure_equals("days", + // LLDateUtil::ageFromDateISO("2009-12-13", now), + // "3 weeks old" ); + //} } -- cgit v1.3