void FloaterGridManager::refreshGrids() { LLScrollListCtrl *grids = FloaterGridManager::getInstance()->getChild<LLScrollListCtrl>("grid_selector"); std::string lastSelectedItem; LLSD element; if (grids->getFirstSelected()) { lastSelectedItem = grids->getFirstSelected()->getValue().asString(); } grids->deleteAllItems(); for (HippoGridManager::GridIterator it = gHippoGridManager->beginGrid(); it != gHippoGridManager->endGrid(); ++it) { std::string grid_nick = it->second->getGridNick(); // There's no reason why empty grids nicks should be in this list, ugh if (!grid_nick.empty() && grid_nick != gHippoGridManager->getCurrentGridNick()) { element["id"] = grid_nick; element["columns"][0]["column"] = "grid"; element["columns"][0]["type"] = "text"; element["columns"][0]["value"] = grid_nick; grids->addElement(element, ADD_BOTTOM); } } // Setting the default needs to be rethought. // Right now, we just use the last-selected grid, // but leaving this as the current behavior for now if (!gHippoGridManager->getCurrentGridNick().empty()) { element["id"] = gHippoGridManager->getCurrentGridNick(); element["columns"][0]["column"] = "grid"; element["columns"][0]["type"] = "text"; element["columns"][0]["font-style"] = "BOLD"; element["columns"][0]["value"] = gHippoGridManager->getCurrentGridNick(); grids->addElement(element, ADD_TOP); } // Reselect the item if we had one selected if (lastSelectedItem.empty()) { grids->selectItemByLabel(gHippoGridManager->getCurrentGridNick()); } else { grids->selectItemByLabel(lastSelectedItem); } // TODO: get rid of all this state junk if ((FloaterGridManager::getInstance()->getState() == ADD_NEW) || (FloaterGridManager::getInstance()->getState() == ADD_COPY)) { grids->addElement("<new>", ADD_BOTTOM); } //if (selectIndex >= 0) //{ // grids->setCurrentByIndex(selectIndex); //} //else //{ // grids->setLabel(LLStringExplicit("")); // LLComboBox::removeall() does not clear the label //} // FloaterGridManager::getInstance()->childSetTextArg("default_grid", "[DEFAULT]", (defaultGrid != "")? defaultGrid: " "); FloaterGridManager::getInstance()->childSetEnabled("btn_delete", grids->getItemCount() > 0); FloaterGridManager::getInstance()->childSetEnabled("btn_copy", (FloaterGridManager::getInstance()->getState() == NORMAL) && (grids->getItemCount() > 0)); // FloaterGridManager::getInstance()->childSetEnabled("set_default", (FloaterGridManager::getInstance()->getState() == NORMAL) && (grids->getItemCount() > 0)); FloaterGridManager::getInstance()->childSetEnabled("gridnick", (FloaterGridManager::getInstance()->getState() == ADD_NEW) || (FloaterGridManager::getInstance()->getState() == ADD_COPY)); if (FloaterGridManager::getInstance()->getState() == NORMAL) { HippoGridInfo *gridInfo = gHippoGridManager->getGrid(FloaterGridManager::getInstance()->getCurGrid()); if (gridInfo) { FloaterGridManager::getInstance()->childSetText("gridnick", gridInfo->getGridNick()); //FloaterGridManager::getInstance()->childSetText("grid_name", gridInfo->getGridName()); FloaterGridManager::getInstance()->childSetText("loginuri", gridInfo->getLoginUri()); FloaterGridManager::getInstance()->childSetText("loginpage", gridInfo->getLoginPage()); FloaterGridManager::getInstance()->childSetText("helperuri", gridInfo->getHelperUri()); FloaterGridManager::getInstance()->childSetText("website", gridInfo->getWebSite()); FloaterGridManager::getInstance()->childSetText("support", gridInfo->getSupportUrl()); FloaterGridManager::getInstance()->childSetText("register", gridInfo->getRegisterUrl()); FloaterGridManager::getInstance()->childSetText("password", gridInfo->getPasswordUrl()); FloaterGridManager::getInstance()->childSetText("first_name", gridInfo->getFirstName()); FloaterGridManager::getInstance()->childSetText("last_name", gridInfo->getLastName()); if(gridInfo->getAvatarPassword().length() == 32) FloaterGridManager::getInstance()->childSetText("avatar_password", std::string(PASSWORD_FILLER)); else if(gridInfo->getPasswordUrl().empty()) FloaterGridManager::getInstance()->childSetText("avatar_password", std::string("")); if (gridInfo->getPlatform() == HippoGridInfo::PLATFORM_SECONDLIFE) { FloaterGridManager::getInstance()->childSetEnabled("search", false); FloaterGridManager::getInstance()->childSetText("search", LLStringUtil::null); //childSetEnabled("render_compat", false); //childSetValue("render_compat", false); } else { FloaterGridManager::getInstance()->childSetEnabled("search", true); FloaterGridManager::getInstance()->childSetText("search", gridInfo->getSearchUrl()); //childSetEnabled("render_compat", true); //childSetValue("render_compat", gridInfo->isRenderCompat()); } } else { FloaterGridManager::getInstance()->childSetText("gridnick", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("gridname", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("loginuri", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("loginpage", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("helperuri", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("website", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("support", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("register", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("password", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("first_name", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("last_name", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("avatar_password", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("search", LLStringUtil::null); } } else if (FloaterGridManager::getInstance()->getState() == ADD_NEW) { llinfos << "mState == ADD_NEW" << llendl; std::string required = "<required>"; FloaterGridManager::getInstance()->childSetText("gridnick", required); FloaterGridManager::getInstance()->childSetText("gridname", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("loginuri", required); FloaterGridManager::getInstance()->childSetText("loginpage", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("helperuri", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("website", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("support", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("register", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("password", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("first_name", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("last_name", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("avatar_password", LLStringUtil::null); // childSetEnabled("search", true); FloaterGridManager::getInstance()->childSetText("search", LLStringUtil::null); } else if (FloaterGridManager::getInstance()->getState() == ADD_COPY) { llinfos << "mState == ADD_COPY" << llendl; FloaterGridManager::getInstance()->childSetText("gridnick", LLStringExplicit("<required>")); } else { llwarns << "Illegal state " << FloaterGridManager::getInstance()->getState() << llendl; } return; }