From 44aecbf4eca7c2d94ed88f11dedd237e93b01010 Mon Sep 17 00:00:00 2001 From: RevolutionSmythe Date: Fri, 18 Mar 2011 19:26:19 -0500 Subject: Fix setting the viewer offset time from OpenRegionSettings, and also have it show what UTC offset it is representing in the time bar. --- linden/indra/llcommon/lltimer.cpp | 6 +++--- linden/indra/newview/kowopenregionsettings.cpp | 6 +++++- linden/indra/newview/viewertime.cpp | 18 ++++++++++++++---- 3 files changed, 22 insertions(+), 8 deletions(-) (limited to 'linden') diff --git a/linden/indra/llcommon/lltimer.cpp b/linden/indra/llcommon/lltimer.cpp index 2d283ec..b825c1e 100644 --- a/linden/indra/llcommon/lltimer.cpp +++ b/linden/indra/llcommon/lltimer.cpp @@ -529,14 +529,14 @@ struct tm* utc_to_offset_time(time_t utc_time, S32 offset, BOOL DST) { if (DST) { - //Subtract one then - offset--; + //Add one then + offset++; } // We subtract off the PST/PDT offset _before_ getting // "UTC" time, because this will handle wrapping around // for 5 AM UTC -> 10 PM PDT of the previous day. - utc_time -= offset * MIN_PER_HOUR * SEC_PER_MIN; + utc_time -= (-1 * offset) * MIN_PER_HOUR * SEC_PER_MIN; // Internal buffer to PST/PDT (see above) struct tm* internal_time = gmtime(&utc_time); diff --git a/linden/indra/newview/kowopenregionsettings.cpp b/linden/indra/newview/kowopenregionsettings.cpp index ef14d2a..0c4bb38 100644 --- a/linden/indra/newview/kowopenregionsettings.cpp +++ b/linden/indra/newview/kowopenregionsettings.cpp @@ -37,6 +37,7 @@ #include "llfloaterregioninfo.h" #include "llfloaterworldmap.h" #include "llvoiceclient.h" +#include "viewertime.h" //DEBUG includes //#include "llsdserialize.h" //LLSDNotationStreamer - for dumping LLSD to string @@ -150,12 +151,15 @@ class OpenRegionInfoUpdate : public LLHTTPNode } if ( body.has("OffsetOfUTC") ) { - gSavedSettings.setS32("TimeOffset", body["OffsetOfUTC"].asReal()); + gSavedSettings.setS32("TimeOffset", body["OffsetOfUTC"].asInteger()); gSavedSettings.setBOOL("UseTimeOffset", true); + ViewerTime::sUseTimeOffset = true; + ViewerTime::sTimeOffset = gSavedSettings.getS32("TimeOffset"); } if ( body.has("OffsetOfUTCDST") ) { gSavedSettings.setBOOL("TimeOffsetDST", body["OffsetOfUTCDST"].asInteger() == 1 ? TRUE : FALSE); + ViewerTime::sTimeOffsetDST = gSavedSettings.getBOOL("TimeOffsetDST"); } if ( body.has("RenderWater") ) { diff --git a/linden/indra/newview/viewertime.cpp b/linden/indra/newview/viewertime.cpp index 06436b6..8a65a23 100644 --- a/linden/indra/newview/viewertime.cpp +++ b/linden/indra/newview/viewertime.cpp @@ -27,7 +27,8 @@ * COMPLETENESS OR PERFORMANCE. * $/LicenseInfo$ */ - + +#include #include "llviewerprecompiledheaders.h" #include "llappviewer.h" // for gPacificDaylightTime @@ -129,10 +130,19 @@ void ViewerTime::refresh() if (hour == 0) hour = 12; } - mTZ = "PST"; - if (gPacificDaylightTime) + if (sUseTimeOffset) + { + std::stringstream myString; + myString << "UTC " << sTimeOffset; + mTZ = myString.str(); + } + else { - mTZ = "PDT"; + mTZ = "PST"; + if (gPacificDaylightTime) + { + mTZ = "PDT"; + } } } else // just UTC -- cgit v1.1