diff options
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/llfloaterreg.cpp | 52 | ||||
| -rw-r--r-- | indra/llui/llfloaterreg.h | 1 | ||||
| -rw-r--r-- | indra/llui/llnotifications.cpp | 14 | ||||
| -rw-r--r-- | indra/llui/llnotifications.h | 6 | ||||
| -rw-r--r-- | indra/llui/llscrolllistcell.cpp | 23 | ||||
| -rw-r--r-- | indra/llui/llscrolllistcell.h | 7 | ||||
| -rw-r--r-- | indra/llui/llscrolllistctrl.cpp | 18 | ||||
| -rw-r--r-- | indra/llui/llscrolllistctrl.h | 4 | ||||
| -rw-r--r-- | indra/llui/llscrolllistitem.cpp | 3 | ||||
| -rw-r--r-- | indra/llui/llscrolllistitem.h | 4 | ||||
| -rw-r--r-- | indra/llui/llui.cpp | 1 | 
11 files changed, 127 insertions, 6 deletions
| diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index 85e07fc6a6..0b27ff3567 100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp @@ -525,6 +525,58 @@ void LLFloaterReg::toggleInstanceOrBringToFront(const LLSD& sdname, const LLSD&  }  // static +// Same as toggleInstanceOrBringToFront but does not close floater. +// unlike showInstance() does not trigger onOpen() if already open +void LLFloaterReg::showInstanceOrBringToFront(const LLSD& sdname, const LLSD& key) +{ +    std::string name = sdname.asString(); +    LLFloater* instance = getInstance(name, key); + + +    if (!instance) +    { +        LL_DEBUGS() << "Unable to get instance of floater '" << name << "'" << LL_ENDL; +        return; +    } + +    // If hosted, we need to take that into account +    LLFloater* host = instance->getHost(); + +    if (host) +    { +        if (host->isMinimized() || !host->isShown() || !host->isFrontmost()) +        { +            host->setMinimized(FALSE); +            instance->openFloater(key); +            instance->setVisibleAndFrontmost(true, key); +        } +        else if (!instance->getVisible()) +        { +            instance->openFloater(key); +            instance->setVisibleAndFrontmost(true, key); +            instance->setFocus(TRUE); +        } +    } +    else +    { +        if (instance->isMinimized()) +        { +            instance->setMinimized(FALSE); +            instance->setVisibleAndFrontmost(true, key); +        } +        else if (!instance->isShown()) +        { +            instance->openFloater(key); +            instance->setVisibleAndFrontmost(true, key); +        } +        else if (!instance->isFrontmost()) +        { +            instance->setVisibleAndFrontmost(true, key); +        } +    } +} + +// static  U32 LLFloaterReg::getVisibleFloaterInstanceCount()  {  	U32 count = 0; diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h index e3b17dcb4f..b337579552 100644 --- a/indra/llui/llfloaterreg.h +++ b/indra/llui/llfloaterreg.h @@ -128,6 +128,7 @@ public:  	// Callback wrappers  	static void toggleInstanceOrBringToFront(const LLSD& sdname, const LLSD& key = LLSD()); +	static void showInstanceOrBringToFront(const LLSD& sdname, const LLSD& key = LLSD());  	// Typed find / get / show  	template <class T> diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 06ec648178..c9e5c6653b 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -1699,6 +1699,20 @@ void LLNotifications::add(const LLNotificationPtr pNotif)  	updateItem(LLSD().with("sigtype", "add").with("id", pNotif->id()), pNotif);  } +void LLNotifications::load(const LLNotificationPtr pNotif) +{ +	if (pNotif == NULL) return; + +	// first see if we already have it -- if so, that's a problem +	LLNotificationSet::iterator it=mItems.find(pNotif); +	if (it != mItems.end()) +	{ +		LL_ERRS() << "Notification loaded a second time to the master notification channel." << LL_ENDL; +	} + +	updateItem(LLSD().with("sigtype", "load").with("id", pNotif->id()), pNotif); +} +  void LLNotifications::cancel(LLNotificationPtr pNotif)  {  	if (pNotif == NULL || pNotif->isCancelled()) return; diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index 2f4578da17..3ee48d1401 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -910,6 +910,7 @@ public:  	LLNotificationPtr add(const LLNotification::Params& p);  	void add(const LLNotificationPtr pNotif); +	void load(const LLNotificationPtr pNotif);  	void cancel(LLNotificationPtr pNotif);  	void cancelByName(const std::string& name);  	void cancelByOwner(const LLUUID ownerId); @@ -1106,6 +1107,11 @@ private:  		mHistory.push_back(p);  	} +	void onLoad(LLNotificationPtr p)  +	{ +		mHistory.push_back(p); +	} +  	std::vector<LLNotificationPtr> mHistory;  }; diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp index 13839da400..8dd552d2ad 100644 --- a/indra/llui/llscrolllistcell.cpp +++ b/indra/llui/llscrolllistcell.cpp @@ -79,6 +79,14 @@ const LLSD LLScrollListCell::getValue() const  	return LLStringUtil::null;  } + +// virtual +const LLSD LLScrollListCell::getAltValue() const +{ +	return LLStringUtil::null; +} + +  //  // LLScrollListIcon  // @@ -173,6 +181,7 @@ U32 LLScrollListText::sCount = 0;  LLScrollListText::LLScrollListText(const LLScrollListCell::Params& p)  :	LLScrollListCell(p),  	mText(p.label.isProvided() ? p.label() : p.value().asString()), +	mAltText(p.alt_value().asString()),  	mFont(p.font),  	mColor(p.color),  	mUseColor(p.color.isProvided()), @@ -275,10 +284,22 @@ void LLScrollListText::setValue(const LLSD& text)  	setText(text.asString());  } +//virtual +void LLScrollListText::setAltValue(const LLSD& text) +{ +	mAltText = text.asString(); +} +  //virtual   const LLSD LLScrollListText::getValue() const		  {  -	return LLSD(mText.getString());  +	return LLSD(mText.getString());   +} + +//virtual  +const LLSD LLScrollListText::getAltValue() const		 +{  +	return LLSD(mAltText.getString());  } diff --git a/indra/llui/llscrolllistcell.h b/indra/llui/llscrolllistcell.h index 19576fb247..ede8d847d9 100644 --- a/indra/llui/llscrolllistcell.h +++ b/indra/llui/llscrolllistcell.h @@ -60,6 +60,7 @@ public:  		Optional<void*>				userdata;  		Optional<LLSD>				value; // state of checkbox, icon id/name, date +		Optional<LLSD>				alt_value;  		Optional<std::string>		label; // description or text  		Optional<std::string>		tool_tip; @@ -76,6 +77,7 @@ public:  			enabled("enabled", true),  			visible("visible", true),  			value("value"), +			alt_value("alt_value", ""),  			label("label"),  			tool_tip("tool_tip", ""),  			font("font", LLFontGL::getFontSansSerifSmall()), @@ -98,7 +100,9 @@ public:  	virtual S32				getContentWidth() const { return 0; }  	virtual S32				getHeight() const { return 0; }  	virtual const LLSD		getValue() const; +	virtual const LLSD		getAltValue() const;  	virtual void			setValue(const LLSD& value) { } +	virtual void			setAltValue(const LLSD& value) { }  	virtual const std::string &getToolTip() const { return mToolTip; }  	virtual void			setToolTip(const std::string &str) { mToolTip = str; }  	virtual BOOL			getVisible() const { return TRUE; } @@ -138,7 +142,9 @@ public:  	/*virtual*/ S32		getContentWidth() const;  	/*virtual*/ S32		getHeight() const;  	/*virtual*/ void	setValue(const LLSD& value); +	/*virtual*/ void	setAltValue(const LLSD& value);  	/*virtual*/ const LLSD getValue() const; +	/*virtual*/ const LLSD getAltValue() const;  	/*virtual*/ BOOL	getVisible() const;  	/*virtual*/ void	highlightText(S32 offset, S32 num_chars); @@ -156,6 +162,7 @@ public:  protected:  	LLUIString		mText; +	LLUIString		mAltText;  	S32				mTextWidth;  	const LLFontGL*	mFont;  	LLColor4		mColor; diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index be85f1cb6a..1059190712 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -66,9 +66,10 @@ static LLDefaultChildRegistry::Register<LLScrollListCtrl> r("scroll_list");  // local structures & classes.  struct SortScrollListItem  { -	SortScrollListItem(const std::vector<std::pair<S32, BOOL> >& sort_orders,const LLScrollListCtrl::sort_signal_t*	sort_signal) +	SortScrollListItem(const std::vector<std::pair<S32, BOOL> >& sort_orders,const LLScrollListCtrl::sort_signal_t*	sort_signal, bool alternate_sort)  	:	mSortOrders(sort_orders)  	,   mSortSignal(sort_signal) +	,	mAltSort(alternate_sort)  	{}  	bool operator()(const LLScrollListItem* i1, const LLScrollListItem* i2) @@ -93,7 +94,14 @@ struct SortScrollListItem  				}  				else  				{ -					sort_result = order * LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString()); +					if (mAltSort && !cell1->getAltValue().asString().empty() && !cell2->getAltValue().asString().empty()) +					{ +						sort_result = order * LLStringUtil::compareDict(cell1->getAltValue().asString(), cell2->getAltValue().asString()); +					} +					else +					{ +						sort_result = order * LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString()); +					}  				}  				if (sort_result != 0)  				{ @@ -109,6 +117,7 @@ struct SortScrollListItem  	typedef std::vector<std::pair<S32, BOOL> > sort_order_t;  	const LLScrollListCtrl::sort_signal_t* mSortSignal;  	const sort_order_t& mSortOrders; +	const bool mAltSort;  };  //--------------------------------------------------------------------------- @@ -213,6 +222,7 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)  	mSearchColumn(p.search_column),  	mColumnPadding(p.column_padding),  	mRowPadding(p.row_padding), +	mAlternateSort(false),  	mContextMenuType(MENU_NONE),  	mIsFriendSignal(NULL)  { @@ -2680,7 +2690,7 @@ void LLScrollListCtrl::updateSort() const  		std::stable_sort(  			mItemList.begin(),   			mItemList.end(),  -			SortScrollListItem(mSortColumns,mSortCallback)); +			SortScrollListItem(mSortColumns,mSortCallback, mAlternateSort));  		mSorted = true;  	} @@ -2696,7 +2706,7 @@ void LLScrollListCtrl::sortOnce(S32 column, BOOL ascending)  	std::stable_sort(  		mItemList.begin(),   		mItemList.end(),  -		SortScrollListItem(sort_column,mSortCallback)); +		SortScrollListItem(sort_column,mSortCallback,mAlternateSort));  }  void LLScrollListCtrl::dirtyColumns()  diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 0cc481b113..08134bbfc8 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -398,6 +398,8 @@ public:  	BOOL			hasSortOrder() const;  	void			clearSortOrder(); +	void			setAlternateSort() { mAlternateSort = true; } +  	S32		selectMultiple( uuid_vec_t ids );  	// conceptually const, but mutates mItemList  	void			updateSort() const; @@ -482,6 +484,8 @@ private:  	bool			mColumnsDirty;  	bool			mColumnWidthsDirty; +	bool			mAlternateSort; +  	mutable item_list	mItemList;  	LLScrollListItem *mLastSelected; diff --git a/indra/llui/llscrolllistitem.cpp b/indra/llui/llscrolllistitem.cpp index 51c615dd00..e1360f80cd 100644 --- a/indra/llui/llscrolllistitem.cpp +++ b/indra/llui/llscrolllistitem.cpp @@ -44,7 +44,8 @@ LLScrollListItem::LLScrollListItem( const Params& p )  	mSelectedIndex(-1),  	mEnabled(p.enabled),  	mUserdata(p.userdata), -	mItemValue(p.value) +	mItemValue(p.value), +	mItemAltValue(p.alt_value)  {  } diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h index d2c3dd7721..a3398305b1 100644 --- a/indra/llui/llscrolllistitem.h +++ b/indra/llui/llscrolllistitem.h @@ -55,6 +55,7 @@ public:  		Optional<bool>		enabled;  		Optional<void*>		userdata;  		Optional<LLSD>		value; +		Optional<LLSD>		alt_value;  		Ignored				name; // use for localization tools  		Ignored				type;  @@ -65,6 +66,7 @@ public:  		Params()  		:	enabled("enabled", true),  			value("value"), +			alt_value("alt_value"),  			name("name"),  			type("type"),  			length("length"), @@ -97,6 +99,7 @@ public:  	virtual LLUUID	getUUID() const			{ return mItemValue.asUUID(); }  	LLSD	getValue() const				{ return mItemValue; } +	LLSD	getAltValue() const				{ return mItemAltValue; }  	void	setRect(LLRect rect)			{ mRectangle = rect; }  	LLRect	getRect() const					{ return mRectangle; } @@ -131,6 +134,7 @@ private:  	BOOL	mEnabled;  	void*	mUserdata;  	LLSD	mItemValue; +	LLSD	mItemAltValue;  	std::vector<LLScrollListCell *> mColumns;  	LLRect  mRectangle;  }; diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 656b69d3ed..f9e81dd43c 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -174,6 +174,7 @@ mHelpImpl(NULL)  	reg.add("Floater.Toggle", boost::bind(&LLFloaterReg::toggleInstance, _2, LLSD()));  	reg.add("Floater.ToggleOrBringToFront", boost::bind(&LLFloaterReg::toggleInstanceOrBringToFront, _2, LLSD()));  	reg.add("Floater.Show", boost::bind(&LLFloaterReg::showInstance, _2, LLSD(), FALSE)); +	reg.add("Floater.ShowOrBringToFront", boost::bind(&LLFloaterReg::showInstanceOrBringToFront, _2, LLSD()));  	reg.add("Floater.Hide", boost::bind(&LLFloaterReg::hideInstance, _2, LLSD()));  	// Button initialization callback for toggle buttons | 
