merge
commit
142833f93f
|
|
@ -228,7 +228,7 @@ 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)
|
||||
if (session && session->mOtherParticipantID != gAgentID)
|
||||
{
|
||||
if (conversation)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@
|
|||
#include "llimview.h" //For LLIMModel
|
||||
#include "lltrans.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
//
|
||||
// Conversation items : common behaviors
|
||||
//
|
||||
|
|
@ -234,15 +236,19 @@ void LLConversationItemSession::updateName(LLConversationItemParticipant* partic
|
|||
}
|
||||
|
||||
uuid_vec_t temp_uuids; // uuids vector for building the added participants' names string
|
||||
if (conversation_type == CONV_SESSION_AD_HOC)
|
||||
if (conversation_type == CONV_SESSION_AD_HOC || conversation_type == CONV_SESSION_1_ON_1)
|
||||
{
|
||||
// Build a string containing the participants UUIDs (minus own agent) and check if ready for display (we don't want "(waiting)" in there)
|
||||
// Note: we don't bind ourselves to the LLAvatarNameCache event as updateParticipantName() is called by
|
||||
// onAvatarNameCache() which is itself attached to the same event.
|
||||
child_list_t::iterator iter = mChildren.begin();
|
||||
while (iter != mChildren.end())
|
||||
|
||||
// In the case of a P2P conversation, we need to grab the name of the other participant in the session instance itself
|
||||
// as we do not create participants for such a session.
|
||||
|
||||
LLFolderViewModelItem * itemp;
|
||||
BOOST_FOREACH(itemp, mChildren)
|
||||
{
|
||||
LLConversationItemParticipant* current_participant = dynamic_cast<LLConversationItemParticipant*>(*iter);
|
||||
LLConversationItem* current_participant = dynamic_cast<LLConversationItem*>(itemp);
|
||||
// Add the avatar uuid to the list (except if it's the own agent uuid)
|
||||
if (current_participant->getUUID() != gAgentID)
|
||||
{
|
||||
|
|
@ -250,18 +256,13 @@ void LLConversationItemSession::updateName(LLConversationItemParticipant* partic
|
|||
if (LLAvatarNameCache::get(current_participant->getUUID(), &av_name))
|
||||
{
|
||||
temp_uuids.push_back(current_participant->getUUID());
|
||||
|
||||
if (conversation_type == CONV_SESSION_1_ON_1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
iter++;
|
||||
}
|
||||
}
|
||||
else if (conversation_type == CONV_SESSION_1_ON_1)
|
||||
{
|
||||
// In the case of a P2P conversation, we need to grab the name of the other participant in the session instance itself
|
||||
// as we do not create participants for such a session.
|
||||
if (gAgentID != participant->getUUID())
|
||||
{
|
||||
temp_uuids.push_back(participant->getUUID());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ BOOL LLFloaterConversationLog::postBuild()
|
|||
|
||||
void LLFloaterConversationLog::draw()
|
||||
{
|
||||
getChild<LLMenuButton>("conversations_gear_btn")->setEnabled(mConversationLogList->getSelectedItem() != NULL);
|
||||
LLFloater::draw();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -498,25 +498,28 @@ void LLFloaterIMSessionTab::refreshConversation()
|
|||
updateSessionName(session_name);
|
||||
}
|
||||
|
||||
LLParticipantList* participant_list = getParticipantList();
|
||||
if (participant_list)
|
||||
if (mSessionID.notNull())
|
||||
{
|
||||
LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = participant_list->getChildrenBegin();
|
||||
LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = participant_list->getChildrenEnd();
|
||||
LLIMSpeakerMgr *speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
|
||||
while (current_participant_model != end_participant_model)
|
||||
LLParticipantList* participant_list = getParticipantList();
|
||||
if (participant_list)
|
||||
{
|
||||
LLConversationItemParticipant* participant_model = dynamic_cast<LLConversationItemParticipant*>(*current_participant_model);
|
||||
if (speaker_mgr && participant_model)
|
||||
LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = participant_list->getChildrenBegin();
|
||||
LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = participant_list->getChildrenEnd();
|
||||
LLIMSpeakerMgr *speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
|
||||
while (current_participant_model != end_participant_model)
|
||||
{
|
||||
LLSpeaker *participant_speaker = speaker_mgr->findSpeaker(participant_model->getUUID());
|
||||
LLSpeaker *agent_speaker = speaker_mgr->findSpeaker(gAgentID);
|
||||
if (participant_speaker && agent_speaker)
|
||||
LLConversationItemParticipant* participant_model = dynamic_cast<LLConversationItemParticipant*>(*current_participant_model);
|
||||
if (speaker_mgr && participant_model)
|
||||
{
|
||||
participant_model->setDisplayModeratorRole(agent_speaker->mIsModerator && participant_speaker->mIsModerator);
|
||||
LLSpeaker *participant_speaker = speaker_mgr->findSpeaker(participant_model->getUUID());
|
||||
LLSpeaker *agent_speaker = speaker_mgr->findSpeaker(gAgentID);
|
||||
if (participant_speaker && agent_speaker)
|
||||
{
|
||||
participant_model->setDisplayModeratorRole(agent_speaker->mIsModerator && participant_speaker->mIsModerator);
|
||||
}
|
||||
}
|
||||
current_participant_model++;
|
||||
}
|
||||
current_participant_model++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -847,8 +847,9 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co
|
|||
|
||||
bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, bool voice, bool has_offline_msg)
|
||||
{
|
||||
uuid_vec_t no_ids;
|
||||
return newSession(session_id, name, type, other_participant_id, no_ids, voice, has_offline_msg);
|
||||
uuid_vec_t ids;
|
||||
ids.push_back(other_participant_id);
|
||||
return newSession(session_id, name, type, other_participant_id, ids, voice, has_offline_msg);
|
||||
}
|
||||
|
||||
bool LLIMModel::clearSession(const LLUUID& session_id)
|
||||
|
|
@ -2545,12 +2546,6 @@ void LLIMMgr::addMessage(
|
|||
{
|
||||
LLUUID other_participant_id = target_id;
|
||||
|
||||
// Agent can't create session with himself
|
||||
if (other_participant_id == gAgentID)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LLUUID new_session_id = session_id;
|
||||
if (new_session_id.isNull())
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue