summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llconversationmodel.cpp21
-rwxr-xr-xindra/newview/llconversationmodel.h1
-rw-r--r--indra/newview/llimfloatercontainer.cpp13
3 files changed, 33 insertions, 2 deletions
diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp
index 3d1523c874..a3ec154ac6 100644
--- a/indra/newview/llconversationmodel.cpp
+++ b/indra/newview/llconversationmodel.cpp
@@ -28,6 +28,7 @@
#include "llviewerprecompiledheaders.h"
#include "llconversationmodel.h"
+#include "llimview.h" //For LLIMModel
//
// Conversation items : common behaviors
@@ -224,15 +225,35 @@ void LLConversationItemSession::buildContextMenu(LLMenuGL& menu, U32 flags)
else if(this->getType() == CONV_SESSION_GROUP)
{
items.push_back(std::string("close_conversation"));
+ addVoiceOptions(items);
items.push_back(std::string("separator_disconnect_from_voice"));
items.push_back(std::string("group_profile"));
items.push_back(std::string("activate_group"));
items.push_back(std::string("leave_group"));
}
+ else if(this->getType() == CONV_SESSION_AD_HOC)
+ {
+ items.push_back(std::string("close_conversation"));
+ addVoiceOptions(items);
+ }
hide_context_entries(menu, items, disabled_items);
}
+void LLConversationItemSession::addVoiceOptions(menuentry_vec_t& items)
+{
+ LLVoiceChannel* voice_channel = LLIMModel::getInstance() ? LLIMModel::getInstance()->getVoiceChannel(this->getUUID()) : NULL;
+
+ if(voice_channel != LLVoiceChannel::getCurrentVoiceChannel())
+ {
+ items.push_back(std::string("open_voice_conversation"));
+ }
+ else
+ {
+ items.push_back(std::string("disconnect_from_voice"));
+ }
+}
+
// The time of activity of a session is the time of the most recent activity, session and participants included
const bool LLConversationItemSession::getTime(F64& time) const
{
diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h
index f84fbe39f1..bc72cd96ea 100755
--- a/indra/newview/llconversationmodel.h
+++ b/indra/newview/llconversationmodel.h
@@ -160,6 +160,7 @@ public:
bool isLoaded() { return mIsLoaded; }
void buildContextMenu(LLMenuGL& menu, U32 flags);
+ void addVoiceOptions(menuentry_vec_t& items);
virtual const bool getTime(F64& time) const;
void dumpDebugData();
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index ad77a7510c..7130926212 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -748,7 +748,7 @@ const LLConversationItem * LLIMFloaterContainer::getCurSelectedViewModelItem()
}
void LLIMFloaterContainer::doToUsers(const std::string& command, uuid_vec_t selectedIDS)
-{dd
+{
LLUUID userID;
userID = selectedIDS.front();
@@ -828,6 +828,14 @@ void LLIMFloaterContainer::doToSelectedConversation(const std::string& command)
{
LLFloater::onClickClose(conversationFloater);
}
+ else if("open_voice_conversation" == command)
+ {
+ gIMMgr->startCall(conversationItem->getUUID());
+ }
+ else if("disconnect_from_voice" == command)
+ {
+ gIMMgr->endCall(conversationItem->getUUID());
+ }
else
{
uuid_vec_t selected_uuids;
@@ -843,7 +851,8 @@ void LLIMFloaterContainer::doToSelected(const LLSD& userdata)
const LLConversationItem * conversationItem = getCurSelectedViewModelItem();
if(conversationItem->getType() == LLConversationItem::CONV_SESSION_1_ON_1 ||
- conversationItem->getType() == LLConversationItem::CONV_SESSION_GROUP)
+ conversationItem->getType() == LLConversationItem::CONV_SESSION_GROUP ||
+ conversationItem->getType() == LLConversationItem::CONV_SESSION_AD_HOC)
{
doToSelectedConversation(command);
}