diff options
Diffstat (limited to 'src/backend/rendering/centrydisplay.cpp')
-rw-r--r-- | src/backend/rendering/centrydisplay.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/backend/rendering/centrydisplay.cpp b/src/backend/rendering/centrydisplay.cpp new file mode 100644 index 0000000..7a4626c --- /dev/null +++ b/src/backend/rendering/centrydisplay.cpp @@ -0,0 +1,63 @@ +/********* +* +* This file is part of BibleTime's source code, http://www.bibletime.info/. +* +* Copyright 1999-2008 by the BibleTime developers. +* The BibleTime source code is licensed under the GNU General Public License version 2.0. +* +**********/ + +//BibleTime includes +#include "centrydisplay.h" + +#include "backend/keys/cswordkey.h" +#include "backend/keys/cswordversekey.h" +#include "backend/drivers/cswordbookmoduleinfo.h" +#include "backend/managers/creferencemanager.h" +#include "backend/managers/cdisplaytemplatemgr.h" +#include "cdisplayrendering.h" + +#include "backend/config/cbtconfig.h" +#include <boost/scoped_ptr.hpp> + +//Qt includes +#include <QApplication> +#include <QRegExp> + +using namespace Rendering; + +/** Returns the rendered text using the modules in the list and using the key parameter. + * The displayoptions and filter options are used, too. + */ +const QString CEntryDisplay::text( const QList<CSwordModuleInfo*>& modules, const QString& keyName, const CSwordBackend::DisplayOptions displayOptions, const CSwordBackend::FilterOptions filterOptions ) { + CDisplayRendering render(displayOptions, filterOptions); + + //no highlighted key and no extra key link in the text + CTextRendering::KeyTreeItem::Settings normal_settings(false, CTextRendering::KeyTreeItem::Settings::CompleteShort); + CSwordModuleInfo* module = modules.first(); + QString result; + + //in Bibles and Commentaries we need to check if 0:0 and X:0 contain something + if (module->type() == CSwordModuleInfo::Bible || module->type() == CSwordModuleInfo::Commentary) { + ((sword::VerseKey*)(module->module()->getKey()))->Headings(1); //HACK: enable headings for VerseKeys + + CSwordVerseKey k1(module); + k1.Headings(1); + k1.key(keyName); + + // don't print the key + CTextRendering::KeyTreeItem::Settings preverse_settings(false, CTextRendering::KeyTreeItem::Settings::NoKey); + + if (k1.Verse() == 1){ //X:1, prepend X:0 + if (k1.Chapter() == 1){ //1:1, also prepend 0:0 before that + k1.Chapter(0); + k1.Verse(0); + if ( k1.rawText().length() > 0 ) result.append( render.renderSingleKey(k1.key(), modules, preverse_settings ) ); + k1.Chapter(1); + } + k1.Verse(0); + if ( k1.rawText().length() > 0 ) result.append( render.renderSingleKey(k1.key(), modules, preverse_settings ) ); + } + } + return result.append( render.renderSingleKey(keyName, modules, normal_settings) ); +} |