// // C++ Implementation: cchapterdisplay // // Description: // // // Author: The BibleTime team , (C) 2004 // // Copyright: See COPYING file that comes with this distribution // // //Backend #include "cchapterdisplay.h" #include "cdisplayrendering.h" #include "cswordversekey.h" #include "cswordbiblemoduleinfo.h" namespace Rendering { const TQString CChapterDisplay::text( const ListCSwordModuleInfo& modules, const TQString& keyName, const CSwordBackend::DisplayOptions displayOptions, const CSwordBackend::FilterOptions filterOptions ) { Q_ASSERT( modules.count() >= 1 ); Q_ASSERT( !keyName.isEmpty() ); CSwordModuleInfo* module = modules.first(); if (modules.count() == 1) module->module()->setSkipConsecutiveLinks( true ); //skip empty, linked verses CTextRendering::KeyTreeItem::Settings settings; settings.keyRenderingFace = displayOptions.verseNumbers ? CTextRendering::KeyTreeItem::Settings::SimpleKey : CTextRendering::KeyTreeItem::Settings::NoKey; TQString startKey = keyName; TQString endKey = startKey; //check whether there's an intro we have to include Q_ASSERT((module->type() == CSwordModuleInfo::Bible)); if (module->type() == CSwordModuleInfo::Bible) { ((VerseKey*)(module->module()->getKey()))->Headings(1); //HACK: enable headings for VerseKeys CSwordBibleModuleInfo* bible = dynamic_cast(module); Q_ASSERT(bible); CSwordVerseKey k1(module); k1.Headings(1); k1.key(keyName); if (k1.Chapter() == 1) k1.Chapter(0); //Chapter 1, start with 0:0, otherwise X:0 k1.Verse(0); startKey = k1.key(); if (k1.Chapter() == 0) k1.Chapter(1); k1.Verse(bible->verseCount(k1.book(), k1.Chapter())); endKey = k1.key(); } CDisplayRendering render(displayOptions, filterOptions); return render.renderKeyRange( startKey, endKey, modules, keyName, settings ); } };