summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llconversationmodel.cpp14
-rwxr-xr-xindra/newview/llconversationmodel.h2
-rwxr-xr-xindra/newview/llconversationview.cpp9
-rw-r--r--indra/newview/llfloaterimcontainer.cpp43
-rw-r--r--indra/newview/llfloaterimcontainer.h1
-rw-r--r--indra/newview/llviewermenu.cpp2
-rw-r--r--indra/newview/skins/default/xui/en/floater_camera.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_destinations.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_container.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_moveview.xml4
-rw-r--r--indra/newview/skins/default/xui/en/menu_conversation.xml13
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml2
12 files changed, 58 insertions, 42 deletions
diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp
index 99dd35a9e8..d03ad92fbc 100644
--- a/indra/newview/llconversationmodel.cpp
+++ b/indra/newview/llconversationmodel.cpp
@@ -46,7 +46,8 @@ LLConversationItem::LLConversationItem(std::string display_name, const LLUUID& u
mUUID(uuid),
mNeedsRefresh(true),
mConvType(CONV_UNKNOWN),
- mLastActiveTime(0.0)
+ mLastActiveTime(0.0),
+ mDisplayModeratorOptions(false)
{
}
@@ -56,7 +57,8 @@ LLConversationItem::LLConversationItem(const LLUUID& uuid, LLFolderViewModelInte
mUUID(uuid),
mNeedsRefresh(true),
mConvType(CONV_UNKNOWN),
- mLastActiveTime(0.0)
+ mLastActiveTime(0.0),
+ mDisplayModeratorOptions(false)
{
}
@@ -66,7 +68,8 @@ LLConversationItem::LLConversationItem(LLFolderViewModelInterface& root_view_mod
mUUID(),
mNeedsRefresh(true),
mConvType(CONV_UNKNOWN),
- mLastActiveTime(0.0)
+ mLastActiveTime(0.0),
+ mDisplayModeratorOptions(false)
{
}
@@ -117,14 +120,13 @@ void LLConversationItem::buildParticipantMenuOptions(menuentry_vec_t& items)
items.push_back(std::string("block_unblock"));
items.push_back(std::string("MuteText"));
- if(this->getType() != CONV_SESSION_1_ON_1)
+ if(this->getType() != CONV_SESSION_1_ON_1 && mDisplayModeratorOptions)
{
items.push_back(std::string("Moderator Options Separator"));
items.push_back(std::string("Moderator Options"));
items.push_back(std::string("AllowTextChat"));
items.push_back(std::string("moderate_voice_separator"));
- items.push_back(std::string("ModerateVoiceMuteSelected"));
- items.push_back(std::string("ModerateVoiceUnMuteSelected"));
+ items.push_back(std::string("ModerateVoiceToggleMuteSelected"));
items.push_back(std::string("ModerateVoiceMute"));
items.push_back(std::string("ModerateVoiceUnmute"));
}
diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h
index dd849210a8..7177d3a414 100755
--- a/indra/newview/llconversationmodel.h
+++ b/indra/newview/llconversationmodel.h
@@ -138,6 +138,7 @@ protected:
EConversationType mConvType; // Type of conversation item
bool mNeedsRefresh; // Flag signaling to the view that something changed for this item
F64 mLastActiveTime;
+ bool mDisplayModeratorOptions;
};
class LLConversationItemSession : public LLConversationItem
@@ -198,6 +199,7 @@ public:
LLConversationItemSession* getParentSession();
void dumpDebugData();
+ void setModeratorOptionsVisible(bool visible) { mDisplayModeratorOptions = visible; }
private:
void onAvatarNameCache(const LLAvatarName& av_name);
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index f088a8c084..527c0ad233 100755
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -223,10 +223,11 @@ BOOL LLConversationViewSession::handleMouseDown( S32 x, S32 y, MASK mask )
//This node (conversation) was selected and a child (participant) was not
if(result && getRoot()->getCurSelectedItem() == this)
- {
- (LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container"))->
- selectConversationPair(session_id, false);
- }
+ {
+ LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");
+ im_container->selectConversationPair(session_id, false);
+ im_container->collapseMessagesPane(false);
+ }
return result;
}
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 9e13875d20..cc053ca658 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -509,6 +509,22 @@ void LLFloaterIMContainer::draw()
// still needs the conversation list. Simply collapse the message pane in that case.
collapseMessagesPane(true);
}
+
+ //Update moderator options visibility
+ const LLConversationItem *current_session = getCurSelectedViewModelItem();
+ if (current_session)
+ {
+ LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = current_session->getChildrenBegin();
+ LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = current_session->getChildrenEnd();
+ while (current_participant_model != end_participant_model)
+ {
+ LLConversationItemParticipant* participant_model = dynamic_cast<LLConversationItemParticipant*>(*current_participant_model);
+ participant_model->setModeratorOptionsVisible(isGroupModerator() && participant_model->getUUID() != gAgentID);
+
+ current_participant_model++;
+ }
+ }
+
LLFloater::draw();
}
@@ -1159,7 +1175,7 @@ bool LLFloaterIMContainer::enableContextMenuItem(const std::string& item, uuid_v
{
return LLAvatarActions::canOfferTeleport(uuids);
}
- else if (("can_moderate_voice" == item) || ("can_allow_text_chat" == item) || ("can_mute" == item) || ("can_unmute" == item))
+ else if (("can_moderate_voice" == item) || ("can_allow_text_chat" == item) || ("can_mute_unmute" == item))
{
// *TODO : get that out of here...
return enableModerateContextMenuItem(item);
@@ -1249,11 +1265,11 @@ BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool
}
}
- // Set the focus on the selected floater
- if (!session_floater->hasFocus())
- {
- session_floater->setFocus(TRUE);
- }
+ // Set the focus on the selected floater
+ if (!session_floater->hasFocus())
+ {
+ session_floater->setFocus(TRUE);
+ }
return handled;
}
@@ -1466,18 +1482,10 @@ bool LLFloaterIMContainer::enableModerateContextMenuItem(const std::string& user
bool voice_channel = speakerp->isInVoiceChannel();
- if ("can_moderate_voice" == userdata)
+ if ("can_moderate_voice" == userdata || "can_mute_unmute" == userdata)
{
return voice_channel;
}
- else if ("can_mute" == userdata)
- {
- return voice_channel && !isMuted(getCurSelectedViewModelItem()->getUUID());
- }
- else if ("can_unmute" == userdata)
- {
- return voice_channel && isMuted(getCurSelectedViewModelItem()->getUUID());
- }
// The last invoke is used to check whether the "can_allow_text_chat" will enabled
return LLVoiceClient::getInstance()->isParticipantAvatar(getCurSelectedViewModelItem()->getUUID());
@@ -1688,6 +1696,11 @@ void LLFloaterIMContainer::updateSpeakBtnState()
mSpeakBtn->setEnabled(LLAgent::isActionAllowed("speak"));
}
+bool LLFloaterIMContainer::isConversationLoggingAllowed()
+{
+ return gSavedSettings.getBOOL("KeepConversationLogTranscripts");
+}
+
void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id, bool is_flashes)
{
//Finds the conversation line item to flash using the session_id
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 92985c036a..3818645037 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -174,6 +174,7 @@ public:
void setNearbyDistances();
void reSelectConversation();
void updateSpeakBtnState();
+ static bool isConversationLoggingAllowed();
void flashConversationItemWidget(const LLUUID& session_id, bool is_flashes);
private:
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 7ae717cb42..fe9c00cc27 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -59,6 +59,7 @@
#include "llbuycurrencyhtml.h"
#include "llfloatergodtools.h"
#include "llfloaterinventory.h"
+#include "llfloaterimcontainer.h"
#include "llfloaterland.h"
#include "llfloaterpathfindingcharacters.h"
#include "llfloaterpathfindinglinksets.h"
@@ -8238,6 +8239,7 @@ void initialize_menus()
commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));
+ enable.add("Conversation.IsConversationLoggingAllowed", boost::bind(&LLFloaterIMContainer::isConversationLoggingAllowed));
// Agent
commit.add("Agent.toggleFlying", boost::bind(&LLAgent::toggleFlying));
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index 4b4821a383..521389d7b3 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
positioning="specified"
- left="643"
- bottom="-80"
+ right="-460"
+ bottom="-50"
follows="left|bottom"
legacy_header_height="18"
can_minimize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
index 41b57530fc..94ebaa9cb2 100644
--- a/indra/newview/skins/default/xui/en/floater_destinations.xml
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ positioning="cascading"
ignore_ui_scale="false"
legacy_header_height="225"
can_minimize="true"
@@ -11,8 +12,6 @@
height="230"
layout="topleft"
name="Destinations"
- right="-10"
- bottom="-80"
single_instance="true"
help_topic="destinations"
save_rect="true"
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
index 9f6503d799..1128b8fef6 100644
--- a/indra/newview/skins/default/xui/en/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_container.xml
@@ -13,7 +13,8 @@
single_instance="true"
reuse_instance="true"
title="CONVERSATIONS"
- bottom="-80"
+ bottom="-50"
+ right="-5"
width="450">
<string
name="collapse_icon"
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 02d9805ddf..5e84283ab0 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
positioning="specified"
- left="505"
- bottom="-80"
+ right="-693"
+ bottom="-50"
legacy_header_height="18"
can_dock="false"
can_minimize="true"
diff --git a/indra/newview/skins/default/xui/en/menu_conversation.xml b/indra/newview/skins/default/xui/en/menu_conversation.xml
index 01ef8ebdb5..e0edf384d6 100644
--- a/indra/newview/skins/default/xui/en/menu_conversation.xml
+++ b/indra/newview/skins/default/xui/en/menu_conversation.xml
@@ -156,18 +156,11 @@
</menu_item_check>
<menu_item_separator layout="topleft" name="moderate_voice_separator" />
<menu_item_call
- label="Mute this participant"
+ label="Toggle mute this participant"
layout="topleft"
- name="ModerateVoiceMuteSelected">
+ name="ModerateVoiceToggleMuteSelected">
<on_click function="Avatar.DoToSelected" parameter="selected" />
- <on_enable function="Avatar.EnableItem" parameter="can_mute" />
- </menu_item_call>
- <menu_item_call
- label="Unmute this participant"
- layout="topleft"
- name="ModerateVoiceUnMuteSelected">
- <on_click function="Avatar.DoToSelected" parameter="selected" />
- <on_enable function="Avatar.EnableItem" parameter="can_unmute" />
+ <on_enable function="Avatar.EnableItem" parameter="can_mute_unmute" />
</menu_item_call>
<menu_item_call
label="Mute everyone"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index b1e3a2d41f..3e7329c0b5 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -261,6 +261,8 @@
<menu_item_check.on_check
function="Floater.Visible"
parameter="conversation" />
+ <menu_item_check.on_enable
+ function="Conversation.IsConversationLoggingAllowed" />
<menu_item_check.on_click
function="Floater.Toggle"
parameter="conversation" />