summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llimfloatercontainer.cpp113
-rw-r--r--indra/newview/llimfloatercontainer.h5
2 files changed, 76 insertions, 42 deletions
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index b7f83e3c23..ad77a7510c 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -64,7 +64,7 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
mEnableCallbackRegistrar.add("Avatar.CheckItem", boost::bind(&LLIMFloaterContainer::checkContextMenuItem, this, _2));
mEnableCallbackRegistrar.add("Avatar.EnableItem", boost::bind(&LLIMFloaterContainer::enableContextMenuItem, this, _2));
- mCommitCallbackRegistrar.add("Avatar.DoToSelected", boost::bind(&LLIMFloaterContainer::doToSelectedAvatar, this, _2));
+ mCommitCallbackRegistrar.add("Avatar.DoToSelected", boost::bind(&LLIMFloaterContainer::doToSelected, this, _2));
mCommitCallbackRegistrar.add("Group.DoToSelected", boost::bind(&LLIMFloaterContainer::doToSelectedGroup, this, _2));
@@ -747,78 +747,109 @@ const LLConversationItem * LLIMFloaterContainer::getCurSelectedViewModelItem()
return NULL;
}
-void LLIMFloaterContainer::doToSelectedAvatar(const LLSD& userdata)
-{
- std::string command = userdata.asString();
- uuid_vec_t selected_uuids;
- LLUUID currentSelectedUUID;
- LLIMFloater * conversation;
-
- getSelectedUUIDs(selected_uuids);
- //Find the conversation floater associated with the selected id
- conversation = LLIMFloater::findInstance(selected_uuids.front());
- const LLConversationItem * conversationItem = getCurSelectedViewModelItem();
-
- //When a one-on-one conversation exists, retrieve the participant id from the conversation floater b/c
- //selected_uuids.front() does not pertain to the UUID of the person you are having the conversation with.
- if(conversation && conversationItem->getType() == LLConversationItem::CONV_SESSION_1_ON_1)
- {
- currentSelectedUUID = conversation->getOtherParticipantUUID();
- }
- //Otherwise can get the UUID directly from selected_uuids
- else
- {
- currentSelectedUUID = selected_uuids.front();
- }
+void LLIMFloaterContainer::doToUsers(const std::string& command, uuid_vec_t selectedIDS)
+{dd
+ LLUUID userID;
+ userID = selectedIDS.front();
- //Close the selected conversation
- if(conversation && "close_conversation" == command)
- {
- LLFloater::onClickClose(conversation);
- }
- else if ("view_profile" == command)
+ if ("view_profile" == command)
{
- LLAvatarActions::showProfile(currentSelectedUUID);
+ LLAvatarActions::showProfile(userID);
}
else if("im" == command)
{
- LLAvatarActions::startIM(currentSelectedUUID);
+ LLAvatarActions::startIM(userID);
}
else if("offer_teleport" == command)
{
- LLAvatarActions::offerTeleport(selected_uuids);
+ LLAvatarActions::offerTeleport(selectedIDS);
}
else if("voice_call" == command)
{
- LLAvatarActions::startCall(currentSelectedUUID);
+ LLAvatarActions::startCall(userID);
}
else if("add_friend" == command)
{
- LLAvatarActions::requestFriendshipDialog(currentSelectedUUID);
+ LLAvatarActions::requestFriendshipDialog(userID);
}
else if("remove_friend" == command)
{
- LLAvatarActions::removeFriendDialog(currentSelectedUUID);
+ LLAvatarActions::removeFriendDialog(userID);
}
else if("invite_to_group" == command)
{
- LLAvatarActions::inviteToGroup(currentSelectedUUID);
+ LLAvatarActions::inviteToGroup(userID);
}
else if("map" == command)
{
- LLAvatarActions::showOnMap(currentSelectedUUID);
+ LLAvatarActions::showOnMap(userID);
}
else if("share" == command)
{
- LLAvatarActions::share(currentSelectedUUID);
+ LLAvatarActions::share(userID);
}
else if("pay" == command)
{
- LLAvatarActions::pay(currentSelectedUUID);
+ LLAvatarActions::pay(userID);
}
else if("block_unblock" == command)
{
- LLAvatarActions::toggleBlock(currentSelectedUUID);
+ LLAvatarActions::toggleBlock(userID);
+ }
+}
+
+void LLIMFloaterContainer::doToSelectedParticipant(const std::string& command)
+{
+ uuid_vec_t selected_uuids;
+ getSelectedUUIDs(selected_uuids);
+
+ doToUsers(command, selected_uuids);
+}
+
+void LLIMFloaterContainer::doToSelectedConversation(const std::string& command)
+{
+ LLUUID participantID;
+
+ //Find the conversation floater associated with the selected id
+ const LLConversationItem * conversationItem = getCurSelectedViewModelItem();
+ LLIMFloater *conversationFloater = LLIMFloater::findInstance(conversationItem->getUUID());
+
+ if(conversationFloater)
+ {
+ //When a one-on-one conversation exists, retrieve the participant id from the conversation floater b/c
+ //selected_uuids.front() does not pertain to the UUID of the person you are having the conversation with.
+ if(conversationItem->getType() == LLConversationItem::CONV_SESSION_1_ON_1)
+ {
+ participantID = conversationFloater->getOtherParticipantUUID();
+ }
+
+ //Close the selected conversation
+ if("close_conversation" == command)
+ {
+ LLFloater::onClickClose(conversationFloater);
+ }
+ else
+ {
+ uuid_vec_t selected_uuids;
+ selected_uuids.push_back(participantID);
+ doToUsers(command, selected_uuids);
+ }
+ }
+}
+
+void LLIMFloaterContainer::doToSelected(const LLSD& userdata)
+{
+ std::string command = userdata.asString();
+ const LLConversationItem * conversationItem = getCurSelectedViewModelItem();
+
+ if(conversationItem->getType() == LLConversationItem::CONV_SESSION_1_ON_1 ||
+ conversationItem->getType() == LLConversationItem::CONV_SESSION_GROUP)
+ {
+ doToSelectedConversation(command);
+ }
+ else
+ {
+ doToSelectedParticipant(command);
}
}
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 9754f04fbe..a622ddfc8c 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -113,7 +113,10 @@ private:
void getSelectedUUIDs(uuid_vec_t& selected_uuids);
const LLConversationItem * getCurSelectedViewModelItem();
- void doToSelectedAvatar(const LLSD& userdata);
+ void doToSelected(const LLSD& userdata);
+ void doToSelectedConversation(const std::string& command);
+ void doToSelectedParticipant(const std::string& command);
+ void doToUsers(const std::string& command, uuid_vec_t selectedIDS);
void doToSelectedGroup(const LLSD& userdata);
bool checkContextMenuItem(const LLSD& userdata);
bool enableContextMenuItem(const LLSD& userdata);