diff options
| author | Merov Linden <merov@lindenlab.com> | 2012-09-26 09:18:57 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2012-09-26 09:18:57 -0700 | 
| commit | 609fef130176c11dd7b14c305acf2f4331babad1 (patch) | |
| tree | 9a5c104ad80ab1545eecdd1933f8914b3708a3df | |
| parent | 3502e783b7425ba30d92f66697bafa89ae891e60 (diff) | |
| parent | a62a4b60e8a954509a722b96c984b0a798653516 (diff) | |
Pull merge from richard/viewer-chui
| -rwxr-xr-x | indra/llui/llfolderviewitem.cpp | 95 | ||||
| -rwxr-xr-x | indra/llui/llfolderviewitem.h | 16 | ||||
| -rwxr-xr-x | indra/newview/llconversationview.cpp | 131 | 
3 files changed, 82 insertions, 160 deletions
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 5589c5b166..5639c4d5a3 100755 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -44,6 +44,18 @@ static LLDefaultChildRegistry::Register<LLFolderViewItem> r("folder_view_item");  // statics   std::map<U8, LLFontGL*> LLFolderViewItem::sFonts; // map of styles to fonts +LLUIColor LLFolderViewItem::sFgColor; +LLUIColor LLFolderViewItem::sHighlightBgColor; +LLUIColor LLFolderViewItem::sHighlightFgColor; +LLUIColor LLFolderViewItem::sFocusOutlineColor; +LLUIColor LLFolderViewItem::sMouseOverColor; +LLUIColor LLFolderViewItem::sFilterBGColor; +LLUIColor LLFolderViewItem::sFilterTextColor; +LLUIColor LLFolderViewItem::sSuffixColor; +LLUIColor LLFolderViewItem::sLibraryColor; +LLUIColor LLFolderViewItem::sLinkColor; +LLUIColor LLFolderViewItem::sSearchStatusColor; +  // only integers can be initialized in header  const F32 LLFolderViewItem::FOLDER_CLOSE_TIME_CONSTANT = 0.02f;  const F32 LLFolderViewItem::FOLDER_OPEN_TIME_CONSTANT = 0.03f; @@ -130,10 +142,22 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)      mArrowSize(p.arrow_size),      mMaxFolderItemOverlap(p.max_folder_item_overlap)  { +	sFgColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE); +	sHighlightBgColor = LLUIColorTable::instance().getColor("MenuItemHighlightBgColor", DEFAULT_WHITE); +	sHighlightFgColor = LLUIColorTable::instance().getColor("MenuItemHighlightFgColor", DEFAULT_WHITE); +	sFocusOutlineColor = LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE); +	sMouseOverColor = LLUIColorTable::instance().getColor("InventoryMouseOverColor", DEFAULT_WHITE); +	sFilterBGColor = LLUIColorTable::instance().getColor("FilterBackgroundColor", DEFAULT_WHITE); +	sFilterTextColor = LLUIColorTable::instance().getColor("FilterTextColor", DEFAULT_WHITE); +	sSuffixColor = LLUIColorTable::instance().getColor("InventoryItemColor", DEFAULT_WHITE); +	sLibraryColor = LLUIColorTable::instance().getColor("InventoryItemLibraryColor", DEFAULT_WHITE); +	sLinkColor = LLUIColorTable::instance().getColor("InventoryItemLinkColor", DEFAULT_WHITE); +	sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", DEFAULT_WHITE); +  	if (mViewModelItem)  	{  		mViewModelItem->setFolderViewItem(this); -} +	}  }  BOOL LLFolderViewItem::postBuild() @@ -624,6 +648,22 @@ BOOL LLFolderViewItem::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,  	return handled;  } +void LLFolderViewItem::drawOpenFolderArrow(const Params& default_params, const LLUIColor& fg_color) +{ +	//--------------------------------------------------------------------------------// +	// Draw open folder arrow +	// +	const S32 TOP_PAD = default_params.item_top_pad; + +	if (hasVisibleChildren() || getViewModelItem()->hasChildren()) +	{ +		LLUIImage* arrow_image = default_params.folder_arrow_image; +		gl_draw_scaled_rotated_image( +			mIndentation, getRect().getHeight() - mArrowSize - mTextPad - TOP_PAD, +			mArrowSize, mArrowSize, mControlLabelRotation, arrow_image->getImage(), fg_color); +	} +} +  void LLFolderViewItem::drawHighlight(const BOOL showContent, const BOOL hasKeyboardFocus, const LLUIColor &bgColor,                                                           const LLUIColor &focusOutlineColor, const LLUIColor &mouseOverColor)  { @@ -734,18 +774,6 @@ void LLFolderViewItem::drawLabel(const LLFontGL * font, const F32 x, const F32 y  void LLFolderViewItem::draw()  { -	static LLUIColor sFgColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE); -    static LLUIColor sHighlightBgColor = LLUIColorTable::instance().getColor("MenuItemHighlightBgColor", DEFAULT_WHITE); -    static LLUIColor sHighlightFgColor = LLUIColorTable::instance().getColor("MenuItemHighlightFgColor", DEFAULT_WHITE); -    static LLUIColor sFocusOutlineColor = LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE); -    static LLUIColor sMouseOverColor = LLUIColorTable::instance().getColor("InventoryMouseOverColor", DEFAULT_WHITE);	 -	static LLUIColor sFilterBGColor = LLUIColorTable::instance().getColor("FilterBackgroundColor", DEFAULT_WHITE); -	static LLUIColor sFilterTextColor = LLUIColorTable::instance().getColor("FilterTextColor", DEFAULT_WHITE); -	static LLUIColor sSuffixColor = LLUIColorTable::instance().getColor("InventoryItemColor", DEFAULT_WHITE); -	static LLUIColor sLibraryColor = LLUIColorTable::instance().getColor("InventoryItemLibraryColor", DEFAULT_WHITE); -	static LLUIColor sLinkColor = LLUIColorTable::instance().getColor("InventoryItemLinkColor", DEFAULT_WHITE); -	static LLUIColor sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", DEFAULT_WHITE); -	      const BOOL show_context = (getRoot() ? getRoot()->getShowSelectionContext() : FALSE);      const BOOL filled = show_context || (getRoot() ? getRoot()->getParentPanel()->hasFocus() : FALSE); // If we have keyboard focus, draw selection filled @@ -756,17 +784,7 @@ void LLFolderViewItem::draw()      getViewModelItem()->update(); -	//--------------------------------------------------------------------------------// -	// Draw open folder arrow -	// -	if (hasVisibleChildren() || getViewModelItem()->hasChildren()) -	{ -		LLUIImage* arrow_image = default_params.folder_arrow_image; -		gl_draw_scaled_rotated_image( -			mIndentation, getRect().getHeight() - mArrowSize - mTextPad - TOP_PAD, -			mArrowSize, mArrowSize, mControlLabelRotation, arrow_image->getImage(), sFgColor); -	} - +    drawOpenFolderArrow(default_params, sFgColor);      drawHighlight(show_context, filled, sHighlightBgColor, sFocusOutlineColor, sMouseOverColor); @@ -877,6 +895,22 @@ LLFolderViewFolder::LLFolderViewFolder( const LLFolderViewItem::Params& p ):  {  } +void LLFolderViewFolder::updateLabelRotation() +{ +	if (mAutoOpenCountdown != 0.f) +	{ +		mControlLabelRotation = mAutoOpenCountdown * -90.f; +	} +	else if (isOpen()) +	{ +		mControlLabelRotation = lerp(mControlLabelRotation, -90.f, LLCriticalDamp::getInterpolant(0.04f)); +	} +	else +	{ +		mControlLabelRotation = lerp(mControlLabelRotation, 0.f, LLCriticalDamp::getInterpolant(0.025f)); +	} +} +  // Destroys the object  LLFolderViewFolder::~LLFolderViewFolder( void )  { @@ -1832,18 +1866,7 @@ BOOL LLFolderViewFolder::handleDoubleClick( S32 x, S32 y, MASK mask )  void LLFolderViewFolder::draw()  { -	if (mAutoOpenCountdown != 0.f) -	{ -		mControlLabelRotation = mAutoOpenCountdown * -90.f; -	} -	else if (isOpen()) -	{ -		mControlLabelRotation = lerp(mControlLabelRotation, -90.f, LLCriticalDamp::getInterpolant(0.04f)); -	} -	else -	{ -		mControlLabelRotation = lerp(mControlLabelRotation, 0.f, LLCriticalDamp::getInterpolant(0.025f)); -	} +	updateLabelRotation();  	LLFolderViewItem::draw(); diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index b7e0091aca..d4002c3184 100755 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -116,6 +116,19 @@ protected:  								mAllowOpen,  								mSelectPending; +	// For now assuming all colors are the same in derived classes. +	static LLUIColor			sFgColor; +	static LLUIColor			sHighlightBgColor; +	static LLUIColor			sHighlightFgColor; +	static LLUIColor			sFocusOutlineColor; +	static LLUIColor			sMouseOverColor; +	static LLUIColor			sFilterBGColor; +	static LLUIColor			sFilterTextColor; +	static LLUIColor			sSuffixColor; +	static LLUIColor			sLibraryColor; +	static LLUIColor			sLinkColor; +	static LLUIColor			sSearchStatusColor; +  	// this is an internal method used for adding items to folders. A  	// no-op at this level, but reimplemented in derived classes.  	virtual void addItem(LLFolderViewItem*) { } @@ -247,6 +260,7 @@ public:  	//	virtual void handleDropped();  	virtual void draw(); +	void drawOpenFolderArrow(const Params& default_params, const LLUIColor& fg_color);      void drawHighlight(const BOOL showContent, const BOOL hasKeyboardFocus, const LLUIColor &bgColor, const LLUIColor &outlineColor, const LLUIColor &mouseOverColor);      void drawLabel(const LLFontGL * font, const F32 x, const F32 y, const LLColor4& color, F32 &right_x);  	virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, @@ -274,6 +288,8 @@ protected:  	LLFolderViewFolder( const LLFolderViewItem::Params& );  	friend class LLUICtrlFactory; +	void updateLabelRotation(); +  public:  	typedef std::list<LLFolderViewItem*> items_t;  	typedef std::list<LLFolderViewFolder*> folders_t; diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index 394a830e5e..a4733bb693 100755 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -72,136 +72,19 @@ BOOL LLConversationViewSession::postBuild()  void LLConversationViewSession::draw()  { -// *TODO Seth PE: remove the code duplicated from LLFolderViewFolder::draw() -// ***** LLFolderViewFolder::draw() code begin ***** -	if (mAutoOpenCountdown != 0.f) -	{ -		mControlLabelRotation = mAutoOpenCountdown * -90.f; -	} -	else if (isOpen()) -	{ -		mControlLabelRotation = lerp(mControlLabelRotation, -90.f, LLCriticalDamp::getInterpolant(0.04f)); -	} -	else -	{ -		mControlLabelRotation = lerp(mControlLabelRotation, 0.f, LLCriticalDamp::getInterpolant(0.025f)); -	} -// ***** LLFolderViewFolder::draw() code end ***** - -// *TODO Seth PE: remove the code duplicated from LLFolderViewItem::draw() -// ***** LLFolderViewItem::draw() code begin ***** - -	static LLUIColor sFgColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE); -	static LLUIColor sHighlightBgColor = LLUIColorTable::instance().getColor("MenuItemHighlightBgColor", DEFAULT_WHITE); -	static LLUIColor sFocusOutlineColor = LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE); -	static LLUIColor sMouseOverColor = LLUIColorTable::instance().getColor("InventoryMouseOverColor", DEFAULT_WHITE); +	getViewModelItem()->update();  	const LLFolderViewItem::Params& default_params = LLUICtrlFactory::getDefaultParams<LLFolderViewItem>(); -	const S32 TOP_PAD = default_params.item_top_pad; -	const S32 FOCUS_LEFT = 1; +	const BOOL show_context = (getRoot() ? getRoot()->getShowSelectionContext() : FALSE); -	getViewModelItem()->update(); +	// update the rotation angle of open folder arrow +	updateLabelRotation(); -	//--------------------------------------------------------------------------------// -	// Draw open folder arrow -	// -	if (hasVisibleChildren() || getViewModelItem()->hasChildren()) -	{ -		LLUIImage* arrow_image = default_params.folder_arrow_image; -		gl_draw_scaled_rotated_image( -			mIndentation, getRect().getHeight() - mArrowSize - mTextPad - TOP_PAD, -			mArrowSize, mArrowSize, mControlLabelRotation, arrow_image->getImage(), sFgColor); -	} +	drawOpenFolderArrow(default_params, sFgColor); +	// draw highlight for selected items +	drawHighlight(show_context, true, sHighlightBgColor, sFocusOutlineColor, sMouseOverColor); -	//--------------------------------------------------------------------------------// -	// Draw highlight for selected items -	// -	const BOOL show_context = (getRoot() ? getRoot()->getShowSelectionContext() : FALSE); -	const BOOL filled = show_context || (getRoot() ? getRoot()->getParentPanel()->hasFocus() : FALSE); // If we have keyboard focus, draw selection filled -	const S32 focus_top = getRect().getHeight(); -	const S32 focus_bottom = getRect().getHeight() - mItemHeight; -	const bool folder_open = (getRect().getHeight() > mItemHeight + 4); -	if (mIsSelected) // always render "current" item.  Only render other selected items if mShowSingleSelection is FALSE -	{ -		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -		LLColor4 bg_color = sHighlightBgColor; -		if (!mIsCurSelection) -		{ -			// do time-based fade of extra objects -			F32 fade_time = (getRoot() ? getRoot()->getSelectionFadeElapsedTime() : 0.0f); -			if (getRoot() && getRoot()->getShowSingleSelection()) -			{ -				// fading out -				bg_color.mV[VALPHA] = clamp_rescale(fade_time, 0.f, 0.4f, bg_color.mV[VALPHA], 0.f); -			} -			else -			{ -				// fading in -				bg_color.mV[VALPHA] = clamp_rescale(fade_time, 0.f, 0.4f, 0.f, bg_color.mV[VALPHA]); -			} -		} -		gl_rect_2d(FOCUS_LEFT, -				   focus_top, -				   getRect().getWidth() - 2, -				   focus_bottom, -				   bg_color, filled); -		if (mIsCurSelection) -		{ -			gl_rect_2d(FOCUS_LEFT, -					   focus_top, -					   getRect().getWidth() - 2, -					   focus_bottom, -					   sFocusOutlineColor, FALSE); -		} -		if (folder_open) -		{ -			gl_rect_2d(FOCUS_LEFT, -					   focus_bottom + 1, // overlap with bottom edge of above rect -					   getRect().getWidth() - 2, -					   0, -					   sFocusOutlineColor, FALSE); -			if (show_context) -			{ -				gl_rect_2d(FOCUS_LEFT, -						   focus_bottom + 1, -						   getRect().getWidth() - 2, -						   0, -						   sHighlightBgColor, TRUE); -			} -		} -	} -	else if (mIsMouseOverTitle) -	{ -		gl_rect_2d(FOCUS_LEFT, -			focus_top, -			getRect().getWidth() - 2, -			focus_bottom, -			sMouseOverColor, FALSE); -	} - -	//--------------------------------------------------------------------------------// -	// Draw DragNDrop highlight -	// -	if (mDragAndDropTarget) -	{ -		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -		gl_rect_2d(FOCUS_LEFT, -				   focus_top, -				   getRect().getWidth() - 2, -				   focus_bottom, -				   sHighlightBgColor, FALSE); -		if (folder_open) -		{ -			gl_rect_2d(FOCUS_LEFT, -					   focus_bottom + 1, // overlap with bottom edge of above rect -					   getRect().getWidth() - 2, -					   0, -					   sHighlightBgColor, FALSE); -		} -		mDragAndDropTarget = FALSE; -	} -// ***** LLFolderViewItem::draw() code end *****  	// draw children if root folder, or any other folder that is open or animating to closed state  	bool draw_children = getRoot() == static_cast<LLFolderViewFolder*>(this)  | 
