diff options
author | Merov Linden <merov@lindenlab.com> | 2012-11-28 19:41:47 -0800 |
---|---|---|
committer | Merov Linden <merov@lindenlab.com> | 2012-11-28 19:41:47 -0800 |
commit | 1a9a55087248eb76330761c2f67e989135472153 (patch) | |
tree | d18706e65e3eb5339607289daeca22689c1089e7 /indra/newview | |
parent | 4da50b21d5dc49cf6b39f7c29b44c1bb869a13cd (diff) | |
parent | 45e8926f138a2b42c5054149d3a9f6f39df29247 (diff) |
Pull merge from richard/viewer-chui
Diffstat (limited to 'indra/newview')
-rwxr-xr-x | indra/newview/llavataractions.cpp | 2 | ||||
-rwxr-xr-x | indra/newview/llconversationview.cpp | 39 | ||||
-rwxr-xr-x | indra/newview/llconversationview.h | 9 | ||||
-rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 14 | ||||
-rw-r--r-- | indra/newview/llfloaterimnearbychathandler.cpp | 44 | ||||
-rw-r--r-- | indra/newview/llimview.cpp | 80 | ||||
-rw-r--r-- | indra/newview/llvoicevivox.cpp | 6 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_chat.xml | 20 |
8 files changed, 123 insertions, 91 deletions
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index f5d8998ce5..1969a0bc5f 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -215,7 +215,7 @@ void LLAvatarActions::endIM(const LLUUID& id) static void on_avatar_name_cache_start_call(const LLUUID& agent_id, const LLAvatarName& av_name) { - std::string name = av_name.getCompleteName(); + std::string name = av_name.mDisplayName; LLUUID session_id = gIMMgr->addSession(name, IM_NOTHING_SPECIAL, agent_id, true); if (session_id != LLUUID::null) { diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index e40d57c318..1b1d61e6d6 100755 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -80,7 +80,8 @@ LLConversationViewSession::LLConversationViewSession(const LLConversationViewSes mSessionTitle(NULL), mSpeakingIndicator(NULL), mVoiceClientObserver(NULL), - mMinimizedMode(false) + mCollapsedMode(false), + mHasArrow(true) { mFlashTimer = new LLFlashTimer(); } @@ -135,6 +136,7 @@ BOOL LLConversationViewSession::postBuild() icon->setVisible(true); icon->setValue(session->mOtherParticipantID); mSpeakingIndicator->setSpeakerId(gAgentID, session->mSessionID, true); + mHasArrow = false; } break; } @@ -183,11 +185,10 @@ void LLConversationViewSession::draw() const BOOL show_context = (getRoot() ? getRoot()->getShowSelectionContext() : FALSE); // we don't draw the open folder arrow in minimized mode - if (!mMinimizedMode) + if (mHasArrow && !mCollapsedMode) { // update the rotation angle of open folder arrow updateLabelRotation(); - drawOpenFolderArrow(default_params, sFgColor); } @@ -227,21 +228,25 @@ BOOL LLConversationViewSession::handleMouseDown( S32 x, S32 y, MASK mask ) // virtual S32 LLConversationViewSession::arrange(S32* width, S32* height) { - S32 h_pad = getIndentation() + mArrowSize; - LLRect rect(mMinimizedMode ? getLocalRect().mLeft : h_pad, + //LLFolderViewFolder::arrange computes value for getIndentation() function below + S32 arranged = LLFolderViewFolder::arrange(width, height); + + S32 h_pad = mHasArrow ? getIndentation() + mArrowSize : getIndentation(); + + LLRect rect(mCollapsedMode ? getLocalRect().mLeft : h_pad, getLocalRect().mTop, getLocalRect().mRight, getLocalRect().mTop - getItemHeight()); mItemPanel->setShape(rect); - return LLFolderViewFolder::arrange(width, height); + return arranged; } // virtual void LLConversationViewSession::toggleOpen() { // conversations should not be opened while in minimized mode - if (!mMinimizedMode) + if (!mCollapsedMode) { LLFolderViewFolder::toggleOpen(); @@ -254,16 +259,17 @@ void LLConversationViewSession::toggleOpen() } } -void LLConversationViewSession::toggleMinimizedMode(bool is_minimized) +void LLConversationViewSession::toggleCollapsedMode(bool is_collapsed) { - mMinimizedMode = is_minimized; + mCollapsedMode = is_collapsed; // hide the layout stack which contains all item's child widgets // except for the icon which we display in minimized mode - getChild<LLView>("conversation_item_stack")->setVisible(!mMinimizedMode); + getChild<LLView>("conversation_item_stack")->setVisible(!mCollapsedMode); - S32 h_pad = getIndentation() + mArrowSize; - mItemPanel->translate(mMinimizedMode ? -h_pad : h_pad, 0); + S32 h_pad = mHasArrow ? getIndentation() + mArrowSize : getIndentation(); + + mItemPanel->translate(mCollapsedMode ? -h_pad : h_pad, 0); } void LLConversationViewSession::setVisibleIfDetached(BOOL visible) @@ -340,15 +346,6 @@ void LLConversationViewSession::onCurrentVoiceSessionChanged(const LLUUID& sessi } } -void LLConversationViewSession::drawOpenFolderArrow(const LLFolderViewItem::Params& default_params, const LLUIColor& fg_color) -{ - LLConversationItem * itemp = dynamic_cast<LLConversationItem*>(getViewModelItem()); - if (itemp && itemp->getType() != LLConversationItem::CONV_SESSION_1_ON_1) - { - LLFolderViewFolder::drawOpenFolderArrow(default_params, fg_color); - } -} - // // Implementation of conversations list participant (avatar) widgets // diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h index acd7128b7d..a6f408403b 100755 --- a/indra/newview/llconversationview.h +++ b/indra/newview/llconversationview.h @@ -72,11 +72,9 @@ public: /*virtual*/ void toggleOpen(); - /*virtual*/ bool isMinimized() { return mMinimizedMode; } + /*virtual*/ bool isCollapsed() { return mCollapsedMode; } - /*virtual*/ void drawOpenFolderArrow(const LLFolderViewItem::Params& default_params, const LLUIColor& fg_color); - - void toggleMinimizedMode(bool is_minimized); + void toggleCollapsedMode(bool is_collapsed); void setVisibleIfDetached(BOOL visible); LLConversationViewParticipant* findParticipant(const LLUUID& participant_id); @@ -97,7 +95,8 @@ private: LLOutputMonitorCtrl* mSpeakingIndicator; LLFlashTimer* mFlashTimer; - bool mMinimizedMode; + bool mCollapsedMode; + bool mHasArrow; LLVoiceClientStatusObserver* mVoiceClientObserver; diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index ae66a5f2cf..a04b8d79d6 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -640,7 +640,7 @@ void LLFloaterIMContainer::collapseConversationsPane(bool collapse) LLConversationViewSession* widget = dynamic_cast<LLConversationViewSession*>(widget_it->second); if (widget) { - widget->toggleMinimizedMode(collapse); + widget->toggleCollapsedMode(collapse); // force closing all open conversations when collapsing to minimized state if (collapse) @@ -1320,7 +1320,7 @@ LLConversationItem* LLFloaterIMContainer::addConversationListItem(const LLUUID& } // set the widget to minimized mode if conversations pane is collapsed - widget->toggleMinimizedMode(mConversationsPane->isCollapsed()); + widget->toggleCollapsedMode(mConversationsPane->isCollapsed()); if (isWidgetSelected) { @@ -1361,10 +1361,12 @@ bool LLFloaterIMContainer::removeConversationListItem(const LLUUID& uuid, bool c setFocus(TRUE); if(new_selection != NULL) { + if (mConversationsWidgets.size() == 1) + new_selection = new_selection->getParentFolder(); LLConversationItem* vmi = dynamic_cast<LLConversationItem*>(new_selection->getViewModelItem()); if(vmi != NULL) { - selectConversation(vmi->getUUID()); + selectConversationPair(vmi->getUUID(), true); } } } @@ -1381,6 +1383,12 @@ LLConversationViewSession* LLFloaterIMContainer::createConversationItemWidget(LL params.tool_tip = params.name; params.container = this; + //Indentation for aligning the p2p converstation image with the nearby chat arrow + if(item->getType() == LLConversationItem::CONV_SESSION_1_ON_1) + { + params.folder_indentation = 3; + } + return LLUICtrlFactory::create<LLConversationViewSession>(params); } diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp index ab81b85d04..d9c461e836 100644 --- a/indra/newview/llfloaterimnearbychathandler.cpp +++ b/indra/newview/llfloaterimnearbychathandler.cpp @@ -41,6 +41,7 @@ #include "llfloaterreg.h"//for LLFloaterReg::getTypedInstance #include "llviewerwindow.h"//for screen channel position #include "llfloaterimnearbychat.h" +#include "llfloaterimcontainer.h" #include "llrootview.h" #include "lllayoutstack.h" @@ -283,12 +284,6 @@ bool LLFloaterIMNearbyChatScreenChannel::createPoolToast() void LLFloaterIMNearbyChatScreenChannel::addChat(LLSD& chat) { - //Ignore Nearby Toasts - if(gSavedSettings.getString("NotificationNearbyChatOptions") != "toast") - { - return; - } - //look in pool. if there is any message if(mStopProcessing) return; @@ -606,19 +601,30 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg, toast_msg = chat_msg.mText; } - // Add a nearby chat toast. - LLUUID id; - id.generate(); - chat["id"] = id; - std::string r_color_name = "White"; - F32 r_color_alpha = 1.0f; - LLViewerChat::getChatColor( chat_msg, r_color_name, r_color_alpha); - - chat["text_color"] = r_color_name; - chat["color_alpha"] = r_color_alpha; - chat["font_size"] = (S32)LLViewerChat::getChatFontSize() ; - chat["message"] = toast_msg; - channel->addChat(chat); + + //Will show toast when chat preference is set + if(gSavedSettings.getString("NotificationNearbyChatOptions") == "toast") + { + // Add a nearby chat toast. + LLUUID id; + id.generate(); + chat["id"] = id; + std::string r_color_name = "White"; + F32 r_color_alpha = 1.0f; + LLViewerChat::getChatColor( chat_msg, r_color_name, r_color_alpha); + + chat["text_color"] = r_color_name; + chat["color_alpha"] = r_color_alpha; + chat["font_size"] = (S32)LLViewerChat::getChatFontSize() ; + chat["message"] = toast_msg; + channel->addChat(chat); + } + //Will show Conversations floater when chat preference is set + else if(gSavedSettings.getString("NotificationNearbyChatOptions") == "openconversations") + { + LLFloaterReg::showInstance("im_container"); + } + } } diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index db52a50aa1..581043a3d0 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -116,79 +116,83 @@ static void on_avatar_name_cache_toast(const LLUUID& agent_id, void on_new_message(const LLSD& msg) { - std::string action; - LLUUID participant_id = msg["from_id"].asUUID(); - LLUUID session_id = msg["session_id"].asUUID(); + std::string action; + LLUUID participant_id = msg["from_id"].asUUID(); + LLUUID session_id = msg["session_id"].asUUID(); LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id); // determine action for this session if (session_id.isNull()) { - action = gSavedSettings.getString("NotificationNearbyChatOptions"); + action = gSavedSettings.getString("NotificationNearbyChatOptions"); } else if(session->isP2PSessionType()) { if (LLAvatarTracker::instance().isBuddy(participant_id)) { - action = gSavedSettings.getString("NotificationFriendIMOptions"); + action = gSavedSettings.getString("NotificationFriendIMOptions"); } else { - action = gSavedSettings.getString("NotificationNonFriendIMOptions"); + action = gSavedSettings.getString("NotificationNonFriendIMOptions"); } } else if(session->isAdHocSessionType()) { - action = gSavedSettings.getString("NotificationConferenceIMOptions"); + action = gSavedSettings.getString("NotificationConferenceIMOptions"); } else if(session->isGroupSessionType()) { - action = gSavedSettings.getString("NotificationGroupChatOptions"); + action = gSavedSettings.getString("NotificationGroupChatOptions"); } - // do not show notification in "do not disturb" mode or it goes from agent - if (gAgent.isDoNotDisturb() || gAgent.getID() == participant_id) - { - return; - } + // do not show notification in "do not disturb" mode or it goes from agent + if (gAgent.isDoNotDisturb() || gAgent.getID() == participant_id) + { + return; + } - // execution of the action + // execution of the action - if ("toast" == action) - { - // Skip toasting if we have open window of IM with this session id + if ("toast" == action) + { + // Skip toasting if we have open window of IM with this session id LLFloaterIMSession* open_im_floater = LLFloaterIMSession::findInstance(session_id); if ( - open_im_floater - && open_im_floater->isInVisibleChain() - && open_im_floater->hasFocus() - && !open_im_floater->isMinimized() - && !(open_im_floater->getHost() - && open_im_floater->getHost()->isMinimized()) - ) + open_im_floater + && open_im_floater->isInVisibleChain() + && open_im_floater->hasFocus() + && !open_im_floater->isMinimized() + && !(open_im_floater->getHost() + && open_im_floater->getHost()->isMinimized()) + ) { return; } - // Skip toasting for system messages - if (participant_id.isNull()) - { - return; - } + // Skip toasting for system messages + if (participant_id.isNull()) + { + return; + } //Show toast - LLAvatarNameCache::get(participant_id, boost::bind(&on_avatar_name_cache_toast, _1, _2, msg)); - } - else if ("flash" == action) - { - LLFloaterIMContainer* im_box = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container"); - if (im_box) + LLAvatarNameCache::get(participant_id, boost::bind(&on_avatar_name_cache_toast, _1, _2, msg)); + } + else if ("flash" == action) + { + LLFloaterIMContainer* im_box = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container"); + if (im_box) { - im_box->flashConversationItemWidget(session_id, true); // flashing of the conversation's item + im_box->flashConversationItemWidget(session_id, true); // flashing of the conversation's item } gToolBarView->flashCommand(LLCommandId("chat"), true); // flashing of the FUI button "Chat" - } + } + else if("openconversations" == action) + { + LLFloaterReg::showInstance("im_container"); + } } LLIMModel::LLIMModel() @@ -1725,7 +1729,7 @@ BOOL LLCallDialog::postBuild() return FALSE; dockToToolbarButton("speak"); - + return TRUE; } diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 3a26f14772..37491e5b58 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -6200,10 +6200,8 @@ void LLVivoxVoiceClient::lookupName(const LLUUID &id) void LLVivoxVoiceClient::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name) { - // For Vivox, we use the legacy name because I'm uncertain whether or - // not their service can tolerate switching to Username or Display Name - std::string legacy_name = av_name.getLegacyName(); - avatarNameResolved(agent_id, legacy_name); + std::string display_name = av_name.mDisplayName; + avatarNameResolved(agent_id, display_name); } void LLVivoxVoiceClient::avatarNameResolved(const LLUUID &id, const std::string &name) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml index 712e8bff7f..0c94b6b223 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml @@ -135,6 +135,10 @@ name="FriendIMOptions" width="223"> <combo_box.item + label="Open Conversations window" + name="OpenConversationsWindow" + value="openconversations"/> + <combo_box.item label="Pop up the message" name="PopUpMessage" value="toast"/> @@ -166,6 +170,10 @@ name="NonFriendIMOptions" width="223"> <combo_box.item + label="Open Conversations window" + name="OpenConversationsWindow" + value="openconversations"/> + <combo_box.item label="Pop up the message" name="PopUpMessage" value="toast"/> @@ -197,6 +205,10 @@ name="ConferenceIMOptions" width="223"> <combo_box.item + label="Open Conversations window" + name="OpenConversationsWindow" + value="openconversations"/> + <combo_box.item label="Pop up the message" name="PopUpMessage" value="toast"/> @@ -228,6 +240,10 @@ name="GroupChatOptions" width="223"> <combo_box.item + label="Open Conversations window" + name="OpenConversationsWindow" + value="openconversations"/> + <combo_box.item label="Pop up the message" name="PopUpMessage" value="toast"/> @@ -259,6 +275,10 @@ name="NearbyChatOptions" width="223"> <combo_box.item + label="Open Conversations window" + name="OpenConversationsWindow" + value="openconversations"/> + <combo_box.item label="Pop up the message" name="PopUpMessage" value="toast"/> |