diff options
| author | Alexei Arabadji <aarabadji@productengine.com> | 2010-05-06 10:18:19 +0300 | 
|---|---|---|
| committer | Alexei Arabadji <aarabadji@productengine.com> | 2010-05-06 10:18:19 +0300 | 
| commit | dd93c6e6f34fb72cc4be975af75e678ac14b5571 (patch) | |
| tree | 0dbd8a30f93e5c812415626450f4fc94249cf78b /indra | |
| parent | 00360bb1cd28715e2b55b8d92db690a2e3d872e2 (diff) | |
EXT-7230 FIXED
Corrected functionality that determines is syswell window is empty;
Removed obsolete functionality related to separator of syswell window items;
reviewed by Loren Shih at https://codereview.productengine.com/secondlife/r/349/
--HG--
branch : product-engine
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llsyswellwindow.cpp | 103 | ||||
| -rw-r--r-- | indra/newview/llsyswellwindow.h | 17 | 
2 files changed, 9 insertions, 111 deletions
| diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index cbb030836e..cb65756764 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -56,14 +56,11 @@ LLSysWellWindow::LLSysWellWindow(const LLSD& key) : LLTransientDockableFloater(N  													mChannel(NULL),  													mMessageList(NULL),  													mSysWellChiclet(NULL), -													mSeparator(NULL),  													NOTIFICATION_WELL_ANCHOR_NAME("notification_well_panel"),  													IM_WELL_ANCHOR_NAME("im_well_panel"),  													mIsReshapedByUser(false)  { -	mTypedItemsCount[IT_NOTIFICATION] = 0; -	mTypedItemsCount[IT_INSTANT_MESSAGE] = 0;  	setOverlapsScreenChannel(true);  } @@ -75,18 +72,6 @@ BOOL LLSysWellWindow::postBuild()  	// get a corresponding channel  	initChannel(); -	LLPanel::Params params; -	mSeparator = LLUICtrlFactory::create<LLPanel>(params); -	LLUICtrlFactory::instance().buildPanel(mSeparator, "panel_separator.xml"); - -	LLRect rc = mSeparator->getRect(); -	rc.setOriginAndSize(0, 0, mMessageList->getItemsRect().getWidth(), rc.getHeight()); -	mSeparator->setRect(rc); -	mSeparator->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_TOP); -	mSeparator->setVisible(FALSE); - -	mMessageList->addItem(mSeparator); -  	// click on SysWell Window should clear "new message" state (and 'Lit' status). EXT-3147.  	// mouse up callback is not called in this case.  	setMouseDownCallback(boost::bind(&LLSysWellWindow::releaseNewMessagesState, this)); @@ -130,7 +115,7 @@ void LLSysWellWindow::removeItemByID(const LLUUID& id)  {  	if(mMessageList->removeItemByValue(id))  	{ -		handleItemRemoved(IT_NOTIFICATION); +		mSysWellChiclet->updateWidget(isWindowEmpty());  		reshapeWindow();  	}  	else @@ -258,76 +243,7 @@ void LLSysWellWindow::releaseNewMessagesState()  //---------------------------------------------------------------------------------  bool LLSysWellWindow::isWindowEmpty()  { -	// keep in mind, mSeparator is always in the list -	return mMessageList->size() == 1; -} - -// *TODO: mantipov: probably is deprecated -void LLSysWellWindow::handleItemAdded(EItemType added_item_type) -{ -	bool should_be_shown = ++mTypedItemsCount[added_item_type] == 1 && anotherTypeExists(added_item_type); - -	if (should_be_shown && !mSeparator->getVisible()) -	{ -		mSeparator->setVisible(TRUE); - -		// refresh list to recalculate mSeparator position -		mMessageList->reshape(mMessageList->getRect().getWidth(), mMessageList->getRect().getHeight()); -	} - -	//fix for EXT-3254 -	//set limits for min_height.  -	S32 parent_list_delta_height = getRect().getHeight() - mMessageList->getRect().getHeight(); - -	std::vector<LLPanel*> items; -	mMessageList->getItems(items); - -	if(items.size()>1)//first item is separator -	{ -		S32 min_height; -		S32 min_width; -		getResizeLimits(&min_width,&min_height); - -		min_height = items[1]->getRect().getHeight() + 2 * mMessageList->getBorderWidth() + parent_list_delta_height; - -		setResizeLimits(min_width,min_height); -	} -	mSysWellChiclet->updateWidget(isWindowEmpty()); -} - -void LLSysWellWindow::handleItemRemoved(EItemType removed_item_type) -{ -	bool should_be_hidden = --mTypedItemsCount[removed_item_type] == 0; - -	if (should_be_hidden && mSeparator->getVisible()) -	{ -		mSeparator->setVisible(FALSE); - -		// refresh list to recalculate mSeparator position -		mMessageList->reshape(mMessageList->getRect().getWidth(), mMessageList->getRect().getHeight()); -	} -	mSysWellChiclet->updateWidget(isWindowEmpty()); -} - -bool LLSysWellWindow::anotherTypeExists(EItemType item_type) -{ -	bool exists = false; -	switch(item_type) -	{ -	case IT_INSTANT_MESSAGE: -		if (mTypedItemsCount[IT_NOTIFICATION] > 0) -		{ -			exists = true; -		} -		break; -	case IT_NOTIFICATION: -		if (mTypedItemsCount[IT_INSTANT_MESSAGE] > 0) -		{ -			exists = true; -		} -		break; -	} -	return exists; +	return mMessageList->size() == 0;  }  /************************************************************************/ @@ -559,8 +475,7 @@ void LLNotificationWellWindow::addItem(LLSysWellItem::Params p)  	LLSysWellItem* new_item = new LLSysWellItem(p);  	if (mMessageList->addItem(new_item, value, ADD_TOP))  	{ -		handleItemAdded(IT_NOTIFICATION); - +		mSysWellChiclet->updateWidget(isWindowEmpty());  		reshapeWindow();  		new_item->setOnItemCloseCallback(boost::bind(&LLNotificationWellWindow::onItemClose, this, _1)); @@ -755,9 +670,9 @@ void LLIMWellWindow::addIMRow(const LLUUID& sessionId, S32 chicletCounter,  							   const std::string& name, const LLUUID& otherParticipantId)  {  	RowPanel* item = new RowPanel(this, sessionId, chicletCounter, name, otherParticipantId); -	if (mMessageList->insertItemAfter(mSeparator, item, sessionId)) +	if (mMessageList->addItem(item, sessionId))  	{ -		handleItemAdded(IT_INSTANT_MESSAGE); +		mSysWellChiclet->updateWidget(isWindowEmpty());  	}  	else  	{ @@ -782,7 +697,7 @@ void LLIMWellWindow::delIMRow(const LLUUID& sessionId)  	if (mMessageList->removeItemByValue(sessionId))  	{ -		handleItemRemoved(IT_INSTANT_MESSAGE); +		mSysWellChiclet->updateWidget(isWindowEmpty());  	}  	else  	{ @@ -810,9 +725,9 @@ void LLIMWellWindow::addObjectRow(const LLUUID& notification_id, bool new_messag  	if (mMessageList->getItemByValue(notification_id) == NULL)  	{  		ObjectRowPanel* item = new ObjectRowPanel(notification_id, new_message); -		if (mMessageList->insertItemAfter(mSeparator, item, notification_id)) +		if (mMessageList->addItem(item, notification_id))  		{ -			handleItemAdded(IT_INSTANT_MESSAGE); +			mSysWellChiclet->updateWidget(isWindowEmpty());  		}  		else  		{ @@ -827,7 +742,7 @@ void LLIMWellWindow::removeObjectRow(const LLUUID& notification_id)  {  	if (mMessageList->removeItemByValue(notification_id))  	{ -		handleItemRemoved(IT_INSTANT_MESSAGE); +		mSysWellChiclet->updateWidget(isWindowEmpty());  	}  	else  	{ diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h index 296bdf7482..c8215c71ee 100644 --- a/indra/newview/llsyswellwindow.h +++ b/indra/newview/llsyswellwindow.h @@ -82,20 +82,12 @@ public:  protected: -	typedef enum{ -		IT_NOTIFICATION, -		IT_INSTANT_MESSAGE -	}EItemType;  -  	// gets a rect that bounds possible positions for the SysWellWindow on a screen (EXT-1111)  	void getAllowedRect(LLRect& rect);  	// init Window's channel  	virtual void initChannel(); -	void handleItemAdded(EItemType added_item_type); -	void handleItemRemoved(EItemType removed_item_type); -	bool anotherTypeExists(EItemType item_type) ;  	const std::string NOTIFICATION_WELL_ANCHOR_NAME;  	const std::string IM_WELL_ANCHOR_NAME; @@ -113,15 +105,6 @@ protected:  	 */  	LLSysWellChiclet* mSysWellChiclet; -	/** -	 *	Special panel which is used as separator of Notifications & IM Rows. -	 *	It is always presents in the list and shown when it is necessary. -	 *	It should be taken into account when reshaping and checking list size -	 */ -	LLPanel* mSeparator; - -	typedef std::map<EItemType, S32> typed_items_count_t; -	typed_items_count_t mTypedItemsCount;  	bool mIsReshapedByUser;  }; | 
