const QString CDisplayRendering::finishText( const QString& oldText, KeyTree& tree ) { QList<CSwordModuleInfo*> modules = collectModules(&tree); qDebug() << "CDisplayRendering::finishText"; //marking words is very slow, we have to find a better solution /* //mark all words by spans QString text = oldText; QRegExp re("(\\b)(?=\\w)"); //word begin marker int pos = text.find(re, 0); while (pos != -1) { //word begin found //qWarning("found word at %i in %i", pos, text.length()); int endPos = pos + 1; if (!util::tool::inHTMLTag(pos+1, text)) { //the re has a positive look ahead which matches one char before the word start //qWarning("matched %s", text.mid(pos+1, 4).latin1()); //find end of word and put a marker around it endPos = text.find(QRegExp("\\b|[,.:]"), pos+1); if ((endPos != -1) && !util::tool::inHTMLTag(endPos, text) && (endPos - pos >= 3)) { //reuire wordslonger than 3 chars text.insert(endPos, "</span>"); text.insert(pos, "<span class=\"word\">"); endPos += 26; } } pos = text.find(re, endPos); } */ const CLanguageMgr::Language* const lang = (modules.count() >= 1) ? modules.first()->language() : CPointers::languageMgr()->defaultLanguage(); CDisplayTemplateMgr* tMgr = CPointers::displayTemplateManager(); //Q_ASSERT(modules.count() >= 1); CDisplayTemplateMgr::Settings settings; settings.modules = modules; settings.langAbbrev = ((modules.count() == 1) && lang->isValid()) ? lang->abbrev() : QString::null; if (modules.count() == 1) settings.pageDirection = (modules.first()->textDirection() == CSwordModuleInfo::LeftToRight) ? "ltr" : "rtl"; else settings.pageDirection = QString::null; return tMgr->fillTemplate(CBTConfig::get(CBTConfig::displayStyle), oldText, settings); }
QString CDisplayRendering::finishText(const QString &text, const KeyTree &tree) { BtConstModuleList modules = collectModules(tree); //marking words is very slow, we have to find a better solution /* //mark all words by spans QString text = oldText; QRegExp re("(\\b)(?=\\w)"); //word begin marker int pos = text.find(re, 0); while (pos != -1) { //word begin found //qWarning("found word at %i in %i", pos, text.length()); int endPos = pos + 1; if (!util::tool::inHTMLTag(pos+1, text)) { //the re has a positive look ahead which matches one char before the word start //qWarning("matched %s", text.mid(pos+1, 4).latin1()); //find end of word and put a marker around it endPos = text.find(QRegExp("\\b|[,.:]"), pos+1); if ((endPos != -1) && !util::tool::inHTMLTag(endPos, text) && (endPos - pos >= 3)) { //reuire wordslonger than 3 chars text.insert(endPos, "</span>"); text.insert(pos, "<span class=\"word\">"); endPos += 26; } } pos = text.find(re, endPos); } */ const CLanguageMgr::Language* const lang = (modules.count() >= 1) ? modules.first()->language() : CLanguageMgr::instance()->defaultLanguage(); CDisplayTemplateMgr *tMgr = CDisplayTemplateMgr::instance(); //Q_ASSERT(modules.count() >= 1); CDisplayTemplateMgr::Settings settings; settings.modules = modules; if (modules.count() == 1 && lang->isValid()) settings.langAbbrev = lang->abbrev(); if (modules.count() == 1) settings.textDirection = modules.first()->textDirection(); return tMgr->fillTemplate(CDisplayTemplateMgr::activeTemplateName(), text, settings); }