void LLPanelLogin::setSiteIsAlive( bool alive ) { LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html"); // if the contents of the site was retrieved if ( alive ) { if ( web_browser ) { loadLoginPage(); // mark as available mHtmlAvailable = TRUE; } } else // the site is not available (missing page, server down, other badness) { if ( web_browser ) { // hide browser control (revealing default one) web_browser->setVisible( FALSE ); // mark as unavailable mHtmlAvailable = FALSE; } } }
void FSPanelLogin::updateServer() { if (!sInstance) { return; } try { // if they've selected another grid, we should load the credentials // for that grid and set them to the UI. if(!sInstance->areCredentialFieldsDirty()) { LLPointer<LLCredential> credential = gSecAPIHandler->loadCredential(credentialName()); sInstance->setFields(credential); } // grid changed so show new splash screen (possibly) updateServerCombo(); loadLoginPage(); #ifdef OPENSIM sInstance->getChild<LLLineEditor>("password_edit")->setMaxTextLength(LLGridManager::getInstance()->isInSecondLife() ? MAX_PASSWORD_SL : MAX_PASSWORD_OPENSIM); #endif } catch (LLInvalidGridName ex) { LL_WARNS("AppInit") << "server '" << ex.name() << "' selection failed"<<LL_ENDL; LLSD args; args["GRID"] = ex.name(); LLNotificationsUtil::add("InvalidGrid", args); return; } }
// static void LLPanelLogin::onSelectServer(LLUICtrl* ctrl, void*) { // *NOTE: The paramters for this method are ignored. // LLPanelLogin::onServerComboLostFocus(LLFocusableElement* fe, void*) // calls this method. // The user twiddled with the grid choice ui. // apply the selection to the grid setting. std::string grid_label; //S32 grid_index; LLComboBox* combo = sInstance->getChild<LLComboBox>("server_combo"); LLSD combo_val = combo->getValue(); std::string mCurGrid = ctrl->getValue().asString(); //KOW gHippoGridManager->setCurrentGrid(mCurGrid); // HippoGridInfo *gridInfo = gHippoGridManager->getGrid(mCurGrid); // if (gridInfo) { // //childSetText("gridnick", gridInfo->getGridNick()); // //platform->setCurrentByIndex(gridInfo->getPlatform()); // //childSetText("gridname", gridInfo->getGridName()); // LLPanelLogin::setFields( gridInfo->getFirstName(), gridInfo->getLastName(), gridInfo->getAvatarPassword(), 1 ); // } llwarns << "current grid = " << mCurGrid << llendl; // grid changed so show new splash screen (possibly) loadLoginPage(); // save grid choice to settings gSavedSettings.setString("LastSelectedGrid", mCurGrid); }
void LLPanelLogin::updateServer() { try { updateServerCombo(); // if they've selected another grid, we should load the credentials // for that grid and set them to the UI. // WS: We're not using Gridbased logins, but the loginmanager! if(sInstance) { loadLoginPage(); updateLocationCombo(LLStartUp::getStartSLURL().getType() == LLSLURL::LOCATION); } } catch (LLInvalidGridName ex) { LL_WARNS("AppInit")<<"server '"<<ex.name()<<"' selection failed"<<LL_ENDL; LLSD args; args["GRID"] = ex.name(); LLNotificationsUtil::add("InvalidGrid", args); return; } }
// static void LLPanelLogin::refreshLocation( bool force_visible ) { if (!sInstance) return; #if USE_VIEWER_AUTH loadLoginPage(); #else LLComboBox* combo = sInstance->getChild<LLComboBox>("start_location_combo"); if (LLURLSimString::parse()) { combo->setCurrentByIndex( 3 ); // BUG? Maybe 2? combo->setTextEntry(LLURLSimString::sInstance.mSimString); } else { BOOL login_last = gSavedSettings.getBOOL("LoginLastLocation"); combo->setCurrentByIndex( login_last ? 1 : 0 ); } BOOL show_start = TRUE; if ( ! force_visible ) show_start = gSavedSettings.getBOOL("ShowStartLocation"); // [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-08 (RLVa-1.0.0e) // TODO-RLVa: figure out some way to make this work with RLV_EXTENSION_STARTLOCATION #ifndef RLV_EXTENSION_STARTLOCATION if (rlv_handler_t::isEnabled()) { show_start = FALSE; } #endif // RLV_EXTENSION_STARTLOCATION // [/RLVa:KB] // OGPX : if --ogp on the command line (or --set OpenGridProtocol TRUE), then // the start location is hidden, and regionuri shows in its place. // "Home", and "Last" have no meaning in OGPX, so it's OK to not have the start_location combo // box unavailable on the menu panel. if (gSavedSettings.getBOOL("OpenGridProtocol")) { sInstance->childSetVisible("start_location_combo", FALSE); // hide legacy box sInstance->childSetVisible("start_location_text", TRUE); // when OGPX always show location sInstance->childSetVisible("regionuri_edit",TRUE); // show regionuri box if OGPX } else { sInstance->childSetVisible("start_location_combo", show_start); // maintain ShowStartLocation if legacy sInstance->childSetVisible("start_location_text", show_start); sInstance->childSetVisible("regionuri_edit",FALSE); // Do Not show regionuri box if legacy } BOOL show_server = sInstance->mShowServerCombo || gSavedSettings.getBOOL("ForceShowGrid"); sInstance->childSetVisible("server_combo", show_server); #endif }
VKAuth::VKAuth(QString app,QWidget* parent) : QWebView(parent) { QObject::connect(this, SIGNAL( urlChanged(QUrl) ), SLOT( slotLinkChanged(QUrl) ) ); m_app = app; loadLoginPage(); }
// static void LLPanelLogin::refreshLocation( bool force_visible ) { if (!sInstance) return; #if USE_VIEWER_AUTH loadLoginPage(); #else LLComboBox* combo = sInstance->getChild<LLComboBox>("start_location_combo"); if (LLURLSimString::parse()) { combo->setCurrentByIndex( 3 ); // BUG? Maybe 2? combo->setTextEntry(LLURLSimString::sInstance.mSimString); } else { BOOL login_last = gSavedSettings.getBOOL("LoginLastLocation"); combo->setCurrentByIndex( login_last ? 1 : 0 ); } BOOL show_start = TRUE; if ( ! force_visible ) show_start = gSavedSettings.getBOOL("ShowStartLocation"); // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) // TODO-RLVa: figure out some way to make this work with RLV_EXTENSION_STARTLOCATION #ifndef RLV_EXTENSION_STARTLOCATION if (rlv_handler_t::isEnabled()) { show_start = FALSE; } #endif // RLV_EXTENSION_STARTLOCATION // [/RLVa:KB] sInstance->childSetVisible("start_location_combo", show_start); sInstance->childSetVisible("start_location_text", show_start); /*#if LL_RELEASE_FOR_DOWNLOAD BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid"); sInstance->childSetVisible("server_combo", show_server); #else*/ sInstance->childSetVisible("server_combo", TRUE); //#endif #endif }
void LLPanelLogin::updateServer() { updateServerCombo(); // if they've selected another grid, we should load the credentials // for that grid and set them to the UI. if(sInstance && !sInstance->areCredentialFieldsDirty()) { LLPointer<LLCredential> credential = gSecAPIHandler->loadCredential(LLGridManager::getInstance()->getGrid()); bool remember = sInstance->getChild<LLUICtrl>("remember_check")->getValue(); sInstance->setFields(credential, remember); } // grid changed so show new splash screen (possibly) loadLoginPage(); updateLocationCombo(LLStartUp::getStartSLURL().getType() == LLSLURL::LOCATION); }
// static void LLPanelLogin::onSelectServer(LLUICtrl*, void*) { // *NOTE: The paramters for this method are ignored. // LLPanelLogin::onServerComboLostFocus(LLFocusableElement* fe, void*) // calls this method. // The user twiddled with the grid choice ui. // apply the selection to the grid setting. std::string grid_label; S32 grid_index; LLComboBox* combo = sInstance->getChild<LLComboBox>("server_combo"); LLSD combo_val = combo->getValue(); if (LLSD::TypeInteger == combo_val.type()) { grid_index = combo->getValue().asInteger(); if ((S32)GRID_INFO_OTHER == grid_index) { // This happens if the user specifies a custom grid // via command line. grid_label = combo->getSimple(); } } else { // no valid selection, return other grid_index = (S32)GRID_INFO_OTHER; grid_label = combo_val.asString(); } // This new seelction will override preset uris // from the command line. LLViewerLogin* vl = LLViewerLogin::getInstance(); vl->resetURIs(); if(grid_index != GRID_INFO_OTHER) { vl->setGridChoice((EGridInfo)grid_index); } else { vl->setGridChoice(grid_label); } // grid changed so show new splash screen (possibly) loadLoginPage(); }
// static void LLPanelLogin::refreshLocation( bool force_visible ) { if (!sInstance) return; #if USE_VIEWER_AUTH loadLoginPage(); #else LLComboBox* combo = sInstance->getChild<LLComboBox>("start_location_combo"); if (LLURLSimString::parse()) { combo->setCurrentByIndex( 3 ); // BUG? Maybe 2? combo->setTextEntry(LLURLSimString::sInstance.mSimString); } else { BOOL login_last = gSavedSettings.getBOOL("LoginLastLocation"); combo->setCurrentByIndex( login_last ? 1 : 0 ); } BOOL show_start = TRUE; if ( ! force_visible ) show_start = gSavedSettings.getBOOL("ShowStartLocation"); // [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-08 (RLVa-1.0.0e) // TODO-RLVa: figure out some way to make this work with RLV_EXTENSION_STARTLOCATION #ifndef RLV_EXTENSION_STARTLOCATION if (rlv_handler_t::isEnabled()) { show_start = FALSE; } #endif // RLV_EXTENSION_STARTLOCATION // [/RLVa:KB] sInstance->childSetVisible("start_location_combo", show_start); // maintain ShowStartLocation if legacy sInstance->childSetVisible("start_location_text", show_start); sInstance->childSetVisible("regionuri_edit",FALSE); // Do Not show regionuri box if legacy #endif }
void LLPanelLogin::setSiteIsAlive( bool alive ) { LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html"); // if the contents of the site was retrieved if ( alive ) { if ( web_browser ) { loadLoginPage(); web_browser->setVisible(true); // mark as available mHtmlAvailable = TRUE; } } else // the site is not available (missing page, server down, other badness) { #if !USE_VIEWER_AUTH if ( web_browser ) { // hide browser control (revealing default one) web_browser->setVisible( FALSE ); // mark as unavailable mHtmlAvailable = FALSE; } #else if ( web_browser ) { web_browser->navigateToLocalPage( "loading-error" , "index.html" ); // mark as available mHtmlAvailable = TRUE; } #endif } }
// static void LLPanelLogin::refreshLocation( bool force_visible ) { if (!sInstance) return; #if USE_VIEWER_AUTH loadLoginPage(); #else LLComboBox* combo = sInstance->getChild<LLComboBox>("start_location_combo"); if (LLURLSimString::parse()) { combo->setCurrentByIndex( 3 ); // BUG? Maybe 2? combo->setTextEntry(LLURLSimString::sInstance.mSimString); } else { BOOL login_last = gSavedSettings.getBOOL("LoginLastLocation"); combo->setCurrentByIndex( login_last ? 1 : 0 ); } BOOL show_start = TRUE; if ( ! force_visible ) show_start = gSavedSettings.getBOOL("ShowStartLocation"); sInstance->childSetVisible("start_location_combo", show_start); sInstance->childSetVisible("start_location_text", show_start); #if LL_RELEASE_FOR_DOWNLOAD // BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid"); // sInstance->childSetVisible("server_combo", show_server); sInstance->childSetVisible("server_combo", TRUE); // Kirsten Always show Grid Choices! #else sInstance->childSetVisible("server_combo", TRUE); #endif #endif }
void LLPanelLogin::setSiteIsAlive( bool alive ) { LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html"); // if the contents of the site was retrieved if ( alive ) { if ( web_browser ) { loadLoginPage(); web_browser->setVisible(true); } } else // the site is not available (missing page, server down, other badness) { if ( web_browser ) { // hide browser control (revealing default one) web_browser->setVisible( FALSE ); web_browser->navigateTo( "data:text/html,%3Chtml%3E%3Cbody%20bgcolor=%22#000000%22%3E%3C/body%3E%3C/html%3E", "text/html" ); } } }
// 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 (mLoginWidgets->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(); // <AW: opensim> std::string login_page = LLGridManager::getInstance()->getLoginPage(); if(mLoginPage != login_page) { mLoginPage = login_page; loadLoginPage(); } // </AW: opensim> LLPanel::draw(); }
// static void LLPanelLogin::updateGridCombo(std::string grid_nick) { LLComboBox* combo = sInstance->getChild<LLComboBox>("server_combo"); if (grid_nick.empty()) { // The user twiddled with the grid choice ui. // apply the selection to the grid setting. //std::string grid_label; //S32 grid_index; grid_nick = combo->getValue().asString(); // HippoGridInfo *gridInfo = gHippoGridManager->getGrid(mCurGrid); // if (gridInfo) { // //childSetText("gridnick", gridInfo->getGridNick()); // //platform->setCurrentByIndex(gridInfo->getPlatform()); // //childSetText("gridname", gridInfo->getGridName()); // LLPanelLogin::setFields( gridInfo->getFirstName(), gridInfo->getLastName(), gridInfo->getAvatarPassword(), 1 ); // } } else { combo->setSimple(grid_nick); } gHippoGridManager->setCurrentGrid(grid_nick); llinfos << "current grid set to " << grid_nick << llendl; // grid changed so show new splash screen (possibly) loadLoginPage(); // save grid choice to settings gSavedSettings.setString("LastSelectedGrid", grid_nick); }
//--------------------------------------------------------------------------- // Public methods //--------------------------------------------------------------------------- LLPanelLogin::LLPanelLogin(const LLRect &rect, BOOL show_server, void (*callback)(S32 option, void* user_data), void *cb_data) : LLPanel(), mLogoImage(), mCallback(callback), mCallbackData(cb_data), mListener(new LLPanelLoginListener(this)) { setBackgroundVisible(FALSE); setBackgroundOpaque(TRUE); // instance management if (LLPanelLogin::sInstance) { llwarns << "Duplicate instance of login view deleted" << llendl; // Don't leave bad pointer in gFocusMgr gFocusMgr.setDefaultKeyboardFocus(NULL); delete LLPanelLogin::sInstance; } mPasswordModified = FALSE; LLPanelLogin::sInstance = this; LLView* login_holder = gViewerWindow->getLoginPanelHolder(); if (login_holder) { login_holder->addChild(this); } // Logo mLogoImage = LLUI::getUIImage("startup_logo"); buildFromFile( "panel_login.xml"); reshape(rect.getWidth(), rect.getHeight()); getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this); // change z sort of clickable text to be behind buttons sendChildToBack(getChildView("forgot_password_text")); if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION) { LLSLURL slurl(gSavedSettings.getString("LoginLocation")); LLStartUp::setStartSLURL(slurl); } updateLocationCombo(false); LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo"); mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile")); mode_combo.setCommitCallback(boost::bind(&LLPanelLogin::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2)); LLComboBox* server_choice_combo = sInstance->getChild<LLComboBox>("server_combo"); server_choice_combo->setCommitCallback(onSelectServer, NULL); server_choice_combo->setFocusLostCallback(boost::bind(onServerComboLostFocus, _1)); updateServerCombo(); childSetAction("connect_btn", onClickConnect, this); getChild<LLPanel>("login")->setDefaultBtn("connect_btn"); std::string channel = LLVersionInfo::getChannel(); std::string version = llformat("%s (%d)", LLVersionInfo::getShortVersion().c_str(), LLVersionInfo::getBuild()); //LLTextBox* channel_text = getChild<LLTextBox>("channel_text"); //channel_text->setTextArg("[CHANNEL]", channel); // though not displayed //channel_text->setTextArg("[VERSION]", version); //channel_text->setClickedCallback(onClickVersion, this); LLTextBox* forgot_password_text = getChild<LLTextBox>("forgot_password_text"); forgot_password_text->setClickedCallback(onClickForgotPassword, NULL); LLTextBox* create_new_account_text = getChild<LLTextBox>("create_new_account_text"); create_new_account_text->setClickedCallback(onClickNewAccount, NULL); LLTextBox* need_help_text = getChild<LLTextBox>("login_help"); need_help_text->setClickedCallback(onClickHelp, NULL); // get the web browser control LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html"); web_browser->addObserver(this); reshapeBrowser(); loadLoginPage(); // Show last logged in user favorites in "Start at" combo. addUsersWithFavoritesToUsername(); getChild<LLComboBox>("username_combo")->setTextChangedCallback(boost::bind(&LLPanelLogin::addFavoritesToStartLocation, this)); updateLocationCombo(false); }
// static void LLPanelLogin::onSelectServer(LLUICtrl*, void*) { // *NOTE: The parameters for this method are ignored. // This function is only called by one thread, so we can use a static here. static bool looping; if (looping) return; looping = true; // LLPanelLogin::onServerComboLostFocus(LLFocusableElement* fe, void*) // calls this method. // The user twiddled with the grid choice ui. // apply the selection to the grid setting. std::string grid_name; S32 grid_index; LLComboBox* combo = sInstance->getChild<LLComboBox>("server_combo"); LLSD combo_val = combo->getValue(); if (LLSD::TypeInteger == combo_val.type()) { grid_index = combo->getValue().asInteger(); grid_name = combo->getSimple(); } else { // no valid selection, return other grid_index = (S32)GRID_INFO_OTHER; grid_name = combo_val.asString(); } // This new selection will override preset uris // from the command line. LLViewerLogin* vl = LLViewerLogin::getInstance(); if(grid_index != GRID_INFO_OTHER) { vl->setGridChoice((EGridInfo)grid_index); } else { vl->setGridChoice(grid_name); } // Find a saved login entry that uses this grid, if any. bool found = false; LLSavedLoginsList const& entries = sInstance->mLoginHistoryData.getEntries(); for (LLSavedLoginsList::const_reverse_iterator i = entries.rbegin(); i != entries.rend(); ++i) { if (!i->asLLSD().isMap()) { continue; } if (i->getGridName() == grid_name) { if (!vl->nameEditted()) { // Change the other fields to match this grid. LLPanelLogin::setFields(*i, false); } else // Probably creating a new account. { // Likely the current password is for a different grid. clearPassword(); } found = true; break; } } if (!found) { clearPassword(); // If the grid_name starts with 'http[s]://' then // we have to assume it's a new loginuri, set // on the commandline. if (grid_name.substr(0, 4) == "http") { // Use it as login uri. vl->setGridURI(grid_name); // And set the login page if it was given. std::string loginPage = gSavedSettings.getString("LoginPage"); std::string helperURI = gSavedSettings.getString("CmdLineHelperURI"); if (!loginPage.empty()) vl->setLoginPageURI(loginPage); if (!helperURI.empty()) vl->setHelperURI(helperURI); } } // grid changed so show new splash screen (possibly) loadLoginPage(); looping = false; }
//--------------------------------------------------------------------------- // Public methods //--------------------------------------------------------------------------- LLPanelLogin::LLPanelLogin(const LLRect &rect, void (*callback)(S32 option, void* user_data), void *cb_data) : LLPanel(std::string("panel_login"), LLRect(0,600,800,0), FALSE), // not bordered mLogoImage(), mCallback(callback), mCallbackData(cb_data), mHtmlAvailable( TRUE ) { setFocusRoot(TRUE); setBackgroundVisible(FALSE); setBackgroundOpaque(TRUE); // instance management if (LLPanelLogin::sInstance) { llwarns << "Duplicate instance of login view deleted" << llendl; delete LLPanelLogin::sInstance; // Don't leave bad pointer in gFocusMgr gFocusMgr.setDefaultKeyboardFocus(NULL); } LLPanelLogin::sInstance = this; // add to front so we are the bottom-most child gViewerWindow->getRootView()->addChildAtEnd(this); // Logo mLogoImage = LLUI::getUIImage("startup_logo.j2c"); LLUICtrlFactory::getInstance()->buildPanel(this, "panel_login.xml"); #if USE_VIEWER_AUTH //leave room for the login menu bar setRect(LLRect(0, rect.getHeight()-18, rect.getWidth(), 0)); #endif reshape(rect.getWidth(), rect.getHeight()); #if !USE_VIEWER_AUTH LLComboBox* name_combo = sInstance->getChild<LLComboBox>("name_combo"); name_combo->setCommitCallback(onSelectLoginEntry); name_combo->setFocusLostCallback(onLoginComboLostFocus); name_combo->setPrevalidate(LLLineEditor::prevalidatePrintableNotPipe); name_combo->setSuppressTentative(true); name_combo->setSuppressAutoComplete(true); childSetCommitCallback("remember_name_check", onNameCheckChanged); childSetCommitCallback("password_edit", mungePassword); childSetKeystrokeCallback("password_edit", onPassKey, this); childSetUserData("password_edit", this); // change z sort of clickable text to be behind buttons sendChildToBack(getChildView("channel_text")); sendChildToBack(getChildView("forgot_password_text")); LLLineEditor* edit = getChild<LLLineEditor>("password_edit"); if (edit) edit->setDrawAsterixes(TRUE); //OGPX : This keeps the uris in a history file //OGPX TODO: should this be inside an OGP only check? LLComboBox* regioncombo = getChild<LLComboBox>("regionuri_edit"); regioncombo->setAllowTextEntry(TRUE, 256, FALSE); std::string current_regionuri = gSavedSettings.getString("CmdLineRegionURI"); // iterate on uri list adding to combobox (couldn't figure out how to add them all in one call) // ... and also append the command line value we might have gotten to the URLHistory LLSD regionuri_history = LLURLHistory::getURLHistory("regionuri"); LLSD::array_iterator iter_history = regionuri_history.beginArray(); LLSD::array_iterator iter_end = regionuri_history.endArray(); for (; iter_history != iter_end; ++iter_history) { regioncombo->addSimpleElement((*iter_history).asString()); } if ( LLURLHistory::appendToURLCollection("regionuri",current_regionuri)) { // since we are in login, another read of urlhistory file is going to happen // so we need to persist the new value we just added (or maybe we should do it in startup.cpp?) // since URL history only populated on create of sInstance, add to combo list directly regioncombo->addSimpleElement(current_regionuri); } // select which is displayed if we have a current URL. regioncombo->setSelectedByValue(LLSD(current_regionuri),TRUE); //llinfos << " url history: " << LLSDOStreamer<LLSDXMLFormatter>(LLURLHistory::getURLHistory("regionuri")) << llendl; LLComboBox* combo = getChild<LLComboBox>("start_location_combo"); combo->setAllowTextEntry(TRUE, 128, FALSE); // The XML file loads the combo with the following labels: // 0 - "My Home" // 1 - "My Last Location" // 2 - "<Type region name>" BOOL login_last = gSavedSettings.getBOOL("LoginLastLocation"); std::string sim_string = LLURLSimString::sInstance.mSimString; if (!sim_string.empty()) { // Replace "<Type region name>" with this region name combo->remove(2); combo->add( sim_string ); combo->setTextEntry(sim_string); combo->setCurrentByIndex( 2 ); } else if (login_last) { combo->setCurrentByIndex( 1 ); } else { combo->setCurrentByIndex( 0 ); } combo->setCommitCallback( &set_start_location ); childSetAction("connect_btn", onClickConnect, this); setDefaultBtn("connect_btn"); // childSetAction("quit_btn", onClickQuit, this); childSetAction("grids_btn", onClickGrids, this); childSetCommitCallback("grids_combo", onSelectGrid, this); std::string channel = LL_CHANNEL; std::string version = llformat("%d.%d.%d (%d)", LL_VERSION_MAJOR, LL_VERSION_MINOR, LL_VERSION_PATCH, LL_VIEWER_BUILD ); LLTextBox* channel_text = getChild<LLTextBox>("channel_text"); channel_text->setTextArg("[CHANNEL]", channel); // though not displayed channel_text->setTextArg("[VERSION]", version); channel_text->setClickedCallback(onClickVersion); channel_text->setCallbackUserData(this); LLTextBox* forgot_password_text = getChild<LLTextBox>("forgot_password_text"); forgot_password_text->setClickedCallback(onClickForgotPassword); LLTextBox* create_new_account_text = getChild<LLTextBox>("create_new_account_text"); create_new_account_text->setClickedCallback(onClickNewAccount); #endif // get the web browser control LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html"); web_browser->addObserver(this); // Need to handle login secondlife:///app/ URLs web_browser->setTrusted( true ); // don't make it a tab stop until SL-27594 is fixed web_browser->setTabStop(FALSE); // web_browser->navigateToLocalPage( "loading", "loading.html" ); // make links open in external browser web_browser->setOpenInExternalBrowser( true ); // 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) LLRect htmlRect = getRect(); #if USE_VIEWER_AUTH htmlRect.setCenterAndSize( getRect().getCenterX() - 2, getRect().getCenterY(), getRect().getWidth() + 6, getRect().getHeight()); #else htmlRect.setCenterAndSize( getRect().getCenterX() - 2, getRect().getCenterY() + 40, getRect().getWidth() + 6, getRect().getHeight() - 78 ); #endif web_browser->setRect( htmlRect ); web_browser->reshape( htmlRect.getWidth(), htmlRect.getHeight(), TRUE ); reshape( getRect().getWidth(), getRect().getHeight(), 1 ); updateGridCombo(); childSetVisible("create_new_account_text", !gHippoGridManager->getConnectedGrid()->getRegisterUrl().empty()); childSetVisible("forgot_password_text", !gHippoGridManager->getConnectedGrid()->getPasswordUrl().empty()); loadLoginPage(); #if !USE_VIEWER_AUTH // Initialize visibility (and don't force visibility - use prefs) refreshLocation( false ); #endif }
// static void LLPanelLogin::setFields(const LLSavedLoginEntry& entry, bool takeFocus) { if (!sInstance) { llwarns << "Attempted setFields with no login view shown" << llendl; return; } LLCheckBoxCtrl* remember_pass_check = sInstance->getChild<LLCheckBoxCtrl>("remember_check"); LLComboBox* login_combo = sInstance->getChild<LLComboBox>("first_name_combo"); login_combo->setLabel(entry.getFirstName()); login_combo->resetDirty(); login_combo->resetTextDirty(); LLLineEditor* last_name = sInstance->getChild<LLLineEditor>("last_name_edit"); last_name->setText(entry.getLastName()); last_name->resetDirty(); if (entry.getPassword().empty()) { sInstance->childSetText("password_edit", std::string("")); remember_pass_check->setValue(LLSD(false)); } else { const std::string filler("123456789!123456"); sInstance->childSetText("password_edit", filler); sInstance->mIncomingPassword = filler; sInstance->mMungedPassword = entry.getPassword(); remember_pass_check->setValue(LLSD(true)); } LLComboBox* server_combo = sInstance->getChild<LLComboBox>("server_combo"); if (server_combo->getSimple() != entry.getGridName()) // Avoid loops. { server_combo->setSimple(entry.getGridName()); // Same string as used in login_show(). } LLViewerLogin* vl = LLViewerLogin::getInstance(); if (entry.getGrid() == GRID_INFO_OTHER) { vl->setGridURI(entry.getGridURI().asString()); vl->setHelperURI(entry.getHelperURI().asString()); vl->setLoginPageURI(entry.getLoginPageURI().asString()); } EGridInfo entry_grid = entry.getGrid(); if (entry_grid == GRID_INFO_OTHER || entry_grid != vl->getGridChoice()) { vl->setGridChoice(entry_grid); // grid changed so show new splash screen (possibly) loadLoginPage(); } if (takeFocus) { giveFocus(); } }
//--------------------------------------------------------------------------- // Public methods //--------------------------------------------------------------------------- FSPanelLogin::FSPanelLogin(const LLRect &rect, void (*callback)(S32 option, void* user_data), void *cb_data) : LLPanel(), mLogoImage(), mCallback(callback), mCallbackData(cb_data), mShowFavorites(false) { setBackgroundVisible(FALSE); setBackgroundOpaque(TRUE); mPasswordModified = FALSE; FSPanelLogin::sInstance = this; LLView* login_holder = gViewerWindow->getLoginPanelHolder(); if (login_holder) { login_holder->addChild(this); } // Logo mLogoImage = LLUI::getUIImage("startup_logo"); buildFromFile( "panel_fs_login.xml"); reshape(rect.getWidth(), rect.getHeight()); LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo"); mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile")); mode_combo.setCommitCallback(boost::bind(&FSPanelLogin::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2)); LLLineEditor* password_edit(getChild<LLLineEditor>("password_edit")); password_edit->setKeystrokeCallback(onPassKey, this); // change z sort of clickable text to be behind buttons sendChildToBack(getChildView("forgot_password_text")); LLComboBox* location_combo = getChild<LLComboBox>("start_location_combo"); updateLocationSelectorsVisibility(); // separate so that it can be called from preferences location_combo->setFocusLostCallback(boost::bind(&FSPanelLogin::onLocationSLURL, this)); LLComboBox* server_choice_combo = getChild<LLComboBox>("server_combo"); server_choice_combo->setCommitCallback(boost::bind(&FSPanelLogin::onSelectServer, this)); updateServer(); if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION) { LLSLURL slurl(gSavedSettings.getString("LoginLocation")); LLStartUp::setStartSLURL(slurl); } childSetAction("remove_user_btn", onClickRemove, this); childSetAction("connect_btn", onClickConnect, this); getChild<LLPanel>("login")->setDefaultBtn(findChild<LLButton>("connect_btn")); getChild<LLPanel>("start_location_panel")->setDefaultBtn(findChild<LLButton>("connect_btn")); std::string channel = LLVersionInfo::getChannel(); std::string version = llformat("%s (%d)", LLVersionInfo::getShortVersion().c_str(), LLVersionInfo::getBuild()); LLTextBox* forgot_password_text = getChild<LLTextBox>("forgot_password_text"); forgot_password_text->setClickedCallback(onClickForgotPassword, NULL); LLTextBox* create_new_account_text = getChild<LLTextBox>("create_new_account_text"); create_new_account_text->setClickedCallback(onClickNewAccount, NULL); LLTextBox* grid_mgr_help_text = getChild<LLTextBox>("grid_login_text"); grid_mgr_help_text->setClickedCallback(onClickGridMgrHelp, NULL); // get the web browser control LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html"); web_browser->addObserver(this); reshapeBrowser(); // Show last logged in user favorites in "Start at" combo. LLComboBox* username_combo(getChild<LLComboBox>("username_combo")); username_combo->setCommitCallback(boost::bind(&FSPanelLogin::onSelectUser, this)); username_combo->setFocusLostCallback(boost::bind(&FSPanelLogin::onSelectUser, this)); mPreviousUsername = username_combo->getValue().asString(); LLSLURL start_slurl(LLStartUp::getStartSLURL()); if ( !start_slurl.isSpatial() ) // has a start been established by the command line or NextLoginLocation ? { // no, so get the preference setting std::string defaultStartLocation = gSavedSettings.getString("LoginLocation"); LL_INFOS("AppInit") << "default LoginLocation '" << defaultStartLocation << "'" << LL_ENDL; LLSLURL defaultStart(defaultStartLocation); if ( defaultStart.isSpatial() ) { LLStartUp::setStartSLURL(defaultStart); } else { LL_INFOS("AppInit")<<"no valid LoginLocation, using home"<<LL_ENDL; LLSLURL homeStart(LLSLURL::SIM_LOCATION_HOME); LLStartUp::setStartSLURL(homeStart); } } else { FSPanelLogin::onUpdateStartSLURL(start_slurl); // updates grid if needed } loadLoginPage(); }