diff options
| author | Merov Linden <merov@lindenlab.com> | 2012-09-28 11:15:45 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2012-09-28 11:15:45 -0700 | 
| commit | 0651e10afff81a6e32828c122753d87b8503a79b (patch) | |
| tree | 3d0b9b8a42f45a3b120ef68b643509010736f84b | |
| parent | 30ea13381884bca7a07e2bca16e5bde0ccacb530 (diff) | |
CHUI-342, CHUI-366 and CHUI-367 : WIP : Allow a NO_TOOLTIP value for tooltips, update display/user names and sort on display/user names
| -rw-r--r-- | indra/llui/llview.cpp | 22 | ||||
| -rw-r--r-- | indra/llui/llview.h | 1 | ||||
| -rw-r--r-- | indra/newview/llconversationmodel.cpp | 10 | ||||
| -rwxr-xr-x | indra/newview/llconversationmodel.h | 2 | ||||
| -rwxr-xr-x | indra/newview/llimfloatercontainer.cpp | 33 | ||||
| -rw-r--r-- | indra/newview/llimfloatercontainer.h | 1 | 
6 files changed, 53 insertions, 16 deletions
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 5c2b3236f6..49e7eaef99 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -870,16 +870,18 @@ BOOL LLView::handleToolTip(S32 x, S32 y, MASK mask)  	std::string tooltip = getToolTip();  	if (!tooltip.empty())  	{ -		// allow "scrubbing" over ui by showing next tooltip immediately -		// if previous one was still visible -		F32 timeout = LLToolTipMgr::instance().toolTipVisible()  -			? LLUI::sSettingGroups["config"]->getF32( "ToolTipFastDelay" ) -			: LLUI::sSettingGroups["config"]->getF32( "ToolTipDelay" ); -		LLToolTipMgr::instance().show(LLToolTip::Params() -			.message(tooltip) -			.sticky_rect(calcScreenRect()) -			.delay_time(timeout)); - +		if (tooltip != NO_TOOLTIP_STRING) +		{ +			// allow "scrubbing" over ui by showing next tooltip immediately +			// if previous one was still visible +			F32 timeout = LLToolTipMgr::instance().toolTipVisible()  +			              ? LLUI::sSettingGroups["config"]->getF32( "ToolTipFastDelay" ) +			              : LLUI::sSettingGroups["config"]->getF32( "ToolTipDelay" ); +			LLToolTipMgr::instance().show(LLToolTip::Params() +			                              .message(tooltip) +			                              .sticky_rect(calcScreenRect()) +			                              .delay_time(timeout)); +		}  		handled = TRUE;  	} diff --git a/indra/llui/llview.h b/indra/llui/llview.h index 1c35349510..ba896b65a4 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -67,6 +67,7 @@ const BOOL	NOT_MOUSE_OPAQUE = FALSE;  const U32 GL_NAME_UI_RESERVED = 2; +static const std::string NO_TOOLTIP_STRING = " ";  // maintains render state during traversal of UI tree  class LLViewDrawContext diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp index 7d0ffa0788..176c05248d 100644 --- a/indra/newview/llconversationmodel.cpp +++ b/indra/newview/llconversationmodel.cpp @@ -36,6 +36,7 @@  LLConversationItem::LLConversationItem(std::string display_name, const LLUUID& uuid, LLFolderViewModelInterface& root_view_model) :  	LLFolderViewModelItemCommon(root_view_model),  	mName(display_name), +	mUseNameForSort(true),  	mUUID(uuid),  	mNeedsRefresh(true),  	mConvType(CONV_UNKNOWN), @@ -46,6 +47,7 @@ LLConversationItem::LLConversationItem(std::string display_name, const LLUUID& u  LLConversationItem::LLConversationItem(const LLUUID& uuid, LLFolderViewModelInterface& root_view_model) :  	LLFolderViewModelItemCommon(root_view_model),  	mName(""), +	mUseNameForSort(true),  	mUUID(uuid),  	mNeedsRefresh(true),  	mConvType(CONV_UNKNOWN), @@ -56,6 +58,7 @@ LLConversationItem::LLConversationItem(const LLUUID& uuid, LLFolderViewModelInte  LLConversationItem::LLConversationItem(LLFolderViewModelInterface& root_view_model) :  	LLFolderViewModelItemCommon(root_view_model),  	mName(""), +	mUseNameForSort(true),  	mUUID(),  	mNeedsRefresh(true),  	mConvType(CONV_UNKNOWN), @@ -251,8 +254,9 @@ LLConversationItemParticipant::LLConversationItemParticipant(const LLUUID& uuid,  void LLConversationItemParticipant::onAvatarNameCache(const LLAvatarName& av_name)  { -	mName = av_name.mUsername; -	mDisplayName = av_name.mDisplayName; +	mUseNameForSort = !av_name.mUsername.empty(); +	mName = (mUseNameForSort ? av_name.mUsername : NO_TOOLTIP_STRING); +	mDisplayName = (av_name.mDisplayName.empty() ? mName : av_name.mDisplayName);  	mNeedsRefresh = true;  	if (mParent)  	{ @@ -363,7 +367,7 @@ bool LLConversationSort::operator()(const LLConversationItem* const& a, const LL  	}  	// By default, in all other possible cases (including sort order type LLConversationFilter::SO_NAME of course),   	// we sort by name -	S32 compare = LLStringUtil::compareDict(a->getName(), b->getName()); +	S32 compare = LLStringUtil::compareDict((a->useNameForSort() ? a->getName() : a->getDisplayName()), (b->useNameForSort() ? b->getName() : b->getDisplayName()));  	return (compare < 0);  } diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h index 30f94d51ae..82d4f0a710 100755 --- a/indra/newview/llconversationmodel.h +++ b/indra/newview/llconversationmodel.h @@ -123,9 +123,11 @@ public:  	void resetRefresh() { mNeedsRefresh = false; }  	bool needsRefresh() { return mNeedsRefresh; } +	bool const useNameForSort() const { return mUseNameForSort; }  protected:  	std::string mName;	// Name of the session or the participant +	bool mUseNameForSort;  	LLUUID mUUID;		// UUID of the session or the participant  	EConversationType mConvType;	// Type of conversation item  	bool mNeedsRefresh;	// Flag signaling to the view that something changed for this item diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index e64247cd60..26b4e6c903 100755 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -158,8 +158,7 @@ BOOL LLIMFloaterContainer::postBuild()  	collapseMessagesPane(gSavedPerAccountSettings.getBOOL("ConversationsMessagePaneCollapsed"));  	collapseConversationsPane(gSavedPerAccountSettings.getBOOL("ConversationsListPaneCollapsed")); -	LLAvatarNameCache::addUseDisplayNamesCallback( -			boost::bind(&LLIMConversation::processChatHistoryStyleUpdate)); +	LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLIMConversation::processChatHistoryStyleUpdate));  	if (! mMessagesPane->isCollapsed())  	{ @@ -176,8 +175,11 @@ BOOL LLIMFloaterContainer::postBuild()  	mInitialized = true; -	// Add callback: we'll take care of view updates on idle +	// Add callbacks: +	// We'll take care of view updates on idle  	gIdleCallbacks.addFunction(idle, this); +	// When display name option change, we need to reload all participant names +	LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLIMFloaterContainer::processParticipantsStyleUpdate, this));  	return TRUE;  } @@ -330,6 +332,31 @@ void LLIMFloaterContainer::setMinimized(BOOL b)  	}  } +// Update all participants in the conversation lists +void LLIMFloaterContainer::processParticipantsStyleUpdate() +{ +	// On each session in mConversationsItems +	for (conversations_items_map::iterator it_session = mConversationsItems.begin(); it_session != mConversationsItems.end(); it_session++) +	{ +		// Get the current session descriptors +		LLConversationItem* session_model = it_session->second; +		// Iterate through each model participant child +		LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = session_model->getChildrenBegin(); +		LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = session_model->getChildrenEnd(); +		while (current_participant_model != end_participant_model) +		{ +			LLConversationItemParticipant* participant_model = dynamic_cast<LLConversationItemParticipant*>(*current_participant_model); +			// Get the avatar name for this participant id from the cache and update the model +			LLUUID participant_id = participant_model->getUUID(); +			LLAvatarName av_name; +			LLAvatarNameCache::get(participant_id,&av_name); +			participant_model->onAvatarNameCache(av_name); +			// Next participant +			current_participant_model++; +		} +	} +} +  // static  void LLIMFloaterContainer::idle(void* user_data)  { diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index 070feb3273..2debc2455b 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -96,6 +96,7 @@ private:  	void onNewMessageReceived(const LLSD& data);  	void onExpandCollapseButtonClicked(); +	void processParticipantsStyleUpdate();  	void collapseConversationsPane(bool collapse);  | 
