BOOL LLFloaterAvatarPicker::postBuild() { childSetKeystrokeCallback("Edit", &LLFloaterAvatarPicker::editKeystroke, (void*)this); childSetKeystrokeCallback("EditUUID", &LLFloaterAvatarPicker::editKeystroke, (void*)this); childSetAction("Find", boost::bind(&LLFloaterAvatarPicker::onBtnFind, this)); getChildView("Find")->setEnabled(FALSE); childSetAction("Refresh", boost::bind(&LLFloaterAvatarPicker::onBtnRefresh, this)); getChild<LLUICtrl>("near_me_range")->setCommitCallback(boost::bind(&LLFloaterAvatarPicker::onRangeAdjust, this)); LLScrollListCtrl* searchresults = getChild<LLScrollListCtrl>("SearchResults"); searchresults->setDoubleClickCallback( boost::bind(&LLFloaterAvatarPicker::onBtnSelect, this)); searchresults->setCommitCallback(boost::bind(&LLFloaterAvatarPicker::onList, this)); getChildView("SearchResults")->setEnabled(FALSE); LLScrollListCtrl* nearme = getChild<LLScrollListCtrl>("NearMe"); nearme->setDoubleClickCallback(boost::bind(&LLFloaterAvatarPicker::onBtnSelect, this)); nearme->setCommitCallback(boost::bind(&LLFloaterAvatarPicker::onList, this)); LLScrollListCtrl* friends = getChild<LLScrollListCtrl>("Friends"); friends->setDoubleClickCallback(boost::bind(&LLFloaterAvatarPicker::onBtnSelect, this)); childSetAction("RefreshFriends", boost::bind(&LLFloaterAvatarPicker::populateFriend, this)); getChild<LLUICtrl>("Friends")->setCommitCallback(boost::bind(&LLFloaterAvatarPicker::onList, this)); childSetAction("ok_btn", boost::bind(&LLFloaterAvatarPicker::onBtnSelect, this)); getChildView("ok_btn")->setEnabled(FALSE); childSetAction("cancel_btn", boost::bind(&LLFloaterAvatarPicker::onBtnClose, this)); getChild<LLUICtrl>("Edit")->setFocus(TRUE); LLPanel* search_panel = getChild<LLPanel>("SearchPanel"); if (search_panel) { // Start searching when Return is pressed in the line editor. search_panel->setDefaultBtn("Find"); } getChild<LLScrollListCtrl>("SearchResults")->setCommentText(getString("no_results")); getChild<LLTabContainer>("ResidentChooserTabs")->setCommitCallback( boost::bind(&LLFloaterAvatarPicker::onTabChanged,this)); setAllowMultiple(FALSE); center(); populateFriend(); return TRUE; }
BOOL LLFloaterAvatarPicker::postBuild() { childSetKeystrokeCallback("Edit", editKeystroke, this); childSetKeystrokeCallback("EditUUID", editKeystroke, this); childSetAction("Find", onBtnFind, this); childDisable("Find"); childSetAction("Refresh", onBtnRefresh, this); childSetCommitCallback("near_me_range", onRangeAdjust, this); childSetDoubleClickCallback("SearchResults", onBtnSelect); childSetDoubleClickCallback("NearMe", onBtnSelect); childSetCommitCallback("SearchResults", onList, this); childSetCommitCallback("NearMe", onList, this); childDisable("SearchResults"); childSetAction("Select", onBtnSelect, this); childDisable("Select"); childSetAction("Cancel", onBtnClose, this); childSetFocus("Edit"); LLPanel* search_panel = getChild<LLPanel>("SearchPanel"); if (search_panel) { // Start searching when Return is pressed in the line editor. search_panel->setDefaultBtn("Find"); } getChild<LLScrollListCtrl>("SearchResults")->addCommentText(getString("no_results")); /*LLInventoryPanel* inventory_panel = getChild<LLInventoryPanel>("InventoryPanel"); inventory_panel->setFilterTypes(0x1 << LLInventoryType::IT_CALLINGCARD); inventory_panel->setFollowsAll(); inventory_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); inventory_panel->openDefaultFolderForType(LLAssetType::AT_CALLINGCARD); inventory_panel->setSelectCallback(LLFloaterAvatarPicker::onCallingCardSelectionChange, this);*/ init_cards = FALSE; childSetTabChangeCallback("ResidentChooserTabs", "SearchPanel", onTabChanged, this); childSetTabChangeCallback("ResidentChooserTabs", "CallingCardsPanel", onTabChanged, this); childSetTabChangeCallback("ResidentChooserTabs", "NearMePanel", onTabChanged, this); childSetTabChangeCallback("ResidentChooserTabs", "KeyPanel", onTabChanged, this); setAllowMultiple(FALSE); return TRUE; }
BOOL LLPanelDirPlaces::postBuild() { LLPanelDirBrowser::postBuild(); childSetKeystrokeCallback("name", &LLPanelDirBrowser::onKeystrokeName, this); childSetAction("Search", &LLPanelDirBrowser::onClickSearchCore, this); childDisable("Search"); mCurrentSortColumn = "dwell"; mCurrentSortAscending = FALSE; if (gAgent.getAgentAccess().isInTransition()) { // during the AO transition, this combo has an Adult item. // Post-transition, it goes away. We can remove this conditional // after the transition and just use the "else" clause. childSetVisible("Category_Adult", true); childSetEnabled("Category_Adult", true); } else { // this is the code that should be preserved post-transition childSetVisible("Category", true); childSetEnabled("Category", true); } childSetVisible("filter_gaming", (gAgent.getRegion()->getGamingFlags() & REGION_GAMING_PRESENT) && !(gAgent.getRegion()->getGamingFlags() & REGION_GAMING_HIDE_FIND_SIMS)); // Don't prepopulate the places list, as it hurts the database as of 2006-12-04. JC // initialQuery(); return TRUE; }
BOOL LLPanelDirClassified::postBuild() { LLPanelDirBrowser::postBuild(); // Teens don't get mature checkbox if (gAgent.isTeen()) { childSetValue("incmature", FALSE); childHide("incmature"); } // 0 or 3+ character searches allowed, exciting childSetKeystrokeCallback("name", onKeystrokeNameClassified, this); childSetAction("Search", onClickSearchCore, this); childSetAction("Browse", onClickSearchCore, this); setDefaultBtn( "Browse" ); childSetAction("Place an Ad...", onClickCreateNewClassified, this); childSetAction("Delete", onClickDelete, this); childDisable("Delete"); childHide("Delete"); // Don't do this every time we open find, it's expensive; require clicking 'search' //requestClassified(); return TRUE; }
BOOL JCFloaterAreaSearch::postBuild() { mResultList = getChild<LLScrollListCtrl>("result_list"); mResultList->setDoubleClickCallback(onDoubleClick,this); mResultList->sortByColumn("Name", TRUE); mCounterText = getChild<LLTextBox>("counter"); childSetAction("Refresh", search, this); childSetAction("Stop", cancel, this); childSetKeystrokeCallback("Name query chunk", onCommitLine, 0); childSetKeystrokeCallback("Description query chunk", onCommitLine, 0); childSetKeystrokeCallback("Owner query chunk", onCommitLine, 0); childSetKeystrokeCallback("Group query chunk", onCommitLine, 0); return TRUE; }
BOOL LLPanelDirGroups::postBuild() { LLPanelDirBrowser::postBuild(); childSetKeystrokeCallback("name", &LLPanelDirBrowser::onKeystrokeName, this); childSetAction("Search", &LLPanelDirBrowser::onClickSearchCore, this); childDisable("Search"); setDefaultBtn( "Search" ); return TRUE; }
BOOL LLPanelRegionTools::postBuild() { childSetCommitCallback("region name", onChangeAnything, this); childSetKeystrokeCallback("region name", onChangeSimName, this); childSetPrevalidate("region name", &LLLineEditor::prevalidatePrintableNotPipe); childSetCommitCallback("check prelude", onChangePrelude, this); childSetCommitCallback("check fixed sun", onChangeAnything, this); childSetCommitCallback("check reset home", onChangeAnything, this); childSetCommitCallback("check visible", onChangeAnything, this); childSetCommitCallback("check damage", onChangeAnything, this); childSetCommitCallback("block dwell", onChangeAnything, this); childSetCommitCallback("block terraform", onChangeAnything, this); childSetCommitCallback("allow transfer", onChangeAnything, this); childSetCommitCallback("is sandbox", onChangeAnything, this); childSetAction("Bake Terrain", onBakeTerrain, this); childSetAction("Revert Terrain", onRevertTerrain, this); childSetAction("Swap Terrain", onSwapTerrain, this); childSetCommitCallback("estate", onChangeAnything, this); childSetPrevalidate("estate", &LLLineEditor::prevalidatePositiveS32); childSetCommitCallback("parentestate", onChangeAnything, this); childSetPrevalidate("parentestate", &LLLineEditor::prevalidatePositiveS32); childDisable("parentestate"); childSetCommitCallback("gridposx", onChangeAnything, this); childSetPrevalidate("gridposx", &LLLineEditor::prevalidatePositiveS32); childDisable("gridposx"); childSetCommitCallback("gridposy", onChangeAnything, this); childSetPrevalidate("gridposy", &LLLineEditor::prevalidatePositiveS32); childDisable("gridposy"); childSetCommitCallback("redirectx", onChangeAnything, this); childSetPrevalidate("redirectx", &LLLineEditor::prevalidatePositiveS32); childSetCommitCallback("redirecty", onChangeAnything, this); childSetPrevalidate("redirecty", &LLLineEditor::prevalidatePositiveS32); childSetCommitCallback("billable factor", onChangeAnything, this); childSetCommitCallback("land cost", onChangeAnything, this); childSetAction("Refresh", onRefresh, this); childSetAction("Apply", onApplyChanges, this); childSetAction("Select Region", onSelectRegion, this); childSetAction("Autosave now", onSaveState, this); return TRUE; }
BOOL LLPanelDirFindAllOld::postBuild() { LLPanelDirBrowser::postBuild(); childSetKeystrokeCallback("name", &LLPanelDirBrowser::onKeystrokeName, this); childSetAction("Search", onClickSearch, this); childDisable("Search"); setDefaultBtn( "Search" ); childSetVisible("filter_gaming", (gAgent.getRegion()->getGamingFlags() & REGION_GAMING_PRESENT) && !(gAgent.getRegion()->getGamingFlags() & REGION_GAMING_HIDE_FIND_ALL_CLASSIC)); return TRUE; }
BOOL JCFloaterAreaSearch::postBuild() { mResultList = getChild<LLScrollListCtrl>("result_list"); mResultList->setCallbackUserData(this); mResultList->setDoubleClickCallback(onDoubleClick); mResultList->sortByColumn("Name", TRUE); childSetAction("Reload",reload,this); childSetAction("Search",search,this); ///childSetCommitCallback("Name query chunk", onCommitLine); //childSetCommitCallback("Description query chunk", onCommitLine); //childSetCommitCallback("Owner query chunk", onCommitLine); //childSetCommitCallback("group query chunk", onCommitLine); childSetKeystrokeCallback("Name query chunk", onCommitLine, 0); childSetKeystrokeCallback("Description query chunk", onCommitLine, 0); childSetKeystrokeCallback("Owner query chunk", onCommitLine, 0); childSetKeystrokeCallback("Group query chunk", onCommitLine, 0); return 1; }
BOOL LLPanelDirClassified::postBuild() { LLPanelDirBrowser::postBuild(); // Teens don't get mature checkbox if (gAgent.wantsPGOnly()) { childSetValue("incmature", FALSE); childSetValue("incadult", FALSE); childHide("incmature"); childHide("incadult"); childSetValue("incpg", TRUE); childDisable("incpg"); } bool mature_enabled = gAgent.canAccessMature(); if (!mature_enabled) { childSetValue("incmature", FALSE); childDisable("incmature"); } bool adult_enabled = gAgent.canAccessAdult(); if (!adult_enabled) { childSetValue("incadult", FALSE); childDisable("incadult"); } // 0 or 3+ character searches allowed, exciting childSetKeystrokeCallback("name", onKeystrokeNameClassified, this); childSetAction("Search", onClickSearchCore, this); childSetAction("Browse", onClickSearchCore, this); setDefaultBtn( "Browse" ); childSetAction("Place an Ad...", onClickCreateNewClassified, this); childSetAction("Delete", onClickDelete, this); childDisable("Delete"); childHide("Delete"); // Don't do this every time we open find, it's expensive; require clicking 'search' //requestClassified(); childSetVisible("filter_gaming", (gAgent.getRegion()->getGamingFlags() & REGION_GAMING_PRESENT) && !(gAgent.getRegion()->getGamingFlags() & REGION_GAMING_HIDE_FIND_CLASSIFIEDS)); return TRUE; }
BOOL LLPanelDirPlaces::postBuild() { LLPanelDirBrowser::postBuild(); childSetKeystrokeCallback("name", &LLPanelDirBrowser::onKeystrokeName, this); childSetAction("Search", &LLPanelDirBrowser::onClickSearchCore, this); childDisable("Search"); mCurrentSortColumn = "dwell"; mCurrentSortAscending = FALSE; // Don't prepopulate the places list, as it hurts the database as of 2006-12-04. JC // initialQuery(); return TRUE; }
BOOL LLFloaterAvatarPicker::postBuild() { childSetKeystrokeCallback("Edit", editKeystroke, this); childSetAction("Find", onBtnFind, this); childDisable("Find"); mListNames = getChild<LLScrollListCtrl>("Names"); childSetDoubleClickCallback("Names",onBtnAdd); childSetCommitCallback("Names", onList, this); childDisable("Names"); childSetAction("Select", onBtnAdd, this); childDisable("Select"); childSetAction("Close", onBtnClose, this); childSetFocus("Edit"); if (mListNames) { mListNames->addCommentText(std::string("No results")); // *TODO: Translate } mInventoryPanel = getChild<LLInventoryPanel>("Inventory Panel"); if(mInventoryPanel) { mInventoryPanel->setFilterTypes(LLInventoryType::NIT_CALLCARD); mInventoryPanel->setFollowsAll(); mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); mInventoryPanel->openDefaultFolderForType(LLAssetType::AT_CALLINGCARD); mInventoryPanel->setSelectCallback(LLFloaterAvatarPicker::onSelectionChange, this); } setAllowMultiple(FALSE); return TRUE; }
//--------------------------------------------------------------------------- // Public methods //--------------------------------------------------------------------------- LLPanelLogin::LLPanelLogin(const LLRect &rect, BOOL show_server, 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 childSetPrevalidate("first_name_edit", LLLineEditor::prevalidatePrintableNoSpace); childSetPrevalidate("last_name_edit", LLLineEditor::prevalidatePrintableNoSpace); 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); 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 ); } LLComboBox* server_choice_combo = sInstance->getChild<LLComboBox>("server_combo"); server_choice_combo->setCommitCallback(onSelectServer); //server_choice_combo->setFocusLostCallback(onServerComboLostFocus); childSetAction("connect_btn", onClickConnect, this); childSetAction("grid_btn", onClickGrid, this); setDefaultBtn("connect_btn"); // childSetAction("quit_btn", onClickQuit, this); std::string imp_channel = gSavedSettings.getString("VersionChannelName"); std::string imp_version = llformat("%d.%d.%d %s", ViewerVersion::getImpMajorVersion(), ViewerVersion::getImpMinorVersion(), ViewerVersion::getImpPatchVersion(), ViewerVersion::getImpTestVersion().c_str() ); std::string ll_channel = ViewerVersion::getLLViewerName(); std::string ll_version = llformat("%d.%d.%d (%d)", ViewerVersion::getLLMajorVersion(), ViewerVersion::getLLMinorVersion(), ViewerVersion::getLLPatchVersion(), ViewerVersion::getLLBuildVersion() ); LLTextBox* channel_text = getChild<LLTextBox>("channel_text"); channel_text->setTextArg("[CHANNEL]", imp_channel); channel_text->setTextArg("[VERSION]", imp_version); channel_text->setTextArg("[ALT_CHANNEL]", ll_channel); channel_text->setTextArg("[ALT_VERSION]", ll_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 LLWebBrowserCtrl* web_browser = getChild<LLWebBrowserCtrl>("login_html"); // Need to handle login secondlife:///app/ URLs web_browser->setTrusted( true ); // observe browser events web_browser->addObserver( this ); // 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 ); // kick off a request to grab the url manually gResponsePtr = LLIamHereLogin::build( this ); std::string login_page = gSavedSettings.getString("LoginPage"); if (login_page.empty()) { login_page = getString( "real_url" ); } LLHTTPClient::head( login_page, gResponsePtr ); #if !USE_VIEWER_AUTH // Initialize visibility (and don't force visibility - use prefs) refreshLocation( false ); #endif LLFirstUse::useLoginScreen(); }
//--------------------------------------------------------------------------- // 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 }
// Default constructor LLFloaterPay::LLFloaterPay(const std::string& name, money_callback callback, const LLUUID& uuid, BOOL target_is_object) : LLFloater(name, std::string("FloaterPayRectB"), LLStringUtil::null, RESIZE_NO, DEFAULT_MIN_WIDTH, DEFAULT_MIN_HEIGHT, DRAG_ON_TOP, MINIMIZE_NO, CLOSE_YES), mCallbackData(), mCallback(callback), mObjectNameText(NULL), mTargetUUID(uuid), mTargetIsObject(target_is_object), mTargetIsGroup(FALSE) { if (target_is_object) { LLUICtrlFactory::getInstance()->buildFloater(this,"floater_pay_object.xml"); mObjectSelection = LLSelectMgr::getInstance()->getEditSelection(); } else { LLUICtrlFactory::getInstance()->buildFloater(this,"floater_pay.xml"); } S32 i =0; LLGiveMoneyInfo* info = new LLGiveMoneyInfo(this, PAY_BUTTON_DEFAULT_0); mCallbackData.push_back(info); childSetAction("fastpay 1",&LLFloaterPay::onGive,info); childSetVisible("fastpay 1", FALSE); mQuickPayButton[i] = getChild<LLButton>("fastpay 1"); mQuickPayInfo[i] = info; ++i; info = new LLGiveMoneyInfo(this, PAY_BUTTON_DEFAULT_1); mCallbackData.push_back(info); childSetAction("fastpay 5",&LLFloaterPay::onGive,info); childSetVisible("fastpay 5", FALSE); mQuickPayButton[i] = getChild<LLButton>("fastpay 5"); mQuickPayInfo[i] = info; ++i; info = new LLGiveMoneyInfo(this, PAY_BUTTON_DEFAULT_2); mCallbackData.push_back(info); childSetAction("fastpay 10",&LLFloaterPay::onGive,info); childSetVisible("fastpay 10", FALSE); mQuickPayButton[i] = getChild<LLButton>("fastpay 10"); mQuickPayInfo[i] = info; ++i; info = new LLGiveMoneyInfo(this, PAY_BUTTON_DEFAULT_3); mCallbackData.push_back(info); childSetAction("fastpay 20",&LLFloaterPay::onGive,info); childSetVisible("fastpay 20", FALSE); mQuickPayButton[i] = getChild<LLButton>("fastpay 20"); mQuickPayInfo[i] = info; ++i; childSetVisible("amount text", FALSE); childSetVisible("currency text", FALSE); std::string last_amount; if(sLastAmount > 0) { last_amount = llformat("%d", sLastAmount); } childSetVisible("amount", FALSE); childSetKeystrokeCallback("amount", &LLFloaterPay::onKeystroke, this); childSetText("amount", last_amount); childSetPrevalidate("amount", LLLineEditor::prevalidateNonNegativeS32); info = new LLGiveMoneyInfo(this, 0); mCallbackData.push_back(info); childSetAction("pay btn",&LLFloaterPay::onGive,info); setDefaultBtn("pay btn"); childSetVisible("pay btn", FALSE); childSetEnabled("pay btn", (sLastAmount > 0)); childSetAction("cancel btn",&LLFloaterPay::onCancel,this); center(); open(); /*Flawfinder: ignore*/ }
//--------------------------------------------------------------------------- // Public methods //--------------------------------------------------------------------------- LLPanelLogin::LLPanelLogin(const LLRect &rect, BOOL show_server, 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 childSetPrevalidate("first_name_edit", LLLineEditor::prevalidatePrintableNoSpace); childSetPrevalidate("last_name_edit", LLLineEditor::prevalidatePrintableNoSpace); LLComboBox* name_combo = getChild<LLComboBox>("name_combo"); // Only works as intended with this combination of flags, // and in this order of setting them, therefore overriding xui name_combo->setAllowTextEntry(TRUE); name_combo->setTextEntryVisible(FALSE); // Send it down the line, or the invisible text entry covers up our normal // input fields if placed after them in xui sendChildToBack(getChildView("name_combo")); bool mru_enabled = gSavedSettings.getBOOL("LoginMRUEnabled"); if (mru_enabled) { LLSD name_list = gSavedSettings.getLLSD("LoginMRUList"); if (name_list.isArray()) { for (LLSD::array_iterator iter = name_list.endArray() - 1; iter >= name_list.beginArray(); --iter) { if (iter->isMap() && iter->has("first") && iter->has("last")) { name_combo->add((*iter)["first"].asString() + " " + (*iter)["last"].asString(), *iter); } } } childSetCommitCallback("name_combo", onSelectLoginMRU, this); } setLoginMRUEnabled(mru_enabled); 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); 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 ); LLComboBox* server_choice_combo = sInstance->getChild<LLComboBox>("server_combo"); server_choice_combo->setCommitCallback(onSelectServer); server_choice_combo->setFocusLostCallback(onServerComboLostFocus); childSetAction("connect_btn", onClickConnect, this); setDefaultBtn("connect_btn"); // childSetAction("quit_btn", onClickQuit, this); std::string channel = llformat("(%s)", DX_CHANNEL ); // Kirsten uses version Viewer headers not saved settings! for channel info. 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 LLWebBrowserCtrl* web_browser = getChild<LLWebBrowserCtrl>("login_html"); // Need to handle login secondlife:///app/ URLs web_browser->setTrusted( true ); // observe browser events web_browser->addObserver( this ); // 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 ); // kick off a request to grab the url manually gResponsePtr = LLIamHereLogin::build( this ); std::string login_page = gSavedSettings.getString("LoginPage"); if (login_page.empty()) { login_page = getString( "real_url" ); } LLHTTPClient::head( login_page, gResponsePtr ); #if !USE_VIEWER_AUTH // Initialize visibility (and don't force visibility - use prefs) refreshLocation( false ); #endif }