diff options
21 files changed, 205 insertions, 30 deletions
| diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h index a77bd211f3..52238d4533 100644 --- a/indra/llcommon/llchat.h +++ b/indra/llcommon/llchat.h @@ -68,7 +68,8 @@ typedef enum e_chat_audible_level  typedef enum e_chat_style  {  	CHAT_STYLE_NORMAL, -	CHAT_STYLE_IRC +	CHAT_STYLE_IRC, +	CHAT_STYLE_HISTORY  }EChatStyle;  // A piece of chat diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 3e0c5ced1a..b6d73cda3c 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1574,22 +1574,25 @@ void LLFloater::draw()  		LLUIImage* image = NULL;  		LLColor4 color; +		LLColor4 overlay_color;  		if (isBackgroundOpaque())  		{  			// NOTE: image may not be set  			image = getBackgroundImage();  			color = getBackgroundColor(); +			overlay_color = getBackgroundImageOverlay();  		}  		else  		{  			image = getTransparentImage();  			color = getTransparentColor(); +			overlay_color = getTransparentImageOverlay();  		}  		if (image)  		{  			// We're using images for this floater's backgrounds -			image->draw(getLocalRect(), UI_VERTEX_COLOR % alpha); +			image->draw(getLocalRect(), overlay_color % alpha);  		}  		else  		{ diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index d963cf4c98..0cd052eefa 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -80,6 +80,8 @@ LLPanel::Params::Params()  	background_opaque("background_opaque", false),  	bg_opaque_color("bg_opaque_color"),  	bg_alpha_color("bg_alpha_color"), +	bg_opaque_image_overlay("bg_opaque_image_overlay"), +	bg_alpha_image_overlay("bg_alpha_image_overlay"),  	bg_opaque_image("bg_opaque_image"),  	bg_alpha_image("bg_alpha_image"),  	min_width("min_width", 100), @@ -103,6 +105,8 @@ LLPanel::LLPanel(const LLPanel::Params& p)  	mBgOpaque(p.background_opaque),  	mBgOpaqueColor(p.bg_opaque_color()),  	mBgAlphaColor(p.bg_alpha_color()), +	mBgOpaqueImageOverlay(p.bg_opaque_image_overlay), +	mBgAlphaImageOverlay(p.bg_alpha_image_overlay),  	mBgOpaqueImage(p.bg_opaque_image()),  	mBgAlphaImage(p.bg_alpha_image()),  	mDefaultBtn(NULL), @@ -199,7 +203,7 @@ void LLPanel::draw()  			// opaque, in-front look  			if (mBgOpaqueImage.notNull())  			{ -				mBgOpaqueImage->draw( local_rect, UI_VERTEX_COLOR % alpha ); +				mBgOpaqueImage->draw( local_rect, mBgOpaqueImageOverlay % alpha );  			}  			else  			{ @@ -212,7 +216,7 @@ void LLPanel::draw()  			// transparent, in-back look  			if (mBgAlphaImage.notNull())  			{ -				mBgAlphaImage->draw( local_rect, UI_VERTEX_COLOR % alpha ); +				mBgAlphaImage->draw( local_rect, mBgAlphaImageOverlay % alpha );  			}  			else  			{ @@ -481,6 +485,8 @@ void LLPanel::initFromParams(const LLPanel::Params& p)  	setTransparentColor(p.bg_alpha_color().get());  	mBgOpaqueImage = p.bg_opaque_image();  	mBgAlphaImage = p.bg_alpha_image(); +	mBgOpaqueImageOverlay = p.bg_opaque_image_overlay; +	mBgAlphaImageOverlay = p.bg_alpha_image_overlay;  }  static LLFastTimer::DeclareTimer FTM_PANEL_SETUP("Panel Setup"); diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index 4e53fd7ea3..03e3dc0c0e 100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -77,7 +77,9 @@ public:  								background_opaque;  		Optional<LLUIColor>		bg_opaque_color, -								bg_alpha_color; +								bg_alpha_color, +								bg_opaque_image_overlay, +								bg_alpha_image_overlay;  		// opaque image is for "panel in foreground" look  		Optional<LLUIImage*>	bg_opaque_image,  								bg_alpha_image; @@ -137,6 +139,8 @@ public:  	const LLColor4& getTransparentColor() const { return mBgAlphaColor; }  	LLPointer<LLUIImage> getBackgroundImage() const { return mBgOpaqueImage; }  	LLPointer<LLUIImage> getTransparentImage() const { return mBgAlphaImage; } +	LLColor4		getBackgroundImageOverlay() { return mBgOpaqueImageOverlay; } +	LLColor4		getTransparentImageOverlay() { return mBgAlphaImageOverlay; }  	void			setBackgroundVisible( BOOL b )	{ mBgVisible = b; }  	BOOL			isBackgroundVisible() const { return mBgVisible; }  	void			setBackgroundOpaque(BOOL b)		{ mBgOpaque = b; } @@ -262,6 +266,8 @@ private:  	BOOL			mBgOpaque;				// use opaque color or image  	LLUIColor		mBgOpaqueColor;  	LLUIColor		mBgAlphaColor; +	LLUIColor		mBgOpaqueImageOverlay; +	LLUIColor		mBgAlphaImageOverlay;  	LLPointer<LLUIImage> mBgOpaqueImage;	// "panel in front" look  	LLPointer<LLUIImage> mBgAlphaImage;		// "panel in back" look  	LLViewBorder*	mBorder; diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 8fb9decf7b..6180b880b5 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -66,8 +66,6 @@ static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");  const static std::string NEW_LINE(rawstr_to_utf8("\n")); -const static U32 LENGTH_OF_TIME_STR = std::string("12:00").length(); -  const static std::string SLURL_APP_AGENT = "secondlife:///app/agent/";  const static std::string SLURL_ABOUT = "/about"; @@ -435,7 +433,8 @@ LLChatHistory::LLChatHistory(const LLChatHistory::Params& p)  	mTopSeparatorPad(p.top_separator_pad),  	mBottomSeparatorPad(p.bottom_separator_pad),  	mTopHeaderPad(p.top_header_pad), -	mBottomHeaderPad(p.bottom_header_pad) +	mBottomHeaderPad(p.bottom_header_pad), +	mIsLastMessageFromLog(false)  {  	LLTextEditor::Params editor_params(p);  	editor_params.rect = getLocalRect(); @@ -602,8 +601,8 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL  		style_params.font.style = "ITALIC";  	} -	//*HACK we graying out chat history by graying out messages that contains full date in a time string -	bool message_from_log = chat.mTimeStr.length() > LENGTH_OF_TIME_STR;  +	bool message_from_log = chat.mChatStyle == CHAT_STYLE_HISTORY; +	// We graying out chat history by graying out messages that contains full date in a time string  	if (message_from_log)  	{  		style_params.color(LLColor4::grey); @@ -672,7 +671,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL  			&& mLastFromID == chat.mFromID  			&& mLastMessageTime.notNull()   			&& (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0 -			&& mLastMessageTimeStr.size() == chat.mTimeStr.size())  //*HACK to distinguish between current and previous chat session's histories +			&& mIsLastMessageFromLog == message_from_log)  //distinguish between current and previous chat session's histories  		{  			view = getSeparator();  			p.top_pad = mTopSeparatorPad; @@ -706,7 +705,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL  		mLastFromName = chat.mFromName;  		mLastFromID = chat.mFromID;  		mLastMessageTime = new_message_time; -		mLastMessageTimeStr = chat.mTimeStr; +		mIsLastMessageFromLog = message_from_log;  	}     if (chat.mNotifId.notNull()) diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index 32600bb71d..950b32861b 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -128,7 +128,8 @@ class LLChatHistory : public LLUICtrl  		std::string mLastFromName;  		LLUUID mLastFromID;  		LLDate mLastMessageTime; -		std::string mLastMessageTimeStr; +		bool mIsLastMessageFromLog; +		//std::string mLastMessageTimeStr;  		std::string mMessageHeaderFilename;  		std::string mMessageSeparatorFilename; diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 847695577a..9c0e7a158d 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -633,12 +633,14 @@ void LLIMFloater::updateMessages()  			LLUUID from_id = msg["from_id"].asUUID();  			std::string from = msg["from"].asString();  			std::string message = msg["message"].asString(); +			bool is_history = msg["is_history"].asBoolean();  			LLChat chat;  			chat.mFromID = from_id;  			chat.mSessionID = mSessionID;  			chat.mFromName = from;  			chat.mTimeStr = time; +			chat.mChatStyle = is_history ? CHAT_STYLE_HISTORY : chat.mChatStyle;  			// process offer notification  			if (msg.has("notification_id")) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 77e3012d26..faddffe0fc 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -357,7 +357,7 @@ void LLIMModel::LLIMSession::sessionInitReplyReceived(const LLUUID& new_session_  	}  } -void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time) +void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time, const bool is_history)  {  	LLSD message;  	message["from"] = from; @@ -365,6 +365,7 @@ void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& f  	message["message"] = utf8_text;  	message["time"] = time;   	message["index"] = (LLSD::Integer)mMsgs.size();  +	message["is_history"] = is_history;  	mMsgs.push_front(message);  @@ -393,7 +394,7 @@ void LLIMModel::LLIMSession::addMessagesFromHistory(const std::list<LLSD>& histo  		std::string timestamp = msg[IM_TIME];  		std::string text = msg[IM_TEXT]; -		addMessage(from, from_id, text, timestamp); +		addMessage(from, from_id, text, timestamp, true);  		it++;  	} @@ -407,11 +408,11 @@ void LLIMModel::LLIMSession::chatFromLogFile(LLLogChat::ELogLineType type, const  	if (type == LLLogChat::LOG_LINE)  	{ -		self->addMessage("", LLSD(), msg["message"].asString(), ""); +		self->addMessage("", LLSD(), msg["message"].asString(), "", true);  	}  	else if (type == LLLogChat::LOG_LLSD)  	{ -		self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString()); +		self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString(), true);  	}  } diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index ad6cede727..e7404074e0 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -66,7 +66,7 @@ public:  		void sessionInitReplyReceived(const LLUUID& new_session_id);  		void addMessagesFromHistory(const std::list<LLSD>& history); -		void addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time); +		void addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time, const bool is_history = false);  		void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction);  		/** @deprecated */ diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index c66d067779..e493c4bf9c 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -358,6 +358,20 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)  	getTextEntry()->setRightMouseUpCallback(boost::bind(&LLLocationInputCtrl::onTextEditorRightClicked,this,_2,_3,_4));  	updateWidgetlayout(); +	// Connecting signal for updating location on "Show Coordinates" setting change. +	LLControlVariable* coordinates_control = gSavedSettings.getControl("NavBarShowCoordinates").get(); +	if (coordinates_control) +	{ +		mCoordinatesControlConnection = coordinates_control->getSignal()->connect(boost::bind(&LLLocationInputCtrl::refreshLocation, this)); +	} + +	// Connecting signal for updating parcel icons on "Show Parcel Properties" setting change. +	LLControlVariable* parcel_properties_control = gSavedSettings.getControl("NavBarShowParcelProperties").get(); +	if (parcel_properties_control) +	{ +		mParcelPropertiesControlConnection = parcel_properties_control->getSignal()->connect(boost::bind(&LLLocationInputCtrl::refreshParcelIcons, this)); +	} +  	// - Make the "Add landmark" button updated when either current parcel gets changed  	//   or a landmark gets created or removed from the inventory.  	// - Update the location string on parcel change. @@ -391,6 +405,8 @@ LLLocationInputCtrl::~LLLocationInputCtrl()  	LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangeObserver);  	delete mParcelChangeObserver; +	mCoordinatesControlConnection.disconnect(); +	mParcelPropertiesControlConnection.disconnect();  	mParcelMgrConnection.disconnect();  	mLocationHistoryConnection.disconnect();  } @@ -763,8 +779,7 @@ void LLLocationInputCtrl::refreshParcelIcons()  	// Our "cursor" moving right to left  	S32 x = mAddLandmarkBtn->getRect().mLeft; -	static LLUICachedControl<bool> show_properties("NavBarShowParcelProperties", false); -	if (show_properties) +	if (gSavedSettings.getBOOL("NavBarShowParcelProperties"))  	{  		LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); @@ -1008,7 +1023,6 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)  	{  		gSavedSettings.setBOOL("NavBarShowParcelProperties",  			!gSavedSettings.getBOOL("NavBarShowParcelProperties")); -		refreshParcelIcons();  	}  	else if (item == "landmark")  	{ diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h index caa62daa1b..4bb41f3bf4 100644 --- a/indra/newview/lllocationinputctrl.h +++ b/indra/newview/lllocationinputctrl.h @@ -174,6 +174,8 @@ private:  	LLRemoveLandmarkObserver*	mRemoveLandmarkObserver;  	LLParcelChangeObserver*		mParcelChangeObserver; +	boost::signals2::connection	mCoordinatesControlConnection; +	boost::signals2::connection	mParcelPropertiesControlConnection;  	boost::signals2::connection	mParcelMgrConnection;  	boost::signals2::connection	mLocationHistoryConnection;  	LLUIImage* mLandmarkImageOn; diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index f13445fa5d..3650b43364 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -39,12 +39,17 @@  #include "llviewercontrol.h"  #include "llinstantmessage.h" +#include "llsingleton.h" // for LLSingleton  #include <boost/algorithm/string/trim.hpp>  #include <boost/algorithm/string/replace.hpp>  #include <boost/regex.hpp>  #include <boost/regex/v4/match_results.hpp> +#include <boost/date_time/gregorian/gregorian.hpp> +#include <boost/date_time/posix_time/posix_time.hpp> +#include <boost/date_time/local_time_adjustor.hpp> +  const S32 LOG_RECALL_SIZE = 2048;  const static std::string IM_TIME("time"); @@ -83,11 +88,93 @@ const static boost::regex NAME_AND_TEXT("(You:|Second Life:|[^\\s:]+\\s*[:]{1}|\  //is used to parse complex object names like "Xstreet SL Terminal v2.2.5 st"  const static std::string NAME_TEXT_DIVIDER(": "); +// is used for timestamps adjusting +const static char* DATE_FORMAT("%Y/%m/%d %H:%M"); +const static char* TIME_FORMAT("%H:%M"); +  const static int IDX_TIMESTAMP = 1;  const static int IDX_STUFF = 2;  const static int IDX_NAME = 1;  const static int IDX_TEXT = 3; +using namespace boost::posix_time; +using namespace boost::gregorian; + +class LLLogChatTimeScaner: public LLSingleton<LLLogChatTimeScaner> +{ +public: +	LLLogChatTimeScaner() +	{ +		// Note, date/time facets will be destroyed by string streams +		mDateStream.imbue(std::locale(mDateStream.getloc(), new date_input_facet(DATE_FORMAT))); +		mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_facet(TIME_FORMAT))); +		mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_input_facet(DATE_FORMAT))); +	} + +	date getTodayPacificDate() +	{ +		typedef	boost::date_time::local_adjustor<ptime, -8, no_dst> pst; +		typedef boost::date_time::local_adjustor<ptime, -7, no_dst> pdt; +		time_t t_time = time(NULL); +		ptime p_time = LLStringOps::getPacificDaylightTime() +			? pdt::utc_to_local(from_time_t(t_time)) +			: pst::utc_to_local(from_time_t(t_time)); +		struct tm s_tm = to_tm(p_time); +		return date_from_tm(s_tm); +	} + +	void checkAndCutOffDate(std::string& time_str) +	{ +		// Cuts off the "%Y/%m/%d" from string for todays timestamps. +		// Assume that passed string has at least "%H:%M" time format. +		date log_date(not_a_date_time); +		date today(getTodayPacificDate()); + +		// Parse the passed date +		mDateStream.str(LLStringUtil::null); +		mDateStream << time_str; +		mDateStream >> log_date; +		mDateStream.clear(); + +		days zero_days(0); +		days days_alive = today - log_date; + +		if ( days_alive == zero_days ) +		{ +			// Yep, today's so strip "%Y/%m/%d" info +			ptime stripped_time(not_a_date_time); + +			mTimeStream.str(LLStringUtil::null); +			mTimeStream << time_str; +			mTimeStream >> stripped_time; +			mTimeStream.clear(); + +			time_str.clear(); + +			mTimeStream.str(LLStringUtil::null); +			mTimeStream << stripped_time; +			mTimeStream >> time_str; +			mTimeStream.clear(); +		} + +		LL_DEBUGS("LLChatLogParser") +			<< " log_date: " +			<< log_date +			<< " today: " +			<< today +			<< " days alive: " +			<< days_alive +			<< " new time: " +			<< time_str +			<< LL_ENDL; +	} + + +private: +	std::stringstream mDateStream; +	std::stringstream mTimeStream; +}; +  //static  std::string LLLogChat::makeLogFileName(std::string filename)  { @@ -377,7 +464,8 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im)  		boost::trim(timestamp);  		timestamp.erase(0, 1);  		timestamp.erase(timestamp.length()-1, 1); -		im[IM_TIME] = timestamp;	 +		LLLogChatTimeScaner::instance().checkAndCutOffDate(timestamp); +		im[IM_TIME] = timestamp;  	}  	else  	{ diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 8fc11d3929..16384ef6e0 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -303,6 +303,7 @@ void LLNearbyChat::loadHistory()  		chat.mFromID = from_id;  		chat.mText = msg[IM_TEXT].asString();  		chat.mTimeStr = msg[IM_TIME].asString(); +		chat.mChatStyle = CHAT_STYLE_HISTORY;  		addMessage(chat, true, do_not_log);  		it++; diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index c187ee7bf2..aefbe9a3de 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -54,6 +54,8 @@ const static std::string GRANTED_MODIFY_RIGHTS("GrantedModifyRights"),  						OFFER_FRIENDSHIP("OfferFriendship"),  						FRIENDSHIP_ACCEPTED("FriendshipAccepted"),  						FRIENDSHIP_OFFERED("FriendshipOffered"), +						FRIENDSHIP_ACCEPTED_BYME("FriendshipAcceptedByMe"), +						FRIENDSHIP_DECLINED_BYME("FriendshipDeclinedByMe"),  						FRIEND_ONLINE("FriendOnline"), FRIEND_OFFLINE("FriendOffline"),  						SERVER_OBJECT_MESSAGE("ServerObjectMessage"),  						TELEPORT_OFFERED("TeleportOffered"); @@ -66,6 +68,8 @@ bool LLHandlerUtil::canLogToIM(const LLNotificationPtr& notification)  			|| PAYMENT_RECIVED == notification->getName()  			|| OFFER_FRIENDSHIP == notification->getName()  			|| FRIENDSHIP_OFFERED == notification->getName() +			|| FRIENDSHIP_ACCEPTED_BYME == notification->getName() +			|| FRIENDSHIP_DECLINED_BYME == notification->getName()  			|| SERVER_OBJECT_MESSAGE == notification->getName()  			|| INVENTORY_ACCEPTED == notification->getName()  			|| INVENTORY_DECLINED == notification->getName(); diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index c55c8d6221..be76959d07 100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp @@ -43,7 +43,7 @@  using namespace LLNotificationsUI; -class LLOnalineStatusToast : public LLToastPanel +class LLOnlineStatusToast : public LLToastPanel  {  public: @@ -56,9 +56,9 @@ public:  		Params() {}  	}; -	LLOnalineStatusToast(Params& p) : LLToastPanel(p.notification) +	LLOnlineStatusToast(Params& p) : LLToastPanel(p.notification)  	{ -		LLUICtrlFactory::getInstance()->buildPanel(this, "panel_online_status.xml"); +		LLUICtrlFactory::getInstance()->buildPanel(this, "panel_online_status_toast.xml");  		childSetValue("avatar_icon", p.avatar_id);  		childSetValue("message", p.message); @@ -148,11 +148,11 @@ bool LLTipHandler::processNotification(const LLSD& notify)  		LLToastPanel* notify_box = NULL;  		if("FriendOffline" == notification->getName() || "FriendOnline" == notification->getName())  		{ -			LLOnalineStatusToast::Params p; +			LLOnlineStatusToast::Params p;  			p.notification = notification;  			p.message = notification->getMessage();  			p.avatar_id = notification->getPayload()["FROM_ID"]; -			notify_box = new LLOnalineStatusToast(p); +			notify_box = new LLOnlineStatusToast(p);  		}  		else  		{ diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 8aa642bdb6..b36f58f8ff 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -193,9 +193,20 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)  		msg->nextBlockFast(_PREHASH_FolderData);  		msg->addUUIDFast(_PREHASH_FolderID, fid);  		msg->sendReliable(LLHost(payload["sender"].asString())); + +		LLSD payload = notification["payload"]; +		payload["SUPPRESS_TOAST"] = true; +		LLNotificationsUtil::add("FriendshipAcceptedByMe", +				notification["substitutions"], payload);  		break;  	}  	case 1: // Decline +	{ +		LLSD payload = notification["payload"]; +		payload["SUPPRESS_TOAST"] = true; +		LLNotificationsUtil::add("FriendshipDeclinedByMe", +				notification["substitutions"], payload); +	}  	case 2: // Send IM - decline and start IM session  		{  			// decline @@ -2212,7 +2223,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				LLSD args;  				args["owner_id"] = from_id;  				args["slurl"] = location; -				nearby_chat->addMessage(chat, true, args); +				args["type"] = LLNotificationsUI::NT_NEARBYCHAT; +				LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);  			} diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml index ae686d9ab7..28616d503b 100644 --- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml @@ -6,7 +6,7 @@   border="false"   bg_opaque_image="Window_Foreground"    bg_alpha_image="Window_Background"  - bg_alpha_color="0 0 0 0" + bg_alpha_image_overlay="DkGray_66"    legacy_header_height="18"   can_minimize="true"   can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 61ff66b407..4c4867b862 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -354,6 +354,24 @@                 function="ToggleControl"                 parameter="ShowParcelOwners" />            </menu_item_check> +          <menu_item_check +             label="Coordinates" +             name="Coordinates"> +            <menu_item_check.on_click +               function="ToggleControl" +               parameter="NavBarShowCoordinates" /> +            <menu_item_check.on_check +               control="NavBarShowCoordinates" /> +          </menu_item_check> +          <menu_item_check +             label="Parcel Properties" +             name="Parcel Properties"> +            <menu_item_check.on_click +               function="ToggleControl" +               parameter="NavBarShowParcelProperties" /> +            <menu_item_check.on_check +               control="NavBarShowParcelProperties" /> +          </menu_item_check>          </menu>          <menu_item_separator           layout="topleft" /> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index ef983dacfe..4fa5d965c8 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5205,9 +5205,23 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th     type="notify">  [NAME] declined your friendship offer.    </notification> +   +    <notification +   icon="notify.tga" +   name="FriendshipAcceptedByMe" +   type="offer"> +Friend request accepted. +  </notification>    <notification     icon="notify.tga" +   name="FriendshipDeclinedByMe" +   type="offer"> +Friend request declined. +  </notification> +   +  <notification +   icon="notify.tga"     name="OfferCallingCard"     type="notify">  [FIRST] [LAST] is offering their calling card. diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml index 51e2256a7d..250dadd390 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml @@ -2,7 +2,8 @@  <panel  	 background_visible="true"       bevel_style="in" -     bg_alpha_color="black" +     bg_opaque_color="Black"  +     bg_alpha_color="DkGray_66"       follows="top|left|right"       height="24"       label="im_header" diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml index 7262c0dc5c..9bf99fa363 100644 --- a/indra/newview/skins/default/xui/en/widgets/panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml @@ -6,6 +6,8 @@  -->  <panel bg_opaque_color="PanelFocusBackgroundColor"         bg_alpha_color="PanelDefaultBackgroundColor" +       bg_opaque_image_overlay="White" +       bg_alpha_image_overlay="White"         background_visible="false"         background_opaque="false"         chrome="false"/>
\ No newline at end of file | 
