diff options
23 files changed, 818 insertions, 471 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 000362ebfd..e58fc01918 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4181,6 +4181,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> @@ -5314,6 +5325,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> @@ -6118,16 +6141,16 @@ <integer>0</integer> </map> <key>MemoryLogFrequency</key> - <map> - <key>Comment</key> - <string>Seconds between display of Memory in log (0 for never)</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> + <map> + <key>Comment</key> + <string>Seconds between display of Memory in log (0 for never)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> <real>30.0</real> - </map> + </map> <key>MemoryPrivatePoolEnabled</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 6e47cbb09f..d3773767d0 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -756,6 +756,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(); @@ -1609,6 +1619,7 @@ void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im getChildView("chat_font_size")->setEnabled(TRUE); } + void LLFloaterPreference::refreshUI() { refresh(); @@ -1901,6 +1912,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 e287631b1a..7bf6ae7d79 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..64bdcf7085 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()) @@ -418,10 +445,10 @@ void LLPanelLogin::showLoginWidgets() // It seems to be part of the defunct? reg-in-client project. sInstance->getChildView("login_widgets")->setVisible( true); LLMediaCtrl* web_browser = sInstance->getChild<LLMediaCtrl>("login_html"); - 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..aa63ffabfc 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(); @@ -75,6 +70,8 @@ public: void setSiteIsAlive( bool alive ); + void showLoginWidgets(); + static void loadLoginPage(); static void giveFocus(); static void setAlwaysRefresh(bool refresh); @@ -86,14 +83,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 +107,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 0c282a19a5..5fcb5eef92 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(); diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 46698b3949..1f10d966d5 100755 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -489,6 +489,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" /> @@ -577,6 +582,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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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 d7ffb73dda..323da2be38 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" /> |