void Autocorrect::readAutocorrectXmlEntry() { // Taken from KOffice 1.x KoAutoFormat.cpp KLocale *locale = KGlobal::locale(); QString kdelang = locale->languageList().first(); kdelang.remove(QRegExp("@.*")); QString fname; if (!m_autocorrectLang.isEmpty()) fname = KGlobal::dirs()->findResource("data", "koffice/autocorrect/" + m_autocorrectLang + ".xml"); if (m_autocorrectLang != "all_languages") { if (fname.isEmpty() && !kdelang.isEmpty()) fname = KGlobal::dirs()->findResource("data", "koffice/autocorrect/" + kdelang + ".xml"); if (fname.isEmpty() && kdelang.contains("_")) { kdelang.remove( QRegExp( "_.*" ) ); fname = KGlobal::dirs()->findResource("data", "koffice/autocorrect/" + kdelang + ".xml"); } if (fname.isEmpty()) fname = KGlobal::dirs()->findResource("data", "koffice/autocorrect/autocorrect.xml"); } if (m_autocorrectLang.isEmpty()) m_autocorrectLang = kdelang; if (fname.isEmpty()) return; QFile xmlFile(fname); if (!xmlFile.open(QIODevice::ReadOnly)) return; QDomDocument doc; if (!doc.setContent(&xmlFile)) return; if (doc.doctype().name() != "autocorrection") return; QDomElement de = doc.documentElement(); QDomElement upper = de.namedItem("UpperCaseExceptions").toElement(); if (!upper.isNull()) { QDomNodeList nl = upper.childNodes(); for (int i = 0; i < nl.count(); i++) m_upperCaseExceptions += nl.item(i).toElement().attribute("exception"); } QDomElement twoUpper = de.namedItem("TwoUpperLetterExceptions").toElement(); if (!twoUpper.isNull()) { QDomNodeList nl = twoUpper.childNodes(); for(int i = 0; i < nl.count(); i++) m_twoUpperLetterExceptions += nl.item(i).toElement().attribute("exception"); } QDomElement superScript = de.namedItem("SuperScript").toElement(); if (!superScript.isNull()) { QDomNodeList nl = superScript.childNodes(); for(int i = 0; i < nl.count() ; i++) m_superScriptEntries.insert(nl.item(i).toElement().attribute("find"), nl.item(i).toElement().attribute("super")); } /* Load advanced autocorrect entry, including the format */ QDomElement item = de.namedItem("items").toElement(); if (!item.isNull()) { QDomNodeList nl = item.childNodes(); for (int i = 0; i < nl.count(); i++) { QDomElement element = nl.item(i).toElement(); QString find = element.attribute("find"); QString replace = element.attribute("replace"); /* AutocorrectEntry entry; entry.replace = element.attribute("replace"); if (element.hasAttribute("FONT")) entry.format.setFontFamily(element.attribute("FONT")); if (element.hasAttribute("SIZE")) entry.format.setFontPointSize(element.attribute("SIZE").toInt()); if (element.hasAttribute("BOLD")) entry.format.setFontWeight(QFont::Bold); if (element.hasAttribute("ITALIC")) entry.format.setFontItalic(true); if (element.hasAttribute("UNDERLINE")) entry.format.setFontUnderline(true); if (element.hasAttribute("STRIKEOUT")) entry.format.setFontStrikeOut(true); if (element.hasAttribute("VERTALIGN")) entry.format.setVerticalAlignment(static_cast<QTextCharFormat::VerticalAlignment>(element.attribute("VERTALIGN").toInt())); if (element.hasAttribute("TEXTCOLOR")) ; // entry.format.setForeground(QBrush(QColor::(element.attribute("TEXTCOLOR")))); if (element.hasAttribute("TEXTBGCOLOR")) ; // entry.format.setBackground(QBrush(QColor(element.attribute("TEXTBGCOLOR")))); */ m_autocorrectEntries.insert(find, replace); } } }