added loading/parsing of Nearby Chat history - EXT-4777 Implement saving and loading chat history for Nearby Chat (both plain text and widgeted chat)

--HG--
branch : product-engine
meow-7.2.2
Igor Borovkov 2010-02-02 14:19:15 +02:00
parent e43d0f1815
commit f69510e20c
3 changed files with 54 additions and 0 deletions

View File

@ -62,6 +62,12 @@
static const S32 RESIZE_BAR_THICKNESS = 3;
const static std::string IM_TIME("time");
const static std::string IM_TEXT("message");
const static std::string IM_FROM("from");
const static std::string IM_FROM_ID("from_id");
LLNearbyChat::LLNearbyChat(const LLSD& key)
: LLDockableFloater(NULL, false, false, key)
,mChatHistory(NULL)
@ -262,6 +268,39 @@ void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
nearby_chat->updateChatHistoryStyle();
}
void LLNearbyChat::loadHistory()
{
std::list<LLSD> history;
LLLogChat::loadAllHistory("chat", history);
std::list<LLSD>::const_iterator it = history.begin();
while (it != history.end())
{
const LLSD& msg = *it;
std::string from = msg[IM_FROM];
LLUUID from_id = LLUUID::null;
if (msg[IM_FROM_ID].isUndefined())
{
gCacheName->getUUID(from, from_id);
}
LLChat chat;
chat.mFromName = from;
chat.mFromID = from_id;
chat.mText = msg[IM_TEXT];
chat.mTimeStr = msg[IM_TIME];
addMessage(chat);
it++;
}
}
//static
LLNearbyChat* LLNearbyChat::getInstance()
{
return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
}
////////////////////////////////////////////////////////////////////////////////
//
@ -278,3 +317,4 @@ void LLNearbyChat::onFocusLost()
setBackgroundOpaque(false);
LLPanel::onFocusLost();
}

View File

@ -65,6 +65,10 @@ public:
static void processChatHistoryStyleUpdate(const LLSD& newvalue);
void loadHistory();
static LLNearbyChat* getInstance();
private:
virtual void applySavedVariables();

View File

@ -67,6 +67,7 @@
#include "llmemorystream.h"
#include "llmessageconfig.h"
#include "llmoveview.h"
#include "llnearbychat.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llteleporthistory.h"
@ -904,6 +905,7 @@ bool idle_startup()
LLFile::mkdir(gDirUtilp->getChatLogsDir());
LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
//good as place as any to create user windlight directories
std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", ""));
LLFile::mkdir(user_windlight_path_name.c_str());
@ -1284,6 +1286,14 @@ bool idle_startup()
LLAppViewer::instance()->loadNameCache();
}
//gCacheName is required for nearby chat history loading
//so I just moved nearby history loading a few states further
if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory"))
{
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if (nearby_chat) nearby_chat->loadHistory();
}
// *Note: this is where gWorldMap used to be initialized.
// register null callbacks for audio until the audio system is initialized