summaryrefslogtreecommitdiff
path: root/indra/newview/llconversationlog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llconversationlog.cpp')
-rw-r--r--indra/newview/llconversationlog.cpp67
1 files changed, 38 insertions, 29 deletions
diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp
index 3b75cd8203..ff1f819d7d 100644
--- a/indra/newview/llconversationlog.cpp
+++ b/indra/newview/llconversationlog.cpp
@@ -188,15 +188,23 @@ void LLConversationLogFriendObserver::changed(U32 mask)
LLConversationLog::LLConversationLog() :
mAvatarNameCacheConnection()
{
- LLControlVariable* ctrl = gSavedPerAccountSettings.getControl("LogInstantMessages").get();
- if (ctrl)
+ LLControlVariable* log_instant_message = gSavedPerAccountSettings.getControl("LogInstantMessages").get();
+ LLControlVariable* keep_convers_log = gSavedSettings.getControl("KeepConversationLogTranscripts").get();
+ bool is_log_message = false;
+ bool is_keep_log = false;
+
+ if (log_instant_message)
{
- ctrl->getSignal()->connect(boost::bind(&LLConversationLog::enableLogging, this, _2));
- if (ctrl->getValue().asBoolean())
- {
- enableLogging(true);
- }
+ log_instant_message->getSignal()->connect(boost::bind(&LLConversationLog::enableLogging, this, _2));
+ is_log_message = log_instant_message->getValue().asBoolean();
}
+ if (keep_convers_log)
+ {
+ keep_convers_log->getSignal()->connect(boost::bind(&LLConversationLog::enableLogging, this, _2));
+ is_keep_log = keep_convers_log->getValue().asBoolean();
+ }
+
+ enableLogging(is_log_message && is_keep_log);
}
void LLConversationLog::enableLogging(bool enable)
@@ -229,17 +237,20 @@ void LLConversationLog::logConversation(const LLUUID& session_id, BOOL has_offli
const LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id);
LLConversation* conversation = findConversation(session);
- if (session && conversation)
+ if (session)
{
- if(has_offline_msg)
+ if (conversation)
{
- updateOfflineIMs(session, has_offline_msg);
+ if(has_offline_msg)
+ {
+ updateOfflineIMs(session, has_offline_msg);
+ }
+ updateConversationTimestamp(conversation);
+ }
+ else
+ {
+ createConversation(session);
}
- updateConversationTimestamp(conversation);
- }
- else if (session && !conversation)
- {
- createConversation(session);
}
}
@@ -304,19 +315,17 @@ void LLConversationLog::updateConversationTimestamp(LLConversation* conversation
LLConversation* LLConversationLog::findConversation(const LLIMModel::LLIMSession* session)
{
- if (!session)
+ if (session)
{
- return NULL;
- }
+ const LLUUID session_id = session->isOutgoingAdHoc() ? session->generateOutgouigAdHocHash() : session->mSessionID;
- const LLUUID session_id = session->isOutgoingAdHoc() ? session->generateOutgouigAdHocHash() : session->mSessionID;
-
- conversations_vec_t::iterator conv_it = mConversations.begin();
- for(; conv_it != mConversations.end(); ++conv_it)
- {
- if (conv_it->getSessionID() == session_id)
+ conversations_vec_t::iterator conv_it = mConversations.begin();
+ for(; conv_it != mConversations.end(); ++conv_it)
{
- return &*conv_it;
+ if (conv_it->getSessionID() == session_id)
+ {
+ return &*conv_it;
+ }
}
}
@@ -408,8 +417,8 @@ bool LLConversationLog::saveToFile(const std::string& filename)
// [1343221177] 0 1 0 John Doe| 7e4ec5be-783f-49f5-71dz-16c58c64c145 4ec62a74-c246-0d25-2af6-846beac2aa55 john.doe|
// [1343222639] 2 0 0 Ad-hoc Conference| c3g67c89-c479-4c97-b21d-32869bcfe8rc 68f1c33e-4135-3e3e-a897-8c9b23115c09 Ad-hoc Conference hash597394a0-9982-766d-27b8-c75560213b9a|
- fprintf(fp, "[%d] %d %d %d %s| %s %s %s|\n",
- (S32)conv_it->getTime(),
+ fprintf(fp, "[%lld] %d %d %d %s| %s %s %s|\n",
+ (S64)conv_it->getTime(),
(S32)conv_it->getConversationType(),
(S32)0,
(S32)conv_it->hasOfflineMessages(),
@@ -443,7 +452,7 @@ bool LLConversationLog::loadFromFile(const std::string& filename)
char history_file_name[MAX_STRING];
int has_offline_ims;
int stype;
- S32 time;
+ time_t time;
// before CHUI-348 it was a flag of conversation voice state
int prereserved_unused;
@@ -453,7 +462,7 @@ bool LLConversationLog::loadFromFile(const std::string& filename)
part_id_buffer[0] = '\0';
conv_id_buffer[0] = '\0';
- sscanf(buffer, "[%d] %d %d %d %[^|]| %s %s %[^|]|",
+ sscanf(buffer, "[%ld] %d %d %d %[^|]| %s %s %[^|]|",
&time,
&stype,
&prereserved_unused,