diff options
24 files changed, 814 insertions, 469 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 8d3a7327b9..f4bc092fce 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4192,6 +4192,17 @@        <key>Value</key>        <integer>255</integer>      </map> +    <key>ForceLoginURL</key> +    <map> +      <key>Comment</key> +      <string>Force a specified URL for login page content - used if exists</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>String</string> +      <key>Value</key> +      <string></string> +    </map>      <key>ForceShowGrid</key>      <map>        <key>Comment</key> @@ -5325,6 +5336,18 @@        <key>Value</key>        <integer>1</integer>      </map> +  <key>LoginContentVersion</key> +  <map> +    <key>Comment</key> +    <string>Version of login page web based content to display</string> +    <key>Persist</key> +    <integer>0</integer> +    <key>Type</key> +    <string>String</string> +    <key>Value</key> +    <string>2</string> +  </map> +    <key>LoginSRVTimeout</key>    <map>      <key>Comment</key> diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index 500151c935..fc6f1f6395 100755 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml @@ -312,7 +312,7 @@          <key>Type</key>               <string>Boolean</string>          <key>Value</key> -             <integer>0</integer> +             <integer>1</integer>          </map>      <!-- End of back compatibility settings -->      </map> diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index c6b92d20bb..7e848af3a1 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -755,6 +755,16 @@ void LLFloaterPreference::initDoNotDisturbResponse()  		}  	} +//static  +void LLFloaterPreference::updateShowFavoritesCheckbox(bool val) +{ +	LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences"); +	if (instance) +	{ +		instance->getChild<LLUICtrl>("favorites_on_login_check")->setValue(val); +	}	 +} +  void LLFloaterPreference::setHardwareDefaults()  {  	LLFeatureManager::getInstance()->applyRecommendedSettings(); @@ -1605,6 +1615,7 @@ void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im  	getChildView("chat_font_size")->setEnabled(TRUE);  } +  void LLFloaterPreference::refreshUI()  {  	refresh(); @@ -1892,6 +1903,8 @@ BOOL LLPanelPreference::postBuild()  	if (hasChild("favorites_on_login_check", TRUE))  	{  		getChild<LLCheckBoxCtrl>("favorites_on_login_check")->setCommitCallback(boost::bind(&showFavoritesOnLoginWarning, _1, _2)); +		bool show_favorites_at_login = LLPanelLogin::getShowFavorites(); +		getChild<LLCheckBoxCtrl>("favorites_on_login_check")->setValue(show_favorites_at_login);  	}  	//////////////////////PanelAdvanced /////////////////// diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index cb180f6f1e..f6a41529e0 100755 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -84,6 +84,9 @@ public:  	// translate user's do not disturb response message according to current locale if message is default, otherwise do nothing  	static void initDoNotDisturbResponse(); +	// update Show Favorites checkbox +	static void updateShowFavoritesCheckbox(bool val); +  	void processProperties( void* pData, EAvatarProcessorType type );  	void processProfileProperties(const LLAvatarData* pAvatarData );  	void storeAvatarProperties( const LLAvatarData* pAvatarData ); diff --git a/indra/newview/llloginhandler.cpp b/indra/newview/llloginhandler.cpp index 9b4f146332..39f3c0f113 100755 --- a/indra/newview/llloginhandler.cpp +++ b/indra/newview/llloginhandler.cpp @@ -96,33 +96,6 @@ bool LLLoginHandler::handle(const LLSD& tokens,  		return true;  	} -	if (tokens.size() == 1 -		&& tokens[0].asString() == "show") -	{ -		// We're using reg-in-client, so show the XUI login widgets -		LLPanelLogin::showLoginWidgets(); -		return true; -	} - -	if (tokens.size() == 1 -		&& tokens[0].asString() == "reg") -	{ -		LLWindow* window = gViewerWindow->getWindow(); -		window->incBusyCount(); -		window->setCursor(UI_CURSOR_ARROW); - -		// Do this first, as it may be slow and we want to keep something -		// on the user's screen as long as possible -		LLWeb::loadURLExternal( "http://join.eniac15.lindenlab.com/" ); - -		window->decBusyCount(); -		window->setCursor(UI_CURSOR_ARROW); - -		// Then hide the window -		window->minimize(); -		return true; -	} -  	// Make sure window is visible  	LLWindow* window = gViewerWindow->getWindow();  	if (window->getMinimized()) diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 088eaa8e0d..67ab7cd384 100755 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -81,20 +81,86 @@ const S32 MAX_PASSWORD = 16;  LLPanelLogin *LLPanelLogin::sInstance = NULL;  BOOL LLPanelLogin::sCapslockDidNotification = FALSE; -class LLLoginRefreshHandler : public LLCommandHandler +class LLLoginLocationAutoHandler : public LLCommandHandler  {  public:  	// don't allow from external browsers -	LLLoginRefreshHandler() : LLCommandHandler("login_refresh", UNTRUSTED_BLOCK) { } +	LLLoginLocationAutoHandler() : LLCommandHandler("location_login", UNTRUSTED_BLOCK) { }  	bool handle(const LLSD& tokens, const LLSD& query_map, LLMediaCtrl* web)  	{	  		if (LLStartUp::getStartupState() < STATE_LOGIN_CLEANUP)  		{ -			LLPanelLogin::loadLoginPage(); +			if ( tokens.size() == 0 || tokens.size() > 4 )  +				return false; + +			// unescape is important - uris with spaces are escaped in this code path +			// (e.g. space -> %20) and the code to log into a region doesn't support that. +			const std::string region = LLURI::unescape( tokens[0].asString() ); + +			// just region name as payload  +			if ( tokens.size() == 1 ) +			{ +				// region name only - slurl will end up as center of region +				LLSLURL slurl(region); +				LLPanelLogin::autologinToLocation(slurl); +			} +			else +			// region name and x coord as payload  +			if ( tokens.size() == 2 ) +			{ +				// invalid to only specify region and x coordinate +				// slurl code will revert to same as region only, so do this anyway +				LLSLURL slurl(region); +				LLPanelLogin::autologinToLocation(slurl); +			} +			else +			// region name and x/y coord as payload  +			if ( tokens.size() == 3 ) +			{ +				// region and x/y specified - default z to 0 +				F32 xpos; +				std::istringstream codec(tokens[1].asString()); +				codec >> xpos; + +				F32 ypos; +				codec.clear(); +				codec.str(tokens[2].asString()); +				codec >> ypos; + +				const LLVector3 location(xpos, ypos, 0.0f); +				LLSLURL slurl(region, location); + +				LLPanelLogin::autologinToLocation(slurl); +			} +			else +			// region name and x/y/z coord as payload  +			if ( tokens.size() == 4 ) +			{ +				// region and x/y/z specified - ok +				F32 xpos; +				std::istringstream codec(tokens[1].asString()); +				codec >> xpos; + +				F32 ypos; +				codec.clear(); +				codec.str(tokens[2].asString()); +				codec >> ypos; + +				F32 zpos; +				codec.clear(); +				codec.str(tokens[3].asString()); +				codec >> zpos; + +				const LLVector3 location(xpos, ypos, zpos); +				LLSLURL slurl(region, location); + +				LLPanelLogin::autologinToLocation(slurl); +			};  		}	  		return true;  	}  }; +LLLoginLocationAutoHandler gLoginLocationAutoHandler;  //---------------------------------------------------------------------------  // Public methods @@ -103,10 +169,14 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  						 void (*callback)(S32 option, void* user_data),  						 void *cb_data)  :	LLPanel(), -	mLogoImage(),  	mCallback(callback),  	mCallbackData(cb_data), -	mListener(new LLPanelLoginListener(this)) +	mListener(new LLPanelLoginListener(this)), +	mUsernameLength(0), +	mPasswordLength(0), +	mLocationLength(0), +	mFavoriteSelected(false), +	mShowFavorites(false)  {  	setBackgroundVisible(FALSE);  	setBackgroundOpaque(TRUE); @@ -120,28 +190,37 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  		login_holder->addChild(this);  	} -	// Logo -	mLogoImage = LLUI::getUIImage("startup_logo"); - +	if (gSavedSettings.getBOOL("FirstLoginThisInstall")) +	{ +		buildFromFile( "panel_login_first.xml"); +	} +	else +	{  	buildFromFile( "panel_login.xml"); +	}  	reshape(rect.getWidth(), rect.getHeight());  	LLLineEditor* password_edit(getChild<LLLineEditor>("password_edit"));  	password_edit->setKeystrokeCallback(onPassKey, this);  	// STEAM-14: When user presses Enter with this field in focus, initiate login -	password_edit->setCommitCallback(boost::bind(&LLPanelLogin::onClickConnect, this)); +	password_edit->setCommitCallback(boost::bind(&LLPanelLogin::onClickConnectLast, this));  	// change z sort of clickable text to be behind buttons  	sendChildToBack(getChildView("forgot_password_text")); -	LLComboBox* location_combo = getChild<LLComboBox>("start_location_combo"); +	LLComboBox* favorites_combo = getChild<LLComboBox>("start_location_combo");  	updateLocationSelectorsVisibility(); // separate so that it can be called from preferences -	location_combo->setFocusLostCallback(boost::bind(&LLPanelLogin::onLocationSLURL, this)); +	favorites_combo->setFocusLostCallback(boost::bind(&LLPanelLogin::onLocationSLURL, this)); +	favorites_combo->setCommitCallback(boost::bind(&LLPanelLogin::onSelectFavorite, this));  	LLComboBox* server_choice_combo = getChild<LLComboBox>("server_combo");  	server_choice_combo->setCommitCallback(boost::bind(&LLPanelLogin::onSelectServer, this)); +	LLLineEditor* location_edit = sInstance->getChild<LLLineEditor>("location_edit"); +	location_edit->setKeystrokeCallback(boost::bind(&LLPanelLogin::onLocationEditChanged, this, _1), NULL); +	location_edit->setCommitCallback(boost::bind(&LLPanelLogin::onClickConnectLocation, this)); +	  	// Load all of the grids, sorted, and then add a bar and the current grid at the top  	server_choice_combo->removeall(); @@ -188,9 +267,12 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  		LLPanelLogin::onUpdateStartSLURL(start_slurl); // updates grid if needed  	} -	childSetAction("connect_btn", onClickConnect, this); +	childSetAction("connect_btn", onClickConnectLast, this); +	childSetAction("connect_favorite_btn", onClickConnectFavorite, this); +	childSetAction("connect_location_btn", onClickConnectLocation, this); -	getChild<LLPanel>("links_login_panel")->setDefaultBtn("connect_btn"); +	LLButton* def_btn = getChild<LLButton>("connect_btn"); +	setDefaultBtn(def_btn);  	std::string channel = LLVersionInfo::getChannel();  	std::string version = llformat("%s (%d)", @@ -200,8 +282,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	LLTextBox* forgot_password_text = getChild<LLTextBox>("forgot_password_text");  	forgot_password_text->setClickedCallback(onClickForgotPassword, NULL); -	childSetAction("create_new_account_btn", onClickNewAccount, NULL); -  	LLTextBox* need_help_text = getChild<LLTextBox>("login_help");  	need_help_text->setClickedCallback(onClickHelp, NULL); @@ -209,8 +289,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");  	web_browser->addObserver(this); -	reshapeBrowser(); -  	loadLoginPage();  	// Show last logged in user favorites in "Start at" combo. @@ -229,12 +307,15 @@ void LLPanelLogin::addUsersWithFavoritesToUsername()  	LLSD fav_llsd;  	llifstream file;  	file.open(filename); -	if (!file.is_open()) return; +	if (!file.is_open())  +		return;  	LLSDSerialize::fromXML(fav_llsd, file);  	for (LLSD::map_const_iterator iter = fav_llsd.beginMap();  		iter != fav_llsd.endMap(); ++iter)  	{  		combo->add(iter->first); +		mUsernameLength = iter->first.length(); +		updateLoginButtons();  	}  } @@ -251,12 +332,16 @@ void LLPanelLogin::addFavoritesToStartLocation()  	// Load favorites into the combo.  	std::string user_defined_name = getChild<LLComboBox>("username_combo")->getSimple(); +	mUsernameLength = user_defined_name.length(); +	updateLoginButtons(); +  	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml");  	LLSD fav_llsd;  	llifstream file;  	file.open(filename);  	if (!file.is_open()) return;  	LLSDSerialize::fromXML(fav_llsd, file); +  	for (LLSD::map_const_iterator iter = fav_llsd.beginMap();  		iter != fav_llsd.endMap(); ++iter)  	{ @@ -280,6 +365,7 @@ void LLPanelLogin::addFavoritesToStartLocation()  			std::string value = (*iter1)["slurl"].asString();  			if(label != "" && value != "")  			{ +				mShowFavorites = true;  				combo->add(label, value);  			}  		} @@ -287,21 +373,6 @@ void LLPanelLogin::addFavoritesToStartLocation()  	}  } -// force the size to be correct (XML doesn't seem to be sufficient to do this) -// (with some padding so the other login screen doesn't show through) -void LLPanelLogin::reshapeBrowser() -{ -	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html"); -	LLRect rect = gViewerWindow->getWindowRectScaled(); -	LLRect html_rect; -	html_rect.setCenterAndSize( -		rect.getCenterX() - 2, rect.getCenterY() + 40, -		rect.getWidth() + 6, rect.getHeight() - 78 ); -	web_browser->setRect( html_rect ); -	web_browser->reshape( html_rect.getWidth(), html_rect.getHeight(), TRUE ); -	reshape( rect.getWidth(), rect.getHeight(), 1 ); -} -  LLPanelLogin::~LLPanelLogin()  {  	LLPanelLogin::sInstance = NULL; @@ -312,50 +383,6 @@ LLPanelLogin::~LLPanelLogin()  }  // virtual -void LLPanelLogin::draw() -{ -	gGL.pushMatrix(); -	{ -		F32 image_aspect = 1.333333f; -		F32 view_aspect = (F32)getRect().getWidth() / (F32)getRect().getHeight(); -		// stretch image to maintain aspect ratio -		if (image_aspect > view_aspect) -		{ -			gGL.translatef(-0.5f * (image_aspect / view_aspect - 1.f) * getRect().getWidth(), 0.f, 0.f); -			gGL.scalef(image_aspect / view_aspect, 1.f, 1.f); -		} - -		S32 width = getRect().getWidth(); -		S32 height = getRect().getHeight(); - -		if (getChild<LLView>("login_widgets")->getVisible()) -		{ -			// draw a background box in black -			gl_rect_2d( 0, height - 264, width, 264, LLColor4::black ); -			// draw the bottom part of the background image -			// just the blue background to the native client UI -			mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight()); -		}; -	} -	gGL.popMatrix(); - -	LLPanel::draw(); -} - -// virtual -BOOL LLPanelLogin::handleKeyHere(KEY key, MASK mask) -{ -	if ( KEY_F1 == key ) -	{ -		LLViewerHelp* vhelp = LLViewerHelp::getInstance(); -		vhelp->showTopic(vhelp->f1HelpTopic()); -		return TRUE; -	} - -	return LLPanel::handleKeyHere(key, mask); -} - -// virtual   void LLPanelLogin::setFocus(BOOL b)  {  	if(b != hasFocus()) @@ -421,7 +448,7 @@ void LLPanelLogin::showLoginWidgets()  		sInstance->reshapeBrowser();  		// *TODO: Append all the usual login parameters, like first_login=Y etc.  		std::string splash_screen_url = LLGridManager::getInstance()->getLoginPage(); -		web_browser->navigateTo( splash_screen_url, HTTP_CONTENT_TEXT_HTML ); +		web_browser->navigateTo( splash_screen_url, "text/html" );  		LLUICtrl* username_combo = sInstance->getChild<LLUICtrl>("username_combo");  		username_combo->setFocus(TRUE);  	} @@ -500,9 +527,11 @@ void LLPanelLogin::setFields(LLPointer<LLCredential> credential,  		// This is a MD5 hex digest of a password.  		// We don't actually use the password input field,   		// fill it with MAX_PASSWORD characters so we get a  -		// nice row of asterixes. +		// nice row of asterisks.  		const std::string filler("123456789!123456"); -		sInstance->getChild<LLUICtrl>("password_edit")->setValue(std::string("123456789!123456")); +		sInstance->getChild<LLUICtrl>("password_edit")->setValue(filler); +		sInstance->mPasswordLength = filler.length(); +		sInstance->updateLoginButtons();  	}  	else  	{ @@ -635,11 +664,12 @@ void LLPanelLogin::updateLocationSelectorsVisibility()  {  	if (sInstance)   	{ -		BOOL show_start = gSavedSettings.getBOOL("ShowStartLocation"); -		sInstance->getChild<LLLayoutPanel>("start_location_panel")->setVisible(show_start); -  		BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid"); -		sInstance->getChild<LLLayoutPanel>("grid_panel")->setVisible(show_server); +		LLComboBox* server_combo = sInstance->getChild<LLComboBox>("server_combo"); +		if ( server_combo )  +		{ +			server_combo->setVisible(show_server); +		}  	}	  } @@ -651,6 +681,7 @@ void LLPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl)  	LL_DEBUGS("AppInit")<<new_start_slurl.asString()<<LL_ENDL;  	LLComboBox* location_combo = sInstance->getChild<LLComboBox>("start_location_combo"); +	LLLineEditor* location_edit = sInstance->getChild<LLLineEditor>("location_edit");  	/*  	 * Determine whether or not the new_start_slurl modifies the grid.  	 * @@ -680,7 +711,12 @@ void LLPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl)  				updateServer(); // to change the links and splash screen  			} -			location_combo->setTextEntry(new_start_slurl.getLocationString()); +			if ( new_start_slurl.getLocationString().length() ) +			{ +				location_edit->setValue(new_start_slurl.getLocationString()); +				sInstance->mLocationLength = new_start_slurl.getLocationString().length(); +				sInstance->updateLoginButtons(); +			}  		}  		else  		{ @@ -693,16 +729,12 @@ void LLPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl)   	break;  	case LLSLURL::HOME_LOCATION: -		location_combo->setCurrentByIndex(1); // home location -		break; -		 -	case LLSLURL::LAST_LOCATION: -		location_combo->setCurrentByIndex(0); // last location +		//location_combo->setCurrentByIndex(0); // home location  		break;  	default:  		LL_WARNS("AppInit")<<"invalid login slurl, using home"<<LL_ENDL; -		location_combo->setCurrentByIndex(1); // home location +		//location_combo->setCurrentByIndex(0); // home location  		break;  	}  } @@ -713,6 +745,19 @@ void LLPanelLogin::setLocation(const LLSLURL& slurl)  	LLStartUp::setStartSLURL(slurl); // calls onUpdateStartSLURL, above  } +void LLPanelLogin::autologinToLocation(const LLSLURL& slurl) +{ +	LL_DEBUGS("AppInit")<<"automatically logging into Location "<<slurl.asString()<<LL_ENDL; +	LLStartUp::setStartSLURL(slurl); // calls onUpdateStartSLURL, above + +	if ( LLPanelLogin::sInstance != NULL ) +	{ +		void* unused_parameter = 0; +		LLPanelLogin::sInstance->onClickConnect(unused_parameter); +	} +} + +  // static  void LLPanelLogin::closePanel()  { @@ -750,6 +795,13 @@ void LLPanelLogin::loadLoginPage()  	LL_DEBUGS("AppInit") << "login_page: " << login_page << LL_ENDL; +	// allow users (testers really) to specify a different login content URL +	std::string force_login_url = gSavedSettings.getString("ForceLoginURL"); +	if ( force_login_url.length() > 0 ) +	{ +		login_page = LLURI(force_login_url); +	} +  	// Language  	params["lang"] = LLUI::getLanguage(); @@ -774,6 +826,9 @@ void LLPanelLogin::loadLoginPage()  	// sourceid  	params["sourceid"] = gSavedSettings.getString("sourceid"); +	// login page (web) content version +	params["login_content_version"] = gSavedSettings.getString("LoginContentVersion"); +  	// Make an LLURI with this augmented info  	LLURI login_uri(LLURI::buildHTTP(login_page.authority(),  									 login_page.path(), @@ -785,7 +840,7 @@ void LLPanelLogin::loadLoginPage()  	if (web_browser->getCurrentNavUrl() != login_uri.asString())  	{  		LL_DEBUGS("AppInit") << "loading:    " << login_uri << LL_ENDL; -		web_browser->navigateTo( login_uri.asString(), HTTP_CONTENT_TEXT_HTML ); +		web_browser->navigateTo( login_uri.asString(), "text/html" );  	}  } @@ -796,6 +851,32 @@ void LLPanelLogin::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent ev  //---------------------------------------------------------------------------  // Protected methods  //--------------------------------------------------------------------------- +// static +void LLPanelLogin::onClickConnectLast(void *) +{ +	std::string location = LLSLURL::SIM_LOCATION_LAST; +	LLStartUp::setStartSLURL(location); + +	void* unused_parameter = 0; +	LLPanelLogin::sInstance->onClickConnect(unused_parameter); +} + +void LLPanelLogin::onClickConnectFavorite(void *) +{ +	LLPanelLogin::sInstance->onLocationSLURL(); + +	void* unused_parameter = 0; +	LLPanelLogin::sInstance->onClickConnect(unused_parameter); +} + +void LLPanelLogin::onClickConnectLocation(void *) +{ +	std::string location = sInstance->getChild<LLUICtrl>("location_edit")->getValue().asString(); +	LLStartUp::setStartSLURL(location); + +	void* unused_parameter = 0; +	LLPanelLogin::sInstance->onClickConnect(unused_parameter); +}  // static  void LLPanelLogin::onClickConnect(void *) @@ -865,16 +946,6 @@ void LLPanelLogin::onClickConnect(void *)  }  // static -void LLPanelLogin::onClickNewAccount(void*) -{ -	if (sInstance) -	{ -		LLWeb::loadURLExternal(LLTrans::getString("create_account_url")); -	} -} - - -// static  void LLPanelLogin::onClickVersion(void*)  {  	LLFloaterReg::showInstance("sl_about");  @@ -902,13 +973,17 @@ void LLPanelLogin::onClickHelp(void*)  // static  void LLPanelLogin::onPassKey(LLLineEditor* caller, void* user_data)  { -	LLPanelLogin *This = (LLPanelLogin *) user_data; -	This->mPasswordModified = TRUE; +	LLPanelLogin *self = (LLPanelLogin *)user_data; +	self->mPasswordModified = TRUE;  	if (gKeyboard->getKeyDown(KEY_CAPSLOCK) && sCapslockDidNotification == FALSE)  	{  		// *TODO: use another way to notify user about enabled caps lock, see EXT-6858  		sCapslockDidNotification = TRUE;  	} + +	LLLineEditor* password_edit(self->getChild<LLLineEditor>("password_edit")); +	self->mPasswordLength = password_edit->getText().length(); +	self->updateLoginButtons();  } @@ -949,6 +1024,64 @@ void LLPanelLogin::updateServer()  	}  } +void LLPanelLogin::updateLoginButtons() +{ +	LLButton* last_login_btn = getChild<LLButton>("connect_btn"); +	LLButton* loc_btn = getChild<LLButton>("connect_location_btn"); +	LLButton* fav_btn = getChild<LLButton>("connect_favorite_btn"); + +	// no username or no password - turn all buttons off +	if ( mUsernameLength == 0 || mPasswordLength == 0 ) +	{ +		last_login_btn->setEnabled(false); +		loc_btn->setEnabled(false); +		fav_btn->setEnabled(false); +	}; + +	// we have a username and a password +	if ( mUsernameLength != 0 && mPasswordLength != 0 ) +	{ +		// last login button always enabled for this case +		last_login_btn->setEnabled(true); + +		// double check status of favorites combo (must be items there and one must be selected to enable button) +		LLComboBox* favorites_combo = getChild<LLComboBox>("start_location_combo"); +		int num_items = favorites_combo->getItemCount(); +		int selected_index = favorites_combo->getCurrentIndex(); +		if ( num_items > 0 && selected_index >=0 ) +			mFavoriteSelected = true; +		else +			mFavoriteSelected = false; + +		// only turn on favorites login button if one is selected +		fav_btn->setEnabled( mFavoriteSelected ); + +		// only enable location login if there is content there +		if ( mLocationLength > 0 ) +			loc_btn->setEnabled(true); +		else +			loc_btn->setEnabled(false); +	} +} + +void LLPanelLogin::onLocationEditChanged(LLUICtrl* ctrl) +{ +	LLLineEditor* self = (LLLineEditor*)ctrl; +	if (self ) +	{ +		mLocationLength = self->getText().length(); +		updateLoginButtons(); +	} +} + +void LLPanelLogin::onSelectFavorite() +{ +	// no way to unselect a favorite once it's selected (i think) +	mFavoriteSelected = true; + +	updateLoginButtons(); +} +  void LLPanelLogin::onSelectServer()  {  	// The user twiddled with the grid choice ui. @@ -990,6 +1123,7 @@ void LLPanelLogin::onSelectServer()  				// the grid specified by the location is not this one, so clear the combo  				location_combo->setCurrentByIndex(0); // last location on the new grid  				location_combo->setTextEntry(LLStringUtil::null); +				mFavoriteSelected = true;  			}  		}			  		break; @@ -1006,3 +1140,9 @@ void LLPanelLogin::onLocationSLURL()  	LLStartUp::setStartSLURL(location); // calls onUpdateStartSLURL, above   } + +// static +bool LLPanelLogin::getShowFavorites() +{ +	return gSavedPerAccountSettings.getBOOL("ShowFavoritesOnLogin"); +} diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h index c71cfc3783..0e68ae3ccf 100755 --- a/indra/newview/llpanellogin.h +++ b/indra/newview/llpanellogin.h @@ -49,14 +49,8 @@ public:  				void *callback_data);  	~LLPanelLogin(); -	virtual BOOL handleKeyHere(KEY key, MASK mask); -	virtual void draw();  	virtual void setFocus( BOOL b ); -	// Show the XUI first name, last name, and password widgets.  They are -	// hidden on startup for reg-in-client -	static void showLoginWidgets(); -  	static void show(const LLRect &rect,  		void (*callback)(S32 option, void* user_data),   		void* callback_data); @@ -67,6 +61,7 @@ public:  	static BOOL areCredentialFieldsDirty();  	static void setLocation(const LLSLURL& slurl); +	static void autologinToLocation(const LLSLURL& slurl);  	/// Call when preferences that control visibility may have changed  	static void updateLocationSelectorsVisibility(); @@ -86,14 +81,21 @@ public:  	/// to be called from LLStartUp::setStartSLURL  	static void onUpdateStartSLURL(const LLSLURL& new_start_slurl); +	// called from prefs when initializing panel +	static bool getShowFavorites(); +  private:  	friend class LLPanelLoginListener; -	void reshapeBrowser();  	void addFavoritesToStartLocation();  	void addUsersWithFavoritesToUsername(); +	void onLocationEditChanged(LLUICtrl* ctrl); +	void onSelectFavorite();  	void onSelectServer();  	void onLocationSLURL(); +	static void onClickConnectLast(void*); +	static void onClickConnectFavorite(void*); +	static void onClickConnectLocation(void*);  	static void onClickConnect(void*);  	static void onClickNewAccount(void*);  	static void onClickVersion(void*); @@ -103,16 +105,23 @@ private:  	static void updateServerCombo();  private: -	LLPointer<LLUIImage> mLogoImage;  	boost::scoped_ptr<LLPanelLoginListener> mListener; +	void updateLoginButtons(); +  	void			(*mCallback)(S32 option, void *userdata);  	void*			mCallbackData;  	BOOL            mPasswordModified; +	bool			mShowFavorites;  	static LLPanelLogin* sInstance;  	static BOOL		sCapslockDidNotification; +	bool			mFirstLoginThisInstall; +	bool mFavoriteSelected; +	unsigned int mUsernameLength; +	unsigned int mPasswordLength; +	unsigned int mLocationLength;  };  #endif diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 56fac3b092..03d13018f6 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1891,19 +1891,6 @@ bool idle_startup()  		display_startup(); -		// based on the comments, we've successfully logged in so we can delete the 'forced' -		// URL that the updater set in settings.ini (in a mostly paranoid fashion) -		std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" ); -		if ( nextLoginLocation.length() ) -		{ -			// clear it -			gSavedSettings.setString( "NextLoginLocation", "" ); - -			// and make sure it's saved -			gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile") , TRUE ); -			LLUIColorTable::instance().saveUserSettings(); -		}; -  		display_startup();  		// JC: Initializing audio requests many sounds for download.  		init_audio(); @@ -2035,7 +2022,7 @@ bool idle_startup()  	{  		display_startup();  		F32 timeout_frac = timeout.getElapsedTimeF32()/PRECACHING_DELAY; -		 +  		// We now have an inventory skeleton, so if this is a user's first  		// login, we can start setting up their clothing and avatar   		// appearance.  This helps to avoid the generic "Ruth" avatar in @@ -2129,20 +2116,20 @@ bool idle_startup()  				&& gAgentAvatarp->isFullyLoaded())  			{  				LL_DEBUGS("Avatar") << "avatar fully loaded" << LL_ENDL; -				LLStartUp::setStartupState( STATE_CLEANUP ); +			LLStartUp::setStartupState( STATE_CLEANUP );  				return TRUE;  			}  		}  		else  		{ -			// OK to just get the wearables +		// OK to just get the wearables  			if ( gAgentWearables.areWearablesLoaded() ) -			{ -				// We have our clothing, proceed. +		{ +			// We have our clothing, proceed.  				LL_DEBUGS("Avatar") << "wearables loaded" << LL_ENDL; -				LLStartUp::setStartupState( STATE_CLEANUP ); +			LLStartUp::setStartupState( STATE_CLEANUP );  				return TRUE; -			} +		}  		}  		//fall through this frame to STATE_CLEANUP  	} diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index d4df1ee71c..0eb9bbecb7 100755 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -487,6 +487,11 @@ with the same filename but different name    <texture name="PushButton_Selected_Press" file_name="widgets/PushButton_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />    <texture name="PushButton_Selected_Disabled" file_name="widgets/PushButton_Selected_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> +  <texture name="PushButton_Login" file_name="widgets/PushButton_Login.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> +  <texture name="PushButton_Login_Over" file_name="widgets/PushButton_Login_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> +  <texture name="PushButton_Login_Pressed" file_name="widgets/PushButton_Login_Pressed.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> + +    <texture name="RadioButton_Press" file_name="widgets/RadioButton_Press.png" preload="true" />    <texture name="RadioButton_On_Press" file_name="widgets/RadioButton_On_Press.png" preload="true" />    <texture name="RadioButton_Off" file_name="widgets/RadioButton_Off.png" preload="true" /> @@ -575,6 +580,11 @@ with the same filename but different name    <texture name="startup_logo"  file_name="windows/startup_logo.png" preload="true" /> +  <texture name="login_sl_logo"  file_name="windows/login_sl_logo.png" preload="true" /> +  <texture name="login_sl_logo_small"  file_name="windows/login_sl_logo_small.png" preload="true" /> +  <texture name="first_login_image_left"  file_name="windows/first_login_image_left.png" preload="true" /> +  <texture name="first_login_image_right"  file_name="windows/first_login_image_right.png" preload="true" /> +    <texture name="Stepper_Down_Off" file_name="widgets/Stepper_Down_Off.png" preload="false" />    <texture name="Stepper_Down_Press" file_name="widgets/Stepper_Down_Press.png" preload="false" />    <texture name="Stepper_Up_Off" file_name="widgets/Stepper_Up_Off.png" preload="false" /> diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Login.png b/indra/newview/skins/default/textures/widgets/PushButton_Login.pngBinary files differ new file mode 100644 index 0000000000..6f8b5a0770 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/PushButton_Login.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Login_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_Login_Over.pngBinary files differ new file mode 100644 index 0000000000..e9e8af13d4 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/PushButton_Login_Over.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Login_Pressed.png b/indra/newview/skins/default/textures/widgets/PushButton_Login_Pressed.pngBinary files differ new file mode 100644 index 0000000000..4a9f1052b3 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/PushButton_Login_Pressed.png diff --git a/indra/newview/skins/default/textures/windows/first_login_image_left.png b/indra/newview/skins/default/textures/windows/first_login_image_left.pngBinary files differ new file mode 100644 index 0000000000..b405a88245 --- /dev/null +++ b/indra/newview/skins/default/textures/windows/first_login_image_left.png diff --git a/indra/newview/skins/default/textures/windows/first_login_image_right.png b/indra/newview/skins/default/textures/windows/first_login_image_right.pngBinary files differ new file mode 100644 index 0000000000..22a6dd8a53 --- /dev/null +++ b/indra/newview/skins/default/textures/windows/first_login_image_right.png diff --git a/indra/newview/skins/default/textures/windows/login_sl_logo.png b/indra/newview/skins/default/textures/windows/login_sl_logo.pngBinary files differ new file mode 100644 index 0000000000..9810d00237 --- /dev/null +++ b/indra/newview/skins/default/textures/windows/login_sl_logo.png diff --git a/indra/newview/skins/default/textures/windows/login_sl_logo_small.png b/indra/newview/skins/default/textures/windows/login_sl_logo_small.pngBinary files differ new file mode 100644 index 0000000000..0a245442d5 --- /dev/null +++ b/indra/newview/skins/default/textures/windows/login_sl_logo_small.png diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index bee570d5d0..7addc71f52 100755 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -59,10 +59,10 @@            <stat_bar name="ktrissec"                      label="KTris per Sec"                      stat="trianglesdrawnstat"/> -          <stat_bar name="objs" +          <stat_bar name="totalobjs"                      label="Total Objects"                      stat="numobjectsstat"/> -					<stat_bar name="objs" +					<stat_bar name="cachedobjs"                      label="Cached Objects"                      stat="numactivecachedobjects"/>  					<stat_bar name="newobjs" diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index a87027a113..9885e37cea 100755 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -68,6 +68,7 @@               left="0"               follows="all"               height="500" +             layout="topleft"               mouse_opaque="false"               name="login_panel_holder"               width="1024"/> diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index 134ca75018..a258a874b0 100755 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -1,265 +1,214 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel -    follows="all" -    height="600" -    layout="topleft" -    left="0" -    name="panel_login" -    focus_root="true"  -    top="600" -    width="1130"> -  <string name="reg_in_client_url" translate="false"> -    http://secondlife.eniac15.lindenlab.com/reg-in-client/ -  </string> +  follows="all" +  height="768" +  layout="topleft" +  name="panel_login" +  focus_root="true" +  background_visible="true" +  bg_opaque_color="0.16 0.16 0.16 1" +  background_opaque="true" +  width="1024">    <panel.string -      name="forgot_password_url"> +    name="forgot_password_url">      http://secondlife.com/account/request.php    </panel.string> -  <!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp --> -  <web_browser -      tab_stop="false"  -      trusted_content="true"  -      bg_opaque_color="Black" -      border_visible="false" -      bottom="600" -      follows="all" -      left="0" -      name="login_html" -      start_url="" -      top="0" -      height="600" -      width="996"/>    <layout_stack -      animate="false" -      clip="false" -      follows="left|bottom|right" -      name="login_widgets" -      layout="topleft" -      orientation="horizontal" -      top="519" -      width="1130" -      height="80"> -    <layout_panel -        auto_resize="false" -        follows="left|bottom" -        name="login" -        layout="topleft" -        width="310" -        min_width="310" -        height="80"> -      <text -          follows="left|bottom" -          font="SansSerif" -          font.style="BOLD" -          font.size="Large" -          height="16" -          name="log_in_text" -          top="8" -          left="15" -          width="150"> -        LOG IN -      </text> -      <text -          follows="left|bottom" -          font="SansSerifSmall" -          height="16" -          name="username_text" -          top="35" -          left="15" -          width="150"> -        Username: -      </text> -      <!-- STEAM-14: Turn off commit_on_focus_lost so if user presses Enter -           with focus in this combo_box, we can use commit action to initiate -           login --> -      <combo_box -          allow_text_entry="true" -          follows="left|bottom" -          height="22" -          left_delta="0" -          max_chars="128" -          commit_on_focus_lost="false" -          combo_editor.prevalidate_callback="ascii" -          tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine" -          top_pad="0" -          name="username_combo" -          width="178"> -<!-- empirically, displayed width is 150 anyway?!? --> -        <combo_box.combo_button -            visible ="false"/> -        <combo_box.drop_down_button -            visible ="false"/> -      </combo_box> -<!-- left="175" based on actual "username_combo" width of 150 vs. 178 --> -      <text -          follows="left|bottom" -          font="SansSerifSmall" -          height="16" -          name="password_text" -          top="35" -          left="175" -          width="150"> -        Password: -      </text> -      <!-- STEAM-14: Turn off commit_on_focus_lost so if user presses Enter -           with focus in this line_editor, we can use commit action to -           initiate login --> -      <line_editor -          follows="left|bottom" -          height="22" -          max_length_bytes="16" -          name="password_edit" -          is_password="true"  -          select_on_focus="true" -          commit_on_focus_lost="false" -          top_pad="0" -          width="135" /> -    </layout_panel> -    <layout_panel -        auto_resize="false" -        follows="left|bottom" -        name="start_location_panel" -        layout="topleft" -        width="175" -        min_width="175" -        height="80"> -      <text -          follows="left|bottom" -          font="SansSerifSmall" -          height="16" -          left="10" -          name="start_location_text" -          top="35" -          width="130"> -        Start at: -      </text> -      <combo_box -          allow_text_entry="true" -          control_name="NextLoginLocation" -          follows="left|bottom" -          height="22" -          max_chars="128" -          top_pad="0" -          name="start_location_combo" -          width="165"> -        <combo_box.item -            label="My last location" -            name="MyLastLocation" -            value="last" /> -        <combo_box.item -            label="My home" -            name="MyHome" -            value="home" /> -        <combo_box.item -            label="<Type region name>" -            name="Typeregionname"   value="" /> -      </combo_box> -    </layout_panel> +  follows="left|right|top" +  height="172" +  min_height="172" +  left="0" +  name="ui_stack" +  orientation="horizontal" +  top="0" +  width="1024">      <layout_panel -        auto_resize="false" -        follows="left|bottom" -        name="grid_panel" -        layout="topleft" -        width="145" -        height="80" -        visible="false"> -      <combo_box -          allow_text_entry="false" -          font="SansSerifSmall" -          follows="left|right|bottom" -          height="23" -          max_chars="256" -          left="10" -          top="51" -          layout="topleft" -          top_pad="2" -          name="server_combo" -          width="135" /> -    </layout_panel> +      height="172" +      auto_resize="true" +      name="ui_elastic_pad_left" +      width="32" />      <layout_panel -        auto_resize="false" -        follows="left|bottom" -        name="links_login_panel" -        layout="topleft" -        width="290" -        height="80"> -      <text -          follows="left|bottom" -          font="SansSerifSmall" -          text_color="EmphasisColor" -          left="10" -          height="16" -          name="login_help" -          top="19" -          width="280"> -        Need help logging in? -      </text> -      <text -          follows="left|bottom" -          font="SansSerifSmall" -          text_color="EmphasisColor" -          height="16" -          name="forgot_password_text" -          top="35" -          width="280"> -        Forgot your username or password? -      </text> -      <button -          follows="left|bottom" -          top_pad="0" -          height="23" -          image_unselected="PushButton_On" -          image_selected="PushButton_On_Selected" -          label="Log In" -          label_color="White" -          layout="topleft" -          name="connect_btn" -          width="90" /> -      <check_box -          control_name="RememberPassword" -          follows="left|bottom" -          font="SansSerifSmall" -          left="110" -          top="56" -          height="16" -          label="Remember password" -          top_pad="3" -          name="remember_check" -          width="145" /> +      auto_resize="false" +      follows="left|right|top" +      name="ui_container" +      width="960" +      left="0" +      top="0" +      height="172"> +  <icon +    height="73" +    width="165" +    image_name="login_sl_logo" +    left="0" +    top="25" +    name="sl_logo_small" /> +  <combo_box +    left_pad="22" +    bottom_delta="-7" +    allow_text_entry="true" +    follows="left|top" +    height="32" +    label="Username" +    combo_editor.font="SansSerifLarge" +    max_chars="128" +    commit_on_focus_lost="false" +    combo_editor.prevalidate_callback="ascii" +    tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine" +    name="username_combo" +    width="232"> +    <combo_box.combo_editor +      text_pad_left="8" /> +    <combo_box.combo_button +      visible="false" /> +    <combo_box.drop_down_button +      visible="false" /> +  </combo_box> +  <line_editor +    follows="left|top" +    height="32" +    left_pad="0" +    max_length_bytes="16" +    text_pad_left="8" +    name="password_edit" +    label="Password" +    font="SansSerifLarge" +    is_password="true" +    select_on_focus="true" +    commit_on_focus_lost="false" +    bottom_delta="0" +    width="200" /> +  <check_box +    control_name="RememberPassword" +    follows="left|top" +    font="SansSerifMedium" +    left_pad="20" +    bottom_delta="-14" +    height="24" +    label="Remember me" +    check_button.bottom="3" +    name="remember_check" +    width="145" /> +  <text +    follows="left|top" +    font="SansSerifMedium" +    text_color="EmphasisColor" +    height="16" +    name="forgot_password_text" +    left_delta="0" +    bottom_delta="16" +    width="200"> +    Forgotten password +  </text> +  <button +    follows="left|top" +    image_unselected="PushButton_Login" +    image_pressed="PushButton_Login_Pressed" +    image_hover="PushButton_Login_Over" +    label="Log In" +    label_color="White" +    font="SansSerifMedium" +    name="connect_btn" +    enabled="true" +    left="0" +    width="80" +    height="26" +    bottom_delta="44" /> +  <text +    follows="left|top" +    font="SansSerifLarge" +    height="24" +    name="At_My_Last_Location_Label" +    left_pad="8" +    bottom_delta="1" +    width="120"> +    at last location +  </text> +  <combo_box +    control_name="NextLoginLocation" +    follows="left|top" +    label="My favorite places" +    height="26" +    max_chars="128" +    combo_editor.font="SansSerifMedium" +    left_pad="20" +    bottom_delta="0" +    name="start_location_combo" +    width="175" +    combo_button.scale_image="true"> +    <combo_box.item +      label="My home" +      name="MyHome" +      value="home" /> +  </combo_box> +  <button +    follows="left|top" +    image_unselected="PushButton_Login" +    image_pressed="PushButton_Login_Pressed" +    image_hover="PushButton_Login_Over" +    label="Log In" +    label_color="White" +    font="SansSerifMedium" +    name="connect_favorite_btn" +    left_pad="8" +    width="80" +    enabled="false" +    height="26" +    bottom_delta="0" /> +  <line_editor +    follows="left|top" +    width="170" +    height="26" +    left_pad="40" +    text_pad_left="8" +    name="location_edit" +    label="Type a location" +    font="SansSerifMedium" +    select_on_focus="true" +    commit_on_focus_lost="false" +    bottom_delta="0" /> +  <button +    follows="left|top" +    image_unselected="PushButton_Login" +    image_pressed="PushButton_Login_Pressed" +    image_hover="PushButton_Login_Over" +    label="Log In" +    enabled="false" +    label_color="White" +    font="SansSerifMedium" +    name="connect_location_btn" +    left_pad="8" +    width="80" +    height="26" +    bottom_delta="0" /> +  <combo_box +    allow_text_entry="false" +    font="SansSerifTiny" +    follows="left|top" +    height="26" +    max_chars="128" +    label="Select grid" +    left_pad="40" +    bottom_delta="0" +    layout="topleft" +    top_pad="2" +    name="server_combo" +    width="128" />      </layout_panel>      <layout_panel -        tab_stop="false" -        follows="right|bottom" -        name="links"  -        width="210" -        min_width="100" -        height="80"> -      <text -          follows="right|bottom" -          font="SansSerif" -          font.style="BOLD" -          font.size="Large" -          halign="right" -          height="16" -          name="create_account_text" -          top="8" -          right="-15" -          width="200"> -        CREATE YOUR ACCOUNT -      </text> -      <button -          follows="right|bottom" -          top="35" -          right="-15" -          height="23" -          image_unselected="PushButton_On" -          image_selected="PushButton_On_Selected" -          label="Start now" -          label_color="White" -          layout="topleft" -          left_pad="10" -          name="create_new_account_btn" -          width="90" /> -    </layout_panel> +      height="172" +      auto_resize="true" +      name="ui_elastic_pad_right" +      width="32" />    </layout_stack> +  <web_browser +    tab_stop="false" +    trusted_content="true" +    bg_opaque_color="Black" +    border_visible="false" +    follows="all" +    left="0" +    name="login_html" +    start_url="" +    top="154" +    height="600" +    width="1024" />  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_login_first.xml b/indra/newview/skins/default/xui/en/panel_login_first.xml new file mode 100644 index 0000000000..84753c55a3 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_login_first.xml @@ -0,0 +1,265 @@ +<panel +  follows="all" +  height="768" +  layout="topleft" +  name="panel_login" +  focus_root="true" +  background_visible="true" +  bg_opaque_color="0.16 0.16 0.16 1" +  background_opaque="true" +  width="1024"> +  <panel.string +    name="forgot_password_url"> +    http://secondlife.com/account/request.php +  </panel.string> +  <layout_stack +    follows="left|right|top|bottom" +    width="1024" +    height="768" +    left="0" +    name="logo_stack" +    orientation="vertical" +    top="0"> +    <layout_panel +      height="18" +      auto_resize="false" +      name="page_top" +      width="1024" /> +    <!-- start of logo stack --> +    <layout_panel +      height="130" +      min_height="10" +      auto_resize="false" +      name="parent_panel" +      width="1024"> +      <layout_stack +        follows="left|right|top|bottom" +        height="100" +        left="0" +        name="logo_stack" +        orientation="horizontal" +        top="0" +        width="1024"> +        <layout_panel +          height="110" +          min_height="10" +          auto_resize="true" +          name="logo_left" +          width="300" /> +        <layout_panel +          auto_resize="false" +          follows="left|right|top" +          name="logo_container" +          width="225" +          left="0" +          top="0" +          height="105"> +          <icon +            height="94" +            image_name="login_sl_logo" +            left="0" +            name="sl_logo" +            top="0" /> +        </layout_panel> +        <layout_panel +          height="100" +          name="logo_right" +          auto_resize="true" +          width="300" /> +      </layout_stack> +    </layout_panel> +    <!-- end of logo stack --> +    <!-- start of widget stack --> +    <layout_panel +      height="100" +      min_height="10" +      auto_resize="false" +      name="parent_panel2" +      width="1024"> +      <layout_stack +        follows="left|right|top|bottom" +        height="80" +        left="0" +        name="widget_stack" +        orientation="horizontal" +        top="0" +        width="1024"> +        <layout_panel +          height="80" +          min_height="10" +          auto_resize="true" +          name="widget_left" +          width="200" /> +        <layout_panel +          auto_resize="false" +          follows="left|right|top" +          name="widget_container" +          width="532" +          left="0" +          top="0" +          height="80"> +          <combo_box +            allow_text_entry="true" +            follows="left|bottom" +            height="32" +            left="0" +            label="Username" +            combo_editor.font="SansSerifLarge" +            max_chars="128" +            top="0" +            commit_on_focus_lost="false" +            combo_editor.prevalidate_callback="ascii" +            tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine" +            name="username_combo" +            width="232"> +            <combo_box.combo_editor +                text_pad_left="8" /> +            <combo_box.combo_button +                visible ="false"/> +              <combo_box.drop_down_button +                visible ="false"/> +          </combo_box> +          <line_editor +            follows="left|top" +            width="200" +            height="32" +            left="220" +            max_length_bytes="16" +            name="password_edit" +            label="Password" +            text_pad_left="8" +            font="SansSerifLarge" +            is_password="true" +            select_on_focus="true" +            commit_on_focus_lost="false" +            top="0" /> +          <button +            follows="left|top" +            image_unselected="PushButton_Login" +            image_pressed="PushButton_Login_Pressed" +            image_hover="PushButton_Login_Over" +            label="Log In" +            label_color="White" +            font="SansSerifLarge" +            name="connect_btn" +            left="432" +            width="100" +            height="32" +            top="0" /> +          <check_box +            control_name="RememberPassword" +            follows="left|top" +            font="SansSerifLarge" +            left="0" +            top="32" +            height="24" +            label="Remember me" +            check_button.bottom="3" +            name="remember_check" +            width="145" /> +          <text +            follows="left|top" +            font="SansSerifLarge" +            text_color="EmphasisColor" +            height="16" +            name="forgot_password_text" +            left="216" +            top="34" +            width="200"> +            Forgotten password +          </text> +        </layout_panel> +        <layout_panel +          height="100" +          name="widget_right" +          auto_resize="true" +          width="200" /> +      </layout_stack> +    </layout_panel> +    <!-- end of widget stack --> +    <!-- start of images stack --> +    <layout_panel +      height="500" +      min_height="10" +      auto_resize="false" +      name="parent_panel3" +      width="1024"> +      <layout_stack +        follows="left|right|top|bottom" +        height="500" +        left="0" +        name="images_stack" +        orientation="horizontal" +        top="0" +        width="1024"> +        <layout_panel +          height="500" +          min_height="10" +          auto_resize="true" +          name="images_left" +          width="96" /> +        <layout_panel +          auto_resize="false" +          follows="left|right|top" +          name="images_container" +          width="832" +          left="0" +          top="0" +          height="500"> +          <icon +            height="400" +            width="400" +            image_name="first_login_image_left" +            left="0" +            name="image_left" +            top="0" /> +          <icon +            height="400" +            width="400" +            image_name="first_login_image_right" +            left_pad="32" +            name="image_right" +            top="0" /> +          <text +            follows="left|top" +            font="SansSerifLarge" +            text_color="White" +            height="64" +            name="image_caption_left" +            left="0" +            halign="center" +            top="408" +            word_wrap="true" +            width="400"> +            Your first step is Learning Island. Find the exit portal! +          </text> +          <text +            follows="left|top" +            font="SansSerifLarge" +            text_color="White" +            height="64" +            name="image_caption_right" +            left="432" +            halign="center" +            top="408" +            word_wrap="true" +            width="400"> +            Then explore Social Island and meet other new residents! +          </text> +        </layout_panel> +        <layout_panel +          height="100" +          name="images_right" +          auto_resize="true" +          width="96" /> +      </layout_stack> +    </layout_panel> +    <!-- end of images stack --> +    <layout_panel +      height="400" +      min_height="10" +      auto_resize="true" +      name="page_bottom" +      width="1024" /> +  </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index ea0f7d8593..9da044ab64 100755 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -179,46 +179,29 @@       left_pad="2"       name="rating_icon_adult"       width="18"/> -    <text -     type="string" -     length="1" -     follows="left|top" -     height="15" -     layout="topleft" -     left="30" -     name="start_location_textbox" -     top_pad="8" -     width="394"> -        Start location: -    </text> -    <combo_box -     control_name="LoginLocation" -     follows="left|top" -     height="23" -     layout="topleft" -     name="start_location_combo" -     left="50" -     width="200"> -        <combo_box.item -         label="My Last Location" -         name="MyLastLocation" -         value="last" /> -        <combo_box.item -         label="My Home" -         name="MyHome" -         value="home" /> -    </combo_box> -    <check_box -     control_name="ShowStartLocation" -     height="16" -     initial_value="true" -     label="Show on login" -     layout="topleft" -     left_pad="5" -     name="show_location_checkbox" -     top_delta="5" -     width="256" /> -   <text +     <check_box +       control_name="ShowFavoritesOnLogin" +       enabled="false"  +       height="16" +       layout="topleft" +       label="Show favorite locations on login screen" +       left="30" +       name="favorites_on_login_check" +       top_pad="10" +       width="350" /> +  <text +   type="string" +   length="1" +   follows="left|top" +   height="15" +   layout="topleft" +   left="52" +   name="favorites_check_extra_text" +   top_pad="0" +   width="400"> +    (Others using this computer will also see them) +  </text> +  <text      type="string"      length="1"      follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index 78743d26bb..05a63ea725 100755 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -74,17 +74,6 @@       name="auto_disengage_mic_check"       top_pad="10"       width="350" /> -    <check_box -     control_name="ShowFavoritesOnLogin" -     enabled="false"  -     height="16" -     layout="topleft" -     label="Show my Favorite Landmarks at Login (via 'Start At' drop-down menu)" -     left="30" -     name="favorites_on_login_check" -     top_pad="10" -     width="350" /> -      <button       follows="left|bottom"       height="23" diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml index 82d620d1e6..65f9a143e9 100755 --- a/indra/newview/skins/default/xui/en/widgets/combo_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml @@ -7,7 +7,7 @@    <combo_box.combo_button name="Combobox Button"                            hover_glow_amount="0.15"                            font="SansSerifSmall" -                          scale_image="false" +                          scale_image="true"                            image_unselected="ComboButton_Off"                            image_selected="ComboButton_Selected"                            image_disabled="ComboButton_Disabled" /> diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index f7b3a45e8d..965080c74b 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -764,7 +764,7 @@ class Darwin_i386_Manifest(ViewerManifest):                                  'SLVoice',                                  ):                       self.path2basename(libdir, libfile) - +                                  # dylibs that vary based on configuration                  if self.args['configuration'].lower() == 'debug':                      for libfile in ( | 
