diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/lleventinfo.cpp |
Print done when done.
Diffstat (limited to 'indra/newview/lleventinfo.cpp')
-rw-r--r-- | indra/newview/lleventinfo.cpp | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/indra/newview/lleventinfo.cpp b/indra/newview/lleventinfo.cpp new file mode 100644 index 0000000000..8f63b61fa1 --- /dev/null +++ b/indra/newview/lleventinfo.cpp @@ -0,0 +1,134 @@ +/** + * @file lleventinfo.cpp + * @brief LLEventInfo class implementation + * + * Copyright (c) 2004-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "llviewerprecompiledheaders.h" +#include "lleventinfo.h" + +#include "viewer.h" // for gPacificDaylightTime +#include "lluuid.h" +#include "message.h" + +LLEventInfo::cat_map LLEventInfo::sCategories; + +LLEventInfo::LLEventInfo(F32 global_x, F32 global_y, + const char* name, + U32 id, + S32 unix_time, + U32 event_flags) +: mName( name ), + mID( id ), + mPosGlobal( global_x, global_y, 40.0 ), + mUnixTime( unix_time ), + mEventFlags(event_flags), + mSelected( FALSE ) +{ + struct tm* timep; + // Convert to Pacific, based on server's opinion of whether + // it's daylight savings time there. + timep = utc_to_pacific_time(unix_time, gPacificDaylightTime); + + S32 display_hour = timep->tm_hour % 12; + if (display_hour == 0) display_hour = 12; + + mTimeStr = llformat("% 2d/% 2d % 2d:%02d %s", + timep->tm_mon+1, + timep->tm_year-100, + display_hour, + timep->tm_min, + (timep->tm_hour < 12 ? "AM" : "PM") ); +} + + +void LLEventInfo::unpack(LLMessageSystem *msg) +{ + const U32 MAX_DESC_LENGTH = 1024; + + U32 event_id; + msg->getU32("EventData", "EventID", event_id); + mID = event_id; + + char buffer[MAX_DESC_LENGTH]; + msg->getString("EventData", "Name", MAX_DESC_LENGTH, buffer); + mName = buffer; + + msg->getString("EventData", "Category", MAX_DESC_LENGTH, buffer); + mCategoryStr = buffer; + + msg->getString("EventData", "Date", MAX_DESC_LENGTH, buffer); + // *FIX: evil hack to let users know that we don't localize + // time information. Hack! This is WRONG. + mTimeStr = buffer; + + U32 duration; + msg->getU32("EventData","Duration",duration); + mDuration = duration; + + msg->getU32("EventData", "DateUTC", mUnixTime); + + msg->getString("EventData", "Desc", MAX_DESC_LENGTH, buffer); + mDesc = buffer; + + msg->getString("EventData", "Creator", MAX_DESC_LENGTH, buffer); + mRunByID = LLUUID(buffer); + + U32 foo; + msg->getU32("EventData", "Cover", foo); + + mHasCover = foo ? TRUE : FALSE; + if (mHasCover) + { + U32 cover; + msg->getU32("EventData", "Amount", cover); + mCover = cover; + } + + char sim_name[256]; + msg->getString("EventData", "SimName", 256, sim_name); + mSimName.assign(sim_name); + + msg->getVector3d("EventData", "GlobalPos", mPosGlobal); + + // Mature content + U32 event_flags; + msg->getU32("EventData", "EventFlags", event_flags); + mEventFlags = event_flags; +} + +// static +void LLEventInfo::loadCategories(LLUserAuth::options_t event_options) +{ + LLUserAuth::options_t::iterator resp_it; + for (resp_it = event_options.begin(); + resp_it != event_options.end(); + ++resp_it) + { + const LLUserAuth::response_t& response = *resp_it; + + LLUserAuth::response_t::const_iterator option_it; + + S32 cat_id = 0; + option_it = response.find("category_id"); + if (option_it != response.end()) + { + cat_id = atoi(option_it->second.c_str()); + } + else + { + continue; + } + + // Add the category id/name pair + option_it = response.find("category_name"); + if (option_it != response.end()) + { + LLEventInfo::sCategories[cat_id] = option_it->second; + } + + } + +} |