" : "
");
ret.append(i.getAlternativeContent());
// Q_ASSERT(i.hasChildItems());
if (i.hasChildItems()) {
KeyTree const * tree = i.childList();
const ListCSwordModuleInfo& modules( tree->collectModules() );
if (modules.count() == 1) { //insert the direction into the sorrounding div
ret.insert( 5, TQString("dir=\"%1\" ").tqarg((modules.first()->textDirection() == CSwordModuleInfo::LeftToRight) ? "ltr" : "rtl" ));
}
for ( KeyTreeItem* c = tree->first(); c; c = tree->next() ) {
ret.append( renderEntry( *c ) );
}
}
ret.append("
");
return ret; //WARNING: Return already here!
}
const ListCSwordModuleInfo& modules( i.modules() );
Q_ASSERT(modules.count() >= 1);
util::scoped_ptr
scoped_key( !k ? CSwordKey::createInstance(modules.first()) : 0 );
CSwordKey* key = k ? k : scoped_key;
Q_ASSERT(key);
CSwordVerseKey* myVK = dynamic_cast(key);
if ( myVK ) {
myVK->Headings(1);
}
TQString renderedText( (modules.count() > 1) ? "" : "" );
if (modules.count() == 0) {
return TQString(""); //no module present for rendering
}
// Only insert the table stuff if we are displaying parallel.
// Otherwise, strip out he table stuff -> the whole chapter will be rendered in one cell!
//declarations out of the loop for optimization
TQString entry;
TQString keyText;
bool isRTL;
//taken out of the loop for optimization
TQString preverseHeading;
TQString langAttr;
ListCSwordModuleInfo::const_iterator end_modItr = modules.end();
for (ListCSwordModuleInfo::const_iterator mod_Itr(modules.begin()); mod_Itr != end_modItr; ++mod_Itr) {
key->module(*mod_Itr);
key->key( i.key() );
keyText = key->key();
isRTL = ((*mod_Itr)->textDirection() == CSwordModuleInfo::RightToLeft);
entry = TQString();
if ((*mod_Itr)->language()->isValid()) {
langAttr.setLatin1("xml:lang=\"")
.append((*mod_Itr)->language()->abbrev())
.append("\" lang=\"")
.append((*mod_Itr)->language()->abbrev())
.append("\"");
}
else {
langAttr.setLatin1("xml:lang=\"")
.append((*mod_Itr)->module()->Lang())
.append("\" lang=\"")
.append((*mod_Itr)->module()->Lang())
.append("\"");
}
const TQString key_renderedText = key->renderedText();
// qWarning(key_renderedText.latin1());
if (m_filterOptions.headings) {
AttributeValue::const_iterator it =
(*mod_Itr)->module()->getEntryAttributes()["Heading"]["Preverse"].begin();
const AttributeValue::const_iterator end =
(*mod_Itr)->module()->getEntryAttributes()["Heading"]["Preverse"].end();
for (; it != end; ++it) {
preverseHeading = TQString::fromUtf8(it->second.c_str());
//TODO: Take care of the heading type!
if (!preverseHeading.isEmpty()) {
entry.append("")
.append(preverseHeading)
.append("
");
}
}
}
entry.append(m_displayOptions.lineBreaks ? "");
//keys should normally be left-to-right, but this doesn't apply in all cases
entry.append("").append(entryLink(i, *mod_Itr)).append("");
if (m_settings.addText) {
//entry.append( TQString::tqfromLatin1("%2").tqarg(langAttr).tqarg(key_renderedText) );
entry.append( key_renderedText );
}
if (i.hasChildItems()) {
KeyTree const * tree = i.childList();
for (KeyTreeItem* c = tree->first(); c; c = tree->next()) {
entry.append( renderEntry(*c) );
}
}
entry.append(m_displayOptions.lineBreaks ? "
\n" : "\n");
if (modules.count() == 1) {
renderedText.append( entry );
}
else {
renderedText.append("")
.append(entry)
.append(" | \n");
}
}
if (modules.count() > 1) {
renderedText.append("
\n");
}
// qDebug("CHTMLExportRendering: %s", renderedText.latin1());
return renderedText;
}
void CHTMLExportRendering::initRendering() {
CPointers::backend()->setDisplayOptions( m_displayOptions );
CPointers::backend()->setFilterOptions( m_filterOptions );
}
const TQString CHTMLExportRendering::finishText( const TQString& text, KeyTree& tree ) {
ListCSwordModuleInfo modules = tree.collectModules();
const CLanguageMgr::Language* const lang = modules.first()->language();
CDisplayTemplateMgr* tMgr = CPointers::displayTemplateManager();
CDisplayTemplateMgr::Settings settings;
settings.modules = modules;
settings.langAbbrev = ((modules.count() == 1) && lang->isValid())
? lang->abbrev()
: "unknown";
settings.pageDirection = (modules.count() == 1)
? ((modules.first()->textDirection() == CSwordModuleInfo::LeftToRight) ? "ltr" : "rtl")
: TQString();
return tMgr->fillTemplate(i18n("Export"), text, settings);
}
/*!
\fn CHTMLExportRendering::entryLink( KeyTreeItem& item )
*/
const TQString CHTMLExportRendering::entryLink( const KeyTreeItem& item, CSwordModuleInfo* ) {
return item.key();
}
}
; //end of namespace "Rendering"