//static bool LLNotifyBox::parseNotify(const std::string& xml_filename) { LLXMLNodePtr root; BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root); if (!success || root.isNull() || !root->hasName( "notifications" )) { llerrs << "Problem reading UI Notify file: " << xml_filename << llendl; return false; } for (LLXMLNode* notify = root->getFirstChild(); notify != NULL; notify = notify->getNextSibling()) { if (!notify->hasName("notify")) { continue; } BOOL unique = FALSE; notify->getAttributeBOOL("unique", unique); F32 duration = gSavedSettings.getF32("NotifyTipDuration"); notify->getAttributeF32("duration", duration); LLPointer<LLNotifyBoxTemplate> xml_template = new LLNotifyBoxTemplate(unique, duration); // label= std::string notify_name; if (notify->getAttributeString("name", notify_name)) { xml_template->mLabel = notify_name; } else { llwarns << "Unable to parse notify with no name" << llendl; continue; } // modal= BOOL tip; if (notify->getAttributeBOOL("tip", tip)) { xml_template->mIsTip = tip; } // parse a bool attribute named "caution" to determine // whether this notification gets cautionary special handling BOOL caution = FALSE; if (notify->getAttributeBOOL("caution", caution)) { if (xml_template) { xml_template->mIsCaution = caution; } } S32 btn_idx = 0; for (LLXMLNode* child = notify->getFirstChild(); child != NULL; child = child->getNextSibling()) { // <message> if (child->hasName("message")) { xml_template->mMessage = child->getTextContents(); } // <option> if (child->hasName("option")) { std::string label = child->getValue(); BOOL is_default = FALSE; child->getAttributeBOOL("default", is_default); std::string ignore_text; if (!child->getAttributeString("ignore", ignore_text)) { ignore_text = label; } xml_template->addOption(label, is_default); btn_idx++; } } //*TODO:translate if (xml_template->mOptions.empty()) { xml_template->addOption("OK", FALSE); } sNotifyTemplates[xml_template->mLabel] = xml_template; } return true; }
//static bool LLAlertDialog::parseAlerts(const LLString& xml_filename, LLControlGroup* settings, BOOL settings_only) { LLXMLNodePtr root; BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root); if (!success || root.isNull() || !root->hasName( "alerts" )) { llerrs << "Problem reading UI Alerts file: " << xml_filename << llendl; return false; } BOOL add_settings = FALSE; if (settings) { sSettings = settings; add_settings = TRUE; } llassert(sSettings); for (LLXMLNode* alert = root->getFirstChild(); alert != NULL; alert = alert->getNextSibling()) { if (alert->hasName("global")) { LLString global_name; if (alert->getAttributeString("name", global_name)) { if (global_name == "skipnexttime") { sStringSkipNextTime = alert->getTextContents(); } else if (global_name == "alwayschoose") { sStringAlwaysChoose = alert->getTextContents(); } } continue; } if (!alert->hasName("alert")) { continue; } LLAlertDialogTemplate* xml_template = settings_only ? NULL : new LLAlertDialogTemplate; // name= LLString alert_name; if (alert->getAttributeString("name", alert_name)) { if (xml_template) { xml_template->mLabel = alert_name; } } else { llwarns << "Unable to parse alert with no name" << llendl; delete xml_template; continue; } // title= LLString title; if (alert->getAttributeString("title", title)) { if (xml_template) { xml_template->mTitle = title; } } // modal= BOOL modal; if (alert->getAttributeBOOL("modal", modal)) { if (xml_template) { xml_template->mModal = modal; } } // caution= BOOL caution; if (alert->getAttributeBOOL("caution", caution)) { if (xml_template) { xml_template->mCaution = caution; } } // unique= BOOL unique; if (alert->getAttributeBOOL("unique", unique)) { if (xml_template) { xml_template->mUnique = unique; } } S32 default_option = 0; BOOL nodefault; if (alert->getAttributeBOOL("nodefault", nodefault)) { if (nodefault) { if (xml_template) { xml_template->mDefaultOption = -1; } default_option = -1; } } S32 btn_idx = 0; for (LLXMLNode* child = alert->getFirstChild(); child != NULL; child = child->getNextSibling()) { // <message> if (child->hasName("message")) { if (xml_template) { xml_template->mMessage = child->getTextContents(); } } // <option> if (child->hasName("option")) { LLString label = child->getTextContents(); BOOL is_default = FALSE; child->getAttributeBOOL("default", is_default); LLString ignore_text; if (!child->getAttributeString("ignore", ignore_text)) { ignore_text = label; } if (xml_template) { xml_template->addOption(label, ignore_text, is_default); } if (is_default) { default_option = btn_idx; } btn_idx++; } // <editline> if (child->hasName("editline")) { if (xml_template) { xml_template->mEditLineText = child->getTextContents(); if (xml_template->mEditLineText.empty()) { xml_template->mEditLineText = " "; } } } // <ignore> if (child->hasName("ignore")) { LLString ignore_text = child->getTextContents(); // label= LLString name; child->getAttributeString("name", name); //always set to alert_name for the sake of i18n //if (name.empty()) name = alert_name; if (xml_template) { xml_template->mIgnorable = LLAlertDialog::IGNORE_USE_DEFAULT; xml_template->mIgnoreListText = ignore_text; xml_template->mIgnoreLabel = name; } if (!ignore_text.empty()) { if (add_settings) { settings->addWarning(name); } if (xml_template) { sIgnorableTemplates[name] = xml_template; // will override any previous entry } } // save_option= BOOL save_option = FALSE; child->getAttributeBOOL("save_option", save_option); if (save_option) { if (xml_template) { xml_template->mIgnorable = LLAlertDialog::IGNORE_USE_SAVED; } if (add_settings) { settings->declareS32("Default" + name, default_option, "Default option number for this alert dialog"); } } } // <url> if (child->hasName("url")) { S32 url_option = 0; child->getAttributeS32("option", url_option); if (xml_template) { xml_template->mURL = child->getTextContents(); xml_template->mURLOption = url_option; } } } if (xml_template) { xml_template->mDefaultOption = default_option; sAlertTemplates[xml_template->mLabel] = xml_template; } } return true; }