diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/CMakeLists.txt | 2 | ||||
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 11 | ||||
| -rwxr-xr-x | indra/newview/llfloaterregioninfo.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterregionrestarting.cpp | 106 | ||||
| -rw-r--r-- | indra/newview/llfloaterregionrestarting.h | 53 | ||||
| -rwxr-xr-x | indra/newview/llviewerfloaterreg.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llviewermessage.cpp | 65 | ||||
| -rwxr-xr-x | indra/newview/skins/default/colors.xml | 3 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_region_restarting.xml | 63 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/notifications.xml | 4 | 
10 files changed, 286 insertions, 24 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 1fea6dea9f..34c3489f9f 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -267,6 +267,7 @@ set(viewer_SOURCE_FILES      llfloaterregiondebugconsole.cpp      llfloaterregioninfo.cpp      llfloaterreporter.cpp +    llfloaterregionrestarting.cpp      llfloaterscriptdebug.cpp      llfloaterscriptlimits.cpp      llfloatersearch.cpp @@ -855,6 +856,7 @@ set(viewer_HEADER_FILES      llfloaterregiondebugconsole.h      llfloaterregioninfo.h      llfloaterreporter.h +    llfloaterregionrestarting.h      llfloaterscriptdebug.h      llfloaterscriptlimits.h      llfloatersearch.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d9093c2a6d..abe7b95266 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12632,6 +12632,17 @@        <key>Value</key>        <string>00000000-0000-0000-0000-000000000000</string>      </map> +    <key>UISndRestart</key> +    <map> +      <key>Comment</key> +      <string>Sound file for region restarting (uuid for sound asset)</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>String</string> +      <key>Value</key> +      <string>4b315701-1972-9e23-cdd8-23cbc8cb0f42</string> +    </map>      <key>UISndSnapshot</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index ed0209f90b..73c0963a1d 100755 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -91,6 +91,7 @@  #include "lltrans.h"  #include "llagentui.h"  #include "llmeshrepository.h" +#include "llfloaterregionrestarting.h"  const S32 TERRAIN_TEXTURE_COUNT = 4;  const S32 CORNER_COUNT = 4; diff --git a/indra/newview/llfloaterregionrestarting.cpp b/indra/newview/llfloaterregionrestarting.cpp new file mode 100644 index 0000000000..899216b966 --- /dev/null +++ b/indra/newview/llfloaterregionrestarting.cpp @@ -0,0 +1,106 @@ +/**  + * @file llfloaterregionrestarting.cpp + * @brief Shows countdown timer during region restart + * + * $LicenseInfo:firstyear=2006&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterregionrestarting.h" + +#include "llfloaterreg.h" +#include "lluictrl.h" +#include "llagent.h" + +static S32 mSeconds; + +LLFloaterRegionRestarting::LLFloaterRegionRestarting(const LLSD& key) : +	LLFloater(key), +	LLEventTimer(1) +{ +	mName = (std::string)key["NAME"]; +	mSeconds = (LLSD::Integer)key["SECONDS"]; +} + +LLFloaterRegionRestarting::~LLFloaterRegionRestarting() +{ +} + +BOOL LLFloaterRegionRestarting::postBuild() +{ +	LLStringUtil::format_map_t args; +	std::string text; + +	args["[NAME]"] = mName; +	text = getString("RegionName", args); +	LLTextBox* textbox = getChild<LLTextBox>("region_name"); +	textbox->setValue(text); + +	refresh(); + +	gAgent.addRegionChangedCallback(boost::bind(&LLFloaterRegionRestarting::regionChange, this)); + +	return TRUE; +} + +void LLFloaterRegionRestarting::regionChange() +{ +	close(); +} + +BOOL LLFloaterRegionRestarting::tick() +{ +	refresh(); + +	return FALSE; +} + +void LLFloaterRegionRestarting::refresh() +{ +	LLStringUtil::format_map_t args; +	std::string text; + +	args["[SECONDS]"] = llformat("%d", mSeconds); +	getChild<LLTextBox>("restart_seconds")->setValue(getString("RestartSeconds", args)); + +	mSeconds = mSeconds - 1; +	if(mSeconds < 0.0) +	{ +		mSeconds = 0; +	} +} + +void LLFloaterRegionRestarting::close() +{ +	LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance<LLFloaterRegionRestarting>("region_restarting"); + +	if (floaterp) +	{ +		floaterp->closeFloater(); +	} +} + +void LLFloaterRegionRestarting::updateTime(S32 time) +{ +	mSeconds = time; +} diff --git a/indra/newview/llfloaterregionrestarting.h b/indra/newview/llfloaterregionrestarting.h new file mode 100644 index 0000000000..fef0dcddfe --- /dev/null +++ b/indra/newview/llfloaterregionrestarting.h @@ -0,0 +1,53 @@ +/**  + * @file llfloaterregionrestarting.h + * @brief Shows countdown timer during region restart + * + * $LicenseInfo:firstyear=2006&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLFLOATERREGIONRESTARTING_H +#define LL_LLFLOATERREGIONRESTARTING_H + +#include "llfloater.h" +#include "lltextbox.h" +#include "lleventtimer.h" + +class LLFloaterRegionRestarting : public LLFloater,  public LLEventTimer +{ +	friend class LLFloaterReg; + +public: +	static void close(); +	static void updateTime(S32 time); + +private: +	LLFloaterRegionRestarting(const LLSD& key); +	virtual ~LLFloaterRegionRestarting(); +	virtual BOOL postBuild(); +	virtual BOOL tick(); +	virtual void refresh(); +	virtual void regionChange(); + +	std::string mName; +}; + +#endif // LL_LLFLOATERREGIONRESTARTING_H diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 4ce049df03..a8eeddb798 100755 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -95,6 +95,7 @@  #include "llfloaterproperties.h"  #include "llfloaterregiondebugconsole.h"  #include "llfloaterregioninfo.h" +#include "llfloaterregionrestarting.h"  #include "llfloaterreporter.h"  #include "llfloaterscriptdebug.h"  #include "llfloaterscriptlimits.h" @@ -296,6 +297,7 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("reset_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterResetQueue>);  	LLFloaterReg::add("region_debug_console", "floater_region_debug_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRegionDebugConsole>);  	LLFloaterReg::add("region_info", "floater_region_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRegionInfo>); +	LLFloaterReg::add("region_restarting", "floater_region_restarting.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRegionRestarting>);  	LLFloaterReg::add("script_debug", "floater_script_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptDebug>);  	LLFloaterReg::add("script_debug_output", "floater_script_debug_panel.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptDebugOutput>); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 82131c6675..5146f85786 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -111,6 +111,7 @@  #include "llpanelblockedlist.h"  #include "llpanelplaceprofile.h"  #include "llviewerregion.h" +#include "llfloaterregionrestarting.h"  #include <boost/algorithm/string/split.hpp> //  #include <boost/regex.hpp> @@ -5741,7 +5742,6 @@ bool handle_special_notification(std::string notificationID, LLSD& llsdBlock)  	std::string regionMaturity = LLViewerRegion::accessToString(regionAccess);  	LLStringUtil::toLower(regionMaturity);  	llsdBlock["REGIONMATURITY"] = regionMaturity; -	  	bool returnValue = false;  	LLNotificationPtr maturityLevelNotification;  	std::string notifySuffix = "_Notify"; @@ -5911,6 +5911,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)  			(notificationID == "RegionEntryAccessBlocked") ||  			(notificationID == "LandClaimAccessBlocked") ||  			(notificationID == "LandBuyAccessBlocked") +  		   )  		{  			/*--------------------------------------------------------------------- @@ -5952,7 +5953,38 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)  			snap_filename += SCREEN_HOME_FILENAME;  			gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);  		} -		 + +		if (notificationID == "RegionRestartMinutes" || +			notificationID == "RegionRestartSeconds") +		{ +			S32 seconds; +			if (notificationID == "RegionRestartMinutes") +			{ +				seconds = 60 * static_cast<S32>(llsdBlock["MINUTES"].asInteger()); +			} +			else +			{ +				seconds = static_cast<S32>(llsdBlock["SECONDS"].asInteger()); +			} + +			LLSD params; +			params["NAME"] = llsdBlock["NAME"]; +			params["SECONDS"] = (LLSD::Integer)seconds; + +			LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance<LLFloaterRegionRestarting>("region_restarting"); + +			if (floaterp) +			{ +				LLFloaterRegionRestarting::updateTime(seconds); +			} +			else +			{ +				LLFloaterReg::showInstance("region_restarting", params); +			} + +			send_sound_trigger(LLUUID(gSavedSettings.getString("UISndRestart")), 1.0f); +		} +  		LLNotificationsUtil::add(notificationID, llsdBlock);  		return true;  	}	 @@ -6012,7 +6044,6 @@ void process_alert_message(LLMessageSystem *msgsystem, void **user_data)  	std::string message;  	msgsystem->getStringFast(_PREHASH_AlertData, _PREHASH_Message, message); -  	process_special_alert_messages(message);  	if (!attempt_standard_notification(msgsystem)) @@ -6036,7 +6067,6 @@ bool handle_not_age_verified_alert(const std::string &pAlertName)  bool handle_special_alerts(const std::string &pAlertName)  {  	bool isHandled = false; -  	if (LLStringUtil::compareStrings(pAlertName, "NotAgeVerified") == 0)  	{ @@ -6072,26 +6102,17 @@ void process_alert_core(const std::string& message, BOOL modal)  		// System message is important, show in upper-right box not tip  		std::string text(message.substr(1));  		LLSD args; -		if (text.substr(0,17) == "RESTART_X_MINUTES") -		{ -			S32 mins = 0; -			LLStringUtil::convertToS32(text.substr(18), mins); -			args["MINUTES"] = llformat("%d",mins); -			LLNotificationsUtil::add("RegionRestartMinutes", args); -		} -		else if (text.substr(0,17) == "RESTART_X_SECONDS") -		{ -			S32 secs = 0; -			LLStringUtil::convertToS32(text.substr(18), secs); -			args["SECONDS"] = llformat("%d",secs); -			LLNotificationsUtil::add("RegionRestartSeconds", args); -		} -		else + +		// *NOTE: If the text from the server ever changes this line will need to be adjusted. +		std::string restart_cancelled = "Region restart cancelled."; +		if (text.substr(0, restart_cancelled.length()) == restart_cancelled)  		{ -			std::string new_msg =LLNotifications::instance().getGlobalString(text); -			args["MESSAGE"] = new_msg; -			LLNotificationsUtil::add("SystemMessage", args); +			LLFloaterRegionRestarting::close();  		} + +		std::string new_msg =LLNotifications::instance().getGlobalString(text); +		args["MESSAGE"] = new_msg; +		LLNotificationsUtil::add("SystemMessage", args);  	}  	else if (modal)  	{ diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index f53995732f..1587e6124d 100755 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -122,6 +122,9 @@    <color        name="Blue_80"        value="0 0 1 0.8" /> +  <color +      name="Orange" +      value="1 .82 .46 1" />    <!-- This color name makes potentially unused colors show up bright purple.    Leave this here until all Unused? are removed below, otherwise diff --git a/indra/newview/skins/default/xui/en/floater_region_restarting.xml b/indra/newview/skins/default/xui/en/floater_region_restarting.xml new file mode 100644 index 0000000000..dcb5fcc41d --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_region_restarting.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="245" + width="500" + layout="topleft" + name="region_restarting" + help_topic="floater_region_restarting" + single_instance="true" + reuse_instance="false" + title="REGION RESTARTING"> +    <string name="RegionName"> +    The region you are in now ([NAME]) is about to restart. + +If you stay in this region you will be logged out. +    </string> +    <string name="RestartSeconds"> +     Seconds until restart +[SECONDS] +    </string> +     <panel +     name="layout_panel_1" +     height="245" +     width="500" +     follows="right|top" +     top="0" +     left="0" +     background_visible="true" +     bg_opaque_color="Orange" +     bg_alpha_color="Orange"> +    <text +     type="string" +     length="1" +     follows="top|left" +     layout="topleft" +     name="region_name" +     text_color="Black" +     font="SansSerifLarge" +     word_wrap="true" +     height="100" +     top="30" +     left="10" +     width="480"> +    The region you are in now (-The longest region name-) is about to restart. + +If you stay in this region you will be logged out. +    </text> +    <text +     type="string" +     length="1" +     follows="top|left" +     layout="topleft" +     name="restart_seconds" +     text_color="Black" +     font="SansSerifHuge" +     height="100" +     left="0" +     halign="center" +     width="500"> +     Seconds until restart +     32767 +    </text> +  </panel> + </floater> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 964deb35a7..bd08c8604f 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6893,8 +6893,8 @@ This will add a bookmark in your inventory so you can quickly IM this Resident.    <notification     icon="notify.tga"     name="RegionRestartMinutes" +   show_toast="false"     priority="high" -   sound="UISndAlert"     type="notify">  The region "[NAME]" will restart in [MINUTES] minutes.  If you stay in this region you will be logged out. @@ -6903,8 +6903,8 @@ If you stay in this region you will be logged out.    <notification     icon="notify.tga"     name="RegionRestartSeconds" +   show_toast="false"     priority="high" -   sound="UISndAlert"     type="notify">  The region "[NAME]" will restart in [SECONDS] seconds.  If you stay in this region you will be logged out. | 
