diff options
Diffstat (limited to 'indra/newview/llconversationlog.cpp')
| -rw-r--r-- | indra/newview/llconversationlog.cpp | 53 | 
1 files changed, 28 insertions, 25 deletions
| diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp index 27be2bc5ae..7a5a476efb 100644 --- a/indra/newview/llconversationlog.cpp +++ b/indra/newview/llconversationlog.cpp @@ -36,8 +36,7 @@ struct Conversation_params  {  	Conversation_params(time_t time)  	:	mTime(time), -		mTimestamp(LLConversation::createTimestamp(time)), -		mIsVoice(false) +		mTimestamp(LLConversation::createTimestamp(time))  	{}  	time_t		mTime; @@ -47,7 +46,6 @@ struct Conversation_params  	std::string	mHistoryFileName;  	LLUUID		mSessionID;  	LLUUID		mParticipantID; -	bool		mIsVoice;  	bool		mHasOfflineIMs;  }; @@ -63,7 +61,6 @@ LLConversation::LLConversation(const Conversation_params& params)  	mHistoryFileName(params.mHistoryFileName),  	mSessionID(params.mSessionID),  	mParticipantID(params.mParticipantID), -	mIsVoice(params.mIsVoice),  	mHasOfflineIMs(params.mHasOfflineIMs)  {  	setListenIMFloaterOpened(); @@ -75,9 +72,8 @@ LLConversation::LLConversation(const LLIMModel::LLIMSession& session)  	mConversationType(session.mSessionType),  	mConversationName(session.mName),  	mHistoryFileName(session.mHistoryFileName), -	mSessionID(session.mSessionID), +	mSessionID(session.isOutgoingAdHoc() ? session.generateOutgouigAdHocHash() : session.mSessionID),  	mParticipantID(session.mOtherParticipantID), -	mIsVoice(session.mStartedAsIMCall),  	mHasOfflineIMs(session.mHasOfflineMessage)  {  	setListenIMFloaterOpened(); @@ -92,7 +88,6 @@ LLConversation::LLConversation(const LLConversation& conversation)  	mHistoryFileName	= conversation.getHistoryFileName();  	mSessionID			= conversation.getSessionID();  	mParticipantID		= conversation.getParticipantID(); -	mIsVoice			= conversation.isVoice();  	mHasOfflineIMs		= conversation.hasOfflineMessages();  	setListenIMFloaterOpened(); @@ -147,12 +142,11 @@ void LLConversation::setListenIMFloaterOpened()  {  	LLIMFloater* floater = LLIMFloater::findInstance(mSessionID); -	bool has_offline_ims = !mIsVoice && mHasOfflineIMs;  	bool offline_ims_visible = LLIMFloater::isVisible(floater) && floater->hasFocus();  	// we don't need to listen for im floater with this conversation is opened  	// if floater is already opened or this conversation doesn't have unread offline messages -	if (has_offline_ims && !offline_ims_visible) +	if (mHasOfflineIMs && !offline_ims_visible)  	{  		mIMFloaterShowedConnection = LLIMFloater::setIMFloaterShowedCallback(boost::bind(&LLConversation::onIMFloaterShown, this, _1));  	} @@ -231,8 +225,8 @@ void LLConversationLog::enableLogging(bool enable)  void LLConversationLog::logConversation(const LLUUID& session_id)  { -	LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id); -	LLConversation* conversation = findConversation(session_id); +	const LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id); +	LLConversation* conversation = findConversation(session);  	if (session && conversation)  	{ @@ -240,14 +234,12 @@ void LLConversationLog::logConversation(const LLUUID& session_id)  	}  	else if (session && !conversation)  	{ -		createConversation(session_id); +		createConversation(session);  	}  } -void LLConversationLog::createConversation(const LLUUID& session_id) +void LLConversationLog::createConversation(const LLIMModel::LLIMSession* session)  { -	LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id); -  	if (session)  	{  		LLConversation conversation(*session); @@ -262,14 +254,18 @@ void LLConversationLog::createConversation(const LLUUID& session_id)  	}  } -void LLConversationLog::updateConversationName(const LLUUID& session_id, const std::string& name) +void LLConversationLog::updateConversationName(const LLIMModel::LLIMSession* session, const std::string& name)  { -	LLConversation* conversation = findConversation(session_id); +	if (!session) +	{ +		return; +	} +	LLConversation* conversation = findConversation(session);  	if (conversation)  	{  		conversation->setConverstionName(name); -		notifyPrticularConversationObservers(session_id, LLConversationLogObserver::CHANGED_NAME); +		notifyPrticularConversationObservers(conversation->getSessionID(), LLConversationLogObserver::CHANGED_NAME);  	}  } @@ -282,8 +278,15 @@ void LLConversationLog::updateConversationTimestamp(LLConversation* conversation  	}  } -LLConversation* LLConversationLog::findConversation(const LLUUID& session_id) +LLConversation* LLConversationLog::findConversation(const LLIMModel::LLIMSession* session)  { +	if (!session) +	{ +		return NULL; +	} + +	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)  	{ @@ -384,7 +387,7 @@ bool LLConversationLog::saveToFile(const std::string& filename)  		fprintf(fp, "[%d] %d %d %d %s| %s %s %s|\n",  				(S32)conv_it->getTime(),  				(S32)conv_it->getConversationType(), -				(S32)conv_it->isVoice(), +				(S32)0,  				(S32)conv_it->hasOfflineMessages(),  				     conv_it->getConversationName().c_str(),  				participant_id.c_str(), @@ -414,10 +417,11 @@ bool LLConversationLog::loadFromFile(const std::string& filename)  	char part_id_buffer[MAX_STRING];  	char conv_id_buffer[MAX_STRING];  	char history_file_name[MAX_STRING]; -	int is_voice;  	int has_offline_ims;  	int stype;  	S32 time; +	// before CHUI-348 it was a flag of conversation voice state +	int prereserved_unused;  	while (!feof(fp) && fgets(buffer, MAX_STRING, fp))  	{ @@ -428,7 +432,7 @@ bool LLConversationLog::loadFromFile(const std::string& filename)  		sscanf(buffer, "[%d] %d %d %d %[^|]| %s %s %[^|]|",  				&time,  				&stype, -				&is_voice, +				&prereserved_unused,  				&has_offline_ims,  				conv_name_buffer,  				part_id_buffer, @@ -437,7 +441,6 @@ bool LLConversationLog::loadFromFile(const std::string& filename)  		Conversation_params params(time);  		params.mConversationType = (SessionType)stype; -		params.mIsVoice = is_voice;  		params.mHasOfflineIMs = has_offline_ims;  		params.mConversationName = std::string(conv_name_buffer);  		params.mParticipantID = LLUUID(part_id_buffer); @@ -489,7 +492,7 @@ void LLConversationLog::onNewMessageReceived(const LLSD& data)  	logConversation(session_id);  } -void LLConversationLog::onAvatarNameCache(const LLUUID& participant_id, const LLAvatarName& av_name, LLIMModel::LLIMSession* session) +void LLConversationLog::onAvatarNameCache(const LLUUID& participant_id, const LLAvatarName& av_name, const LLIMModel::LLIMSession* session)  { -	updateConversationName(session->mSessionID, av_name.getCompleteName()); +	updateConversationName(session, av_name.getCompleteName());  } | 
