diff options
| author | AlexanderP ProductEngine <apaschenko@productengine.com> | 2012-11-16 22:36:12 +0200 | 
|---|---|---|
| committer | AlexanderP ProductEngine <apaschenko@productengine.com> | 2012-11-16 22:36:12 +0200 | 
| commit | e298c2ded8e25a28127c668cf30a74a25c139041 (patch) | |
| tree | 0517349a365864905a68ba6bf9f66ee05ddc41f4 | |
| parent | 50b69c3f97c0b58791f7dd67f8b2fbdc9e8ef503 (diff) | |
CHUI-487, CHUI-488 FIXED (Enable flashing FUI button behavior and Implement Flashing Conversations panel line item behavior): implemented FUI button flashing; clean up code
| -rw-r--r-- | indra/llui/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/llui/llbutton.cpp | 46 | ||||
| -rw-r--r-- | indra/llui/llbutton.h | 6 | ||||
| -rw-r--r-- | indra/llui/llflashtimer.cpp (renamed from indra/newview/llflashtimer.cpp) | 6 | ||||
| -rw-r--r-- | indra/llui/llflashtimer.h (renamed from indra/newview/llflashtimer.h) | 3 | ||||
| -rwxr-xr-x | indra/llui/llfolderviewitem.cpp | 15 | ||||
| -rwxr-xr-x | indra/llui/llfolderviewitem.h | 3 | ||||
| -rw-r--r-- | indra/llui/lltabcontainer.cpp | 4 | ||||
| -rwxr-xr-x | indra/newview/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.h | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsessiontab.cpp | 10 | 
12 files changed, 63 insertions, 50 deletions
| diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt index 80cec6c9f3..ccc7aa8cec 100644 --- a/indra/llui/CMakeLists.txt +++ b/indra/llui/CMakeLists.txt @@ -47,6 +47,7 @@ set(llui_SOURCE_FILES      lleditmenuhandler.cpp      llf32uictrl.cpp      llfiltereditor.cpp +    llflashtimer.cpp      llflatlistview.cpp      llfloater.cpp      llfloaterreg.cpp @@ -153,6 +154,7 @@ set(llui_HEADER_FILES      lleditmenuhandler.h      llf32uictrl.h      llfiltereditor.h  +    llflashtimer.h      llflatlistview.h      llfloater.h      llfloaterreg.h diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 3b9076ee54..8a34e221b1 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -170,17 +170,18 @@ LLButton::LLButton(const LLButton::Params& p)  	mMouseUpSignal(NULL),  	mHeldDownSignal(NULL),  	mUseDrawContextAlpha(p.use_draw_context_alpha), -	mHandleRightMouse(p.handle_right_mouse), -	mButtonFlashCount(p.button_flash_count), -	mButtonFlashRate(p.button_flash_rate) +	mHandleRightMouse(p.handle_right_mouse)  { +	// If optional parameter "p.button_flash_count" is not provided, LLFlashTimer will be +	// used instead it a "default" value from gSavedSettings.getS32("FlashCount")). +	// Likewise, missing "p.button_flash_rate" is replaced by gSavedSettings.getF32("FlashPeriod"); +	S32 flash_count = p.button_flash_count || 0; +	F32 flash_rate = p.button_flash_rate || 0.0; // +	mFlashingTimer = new LLFlashTimer ((LLFlashTimer::callback_t)NULL, flash_count, flash_rate); +  	static LLUICachedControl<S32> llbutton_orig_h_pad ("UIButtonOrigHPad", 0);  	static Params default_params(LLUICtrlFactory::getDefaultParams<LLButton>()); -if (this->getName() == "chat") -{ -bool q = false; -q = !q; -} +  	if (!p.label_selected.isProvided())  	{  		mSelectedLabel = mUnselectedLabel; @@ -271,6 +272,7 @@ LLButton::~LLButton()  	delete mMouseDownSignal;  	delete mMouseUpSignal;  	delete mHeldDownSignal; +	delete mFlashingTimer;  }  // HACK: Committing a button is the same as instantly clicking it. @@ -595,22 +597,11 @@ void LLButton::draw()  {  	static LLCachedControl<bool> sEnableButtonFlashing(*LLUI::sSettingGroups["config"], "EnableButtonFlashing", true);  	F32 alpha = mUseDrawContextAlpha ? getDrawContext().mAlpha : getCurrentTransparency(); -	bool flash = FALSE; -	if( mFlashing) -	{ -		if ( sEnableButtonFlashing) -		{ -			F32 elapsed = mFlashingTimer.getElapsedTimeF32(); -			S32 flash_count = S32(elapsed * mButtonFlashRate * 2.f); -			// flash on or off? -			flash = (flash_count % 2 == 0) || flash_count > S32((F32)mButtonFlashCount * 2.f); -		} -		else -		{ // otherwise just highlight button in flash color -			flash = true; -		} -	} +	mFlashing = mFlashingTimer->isFlashing(); + +	bool flash = mFlashing && +	                 (!sEnableButtonFlashing || mFlashingTimer->isHighlight());  	bool pressed_by_keyboard = FALSE;  	if (hasFocus()) @@ -955,10 +946,13 @@ void LLButton::setToggleState(BOOL b)  void LLButton::setFlashing( BOOL b )	  {  -	if ((bool)b != mFlashing) +	if (b) +	{ +		mFlashingTimer->startFlashing(); +	} +	else  	{ -		mFlashing = b;  -		mFlashingTimer.reset(); +		mFlashingTimer->stopFlashing();  	}  } diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index deaa0823c6..92548298f5 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -30,6 +30,7 @@  #include "lluuid.h"  #include "llbadgeowner.h"  #include "llcontrol.h" +#include "llflashtimer.h"  #include "lluictrl.h"  #include "v4color.h"  #include "llframetimer.h" @@ -201,6 +202,7 @@ public:  	void			setHighlight(bool b);  	void			setFlashing( BOOL b );  	BOOL			getFlashing() const		{ return mFlashing; } +    LLFlashTimer*   getFlashTimer() {return mFlashingTimer;}  	void			setHAlign( LLFontGL::HAlign align )		{ mHAlign = align; }  	LLFontGL::HAlign getHAlign() const						{ return mHAlign; } @@ -285,8 +287,6 @@ protected:  	LLFrameTimer	mMouseDownTimer;  	bool			mNeedsHighlight; -	S32				mButtonFlashCount; -	F32				mButtonFlashRate;  	void			drawBorder(LLUIImage* imagep, const LLColor4& color, S32 size);  	void			resetMouseDownTimer(); @@ -373,7 +373,7 @@ protected:  	bool						mForcePressedState;  	bool						mDisplayPressedState; -	LLFrameTimer				mFlashingTimer; +	LLFlashTimer*				mFlashingTimer;  	bool						mHandleRightMouse;  }; diff --git a/indra/newview/llflashtimer.cpp b/indra/llui/llflashtimer.cpp index 2feacfa218..c572a83ff5 100644 --- a/indra/newview/llflashtimer.cpp +++ b/indra/llui/llflashtimer.cpp @@ -23,12 +23,10 @@   * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ - - -#include "llviewerprecompiledheaders.h" +#include "../newview/llviewerprecompiledheaders.h"  #include "llflashtimer.h" -#include "llviewercontrol.h" +#include "../newview/llviewercontrol.h"  #include "lleventtimer.h"  LLFlashTimer::LLFlashTimer(callback_t cb, S32 count, F32 period) diff --git a/indra/newview/llflashtimer.h b/indra/llui/llflashtimer.h index c030edfc52..2ef6ebcc8a 100644 --- a/indra/newview/llflashtimer.h +++ b/indra/llui/llflashtimer.h @@ -49,13 +49,14 @@ public:  	void startFlashing();  	void stopFlashing(); +  	bool isFlashing() {return mIsFlashing;}  	bool isHighlight() {return mIsHighlight;}  private:  	callback_t		mCallback;  	/** -	 * How many times Well will blink. +	 * How many times parent will blink.  	 */  	S32 mFlashCount;  	S32 mCurrentTickCount; diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 90568f344a..d65f53cd4d 100755 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -23,8 +23,9 @@  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA  * $/LicenseInfo$  */ +#include "../newview/llviewerprecompiledheaders.h" -#include "../newview/llflashtimer.h" +#include "llflashtimer.h"  #include "linden_common.h"  #include "llfolderviewitem.h" @@ -164,17 +165,19 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)  	}  } +// Destroys the object +LLFolderViewItem::~LLFolderViewItem() +{ +	delete mFlashTimer; +	mViewModelItem = NULL; +} +  BOOL LLFolderViewItem::postBuild()  {  	refresh();  	return TRUE;  } -// Destroys the object -LLFolderViewItem::~LLFolderViewItem( void ) -{ -	mViewModelItem = NULL; -}  LLFolderView* LLFolderViewItem::getRoot()  { diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index c16d65206f..c8d6c37b04 100755 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -26,10 +26,10 @@  #ifndef LLFOLDERVIEWITEM_H  #define LLFOLDERVIEWITEM_H +#include "llflashtimer.h"  #include "llview.h"  #include "lluiimage.h" -class LLFlashTimer;  class LLFolderView;  class LLFolderViewModelItem;  class LLFolderViewFolder; @@ -163,6 +163,7 @@ public:      S32 getIconPad();      S32 getTextPad(); +    LLFlashTimer* getFlashTimer() {return mFlashTimer;}  	// If 'selection' is 'this' then note that otherwise ignore.  	// Returns TRUE if this item ends up being selected.  	virtual BOOL setSelection(LLFolderViewItem* selection, BOOL openitem, BOOL take_keyboard_focus); diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index c24eb2ee90..d1f77830a6 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -506,8 +506,8 @@ void LLTabContainer::draw()  		}  	} -	mPrevArrowBtn->setFlashing(FALSE); -	mNextArrowBtn->setFlashing(FALSE); +	mPrevArrowBtn->getFlashTimer()->stopFlashing(); +	mNextArrowBtn->getFlashTimer()->stopFlashing();  } diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 574fdc495a..f652c9e50c 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -178,7 +178,6 @@ set(viewer_SOURCE_FILES      llfilepicker.cpp      llfilteredwearablelist.cpp      llfirstuse.cpp -    llflashtimer.cpp      llflexibleobject.cpp      llfloaterabout.cpp      llfloaterbvhpreview.cpp @@ -763,7 +762,6 @@ set(viewer_HEADER_FILES      llfilepicker.h      llfilteredwearablelist.h      llfirstuse.h -    llflashtimer.h      llflexibleobject.h      llfloaterabout.h      llfloaterbvhpreview.h diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index da6f3a484d..90ddeef5bb 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -41,6 +41,7 @@  #include "llcallbacklist.h"  #include "llgroupactions.h"  #include "llgroupiconctrl.h" +#include "llflashtimer.h"  #include "llfloateravatarpicker.h"  #include "llfloaterpreference.h"  #include "llimview.h" @@ -1594,17 +1595,22 @@ void LLFloaterIMContainer::reSelectConversation()  	{  		selectFloater(session_floater);  	} -  } -void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id) +void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id, bool is_flashes)  {  	LLFolderViewItem* widget = get_ptr_in_map(mConversationsWidgets,session_id);  	if (widget)  	{ -		widget->; +		if (is_flashes) +		{ +			widget->getFlashTimer()->startFlashing(); +		} +		else +		{ +			widget->getFlashTimer()->stopFlashing(); +		}  	} -  }  // EOF diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index 443688668b..9112b54018 100644 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -164,7 +164,7 @@ public:  	void setTimeNow(const LLUUID& session_id, const LLUUID& participant_id);  	void setNearbyDistances();  	void reSelectConversation(); -	void flashConversationItemWidget(const LLUUID& session_id); +	void flashConversationItemWidget(const LLUUID& session_id, bool is_flashes);  private:  	LLConversationViewSession* createConversationItemWidget(LLConversationItem* item); diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index 69b42cdd6d..42e7e6cb55 100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp @@ -40,6 +40,7 @@  #include "llfloaterimsession.h"  #include "llfloaterimcontainer.h" // to replace separate IM Floaters with multifloater container  #include "lllayoutstack.h" +#include "lltoolbarview.h"  #include "llfloaterimnearbychat.h"  const F32 REFRESH_INTERVAL = 0.2f; @@ -328,11 +329,20 @@ std::string LLFloaterIMSessionTab::appendTime()  void LLFloaterIMSessionTab::appendMessage(const LLChat& chat, const LLSD &args)  { +  	// Update the participant activity time  	LLFloaterIMContainer* im_box = LLFloaterIMContainer::findInstance();  	if (im_box)  	{  		im_box->setTimeNow(mSessionID,chat.mFromID); + +		// TODO: Warning! The next two lines of code are included below only temporarily +		// to demonstrate the correct format call the appropriate functions. +		// They should be moved to the right places when working on CHUI-486. ~Alex ProductEngine. +		// ---- start demo ---- +            im_box->flashConversationItemWidget(mSessionID, true); // flashing of the conversation's item +            gToolBarView->flashCommand(LLCommandId("chat"), true); // flashing of the FUI button "Chat" +        // ---- end demo -----  	} | 
