summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilbert Gonzales <gilbert@lindenlab.com>2012-10-03 14:31:13 -0700
committerGilbert Gonzales <gilbert@lindenlab.com>2012-10-03 14:31:13 -0700
commit9c3bbd378332a3dca8c58d0e3e351fd038e3f61b (patch)
treeb97b3d4f125350650f88708c25ad67f6ddbf8f46
parent7f3f5cc408d7b36478c7dd707e32f921c1e1b720 (diff)
CHUI-102: Now the options enabled in the one-on-one conversation menu are the same as the participants menu. In prior commits the one-on-one conversations menu was not enabling/disabling the proper menu options.
-rw-r--r--indra/newview/llimfloatercontainer.cpp75
-rw-r--r--indra/newview/llimfloatercontainer.h6
2 files changed, 46 insertions, 35 deletions
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 5a323583b8..4af170b3db 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -764,10 +764,29 @@ const LLConversationItem * LLIMFloaterContainer::getCurSelectedViewModelItem()
return conversationItem;
}
-void LLIMFloaterContainer::doToUsers(const std::string& command, uuid_vec_t selectedIDS)
+void LLIMFloaterContainer::getParticipantUUIDs(uuid_vec_t& selected_uuids)
{
- LLUUID userID;
- userID = selectedIDS.front();
+ //Find the conversation floater associated with the selected id
+ const LLConversationItem * conversationItem = getCurSelectedViewModelItem();
+
+ if(conversationItem->getType() == LLConversationItem::CONV_PARTICIPANT)
+ {
+ getSelectedUUIDs(selected_uuids);
+ }
+ //When a one-on-one conversation exists, retrieve the participant id from the conversation floater
+ else if(conversationItem->getType() == LLConversationItem::CONV_SESSION_1_ON_1)
+ {
+ LLIMFloater *conversationFloater = LLIMFloater::findInstance(conversationItem->getUUID());
+ LLUUID participantID = conversationFloater->getOtherParticipantUUID();
+ selected_uuids.push_back(participantID);
+ }
+}
+
+void LLIMFloaterContainer::doToParticipants(const std::string& command, uuid_vec_t& selectedIDS)
+{
+ if(selectedIDS.size() > 0)
+{
+ const LLUUID userID = selectedIDS.front();
if ("view_profile" == command)
{
@@ -818,32 +837,16 @@ void LLIMFloaterContainer::doToUsers(const std::string& command, uuid_vec_t sele
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)
+void LLIMFloaterContainer::doToSelectedConversation(const std::string& command, uuid_vec_t& selectedIDS)
{
- 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)
{
@@ -863,9 +866,7 @@ void LLIMFloaterContainer::doToSelectedConversation(const std::string& command)
}
else
{
- uuid_vec_t selected_uuids;
- selected_uuids.push_back(participantID);
- doToUsers(command, selected_uuids);
+ doToParticipants(command, selectedIDS);
}
}
}
@@ -874,16 +875,17 @@ void LLIMFloaterContainer::doToSelected(const LLSD& userdata)
{
std::string command = userdata.asString();
const LLConversationItem * conversationItem = getCurSelectedViewModelItem();
+ uuid_vec_t selected_uuids;
+
+ getParticipantUUIDs(selected_uuids);
- if(conversationItem->getType() == LLConversationItem::CONV_SESSION_1_ON_1 ||
- conversationItem->getType() == LLConversationItem::CONV_SESSION_GROUP ||
- conversationItem->getType() == LLConversationItem::CONV_SESSION_AD_HOC)
+ if(conversationItem->getType() == LLConversationItem::CONV_PARTICIPANT)
{
- doToSelectedConversation(command);
+ doToParticipants(command, selected_uuids);
}
else
{
- doToSelectedParticipant(command);
+ doToSelectedConversation(command, selected_uuids);
}
}
@@ -910,7 +912,12 @@ bool LLIMFloaterContainer::enableContextMenuItem(const LLSD& userdata)
{
std::string item = userdata.asString();
uuid_vec_t mUUIDs;
- getSelectedUUIDs(mUUIDs);
+ getParticipantUUIDs(mUUIDs);
+
+ if(mUUIDs.size() <= 0)
+ {
+ return false;
+ }
// Note: can_block and can_delete is used only for one person selected menu
// so we don't need to go over all uuids.
@@ -932,7 +939,7 @@ bool LLIMFloaterContainer::enableContextMenuItem(const LLSD& userdata)
return false;
}
- bool result = (mUUIDs.size() > 0);
+ bool result = true;
uuid_vec_t::const_iterator
id = mUUIDs.begin(),
@@ -993,11 +1000,15 @@ bool LLIMFloaterContainer::enableContextMenuItem(const LLSD& userdata)
bool LLIMFloaterContainer::checkContextMenuItem(const LLSD& userdata)
{
std::string item = userdata.asString();
- const LLUUID& id = getCurSelectedViewModelItem()->getUUID();
+ uuid_vec_t mUUIDs;
+ getParticipantUUIDs(mUUIDs);
+ if(mUUIDs.size() > 0 )
+ {
if (item == std::string("is_blocked"))
{
- return LLAvatarActions::isBlocked(id);
+ return LLAvatarActions::isBlocked(mUUIDs.front());
+ }
}
return false;
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 081c733884..76e468f979 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -113,10 +113,10 @@ private:
void getSelectedUUIDs(uuid_vec_t& selected_uuids);
const LLConversationItem * getCurSelectedViewModelItem();
+ void getParticipantUUIDs(uuid_vec_t& selected_uuids);
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 doToSelectedConversation(const std::string& command, uuid_vec_t& selectedIDS);
+ void doToParticipants(const std::string& item, uuid_vec_t& selectedIDS);
void doToSelectedGroup(const LLSD& userdata);
bool checkContextMenuItem(const LLSD& userdata);
bool enableContextMenuItem(const LLSD& userdata);