diff options
43 files changed, 446 insertions, 209 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 4158899446..efb16d1e42 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -303,6 +303,7 @@ set(viewer_SOURCE_FILES      llpanelcontents.cpp      llpaneleditwearable.cpp      llpanelface.cpp +    llpanelgenerictip.cpp      llpanelgroup.cpp      llpanelgroupgeneral.cpp      llpanelgroupinvite.cpp @@ -342,6 +343,7 @@ set(viewer_SOURCE_FILES      llpanelprofile.cpp      llpanelprofileview.cpp      llpanelteleporthistory.cpp +    llpaneltiptoast.cpp      llpanelvolume.cpp      llpanelvolumepulldown.cpp      llparcelselection.cpp @@ -437,7 +439,6 @@ set(viewer_SOURCE_FILES      lltracker.cpp      lltransientdockablefloater.cpp      lltransientfloatermgr.cpp -    llpanelgenerictip.cpp      lluilistener.cpp      lluploaddialog.cpp      llurl.cpp @@ -802,6 +803,7 @@ set(viewer_HEADER_FILES      llpanelcontents.h      llpaneleditwearable.h      llpanelface.h +    llpanelgenerictip.h      llpanelgroup.h      llpanelgroupgeneral.h      llpanelgroupinvite.h @@ -841,6 +843,7 @@ set(viewer_HEADER_FILES      llpanelprofile.h      llpanelprofileview.h      llpanelteleporthistory.h +    llpaneltiptoast.h      llpanelvolume.h      llpanelvolumepulldown.h      llparcelselection.h @@ -939,7 +942,6 @@ set(viewer_HEADER_FILES      lltracker.h      lltransientdockablefloater.h      lltransientfloatermgr.h -    llpanelgenerictip.h      lluiconstants.h      lluilistener.h      lluploaddialog.h diff --git a/indra/newview/llavatarpropertiesprocessor.cpp b/indra/newview/llavatarpropertiesprocessor.cpp index 33e5046f50..c7e788f345 100644 --- a/indra/newview/llavatarpropertiesprocessor.cpp +++ b/indra/newview/llavatarpropertiesprocessor.cpp @@ -37,6 +37,7 @@  // Viewer includes  #include "llagent.h"  #include "llagentpicksinfo.h" +#include "lldateutil.h"  #include "llviewergenericmessage.h"  // Linden library includes @@ -246,6 +247,7 @@ std::string LLAvatarPropertiesProcessor::paymentInfo(const LLAvatarData* avatar_  void LLAvatarPropertiesProcessor::processAvatarPropertiesReply(LLMessageSystem* msg, void**)  {  	LLAvatarData avatar_data; +	std::string birth_date;  	msg->getUUIDFast(	_PREHASH_AgentData,			_PREHASH_AgentID, 		avatar_data.agent_id);  	msg->getUUIDFast(	_PREHASH_AgentData,			_PREHASH_AvatarID, 		avatar_data.avatar_id); @@ -254,11 +256,12 @@ void LLAvatarPropertiesProcessor::processAvatarPropertiesReply(LLMessageSystem*  	msg->getUUIDFast(	_PREHASH_PropertiesData,	_PREHASH_PartnerID,		avatar_data.partner_id);  	msg->getStringFast(	_PREHASH_PropertiesData,	_PREHASH_AboutText,		avatar_data.about_text);  	msg->getStringFast(	_PREHASH_PropertiesData,	_PREHASH_FLAboutText,	avatar_data.fl_about_text); -	msg->getStringFast(	_PREHASH_PropertiesData,	_PREHASH_BornOn,		avatar_data.born_on); +	msg->getStringFast(	_PREHASH_PropertiesData,	_PREHASH_BornOn,		birth_date);  	msg->getString(		_PREHASH_PropertiesData,	_PREHASH_ProfileURL,	avatar_data.profile_url);  	msg->getU32Fast(	_PREHASH_PropertiesData,	_PREHASH_Flags,			avatar_data.flags); +	LLDateUtil::dateFromPDTString(avatar_data.born_on, birth_date);  	avatar_data.caption_index = 0;  	S32 charter_member_size = 0; diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h index 716c1b8065..b9e8bfd0ab 100644 --- a/indra/newview/llavatarpropertiesprocessor.h +++ b/indra/newview/llavatarpropertiesprocessor.h @@ -67,7 +67,7 @@ struct LLAvatarData  	LLUUID		partner_id;  	std::string	about_text;  	std::string	fl_about_text; -	std::string	born_on; +	LLDate		born_on;  	std::string	profile_url;  	U8			caption_index;  	std::string	caption_text; diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index abb2fdeb9a..3e71ecdfba 100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp @@ -59,19 +59,22 @@ static S32 days_from_month(S32 year, S32 month)  	}  } -std::string LLDateUtil::ageFromDate(const std::string& date_string, -									const LLDate& now) +bool LLDateUtil::dateFromPDTString(LLDate& date, const std::string& str) +{ +	S32 month, day, year; +	S32 matched = sscanf(str.c_str(), "%d/%d/%d", &month, &day, &year); +	if (matched != 3) return false; +	date.fromYMDHMS(year, month, day); +	F64 secs_since_epoch = date.secondsSinceEpoch(); +	// Correct for the fact that specified date is in Pacific time, == UTC - 8 +	secs_since_epoch += 8.0 * 60.0 * 60.0; +	date.secondsSinceEpoch(secs_since_epoch); +	return true; +} + +std::string LLDateUtil::ageFromDate(const LLDate& born_date, const LLDate& now)  {  	S32 born_month, born_day, born_year; -	S32 matched = sscanf(date_string.c_str(), "%d/%d/%d", &born_month, &born_day, &born_year); -	if (matched != 3) return "???"; -	LLDate born_date; -	born_date.fromYMDHMS(born_year, born_month, born_day); -	F64 born_date_secs_since_epoch = born_date.secondsSinceEpoch(); -	// Correct for the fact that account creation dates are in Pacific time, -	// == UTC - 8 -	born_date_secs_since_epoch += 8.0 * 60.0 * 60.0; -	born_date.secondsSinceEpoch(born_date_secs_since_epoch);  	// explode out to month/day/year again  	born_date.split(&born_year, &born_month, &born_day); @@ -155,6 +158,16 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string,  	return LLTrans::getString("TodayOld");  } +std::string LLDateUtil::ageFromDate(const std::string& date_string, const LLDate& now) +{ +	LLDate born_date; + +	if (!dateFromPDTString(born_date, date_string)) +		return "???"; + +	return ageFromDate(born_date, now); +} +  std::string LLDateUtil::ageFromDate(const std::string& date_string)  {  	return ageFromDate(date_string, LLDate::now()); diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h index 041be07f12..a0df21022e 100644 --- a/indra/newview/lldateutil.h +++ b/indra/newview/lldateutil.h @@ -36,6 +36,29 @@ class LLDate;  namespace LLDateUtil  { +	/** +	 * Convert a date provided by the server into seconds since the Epoch. +	 *  +	 * @param[out] date Number of seconds since 01/01/1970 UTC. +	 * @param[in]  str  Date string (MM/DD/YYYY) in PDT time zone. +	 *  +	 * @return true on success, false on parse error +	 */ +	bool dateFromPDTString(LLDate& date, const std::string& str); + +	/** +	 * Get human-readable avatar age. +	 *  +	 * Used for avatar inspectors and profiles. +	 *  +	 * @param born_date Date an avatar was born on. +	 * @param now       Current date. +	 *  +	 * @return human-readable localized string like "1 year, 2 months", +	 *         or "???" on error. +	 */ +	std::string ageFromDate(const LLDate& born_date, const LLDate& now); +  	// Convert a date provided by the server (MM/DD/YYYY) into a localized,  	// human-readable age (1 year, 2 months) using translation strings.  	// Pass LLDate::now() for now. diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp index 698ccec9c1..679ab4c713 100644 --- a/indra/newview/llfloaterauction.cpp +++ b/indra/newview/llfloaterauction.cpp @@ -46,6 +46,7 @@  #include "llagent.h"  #include "llcombobox.h" +#include "llmimetypes.h"  #include "llnotifications.h"  #include "llnotificationsutil.h"  #include "llsavedsettingsglue.h" @@ -351,7 +352,7 @@ void LLFloaterAuction::doResetParcel()  		body["music_url"] = empty;  		body["media_url"] = empty;  		body["media_desc"] = empty; -		body["media_type"] = std::string("none/none"); +		body["media_type"] = LLMIMETypes::getDefaultMimeType();  		body["media_width"] = (S32) 0;  		body["media_height"] = (S32) 0;  		body["auto_scale"] = (S32) 0; diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index a6a8194685..e994a18d9b 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -988,7 +988,7 @@ void profile_pic_upload_callback(const LLUUID& uuid)  void LLSnapshotLivePreview::confirmSavingTexture(bool set_as_profile_pic)  {  	LLSD args; -	args["AMOUNT"] = "10"; // *TODO: there's currently no way to avoid hardcoding the upload price +	args["AMOUNT"] = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();  	LLNotificationsUtil::add("UploadConfirmation", args, LLSD(),  			boost::bind(&LLSnapshotLivePreview::onSavingTextureConfirmed, this, _1, _2, set_as_profile_pic));  } diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp index 91d0f0e370..002d417e4c 100644 --- a/indra/newview/llfloaterurlentry.cpp +++ b/indra/newview/llfloaterurlentry.cpp @@ -40,6 +40,7 @@  #include "llpanelface.h"  #include "llcombobox.h" +#include "llmimetypes.h"  #include "llnotificationsutil.h"  #include "llurlhistory.h"  #include "lluictrlfactory.h" @@ -71,14 +72,14 @@ public:  	  virtual void error( U32 status, const std::string& reason )  	  { -		  completeAny(status, "none/none"); +		  completeAny(status, LLMIMETypes::getDefaultMimeType());  	  }  	  void completeAny(U32 status, const std::string& mime_type)  	  {  		  // Set empty type to none/none.  Empty string is reserved for legacy parcels  		  // which have no mime type set. -		  std::string resolved_mime_type = ! mime_type.empty() ? mime_type : "none/none"; +		  std::string resolved_mime_type = ! mime_type.empty() ? mime_type : LLMIMETypes::getDefaultMimeType();  		  LLFloaterURLEntry* floater_url_entry = (LLFloaterURLEntry*)mParent.get();  		  if ( floater_url_entry )  			  floater_url_entry->headerFetchComplete( status, resolved_mime_type ); diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 94ea236757..e48bb77bda 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -58,6 +58,7 @@  #include "llfloaterreg.h"  #include "llmenubutton.h"  #include "lltooltip.h"	// positionViewNearMouse() +#include "lltrans.h"  #include "lluictrl.h"  #include "llavatariconctrl.h" @@ -380,7 +381,11 @@ void LLInspectAvatar::requestUpdate()  void LLInspectAvatar::processAvatarData(LLAvatarData* data)  {  	LLStringUtil::format_map_t args; -	args["[BORN_ON]"] = data->born_on; +	{ +		std::string birth_date = LLTrans::getString("AvatarBirthDateFormat"); +		LLStringUtil::format(birth_date, LLSD().with("datetime", (S32) data->born_on.secondsSinceEpoch())); +		args["[BORN_ON]"] = birth_date; +	}  	args["[AGE]"] = LLDateUtil::ageFromDate(data->born_on, LLDate::now());  	args["[SL_PROFILE]"] = data->about_text;  	args["[RW_PROFILE"] = data->fl_about_text; diff --git a/indra/newview/llmimetypes.cpp b/indra/newview/llmimetypes.cpp index 235487cf46..7bddc0d84c 100644 --- a/indra/newview/llmimetypes.cpp +++ b/indra/newview/llmimetypes.cpp @@ -34,6 +34,7 @@  #include "llviewerprecompiledheaders.h"  #include "llmimetypes.h" +#include "lltrans.h"  #include "llxmlnode.h"  #include "lluictrlfactory.h" @@ -49,6 +50,7 @@ std::string sDefaultImpl;  	// Returned when we don't know what impl to use  std::string sXMLFilename;       // Squirrel away XML filename so we know how to reset +std::string DEFAULT_MIME_TYPE = "none/none";  ///////////////////////////////////////////////////////////////////////////// @@ -212,7 +214,7 @@ std::string LLMIMETypes::findIcon(const std::string& mime_type)  // static  std::string LLMIMETypes::findDefaultMimeType(const std::string& widget_type)  { -	std::string mime_type = "none/none"; +	std::string mime_type = getDefaultMimeType();  	mime_widget_set_map_t::iterator it = sWidgetMap.find(widget_type);  	if(it != sWidgetMap.end())  	{ @@ -222,6 +224,18 @@ std::string LLMIMETypes::findDefaultMimeType(const std::string& widget_type)  }  // static +const std::string& LLMIMETypes::getDefaultMimeType() +{ +	return DEFAULT_MIME_TYPE; +} + +const std::string& LLMIMETypes::getDefaultMimeTypeTranslation() +{ +	static std::string mime_type = LLTrans::getString("DefaultMimeType"); +	return mime_type; +} + +// static  std::string LLMIMETypes::findToolTip(const std::string& mime_type)  {  	std::string tool_tip = ""; diff --git a/indra/newview/llmimetypes.h b/indra/newview/llmimetypes.h index b217ce7a81..3461769ff3 100644 --- a/indra/newview/llmimetypes.h +++ b/indra/newview/llmimetypes.h @@ -66,6 +66,10 @@ public:  	static std::string findDefaultMimeType(const std::string& widget_type);  		// Canonical mime type associated with this widget set +	static const std::string& getDefaultMimeType(); + +	static const std::string& getDefaultMimeTypeTranslation(); +  	static bool findAllowResize(const std::string& mime_type);  		// accessor for flag to enable/disable media size edit fields diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index 407de79c89..e528f871af 100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp @@ -41,10 +41,11 @@  #include "llviewercontrol.h"  #include "llviewerwindow.h"  #include "llnotificationmanager.h" +#include "llpaneltiptoast.h"  using namespace LLNotificationsUI; -class LLOnlineStatusToast : public LLToastPanel +class LLOnlineStatusToast : public LLPanelTipToast  {  public: @@ -57,7 +58,7 @@ public:  		Params() {}  	}; -	LLOnlineStatusToast(Params& p) : LLToastPanel(p.notification) +	LLOnlineStatusToast(Params& p) : LLPanelTipToast(p.notification)  	{  		LLUICtrlFactory::getInstance()->buildPanel(this, "panel_online_status_toast.xml"); diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index a0ba2f739b..dd632ccefe 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -51,6 +51,7 @@  #include "llnotificationsutil.h"  #include "llvoiceclient.h"  #include "llnamebox.h" +#include "lltrans.h"  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  // Class LLDropTarget @@ -645,7 +646,11 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)  	LLAvatarIconIDCache::getInstance()->remove(avatar_data->avatar_id);  	LLStringUtil::format_map_t args; -	args["[REG_DATE]"] = avatar_data->born_on; +	{ +		std::string birth_date = LLTrans::getString("AvatarBirthDateFormat"); +		LLStringUtil::format(birth_date, LLSD().with("datetime", (S32) avatar_data->born_on.secondsSinceEpoch())); +		args["[REG_DATE]"] = birth_date; +	}  	args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now());  	std::string register_date = getString("RegisterDateFormat", args);  	childSetValue("register_date", register_date ); diff --git a/indra/newview/llpanelgenerictip.cpp b/indra/newview/llpanelgenerictip.cpp index 2e977faf09..e0658554a4 100644 --- a/indra/newview/llpanelgenerictip.cpp +++ b/indra/newview/llpanelgenerictip.cpp @@ -36,15 +36,10 @@  #include "llpanelgenerictip.h"  #include "llnotifications.h" -/** - * Generic toast tip panel. - * This is particular case of toast panel that decoupled from LLToastNotifyPanel. - * From now LLToastNotifyPanel is deprecated and will be removed after all  panel - * types are represented in separate classes. - */ +  LLPanelGenericTip::LLPanelGenericTip(  		const LLNotificationPtr& notification) : -	LLToastPanel(notification) +		LLPanelTipToast(notification)  {  	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_generic_tip.xml"); diff --git a/indra/newview/llpanelgenerictip.h b/indra/newview/llpanelgenerictip.h index 0eb502498a..defa069727 100644 --- a/indra/newview/llpanelgenerictip.h +++ b/indra/newview/llpanelgenerictip.h @@ -34,14 +34,24 @@  #ifndef LL_PANELGENERICTIP_H  #define LL_PANELGENERICTIP_H -#include "lltoastpanel.h" +#include "llpaneltiptoast.h" -class LLPanelGenericTip: public LLToastPanel +/** + * Represents tip toast panel that contains only one child element - message text. + * This panel can be used for different cases of tip notifications. + */ +class LLPanelGenericTip: public LLPanelTipToast  {  	// disallow instantiation of this class  private:  	// grant privileges to instantiate this class to LLToastPanel  	friend class LLToastPanel; +	/** +	 * Generic toast tip panel. +	 * This is particular case of toast panel that decoupled from LLToastNotifyPanel. +	 * From now LLToastNotifyPanel is deprecated and will be removed after all  panel +	 * types are represented in separate classes. +	 */  	LLPanelGenericTip(const LLNotificationPtr& notification);  };  #endif /* LL_PANELGENERICTIP_H */ diff --git a/indra/newview/llpanellandmedia.cpp b/indra/newview/llpanellandmedia.cpp index 42ad9820a8..e834e229cd 100644 --- a/indra/newview/llpanellandmedia.cpp +++ b/indra/newview/llpanellandmedia.cpp @@ -153,7 +153,7 @@ void LLPanelLandMedia::refresh()  		std::string mime_type = parcel->getMediaType();  		if (mime_type.empty())  		{ -			mime_type = "none/none"; +			mime_type = LLMIMETypes::getDefaultMimeTypeTranslation();  		}  		setMediaType(mime_type);  		mMediaTypeCombo->setEnabled( can_change_media ); @@ -218,7 +218,7 @@ void LLPanelLandMedia::refresh()  void LLPanelLandMedia::populateMIMECombo()  { -	std::string default_mime_type = "none/none"; +	std::string default_mime_type = LLMIMETypes::getDefaultMimeType();  	std::string default_label;  	LLMIMETypes::mime_widget_set_map_t::const_iterator it;  	for (it = LLMIMETypes::sWidgetMap.begin(); it != LLMIMETypes::sWidgetMap.end(); ++it) @@ -235,8 +235,7 @@ void LLPanelLandMedia::populateMIMECombo()  			mMediaTypeCombo->add(info.mLabel, mime_type);  		}  	} -	// *TODO: The sort order is based on std::map key, which is -	// ASCII-sorted and is wrong in other languages.  TRANSLATE +  	mMediaTypeCombo->add( default_label, default_mime_type, ADD_BOTTOM );  } @@ -248,7 +247,15 @@ void LLPanelLandMedia::setMediaType(const std::string& mime_type)  	std::string media_key = LLMIMETypes::widgetType(mime_type);  	mMediaTypeCombo->setValue(media_key); -	childSetText("mime_type", mime_type); + +	std::string mime_str = mime_type; +	if(LLMIMETypes::getDefaultMimeType() == mime_type) +	{ +		// Instead of showing predefined "none/none" we are going to show something  +		// localizable - "none" for example (see EXT-6542) +		mime_str = LLMIMETypes::getDefaultMimeTypeTranslation(); +	} +	childSetText("mime_type", mime_str);  }  void LLPanelLandMedia::setMediaURL(const std::string& media_url) diff --git a/indra/newview/llpaneltiptoast.cpp b/indra/newview/llpaneltiptoast.cpp new file mode 100644 index 0000000000..23367df41a --- /dev/null +++ b/indra/newview/llpaneltiptoast.cpp @@ -0,0 +1,69 @@ +/** + * @file llpaneltiptoast.cpp + * @brief Represents a base class of tip toast panels. + * + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llpaneltiptoast.h" + +BOOL LLPanelTipToast::postBuild() +{ +	mMessageText= findChild<LLUICtrl>("message"); + +	if (mMessageText != NULL) +	{ +		mMessageText->setMouseUpCallback(boost::bind(&LLPanelTipToast::onMessageTextClick,this)); +		setMouseUpCallback(boost::bind(&LLPanelTipToast::onPanelClick, this, _2, _3, _4)); +	} +	else +	{ +		llassert(!"Can't find child 'message' text box."); +		return FALSE; +	} + +	return TRUE; +} + +void LLPanelTipToast::onMessageTextClick() +{ +	// notify parent toast about need hide +	LLSD info; +	info["action"] = "hide_toast"; +	notifyParent(info); +} + +void LLPanelTipToast::onPanelClick(S32 x, S32 y, MASK mask) +{ +	if (!mMessageText->getRect().pointInRect(x, y)) +	{ +		onMessageTextClick(); +	} +} diff --git a/indra/newview/llpaneltiptoast.h b/indra/newview/llpaneltiptoast.h new file mode 100644 index 0000000000..e8678aa1d3 --- /dev/null +++ b/indra/newview/llpaneltiptoast.h @@ -0,0 +1,57 @@ +/** + * @file llpaneltiptoast.h + * @brief Represents a base class of tip toast panels. + * + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + + +#include "lltoastpanel.h" + +#ifndef LL_PANELTOASTTIP_H +#define LL_PANELTOASTTIP_H + +/** + * Base class for tip toast panels. + * + * Tip toast panels are required to have text message box named as 'message'. + */ +class LLPanelTipToast : public LLToastPanel +{ +	LOG_CLASS(LLPanelTipToast); +public: +	LLPanelTipToast(const LLNotificationPtr& notification): LLToastPanel(notification) {} +	virtual BOOL postBuild(); +private: +	void onMessageTextClick(); +	void onPanelClick(S32 x, S32 y, MASK mask); + +	LLUICtrl* mMessageText; +}; + +#endif /* LL_PANELTOASTTIP_H */ diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 53f92f7ad1..c3748ca81d 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -643,6 +643,7 @@ LLContextMenu* LLParticipantList::LLParticipantListMenu::createMenu()  	registrar.add("ParticipantList.ModerateVoice", boost::bind(&LLParticipantList::LLParticipantListMenu::moderateVoice, this, _2));  	enable_registrar.add("ParticipantList.EnableItem", boost::bind(&LLParticipantList::LLParticipantListMenu::enableContextMenuItem,	this, _2)); +	enable_registrar.add("ParticipantList.EnableItem.Moderate", boost::bind(&LLParticipantList::LLParticipantListMenu::enableModerateContextMenuItem,	this, _2));  	enable_registrar.add("ParticipantList.CheckItem",  boost::bind(&LLParticipantList::LLParticipantListMenu::checkContextMenuItem,	this, _2));  	// create the context menu from the XUI @@ -667,7 +668,7 @@ void LLParticipantList::LLParticipantListMenu::show(LLView* spawning_view, const  	if (uuids.size() == 0) return; -	const LLUUID speaker_id = mUUIDs.front(); +	const LLUUID& speaker_id = mUUIDs.front();  	BOOL is_muted = isMuted(speaker_id);  	if (is_muted) @@ -801,28 +802,18 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co  bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)  {  	std::string item = userdata.asString(); +	const LLUUID& participant_id = mUUIDs.front(); + +	// For now non of "can_view_profile" action and menu actions listed below except "can_block" +	// can be performed for Avaline callers. +	bool is_participant_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(participant_id); +	if (!is_participant_avatar && "can_block" != item) return false; +  	if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item   		|| "can_pay" == item)  	{  		return mUUIDs.front() != gAgentID;  	} -	else if (item == "can_allow_text_chat") -	{ -		return isGroupModerator(); -	} -	else if ("can_moderate_voice" == item) -	{ -		if (isGroupModerator()) -		{ -			LLPointer<LLSpeaker> speakerp = mParent.mSpeakerMgr->findSpeaker(mUUIDs.front()); -			if (speakerp.notNull()) -			{ -				// not in voice participants can not be moderated -				return speakerp->isInVoiceChannel(); -			} -		} -		return false; -	}  	else if (item == std::string("can_add"))  	{  		// We can add friends if: @@ -855,6 +846,36 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&  	return true;  } +/* +Processed menu items with such parameters: +	can_allow_text_chat +	can_moderate_voice +*/ +bool LLParticipantList::LLParticipantListMenu::enableModerateContextMenuItem(const LLSD& userdata) +{ +	// only group moderators can perform actions related to this "enable callback" +	if (!isGroupModerator()) return false; + +	const LLUUID& participant_id = mUUIDs.front(); +	LLPointer<LLSpeaker> speakerp = mParent.mSpeakerMgr->findSpeaker(participant_id); + +	// not in voice participants can not be moderated +	bool speaker_in_voice = speakerp.notNull() && speakerp->isInVoiceChannel(); + +	const std::string& item = userdata.asString(); + +	if ("can_moderate_voice" == item) +	{ +		return speaker_in_voice; +	} + +	// For now non of menu actions except "can_moderate_voice" can be performed for Avaline callers. +	bool is_participant_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(participant_id); +	if (!is_participant_avatar) return false; + +	return true; +} +  bool LLParticipantList::LLParticipantListMenu::checkContextMenuItem(const LLSD& userdata)  {  	std::string item = userdata.asString(); diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h index 9e5a2cbc1f..bbef8baaac 100644 --- a/indra/newview/llparticipantlist.h +++ b/indra/newview/llparticipantlist.h @@ -158,6 +158,7 @@ class LLParticipantList  			LLParticipantList& mParent;  		private:  			bool enableContextMenuItem(const LLSD& userdata); +			bool enableModerateContextMenuItem(const LLSD& userdata);  			bool checkContextMenuItem(const LLSD& userdata);  			void sortParticipantList(const LLSD& userdata); diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 911ed6ade7..22b12ee132 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -119,30 +119,10 @@ BOOL LLToast::postBuild()  		mTimer->stop();  	} -	if (mIsTip) -	{ -		mTextEditor = mPanel->getChild<LLTextEditor>("text_editor_box"); - -		if (mTextEditor) -		{ -			mTextEditor->setMouseUpCallback(boost::bind(&LLToast::hide,this)); -			mPanel->setMouseUpCallback(boost::bind(&LLToast::handleTipToastClick, this, _2, _3, _4)); -		} -	} -  	return TRUE;  }  //-------------------------------------------------------------------------- -void LLToast::handleTipToastClick(S32 x, S32 y, MASK mask) -{ -	if (!mTextEditor->getRect().pointInRect(x, y)) -	{ -		hide(); -	} -} - -//--------------------------------------------------------------------------  void LLToast::setHideButtonEnabled(bool enabled)  {  	if(mHideBtn) @@ -421,4 +401,13 @@ bool LLToast::isNotificationValid()  //-------------------------------------------------------------------------- +S32	LLToast::notifyParent(const LLSD& info) +{ +	if (info.has("action") && "hide_toast" == info["action"].asString()) +	{ +		hide(); +		return 1; +	} +	return LLModalDialog::notifyParent(info); +} diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index bd07ff9fb1..4a213580da 100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h @@ -190,14 +190,14 @@ public:  	boost::signals2::connection setMouseEnterCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseEnterSignal.connect(cb); };  	boost::signals2::connection setMouseLeaveCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseLeaveSignal.connect(cb); }; +	virtual S32	notifyParent(const LLSD& info); +  private:  	void onToastMouseEnter();  	void onToastMouseLeave(); -	void handleTipToastClick(S32 x, S32 y, MASK mask); -  	void	expire();  	LLUUID				mNotificationID; @@ -213,7 +213,6 @@ private:  	LLPanel*		mPanel;  	LLButton*		mHideBtn; -	LLTextEditor*	mTextEditor;  	LLColor4	mBgColor;  	bool		mCanFade; diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 58138d9917..3c0345df90 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -2245,7 +2245,7 @@ void LLViewerMediaImpl::navigateInternal()  	// This helps in supporting legacy media content where the server the media resides on returns a bogus MIME type  	// but the parcel owner has correctly set the MIME type in the parcel media settings. -	if(!mMimeType.empty() && (mMimeType != "none/none")) +	if(!mMimeType.empty() && (mMimeType != LLMIMETypes::getDefaultMimeType()))  	{  		std::string plugin_basename = LLMIMETypes::implType(mMimeType);  		if(!plugin_basename.empty()) diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index b967436df6..202f8822e3 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -35,6 +35,7 @@  #include "llagent.h"  #include "llaudioengine.h" +#include "llmimetypes.h"  #include "llviewercontrol.h"  #include "llviewermedia.h"  #include "llviewerregion.h" @@ -212,7 +213,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel)  	}  	// Don't ever try to play if the media type is set to "none/none" -	if(stricmp(mime_type.c_str(), "none/none") != 0) +	if(stricmp(mime_type.c_str(), LLMIMETypes::getDefaultMimeType().c_str()) != 0)  	{  		if(!sMediaImpl)  		{ @@ -306,7 +307,7 @@ LLPluginClassMediaOwner::EMediaStatus LLViewerParcelMedia::getStatus()  // static  std::string LLViewerParcelMedia::getMimeType()  { -	return sMediaImpl.notNull() ? sMediaImpl->getMimeType() : "none/none"; +	return sMediaImpl.notNull() ? sMediaImpl->getMimeType() : LLMIMETypes::getDefaultMimeType();  }  //static  @@ -316,7 +317,7 @@ std::string LLViewerParcelMedia::getURL()  	if(sMediaImpl.notNull())  		url = sMediaImpl->getMediaURL(); -	if(stricmp(LLViewerParcelMgr::getInstance()->getAgentParcel()->getMediaType().c_str(), "none/none") != 0) +	if(stricmp(LLViewerParcelMgr::getInstance()->getAgentParcel()->getMediaType().c_str(), LLMIMETypes::getDefaultMimeType().c_str()) != 0)  	{  		if (url.empty())  			url = LLViewerParcelMgr::getInstance()->getAgentParcel()->getMediaCurrentURL(); diff --git a/indra/newview/llviewerparcelmediaautoplay.cpp b/indra/newview/llviewerparcelmediaautoplay.cpp index f55d6d89c4..032ad6635a 100644 --- a/indra/newview/llviewerparcelmediaautoplay.cpp +++ b/indra/newview/llviewerparcelmediaautoplay.cpp @@ -42,6 +42,7 @@  #include "message.h"  #include "llviewertexturelist.h"         // for texture stats  #include "llagent.h" +#include "llmimetypes.h"  const F32 AUTOPLAY_TIME  = 5;          // how many seconds before we autoplay  const F32 AUTOPLAY_SIZE  = 24*24;      // how big the texture must be (pixel area) before we autoplay @@ -126,7 +127,7 @@ BOOL LLViewerParcelMediaAutoPlay::tick()  	if ((!mPlayed) &&							// if we've never played  		(mTimeInParcel > AUTOPLAY_TIME) &&		// and if we've been here for so many seconds  		(!this_media_url.empty()) &&			// and if the parcel has media -		(stricmp(this_media_type.c_str(), "none/none") != 0) && +		(stricmp(this_media_type.c_str(), LLMIMETypes::getDefaultMimeType().c_str()) != 0) &&  		(LLViewerParcelMedia::sMediaImpl.isNull()))	// and if the media is not already playing  	{  		if (this_media_texture_id.notNull())	// and if the media texture is good diff --git a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml index 54a8a43edf..837dfa9e8c 100644 --- a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml @@ -66,7 +66,7 @@  				Key-Zeit:  			</text>  			<spinner label="Std." name="WLCurKeyHour" /> -			<spinner label="Min." name="WLCurKeyMin" label_width="100" width="66"/> +			<spinner label="Min." name="WLCurKeyMin"/>  			<text name="WLCurKeyTimeText2">  				Key-Voreinstellung:  			</text> @@ -79,8 +79,8 @@  				Zykluslänge:  			</text>  			<spinner label="Std." name="WLLengthOfDayHour" /> -			<spinner label="Min." name="WLLengthOfDayMin" label_width="100" width="66"/> -			<spinner label="Sek." name="WLLengthOfDaySec" label_width="100" width="66"/> +			<spinner label="Min." name="WLLengthOfDayMin"/> +			<spinner label="Sek." name="WLLengthOfDaySec"/>  			<text name="DayCycleText3">  				Vorschau:  			</text> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index fd05f02ceb..b3aeb8cd68 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -3577,4 +3577,7 @@ Missbrauchsbericht  	<string name="Contents">  		Inhalt  	</string> +    <string name="AvatarBirthDateFormat"> +        [day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt] +    </string>  </strings> diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml index 2fa112af8c..421f3a72c6 100644 --- a/indra/newview/skins/default/xui/en/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml @@ -213,7 +213,8 @@       left="10"       name="(Drag below to save.)"       top_pad="66" -     width="130"> +     width="130" +     wrap="true">          (Drag below to save)      </text>  </floater> diff --git a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml index 2c0c8d45b3..42a9ff551e 100644 --- a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml @@ -7,7 +7,7 @@   help_topic="day_cycle_floater"   save_rect="true"   title="DAY CYCLE EDITOR" - width="646"> + width="658">      <tab_container       follows="left|top"       height="255" @@ -16,7 +16,7 @@       name="Day Cycle Tabs"       tab_position="top"       top="20" -     width="644"> +     width="656">          <panel           border="true"           follows="left|top|right|bottom" @@ -27,7 +27,7 @@           mouse_opaque="false"           name="Day Cycle"           top="0" -         width="642"> +         width="654">              <multi_slider               can_edit_text="true"               control_name="WLTimeSlider" @@ -313,7 +313,7 @@               left="555"               name="WLAddKey"               top="30" -             width="80" /> +             width="96" />              <button               height="20"               label="Delete Key" @@ -322,7 +322,7 @@               left_delta="0"               name="WLDeleteKey"               top_pad="5" -             width="80" /> +             width="96" />              <text               type="string"               length="1" @@ -348,7 +348,7 @@               left="30"               name="WLCurKeyTimeText"               top="124" -             width="100"> +             width="105">                  Key Time:              </text>              <spinner @@ -361,11 +361,11 @@               label="Hour"               label_width="30"               layout="topleft" -             left_delta="0" +             left_delta="25"               max_val="100"               name="WLCurKeyHour"               top_pad="4" -             width="70" /> +             width="74" />              <spinner               control_name="WLCurKeyMin"               decimal_digits="0" @@ -402,7 +402,7 @@               left_delta="0"               name="WLKeyPresets"               top_pad="7" -             width="155" /> +             width="205" />              <view_border               bevel_style="none"               follows="top|left" @@ -410,7 +410,7 @@               layout="topleft"               left="12"               top="101" -             width="190" /> +             width="240" />              <text               type="string"               length="1" @@ -419,7 +419,7 @@               font="SansSerif"               height="16"               layout="topleft" -             left="220" +             left_pad="15"               name="DayCycleText"               top="114"               width="120"> @@ -444,7 +444,7 @@               layout="topleft"               left_delta="0"               name="DayCycleText2" -             top_pad="9" +             top_pad="17"               width="120">                  Length of Cycle:              </text> @@ -462,7 +462,7 @@               max_val="100"               name="WLLengthOfDayHour"               top_pad="4" -             width="70" /> +             width="74" />              <spinner               control_name="WLLengthOfDayMin"               decimal_digits="0" @@ -492,57 +492,58 @@               max_val="59"               name="WLLengthOfDaySec"               top_delta="0" -             width="60" /> +             width="60"/>              <text               type="string" +             halign="right"               length="1"               border_visible="true"               follows="left|top|right"               font="SansSerif"               height="16"               layout="topleft" -             left="310" +             left_delta="-23"               name="DayCycleText3"               top="114" -             width="120"> -                Preview: +             width="85"> +                Preview :              </text>              <button               height="20"               label="Play"               label_selected="Play"               layout="topleft" -             left_delta="60" +             left="480"               name="WLAnimSky"               top_pad="5" -             width="50" /> +             width="83" />              <button               height="20"               label="Stop!"               label_selected="Stop"               layout="topleft" -             left_pad="5" +             left_pad="4"               name="WLStopAnimSky"               top_delta="0" -             width="50" /> +             width="83" />              <button               height="20"               label="Use Estate Time"               label_selected="Go to Estate Time"               layout="topleft" -             left_pad="5" +             left="480"               name="WLUseLindenTime" -             top_delta="0" -             width="150" /> +             top_pad="9" +             width="170" />              <button               height="20"               label="Save Test Day"               label_selected="Save Test Day"               layout="topleft" -             left="480" +             left_delta="0"               name="WLSaveDayCycle" -             top="175" -             width="150" /> +             top_pad="9" +             width="170" />              <button               height="20"               label="Load Test Day" @@ -550,8 +551,8 @@               layout="topleft"               left_delta="0"               name="WLLoadDayCycle" -             top_pad="5" -             width="150" /> +             top_pad="3" +             width="170" />          </panel>      </tab_container>  </floater> diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml index 59c7f4ed85..2515b60868 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -30,6 +30,9 @@       name="View Profile">          <menu_item_call.on_click           function="Avatar.Profile" /> +        <menu_item_call.on_enable +         function="ParticipantList.EnableItem" +         parameter="can_view_profile" />      </menu_item_call>      <menu_item_call       label="Add Friend" @@ -153,7 +156,7 @@           function="ParticipantList.ModerateVoice"           parameter="selected" />          <on_enable -         function="ParticipantList.EnableItem" +         function="ParticipantList.EnableItem.Moderate"           parameter="can_moderate_voice" />      </menu_item_call>      <menu_item_call @@ -164,7 +167,7 @@           function="ParticipantList.ModerateVoice"           parameter="others" />          <on_enable -         function="ParticipantList.EnableItem" +         function="ParticipantList.EnableItem.Moderate"           parameter="can_moderate_voice" />      </menu_item_call>      <menu_item_call @@ -175,7 +178,7 @@           function="ParticipantList.ModerateVoice"           parameter="selected" />          <on_enable -         function="ParticipantList.EnableItem" +         function="ParticipantList.EnableItem.Moderate"           parameter="can_moderate_voice" />      </menu_item_call>      <menu_item_call @@ -186,7 +189,7 @@           function="ParticipantList.ModerateVoice"           parameter="others" />          <on_enable -         function="ParticipantList.EnableItem" +         function="ParticipantList.EnableItem.Moderate"           parameter="can_moderate_voice" />      </menu_item_call>      </context_menu> diff --git a/indra/newview/skins/default/xui/en/panel_generic_tip.xml b/indra/newview/skins/default/xui/en/panel_generic_tip.xml index 453ed7c7a6..eea92895f5 100644 --- a/indra/newview/skins/default/xui/en/panel_generic_tip.xml +++ b/indra/newview/skins/default/xui/en/panel_generic_tip.xml @@ -3,7 +3,7 @@   height="40"   layout="topleft"   left="0" - name="panel_system_tip" + name="panel_generic_tip"   top="0"   width="305">      <text diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml index b5c2371510..c5f44cd049 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml @@ -42,10 +42,11 @@    <text      bottom_delta="-50"  +   enabled="false"     follows="top|left"      height="15"      left="10"  -   enabled="false"> +   name="owner_label">      Owner    </text> @@ -79,10 +80,11 @@    <text      bottom_delta="-36"  +   enabled="false"     follows="top|left"      height="15"      left="10"  -   enabled="false"> +   name="group_label">      Group:    </text> @@ -126,10 +128,11 @@    <text      bottom_delta="-36"  +   enabled="false"     follows="top|left"      height="15"      left="10"  -   enabled="false"> +   name="anyone_label">      Anyone    </text> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 8131b75b70..8a4a28e188 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -13,10 +13,10 @@   width="333">      <string       name="no_people" -     value="No people" /> +     value="No recent people. Looking for people to hang out with? Try [secondlife:///app/search/people Search] or the [secondlife:///app/worldmap World Map]." />      <string       name="no_one_near" -     value="No one near" /> +     value="No one nearby. Looking for people to hang out with? Try [secondlife:///app/search/people Search] or the [secondlife:///app/worldmap World Map]." />      <string       name="no_friends_online"       value="No friends online" /> @@ -35,10 +35,10 @@       -->      <string       name="no_filtered_groups_msg" -     value="[secondlife:///app/search/groups Try finding the group in search?]" /> +     value="Didn't find what you're looking for? Try [secondlife:///app/search/groups Search]." />      <string       name="no_groups_msg" -     value="[secondlife:///app/search/groups Try searching for some groups to join.]" /> +     value="Looking for Groups to join? Try [secondlife:///app/search/groups Search]." />      <filter_editor       follows="left|top|right"       height="23" @@ -264,8 +264,8 @@               top="10"               width="293"               wrap="true"> -                To add friends try [secondlife:///app/search/people global search] or use right-click on a Resident to add them as a friend. -If you're looking for people to hang out with, [secondlife:///app/worldmap try the Map]. +                Find friends using [secondlife:///app/search/people Search] or right-click on a Resident to add them as a friend. +Looking for people to hang out with? Try the [secondlife:///app/worldmap World Map].               </text>          </panel>          <panel diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 7ab74855a5..0a56f711dd 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -332,21 +332,21 @@  		increment="8"  		initial_value="160"  		label="Draw distance:" -		label_width="140" +		label_width="185"  		layout="topleft" -		left="216" +		left="200"  		max_val="512"  		min_val="64"  		name="DrawDistance"  		top="3" -		width="255" /> +		width="296" />  		<text  		type="string"  		length="1"  		follows="left|top"  		height="12"  		layout="topleft" -		left_delta="250" +		left_delta="291"  		name="DrawDistanceMeterText2"  		top_delta="0"  		width="128"> @@ -360,13 +360,13 @@  		increment="256"  		initial_value="4096"  		label="Max. particle count:" -		label_width="140" +		label_width="185"  		layout="topleft" -		left="216" +		left="200"  		max_val="8192"  		name="MaxParticleCount"  		top_pad="7" -		width="262" /> +		width="303" />  		<slider  		control_name="RenderGlowResolutionPow"  		decimal_digits="0" @@ -375,7 +375,7 @@  		increment="1"  		initial_value="8"  		label="Post process quality:" -		label_width="140" +		label_width="185"  		layout="topleft"  		left_delta="0"  		max_val="9" @@ -383,7 +383,7 @@  		name="RenderPostProcess"  		show_text="false"  		top_pad="4" -		width="223"> +		width="264">  			<slider.commit_callback  			function="Pref.UpdateSliderText"  			parameter="PostProcessText" /> @@ -407,14 +407,14 @@  		increment="0.125"  		initial_value="160"  		label="  Objects:" -		label_width="140" +		label_width="185"  		layout="topleft"  		left_delta="0"  		max_val="2"  		name="ObjectMeshDetail"  		show_text="false"  		top_pad="6" -		width="223"> +		width="264">  			<slider.commit_callback  			function="Pref.UpdateSliderText"  			parameter="ObjectMeshDetailText" /> @@ -425,13 +425,13 @@  		height="16"  		initial_value="160"  		label="  Flexiprims:" -		label_width="140" +		label_width="185"  		layout="topleft"  		left_delta="0"  		name="FlexibleMeshDetail"  		show_text="false"  		top_pad="4" -		width="223"> +		width="264">  			<slider.commit_callback  			function="Pref.UpdateSliderText"  			parameter="FlexibleMeshDetailText" /> @@ -443,13 +443,13 @@          increment="0.125"          initial_value="160"          label="  Trees:" -        label_width="140" +        label_width="185"          layout="topleft"          left_delta="0"          name="TreeMeshDetail"          show_text="false"          top_pad="4" -        width="223"> +        width="264">             <slider.commit_callback              function="Pref.UpdateSliderText"              parameter="TreeMeshDetailText" /> @@ -461,13 +461,13 @@          increment="0.125"          initial_value="160"          label="  Avatars:" -        label_width="140" +        label_width="185"          layout="topleft"          left_delta="0"          name="AvatarMeshDetail"          show_text="false"          top_pad="4" -        width="223"> +        width="264">             <slider.commit_callback              function="Pref.UpdateSliderText"              parameter="AvatarMeshDetailText" /> @@ -479,7 +479,7 @@          increment="0.125"          initial_value="160"          label="  Terrain:" -        label_width="140" +        label_width="185"          layout="topleft"          left_delta="0"          max_val="2" @@ -487,7 +487,7 @@          name="TerrainMeshDetail"          show_text="false"          top_pad="4" -        width="223"> +        width="264">             <slider.commit_callback              function="Pref.UpdateSliderText"              parameter="TerrainMeshDetailText" /> @@ -501,7 +501,7 @@          increment="8"          initial_value="160"          label="  Sky:" -        label_width="140" +        label_width="185"          layout="topleft"          left_delta="0"          max_val="128" @@ -509,7 +509,7 @@          name="SkyMeshDetail"          show_text="false"          top_pad="4" -        width="223"> +        width="264">             <slider.commit_callback              function="Pref.UpdateSliderText"              parameter="SkyMeshDetailText" /> @@ -520,7 +520,7 @@          follows="left|top"          height="12"          layout="topleft" -        left="444" +        left="469"          name="PostProcessText"          top="305"          width="128"> @@ -605,7 +605,7 @@          follows="left|top"          height="12"          layout="topleft" -        left_delta="-230" +        left="200"          name="LightingDetailText"          top_pad="8"          width="140"> @@ -616,15 +616,13 @@          draw_border="false"          height="38"          layout="topleft" -        left_delta="0"          name="LightingDetailRadio"          top_pad="5" -        width="321"> +        width="200">             <radio_item              height="16"              label="Sun and moon only"              layout="topleft" -            left="3"              name="SunMoon"              value="0"              top="3" @@ -633,7 +631,6 @@              height="16"              label="Nearby local lights"              layout="topleft" -            left_delta="0"              name="LocalLights"              value="1"              top_delta="16" @@ -645,7 +642,7 @@          follows="left|top"          height="12"          layout="topleft" -        left="358" +        left_pad="-30"          name="TerrainDetailText"          top="465"          width="155"> @@ -659,23 +656,21 @@          left_delta="0"          name="TerrainDetailRadio"          top_pad="5" -        width="321"> +        width="70">             <radio_item              height="16"              label="Low"              layout="topleft" -            left="3"              name="0"              top="3" -            width="315" /> +            width="50" />             <radio_item              height="16"              label="High"              layout="topleft" -            left_delta="0"              name="2"              top_delta="16" -            width="315" /> +            width="50" />          </radio_group>  	</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml index 9186efc431..08e36d5e57 100644 --- a/indra/newview/skins/default/xui/en/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml @@ -2,14 +2,14 @@  <panel   border="false"   follows="top|left" - height="320" + height="510"   help_topic="panel_region_estate_tab"   label="Estate"   layout="topleft"   left="0"   name="Estate"   top="320" - width="480"> + width="530">      <text       type="string"       length="1" @@ -20,7 +20,7 @@       name="estate_help_text"       top="14"       word_wrap="true" -     width="250"> +     width="300">          Changes to settings on this tab will affect all regions in the estate.      </text>      <text @@ -82,7 +82,7 @@       layout="topleft"       left_delta="-4"       top_pad="5" -     width="250" /> +     width="300" />      <check_box       height="20"       label="Use Global Time" @@ -184,14 +184,14 @@       layout="topleft"       name="apply_btn"       top_pad="10" -     left="78" +     left="110"       width="97" />      <button       follows="left|top"       height="23"       label="Send Message To Estate..."       layout="topleft" -     left="20" +     left="45"       name="message_estate_btn"       top_pad="20"       width="220" /> @@ -200,7 +200,7 @@       height="23"       label="Kick Resident from Estate..."       layout="topleft" -     left="20" +     left="45"       name="kick_user_from_estate_btn"       top_pad="5"       width="220" /> @@ -213,7 +213,7 @@       height="20"       layout="topleft"       name="estate_manager_label" -     right="470" +     right="520"       width="200">          Estate Managers:      </text> @@ -222,7 +222,7 @@       follows="top|left"       height="71"       layout="topleft" -     right="470" +     right="520"       top_pad="-5"       width="200" />      <name_list @@ -240,7 +240,7 @@       label="Remove..."       layout="topleft"       name="remove_estate_manager_btn" -     right="470" +     right="520"       top_pad="5"       width="97" />      <button @@ -269,7 +269,7 @@       follows="top|left"       height="71"       layout="topleft" -     right="470" +     right="520"       top_pad="-5"       width="200" />      <name_list @@ -287,7 +287,7 @@       label="Remove..."       layout="topleft"       name="remove_allowed_avatar_btn" -     right="470" +     right="520"       top_pad="5"       width="97" />      <button @@ -316,7 +316,7 @@       follows="top|left"       height="71"       layout="topleft" -     right="470" +     right="520"       top_pad="-5"       width="200" />      <name_list @@ -334,7 +334,7 @@       label="Remove..."       layout="topleft"       name="remove_allowed_group_btn" -     right="470" +     right="520"       top_pad="5"       width="97" />      <button @@ -363,7 +363,7 @@       follows="top|left"       height="71"       layout="topleft" -     right="470" +     right="520"       top_pad="-5"       width="200" />      <name_list @@ -381,7 +381,7 @@       label="Remove..."       layout="topleft"       name="remove_banned_avatar_btn" -     right="470" +     right="520"       top_pad="5"       width="97" />      <button diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 813f59ff89..a480266b5a 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3103,4 +3103,10 @@ Abuse Report</string>    <string name="New Script">New Script</string>    <string name="New Folder">New Folder</string>    <string name="Contents">Contents</string> -</strings> + +  <!-- birth date format shared by avatar inspector and profile panels --> +  <string name="AvatarBirthDateFormat">[mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]</string> +   +  <string name="DefaultMimeType">none/none</string> + +  </strings> diff --git a/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml index 47ad16b277..9c3ac1be0e 100644 --- a/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml @@ -57,8 +57,8 @@  			<text name="WL12amHash2">  				|  			</text> -			<button font="SansSerifSmall" width="96" left="546" label="Añadir un punto" label_selected="Añadir un punto" name="WLAddKey"/> -			<button font="SansSerifSmall" width="96" left="546" label="Quitar un punto" label_selected="Quitar un punto" name="WLDeleteKey"/> +			<button label="Añadir un punto" label_selected="Añadir un punto" name="WLAddKey"/> +			<button label="Quitar un punto" label_selected="Quitar un punto" name="WLDeleteKey"/>  			<text name="WLCurKeyFrameText">  				Configuración del fotograma clave:  			</text> @@ -86,9 +86,9 @@  			</text>  			<button label="Probar" label_selected="Probar" name="WLAnimSky"/>  			<button label="Parar" label_selected="Parar" name="WLStopAnimSky"/> -			<button width="150" font="SansSerifSmall" label="Usar el horario del estado" label_selected="Ir al horario del estado" name="WLUseLindenTime"/> -			<button left="440" width="180" font="SansSerifSmall" label="Guardar este tipo de día" label_selected="Guardar este tipo de día" name="WLSaveDayCycle"/> -			<button left="440" width="180" font="SansSerifSmall" label="Cargar y probar un tipo de día" label_selected="Cargar y probar un tipo de día" name="WLLoadDayCycle"/> +			<button label="Usar el horario del estado" label_selected="Ir al horario del estado" name="WLUseLindenTime"/> +			<button label="Guardar este tipo de día" label_selected="Guardar este tipo de día" name="WLSaveDayCycle"/> +			<button label="Cargar y probar un tipo de día" label_selected="Cargar y probar un tipo de día" name="WLLoadDayCycle"/>  		</panel>  	</tab_container>  </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml index e8122108a8..ec3b246c76 100644 --- a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml @@ -58,15 +58,15 @@  				|  			</text>  			<button label="Ajouter clé" label_selected="Ajouter clé" name="WLAddKey"/> -			<button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey" width="89"/> -			<text name="WLCurKeyFrameText" width="170"> +			<button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey"/> +			<text name="WLCurKeyFrameText">  				Réglages des images-clés :  			</text> -			<text name="WLCurKeyTimeText" width="170"> +			<text name="WLCurKeyTimeText">  				Heure de la clé :  			</text> -			<spinner label="Heure" name="WLCurKeyHour" label_width="80" width="74"/> -			<spinner label="Min" name="WLCurKeyMin" label_width="80"/> +			<spinner label="Heure" name="WLCurKeyHour"/> +			<spinner label="Min" name="WLCurKeyMin"/>  			<text name="WLCurKeyTimeText2">  				Préréglages clés :  			</text> @@ -78,9 +78,9 @@  			<text name="DayCycleText2">  				Durée du cycle :  			</text> -			<spinner label="Heure" name="WLLengthOfDayHour" label_width="80" width="74" /> +			<spinner label="Heure" name="WLLengthOfDayHour"/>  			<spinner label="Min" name="WLLengthOfDayMin" /> -			<spinner label="S" name="WLLengthOfDaySec" label_width="10" width="50" left_delta="95"/> +			<spinner label="S" name="WLLengthOfDaySec"/>  			<text name="DayCycleText3">  				Prévisualiser :  			</text> diff --git a/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml index 808c758bb6..98c385d29f 100644 --- a/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml @@ -57,8 +57,8 @@  			<text name="WL12amHash2">  				|  			</text> -			<button font="SansSerifSmall" width="96" left="546" label="Aggiungi voce" label_selected="Aggiungi voce" name="WLAddKey"/> -			<button font="SansSerifSmall" width="96" left="546" label="Cancella voce" label_selected="Cancella voce" name="WLDeleteKey"/> +			<button label="Aggiungi voce" label_selected="Aggiungi voce" name="WLAddKey"/> +			<button label_selected="Cancella voce" name="WLDeleteKey"/>  			<text name="WLCurKeyFrameText">  				Impostazioni del fotogramma chiave:  			</text> @@ -84,9 +84,9 @@  			<text name="DayCycleText3">  				Anteprima:  			</text> -			<button width="55" font="SansSerifSmall" label="Avvia" label_selected="Avvia" name="WLAnimSky"/> -			<button width="55" left_delta="60" font="SansSerifSmall" label="Arresta!" label_selected="Arresta" name="WLStopAnimSky"/> -			<button left_delta="60" width="150" font="SansSerifSmall" label="Usa l'ora della proprietà" label_selected="Vai all'ora della proprietà" name="WLUseLindenTime"/> +			<button label="Avvia" label_selected="Avvia" name="WLAnimSky"/> +			<button label="Arresta!" label_selected="Arresta" name="WLStopAnimSky"/> +			<button label="Usa l'ora della proprietà" label_selected="Vai all'ora della proprietà" name="WLUseLindenTime"/>  			<button label="Salva il test del giorno" label_selected="Salva il test del giorno" name="WLSaveDayCycle"/>  			<button label="Carica il test del giorno" label_selected="Carica il test del giorno" name="WLLoadDayCycle"/>  		</panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml index d02a794219..5bd0cfb106 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml @@ -47,12 +47,12 @@  		<check_box initial_value="true" label="Avatar bidimensionali (Impostor)" name="AvatarImpostors"/>  		<check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/>  		<check_box initial_value="true" label="Abiti dell'avatar" name="AvatarCloth"/> -		<slider label="Distanza di disegno:" label_width="158" name="DrawDistance" width="255"/> +		<slider label="Distanza di disegno:" name="DrawDistance"/>  		<text name="DrawDistanceMeterText2">  			m  		</text> -		<slider label="Conteggio massimo particelle:" label_width="158" name="MaxParticleCount" width="262"/> -		<slider label="Qualità in post-produzione:" label_width="158" name="RenderPostProcess" width="223"/> +		<slider label="Conteggio massimo particelle:" name="MaxParticleCount"/> +		<slider label="Qualità in post-produzione:" name="RenderPostProcess"/>  		<text name="MeshDetailText">  			Dettagli reticolo:  		</text> @@ -99,7 +99,7 @@  		</radio_group>  	</panel>  	<button label="Applica" label_selected="Applica" name="Apply"/> -	<button label="Reimposta" left="110" name="Defaults" width="190"/> +	<button label="Reimposta" name="Defaults"/>  	<button label="Avanzate" name="Advanced"/>  	<button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>  </panel> diff --git a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml index 7bda25e00f..b924af4e67 100644 --- a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml @@ -84,10 +84,10 @@  			<text name="DayCycleText3">  				プレビュー:  			</text> -			<button label="再生" label_selected="再生" name="WLAnimSky" left_delta="70"/> +			<button label="再生" label_selected="再生" name="WLAnimSky"/>  			<button label="停止" label_selected="停止" name="WLStopAnimSky" />  			<button label="不動産の時刻を使用" -			     label_selected="不動産の時刻に変更" name="WLUseLindenTime" width="140"/> +			     label_selected="不動産の時刻に変更" name="WLUseLindenTime"/>  			<button label="デイテストを保存"  			     label_selected="デイテストを保存" name="WLSaveDayCycle" />  			<button label="デイテストをロード" diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index b9df82adcd..a54d96061f 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -3577,4 +3577,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ  	<string name="Contents">  		コンテンツ  	</string> +    <string name="AvatarBirthDateFormat"> +        [year,datetime,slt]/[mthnum,datetime,slt]/[day,datetime,slt] +    </string>  </strings> diff --git a/indra/newview/skins/default/xui/pt/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/pt/floater_day_cycle_options.xml index 42f34a3d82..dbca247a2f 100644 --- a/indra/newview/skins/default/xui/pt/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/pt/floater_day_cycle_options.xml @@ -30,9 +30,9 @@  			<text name="WL12am2">  				24:00  			</text> -			<button font="SansSerifSmall" width="96" left="546" label="Adicionar chave" label_selected="Adicionar chave" name="WLAddKey"/> -			<button font="SansSerifSmall" width="96" left="546" label="Apagar chave" label_selected="Apagar chave" name="WLDeleteKey"/> -			<text name="WLCurKeyFrameText" width="190" left="17"> +			<button label="Adicionar chave" label_selected="Adicionar chave" name="WLAddKey"/> +			<button label="Apagar chave" label_selected="Apagar chave" name="WLDeleteKey"/> +			<text name="WLCurKeyFrameText">  				Configurações de Quadro-chave:  			</text>  			<text name="WLCurKeyTimeText"> @@ -47,7 +47,7 @@  			<text name="DayCycleText">  				Grudar:  			</text> -			<combo_box label="5 minutos" name="WLSnapOptions" width="85"/> +			<combo_box label="5 minutos" name="WLSnapOptions"/>  			<text name="DayCycleText2">  				Duração do Ciclo:  			</text> @@ -59,7 +59,7 @@  			</text>  			<button label="Tocar" label_selected="Tocar" name="WLAnimSky"/>  			<button label="Pare!" label_selected="Pare" name="WLStopAnimSky"/> -			<button width="175" font="SansSerifSmall" label="Usar o horário da Propriedade" label_selected="Ir para o horário da Propriedade" name="WLUseLindenTime"/> +			<button label="Usar o horário da Propriedade" label_selected="Ir para o horário da Propriedade" name="WLUseLindenTime"/>  			<button label="Salvar o Dia teste" label_selected="Salvar o Dia teste" name="WLSaveDayCycle"/>  			<button label="Carregar o Dia teste" label_selected="Carregar o Dia teste" name="WLLoadDayCycle"/>  		</panel> | 
