commit
5d3c4cd23b
|
|
@ -408,6 +408,17 @@
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>AvalinePhoneSeparator</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Separator of phone parts to have Avaline numbers human readable in Voice Control Panel</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>-</string>
|
||||
</map>
|
||||
<key>AvatarAxisDeadZone0</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@
|
|||
#include "llfloaterreg.h"
|
||||
#include "llparticipantlist.h"
|
||||
#include "llspeakers.h"
|
||||
#include "lltextutil.h"
|
||||
#include "lltransientfloatermgr.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "llvoicechannel.h"
|
||||
|
|
@ -76,6 +77,12 @@ public:
|
|||
return rv;
|
||||
}
|
||||
|
||||
void setName(const std::string& name)
|
||||
{
|
||||
const std::string& formatted_phone = LLTextUtil::formatPhoneNumber(name);
|
||||
LLAvatarListItem::setName(formatted_phone);
|
||||
}
|
||||
|
||||
void setSpeakerId(const LLUUID& id) { mSpeakingIndicator->setSpeakerId(id); }
|
||||
};
|
||||
|
||||
|
|
@ -270,6 +277,11 @@ void LLCallFloater::updateSession()
|
|||
case IM_NOTHING_SPECIAL:
|
||||
case IM_SESSION_P2P_INVITE:
|
||||
mVoiceType = VC_PEER_TO_PEER;
|
||||
|
||||
if (!im_session->mOtherParticipantIsAvatar)
|
||||
{
|
||||
mVoiceType = VC_PEER_TO_PEER_AVALINE;
|
||||
}
|
||||
break;
|
||||
case IM_SESSION_CONFERENCE_START:
|
||||
case IM_SESSION_GROUP_START:
|
||||
|
|
@ -321,16 +333,13 @@ void LLCallFloater::updateSession()
|
|||
|
||||
void LLCallFloater::refreshParticipantList()
|
||||
{
|
||||
bool non_avatar_caller = false;
|
||||
if (VC_PEER_TO_PEER == mVoiceType)
|
||||
bool non_avatar_caller = VC_PEER_TO_PEER_AVALINE == mVoiceType;
|
||||
|
||||
if (non_avatar_caller)
|
||||
{
|
||||
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(mSpeakerManager->getSessionID());
|
||||
non_avatar_caller = !session->mOtherParticipantIsAvatar;
|
||||
if (non_avatar_caller)
|
||||
{
|
||||
mNonAvatarCaller->setSpeakerId(session->mOtherParticipantID);
|
||||
mNonAvatarCaller->setName(session->mName);
|
||||
}
|
||||
mNonAvatarCaller->setSpeakerId(session->mOtherParticipantID);
|
||||
mNonAvatarCaller->setName(session->mName);
|
||||
}
|
||||
|
||||
mNonAvatarCaller->setVisible(non_avatar_caller);
|
||||
|
|
@ -390,9 +399,17 @@ void LLCallFloater::updateTitle()
|
|||
title = getString("title_nearby");
|
||||
break;
|
||||
case VC_PEER_TO_PEER:
|
||||
case VC_PEER_TO_PEER_AVALINE:
|
||||
{
|
||||
title = voice_channel->getSessionName();
|
||||
|
||||
if (VC_PEER_TO_PEER_AVALINE == mVoiceType)
|
||||
{
|
||||
title = LLTextUtil::formatPhoneNumber(title);
|
||||
}
|
||||
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[NAME]"] = voice_channel->getSessionName();
|
||||
args["[NAME]"] = title;
|
||||
title = getString("title_peer_2_peer", args);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -88,7 +88,8 @@ private:
|
|||
VC_LOCAL_CHAT,
|
||||
VC_GROUP_CHAT,
|
||||
VC_AD_HOC_CHAT,
|
||||
VC_PEER_TO_PEER
|
||||
VC_PEER_TO_PEER,
|
||||
VC_PEER_TO_PEER_AVALINE
|
||||
}EVoiceControls;
|
||||
|
||||
typedef enum e_speaker_state
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@
|
|||
|
||||
#include "llfirstuse.h"
|
||||
#include "llagentui.h"
|
||||
#include "lltextutil.h"
|
||||
|
||||
const static std::string IM_TIME("time");
|
||||
const static std::string IM_TEXT("message");
|
||||
|
|
@ -92,6 +93,7 @@ const static std::string NO_SESSION("(IM Session Doesn't Exist)");
|
|||
const static std::string ADHOC_NAME_SUFFIX(" Conference");
|
||||
|
||||
std::string LLCallDialogManager::sPreviousSessionlName = "";
|
||||
LLIMModel::LLIMSession::SType LLCallDialogManager::sPreviousSessionType = LLIMModel::LLIMSession::P2P_SESSION;
|
||||
std::string LLCallDialogManager::sCurrentSessionlName = "";
|
||||
LLIMModel::LLIMSession* LLCallDialogManager::sSession = NULL;
|
||||
LLVoiceChannel::EState LLCallDialogManager::sOldState = LLVoiceChannel::STATE_READY;
|
||||
|
|
@ -178,6 +180,7 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string&
|
|||
if (IM_NOTHING_SPECIAL == type || IM_SESSION_P2P_INVITE == type)
|
||||
{
|
||||
mVoiceChannel = new LLVoiceChannelP2P(session_id, name, other_participant_id);
|
||||
mOtherParticipantIsAvatar = LLVoiceClient::getInstance()->isParticipantAvatar(mSessionID);
|
||||
|
||||
// check if it was AVALINE call
|
||||
if (!mOtherParticipantIsAvatar)
|
||||
|
|
@ -227,7 +230,6 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string&
|
|||
{
|
||||
mCallBackEnabled = LLVoiceClient::getInstance()->isSessionCallBackPossible(mSessionID);
|
||||
mTextIMPossible = LLVoiceClient::getInstance()->isSessionTextIMPossible(mSessionID);
|
||||
mOtherParticipantIsAvatar = LLVoiceClient::getInstance()->isParticipantAvatar(mSessionID);
|
||||
}
|
||||
|
||||
if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") )
|
||||
|
|
@ -1363,6 +1365,13 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)
|
|||
sCurrentSessionlName = ""; // Empty string results in "Nearby Voice Chat" after substitution
|
||||
return;
|
||||
}
|
||||
|
||||
if (sSession)
|
||||
{
|
||||
// store previous session type to process Avaline calls in dialogs
|
||||
sPreviousSessionType = sSession->mSessionType;
|
||||
}
|
||||
|
||||
sSession = session;
|
||||
sSession->mVoiceChannel->setStateChangedCallback(LLCallDialogManager::onVoiceChannelStateChanged);
|
||||
if(sCurrentSessionlName != session->mName)
|
||||
|
|
@ -1381,6 +1390,7 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)
|
|||
mCallDialogPayload["session_name"] = sSession->mName;
|
||||
mCallDialogPayload["other_user_id"] = sSession->mOtherParticipantID;
|
||||
mCallDialogPayload["old_channel_name"] = sPreviousSessionlName;
|
||||
mCallDialogPayload["old_session_type"] = sPreviousSessionType;
|
||||
mCallDialogPayload["state"] = LLVoiceChannel::STATE_CALL_STARTED;
|
||||
mCallDialogPayload["disconnected_channel_name"] = sSession->mName;
|
||||
mCallDialogPayload["session_type"] = sSession->mSessionType;
|
||||
|
|
@ -1410,6 +1420,7 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat
|
|||
mCallDialogPayload["session_name"] = sSession->mName;
|
||||
mCallDialogPayload["other_user_id"] = sSession->mOtherParticipantID;
|
||||
mCallDialogPayload["old_channel_name"] = sPreviousSessionlName;
|
||||
mCallDialogPayload["old_session_type"] = sPreviousSessionType;
|
||||
mCallDialogPayload["state"] = new_state;
|
||||
mCallDialogPayload["disconnected_channel_name"] = sSession->mName;
|
||||
mCallDialogPayload["session_type"] = sSession->mSessionType;
|
||||
|
|
@ -1424,6 +1435,11 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat
|
|||
}
|
||||
break;
|
||||
|
||||
case LLVoiceChannel::STATE_HUNG_UP:
|
||||
// this state is coming before session is changed, so, put it into payload map
|
||||
mCallDialogPayload["old_session_type"] = sSession->mSessionType;
|
||||
break;
|
||||
|
||||
case LLVoiceChannel::STATE_CONNECTED :
|
||||
ocd = LLFloaterReg::findTypedInstance<LLOutgoingCallDialog>("outgoing_call", LLOutgoingCallDialog::OCD_KEY);
|
||||
if (ocd)
|
||||
|
|
@ -1564,7 +1580,15 @@ void LLOutgoingCallDialog::show(const LLSD& key)
|
|||
// tell the user which voice channel they are leaving
|
||||
if (!mPayload["old_channel_name"].asString().empty())
|
||||
{
|
||||
childSetTextArg("leaving", "[CURRENT_CHAT]", mPayload["old_channel_name"].asString());
|
||||
bool was_avaline_call = LLIMModel::LLIMSession::AVALINE_SESSION == mPayload["old_session_type"].asInteger();
|
||||
|
||||
std::string old_caller_name = mPayload["old_channel_name"].asString();
|
||||
if (was_avaline_call)
|
||||
{
|
||||
old_caller_name = LLTextUtil::formatPhoneNumber(old_caller_name);
|
||||
}
|
||||
|
||||
childSetTextArg("leaving", "[CURRENT_CHAT]", old_caller_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1578,10 +1602,18 @@ void LLOutgoingCallDialog::show(const LLSD& key)
|
|||
}
|
||||
|
||||
std::string callee_name = mPayload["session_name"].asString();
|
||||
|
||||
LLUUID session_id = mPayload["session_id"].asUUID();
|
||||
bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id);
|
||||
|
||||
if (callee_name == "anonymous")
|
||||
{
|
||||
callee_name = getString("anonymous");
|
||||
}
|
||||
else if (!is_avatar)
|
||||
{
|
||||
callee_name = LLTextUtil::formatPhoneNumber(callee_name);
|
||||
}
|
||||
|
||||
setTitle(callee_name);
|
||||
|
||||
|
|
@ -1731,16 +1763,21 @@ BOOL LLIncomingCallDialog::postBuild()
|
|||
call_type = getString(mPayload["notify_box_type"]);
|
||||
}
|
||||
|
||||
|
||||
// check to see if this is an Avaline call
|
||||
bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id);
|
||||
childSetVisible("Start IM", is_avatar); // no IM for avaline
|
||||
|
||||
if (caller_name == "anonymous")
|
||||
{
|
||||
caller_name = getString("anonymous");
|
||||
}
|
||||
|
||||
setTitle(caller_name + " " + call_type);
|
||||
else if (!is_avatar)
|
||||
{
|
||||
caller_name = LLTextUtil::formatPhoneNumber(caller_name);
|
||||
}
|
||||
|
||||
// check to see if this is an Avaline call
|
||||
bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id);
|
||||
childSetVisible("Start IM", is_avatar); // no IM for avaline
|
||||
setTitle(caller_name + " " + call_type);
|
||||
|
||||
LLUICtrl* caller_name_widget = getChild<LLUICtrl>("caller name");
|
||||
caller_name_widget->setValue(caller_name + " " + call_type);
|
||||
|
|
|
|||
|
|
@ -475,6 +475,7 @@ public:
|
|||
|
||||
protected:
|
||||
static std::string sPreviousSessionlName;
|
||||
static LLIMModel::LLIMSession::SType sPreviousSessionType;
|
||||
static std::string sCurrentSessionlName;
|
||||
static LLIMModel::LLIMSession* sSession;
|
||||
static LLVoiceChannel::EState sOldState;
|
||||
|
|
|
|||
Loading…
Reference in New Issue